2 |
3 |
4 | Page 1
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
--------------------------------------------------------------------------------
/project/Project/page_2.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Page 2
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
--------------------------------------------------------------------------------
/project/Project/page_3.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Page 3
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
--------------------------------------------------------------------------------
/project/Project/plugins/page_notes/page_notes.js:
--------------------------------------------------------------------------------
1 | // use this to isolate the scope
2 | (function () {
3 |
4 | if (!$axure.document.configuration.showPageNotes) { return; }
5 |
6 | $(window.document).ready(function () {
7 | $axure.player.createPluginHost({
8 | id: 'pageNotesHost',
9 | context: 'interface',
10 | title: 'Page Notes'
11 | });
12 |
13 | generatePageNotes();
14 |
15 | // bind to the page load
16 | $axure.page.bind('load.page_notes', function () {
17 |
18 | $('#pageNameHeader').html("");
19 | $('#pageNotesContent').html("");
20 |
21 | //populate the notes
22 | var notes = $axure.page.notes;
23 | if (notes) {
24 | var pageName = $axure.page.pageName;
25 | $('#pageNameHeader').html(pageName);
26 | var showNames = $axure.document.configuration.showPageNoteNames;
27 |
28 | for (var noteName in notes) {
29 | if (showNames) {
30 | $('#pageNotesContent').append("" + noteName + "
");
31 | }
32 | $('#pageNotesContent').append("" + notes[noteName] + "
");
33 | }
34 | }
35 |
36 | return false;
37 | });
38 |
39 |
40 | });
41 |
42 | function generatePageNotes() {
43 | var pageNotesUi = "";
44 | pageNotesUi += "
";
45 | pageNotesUi += "";
46 | pageNotesUi += " ";
47 | pageNotesUi += "
";
48 |
49 | $('#pageNotesHost').html(pageNotesUi);
50 | }
51 |
52 | })();
--------------------------------------------------------------------------------
/project/Project/plugins/page_notes/styles/page_notes.css:
--------------------------------------------------------------------------------
1 | #pageNotesHost {
2 | font-size: 12px;
3 | color:#333;
4 | height: 100%;
5 | }
6 |
7 | #pageNotesScrollContainer
8 | {
9 | overflow: auto;
10 | width: 100%;
11 | height: 100%;
12 | }
13 |
14 | #pageNotesContainer
15 | {
16 | padding: 10px 10px 10px 10px;
17 | }
18 |
19 | #pageNameHeader
20 | {
21 | font-size: 13px;
22 | font-weight: bold;
23 | height: 23px;
24 | white-space: nowrap;
25 | }
26 |
27 | #pageNotesContent
28 | {
29 | overflow: visible;
30 | }
31 |
32 | .pageNoteName
33 | {
34 | font-size: 12px;
35 | margin-bottom: 5px;
36 | text-decoration: underline;
37 | white-space: nowrap;
38 | }
39 |
40 | .pageNote
41 | {
42 | margin-bottom: 10px;
43 | }
--------------------------------------------------------------------------------
/project/Project/plugins/sitemap/styles/images/079_page_16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dyktek/FrameworkMVC/d6b6e2c3fff3127bbc130c27c8fb33596763266d/project/Project/plugins/sitemap/styles/images/079_page_16.png
--------------------------------------------------------------------------------
/project/Project/plugins/sitemap/styles/images/086_case_16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dyktek/FrameworkMVC/d6b6e2c3fff3127bbc130c27c8fb33596763266d/project/Project/plugins/sitemap/styles/images/086_case_16.png
--------------------------------------------------------------------------------
/project/Project/plugins/sitemap/styles/images/225_responsive_16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dyktek/FrameworkMVC/d6b6e2c3fff3127bbc130c27c8fb33596763266d/project/Project/plugins/sitemap/styles/images/225_responsive_16.png
--------------------------------------------------------------------------------
/project/Project/plugins/sitemap/styles/images/228_togglenotes_16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dyktek/FrameworkMVC/d6b6e2c3fff3127bbc130c27c8fb33596763266d/project/Project/plugins/sitemap/styles/images/228_togglenotes_16.png
--------------------------------------------------------------------------------
/project/Project/plugins/sitemap/styles/images/229_variables_16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dyktek/FrameworkMVC/d6b6e2c3fff3127bbc130c27c8fb33596763266d/project/Project/plugins/sitemap/styles/images/229_variables_16.png
--------------------------------------------------------------------------------
/project/Project/plugins/sitemap/styles/images/231_event_16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dyktek/FrameworkMVC/d6b6e2c3fff3127bbc130c27c8fb33596763266d/project/Project/plugins/sitemap/styles/images/231_event_16.png
--------------------------------------------------------------------------------
/project/Project/plugins/sitemap/styles/images/232_search_16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dyktek/FrameworkMVC/d6b6e2c3fff3127bbc130c27c8fb33596763266d/project/Project/plugins/sitemap/styles/images/232_search_16.png
--------------------------------------------------------------------------------
/project/Project/plugins/sitemap/styles/images/233_hyperlink_16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dyktek/FrameworkMVC/d6b6e2c3fff3127bbc130c27c8fb33596763266d/project/Project/plugins/sitemap/styles/images/233_hyperlink_16.png
--------------------------------------------------------------------------------
/project/Project/plugins/sitemap/styles/images/235_folderclosed_16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dyktek/FrameworkMVC/d6b6e2c3fff3127bbc130c27c8fb33596763266d/project/Project/plugins/sitemap/styles/images/235_folderclosed_16.png
--------------------------------------------------------------------------------
/project/Project/plugins/sitemap/styles/images/236_folderopen_16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dyktek/FrameworkMVC/d6b6e2c3fff3127bbc130c27c8fb33596763266d/project/Project/plugins/sitemap/styles/images/236_folderopen_16.png
--------------------------------------------------------------------------------
/project/Project/plugins/sitemap/styles/images/adaptivecheck.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dyktek/FrameworkMVC/d6b6e2c3fff3127bbc130c27c8fb33596763266d/project/Project/plugins/sitemap/styles/images/adaptivecheck.png
--------------------------------------------------------------------------------
/project/Project/plugins/sitemap/styles/images/images.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
--------------------------------------------------------------------------------
/project/Project/plugins/sitemap/styles/images/minus.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dyktek/FrameworkMVC/d6b6e2c3fff3127bbc130c27c8fb33596763266d/project/Project/plugins/sitemap/styles/images/minus.gif
--------------------------------------------------------------------------------
/project/Project/plugins/sitemap/styles/images/plus.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dyktek/FrameworkMVC/d6b6e2c3fff3127bbc130c27c8fb33596763266d/project/Project/plugins/sitemap/styles/images/plus.gif
--------------------------------------------------------------------------------
/project/Project/resources/Other.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 | Close
12 |
13 |
14 |
15 |
16 |
17 |
33 |
34 |
35 |
--------------------------------------------------------------------------------
/project/Project/resources/chrome/allow_access.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dyktek/FrameworkMVC/d6b6e2c3fff3127bbc130c27c8fb33596763266d/project/Project/resources/chrome/allow_access.gif
--------------------------------------------------------------------------------
/project/Project/resources/chrome/axure-chrome-extension.crx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dyktek/FrameworkMVC/d6b6e2c3fff3127bbc130c27c8fb33596763266d/project/Project/resources/chrome/axure-chrome-extension.crx
--------------------------------------------------------------------------------
/project/Project/resources/chrome/axure_logo.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dyktek/FrameworkMVC/d6b6e2c3fff3127bbc130c27c8fb33596763266d/project/Project/resources/chrome/axure_logo.gif
--------------------------------------------------------------------------------
/project/Project/resources/chrome/axure_logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dyktek/FrameworkMVC/d6b6e2c3fff3127bbc130c27c8fb33596763266d/project/Project/resources/chrome/axure_logo.png
--------------------------------------------------------------------------------
/project/Project/resources/chrome/chrome.html:
--------------------------------------------------------------------------------
1 |
2 |
3 | Install the Axure RP Chrome Extension
4 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 | AXURE RP EXTENSION
110 | For Chrome
111 |
112 | Google Chrome requires an extension to view locally stored projects. Alternatively,
113 | upload your RP file to AxShare or use a different
114 | browser.
115 |
116 | VIEW LOCAL PROJECTS IN CHROME
117 |
118 |
119 | 1. Install Extension from Chrome Store
120 |
124 |
125 |
126 |
127 | 2. Open the Extensions Options
128 |
129 |
130 |
131 |
132 |
133 |
134 | 3. Check "Allow access to file URLs"
135 |
136 |
137 |
138 |
139 | 4. Click the button below
140 |
143 |
144 |
145 |
146 |
147 | EXTENSION FAQ
148 |
149 | What is a Chrome Extension? Extensions are downloadable
150 | plug-ins for Google Chrome that modify the browser
151 | and allow you additional capabilities.
152 |
153 |
154 | Why do I need to install the extension? Google requires
155 | this extension to be installed to allow the viewing of local files in
156 | Chrome
157 |
158 |
159 | Why does this extension require a high access level? This
160 | extension requires a high access level to allow the viewing of the file://
161 | protocol. Axure does not track or access any of your information.
162 |
163 |
164 | ROUND UP
165 |
166 | Chrome requires this extension to be installed to view local files.
167 |
168 | Need help or have any questions? Drop us a line at
169 | support@axure.com .
170 |
171 |
172 |
173 |
174 |
175 |
176 |
--------------------------------------------------------------------------------
/project/Project/resources/chrome/extensions_menu.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dyktek/FrameworkMVC/d6b6e2c3fff3127bbc130c27c8fb33596763266d/project/Project/resources/chrome/extensions_menu.gif
--------------------------------------------------------------------------------
/project/Project/resources/chrome/splitter.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dyktek/FrameworkMVC/d6b6e2c3fff3127bbc130c27c8fb33596763266d/project/Project/resources/chrome/splitter.gif
--------------------------------------------------------------------------------
/project/Project/resources/chrome/splitter.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dyktek/FrameworkMVC/d6b6e2c3fff3127bbc130c27c8fb33596763266d/project/Project/resources/chrome/splitter.png
--------------------------------------------------------------------------------
/project/Project/resources/css/axure_rp_page.css:
--------------------------------------------------------------------------------
1 | /* so the window resize fires within a frame in IE7 */
2 | html, body {
3 | height: 100%;
4 | }
5 |
6 | a {
7 | color: inherit;
8 | }
9 |
10 | p {
11 | margin: 0px;
12 | }
13 |
14 | iframe {
15 | background: #FFFFFF;
16 | }
17 |
18 | /* to match IE with C, FF */
19 | input {
20 | padding: 1px 0px 1px 0px;
21 | box-sizing: border-box;
22 | -moz-box-sizing: border-box;
23 | }
24 |
25 | textarea {
26 | margin: 0px;
27 | box-sizing: border-box;
28 | -moz-box-sizing: border-box;
29 | }
30 |
31 | div.intcases {
32 | font-family: arial;
33 | font-size: 12px;
34 | text-align:left;
35 | border:1px solid #AAA;
36 | background:#FFF none repeat scroll 0% 0%;
37 | z-index:9999;
38 | visibility:hidden;
39 | position:absolute;
40 | padding: 0px;
41 | border-radius: 3px;
42 | white-space: nowrap;
43 | }
44 |
45 | div.intcaselink {
46 | cursor: pointer;
47 | padding: 3px 8px 3px 8px;
48 | margin: 5px;
49 | background:#EEE none repeat scroll 0% 0%;
50 | border:1px solid #AAA;
51 | border-radius: 3px;
52 | }
53 |
54 | div.refpageimage {
55 | position: absolute;
56 | left: 0px;
57 | top: 0px;
58 | font-size: 0px;
59 | width: 16px;
60 | height: 16px;
61 | cursor: pointer;
62 | background-image: url(images/newwindow.gif);
63 | background-repeat: no-repeat;
64 | }
65 |
66 | div.annnoteimage {
67 | position: absolute;
68 | left: 0px;
69 | top: 0px;
70 | font-size: 0px;
71 | width: 16px;
72 | height: 12px;
73 | cursor: help;
74 | background-image: url(images/note.gif);
75 | background-repeat: no-repeat;
76 | }
77 |
78 | div.annnotelabel {
79 | position: absolute;
80 | left: 0px;
81 | top: 0px;
82 | font-family: Arial;
83 | font-size: 10px;
84 | border: 1px solid rgb(166,221,242);
85 | cursor: help;
86 | background:rgb(0,157,217) none repeat scroll 0% 0%;
87 | padding-left:3px;
88 | padding-right:3px;
89 | white-space: nowrap;
90 | color: white;
91 | }
92 |
93 | .annotationName {
94 | font-size: 13px;
95 | font-weight: bold;
96 | margin-bottom: 3px;
97 | white-space: nowrap;
98 | }
99 |
100 | .annotation {
101 | font-size: 12px;
102 | padding-left: 2px;
103 | margin-bottom: 5px;
104 | }
105 |
106 | /* this is a fix for the issue where dialogs jump around and takes the text-align from the body */
107 | .dialogFix {
108 | position:absolute;
109 | text-align:left;
110 | }
111 |
112 |
113 | @keyframes pulsate {
114 | from {
115 | box-shadow: 0 0 10px #74BA11;
116 | }
117 | to {
118 | box-shadow: 0 0 20px #74BA11;
119 | }
120 | }
121 |
122 | @-webkit-keyframes pulsate {
123 | from {
124 | -webkit-box-shadow: 0 0 10px #74BA11;
125 | box-shadow: 0 0 10px #74BA11;
126 | }
127 | to {
128 | -webkit-box-shadow: 0 0 20px #74BA11;
129 | box-shadow: 0 0 20px #74BA11;
130 | }
131 | }
132 |
133 | @-moz-keyframes pulsate {
134 | from {
135 | -moz-box-shadow: 0 0 10px #74BA11;
136 | box-shadow: 0 0 10px #74BA11;
137 | }
138 | to {
139 | -moz-box-shadow: 0 0 20px #74BA11;
140 | box-shadow: 0 0 20px #74BA11;
141 | }
142 | }
143 |
144 | .legacyPulsateBorder {
145 | border: 5px solid #74BA11;
146 | margin: -5px;
147 | }
148 |
149 | .pulsateBorder {
150 | animation-name: pulsate;
151 | animation-timing-function: ease-in-out;
152 | animation-duration: 0.9s;
153 | animation-iteration-count: infinite;
154 | animation-direction: alternate;
155 |
156 | -webkit-animation-name: pulsate;
157 | -webkit-animation-timing-function: ease-in-out;
158 | -webkit-animation-duration: 0.9s;
159 | -webkit-animation-iteration-count: infinite;
160 | -webkit-animation-direction: alternate;
161 |
162 | -moz-animation-name: pulsate;
163 | -moz-animation-timing-function: ease-in-out;
164 | -moz-animation-duration: 0.9s;
165 | -moz-animation-iteration-count: infinite;
166 | -moz-animation-direction: alternate;
167 | }
--------------------------------------------------------------------------------
/project/Project/resources/css/default.css:
--------------------------------------------------------------------------------
1 | body {
2 | font-family : Helvetica, Arial, Sans-Serif;
3 | background-color: #B9B9B9;
4 | overflow:hidden;
5 | }
6 | a {
7 | cursor: pointer;
8 | }
9 | #maximizePanelContainer {
10 | font-size: 4px;
11 | position:absolute;
12 | left: 0px;
13 | top: 0px;
14 | width: 15px;
15 | height: 13px;
16 | overflow: visible;
17 | z-index: 1000;
18 | }
19 | .maximizePanel {
20 | position:absolute;
21 | left: 0px;
22 | top: 0px;
23 | width: 20px;
24 | height: 20px;
25 | margin: 2px 0px 0px 1px;
26 | background: url('../images/261_expand_12rollover1.png') no-repeat;
27 | cursor: pointer;
28 | }
29 | .maximizePanelOver {
30 | background: url('../images/261_expand_12rollover2.png') no-repeat;
31 | }
32 |
33 | #interfaceControlFrameMinimizeContainer {
34 | position:relative;
35 | font-size: 2px; /*for IE*/
36 | text-align: right;
37 | z-index: 100;
38 | height: 20px;
39 | }
40 | #interfaceControlFrameMinimizeContainer a
41 | {
42 | display: inline-block;
43 | width: 15px;
44 | height: 20px;
45 | font-size: 2px;
46 | background: url('../images/260_collapse_12rollover1.png') no-repeat;
47 | text-decoration: none;
48 | margin: 5px 5px 0px 0px;
49 | }
50 | #interfaceControlFrame {
51 | margin: 0px;
52 | }
53 | #interfaceControlFrameMinimizeContainer a:hover {
54 | background: url('../images/260_collapse_12rollover2.png') no-repeat;
55 | }
56 | #interfaceControlFrameCloseContainer {
57 | display: inline;
58 | width: 15px;
59 | height: 20px;
60 | font-size: 2px;
61 | margin: 5px 2px 0px 0px;
62 | }
63 | #interfaceControlFrameCloseContainer a
64 | {
65 | background: url('../images/259_close_12rollover1.png') no-repeat;
66 | margin: 0px;
67 | text-decoration: none;
68 | }
69 | #interfaceControlFrameCloseContainer a:hover
70 | {
71 | background: url('../images/259_close_12rollover2.png') no-repeat;
72 | }
73 | #interfaceControlFrameHeader li {
74 | display: inline;
75 | }
76 | #interfaceControlFrameHeader a {
77 | outline: none;
78 | padding: 3px 10px 3px 10px;
79 | margin-right: 1px;
80 | text-decoration: none;
81 | color: #575757;
82 | white-space: nowrap;
83 | background-color: #D3D3D3;
84 | }
85 | #interfaceControlFrameHeader a:link {}
86 | #interfaceControlFrameHeader a:hover {
87 | color: #000000;
88 | }
89 | #interfaceControlFrameHeader a.selected {
90 | background-color: White;
91 | font-weight:bold;
92 | padding: 3px 10px 4px 10px;
93 | }
94 | #interfaceControlFrameHeaderContainer {
95 | overflow: visible;
96 | width: 250px;
97 | }
98 | #interfaceControlFrameHeader {
99 | position:relative;
100 | list-style: none;
101 | padding : 4px 0px 4px 0px;
102 | font-size: 11px;
103 | z-index: 50;
104 | }
105 | #interfaceControlFrameContainer {
106 | position: absolute;
107 | background-color: White;
108 | overflow: hidden;
109 | width: 100%;
110 | /*height:100%;*/
111 | }
112 |
113 | #interfaceControlFrameLogoContainer {
114 | background-color: White;
115 | border-bottom: 1px solid #EFEFEF;
116 | margin: -5px 0px 5px 0px;
117 | padding: 10px 5px 5px 5px;
118 | overflow: hidden;
119 | }
120 | #interfaceControlFrameLogoImageContainer {
121 | text-align: center;
122 | }
123 | #interfaceControlFrameLogoCaptionContainer {
124 | text-align: center;
125 | margin: 5px 10px 0px 10px;
126 | font-size: 11px;
127 | color: #333;
128 | }
129 |
--------------------------------------------------------------------------------
/project/Project/resources/css/images/images.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
--------------------------------------------------------------------------------
/project/Project/resources/css/images/newwindow.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dyktek/FrameworkMVC/d6b6e2c3fff3127bbc130c27c8fb33596763266d/project/Project/resources/css/images/newwindow.gif
--------------------------------------------------------------------------------
/project/Project/resources/css/images/note.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dyktek/FrameworkMVC/d6b6e2c3fff3127bbc130c27c8fb33596763266d/project/Project/resources/css/images/note.gif
--------------------------------------------------------------------------------
/project/Project/resources/css/images/ui-bg_flat_0_aaaaaa_40x100.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dyktek/FrameworkMVC/d6b6e2c3fff3127bbc130c27c8fb33596763266d/project/Project/resources/css/images/ui-bg_flat_0_aaaaaa_40x100.png
--------------------------------------------------------------------------------
/project/Project/resources/css/images/ui-bg_glass_55_fbf9ee_1x400.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dyktek/FrameworkMVC/d6b6e2c3fff3127bbc130c27c8fb33596763266d/project/Project/resources/css/images/ui-bg_glass_55_fbf9ee_1x400.png
--------------------------------------------------------------------------------
/project/Project/resources/css/images/ui-bg_glass_65_ffffff_1x400.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dyktek/FrameworkMVC/d6b6e2c3fff3127bbc130c27c8fb33596763266d/project/Project/resources/css/images/ui-bg_glass_65_ffffff_1x400.png
--------------------------------------------------------------------------------
/project/Project/resources/css/images/ui-bg_glass_75_dadada_1x400.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dyktek/FrameworkMVC/d6b6e2c3fff3127bbc130c27c8fb33596763266d/project/Project/resources/css/images/ui-bg_glass_75_dadada_1x400.png
--------------------------------------------------------------------------------
/project/Project/resources/css/images/ui-bg_glass_75_e6e6e6_1x400.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dyktek/FrameworkMVC/d6b6e2c3fff3127bbc130c27c8fb33596763266d/project/Project/resources/css/images/ui-bg_glass_75_e6e6e6_1x400.png
--------------------------------------------------------------------------------
/project/Project/resources/css/images/ui-bg_glass_75_ffffff_1x400.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dyktek/FrameworkMVC/d6b6e2c3fff3127bbc130c27c8fb33596763266d/project/Project/resources/css/images/ui-bg_glass_75_ffffff_1x400.png
--------------------------------------------------------------------------------
/project/Project/resources/css/images/ui-bg_highlight-soft_75_cccccc_1x100.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dyktek/FrameworkMVC/d6b6e2c3fff3127bbc130c27c8fb33596763266d/project/Project/resources/css/images/ui-bg_highlight-soft_75_cccccc_1x100.png
--------------------------------------------------------------------------------
/project/Project/resources/css/images/ui-bg_inset-soft_95_fef1ec_1x100.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dyktek/FrameworkMVC/d6b6e2c3fff3127bbc130c27c8fb33596763266d/project/Project/resources/css/images/ui-bg_inset-soft_95_fef1ec_1x100.png
--------------------------------------------------------------------------------
/project/Project/resources/css/images/ui-icons_222222_256x240.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dyktek/FrameworkMVC/d6b6e2c3fff3127bbc130c27c8fb33596763266d/project/Project/resources/css/images/ui-icons_222222_256x240.png
--------------------------------------------------------------------------------
/project/Project/resources/css/images/ui-icons_2e83ff_256x240.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dyktek/FrameworkMVC/d6b6e2c3fff3127bbc130c27c8fb33596763266d/project/Project/resources/css/images/ui-icons_2e83ff_256x240.png
--------------------------------------------------------------------------------
/project/Project/resources/css/images/ui-icons_454545_256x240.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dyktek/FrameworkMVC/d6b6e2c3fff3127bbc130c27c8fb33596763266d/project/Project/resources/css/images/ui-icons_454545_256x240.png
--------------------------------------------------------------------------------
/project/Project/resources/css/images/ui-icons_888888_256x240.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dyktek/FrameworkMVC/d6b6e2c3fff3127bbc130c27c8fb33596763266d/project/Project/resources/css/images/ui-icons_888888_256x240.png
--------------------------------------------------------------------------------
/project/Project/resources/css/images/ui-icons_cd0a0a_256x240.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dyktek/FrameworkMVC/d6b6e2c3fff3127bbc130c27c8fb33596763266d/project/Project/resources/css/images/ui-icons_cd0a0a_256x240.png
--------------------------------------------------------------------------------
/project/Project/resources/css/reset.css:
--------------------------------------------------------------------------------
1 | html,body,div,span,
2 | applet,object,iframe,
3 | h1,h2,h3,h4,h5,h6,p,blockquote,pre,
4 | a,abbr,acronym,address,big,cite,code,
5 | del,dfn,em,font,img,ins,kbd,q,s,samp,
6 | small,strike,strong,sub,sup,tt,var,
7 | dd,dl,dt,li,ol,ul,
8 | fieldset,form,label,legend,
9 | table,caption,tbody,tfoot,thead,tr,th,td {
10 | margin: 0;
11 | padding: 0;
12 | border: 0;
13 | }
14 | table {
15 | border-collapse: collapse;
16 | border-spacing: 0;
17 | }
18 | ol,ul {
19 | list-style: none;
20 | }
21 | q:before,q:after,
22 | blockquote:before,blockquote:after {
23 | content: "";
24 | }
--------------------------------------------------------------------------------
/project/Project/resources/expand.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
22 |
23 |
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/project/Project/resources/images/259_close_12rollover1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dyktek/FrameworkMVC/d6b6e2c3fff3127bbc130c27c8fb33596763266d/project/Project/resources/images/259_close_12rollover1.png
--------------------------------------------------------------------------------
/project/Project/resources/images/259_close_12rollover2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dyktek/FrameworkMVC/d6b6e2c3fff3127bbc130c27c8fb33596763266d/project/Project/resources/images/259_close_12rollover2.png
--------------------------------------------------------------------------------
/project/Project/resources/images/260_collapse_12rollover1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dyktek/FrameworkMVC/d6b6e2c3fff3127bbc130c27c8fb33596763266d/project/Project/resources/images/260_collapse_12rollover1.png
--------------------------------------------------------------------------------
/project/Project/resources/images/260_collapse_12rollover2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dyktek/FrameworkMVC/d6b6e2c3fff3127bbc130c27c8fb33596763266d/project/Project/resources/images/260_collapse_12rollover2.png
--------------------------------------------------------------------------------
/project/Project/resources/images/261_expand_12rollover1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dyktek/FrameworkMVC/d6b6e2c3fff3127bbc130c27c8fb33596763266d/project/Project/resources/images/261_expand_12rollover1.png
--------------------------------------------------------------------------------
/project/Project/resources/images/261_expand_12rollover2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dyktek/FrameworkMVC/d6b6e2c3fff3127bbc130c27c8fb33596763266d/project/Project/resources/images/261_expand_12rollover2.png
--------------------------------------------------------------------------------
/project/Project/resources/images/images.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/project/Project/resources/images/transparent.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dyktek/FrameworkMVC/d6b6e2c3fff3127bbc130c27c8fb33596763266d/project/Project/resources/images/transparent.gif
--------------------------------------------------------------------------------
/project/Project/resources/reload.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/project/Project/resources/scripts/axure/globals.js:
--------------------------------------------------------------------------------
1 | $axure.internal(function($ax) {
2 | var _globals = $ax.globals = {};
3 |
4 | $ax.globals.MaxZIndex = 1000;
5 | $ax.globals.MinZIndex = -1000;
6 |
7 | });
--------------------------------------------------------------------------------
/project/Project/resources/scripts/axure/legacy.js:
--------------------------------------------------------------------------------
1 | //stored on each browser event
2 | var windowEvent;
3 |
4 | $axure.internal(function($ax) {
5 | var _legacy = {};
6 | $ax.legacy = _legacy;
7 |
8 |
9 | // ************************** GLOBAL VARS *********************************//
10 |
11 | // ************************************************************************//
12 | //Check if IE
13 | //var bIE = false;
14 | //if ((index = navigator.userAgent.indexOf("MSIE")) >= 0) {
15 | // bIE = true;
16 | //}
17 |
18 | var Forms = window.document.getElementsByTagName("FORM");
19 | for(var i = 0; i < Forms.length; i++) {
20 | var Form = Forms[i];
21 | Form.onclick = $ax.legacy.SuppressBubble;
22 | }
23 |
24 | $ax.legacy.SuppressBubble = function(event) {
25 | if(IE) {
26 | window.event.cancelBubble = true;
27 | window.event.returnValue = false;
28 | } else {
29 | if(event) {
30 | event.stopPropagation();
31 | }
32 | }
33 | };
34 |
35 | // function InsertAfterBegin(dom, html) {
36 | // if(!IE) {
37 | // var phtml;
38 | // var range = dom.ownerDocument.createRange();
39 | // range.selectNodeContents(dom);
40 | // range.collapse(true);
41 | // phtml = range.createContextualFragment(html);
42 | // dom.insertBefore(phtml, dom.firstChild);
43 | // } else {
44 | // dom.insertAdjacentHTML("afterBegin", html);
45 | // }
46 | // }
47 |
48 | // function InsertBeforeEnd(dom, html) {
49 | // if(!IE) {
50 | // var phtml;
51 | // var range = dom.ownerDocument.createRange();
52 | // range.selectNodeContents(dom);
53 | // range.collapse(dom);
54 | // phtml = range.createContextualFragment(html);
55 | // dom.appendChild(phtml);
56 | // } else {
57 | // dom.insertAdjacentHTML("beforeEnd", html);
58 | // }
59 | // }
60 |
61 | //Get the id of the Workflow Dialog belonging to element with id = id
62 |
63 | // function Workflow(id) {
64 | // return id + 'WF';
65 | // }
66 |
67 | $ax.legacy.BringToFront = function(id, skipFixed) {
68 | _bringToFrontHelper(id);
69 | if(!skipFixed) $ax.legacy.BringFixedToFront();
70 | };
71 |
72 | var _bringToFrontHelper = function(id) {
73 | var target = window.document.getElementById(id);
74 | if(target == null) return;
75 | $ax.globals.MaxZIndex = $ax.globals.MaxZIndex + 1;
76 | target.style.zIndex = $ax.globals.MaxZIndex;
77 | };
78 |
79 | $ax.legacy.BringFixedToFront = function() {
80 | $ax(function(diagramObject) { return diagramObject.fixedKeepInFront; }).each(function(diagramObject, scriptId) {
81 | _bringToFrontHelper(scriptId);
82 | });
83 | };
84 |
85 | $ax.legacy.SendToBack = function(id) {
86 | var target = window.document.getElementById(id);
87 | if(target == null) return;
88 | target.style.zIndex = $ax.globals.MinZIndex = $ax.globals.MinZIndex - 1;
89 | };
90 |
91 | $ax.legacy.RefreshScreen = function() {
92 | var oldColor = window.document.body.style.backgroundColor;
93 | var setColor = (oldColor == "rgb(0,0,0)") ? "#FFFFFF" : "#000000";
94 | window.document.body.style.backgroundColor = setColor;
95 | window.document.body.style.backgroundColor = oldColor;
96 | };
97 |
98 | $ax.legacy.getAbsoluteLeft = function(currentNode) {
99 | var oldDisplay = currentNode.css('display');
100 | var displaySet = false;
101 | if(oldDisplay == 'none') {
102 | currentNode.css('display', '');
103 | displaySet = true;
104 | }
105 | var left = currentNode.offset().left;
106 | if(displaySet) currentNode.css('display', oldDisplay);
107 | var body = $('body');
108 | if(body.css('position') == 'relative') left -= (Number(body.css('left').replace('px', '')) + Math.max(0, ($(window).width() - body.width()) / 2));
109 | return left;
110 | };
111 |
112 | $ax.legacy.getAbsoluteTop = function(currentNode) {
113 | var oldDisplay = currentNode.css('display');
114 | var displaySet = false;
115 | if(oldDisplay == 'none') {
116 | currentNode.css('display', '');
117 | displaySet = true;
118 | }
119 | var top = currentNode.offset().top;
120 | if(displaySet) currentNode.css('display', oldDisplay);
121 | return top;
122 | };
123 |
124 | // ****************** Annotation and Link Functions ****************** //
125 |
126 | $ax.legacy.GetAnnotationHtml = function(annJson) {
127 | var retVal = "";
128 | for(var noteName in annJson) {
129 | if(noteName != "label") {
130 | retVal += "" + noteName + "
";
131 | retVal += "" + annJson[noteName] + "
";
132 | }
133 | }
134 | return retVal;
135 | };
136 |
137 |
138 | $ax.legacy.GetScrollable = function(target) {
139 | var $target = $(target);
140 | var current = $target;
141 | var last = $target;
142 |
143 | while(!current.is('body') && !current.is('html')) {
144 | var elementId = current.attr('id');
145 | var diagramObject = elementId && $ax.getObjectFromElementId(elementId);
146 | if(diagramObject && diagramObject.type == 'dynamicPanel' && diagramObject.scrollbars != 'none') {
147 | //returns the panel diagram div which handles scrolling
148 | return window.document.getElementById(last.attr('id'));
149 | }
150 | last = current;
151 | current = current.parent();
152 | }
153 | // Need to do this because of ie
154 | if(IE) return window.document.documentElement;
155 | else return window.document.body;
156 | };
157 |
158 |
159 |
160 | });
--------------------------------------------------------------------------------
/project/Project/resources/scripts/axure/model.js:
--------------------------------------------------------------------------------
1 | // ******* Object Model ******** //
2 | $axure.internal(function($ax) {
3 | var _implementations = {};
4 |
5 | var _initializeObject = function(type, obj) {
6 | $.extend(obj, _implementations[type]);
7 | };
8 | $ax.initializeObject = _initializeObject;
9 |
10 | var _model = $ax.model = {};
11 |
12 | _model.idsInRdo = function(rdoId, elementIds) {
13 | var rdoScriptId = $ax.repeater.getScriptIdFromElementId(rdoId);
14 | var rdoObj = $obj(rdoId);
15 | var path = $ax.getPathFromScriptId(rdoScriptId);
16 | var rdoRepeater = $ax.getParentRepeaterFromScriptId(rdoScriptId);
17 | var rdoItem = $ax.repeater.getItemIdFromElementId(rdoId);
18 |
19 | if(!elementIds) elementIds = [];
20 | $ax('*').each(function(obj, elementId) {
21 | // Make sure in same rdo
22 | var scriptId = $ax.repeater.getScriptIdFromElementId(elementId);
23 | var elementPath = $ax.getPathFromScriptId(scriptId);
24 | // This is because last part of path is for the obj itself.
25 | elementPath.pop();
26 | if(elementPath.length != path.length) return;
27 | for(var i = 0; i < path.length; i++) if(elementPath[i] != path[i]) return;
28 |
29 | // If object is in a panel, the panel will be hidden, so the obj doesn't have to be.
30 | if(obj.parentDynamicPanel) return;
31 |
32 | var repeater = $ax.getParentRepeaterFromScriptId(scriptId);
33 | var item = $ax.repeater.getItemIdFromElementId(elementId);
34 | if(repeater != rdoRepeater || item != rdoItem) return;
35 |
36 | if(obj.type == 'referenceDiagramObject') _model.idsInRdo(elementId, elementIds);
37 | // Kind of complicated, but returning for isContained objects, hyperlinks, tabel cell, non-root tree nodes, and images in the tree.
38 | else if(obj.isContained || obj.type == 'hyperlink' || obj.type == 'tableCell' ||
39 | (obj.type == 'treeNodeObject' && !$jobj(elementId).hasClass('treeroot')) ||
40 | (obj.type == 'imageBox' && obj.parent.type == 'treeNodeObject')) return;
41 | else elementIds.push(elementId);
42 | });
43 | return elementIds;
44 | };
45 |
46 | });
--------------------------------------------------------------------------------
/project/Project/resources/scripts/axure/move.js:
--------------------------------------------------------------------------------
1 | $axure.internal(function($ax) {
2 | var _move = {};
3 | $ax.move = _move;
4 |
5 | var widgetMoveInfo = {};
6 |
7 | $ax.move.GetWidgetMoveInfo = function() {
8 | return $.extend({}, widgetMoveInfo);
9 | };
10 |
11 | $ax.move.MoveWidget = function(id, x, y, easing, duration, to, animationCompleteCallback, shouldFire) {
12 | $ax.drag.LogMovedWidgetForDrag(id);
13 |
14 | var widget = $('#' + id);
15 | var jobj = $jobj(id);
16 |
17 | var horzProp = 'left';
18 | var vertProp = 'top';
19 | var horzX = to ? x - Number(jobj.css('left').replace('px', '')) : x;
20 | var vertY = to ? y - Number(jobj.css('top').replace('px', '')) : y;
21 |
22 | var fixedInfo = $ax.dynamicPanelManager.getFixedInfo(id);
23 |
24 | if(fixedInfo.horizontal == 'right') {
25 | horzProp = 'right';
26 | horzX = to ? $(window).width() - x - Number(jobj.css('right').replace('px', '')) - widget.width() : -x;
27 | } else if(fixedInfo.horizontal == 'center') {
28 | horzProp = 'margin-left';
29 | if(to) horzX = x - $(window).width() / 2;
30 | }
31 |
32 | if(fixedInfo.vertical == 'bottom') {
33 | vertProp = 'bottom';
34 | vertY = to ? $(window).height() - y - Number(jobj.css('bottom').replace('px', '')) - widget.height() : -y;
35 | } else if(fixedInfo.vertical == 'middle') {
36 | vertProp = 'margin-top';
37 | if(to) vertY = y - $(window).height() / 2;
38 | }
39 | var cssStyles = {};
40 |
41 | if(!$ax.dynamicPanelManager.isPercentWidthPanel($obj(id))) cssStyles[horzProp] = '+=' + horzX;
42 | cssStyles[vertProp] = '+=' + vertY;
43 |
44 | var query = $jobj(id).add($jobj(id + '_ann')).add($jobj(id + '_ref'));
45 | if(easing == 'none') {
46 | query.animate(cssStyles, 0);
47 | if(animationCompleteCallback) animationCompleteCallback();
48 | if(shouldFire) $ax.action.fireAnimationFromQueue(id);
49 | } else {
50 | query.animate(cssStyles, duration, easing, function() {
51 | if(animationCompleteCallback) animationCompleteCallback();
52 | if(shouldFire) $ax.action.fireAnimationFromQueue(id);
53 | });
54 | }
55 |
56 | var moveInfo = new Object();
57 | moveInfo.x = horzX;
58 | moveInfo.y = vertY;
59 | moveInfo.options = {};
60 | moveInfo.options.easing = easing;
61 | moveInfo.options.duration = duration;
62 | widgetMoveInfo[id] = moveInfo;
63 |
64 | $ax.event.raiseSyntheticEvent(id, "onMove");
65 | };
66 |
67 | _move.nopMove = function(id) {
68 | var moveInfo = new Object();
69 | moveInfo.x = 0;
70 | moveInfo.y = 0;
71 | moveInfo.options = {};
72 | moveInfo.options.easing = 'none';
73 | moveInfo.options.duration = 0;
74 | widgetMoveInfo[id] = moveInfo;
75 | };
76 | });
--------------------------------------------------------------------------------
/project/Project/resources/scripts/axure/utils.temp.js:
--------------------------------------------------------------------------------
1 | // ******* Deep Copy ******** //
2 | $axure.internal(function($ax) {
3 | // TODO: [ben] Ah, infinite loops cause major issues here. Tried saving objects we've already hit, but that didn't seem to work (at least at my first shot).
4 | var _deepCopy = function(original, trackCopies) {
5 | if(trackCopies) {
6 | var index = _getCopyIndex(original);
7 | if(index != -1) return _originalToCopy[index][1];
8 | }
9 | var isArray = original instanceof Array;
10 | var isObject = !(original instanceof Function) && !(original instanceof Date) && (original instanceof Object);
11 | if(!isArray && !isObject) return original;
12 | var copy = isArray ? [] : { };
13 | if(trackCopies) _originalToCopy.push([original, copy]);
14 | isArray ? deepCopyArray(original, trackCopies, copy) : deepCopyObject(original, trackCopies, copy);
15 | return copy;
16 | };
17 | $ax.deepCopy = _deepCopy;
18 |
19 | // Hacky way to copy event info. Copying dragInfo causes major issues due to infinite loops
20 | // Hashmap doesn't map objects well. It just toStrings them, making them all the same key. This has to be slow...
21 | var _originalToCopy = [];
22 | var _getCopyIndex = function(original) {
23 | for(var i = 0; i < _originalToCopy.length; i++) if(original == _originalToCopy[i][0]) return i;
24 | return -1;
25 | };
26 |
27 | $ax.eventCopy = function(eventInfo) {
28 | var dragInfo = eventInfo.dragInfo;
29 | delete eventInfo.dragInfo;
30 | var copy = _deepCopy(eventInfo, true);
31 | copy.dragInfo = dragInfo;
32 | eventInfo.dragInfo = dragInfo;
33 | // reset the map.
34 | _originalToCopy = [];
35 |
36 | return copy;
37 | };
38 |
39 | var deepCopyArray = function(original, trackCopies, copy) {
40 | for(var i = 0; i < original.length; i++) {
41 | copy[i] = _deepCopy(original[i], trackCopies);
42 | }
43 | };
44 |
45 | var deepCopyObject = function(original, trackCopies, copy) {
46 | for(var key in original) {
47 | if(!original.hasOwnProperty(key)) continue;
48 | copy[key] = _deepCopy(original[key], trackCopies);
49 | }
50 | };
51 |
52 | // Our implementation of splice because it is broken in IE8...
53 | $ax.splice = function(array, startIndex, count) {
54 | var retval = [];
55 | if(startIndex >= array.length || startIndex < 0) return retval;
56 | if(!count || startIndex + count > array.length) count = array.length - startIndex;
57 | for(var i = 0; i < count; i++) retval[i] = array[startIndex + i];
58 | for(i = startIndex + count; i < array.length; i++) array[i - count] = array[i];
59 | for(i = 0; i < count; i++) array.pop();
60 | return retval;
61 | };
62 | });
63 |
64 |
65 |
66 | // ******* Flow Shape Links ******** //
67 | $axure.internal(function($ax) {
68 |
69 | if(!$ax.document.configuration.linkFlowsToPages && !$ax.document.configuration.linkFlowsToPagesNewWindow) return;
70 |
71 | $(window.document).ready(function() {
72 | $ax(function(dObj) { return dObj.type == 'flowShape' && dObj.referencePageUrl; }).each(function(dObj, elementId) {
73 |
74 | var elementIdQuery = $('#' + elementId);
75 |
76 | if($ax.document.configuration.linkFlowsToPages) {
77 | elementIdQuery.css("cursor", "pointer");
78 | elementIdQuery.click(function() {
79 | $ax.navigate({
80 | url: dObj.referencePageUrl,
81 | target: "current",
82 | includeVariables: true
83 | });
84 | });
85 | }
86 |
87 | if($ax.document.configuration.linkFlowsToPagesNewWindow) {
88 | $('#' + elementId + "_ref").append("");
89 | $('#' + elementId + "PagePopup").click(function() {
90 | $ax.navigate({
91 | url: dObj.referencePageUrl,
92 | target: "new",
93 | includeVariables: true
94 | });
95 | });
96 | }
97 | });
98 | });
99 |
100 | });
101 |
--------------------------------------------------------------------------------
/project/Project/resources/scripts/axure/viewer.js:
--------------------------------------------------------------------------------
1 | // ******* SITEMAP TOOLBAR VIEWER ACTIONS ******** //
2 | $axure.internal(function($ax) {
3 | var userTriggeredEventNames = ['onClick', 'onDoubleClick', 'onMouseOver', 'onMouseMove', 'onMouseOut', 'onMouseDown', 'onMouseUp', 'onKeyDown', 'onKeyUp', 'onFocus', 'onLostFocus', 'onTextChange', 'onSelectionChange', 'onCheckedChange', 'onSwipeLeft', 'onSwipeRight', 'onSwipeUp', 'onSwipeDown', 'onDragStart', 'onDrag', 'onDragDrop', 'onScroll', 'onContextMenu', 'onMouseHover', 'onLongClick'];
4 |
5 | $ax.messageCenter.addMessageListener(function(message, data) {
6 | //If annotation toggle message received from sitemap, toggle footnotes
7 | if(message == 'annotationToggle') {
8 | if(data == true) {
9 | $('div.annotation').show();
10 | $('div.annnotelabel').show();
11 | $('div.annnoteimage').show();
12 | } else {
13 | $('div.annotation').hide();
14 | $('div.annnotelabel').hide();
15 | $('div.annnoteimage').hide();
16 | }
17 | }
18 | });
19 |
20 | var highlightEnabled = false;
21 | $ax.messageCenter.addMessageListener(function(message, data) {
22 | if(message == 'highlightInteractive') {
23 | highlightEnabled = data == true;
24 | _applyHighlight($ax('*'));
25 | }
26 | });
27 |
28 | var _applyHighlight = $ax.applyHighlight = function(query, ignoreUnset) {
29 | if(ignoreUnset && !highlightEnabled) return;
30 |
31 | //Do condition to check if legacy browser (all IE, except 10) and select appropriate pulsate css class name
32 | var userAgentString = navigator.userAgent.toLowerCase();
33 |
34 | var isIEpre10 = userAgentString.indexOf('msie 9.') != -1 ||
35 | userAgentString.indexOf('msie 8.') != -1 ||
36 | userAgentString.indexOf('msie 7.') != -1 ||
37 | userAgentString.indexOf('msie 6.') != -1;
38 |
39 | var pulsateClassName = isIEpre10 ? 'legacyPulsateBorder' : 'pulsateBorder';
40 |
41 | //Find all widgets with a defined userTriggeredEventName specified in the array above
42 | var $matchingElements = query.filter(function(obj) {
43 | if(obj.interactionMap) {
44 | for(var index in userTriggeredEventNames) {
45 | if(obj.interactionMap[userTriggeredEventNames[index]]) return true;
46 | }
47 | } else if (obj.type == 'flowShape' && obj.referencePageUrl) {
48 | return true;
49 | }
50 | return false;
51 | }).$();
52 |
53 | var isHighlighted = $matchingElements.is('.' + pulsateClassName);
54 |
55 | //Toggle the pulsate class on the matched elements
56 | if(highlightEnabled && !isHighlighted) {
57 | $matchingElements.addClass(pulsateClassName);
58 | } else if(!highlightEnabled && isHighlighted) {
59 | $matchingElements.removeClass(pulsateClassName);
60 | }
61 | };
62 | });
--------------------------------------------------------------------------------
/project/Project/start_c_1.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/project/db5.sql:
--------------------------------------------------------------------------------
1 | SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
2 | SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
3 | SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL,ALLOW_INVALID_DATES';
4 |
5 | CREATE SCHEMA IF NOT EXISTS `blog` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci ;
6 | USE `blog` ;
7 |
8 | -- -----------------------------------------------------
9 | -- Table `blog`.`categories`
10 | -- -----------------------------------------------------
11 | CREATE TABLE IF NOT EXISTS `blog`.`categories` (
12 | `cat_id` INT NOT NULL AUTO_INCREMENT,
13 | `cat_name` VARCHAR(255) NULL,
14 | `cat_slug` VARCHAR(255) NULL,
15 | `cat_status` TINYINT NULL,
16 | PRIMARY KEY (`cat_id`),
17 | UNIQUE INDEX `cat_slug_UNIQUE` (`cat_slug` ASC))
18 | ENGINE = InnoDB
19 | DEFAULT CHARACTER SET = utf8
20 | COLLATE = utf8_unicode_ci;
21 |
22 |
23 | -- -----------------------------------------------------
24 | -- Table `blog`.`users`
25 | -- -----------------------------------------------------
26 | CREATE TABLE IF NOT EXISTS `blog`.`users` (
27 | `usr_id` INT NOT NULL AUTO_INCREMENT,
28 | `usr_name` VARCHAR(255) NULL,
29 | `usr_password` VARCHAR(255) NULL,
30 | `usr_email` VARCHAR(255) NULL,
31 | `usr_status` TINYINT NULL,
32 | `usr_role` TINYINT NULL,
33 | `usr_date` DATETIME NULL,
34 | PRIMARY KEY (`usr_id`))
35 | ENGINE = InnoDB;
36 |
37 |
38 | -- -----------------------------------------------------
39 | -- Table `blog`.`galleries`
40 | -- -----------------------------------------------------
41 | CREATE TABLE IF NOT EXISTS `blog`.`galleries` (
42 | `gal_id` INT NOT NULL AUTO_INCREMENT,
43 | `gal_name` VARCHAR(255) NULL,
44 | PRIMARY KEY (`gal_id`))
45 | ENGINE = InnoDB;
46 |
47 |
48 | -- -----------------------------------------------------
49 | -- Table `blog`.`articles`
50 | -- -----------------------------------------------------
51 | CREATE TABLE IF NOT EXISTS `blog`.`articles` (
52 | `art_id` INT NOT NULL AUTO_INCREMENT,
53 | `art_title` VARCHAR(255) NULL,
54 | `art_slug` VARCHAR(255) NULL,
55 | `art_status` TINYINT NULL,
56 | `art_body` TEXT NULL,
57 | `art_date` DATETIME NULL,
58 | `art_cat_id` INT NOT NULL,
59 | `art_usr_id` INT NOT NULL,
60 | `art_gal_id` INT NULL,
61 | PRIMARY KEY (`art_id`),
62 | INDEX `fk_articles_categories_idx` (`art_cat_id` ASC),
63 | INDEX `fk_articles_users1_idx` (`art_usr_id` ASC),
64 | INDEX `fk_articles_galleries1_idx` (`art_gal_id` ASC),
65 | UNIQUE INDEX `art_slug_UNIQUE` (`art_slug` ASC),
66 | CONSTRAINT `fk_articles_categories`
67 | FOREIGN KEY (`art_cat_id`)
68 | REFERENCES `blog`.`categories` (`cat_id`)
69 | ON DELETE NO ACTION
70 | ON UPDATE NO ACTION,
71 | CONSTRAINT `fk_articles_users1`
72 | FOREIGN KEY (`art_usr_id`)
73 | REFERENCES `blog`.`users` (`usr_id`)
74 | ON DELETE NO ACTION
75 | ON UPDATE NO ACTION,
76 | CONSTRAINT `fk_articles_galleries1`
77 | FOREIGN KEY (`art_gal_id`)
78 | REFERENCES `blog`.`galleries` (`gal_id`)
79 | ON DELETE NO ACTION
80 | ON UPDATE NO ACTION)
81 | ENGINE = InnoDB;
82 |
83 |
84 | -- -----------------------------------------------------
85 | -- Table `blog`.`comments`
86 | -- -----------------------------------------------------
87 | CREATE TABLE IF NOT EXISTS `blog`.`comments` (
88 | `cmt_id` INT NOT NULL AUTO_INCREMENT,
89 | `cmt_body` VARCHAR(45) NULL,
90 | `cmt_usr_id` INT NOT NULL,
91 | `cmt_status` TINYINT NULL,
92 | PRIMARY KEY (`cmt_id`),
93 | INDEX `fk_comments_users1_idx` (`cmt_usr_id` ASC),
94 | CONSTRAINT `fk_comments_users1`
95 | FOREIGN KEY (`cmt_usr_id`)
96 | REFERENCES `blog`.`users` (`usr_id`)
97 | ON DELETE NO ACTION
98 | ON UPDATE NO ACTION)
99 | ENGINE = InnoDB;
100 |
101 |
102 | -- -----------------------------------------------------
103 | -- Table `blog`.`tags`
104 | -- -----------------------------------------------------
105 | CREATE TABLE IF NOT EXISTS `blog`.`tags` (
106 | `tag_id` INT NOT NULL AUTO_INCREMENT,
107 | `tag_name` VARCHAR(100) NULL,
108 | PRIMARY KEY (`tag_id`))
109 | ENGINE = InnoDB;
110 |
111 |
112 | -- -----------------------------------------------------
113 | -- Table `blog`.`tags_has_articles`
114 | -- -----------------------------------------------------
115 | CREATE TABLE IF NOT EXISTS `blog`.`tags_has_articles` (
116 | `tags_tag_id` INT NOT NULL,
117 | `articles_art_id` INT NOT NULL,
118 | PRIMARY KEY (`tags_tag_id`, `articles_art_id`),
119 | INDEX `fk_tags_has_articles_articles1_idx` (`articles_art_id` ASC),
120 | INDEX `fk_tags_has_articles_tags1_idx` (`tags_tag_id` ASC),
121 | CONSTRAINT `fk_tags_has_articles_tags1`
122 | FOREIGN KEY (`tags_tag_id`)
123 | REFERENCES `blog`.`tags` (`tag_id`)
124 | ON DELETE NO ACTION
125 | ON UPDATE NO ACTION,
126 | CONSTRAINT `fk_tags_has_articles_articles1`
127 | FOREIGN KEY (`articles_art_id`)
128 | REFERENCES `blog`.`articles` (`art_id`)
129 | ON DELETE NO ACTION
130 | ON UPDATE NO ACTION)
131 | ENGINE = InnoDB;
132 |
133 |
134 | -- -----------------------------------------------------
135 | -- Table `blog`.`photos`
136 | -- -----------------------------------------------------
137 | CREATE TABLE IF NOT EXISTS `blog`.`photos` (
138 | `pht_id` INT NOT NULL AUTO_INCREMENT,
139 | `pht_src` VARCHAR(255) NULL,
140 | `pht_storage` VARCHAR(45) NULL,
141 | `pht_gal_id` INT NOT NULL,
142 | `pht_main` TINYINT NULL,
143 | PRIMARY KEY (`pht_id`),
144 | INDEX `fk_photos_galleries1_idx` (`pht_gal_id` ASC),
145 | CONSTRAINT `fk_photos_galleries1`
146 | FOREIGN KEY (`pht_gal_id`)
147 | REFERENCES `blog`.`galleries` (`gal_id`)
148 | ON DELETE NO ACTION
149 | ON UPDATE NO ACTION)
150 | ENGINE = InnoDB;
151 |
152 |
153 | SET SQL_MODE=@OLD_SQL_MODE;
154 | SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
155 | SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;
156 |
--------------------------------------------------------------------------------
/project/db6.sql:
--------------------------------------------------------------------------------
1 | SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
2 | SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
3 | SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL,ALLOW_INVALID_DATES';
4 |
5 | CREATE SCHEMA IF NOT EXISTS `blog` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci ;
6 | USE `blog` ;
7 |
8 | -- -----------------------------------------------------
9 | -- Table `blog`.`categories`
10 | -- -----------------------------------------------------
11 | CREATE TABLE IF NOT EXISTS `blog`.`categories` (
12 | `cat_id` INT NOT NULL AUTO_INCREMENT,
13 | `cat_name` VARCHAR(255) NULL,
14 | `cat_slug` VARCHAR(255) NULL,
15 | `cat_status` INT(4) NULL,
16 | PRIMARY KEY (`cat_id`),
17 | UNIQUE INDEX `cat_slug_UNIQUE` (`cat_slug` ASC))
18 | ENGINE = InnoDB
19 | DEFAULT CHARACTER SET = utf8
20 | COLLATE = utf8_unicode_ci;
21 |
22 |
23 | -- -----------------------------------------------------
24 | -- Table `blog`.`users`
25 | -- -----------------------------------------------------
26 | CREATE TABLE IF NOT EXISTS `blog`.`users` (
27 | `usr_id` INT NOT NULL AUTO_INCREMENT,
28 | `usr_name` VARCHAR(255) NULL,
29 | `usr_password` VARCHAR(255) NULL,
30 | `usr_email` VARCHAR(255) NULL,
31 | `usr_status` INT(4) NULL,
32 | `usr_role` INT(4) NULL,
33 | `usr_date` DATETIME NULL,
34 | PRIMARY KEY (`usr_id`),
35 | UNIQUE INDEX `usr_email_UNIQUE` (`usr_email` ASC))
36 | ENGINE = InnoDB;
37 |
38 |
39 | -- -----------------------------------------------------
40 | -- Table `blog`.`galleries`
41 | -- -----------------------------------------------------
42 | CREATE TABLE IF NOT EXISTS `blog`.`galleries` (
43 | `gal_id` INT NOT NULL AUTO_INCREMENT,
44 | `gal_name` VARCHAR(255) NULL,
45 | PRIMARY KEY (`gal_id`))
46 | ENGINE = InnoDB;
47 |
48 |
49 | -- -----------------------------------------------------
50 | -- Table `blog`.`articles`
51 | -- -----------------------------------------------------
52 | CREATE TABLE IF NOT EXISTS `blog`.`articles` (
53 | `art_id` INT NOT NULL AUTO_INCREMENT,
54 | `art_title` VARCHAR(255) NULL,
55 | `art_slug` VARCHAR(255) NULL,
56 | `art_status` INT(1) NULL,
57 | `art_body` TEXT NULL,
58 | `art_date` DATETIME NULL,
59 | `art_cat_id` INT NOT NULL,
60 | `art_usr_id` INT NOT NULL,
61 | `art_gal_id` INT NULL,
62 | PRIMARY KEY (`art_id`),
63 | INDEX `fk_articles_categories_idx` (`art_cat_id` ASC),
64 | INDEX `fk_articles_users1_idx` (`art_usr_id` ASC),
65 | INDEX `fk_articles_galleries1_idx` (`art_gal_id` ASC),
66 | UNIQUE INDEX `art_slug_UNIQUE` (`art_slug` ASC),
67 | CONSTRAINT `fk_articles_categories`
68 | FOREIGN KEY (`art_cat_id`)
69 | REFERENCES `blog`.`categories` (`cat_id`)
70 | ON DELETE NO ACTION
71 | ON UPDATE NO ACTION,
72 | CONSTRAINT `fk_articles_users1`
73 | FOREIGN KEY (`art_usr_id`)
74 | REFERENCES `blog`.`users` (`usr_id`)
75 | ON DELETE NO ACTION
76 | ON UPDATE NO ACTION,
77 | CONSTRAINT `fk_articles_galleries1`
78 | FOREIGN KEY (`art_gal_id`)
79 | REFERENCES `blog`.`galleries` (`gal_id`)
80 | ON DELETE NO ACTION
81 | ON UPDATE NO ACTION)
82 | ENGINE = InnoDB;
83 |
84 |
85 | -- -----------------------------------------------------
86 | -- Table `blog`.`comments`
87 | -- -----------------------------------------------------
88 | CREATE TABLE IF NOT EXISTS `blog`.`comments` (
89 | `cmt_id` INT NOT NULL AUTO_INCREMENT,
90 | `cmt_body` VARCHAR(45) NULL,
91 | `cmt_usr_id` INT NOT NULL,
92 | `cmt_status` INT(1) NULL,
93 | PRIMARY KEY (`cmt_id`),
94 | INDEX `fk_comments_users1_idx` (`cmt_usr_id` ASC),
95 | CONSTRAINT `fk_comments_users1`
96 | FOREIGN KEY (`cmt_usr_id`)
97 | REFERENCES `blog`.`users` (`usr_id`)
98 | ON DELETE NO ACTION
99 | ON UPDATE NO ACTION)
100 | ENGINE = InnoDB;
101 |
102 |
103 | -- -----------------------------------------------------
104 | -- Table `blog`.`tags`
105 | -- -----------------------------------------------------
106 | CREATE TABLE IF NOT EXISTS `blog`.`tags` (
107 | `tag_id` INT NOT NULL AUTO_INCREMENT,
108 | `tag_name` VARCHAR(100) NULL,
109 | PRIMARY KEY (`tag_id`))
110 | ENGINE = InnoDB;
111 |
112 |
113 | -- -----------------------------------------------------
114 | -- Table `blog`.`tags_has_articles`
115 | -- -----------------------------------------------------
116 | CREATE TABLE IF NOT EXISTS `blog`.`tags_has_articles` (
117 | `tags_tag_id` INT NOT NULL,
118 | `articles_art_id` INT NOT NULL,
119 | PRIMARY KEY (`tags_tag_id`, `articles_art_id`),
120 | INDEX `fk_tags_has_articles_articles1_idx` (`articles_art_id` ASC),
121 | INDEX `fk_tags_has_articles_tags1_idx` (`tags_tag_id` ASC),
122 | CONSTRAINT `fk_tags_has_articles_tags1`
123 | FOREIGN KEY (`tags_tag_id`)
124 | REFERENCES `blog`.`tags` (`tag_id`)
125 | ON DELETE NO ACTION
126 | ON UPDATE NO ACTION,
127 | CONSTRAINT `fk_tags_has_articles_articles1`
128 | FOREIGN KEY (`articles_art_id`)
129 | REFERENCES `blog`.`articles` (`art_id`)
130 | ON DELETE NO ACTION
131 | ON UPDATE NO ACTION)
132 | ENGINE = InnoDB;
133 |
134 |
135 | -- -----------------------------------------------------
136 | -- Table `blog`.`photos`
137 | -- -----------------------------------------------------
138 | CREATE TABLE IF NOT EXISTS `blog`.`photos` (
139 | `pht_id` INT NOT NULL AUTO_INCREMENT,
140 | `pht_src` VARCHAR(255) NULL,
141 | `pht_storage` VARCHAR(45) NULL,
142 | `pht_gal_id` INT(1) NOT NULL,
143 | `pht_main` INT(1) NULL,
144 | PRIMARY KEY (`pht_id`),
145 | INDEX `fk_photos_galleries1_idx` (`pht_gal_id` ASC),
146 | CONSTRAINT `fk_photos_galleries1`
147 | FOREIGN KEY (`pht_gal_id`)
148 | REFERENCES `blog`.`galleries` (`gal_id`)
149 | ON DELETE NO ACTION
150 | ON UPDATE NO ACTION)
151 | ENGINE = InnoDB;
152 |
153 |
154 | SET SQL_MODE=@OLD_SQL_MODE;
155 | SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
156 | SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;
157 |
--------------------------------------------------------------------------------
/project/specyfikacja.odt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dyktek/FrameworkMVC/d6b6e2c3fff3127bbc130c27c8fb33596763266d/project/specyfikacja.odt
--------------------------------------------------------------------------------
/simplex/App.php:
--------------------------------------------------------------------------------
1 | loadConfig();
31 |
32 | $request = Request::createFromGlobals();
33 |
34 | $this->isAjax = $request->isXmlHttpRequest();
35 |
36 | $this->session = new Session();
37 |
38 | if (!$this->isAjax) {
39 | $routes = include __DIR__ . '/../src/routes.php';
40 | $this->urlGenerator = new UrlGenerator($routes, new Routing\RequestContext());
41 |
42 | $twig = new TwigServiceProvider($this->config['twig']);
43 | $this->view = $twig->provide(array(
44 | 'urlGenerator' => $this->urlGenerator
45 | ));
46 | }
47 |
48 | $doctrine = new DoctrineServiceProvider($this->config['database']);
49 | $this->entityManager = $doctrine->provide();
50 | }
51 |
52 | public function renderAjax($body, $toJson = true)
53 | {
54 | if($toJson) {
55 | $body = json_encode($body);
56 | }
57 |
58 | return new Response($body);
59 | }
60 |
61 | public function render($name, $data = [])
62 | {
63 | if ($this->isAjax) {
64 | throw new \Exception('This is XmlHttpRequest, no view');
65 | }
66 | $body = $this->view->render($name, $data);
67 |
68 | return new Response($body);
69 | }
70 |
71 | public function getEntityManager()
72 | {
73 | return $this->entityManager;
74 | }
75 |
76 | private function loadConfig()
77 | {
78 | $this->config = include(__DIR__ . '/../src/config.php');
79 | }
80 |
81 | protected function redirect($path)
82 | {
83 | return new RedirectResponse($path);
84 | }
85 |
86 | }
--------------------------------------------------------------------------------
/simplex/Framework.php:
--------------------------------------------------------------------------------
1 | matcher = $matcher;
27 | $this->resolver = $resolver;
28 | $this->resolverArg = $resolverArg;
29 | $this->routes = $routes;
30 | $this->session = $session;
31 |
32 | }
33 |
34 | public function handle(Request $request)
35 | {
36 | //$this->matcher->getContext()->fromRequest($request); DRY ;)
37 |
38 | try {
39 | $request->attributes->add($this->matcher->match($request->getPathInfo()));
40 |
41 | $controller = $this->resolver->getController($request);
42 |
43 | // $route = $this->routes->get($request->get('_route'));
44 | //
45 | // $role = $route->getOption('role');
46 | //
47 | // $userInfo = $this->session->get('userInfo');
48 | // if(!$userInfo) {
49 | // $this->session->set('userInfo', [
50 | // 'role' => 3,
51 | // 'name' => 'guest',
52 | // 'email' => ''
53 | // ]);
54 | // return new RedirectResponse('/admin/login');
55 | // }
56 | //
57 | // if($role < $userInfo['role']) {
58 | // return new RedirectResponse('/admin/login');
59 | // }
60 |
61 | $arguments = $this->resolverArg->getArguments($request, $controller);
62 |
63 | // echo '';
64 | // print_r($controller[1]);
65 | // die;
66 |
67 | return call_user_func_array($controller, $arguments);
68 | } catch (ResourceNotFoundException $e) {
69 | return new Response('Not Found', 404);
70 | } catch (\Exception $e) {
71 | return new Response('An error occurred: ' . $e->getMessage() . ' File: ' . $e->getFile() . ' Line: ' . $e->getLine(), 500);
72 | }
73 | }
74 | }
75 |
--------------------------------------------------------------------------------
/simplex/Providers/DoctrineServiceProvider.php:
--------------------------------------------------------------------------------
1 | config, $config);
17 | // }
18 |
19 | public function provide(array $options = [])
20 | {
21 | $isDevMode = true;
22 |
23 | $config = Setup::createConfiguration($isDevMode);
24 | $driver = new AnnotationDriver(new AnnotationReader(), []);
25 |
26 | AnnotationRegistry::registerLoader('class_exists');
27 | $config->setMetadataDriverImpl($driver);
28 |
29 |
30 |
31 | return EntityManager::create($this->config, $config);
32 | }
33 | }
--------------------------------------------------------------------------------
/simplex/Providers/ServiceProvider.php:
--------------------------------------------------------------------------------
1 | config = $config;
12 | }
13 |
14 | abstract public function provide(array $options = []);
15 | }
--------------------------------------------------------------------------------
/simplex/Providers/TwigServiceProvider.php:
--------------------------------------------------------------------------------
1 | config['dir']);
15 | $twig = new Twig_Environment($loader, array(
16 | 'cache' => $this->config['cache'],
17 | 'auto_reload' => true
18 | ));
19 |
20 |
21 | if(!isset($options['urlGenerator']) || false == $options['urlGenerator'] instanceof UrlGenerator) {
22 | throw new \Exception('twig provide must have urlGenerator');
23 | }
24 |
25 | $functionUrlGenerator = new Twig_SimpleFunction('url', function($name, $parameters = []) use ($options) {
26 | return $options['urlGenerator']->generate($name, $parameters);
27 | });
28 |
29 | $functionAsset = new Twig_SimpleFunction('asset', function($fileName) {
30 | return '/assets/'.$fileName;
31 | });
32 |
33 | $twig->addFunction($functionUrlGenerator);
34 | $twig->addFunction($functionAsset);
35 |
36 | return $twig;
37 | }
38 | }
--------------------------------------------------------------------------------
/simplex/Router.php:
--------------------------------------------------------------------------------
1 | routes = $routes;
16 | }
17 |
18 | public function addGet($name, $path, $role, $defaults)
19 | {
20 | $this->routes->add($name, new Routing\Route($path, $defaults, array(), array('role' => $role), '', array(), Request::METHOD_GET));
21 | }
22 |
23 | public function addPost($name, $path, $role, $defaults)
24 | {
25 | $this->routes->add($name, new Routing\Route($path, $defaults, array(), array('role' => $role), '', array(), Request::METHOD_POST));
26 | }
27 |
28 | public function addDelete($name, $path, $role, $defaults)
29 | {
30 | $this->routes->add($name, new Routing\Route($path, $defaults, array(), array('role' => $role), '', array(), Request::METHOD_DELETE));
31 | }
32 |
33 | public function addPut($name, $path, $role, $defaults)
34 | {
35 | $this->routes->add($name, new Routing\Route($path, $defaults, array(), array('role' => $role), '', array(), Request::METHOD_PUT));
36 | }
37 |
38 |
39 | public function getRouteCollection()
40 | {
41 | return $this->routes;
42 | }
43 | }
--------------------------------------------------------------------------------
/src/Admin/Controller/AdminController.php:
--------------------------------------------------------------------------------
1 | session->get('userInfo');
15 |
16 | echo '';
17 | print_r($userInfo);
18 |
19 | return $this->render('Admin/View/index.html.twig');
20 | }
21 |
22 | public function loginAction()
23 | {
24 |
25 | // $password = '123qwe';
26 | //
27 | // $hash = password_hash($password, PASSWORD_DEFAULT);
28 | //
29 | // echo $hash;
30 |
31 | return $this->render('Admin/View/login.html.twig', [
32 | 'messages' => $this->session->getFlashBag()->get('error', array())
33 | ]);
34 | }
35 |
36 | public function authAction(Request $request)
37 | {
38 | $email = $request->request->get('email');
39 | $password = $request->request->get('password');
40 |
41 | $users = new UsersTable($this->getEntityManager());
42 |
43 | $result = $users->checkUser($email);
44 |
45 | if(!$result || (!password_verify($password, $result['usrPassword']))) {
46 | $this->session->getFlashBag()->add('error', 'Dane logowania są niepoprawne');
47 | return $this->redirect('/admin/login');
48 | } else {
49 | $this->session->set('userInfo',[
50 | 'role' => $result['usrRole'],
51 | 'name' => $result['usrName'],
52 | 'email' => $result['usrEmail']
53 | ]);
54 | return $this->redirect('/admin');
55 | }
56 | }
57 |
58 | }
--------------------------------------------------------------------------------
/src/Admin/View/Layout/layout.html.twig:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | {% block head %}
5 |
6 | Panel administracyjny
7 |
12 | {% endblock %}
13 |
14 |
15 |
16 |
17 |
18 |
19 | {% block content %}{% endblock %}
20 |
21 |
22 |
23 |
24 |
25 |
--------------------------------------------------------------------------------
/src/Admin/View/index.html.twig:
--------------------------------------------------------------------------------
1 | {% extends 'Admin/View/Layout/layout.html.twig' %}
2 |
3 | {% block content %}
4 |
5 |
6 | {% endblock %}
--------------------------------------------------------------------------------
/src/Admin/View/login.html.twig:
--------------------------------------------------------------------------------
1 | {% extends 'Admin/View/Layout/layout.html.twig' %}
2 |
3 | {% block head %}
4 | {{ parent() }}
5 |
6 | {% endblock %}
7 |
8 | {% block content %}
9 |
10 | {% for msg in messages %}
11 |
12 | Błąd! {{ msg }}
13 |
14 | {% endfor %}
15 |
16 |
17 |
25 |
26 | {% endblock %}
--------------------------------------------------------------------------------
/src/Api/Controller/ArticlesController.php:
--------------------------------------------------------------------------------
1 | getEntityManager();
14 |
15 | $articles = new ArticlesTable($this->getEntityManager());
16 |
17 | $result = $articles->getArticles();
18 |
19 |
20 | return $this->renderAjax($result);
21 | }
22 |
23 | public function getArticleAction($id)
24 | {
25 | $em = $this->getEntityManager();
26 |
27 |
28 | $articles = new ArticlesTable($this->getEntityManager());
29 | $data = $articles->getArticle($id);
30 |
31 | // $data = ['idGet' => $id];
32 |
33 | return $this->renderAjax($data);
34 | }
35 |
36 | public function editArticleAction(Request $request)
37 | {
38 |
39 | $data = ['idEdit' => $request->request->get('id')];
40 |
41 | return $this->renderAjax($data);
42 | }
43 |
44 | public function newArticleAction(Request $request)
45 | {
46 |
47 | $data = ['idNew' => $request->request->get('id')];
48 |
49 | return $this->renderAjax($data);
50 | }
51 |
52 | public function deleteArticleAction($id)
53 | {
54 |
55 | $data = ['idDelete' => $id];
56 |
57 | return $this->renderAjax($data);
58 | }
59 | }
--------------------------------------------------------------------------------
/src/Api/Controller/AuthController.php:
--------------------------------------------------------------------------------
1 | getContent(), true);
17 |
18 | $password = $data['password'];
19 |
20 | $users = new UsersTable($this->getEntityManager());
21 |
22 | $result = $users->checkUser($data['useremail']);
23 |
24 | if(!$result || (!password_verify($password, $result['usrPassword']))) {
25 | return $this->renderAjax(['status' => -1]);
26 | } else {
27 |
28 | $key = "key_super_secure";
29 | $payload = [
30 | 'usrId' => $result['usrId'],
31 | 'usrName' => $result['usrName'],
32 | 'usrEmail' => $result['usrEmail'],
33 | 'exp' => time() + 6000
34 | ];
35 |
36 | $token = JWT::encode($payload, $key);
37 |
38 | return $this->renderAjax(['status' => 0, 'token' => $token]);
39 | }
40 | }
41 |
42 | }
--------------------------------------------------------------------------------
/src/Api/Controller/CategoriesController.php:
--------------------------------------------------------------------------------
1 | getEntityManager());
14 |
15 | $result = $categories->getCategories(array(
16 | 'page' => intval($page)
17 | ));
18 |
19 | return $this->renderAjax($result);
20 | }
21 |
22 | public function categoryAction($id)
23 | {
24 | $categories = new CategoriesTable($this->getEntityManager());
25 |
26 | $result = $categories->getCategory(intval($id));
27 |
28 | //return $this->renderAjax($result);
29 | return $this->renderAjax(($result) ? $result[0] : $result);
30 | }
31 |
32 | public function saveAction(Request $request)
33 | {
34 | $data = json_decode($request->getContent(), true);
35 |
36 | $categories = new CategoriesTable($this->getEntityManager());
37 | $result = $categories->saveCategory($data);
38 |
39 | return $this->renderAjax(['status' => $result]);
40 | }
41 | }
--------------------------------------------------------------------------------
/src/Api/Model/Articles.php:
--------------------------------------------------------------------------------
1 | tagsTag = new \Doctrine\Common\Collections\ArrayCollection();
102 | }
103 |
104 | }
105 |
106 |
--------------------------------------------------------------------------------
/src/Api/Model/ArticlesTable.php:
--------------------------------------------------------------------------------
1 | qb->select('art', 'cat.catName')
11 | ->from('Api\Model\Articles', 'art')
12 | ->leftJoin('art.artCat', 'cat');
13 |
14 | if(isset($options['categoryId'])) {
15 | $q->where('cat.catId = :catId')
16 | ->setParameter('catId', $options['categoryId']);
17 | }
18 |
19 | return $q->getQuery()->getArrayResult();
20 | }
21 |
22 | public function getArticle($id)
23 | {
24 | $q = $this->qb->select('art')
25 | ->from('Api\Model\Articles', 'art')
26 | ->where('art.artId = :artId')
27 | ->setParameter('artId', $id);
28 |
29 | return $q->getQuery()->getArrayResult();
30 | }
31 | }
--------------------------------------------------------------------------------
/src/Api/Model/BaseTable.php:
--------------------------------------------------------------------------------
1 | em = $em;
16 | $this->qb = $this->em->createQueryBuilder();
17 | }
18 | }
--------------------------------------------------------------------------------
/src/Api/Model/Categories.php:
--------------------------------------------------------------------------------
1 | catId = $catId;
51 | }
52 |
53 | /**
54 | * @param string $catName
55 | */
56 | public function setCatName($catName)
57 | {
58 | $this->catName = $catName;
59 | }
60 |
61 | /**
62 | * @param string $catSlug
63 | */
64 | public function setCatSlug($catSlug)
65 | {
66 | $this->catSlug = $catSlug;
67 | }
68 |
69 | /**
70 | * @param int $catStatus
71 | */
72 | public function setCatStatus($catStatus)
73 | {
74 | $this->catStatus = $catStatus;
75 | }
76 | }
77 |
78 |
--------------------------------------------------------------------------------
/src/Api/Model/CategoriesTable.php:
--------------------------------------------------------------------------------
1 | qb->select('cat')
13 | ->from('Api\Model\Categories', 'cat')
14 | ->orderBy('cat.catId', 'DESC');
15 |
16 | $paginator = new \Doctrine\ORM\Tools\Pagination\Paginator($query);
17 |
18 | $totalItems = $paginator->count();
19 |
20 | $paginator
21 | ->getQuery()
22 | ->setFirstResult($pageSize * $currentPage)
23 | ->setMaxResults($pageSize)
24 | ->getArrayResult();
25 |
26 |
27 | $list = [];
28 | foreach($paginator as $item) {
29 | $list[] = $item;
30 | }
31 |
32 | return ['data' => $list, 'totalRecords' => $totalItems];
33 | }
34 |
35 | public function getCategory($id)
36 | {
37 | $q = $this->qb->select('cat')
38 | ->from('Api\Model\Categories', 'cat')
39 | ->where('cat.catId = :catId')
40 | ->setParameter('catId', $id);
41 |
42 | return $q->getQuery()->getArrayResult();
43 | }
44 |
45 | public function saveCategory($data)
46 | {
47 | if($data['catId']) {
48 | $category = $this->em->getRepository('Api\Model\Categories')->find($data['catId']);
49 | } else {
50 | $category = new Categories();
51 | }
52 |
53 | if($category) {
54 | $category->setCatName($data['catName']);
55 | $category->setCatStatus($data['catStatus']);
56 |
57 | $this->em->persist($category);
58 | $this->em->flush();
59 |
60 | return true;
61 | } else {
62 | return false;
63 | }
64 | }
65 |
66 | }
--------------------------------------------------------------------------------
/src/Api/Model/Comments.php:
--------------------------------------------------------------------------------
1 | articlesArt = new \Doctrine\Common\Collections\ArrayCollection();
52 | }
53 |
54 | }
55 |
56 |
--------------------------------------------------------------------------------
/src/Api/Model/Users.php:
--------------------------------------------------------------------------------
1 | qb->select('usr')
14 | ->from('Api\Model\Users', 'usr')
15 | ->where('usr.usrEmail = :email')
16 | ->setParameter('email', $email);
17 |
18 | return $q->getQuery()->getOneOrNullResult(AbstractQuery::HYDRATE_ARRAY);
19 | }
20 | }
--------------------------------------------------------------------------------
/src/Books/Controller/ApiController.php:
--------------------------------------------------------------------------------
1 | getEntityManager();
12 | //
13 | // $books = $em->getRepository('Books\Model\Books')->findAll();
14 | //
15 | // $newBooks = [];
16 | //
17 | // foreach ($books as $book) {
18 | // $newBooks[] = $book->toArray();
19 | // }
20 |
21 | return $this->renderAjax([]);
22 |
23 |
24 | }
25 |
26 |
27 | }
--------------------------------------------------------------------------------
/src/Books/Controller/BooksController.php:
--------------------------------------------------------------------------------
1 | getEntityManager();
16 | //
17 | // $books = $em->getRepository('Books\Model\Books')->findAll();
18 |
19 |
20 | // $articles = new ArticlesTable($this->getEntityManager());
21 | //
22 | // $result = $articles->getArticles(array(
23 | // 'categoryId' => 2
24 | // ));
25 | //
26 | // echo '';
27 | // print_r($result);
28 |
29 | if ($this->isAjax) {
30 |
31 | $newBooks = [];
32 |
33 | foreach ($books as $book) {
34 | $newBooks[] = $book->toArray();
35 | }
36 |
37 | return $this->renderAjax($newBooks);
38 |
39 | } else {
40 |
41 | return $this->render('Books/View/list.html.twig', array(
42 | //'books' => $books
43 | ));
44 | }
45 | }
46 |
47 | public function editAction($id)
48 | {
49 | return $this->render('Books/View/edit.html.twig');
50 | }
51 |
52 | }
--------------------------------------------------------------------------------
/src/Books/Model/Books.php:
--------------------------------------------------------------------------------
1 | id;
27 | }
28 |
29 | public function setId($id)
30 | {
31 | $this->id = $id;
32 | }
33 |
34 | public function getName()
35 | {
36 | return $this->name;
37 | }
38 |
39 | public function setName($name)
40 | {
41 | $this->name = $name;
42 | }
43 |
44 | public function getDescription()
45 | {
46 | return $this->description;
47 | }
48 |
49 | public function setDescription($description)
50 | {
51 | $this->description = $description;
52 | }
53 |
54 | public function getAuthor()
55 | {
56 | return $this->author;
57 | }
58 |
59 | public function setAuthor($author)
60 | {
61 | $this->author = $author;
62 | }
63 |
64 | public function toArray()
65 | {
66 | return get_object_vars($this);
67 | }
68 |
69 | }
--------------------------------------------------------------------------------
/src/Books/View/Layout/layout.html.twig:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 | {% block content %}{% endblock %}
42 |
43 |
44 |
45 |
46 |
47 |
--------------------------------------------------------------------------------
/src/Books/View/edit.html.twig:
--------------------------------------------------------------------------------
1 | {% extends 'Books/View/Layout/layout.html.twig' %}
2 |
3 | {% block content %}
4 |
5 | edycja
6 |
7 | {% endblock %}
--------------------------------------------------------------------------------
/src/Books/View/list.html.twig:
--------------------------------------------------------------------------------
1 | {% extends 'Books/View/Layout/layout.html.twig' %}
2 |
3 |
4 | {% block content %}
5 |
6 |
7 |
8 | {##}
9 | {# #}
10 | {#
#}
11 | {##}
12 | {#Loading...#}
13 | {#
#}
14 |
15 | {#Start
#}
16 | {# #}
17 | {# #}
18 | {# #}
19 | {#Reset
#}
20 |
21 |
22 | {#Rekordy #}
23 | {# #}
24 | {##}
25 | {#nazwa #}
26 | {#opis #}
27 | {#akcje #}
28 | {# #}
29 | {#{% for row in books %}#}
30 | {##}
31 | {#{{ row.name }} #}
32 | {#{{ row.description }} #}
33 | {##}
34 | {#Edytuj #}
35 | {# #}
36 |
37 | {# #}
38 | {#{% endfor %}#}
39 | {#
#}
40 |
41 | {% endblock %}
--------------------------------------------------------------------------------
/src/config-example.php:
--------------------------------------------------------------------------------
1 | [
5 | 'driver' => 'pdo_mysql',
6 | 'user' => '',
7 | 'password' => '',
8 | 'dbname' => ''
9 | ],
10 |
11 | 'twig' => [
12 | 'dir' => __DIR__,
13 | 'cache' => __DIR__ . '/../cache'
14 | ]
15 | ];
--------------------------------------------------------------------------------
/src/routes.php:
--------------------------------------------------------------------------------
1 | addGet('categories', '/api/categories/{page}', 3, array(
9 | 'page' => 0,
10 | '_controller' => 'Api\\Controller\\CategoriesController::indexAction'
11 | ));
12 |
13 | $router->addGet('category', '/api/category/{id}', 3, array(
14 | 'id' => 0,
15 | '_controller' => 'Api\\Controller\\CategoriesController::categoryAction'
16 | ));
17 |
18 | $router->addPut('categoryPut', '/api/category', 3, array(
19 | '_controller' => 'Api\\Controller\\CategoriesController::saveAction'
20 | ));
21 |
22 | $router->addPost('categoryPost', '/api/category', 3, array(
23 | '_controller' => 'Api\\Controller\\CategoriesController::saveAction'
24 | ));
25 |
26 | $router->addPost('authPost', '/api/auth', 3, array(
27 | '_controller' => 'Api\\Controller\\AuthController::authAction'
28 | ));
29 |
30 |
31 | return $router->getRouteCollection();
32 |
33 |
34 | return $routes;
35 |
36 | //GET /articles
37 | //GET /articles/2
38 | //PUT /articles
39 | //POST /articles
40 | //DELETE /articles/2
--------------------------------------------------------------------------------
/web/.htaccess:
--------------------------------------------------------------------------------
1 | RewriteEngine On
2 |
3 | RewriteCond %{REQUEST_FILENAME} !-d
4 | RewriteCond %{REQUEST_FILENAME} !-f
5 |
6 | RewriteRule ^(.*)$ /index.php/$1 [QSA,L]
7 | RewriteRule backoffice(.*)$ index.html [QSA,L]
8 |
--------------------------------------------------------------------------------
/web/app/app.component.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
13 |
14 |
15 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
--------------------------------------------------------------------------------
/web/app/app.component.js:
--------------------------------------------------------------------------------
1 | "use strict";
2 | var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3 | var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4 | if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5 | else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6 | return c > 3 && r && Object.defineProperty(target, key, r), r;
7 | };
8 | var __metadata = (this && this.__metadata) || function (k, v) {
9 | if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10 | };
11 | var core_1 = require('@angular/core');
12 | require('./rxjs-extensions');
13 | var AppComponent = (function () {
14 | function AppComponent() {
15 | }
16 | AppComponent = __decorate([
17 | core_1.Component({
18 | selector: 'my-app',
19 | templateUrl: 'app/app.component.html'
20 | }),
21 | __metadata('design:paramtypes', [])
22 | ], AppComponent);
23 | return AppComponent;
24 | }());
25 | exports.AppComponent = AppComponent;
26 | //# sourceMappingURL=app.component.js.map
--------------------------------------------------------------------------------
/web/app/app.component.js.map:
--------------------------------------------------------------------------------
1 | {"version":3,"file":"app.component.js","sourceRoot":"","sources":["app.component.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,qBAA0B,eAAe,CAAC,CAAA;AAE1C,QAAO,mBAAmB,CAAC,CAAA;AAM3B;IAAA;IACA,CAAC;IALD;QAAC,gBAAS,CAAC;YACP,QAAQ,EAAE,QAAQ;YAClB,WAAW,EAAE,wBAAwB;SACxC,CAAC;;oBAAA;IAEF,mBAAC;AAAD,CAAC,AADD,IACC;AADY,oBAAY,eACxB,CAAA"}
--------------------------------------------------------------------------------
/web/app/app.component.ts:
--------------------------------------------------------------------------------
1 | import { Component } from '@angular/core';
2 |
3 | import './rxjs-extensions';
4 |
5 | @Component({
6 | selector: 'my-app',
7 | templateUrl: 'app/app.component.html'
8 | })
9 | export class AppComponent {
10 | }
--------------------------------------------------------------------------------
/web/app/app.module.js:
--------------------------------------------------------------------------------
1 | "use strict";
2 | var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3 | var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4 | if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5 | else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6 | return c > 3 && r && Object.defineProperty(target, key, r), r;
7 | };
8 | var __metadata = (this && this.__metadata) || function (k, v) {
9 | if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10 | };
11 | var core_1 = require('@angular/core');
12 | var platform_browser_1 = require('@angular/platform-browser');
13 | var forms_1 = require('@angular/forms');
14 | var http_1 = require('@angular/http');
15 | var angular2_jwt_1 = require('angular2-jwt');
16 | var app_component_1 = require('./app.component');
17 | var app_routing_1 = require('./app.routing');
18 | var auth_guard_1 = require('./common/auth.guard');
19 | var auth_provider_1 = require('./common/auth.provider');
20 | //
21 | var categories_component_1 = require('./categories/categories.component');
22 | var category_edit_component_1 = require('./categories/category-edit.component');
23 | var login_component_1 = require('./login/login.component');
24 | var AppModule = (function () {
25 | function AppModule() {
26 | }
27 | AppModule = __decorate([
28 | core_1.NgModule({
29 | imports: [
30 | platform_browser_1.BrowserModule,
31 | forms_1.FormsModule,
32 | http_1.HttpModule,
33 | app_routing_1.routing
34 | ],
35 | declarations: [
36 | app_component_1.AppComponent,
37 | categories_component_1.CategoriesComponent,
38 | category_edit_component_1.CategoryEditComponent,
39 | login_component_1.LoginComponent
40 | ],
41 | providers: [
42 | auth_guard_1.AuthGuard,
43 | { provide: angular2_jwt_1.AuthHttp, useClass: auth_provider_1.AuthProvider }
44 | ],
45 | bootstrap: [app_component_1.AppComponent]
46 | }),
47 | __metadata('design:paramtypes', [])
48 | ], AppModule);
49 | return AppModule;
50 | }());
51 | exports.AppModule = AppModule;
52 | //# sourceMappingURL=app.module.js.map
--------------------------------------------------------------------------------
/web/app/app.module.js.map:
--------------------------------------------------------------------------------
1 | {"version":3,"file":"app.module.js","sourceRoot":"","sources":["app.module.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,qBAA+B,eAAe,CAAC,CAAA;AAC/C,iCAA+B,2BAA2B,CAAC,CAAA;AAC3D,sBAA+B,gBAAgB,CAAC,CAAA;AAChD,qBAA+B,eAAe,CAAC,CAAA;AAC/C,6BAA+B,cAAc,CAAC,CAAA;AAE9C,8BAA+B,iBAAiB,CAAC,CAAA;AACjD,4BAA+B,eAAe,CAAC,CAAA;AAC/C,2BAA+B,qBAAqB,CAAC,CAAA;AACrD,8BAA+B,wBAAwB,CAAC,CAAA;AACxD,EAAE;AACF,qCAAoC,mCAAmC,CAAC,CAAA;AACxE,wCAAsC,sCAAsC,CAAC,CAAA;AAC7E,gCAA+B,yBAAyB,CAAC,CAAA;AAsBzD;IAAA;IACA,CAAC;IApBD;QAAC,eAAQ,CAAC;YACN,OAAO,EAAE;gBACL,gCAAa;gBACb,mBAAW;gBACX,iBAAU;gBACV,qBAAO;aACV;YACD,YAAY,EAAE;gBACV,4BAAY;gBACZ,0CAAmB;gBACnB,+CAAqB;gBACrB,gCAAc;aACjB;YACD,SAAS,EAAE;gBACP,sBAAS;gBACT,EAAC,OAAO,EAAE,uBAAQ,EAAE,QAAQ,EAAG,4BAAY,EAAC;aAC/C;YACD,SAAS,EAAE,CAAE,4BAAY,CAAE;SAC9B,CAAC;;iBAAA;IAEF,gBAAC;AAAD,CAAC,AADD,IACC;AADY,iBAAS,YACrB,CAAA"}
--------------------------------------------------------------------------------
/web/app/app.module.ts:
--------------------------------------------------------------------------------
1 | import { NgModule } from '@angular/core';
2 | import { BrowserModule } from '@angular/platform-browser';
3 | import { FormsModule } from '@angular/forms';
4 | import { HttpModule } from '@angular/http';
5 | import { AuthHttp } from 'angular2-jwt';
6 |
7 | import { AppComponent } from './app.component';
8 | import { routing } from './app.routing';
9 | import { AuthGuard } from './common/auth.guard';
10 | import { AuthProvider } from './common/auth.provider';
11 | //
12 | import { CategoriesComponent } from './categories/categories.component';
13 | import { CategoryEditComponent } from './categories/category-edit.component';
14 | import { LoginComponent } from './login/login.component';
15 |
16 |
17 | @NgModule({
18 | imports: [
19 | BrowserModule,
20 | FormsModule,
21 | HttpModule,
22 | routing
23 | ],
24 | declarations: [
25 | AppComponent,
26 | CategoriesComponent,
27 | CategoryEditComponent,
28 | LoginComponent
29 | ],
30 | providers: [
31 | AuthGuard,
32 | {provide: AuthHttp, useClass : AuthProvider}
33 | ],
34 | bootstrap: [ AppComponent ]
35 | })
36 | export class AppModule {
37 | }
--------------------------------------------------------------------------------
/web/app/app.routing.js:
--------------------------------------------------------------------------------
1 | "use strict";
2 | var router_1 = require('@angular/router');
3 | ;
4 | var categories_component_1 = require('./categories/categories.component');
5 | var category_edit_component_1 = require('./categories/category-edit.component');
6 | var login_component_1 = require('./login/login.component');
7 | var auth_guard_1 = require('./common/auth.guard');
8 | var appRoutes = [
9 | {
10 | path: '',
11 | redirectTo: '/backoffice',
12 | pathMatch: 'full'
13 | },
14 | {
15 | path: 'backoffice/categories',
16 | component: categories_component_1.CategoriesComponent,
17 | canActivate: [auth_guard_1.AuthGuard]
18 | },
19 | {
20 | path: 'backoffice/category/:id',
21 | component: category_edit_component_1.CategoryEditComponent,
22 | canActivate: [auth_guard_1.AuthGuard]
23 | },
24 | {
25 | path: 'backoffice/login',
26 | component: login_component_1.LoginComponent
27 | }
28 | ];
29 | exports.routing = router_1.RouterModule.forRoot(appRoutes);
30 | //# sourceMappingURL=app.routing.js.map
--------------------------------------------------------------------------------
/web/app/app.routing.js.map:
--------------------------------------------------------------------------------
1 | {"version":3,"file":"app.routing.js","sourceRoot":"","sources":["app.routing.ts"],"names":[],"mappings":";AAAA,uBAAqC,iBAAiB,CAAC,CAAA;AAAA,CAAC;AACxD,qCAAoC,mCAAmC,CAAC,CAAA;AACxE,wCAAsC,sCAAsC,CAAC,CAAA;AAC7E,gCAA+B,yBAAyB,CAAC,CAAA;AACzD,2BAA+B,qBAAqB,CAAC,CAAA;AAErD,IAAM,SAAS,GAAW;IACtB;QACI,IAAI,EAAE,EAAE;QACR,UAAU,EAAE,aAAa;QACzB,SAAS,EAAE,MAAM;KAEpB;IACD;QACI,IAAI,EAAE,uBAAuB;QAC7B,SAAS,EAAE,0CAAmB;QAC9B,WAAW,EAAE,CAAC,sBAAS,CAAC;KAE3B;IACD;QACI,IAAI,EAAE,yBAAyB;QAC/B,SAAS,EAAE,+CAAqB;QAChC,WAAW,EAAE,CAAC,sBAAS,CAAC;KAC3B;IACD;QACI,IAAI,EAAE,kBAAkB;QACxB,SAAS,EAAE,gCAAc;KAC5B;CACJ,CAAC;AAEW,eAAO,GAAG,qBAAY,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC"}
--------------------------------------------------------------------------------
/web/app/app.routing.ts:
--------------------------------------------------------------------------------
1 | import { Routes, RouterModule } from '@angular/router';;
2 | import { CategoriesComponent } from './categories/categories.component';
3 | import { CategoryEditComponent } from './categories/category-edit.component';
4 | import { LoginComponent } from './login/login.component';
5 | import { AuthGuard } from './common/auth.guard';
6 |
7 | const appRoutes: Routes = [
8 | {
9 | path: '',
10 | redirectTo: '/backoffice',
11 | pathMatch: 'full'
12 |
13 | },
14 | {
15 | path: 'backoffice/categories',
16 | component: CategoriesComponent,
17 | canActivate: [AuthGuard]
18 |
19 | },
20 | {
21 | path: 'backoffice/category/:id',
22 | component: CategoryEditComponent,
23 | canActivate: [AuthGuard]
24 | },
25 | {
26 | path: 'backoffice/login',
27 | component: LoginComponent
28 | }
29 | ];
30 |
31 | export const routing = RouterModule.forRoot(appRoutes);
--------------------------------------------------------------------------------
/web/app/categories/categories.component.html:
--------------------------------------------------------------------------------
1 | Lista kategorii 0">{{currentPage}}
2 | Add
3 |
4 |
5 |
6 | ID
7 | Name
8 | Status
9 | Actions
10 |
11 |
12 |
13 | {{category.catId}}
14 | {{category.catName}}
15 | {{category.catStatus}}
16 | Edit
17 |
18 |
19 |
20 |
21 | 0">
22 |
23 |
24 |
--------------------------------------------------------------------------------
/web/app/categories/categories.component.js:
--------------------------------------------------------------------------------
1 | "use strict";
2 | var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3 | var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4 | if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5 | else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6 | return c > 3 && r && Object.defineProperty(target, key, r), r;
7 | };
8 | var __metadata = (this && this.__metadata) || function (k, v) {
9 | if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10 | };
11 | var core_1 = require('@angular/core');
12 | var router_1 = require('@angular/router');
13 | var categories_service_1 = require('./categories.service');
14 | var CategoriesComponent = (function () {
15 | function CategoriesComponent(router, categoriesService) {
16 | this.router = router;
17 | this.categoriesService = categoriesService;
18 | this.getCategories();
19 | }
20 | CategoriesComponent.prototype.getCategories = function () {
21 | var _this = this;
22 | this.categoriesService.getCategories(1)
23 | .subscribe(function (categories) {
24 | _this.categories = categories.data;
25 | _this.totalRecords = categories.totalRecords;
26 | }, function (error) { return console.log('onError: %s', error); });
27 | };
28 | CategoriesComponent.prototype.editCategory = function (category) {
29 | if (category) {
30 | this.router.navigate(['/backoffice/category/' + category.catId]);
31 | }
32 | else {
33 | this.router.navigate(['/backoffice/category/0']);
34 | }
35 | };
36 | CategoriesComponent = __decorate([
37 | core_1.Component({
38 | selector: 'my-app',
39 | templateUrl: 'app/categories/categories.component.html',
40 | providers: [categories_service_1.CategoriesService]
41 | }),
42 | __metadata('design:paramtypes', [router_1.Router, categories_service_1.CategoriesService])
43 | ], CategoriesComponent);
44 | return CategoriesComponent;
45 | }());
46 | exports.CategoriesComponent = CategoriesComponent;
47 | //# sourceMappingURL=categories.component.js.map
--------------------------------------------------------------------------------
/web/app/categories/categories.component.js.map:
--------------------------------------------------------------------------------
1 | {"version":3,"file":"categories.component.js","sourceRoot":"","sources":["categories.component.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,qBAA0B,eAAe,CAAC,CAAA;AAC1C,uBAAuB,iBAAiB,CAAC,CAAA;AAEzC,mCAAkC,sBAAsB,CAAC,CAAA;AASzD;IAKI,6BACY,MAAc,EACd,iBAAqC;QADrC,WAAM,GAAN,MAAM,CAAQ;QACd,sBAAiB,GAAjB,iBAAiB,CAAoB;QAE7C,IAAI,CAAC,aAAa,EAAE,CAAC;IAEzB,CAAC;IAED,2CAAa,GAAb;QAAA,iBASC;QARG,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,CAAC,CAAC;aAClC,SAAS,CACN,UAAA,UAAU;YACN,KAAI,CAAC,UAAU,GAAG,UAAU,CAAC,IAAI,CAAC;YAClC,KAAI,CAAC,YAAY,GAAG,UAAU,CAAC,YAAY,CAAA;QAC/C,CAAC,EACD,UAAA,KAAK,IAAI,OAAA,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,KAAK,CAAC,EAAjC,CAAiC,CAC7C,CAAC;IACV,CAAC;IAED,0CAAY,GAAZ,UAAa,QAAmB;QAC5B,EAAE,CAAA,CAAC,QAAQ,CAAC,CAAC,CAAC;YACV,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,uBAAuB,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;QACrE,CAAC;QAAC,IAAI,CAAC,CAAC;YACJ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC;QACrD,CAAC;IACL,CAAC;IApCL;QAAC,gBAAS,CAAC;YACP,QAAQ,EAAE,QAAQ;YAClB,WAAW,EAAE,0CAA0C;YACvD,SAAS,EAAE,CAAC,sCAAiB,CAAC;SACjC,CAAC;;2BAAA;IAiCF,0BAAC;AAAD,CAAC,AA/BD,IA+BC;AA/BY,2BAAmB,sBA+B/B,CAAA"}
--------------------------------------------------------------------------------
/web/app/categories/categories.component.ts:
--------------------------------------------------------------------------------
1 | import { Component } from '@angular/core';
2 | import { Router } from '@angular/router';
3 | import { Category } from './category';
4 | import { CategoriesService } from './categories.service';
5 |
6 |
7 | @Component({
8 | selector: 'my-app',
9 | templateUrl: 'app/categories/categories.component.html',
10 | providers: [CategoriesService]
11 | })
12 |
13 | export class CategoriesComponent {
14 |
15 | categories: Array;
16 | totalRecords: Number;
17 |
18 | constructor(
19 | private router: Router,
20 | private categoriesService : CategoriesService) {
21 |
22 | this.getCategories();
23 |
24 | }
25 |
26 | getCategories() {
27 | this.categoriesService.getCategories(1)
28 | .subscribe(
29 | categories => {
30 | this.categories = categories.data;
31 | this.totalRecords = categories.totalRecords
32 | },
33 | error => console.log('onError: %s', error)
34 | );
35 | }
36 |
37 | editCategory(category?: Category) {
38 | if(category) {
39 | this.router.navigate(['/backoffice/category/' + category.catId]);
40 | } else {
41 | this.router.navigate(['/backoffice/category/0']);
42 | }
43 | }
44 | }
45 |
--------------------------------------------------------------------------------
/web/app/categories/categories.service.js:
--------------------------------------------------------------------------------
1 | "use strict";
2 | var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3 | var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4 | if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5 | else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6 | return c > 3 && r && Object.defineProperty(target, key, r), r;
7 | };
8 | var __metadata = (this && this.__metadata) || function (k, v) {
9 | if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10 | };
11 | var core_1 = require('@angular/core');
12 | var http_1 = require('@angular/http');
13 | var angular2_jwt_1 = require('angular2-jwt');
14 | var CategoriesService = (function () {
15 | function CategoriesService(authHttp) {
16 | this.authHttp = authHttp;
17 | }
18 | CategoriesService.prototype.getCategories = function (page) {
19 | return this.authHttp.get('/api/categories/' + page)
20 | .map(function (res) { return res.json(); });
21 | };
22 | CategoriesService.prototype.getCategory = function (catId) {
23 | return this.authHttp.get('/api/category/' + catId)
24 | .map(function (res) { return res.json(); });
25 | };
26 | CategoriesService.prototype.saveCategory = function (category) {
27 | var headers = new http_1.Headers();
28 | headers.append('Content-Type', 'application/json');
29 | if (category.catId > 0) {
30 | return this.authHttp.put('/api/category', JSON.stringify(category), { headers: headers })
31 | .map(function (res) { return res.json(); });
32 | }
33 | else {
34 | return this.authHttp.post('/api/category', JSON.stringify(category), { headers: headers })
35 | .map(function (res) { return res.json(); });
36 | }
37 | };
38 | CategoriesService = __decorate([
39 | core_1.Injectable(),
40 | __metadata('design:paramtypes', [angular2_jwt_1.AuthHttp])
41 | ], CategoriesService);
42 | return CategoriesService;
43 | }());
44 | exports.CategoriesService = CategoriesService;
45 | //# sourceMappingURL=categories.service.js.map
--------------------------------------------------------------------------------
/web/app/categories/categories.service.js.map:
--------------------------------------------------------------------------------
1 | {"version":3,"file":"categories.service.js","sourceRoot":"","sources":["categories.service.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,qBAA2B,eAAe,CAAC,CAAA;AAC3C,qBAAkC,eAAe,CAAC,CAAA;AAClD,6BAAyB,cAAc,CAAC,CAAA;AAKxC;IAEI,2BACY,QAAkB;QAAlB,aAAQ,GAAR,QAAQ,CAAU;IAC9B,CAAC;IAED,yCAAa,GAAb,UAAc,IAAY;QACtB,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,kBAAkB,GAAG,IAAI,CAAC;aAC7C,GAAG,CAAC,UAAC,GAAa,IAAK,OAAA,GAAG,CAAC,IAAI,EAAE,EAAV,CAAU,CAAC,CAAC;IAE7C,CAAC;IAED,uCAAW,GAAX,UAAY,KAAa;QACrB,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,gBAAgB,GAAG,KAAK,CAAC;aAC7C,GAAG,CAAC,UAAC,GAAa,IAAK,OAAA,GAAG,CAAC,IAAI,EAAE,EAAV,CAAU,CAAC,CAAC;IAC5C,CAAC;IAED,wCAAY,GAAZ,UAAa,QAAkB;QAC3B,IAAI,OAAO,GAAG,IAAI,cAAO,EAAE,CAAC;QAC5B,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE,kBAAkB,CAAC,CAAC;QAEnD,EAAE,CAAA,CAAC,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;YACpB,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,eAAe,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,EAAC,OAAO,EAAE,OAAO,EAAC,CAAC;iBAClF,GAAG,CAAC,UAAC,GAAY,IAAK,OAAA,GAAG,CAAC,IAAI,EAAE,EAAV,CAAU,CAAC,CAAC;QAC3C,CAAC;QAAC,IAAI,CAAC,CAAC;YACJ,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,EAAC,OAAO,EAAE,OAAO,EAAC,CAAC;iBACnF,GAAG,CAAC,UAAC,GAAY,IAAK,OAAA,GAAG,CAAC,IAAI,EAAE,EAAV,CAAU,CAAC,CAAC;QAC3C,CAAC;IACL,CAAC;IA7BL;QAAC,iBAAU,EAAE;;yBAAA;IA8Bb,wBAAC;AAAD,CAAC,AA7BD,IA6BC;AA7BY,yBAAiB,oBA6B7B,CAAA"}
--------------------------------------------------------------------------------
/web/app/categories/categories.service.ts:
--------------------------------------------------------------------------------
1 | import { Injectable } from '@angular/core';
2 | import { Response, Headers } from '@angular/http';
3 | import { AuthHttp } from 'angular2-jwt';
4 | import {Category} from "./category";
5 |
6 |
7 | @Injectable()
8 | export class CategoriesService
9 | {
10 | constructor(
11 | private authHttp: AuthHttp) {
12 | }
13 |
14 | getCategories(page: Number) {
15 | return this.authHttp.get('/api/categories/' + page)
16 | .map((res: Response) => res.json());
17 |
18 | }
19 |
20 | getCategory(catId: Number) {
21 | return this.authHttp.get('/api/category/' + catId)
22 | .map((res: Response) => res.json());
23 | }
24 |
25 | saveCategory(category: Category) {
26 | let headers = new Headers();
27 | headers.append('Content-Type', 'application/json');
28 |
29 | if(category.catId > 0) {
30 | return this.authHttp.put('/api/category', JSON.stringify(category), {headers: headers})
31 | .map((res:Response) => res.json());
32 | } else {
33 | return this.authHttp.post('/api/category', JSON.stringify(category), {headers: headers})
34 | .map((res:Response) => res.json());
35 | }
36 | }
37 | }
--------------------------------------------------------------------------------
/web/app/categories/category-edit.component.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Dodawanie
5 | Edycja
6 |
7 |
8 | kategorii {{category.catName}} #{{category.catStatus}}
9 |
10 |
11 |
12 | Category name
13 |
14 |
15 |
16 |
17 |
18 | Category status
19 |
20 | {{status.label}}
21 |
22 |
23 |
24 |
Save
25 |
26 |
--------------------------------------------------------------------------------
/web/app/categories/category-edit.component.js:
--------------------------------------------------------------------------------
1 | "use strict";
2 | var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3 | var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4 | if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5 | else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6 | return c > 3 && r && Object.defineProperty(target, key, r), r;
7 | };
8 | var __metadata = (this && this.__metadata) || function (k, v) {
9 | if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10 | };
11 | var core_1 = require('@angular/core');
12 | var router_1 = require('@angular/router');
13 | var categories_service_1 = require('./categories.service');
14 | var CategoryEditComponent = (function () {
15 | function CategoryEditComponent(router, route, categoriesService) {
16 | this.router = router;
17 | this.route = route;
18 | this.categoriesService = categoriesService;
19 | this.category = {
20 | catId: 0,
21 | catName: '',
22 | catSlug: '',
23 | catStatus: 0
24 | };
25 | this.statusList = [
26 | { label: 'Ukryty', value: 0 },
27 | { label: 'Widoczny', value: 1 }
28 | ];
29 | }
30 | CategoryEditComponent.prototype.ngOnInit = function () {
31 | var _this = this;
32 | this.sub = this.route.params.subscribe(function (params) {
33 | var id = +params['id'];
34 | if (id) {
35 | _this.categoriesService.getCategory(id)
36 | .subscribe(function (category) {
37 | _this.category = category;
38 | }, function (error) { return console.log('onError: %s', error); });
39 | }
40 | });
41 | };
42 | CategoryEditComponent.prototype.saveCategory = function () {
43 | var _this = this;
44 | this.categoriesService.saveCategory(this.category)
45 | .subscribe(function (res) {
46 | _this.router.navigate(['/backoffice/categories']);
47 | }, function (error) { return console.log('onError: %s', error); });
48 | };
49 | CategoryEditComponent = __decorate([
50 | core_1.Component({
51 | selector: 'my-app',
52 | templateUrl: 'app/categories/category-edit.component.html',
53 | providers: [categories_service_1.CategoriesService]
54 | }),
55 | __metadata('design:paramtypes', [router_1.Router, router_1.ActivatedRoute, categories_service_1.CategoriesService])
56 | ], CategoryEditComponent);
57 | return CategoryEditComponent;
58 | }());
59 | exports.CategoryEditComponent = CategoryEditComponent;
60 | //# sourceMappingURL=category-edit.component.js.map
--------------------------------------------------------------------------------
/web/app/categories/category-edit.component.js.map:
--------------------------------------------------------------------------------
1 | {"version":3,"file":"category-edit.component.js","sourceRoot":"","sources":["category-edit.component.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,qBAAkC,eAAe,CAAC,CAAA;AAClD,uBAAuC,iBAAiB,CAAC,CAAA;AAEzD,mCAAkC,sBAAsB,CAAC,CAAA;AAUzD;IAMI,+BAAoB,MAAc,EACd,KAAqB,EACrB,iBAAoC;QAFpC,WAAM,GAAN,MAAM,CAAQ;QACd,UAAK,GAAL,KAAK,CAAgB;QACrB,sBAAiB,GAAjB,iBAAiB,CAAmB;QAEpD,IAAI,CAAC,QAAQ,GAAG;YACZ,KAAK,EAAE,CAAC;YACR,OAAO,EAAE,EAAE;YACX,OAAO,EAAE,EAAE;YACX,SAAS,EAAE,CAAC;SACf,CAAC;QAEF,IAAI,CAAC,UAAU,GAAG;YACd,EAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAC;YAC3B,EAAC,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,EAAC;SAChC,CAAC;IACN,CAAC;IAED,wCAAQ,GAAR;QAAA,iBAcC;QAbG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,UAAA,MAAM;YACzC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAEvB,EAAE,CAAA,CAAC,EAAE,CAAC,CAAC,CAAC;gBACJ,KAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,EAAE,CAAC;qBACjC,SAAS,CACN,UAAA,QAAQ;oBACJ,KAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;gBAC7B,CAAC,EACD,UAAA,KAAK,IAAI,OAAA,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,KAAK,CAAC,EAAjC,CAAiC,CAC7C,CAAC;YACV,CAAC;QACL,CAAC,CAAC,CAAC;IACP,CAAC;IAED,4CAAY,GAAZ;QAAA,iBAQC;QAPG,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC;aAC7C,SAAS,CACN,UAAA,GAAG;YACC,KAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAA;QACpD,CAAC,EACD,UAAA,KAAK,IAAI,OAAA,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,KAAK,CAAC,EAAjC,CAAiC,CAC7C,CAAC;IACV,CAAC;IArDL;QAAC,gBAAS,CAAC;YACP,QAAQ,EAAE,QAAQ;YAClB,WAAW,EAAE,6CAA6C;YAC1D,SAAS,EAAE,CAAC,sCAAiB,CAAC;SACjC,CAAC;;6BAAA;IAkDF,4BAAC;AAAD,CAAC,AAhDD,IAgDC;AAhDY,6BAAqB,wBAgDjC,CAAA"}
--------------------------------------------------------------------------------
/web/app/categories/category-edit.component.ts:
--------------------------------------------------------------------------------
1 | import { Component, OnInit } from '@angular/core';
2 | import { Router, ActivatedRoute } from '@angular/router';
3 | import { Category } from './category';
4 | import { CategoriesService } from './categories.service';
5 |
6 |
7 |
8 | @Component({
9 | selector: 'my-app',
10 | templateUrl: 'app/categories/category-edit.component.html',
11 | providers: [CategoriesService]
12 | })
13 |
14 | export class CategoryEditComponent implements OnInit{
15 |
16 | category: Category;
17 | statusList: Array;
18 | sub;
19 |
20 | constructor(private router: Router,
21 | private route: ActivatedRoute,
22 | private categoriesService: CategoriesService) {
23 |
24 | this.category = {
25 | catId: 0,
26 | catName: '',
27 | catSlug: '',
28 | catStatus: 0
29 | };
30 |
31 | this.statusList = [
32 | {label: 'Ukryty', value: 0},
33 | {label: 'Widoczny', value: 1}
34 | ];
35 | }
36 |
37 | ngOnInit() {
38 | this.sub = this.route.params.subscribe(params => {
39 | let id = +params['id'];
40 |
41 | if(id) {
42 | this.categoriesService.getCategory(id)
43 | .subscribe(
44 | category => {
45 | this.category = category;
46 | },
47 | error => console.log('onError: %s', error)
48 | );
49 | }
50 | });
51 | }
52 |
53 | saveCategory() {
54 | this.categoriesService.saveCategory(this.category)
55 | .subscribe(
56 | res => {
57 | this.router.navigate(['/backoffice/categories'])
58 | },
59 | error => console.log('onError: %s', error)
60 | );
61 | }
62 | }
63 |
--------------------------------------------------------------------------------
/web/app/categories/category.js:
--------------------------------------------------------------------------------
1 | "use strict";
2 | //# sourceMappingURL=category.js.map
--------------------------------------------------------------------------------
/web/app/categories/category.js.map:
--------------------------------------------------------------------------------
1 | {"version":3,"file":"category.js","sourceRoot":"","sources":["category.ts"],"names":[],"mappings":""}
--------------------------------------------------------------------------------
/web/app/categories/category.ts:
--------------------------------------------------------------------------------
1 | export interface Category {
2 | catId: number;
3 | catName: string;
4 | catSlug: string;
5 | catStatus: number;
6 | }
--------------------------------------------------------------------------------
/web/app/common/auth.guard.js:
--------------------------------------------------------------------------------
1 | "use strict";
2 | var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3 | var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4 | if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5 | else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6 | return c > 3 && r && Object.defineProperty(target, key, r), r;
7 | };
8 | var __metadata = (this && this.__metadata) || function (k, v) {
9 | if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10 | };
11 | var core_1 = require('@angular/core');
12 | var router_1 = require('@angular/router');
13 | var angular2_jwt_1 = require('angular2-jwt');
14 | var AuthGuard = (function () {
15 | function AuthGuard(router) {
16 | this.router = router;
17 | }
18 | AuthGuard.prototype.canActivate = function () {
19 | if (angular2_jwt_1.tokenNotExpired()) {
20 | return true;
21 | }
22 | this.router.navigate(['backoffice/login']);
23 | };
24 | AuthGuard = __decorate([
25 | core_1.Injectable(),
26 | __metadata('design:paramtypes', [router_1.Router])
27 | ], AuthGuard);
28 | return AuthGuard;
29 | }());
30 | exports.AuthGuard = AuthGuard;
31 | //# sourceMappingURL=auth.guard.js.map
--------------------------------------------------------------------------------
/web/app/common/auth.guard.js.map:
--------------------------------------------------------------------------------
1 | {"version":3,"file":"auth.guard.js","sourceRoot":"","sources":["auth.guard.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,qBAA2B,eAAe,CAAC,CAAA;AAC3C,uBAAoC,iBAAiB,CAAC,CAAA;AACtD,6BAA2C,cAAc,CAAC,CAAA;AAI1D;IACI,mBACY,MAAc;QAAd,WAAM,GAAN,MAAM,CAAQ;IAG1B,CAAC;IAED,+BAAW,GAAX;QACI,EAAE,CAAC,CAAC,8BAAe,EAAE,CAAC,CAAC,CAAC;YACpB,MAAM,CAAC,IAAI,CAAC;QAChB,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC;IAC/C,CAAC;IAdL;QAAC,iBAAU,EAAE;;iBAAA;IAeb,gBAAC;AAAD,CAAC,AAdD,IAcC;AAdY,iBAAS,YAcrB,CAAA"}
--------------------------------------------------------------------------------
/web/app/common/auth.guard.ts:
--------------------------------------------------------------------------------
1 | import { Injectable } from '@angular/core';
2 | import { Router, CanActivate } from '@angular/router';
3 | import { tokenNotExpired, JwtHelper } from 'angular2-jwt';
4 |
5 |
6 | @Injectable()
7 | export class AuthGuard implements CanActivate {
8 | constructor(
9 | private router: Router
10 | ) {
11 |
12 | }
13 |
14 | canActivate() {
15 | if (tokenNotExpired()) {
16 | return true;
17 | }
18 |
19 | this.router.navigate(['backoffice/login']);
20 | }
21 | }
--------------------------------------------------------------------------------
/web/app/common/auth.provider.js:
--------------------------------------------------------------------------------
1 | "use strict";
2 | var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3 | var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4 | if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5 | else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6 | return c > 3 && r && Object.defineProperty(target, key, r), r;
7 | };
8 | var __metadata = (this && this.__metadata) || function (k, v) {
9 | if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10 | };
11 | var core_1 = require('@angular/core');
12 | var http_1 = require('@angular/http');
13 | var angular2_jwt_1 = require('angular2-jwt');
14 | var AuthProvider = (function () {
15 | function AuthProvider(http) {
16 | return new angular2_jwt_1.AuthHttp(new angular2_jwt_1.AuthConfig({
17 | headerName: 'token',
18 | headerPrefix: '',
19 | tokenName: 'id_token',
20 | tokenGetter: (function () { return localStorage.getItem('id_token'); }),
21 | globalHeaders: [{ 'Content-Type': 'application/json' }],
22 | noJwtError: true,
23 | noTokenScheme: true
24 | }), http);
25 | }
26 | AuthProvider = __decorate([
27 | core_1.Component({
28 | providers: [
29 | angular2_jwt_1.AuthHttp, angular2_jwt_1.AuthConfig
30 | ]
31 | }),
32 | __metadata('design:paramtypes', [http_1.Http])
33 | ], AuthProvider);
34 | return AuthProvider;
35 | }());
36 | exports.AuthProvider = AuthProvider;
37 | //# sourceMappingURL=auth.provider.js.map
--------------------------------------------------------------------------------
/web/app/common/auth.provider.js.map:
--------------------------------------------------------------------------------
1 | {"version":3,"file":"auth.provider.js","sourceRoot":"","sources":["auth.provider.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,qBAA0B,eAAe,CAAC,CAAA;AAC1C,qBAAyB,eAAe,CAAC,CAAA;AACzC,6BAAqC,cAAc,CAAC,CAAA;AASpD;IAEI,sBACI,IAAU;QAGV,MAAM,CAAC,IAAI,uBAAQ,CAAC,IAAI,yBAAU,CAAC;YAC/B,UAAU,EAAE,OAAO;YACnB,YAAY,EAAE,EAAE;YAChB,SAAS,EAAE,UAAU;YACrB,WAAW,EAAE,CAAC,cAAM,OAAA,YAAY,CAAC,OAAO,CAAC,UAAU,CAAC,EAAhC,CAAgC,CAAC;YACrD,aAAa,EAAE,CAAC,EAAC,cAAc,EAAC,kBAAkB,EAAC,CAAC;YACpD,UAAU,EAAE,IAAI;YAChB,aAAa,EAAE,IAAI;SACtB,CAAC,EAAE,IAAI,CAAC,CAAC;IAEd,CAAC;IAtBL;QAAC,gBAAS,CAAC;YACP,SAAS,EAAG;gBACR,uBAAQ,EAAE,yBAAU;aACvB;SACJ,CAAC;;oBAAA;IAmBF,mBAAC;AAAD,CAAC,AAjBD,IAiBC;AAjBY,oBAAY,eAiBxB,CAAA"}
--------------------------------------------------------------------------------
/web/app/common/auth.provider.ts:
--------------------------------------------------------------------------------
1 | import { Component } from '@angular/core';
2 | import { Http } from '@angular/http';
3 | import { AuthHttp, AuthConfig } from 'angular2-jwt';
4 |
5 |
6 | @Component({
7 | providers : [
8 | AuthHttp, AuthConfig
9 | ]
10 | })
11 |
12 | export class AuthProvider {
13 |
14 | constructor(
15 | http: Http
16 | ) {
17 |
18 | return new AuthHttp(new AuthConfig({
19 | headerName: 'token',
20 | headerPrefix: '',
21 | tokenName: 'id_token',
22 | tokenGetter: (() => localStorage.getItem('id_token')),
23 | globalHeaders: [{'Content-Type':'application/json'}],
24 | noJwtError: true,
25 | noTokenScheme: true
26 | }), http);
27 |
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/web/app/login/login.component.html:
--------------------------------------------------------------------------------
1 |
2 |
Login
3 |
4 | Email
5 |
7 |
8 |
9 | Password
10 |
12 |
13 |
Submit
14 |
--------------------------------------------------------------------------------
/web/app/login/login.component.js:
--------------------------------------------------------------------------------
1 | "use strict";
2 | var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3 | var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4 | if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5 | else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6 | return c > 3 && r && Object.defineProperty(target, key, r), r;
7 | };
8 | var __metadata = (this && this.__metadata) || function (k, v) {
9 | if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10 | };
11 | var core_1 = require('@angular/core');
12 | var router_1 = require('@angular/router');
13 | var login_service_1 = require('./login.service');
14 | var LoginComponent = (function () {
15 | function LoginComponent(loginService, router) {
16 | this.loginService = loginService;
17 | this.router = router;
18 | this.loginForm = {
19 | useremail: '',
20 | password: ''
21 | };
22 | }
23 | LoginComponent.prototype.login = function () {
24 | var _this = this;
25 | this.loginService.auth(this.loginForm)
26 | .subscribe(function (res) {
27 | if (res.status == 0) {
28 | localStorage.setItem('id_token', res.token);
29 | _this.router.navigate(['/backoffice/categories']);
30 | }
31 | }, function (error) { return console.error(error); });
32 | event.preventDefault();
33 | };
34 | LoginComponent = __decorate([
35 | core_1.Component({
36 | selector: 'my-app',
37 | templateUrl: 'app/login/login.component.html',
38 | providers: [login_service_1.LoginService]
39 | }),
40 | __metadata('design:paramtypes', [login_service_1.LoginService, router_1.Router])
41 | ], LoginComponent);
42 | return LoginComponent;
43 | }());
44 | exports.LoginComponent = LoginComponent;
45 | //# sourceMappingURL=login.component.js.map
--------------------------------------------------------------------------------
/web/app/login/login.component.js.map:
--------------------------------------------------------------------------------
1 | {"version":3,"file":"login.component.js","sourceRoot":"","sources":["login.component.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,qBAAkC,eAAe,CAAC,CAAA;AAClD,uBAAuB,iBAAiB,CAAC,CAAA;AAEzC,8BAA6B,iBAAiB,CAAC,CAAA;AAS/C;IAII,wBACY,YAA0B,EAC1B,MAAc;QADd,iBAAY,GAAZ,YAAY,CAAc;QAC1B,WAAM,GAAN,MAAM,CAAQ;QAGtB,IAAI,CAAC,SAAS,GAAG;YACb,SAAS,EAAE,EAAE;YACb,QAAQ,EAAE,EAAE;SACf,CAAC;IACN,CAAC;IAGD,8BAAK,GAAL;QAAA,iBAcC;QAZG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;aACjC,SAAS,CACV,UAAA,GAAG;YACC,EAAE,CAAA,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC;gBACjB,YAAY,CAAC,OAAO,CAAC,UAAU,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;gBAC5C,KAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC;YACrD,CAAC;QACL,CAAC,EACD,UAAA,KAAK,IAAI,OAAA,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,EAApB,CAAoB,CAChC,CAAC;QAEF,KAAK,CAAC,cAAc,EAAE,CAAC;IAC3B,CAAC;IApCL;QAAC,gBAAS,CAAC;YACP,QAAQ,EAAE,QAAQ;YAClB,WAAW,EAAE,gCAAgC;YAC7C,SAAS,EAAE,CAAC,4BAAY,CAAC;SAC5B,CAAC;;sBAAA;IAkCF,qBAAC;AAAD,CAAC,AAhCD,IAgCC;AAhCY,sBAAc,iBAgC1B,CAAA"}
--------------------------------------------------------------------------------
/web/app/login/login.component.ts:
--------------------------------------------------------------------------------
1 | import { Component, OnInit } from '@angular/core';
2 | import { Router } from '@angular/router';
3 |
4 | import { LoginService } from './login.service';
5 |
6 |
7 | @Component({
8 | selector: 'my-app',
9 | templateUrl: 'app/login/login.component.html',
10 | providers: [LoginService]
11 | })
12 |
13 | export class LoginComponent {
14 |
15 | loginForm;
16 |
17 | constructor(
18 | private loginService: LoginService,
19 | private router: Router
20 | ) {
21 |
22 | this.loginForm = {
23 | useremail: '',
24 | password: ''
25 | };
26 | }
27 |
28 |
29 | login() {
30 |
31 | this.loginService.auth(this.loginForm)
32 | .subscribe(
33 | res => {
34 | if(res.status == 0) {
35 | localStorage.setItem('id_token', res.token);
36 | this.router.navigate(['/backoffice/categories']);
37 | }
38 | },
39 | error => console.error(error)
40 | );
41 |
42 | event.preventDefault();
43 | }
44 |
45 | }
--------------------------------------------------------------------------------
/web/app/login/login.service.js:
--------------------------------------------------------------------------------
1 | "use strict";
2 | var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3 | var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4 | if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5 | else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6 | return c > 3 && r && Object.defineProperty(target, key, r), r;
7 | };
8 | var __metadata = (this && this.__metadata) || function (k, v) {
9 | if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10 | };
11 | var core_1 = require('@angular/core');
12 | var http_1 = require('@angular/http');
13 | var LoginService = (function () {
14 | function LoginService(http) {
15 | this.http = http;
16 | }
17 | LoginService.prototype.auth = function (loginData) {
18 | var headers = new http_1.Headers();
19 | headers.append('Content-Type', 'application/x-www-form-urlencoded');
20 | return this.http.post('/api/auth', JSON.stringify(loginData), headers).map(function (res) { return res.json(); });
21 | };
22 | LoginService = __decorate([
23 | core_1.Injectable(),
24 | __metadata('design:paramtypes', [http_1.Http])
25 | ], LoginService);
26 | return LoginService;
27 | }());
28 | exports.LoginService = LoginService;
29 | //# sourceMappingURL=login.service.js.map
--------------------------------------------------------------------------------
/web/app/login/login.service.js.map:
--------------------------------------------------------------------------------
1 | {"version":3,"file":"login.service.js","sourceRoot":"","sources":["login.service.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,qBAA2B,eAAe,CAAC,CAAA;AAC3C,qBAAsC,eAAe,CAAC,CAAA;AAGtD;IAEI,sBACY,IAAU;QAAV,SAAI,GAAJ,IAAI,CAAM;IACtB,CAAC;IAED,2BAAI,GAAJ,UAAK,SAAiB;QAElB,IAAI,OAAO,GAAG,IAAI,cAAO,EAAE,CAAC;QAC5B,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE,mCAAmC,CAAC,CAAC;QAEpE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,EACxD,OAAO,CACV,CAAC,GAAG,CAAC,UAAC,GAAa,IAAK,OAAA,GAAG,CAAC,IAAI,EAAE,EAAV,CAAU,CAAC,CAAC;IACzC,CAAC;IAfL;QAAC,iBAAU,EAAE;;oBAAA;IAgBb,mBAAC;AAAD,CAAC,AAfD,IAeC;AAfY,oBAAY,eAexB,CAAA"}
--------------------------------------------------------------------------------
/web/app/login/login.service.ts:
--------------------------------------------------------------------------------
1 | import { Injectable } from '@angular/core';
2 | import {Http, Response, Headers} from '@angular/http';
3 |
4 | @Injectable()
5 | export class LoginService
6 | {
7 | constructor(
8 | private http: Http) {
9 | }
10 |
11 | auth(loginData: Object) {
12 |
13 | var headers = new Headers();
14 | headers.append('Content-Type', 'application/x-www-form-urlencoded');
15 |
16 | return this.http.post('/api/auth', JSON.stringify(loginData),
17 | headers
18 | ).map((res: Response) => res.json());
19 | }
20 | }
--------------------------------------------------------------------------------
/web/app/main.js:
--------------------------------------------------------------------------------
1 | "use strict";
2 | var platform_browser_dynamic_1 = require('@angular/platform-browser-dynamic');
3 | var app_module_1 = require('./app.module');
4 | var platform = platform_browser_dynamic_1.platformBrowserDynamic();
5 | platform.bootstrapModule(app_module_1.AppModule);
6 | //# sourceMappingURL=main.js.map
--------------------------------------------------------------------------------
/web/app/main.js.map:
--------------------------------------------------------------------------------
1 | {"version":3,"file":"main.js","sourceRoot":"","sources":["main.ts"],"names":[],"mappings":";AAAA,yCAAuC,mCAAmC,CAAC,CAAA;AAC3E,2BAA0B,cAAc,CAAC,CAAA;AAEzC,IAAM,QAAQ,GAAG,iDAAsB,EAAE,CAAC;AAC1C,QAAQ,CAAC,eAAe,CAAC,sBAAS,CAAC,CAAC"}
--------------------------------------------------------------------------------
/web/app/main.ts:
--------------------------------------------------------------------------------
1 | import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
2 | import { AppModule } from './app.module';
3 |
4 | const platform = platformBrowserDynamic();
5 | platform.bootstrapModule(AppModule);
--------------------------------------------------------------------------------
/web/app/resources/css/admin.css:
--------------------------------------------------------------------------------
1 | .pointer {
2 | cursor: pointer;
3 | }
--------------------------------------------------------------------------------
/web/app/resources/data/cars-medium.json:
--------------------------------------------------------------------------------
1 | {
2 | "data":[
3 | {"vin":"a1653d4d","brand":"VW","year":1998,"color":"White"},
4 | {"vin":"ddeb9b10","brand":"Mercedes","year":1985,"color":"Green"},
5 | {"vin":"d8ebe413","brand":"Jaguar","year":1979,"color":"Silver"},
6 | {"vin":"aab227b7","brand":"Audi","year":1970,"color":"Black"},
7 | {"vin":"631f7412","brand":"Volvo","year":1992,"color":"Red"},
8 | {"vin":"7d2d22b0","brand":"VW","year":1993,"color":"Maroon"},
9 | {"vin":"50e900ca","brand":"Fiat","year":1964,"color":"Blue"},
10 | {"vin":"4bbcd603","brand":"Renault","year":1983,"color":"Maroon"},
11 | {"vin":"70214c7e","brand":"Renault","year":1961,"color":"Black"},
12 | {"vin":"ec229a92","brand":"Audi","year":1984,"color":"Brown"},
13 | {"vin":"1083ee40","brand":"VW","year":1984,"color":"Silver"},
14 | {"vin":"6e0da3ab","brand":"Volvo","year":1987,"color":"Silver"},
15 | {"vin":"5aee636b","brand":"Jaguar","year":1995,"color":"Maroon"},
16 | {"vin":"7cc43997","brand":"Jaguar","year":1984,"color":"Orange"},
17 | {"vin":"88ec9f66","brand":"Honda","year":1989,"color":"Maroon"},
18 | {"vin":"f5a4a5f5","brand":"BMW","year":1986,"color":"Blue"},
19 | {"vin":"15b9a5c9","brand":"Mercedes","year":1986,"color":"Orange"},
20 | {"vin":"f7e18d01","brand":"Mercedes","year":1991,"color":"White"},
21 | {"vin":"cec593d7","brand":"VW","year":1992,"color":"Blue"},
22 | {"vin":"d5bac4f0","brand":"Renault","year":2001,"color":"Blue"},
23 | {"vin":"56b527c8","brand":"Jaguar","year":1990,"color":"Yellow"},
24 | {"vin":"1ac011ff","brand":"Audi","year":1966,"color":"Maroon"},
25 | {"vin":"fc074185","brand":"BMW","year":1962,"color":"Blue"},
26 | {"vin":"606ba663","brand":"Honda","year":1982,"color":"Blue"},
27 | {"vin":"d05060b8","brand":"Mercedes","year":2003,"color":"Silver"},
28 | {"vin":"46e4bbe8","brand":"Mercedes","year":1986,"color":"White"},
29 | {"vin":"c29da0d7","brand":"BMW","year":1983,"color":"Brown"},
30 | {"vin":"24622f70","brand":"VW","year":1973,"color":"Maroon"},
31 | {"vin":"7f573d2c","brand":"Mercedes","year":1991,"color":"Red"},
32 | {"vin":"b69e6f5c","brand":"Jaguar","year":1993,"color":"Yellow"},
33 | {"vin":"ead9bf1d","brand":"Fiat","year":1968,"color":"Maroon"},
34 | {"vin":"bc58113e","brand":"Renault","year":1981,"color":"Silver"},
35 | {"vin":"2989d5b1","brand":"Honda","year":2006,"color":"Blue"},
36 | {"vin":"c243e3a0","brand":"Fiat","year":1990,"color":"Maroon"},
37 | {"vin":"e3d3ebf3","brand":"Audi","year":1996,"color":"White"},
38 | {"vin":"45337e7a","brand":"Mercedes","year":1982,"color":"Blue"},
39 | {"vin":"36e9cf7e","brand":"Fiat","year":2000,"color":"Orange"},
40 | {"vin":"036bf135","brand":"Mercedes","year":1973,"color":"Black"},
41 | {"vin":"ad612e9f","brand":"Mercedes","year":1975,"color":"Red"},
42 | {"vin":"97c6e1e9","brand":"Volvo","year":1967,"color":"Green"},
43 | {"vin":"ae962274","brand":"Volvo","year":1982,"color":"Red"},
44 | {"vin":"81f8972a","brand":"BMW","year":2007,"color":"Black"},
45 | {"vin":"f8506743","brand":"Audi","year":1975,"color":"Blue"},
46 | {"vin":"596859d1","brand":"Fiat","year":2002,"color":"Green"},
47 | {"vin":"d83c1d9a","brand":"Volvo","year":1972,"color":"Black"},
48 | {"vin":"32f41550","brand":"Mercedes","year":1978,"color":"Brown"},
49 | {"vin":"c28cd2e4","brand":"Volvo","year":1982,"color":"Silver"},
50 | {"vin":"80890dcc","brand":"Audi","year":1962,"color":"White"},
51 | {"vin":"4bf1aeb5","brand":"VW","year":2000,"color":"Silver"},
52 | {"vin":"45ca4786","brand":"BMW","year":1995,"color":"Maroon"}
53 | ]
54 | }
55 |
--------------------------------------------------------------------------------
/web/app/resources/fonts/roboto-light-webfont.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dyktek/FrameworkMVC/d6b6e2c3fff3127bbc130c27c8fb33596763266d/web/app/resources/fonts/roboto-light-webfont.eot
--------------------------------------------------------------------------------
/web/app/resources/fonts/roboto-light-webfont.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dyktek/FrameworkMVC/d6b6e2c3fff3127bbc130c27c8fb33596763266d/web/app/resources/fonts/roboto-light-webfont.ttf
--------------------------------------------------------------------------------
/web/app/resources/fonts/roboto-light-webfont.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dyktek/FrameworkMVC/d6b6e2c3fff3127bbc130c27c8fb33596763266d/web/app/resources/fonts/roboto-light-webfont.woff
--------------------------------------------------------------------------------
/web/app/resources/fonts/roboto-light-webfont.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dyktek/FrameworkMVC/d6b6e2c3fff3127bbc130c27c8fb33596763266d/web/app/resources/fonts/roboto-light-webfont.woff2
--------------------------------------------------------------------------------
/web/app/resources/fonts/roboto-medium-webfont.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dyktek/FrameworkMVC/d6b6e2c3fff3127bbc130c27c8fb33596763266d/web/app/resources/fonts/roboto-medium-webfont.eot
--------------------------------------------------------------------------------
/web/app/resources/fonts/roboto-medium-webfont.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dyktek/FrameworkMVC/d6b6e2c3fff3127bbc130c27c8fb33596763266d/web/app/resources/fonts/roboto-medium-webfont.ttf
--------------------------------------------------------------------------------
/web/app/resources/fonts/roboto-medium-webfont.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dyktek/FrameworkMVC/d6b6e2c3fff3127bbc130c27c8fb33596763266d/web/app/resources/fonts/roboto-medium-webfont.woff
--------------------------------------------------------------------------------
/web/app/resources/fonts/roboto-medium-webfont.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dyktek/FrameworkMVC/d6b6e2c3fff3127bbc130c27c8fb33596763266d/web/app/resources/fonts/roboto-medium-webfont.woff2
--------------------------------------------------------------------------------
/web/app/resources/fonts/roboto-regular-webfont.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dyktek/FrameworkMVC/d6b6e2c3fff3127bbc130c27c8fb33596763266d/web/app/resources/fonts/roboto-regular-webfont.eot
--------------------------------------------------------------------------------
/web/app/resources/fonts/roboto-regular-webfont.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dyktek/FrameworkMVC/d6b6e2c3fff3127bbc130c27c8fb33596763266d/web/app/resources/fonts/roboto-regular-webfont.ttf
--------------------------------------------------------------------------------
/web/app/resources/fonts/roboto-regular-webfont.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dyktek/FrameworkMVC/d6b6e2c3fff3127bbc130c27c8fb33596763266d/web/app/resources/fonts/roboto-regular-webfont.woff
--------------------------------------------------------------------------------
/web/app/resources/fonts/roboto-regular-webfont.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dyktek/FrameworkMVC/d6b6e2c3fff3127bbc130c27c8fb33596763266d/web/app/resources/fonts/roboto-regular-webfont.woff2
--------------------------------------------------------------------------------
/web/app/resources/icons/fonts/FontAwesome.otf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dyktek/FrameworkMVC/d6b6e2c3fff3127bbc130c27c8fb33596763266d/web/app/resources/icons/fonts/FontAwesome.otf
--------------------------------------------------------------------------------
/web/app/resources/icons/fonts/fontawesome-webfont.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dyktek/FrameworkMVC/d6b6e2c3fff3127bbc130c27c8fb33596763266d/web/app/resources/icons/fonts/fontawesome-webfont.eot
--------------------------------------------------------------------------------
/web/app/resources/icons/fonts/fontawesome-webfont.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dyktek/FrameworkMVC/d6b6e2c3fff3127bbc130c27c8fb33596763266d/web/app/resources/icons/fonts/fontawesome-webfont.ttf
--------------------------------------------------------------------------------
/web/app/resources/icons/fonts/fontawesome-webfont.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dyktek/FrameworkMVC/d6b6e2c3fff3127bbc130c27c8fb33596763266d/web/app/resources/icons/fonts/fontawesome-webfont.woff
--------------------------------------------------------------------------------
/web/app/resources/icons/fonts/fontawesome-webfont.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dyktek/FrameworkMVC/d6b6e2c3fff3127bbc130c27c8fb33596763266d/web/app/resources/icons/fonts/fontawesome-webfont.woff2
--------------------------------------------------------------------------------
/web/app/rxjs-extensions.js:
--------------------------------------------------------------------------------
1 | "use strict";
2 | // Observable class extensions
3 | require('rxjs/add/observable/of');
4 | require('rxjs/add/observable/throw');
5 | // Observable operators
6 | require('rxjs/add/operator/catch');
7 | require('rxjs/add/operator/debounceTime');
8 | require('rxjs/add/operator/distinctUntilChanged');
9 | require('rxjs/add/operator/do');
10 | require('rxjs/add/operator/filter');
11 | require('rxjs/add/operator/map');
12 | require('rxjs/add/operator/switchMap');
13 | //# sourceMappingURL=rxjs-extensions.js.map
--------------------------------------------------------------------------------
/web/app/rxjs-extensions.js.map:
--------------------------------------------------------------------------------
1 | {"version":3,"file":"rxjs-extensions.js","sourceRoot":"","sources":["rxjs-extensions.ts"],"names":[],"mappings":";AAAA,8BAA8B;AAC9B,QAAO,wBAAwB,CAAC,CAAA;AAChC,QAAO,2BAA2B,CAAC,CAAA;AAEnC,uBAAuB;AACvB,QAAO,yBAAyB,CAAC,CAAA;AACjC,QAAO,gCAAgC,CAAC,CAAA;AACxC,QAAO,wCAAwC,CAAC,CAAA;AAChD,QAAO,sBAAsB,CAAC,CAAA;AAC9B,QAAO,0BAA0B,CAAC,CAAA;AAClC,QAAO,uBAAuB,CAAC,CAAA;AAC/B,QAAO,6BAA6B,CAAC,CAAA"}
--------------------------------------------------------------------------------
/web/app/rxjs-extensions.ts:
--------------------------------------------------------------------------------
1 | // Observable class extensions
2 | import 'rxjs/add/observable/of';
3 | import 'rxjs/add/observable/throw';
4 |
5 | // Observable operators
6 | import 'rxjs/add/operator/catch';
7 | import 'rxjs/add/operator/debounceTime';
8 | import 'rxjs/add/operator/distinctUntilChanged';
9 | import 'rxjs/add/operator/do';
10 | import 'rxjs/add/operator/filter';
11 | import 'rxjs/add/operator/map';
12 | import 'rxjs/add/operator/switchMap';
13 |
14 |
--------------------------------------------------------------------------------
/web/assets/css/signin.css:
--------------------------------------------------------------------------------
1 | .form-signin {
2 | max-width: 330px;
3 | padding: 15px;
4 | margin: 0 auto;
5 | }
6 | .form-signin .form-signin-heading,
7 | .form-signin .checkbox {
8 | margin-bottom: 10px;
9 | }
10 | .form-signin .checkbox {
11 | font-weight: normal;
12 | }
13 | .form-signin .form-control {
14 | position: relative;
15 | height: auto;
16 | -webkit-box-sizing: border-box;
17 | -moz-box-sizing: border-box;
18 | box-sizing: border-box;
19 | padding: 10px;
20 | font-size: 16px;
21 | }
22 | .form-signin .form-control:focus {
23 | z-index: 2;
24 | }
25 | .form-signin input[type="email"] {
26 | margin-bottom: -1px;
27 | border-bottom-right-radius: 0;
28 | border-bottom-left-radius: 0;
29 | }
30 | .form-signin input[type="password"] {
31 | margin-bottom: 10px;
32 | border-top-left-radius: 0;
33 | border-top-right-radius: 0;
34 | }
--------------------------------------------------------------------------------
/web/assets/js/app/app.js:
--------------------------------------------------------------------------------
1 | "use strict";
2 | var $ = require('jquery');
3 | var books = require('./models/books');
4 | var App = (function () {
5 | function App() {
6 | var data = new books.Books();
7 | data.getData(function (result) {
8 | this.booksList = result;
9 | this.drawView();
10 | this.setFilter();
11 | }.bind(this));
12 | }
13 | App.prototype.setFilter = function () {
14 | var instance = this;
15 | $('#filter').keydown(function () {
16 | window.setTimeout(function () {
17 | var filtered = instance.booksList.filter(function (element) {
18 | var regExp = new RegExp($(this).val().toLowerCase());
19 | return regExp.test(element.name.toLowerCase());
20 | }.bind(this));
21 | instance.drawView(filtered);
22 | }.bind(this), 200);
23 | });
24 | };
25 | App.prototype.drawView = function (filtered) {
26 | var dataSource = (filtered) ? filtered : this.booksList;
27 | var listContainer = $('#list');
28 | listContainer.empty();
29 | listContainer.append('');
30 | var html = '';
31 | $.each(dataSource, function (key, value) {
32 | html += '' +
33 | '' + value.id + ' ' +
34 | '' + value.name + ' ' +
35 | '' + value.description + ' ' +
36 | '' + value.author + ' ' +
37 | ' ';
38 | });
39 | $(html).insertAfter(listContainer.find('tr'));
40 | };
41 | return App;
42 | }());
43 | exports.App = App;
44 | //# sourceMappingURL=app.js.map
--------------------------------------------------------------------------------
/web/assets/js/app/app.js.map:
--------------------------------------------------------------------------------
1 | {"version":3,"file":"app.js","sourceRoot":"","sources":["app.ts"],"names":[],"mappings":";AAAA,IAAO,CAAC,WAAW,QAAQ,CAAC,CAAC;AAC7B,IAAO,KAAK,WAAW,gBAAgB,CAAC,CAAC;AAEzC;IAII;QACI,IAAI,IAAI,GAAG,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;QAE7B,IAAI,CAAC,OAAO,CAAC,UAAS,MAAM;YAExB,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC;YAExB,IAAI,CAAC,QAAQ,EAAE,CAAC;YAChB,IAAI,CAAC,SAAS,EAAE,CAAC;QAErB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAClB,CAAC;IAEO,uBAAS,GAAjB;QACI,IAAI,QAAQ,GAAG,IAAI,CAAC;QAEpB,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC;YAEjB,MAAM,CAAC,UAAU,CAAC;gBAEd,IAAI,QAAQ,GAAG,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,UAAS,OAAW;oBAEzD,IAAI,MAAM,GAAG,IAAI,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;oBAErD,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;gBAEnD,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;gBAEd,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YAEhC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAC,GAAG,CAAC,CAAC;QAEtB,CAAC,CAAC,CAAC;IAGP,CAAC;IAEO,sBAAQ,GAAhB,UAAiB,QAAoB;QAEjC,IAAI,UAAU,GAAG,CAAC,QAAQ,CAAC,GAAG,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC;QAExD,IAAI,aAAa,GAAI,CAAC,CAAC,OAAO,CAAC,CAAC;QAEhC,aAAa,CAAC,KAAK,EAAE,CAAC;QAEtB,aAAa,CAAC,MAAM,CAAC,mHAAmH,CAAC,CAAC;QAE1I,IAAI,IAAI,GAAU,EAAE,CAAC;QAErB,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,UAAS,GAAG,EAAE,KAAK;YAElC,IAAI,IAAI,MAAM;gBACF,MAAM,GAAG,KAAK,CAAC,EAAE,GAAG,OAAO;gBAC3B,MAAM,GAAG,KAAK,CAAC,IAAI,GAAG,OAAO;gBAC7B,MAAM,GAAG,KAAK,CAAC,WAAW,GAAG,OAAO;gBACpC,MAAM,GAAG,KAAK,CAAC,MAAM,GAAG,OAAO;gBACnC,OAAO,CAAC;QAEpB,CAAC,CAAC,CAAC;QAEH,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAClD,CAAC;IACL,UAAC;AAAD,CAAC,AAlED,IAkEC;AAlEY,WAAG,MAkEf,CAAA"}
--------------------------------------------------------------------------------
/web/assets/js/app/app.ts:
--------------------------------------------------------------------------------
1 | import $ = require('jquery');
2 | import books = require('./models/books');
3 |
4 | export class App
5 | {
6 | private booksList;
7 |
8 | constructor() {
9 | var data = new books.Books();
10 |
11 | data.getData(function(result) {
12 |
13 | this.booksList = result;
14 |
15 | this.drawView();
16 | this.setFilter();
17 |
18 | }.bind(this));
19 | }
20 |
21 | private setFilter(){
22 | var instance = this;
23 |
24 | $('#filter').keydown(function(){
25 |
26 | window.setTimeout(function(){
27 |
28 | var filtered = instance.booksList.filter(function(element:any){
29 |
30 | var regExp = new RegExp($(this).val().toLowerCase());
31 |
32 | return regExp.test(element.name.toLowerCase());
33 |
34 | }.bind(this));
35 |
36 | instance.drawView(filtered);
37 |
38 | }.bind(this),200);
39 |
40 | });
41 |
42 |
43 | }
44 |
45 | private drawView(filtered?:Array){
46 |
47 | var dataSource = (filtered) ? filtered : this.booksList;
48 |
49 | var listContainer = $('#list');
50 |
51 | listContainer.empty();
52 |
53 | listContainer.append('');
54 |
55 | var html:string = '';
56 |
57 | $.each(dataSource, function(key, value){
58 |
59 | html += '' +
60 | '' + value.id + ' ' +
61 | '' + value.name + ' ' +
62 | '' + value.description + ' ' +
63 | '' + value.author + ' ' +
64 | ' ';
65 |
66 | });
67 |
68 | $(html).insertAfter(listContainer.find('tr'));
69 | }
70 | }
--------------------------------------------------------------------------------
/web/assets/js/app/models/books.js:
--------------------------------------------------------------------------------
1 | "use strict";
2 | var $ = require('jquery');
3 | var Books = (function () {
4 | function Books() {
5 | this.booksList = [{
6 | id: 1,
7 | name: 'Limes Infer',
8 | description: 'opis',
9 | author: 'autor'
10 | }, {
11 | id: 2,
12 | name: 'Robota',
13 | description: 'opis',
14 | author: 'autor'
15 | }, {
16 | id: 3,
17 | name: 'Andromeda',
18 | description: 'opis',
19 | author: 'autor'
20 | }, {
21 | id: 4,
22 | name: 'Andridanek',
23 | description: 'opis',
24 | author: 'autor'
25 | }, {
26 | id: 5,
27 | name: 'Apostrofa',
28 | description: 'opis',
29 | author: 'autor'
30 | }];
31 | }
32 | Books.prototype.getData = function (successFunction) {
33 | var request = $.ajax({
34 | type: "GET",
35 | url: '/books',
36 | data: {},
37 | dataType: "json"
38 | });
39 | request.done(successFunction);
40 | };
41 | return Books;
42 | }());
43 | exports.Books = Books;
44 | //# sourceMappingURL=books.js.map
--------------------------------------------------------------------------------
/web/assets/js/app/models/books.js.map:
--------------------------------------------------------------------------------
1 | {"version":3,"file":"books.js","sourceRoot":"","sources":["books.ts"],"names":[],"mappings":";AAAA,IAAO,CAAC,WAAW,QAAQ,CAAC,CAAC;AAE7B;IAII;QACI,IAAI,CAAC,SAAS,GAAG,CAAC;gBACd,EAAE,EAAE,CAAC;gBACL,IAAI,EAAE,aAAa;gBACnB,WAAW,EAAE,MAAM;gBACnB,MAAM,EAAE,OAAO;aAClB,EAAC;gBACE,EAAE,EAAE,CAAC;gBACL,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,MAAM;gBACnB,MAAM,EAAE,OAAO;aAClB,EAAC;gBACE,EAAE,EAAE,CAAC;gBACL,IAAI,EAAE,WAAW;gBACjB,WAAW,EAAE,MAAM;gBACnB,MAAM,EAAE,OAAO;aAClB,EAAC;gBACE,EAAE,EAAE,CAAC;gBACL,IAAI,EAAE,YAAY;gBAClB,WAAW,EAAE,MAAM;gBACnB,MAAM,EAAE,OAAO;aAClB,EAAC;gBACE,EAAE,EAAE,CAAC;gBACL,IAAI,EAAE,WAAW;gBACjB,WAAW,EAAE,MAAM;gBACnB,MAAM,EAAE,OAAO;aAClB,CAAC,CAAC;IACP,CAAC;IAEM,uBAAO,GAAd,UAAe,eAAoC;QAC/C,IAAI,OAAO,GAAG,CAAC,CAAC,IAAI,CAAC;YACjB,IAAI,EAAE,KAAK;YACX,GAAG,EAAE,QAAQ;YACb,IAAI,EAAE,EAAE;YACR,QAAQ,EAAE,MAAM;SACnB,CAAC,CAAC;QAEH,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IAClC,CAAC;IACL,YAAC;AAAD,CAAC,AA3CD,IA2CC;AA3CY,aAAK,QA2CjB,CAAA"}
--------------------------------------------------------------------------------
/web/assets/js/app/models/books.ts:
--------------------------------------------------------------------------------
1 | import $ = require('jquery');
2 |
3 | export class Books
4 | {
5 | private booksList:Array;
6 |
7 | constructor(){
8 | this.booksList = [{
9 | id: 1,
10 | name: 'Limes Infer',
11 | description: 'opis',
12 | author: 'autor'
13 | },{
14 | id: 2,
15 | name: 'Robota',
16 | description: 'opis',
17 | author: 'autor'
18 | },{
19 | id: 3,
20 | name: 'Andromeda',
21 | description: 'opis',
22 | author: 'autor'
23 | },{
24 | id: 4,
25 | name: 'Andridanek',
26 | description: 'opis',
27 | author: 'autor'
28 | },{
29 | id: 5,
30 | name: 'Apostrofa',
31 | description: 'opis',
32 | author: 'autor'
33 | }];
34 | }
35 |
36 | public getData(successFunction: (data: any) => void):void {
37 | var request = $.ajax({
38 | type: "GET",
39 | url: '/books',
40 | data: {},
41 | dataType: "json"
42 | });
43 |
44 | request.done(successFunction);
45 | }
46 | }
--------------------------------------------------------------------------------
/web/assets/js/main.js:
--------------------------------------------------------------------------------
1 | ///
2 | "use strict";
3 | var app = require('./app/app');
4 | var application = new app.App();
5 | //# sourceMappingURL=main.js.map
--------------------------------------------------------------------------------
/web/assets/js/main.js.map:
--------------------------------------------------------------------------------
1 | {"version":3,"file":"main.js","sourceRoot":"","sources":["main.ts"],"names":[],"mappings":"AAAA,+CAA+C;;AAE/C,IAAO,GAAG,WAAW,WAAW,CAAC,CAAC;AAElC,IAAI,WAAW,GAAG,IAAI,GAAG,CAAC,GAAG,EAAE,CAAC"}
--------------------------------------------------------------------------------
/web/assets/js/main.ts:
--------------------------------------------------------------------------------
1 | ///
2 |
3 | import app = require('./app/app');
4 |
5 | var application = new app.App();
--------------------------------------------------------------------------------
/web/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Admin
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 | Loading...
30 |
31 |
--------------------------------------------------------------------------------
/web/index.php:
--------------------------------------------------------------------------------
1 | fromRequest($request);
17 | $matcher = new Routing\Matcher\UrlMatcher($routes, $context);
18 | $resolver = new HttpKernel\Controller\ControllerResolver();
19 | $resolverArg = new HttpKernel\Controller\ArgumentResolver();
20 |
21 | $framework = new Simplex\Framework($matcher, $resolver, $resolverArg, $routes, $session);
22 | $response = $framework->handle($request);
23 | $response->send();
24 |
--------------------------------------------------------------------------------
/web/npm-debug.log:
--------------------------------------------------------------------------------
1 | 0 info it worked if it ends with ok
2 | 1 verbose cli [ '/usr/bin/nodejs', '/usr/bin/npm', 'start' ]
3 | 2 info using npm@3.5.2
4 | 3 info using node@v4.2.6
5 | 4 verbose run-script [ 'prestart', 'start', 'poststart' ]
6 | 5 info lifecycle a2-Wadmin@1.0.0~prestart: a2-Wadmin@1.0.0
7 | 6 silly lifecycle a2-Wadmin@1.0.0~prestart: no script for prestart, continuing
8 | 7 info lifecycle a2-Wadmin@1.0.0~start: a2-Wadmin@1.0.0
9 | 8 verbose lifecycle a2-Wadmin@1.0.0~start: unsafe-perm in lifecycle true
10 | 9 verbose lifecycle a2-Wadmin@1.0.0~start: PATH: /usr/share/npm/bin/node-gyp-bin:/var/www/html/a2fin3/FrameworkMVC/web/node_modules/.bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
11 | 10 verbose lifecycle a2-Wadmin@1.0.0~start: CWD: /var/www/html/a2fin3/FrameworkMVC/web
12 | 11 silly lifecycle a2-Wadmin@1.0.0~start: Args: [ '-c', 'tsc && concurrently "npm run tsc:w" ' ]
13 | 12 silly lifecycle a2-Wadmin@1.0.0~start: Returned: code: 2 signal: null
14 | 13 info lifecycle a2-Wadmin@1.0.0~start: Failed to exec start script
15 | 14 verbose stack Error: a2-Wadmin@1.0.0 start: `tsc && concurrently "npm run tsc:w" `
16 | 14 verbose stack Exit status 2
17 | 14 verbose stack at EventEmitter. (/usr/share/npm/lib/utils/lifecycle.js:232:16)
18 | 14 verbose stack at emitTwo (events.js:87:13)
19 | 14 verbose stack at EventEmitter.emit (events.js:172:7)
20 | 14 verbose stack at ChildProcess. (/usr/share/npm/lib/utils/spawn.js:24:14)
21 | 14 verbose stack at emitTwo (events.js:87:13)
22 | 14 verbose stack at ChildProcess.emit (events.js:172:7)
23 | 14 verbose stack at maybeClose (internal/child_process.js:821:16)
24 | 14 verbose stack at Process.ChildProcess._handle.onexit (internal/child_process.js:211:5)
25 | 15 verbose pkgid a2-Wadmin@1.0.0
26 | 16 verbose cwd /var/www/html/a2fin3/FrameworkMVC/web
27 | 17 error Linux 4.4.0-34-generic
28 | 18 error argv "/usr/bin/nodejs" "/usr/bin/npm" "start"
29 | 19 error node v4.2.6
30 | 20 error npm v3.5.2
31 | 21 error code ELIFECYCLE
32 | 22 error a2-Wadmin@1.0.0 start: `tsc && concurrently "npm run tsc:w" `
33 | 22 error Exit status 2
34 | 23 error Failed at the a2-Wadmin@1.0.0 start script 'tsc && concurrently "npm run tsc:w" '.
35 | 23 error Make sure you have the latest version of node.js and npm installed.
36 | 23 error If you do, this is most likely a problem with the a2-Wadmin package,
37 | 23 error not with npm itself.
38 | 23 error Tell the author that this fails on your system:
39 | 23 error tsc && concurrently "npm run tsc:w"
40 | 23 error You can get information on how to open an issue for this project with:
41 | 23 error npm bugs a2-Wadmin
42 | 23 error Or if that isn't available, you can get their info via:
43 | 23 error npm owner ls a2-Wadmin
44 | 23 error There is likely additional logging output above.
45 | 24 verbose exit [ 1, true ]
46 |
--------------------------------------------------------------------------------
/web/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "a2-Wadmin",
3 | "version": "1.0.0",
4 | "scripts": {
5 | "start": "tsc && concurrently \"npm run tsc:w\" ",
6 | "lite": "lite-server",
7 | "postinstall": "typings install",
8 | "tsc": "tsc",
9 | "tsc:w": "tsc -w",
10 | "typings": "typings"
11 | },
12 | "license": "ISC",
13 | "dependencies": {
14 | "@angular/common": "2.0.0",
15 | "@angular/compiler": "2.0.0",
16 | "@angular/core": "2.0.0",
17 | "@angular/forms": "2.0.0",
18 | "@angular/http": "2.0.0",
19 | "@angular/platform-browser": "2.0.0",
20 | "@angular/platform-browser-dynamic": "2.0.0",
21 | "@angular/router": "3.0.0",
22 | "@angular/upgrade": "2.0.0",
23 | "core-js": "^2.4.1",
24 | "reflect-metadata": "^0.1.3",
25 | "rxjs": "5.0.0-beta.12",
26 | "systemjs": "0.19.27",
27 | "zone.js": "^0.6.23",
28 | "angular2-in-memory-web-api": "0.0.20",
29 | "bootstrap": "^3.3.6",
30 | "jwt-decode": "^2.0.1"
31 | },
32 | "devDependencies": {
33 | "concurrently": "^2.2.0",
34 | "lite-server": "^2.2.2",
35 | "typescript": "^2.0.2",
36 | "typings":"^1.3.2"
37 | }
38 | }
--------------------------------------------------------------------------------
/web/systemjs.config.js:
--------------------------------------------------------------------------------
1 | /**
2 | * System configuration for Angular 2 samples
3 | * Adjust as necessary for your application needs.
4 | */
5 | (function (global) {
6 | System.config({
7 | paths: {
8 | // paths serve as alias
9 | 'npm:': 'node_modules/'
10 | },
11 | // map tells the System loader where to look for things
12 | map: {
13 | // our app is within the app folder
14 | app: 'app',
15 | // angular bundles
16 | '@angular/core': 'npm:@angular/core/bundles/core.umd.js',
17 | '@angular/common': 'npm:@angular/common/bundles/common.umd.js',
18 | '@angular/compiler': 'npm:@angular/compiler/bundles/compiler.umd.js',
19 | '@angular/platform-browser': 'npm:@angular/platform-browser/bundles/platform-browser.umd.js',
20 | '@angular/platform-browser-dynamic': 'npm:@angular/platform-browser-dynamic/bundles/platform-browser-dynamic.umd.js',
21 | '@angular/http': 'npm:@angular/http/bundles/http.umd.js',
22 | '@angular/router': 'npm:@angular/router/bundles/router.umd.js',
23 | '@angular/forms': 'npm:@angular/forms/bundles/forms.umd.js',
24 | // other libraries
25 | 'rxjs': 'npm:rxjs',
26 | 'angular2-in-memory-web-api': 'npm:angular2-in-memory-web-api',
27 | 'angular2-jwt': 'npm:angular2-jwt/angular2-jwt.js'
28 | },
29 | // packages tells the System loader how to load when no filename and/or no extension
30 | packages: {
31 | app: {
32 | main: './main.js',
33 | defaultExtension: 'js'
34 | },
35 | rxjs: {
36 | defaultExtension: 'js'
37 | },
38 | "angular2-jwt": {
39 | defaultExtension: 'js'
40 | },
41 | 'angular2-in-memory-web-api': {
42 | main: './index.js',
43 | defaultExtension: 'js'
44 | }
45 | }
46 | });
47 | })(this);
48 |
--------------------------------------------------------------------------------
/web/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "target": "es5",
4 | "module": "commonjs",
5 | "moduleResolution": "node",
6 | "sourceMap": true,
7 | "emitDecoratorMetadata": true,
8 | "experimentalDecorators": true,
9 | "removeComments": false,
10 | "noImplicitAny": false
11 | }
12 | }
--------------------------------------------------------------------------------
/web/typings.json:
--------------------------------------------------------------------------------
1 | {
2 | "globalDependencies": {
3 | "core-js": "registry:dt/core-js#0.0.0+20160725163759",
4 | "jasmine": "registry:dt/jasmine#2.2.0+20160621224255",
5 | "node": "registry:dt/node#6.0.0+20160909174046"
6 | }
7 | }
--------------------------------------------------------------------------------