├── .gitignore ├── cli-config.php ├── composer.json ├── hosts ├── mvc.conf ├── project ├── Project │ ├── data │ │ ├── document.js │ │ └── styles.css │ ├── files │ │ ├── home │ │ │ ├── data.js │ │ │ └── styles.css │ │ ├── page_1 │ │ │ ├── data.js │ │ │ └── styles.css │ │ ├── page_2 │ │ │ ├── data.js │ │ │ └── styles.css │ │ └── page_3 │ │ │ ├── data.js │ │ │ └── styles.css │ ├── home.html │ ├── images │ │ └── home │ │ │ ├── u0.png │ │ │ ├── u12.png │ │ │ ├── u14_menu.png │ │ │ ├── u16.png │ │ │ ├── u20.png │ │ │ ├── u22.png │ │ │ ├── u24_menu.png │ │ │ ├── u26.png │ │ │ ├── u2_menu.png │ │ │ ├── u30.png │ │ │ ├── u36.png │ │ │ ├── u38.png │ │ │ ├── u4.png │ │ │ ├── u42.png │ │ │ ├── u46.png │ │ │ ├── u54.png │ │ │ ├── u64.png │ │ │ └── u88.png │ ├── index.html │ ├── page_1.html │ ├── page_2.html │ ├── page_3.html │ ├── plugins │ │ ├── page_notes │ │ │ ├── page_notes.js │ │ │ └── styles │ │ │ │ └── page_notes.css │ │ └── sitemap │ │ │ ├── sitemap.js │ │ │ └── styles │ │ │ ├── images │ │ │ ├── 079_page_16.png │ │ │ ├── 086_case_16.png │ │ │ ├── 225_responsive_16.png │ │ │ ├── 228_togglenotes_16.png │ │ │ ├── 229_variables_16.png │ │ │ ├── 231_event_16.png │ │ │ ├── 232_search_16.png │ │ │ ├── 233_hyperlink_16.png │ │ │ ├── 235_folderclosed_16.png │ │ │ ├── 236_folderopen_16.png │ │ │ ├── adaptivecheck.png │ │ │ ├── images.html │ │ │ ├── minus.gif │ │ │ └── plus.gif │ │ │ └── sitemap.css │ ├── resources │ │ ├── Other.html │ │ ├── chrome │ │ │ ├── allow_access.gif │ │ │ ├── axure-chrome-extension.crx │ │ │ ├── axure_logo.gif │ │ │ ├── axure_logo.png │ │ │ ├── chrome.html │ │ │ ├── extensions_menu.gif │ │ │ ├── splitter.gif │ │ │ └── splitter.png │ │ ├── css │ │ │ ├── axure_rp_page.css │ │ │ ├── default.css │ │ │ ├── images │ │ │ │ ├── images.html │ │ │ │ ├── newwindow.gif │ │ │ │ ├── note.gif │ │ │ │ ├── ui-bg_flat_0_aaaaaa_40x100.png │ │ │ │ ├── ui-bg_glass_55_fbf9ee_1x400.png │ │ │ │ ├── ui-bg_glass_65_ffffff_1x400.png │ │ │ │ ├── ui-bg_glass_75_dadada_1x400.png │ │ │ │ ├── ui-bg_glass_75_e6e6e6_1x400.png │ │ │ │ ├── ui-bg_glass_75_ffffff_1x400.png │ │ │ │ ├── ui-bg_highlight-soft_75_cccccc_1x100.png │ │ │ │ ├── ui-bg_inset-soft_95_fef1ec_1x100.png │ │ │ │ ├── ui-icons_222222_256x240.png │ │ │ │ ├── ui-icons_2e83ff_256x240.png │ │ │ │ ├── ui-icons_454545_256x240.png │ │ │ │ ├── ui-icons_888888_256x240.png │ │ │ │ └── ui-icons_cd0a0a_256x240.png │ │ │ ├── jquery-ui-themes.css │ │ │ └── reset.css │ │ ├── expand.html │ │ ├── images │ │ │ ├── 259_close_12rollover1.png │ │ │ ├── 259_close_12rollover2.png │ │ │ ├── 260_collapse_12rollover1.png │ │ │ ├── 260_collapse_12rollover2.png │ │ │ ├── 261_expand_12rollover1.png │ │ │ ├── 261_expand_12rollover2.png │ │ │ ├── images.html │ │ │ └── transparent.gif │ │ ├── reload.html │ │ └── scripts │ │ │ ├── axure │ │ │ ├── action.js │ │ │ ├── adaptive.js │ │ │ ├── annotation.js │ │ │ ├── axQuery.js │ │ │ ├── axQuery.std.js │ │ │ ├── doc.js │ │ │ ├── drag.js │ │ │ ├── events.js │ │ │ ├── expr.js │ │ │ ├── flyout.js │ │ │ ├── geometry.js │ │ │ ├── globals.js │ │ │ ├── ie.js │ │ │ ├── init.temp.js │ │ │ ├── legacy.js │ │ │ ├── model.js │ │ │ ├── move.js │ │ │ ├── repeater.js │ │ │ ├── sto.js │ │ │ ├── style.js │ │ │ ├── tree.js │ │ │ ├── utils.temp.js │ │ │ ├── variables.js │ │ │ ├── viewer.js │ │ │ └── visibility.js │ │ │ ├── axutils.js │ │ │ ├── jquery-1.7.1.min.js │ │ │ ├── jquery-ui-1.8.10.custom.min.js │ │ │ ├── messagecenter.js │ │ │ └── player │ │ │ ├── axplayer.js │ │ │ └── splitter.js │ ├── start.html │ └── start_c_1.html ├── db5.sql ├── db6.sql └── specyfikacja.odt ├── simplex ├── App.php ├── Framework.php ├── Providers │ ├── DoctrineServiceProvider.php │ ├── ServiceProvider.php │ └── TwigServiceProvider.php └── Router.php ├── src ├── Admin │ ├── Controller │ │ └── AdminController.php │ └── View │ │ ├── Layout │ │ └── layout.html.twig │ │ ├── index.html.twig │ │ └── login.html.twig ├── Api │ ├── Controller │ │ ├── ArticlesController.php │ │ ├── AuthController.php │ │ └── CategoriesController.php │ └── Model │ │ ├── Articles.php │ │ ├── ArticlesTable.php │ │ ├── BaseTable.php │ │ ├── Categories.php │ │ ├── CategoriesTable.php │ │ ├── Comments.php │ │ ├── Galleries.php │ │ ├── Photos.php │ │ ├── Tags.php │ │ ├── Users.php │ │ └── UsersTable.php ├── Books │ ├── Controller │ │ ├── ApiController.php │ │ └── BooksController.php │ ├── Model │ │ └── Books.php │ └── View │ │ ├── Layout │ │ └── layout.html.twig │ │ ├── edit.html.twig │ │ └── list.html.twig ├── config-example.php └── routes.php └── web ├── .htaccess ├── app ├── app.component.html ├── app.component.js ├── app.component.js.map ├── app.component.ts ├── app.module.js ├── app.module.js.map ├── app.module.ts ├── app.routing.js ├── app.routing.js.map ├── app.routing.ts ├── categories │ ├── categories.component.html │ ├── categories.component.js │ ├── categories.component.js.map │ ├── categories.component.ts │ ├── categories.service.js │ ├── categories.service.js.map │ ├── categories.service.ts │ ├── category-edit.component.html │ ├── category-edit.component.js │ ├── category-edit.component.js.map │ ├── category-edit.component.ts │ ├── category.js │ ├── category.js.map │ └── category.ts ├── common │ ├── auth.guard.js │ ├── auth.guard.js.map │ ├── auth.guard.ts │ ├── auth.provider.js │ ├── auth.provider.js.map │ └── auth.provider.ts ├── login │ ├── login.component.html │ ├── login.component.js │ ├── login.component.js.map │ ├── login.component.ts │ ├── login.service.js │ ├── login.service.js.map │ └── login.service.ts ├── main.js ├── main.js.map ├── main.ts ├── resources │ ├── css │ │ ├── admin.css │ │ └── site.css │ ├── data │ │ └── cars-medium.json │ ├── fonts │ │ ├── roboto-light-webfont.eot │ │ ├── roboto-light-webfont.svg │ │ ├── roboto-light-webfont.ttf │ │ ├── roboto-light-webfont.woff │ │ ├── roboto-light-webfont.woff2 │ │ ├── roboto-medium-webfont.eot │ │ ├── roboto-medium-webfont.svg │ │ ├── roboto-medium-webfont.ttf │ │ ├── roboto-medium-webfont.woff │ │ ├── roboto-medium-webfont.woff2 │ │ ├── roboto-regular-webfont.eot │ │ ├── roboto-regular-webfont.svg │ │ ├── roboto-regular-webfont.ttf │ │ ├── roboto-regular-webfont.woff │ │ └── roboto-regular-webfont.woff2 │ └── icons │ │ ├── css │ │ └── font-awesome.min.css │ │ └── fonts │ │ ├── FontAwesome.otf │ │ ├── fontawesome-webfont.eot │ │ ├── fontawesome-webfont.svg │ │ ├── fontawesome-webfont.ttf │ │ ├── fontawesome-webfont.woff │ │ └── fontawesome-webfont.woff2 ├── rxjs-extensions.js ├── rxjs-extensions.js.map └── rxjs-extensions.ts ├── assets ├── css │ └── signin.css └── js │ ├── app │ ├── app.js │ ├── app.js.map │ ├── app.ts │ ├── libts │ │ └── jquery.d.ts │ └── models │ │ ├── books.js │ │ ├── books.js.map │ │ └── books.ts │ ├── jquery.js │ ├── main.js │ ├── main.js.map │ ├── main.ts │ ├── require.js │ └── script.js ├── index.html ├── index.php ├── npm-debug.log ├── package.json ├── systemjs.config.js ├── tsconfig.json └── typings.json /.gitignore: -------------------------------------------------------------------------------- 1 | vendor/* 2 | .idea/* 3 | composer.lock 4 | src/config.php 5 | cache/* 6 | node_modules/* 7 | web/node_modules/* 8 | web/typings/* 9 | -------------------------------------------------------------------------------- /cli-config.php: -------------------------------------------------------------------------------- 1 | $val) { 12 | if (preg_match('/--sm-module/', $val)) { 13 | $smModuleArg = $val; 14 | unset( $_SERVER['argv'][$key] ); 15 | $_SERVER['argc'] = $_SERVER['argc']-1; 16 | } 17 | } 18 | 19 | if ($smModuleArg) { 20 | $paths = array(__DIR__ . '/src/' . explode(':', $smModuleArg)[1]); 21 | } else { 22 | $paths = array(__DIR__ . '/src/'); 23 | } 24 | 25 | print_r($paths); 26 | 27 | $isDevMode = true; 28 | 29 | $dbParams = include(__DIR__ . '/src/config.php'); 30 | 31 | $config = Setup::createAnnotationMetadataConfiguration($paths, $isDevMode); 32 | $entityManager = EntityManager::create($dbParams['database'], $config); 33 | 34 | 35 | return ConsoleRunner::createHelperSet($entityManager); 36 | 37 | //php vendor/bin/doctrine orm:schema-tool:update --force --dump-sql -------------------------------------------------------------------------------- /composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "autoload": { 3 | "psr-4": { 4 | "": "src/", 5 | "Simplex\\": "simplex" 6 | } 7 | }, 8 | "require": { 9 | "symfony/http-foundation": "^3.0", 10 | "symfony/routing": "^3.0", 11 | "symfony/http-kernel": "^3.0", 12 | "twig/twig": "~1.0", 13 | "doctrine/orm": "^2.5", 14 | "firebase/php-jwt": "^4.0" 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /hosts: -------------------------------------------------------------------------------- 1 | # /etc/hosts 2 | 127.0.0.1 mvc.pl 3 | 127.0.0.1 www.mvc.pl -------------------------------------------------------------------------------- /mvc.conf: -------------------------------------------------------------------------------- 1 | # /etc/apache2/sites-enabled/mvc.conf 2 | 3 | ServerAdmin webmaster@domain1.com 4 | DocumentRoot "/var/www/html/mvc/web" 5 | ServerName mvc.pl 6 | ServerAlias www.mvc.pl 7 | -------------------------------------------------------------------------------- /project/Project/data/styles.css: -------------------------------------------------------------------------------- 1 | .ax_shape { 2 | font-family:'Arial Normalny', 'Arial'; 3 | font-weight:400; 4 | font-style:normal; 5 | font-size:13px; 6 | color:#333333; 7 | text-align:center; 8 | line-height:normal; 9 | } 10 | .ax_paragraph { 11 | font-family:'Arial Normalny', 'Arial'; 12 | font-weight:400; 13 | font-style:normal; 14 | font-size:13px; 15 | color:#333333; 16 | text-align:left; 17 | line-height:normal; 18 | } 19 | .ax_h1 { 20 | font-family:'Arial Pogrubiony', 'Arial'; 21 | font-weight:700; 22 | font-style:normal; 23 | font-size:32px; 24 | color:#333333; 25 | text-align:left; 26 | line-height:normal; 27 | } 28 | .ax_h2 { 29 | font-family:'Arial Pogrubiony', 'Arial'; 30 | font-weight:700; 31 | font-style:normal; 32 | font-size:24px; 33 | color:#333333; 34 | text-align:left; 35 | line-height:normal; 36 | } 37 | .ax_h3 { 38 | font-family:'Arial Pogrubiony', 'Arial'; 39 | font-weight:700; 40 | font-style:normal; 41 | font-size:18px; 42 | color:#333333; 43 | text-align:left; 44 | line-height:normal; 45 | } 46 | .ax_h4 { 47 | font-family:'Arial Pogrubiony', 'Arial'; 48 | font-weight:700; 49 | font-style:normal; 50 | font-size:14px; 51 | color:#333333; 52 | text-align:left; 53 | line-height:normal; 54 | } 55 | .ax_h5 { 56 | font-family:'Arial Pogrubiony', 'Arial'; 57 | font-weight:700; 58 | font-style:normal; 59 | font-size:13px; 60 | color:#333333; 61 | text-align:left; 62 | line-height:normal; 63 | } 64 | .ax_h6 { 65 | font-family:'Arial Pogrubiony', 'Arial'; 66 | font-weight:700; 67 | font-style:normal; 68 | font-size:10px; 69 | color:#333333; 70 | text-align:left; 71 | line-height:normal; 72 | } 73 | .ax_image { 74 | font-family:'Arial Normalny', 'Arial'; 75 | font-weight:400; 76 | font-style:normal; 77 | font-size:13px; 78 | color:#000000; 79 | text-align:center; 80 | line-height:normal; 81 | } 82 | .ax_text_link { 83 | color:#0000FF; 84 | } 85 | .ax_text_link_mouse_over { 86 | } 87 | .ax_text_link_mouse_down { 88 | } 89 | .ax_text_field { 90 | font-family:'Arial Normalny', 'Arial'; 91 | font-weight:400; 92 | font-style:normal; 93 | font-size:13px; 94 | color:#000000; 95 | text-align:left; 96 | line-height:normal; 97 | } 98 | .ax_text_area { 99 | font-family:'Arial Normalny', 'Arial'; 100 | font-weight:400; 101 | font-style:normal; 102 | font-size:13px; 103 | color:#000000; 104 | text-align:left; 105 | line-height:normal; 106 | } 107 | .ax_droplist { 108 | font-family:'Arial Normalny', 'Arial'; 109 | font-weight:400; 110 | font-style:normal; 111 | font-size:13px; 112 | color:#000000; 113 | text-align:left; 114 | line-height:normal; 115 | } 116 | .ax_list_box { 117 | font-family:'Arial Normalny', 'Arial'; 118 | font-weight:400; 119 | font-style:normal; 120 | font-size:13px; 121 | color:#000000; 122 | text-align:left; 123 | line-height:normal; 124 | } 125 | .ax_checkbox { 126 | font-family:'Arial Normalny', 'Arial'; 127 | font-weight:400; 128 | font-style:normal; 129 | font-size:13px; 130 | color:#333333; 131 | text-align:left; 132 | line-height:normal; 133 | } 134 | .ax_radio_button { 135 | font-family:'Arial Normalny', 'Arial'; 136 | font-weight:400; 137 | font-style:normal; 138 | font-size:13px; 139 | color:#333333; 140 | text-align:left; 141 | line-height:normal; 142 | } 143 | .ax_flow_shape { 144 | font-family:'Arial Normalny', 'Arial'; 145 | font-weight:400; 146 | font-style:normal; 147 | font-size:13px; 148 | color:#333333; 149 | text-align:center; 150 | line-height:normal; 151 | } 152 | .ax_tree_node { 153 | font-family:'Arial Normalny', 'Arial'; 154 | font-weight:400; 155 | font-style:normal; 156 | font-size:13px; 157 | color:#333333; 158 | text-align:left; 159 | line-height:normal; 160 | } 161 | .ax_html_button { 162 | font-family:'Arial Normalny', 'Arial'; 163 | font-weight:400; 164 | font-style:normal; 165 | font-size:13px; 166 | color:#000000; 167 | text-align:center; 168 | line-height:normal; 169 | } 170 | .ax_hot_spot { 171 | font-size:13px; 172 | color:#333333; 173 | text-align:center; 174 | line-height:normal; 175 | } 176 | .ax_inline_frame { 177 | font-size:13px; 178 | color:#333333; 179 | text-align:center; 180 | line-height:normal; 181 | } 182 | .ax_dynamic_panel { 183 | font-size:13px; 184 | color:#333333; 185 | text-align:center; 186 | line-height:normal; 187 | } 188 | .ax_master { 189 | font-size:13px; 190 | color:#333333; 191 | text-align:center; 192 | line-height:normal; 193 | } 194 | .ax_repeater { 195 | font-family:'Arial Normalny', 'Arial'; 196 | font-weight:400; 197 | font-style:normal; 198 | font-size:13px; 199 | color:#333333; 200 | text-align:center; 201 | line-height:normal; 202 | } 203 | .ax_table { 204 | font-family:'Arial Normalny', 'Arial'; 205 | font-weight:400; 206 | font-style:normal; 207 | font-size:13px; 208 | color:#333333; 209 | text-align:center; 210 | line-height:normal; 211 | } 212 | .ax_table_cell { 213 | font-family:'Arial Normalny', 'Arial'; 214 | font-weight:400; 215 | font-style:normal; 216 | font-size:13px; 217 | color:#333333; 218 | text-align:left; 219 | line-height:normal; 220 | } 221 | .ax_menu { 222 | font-size:13px; 223 | color:#000000; 224 | text-align:center; 225 | line-height:normal; 226 | } 227 | .ax_horizontal_line { 228 | font-size:13px; 229 | color:#333333; 230 | text-align:center; 231 | line-height:normal; 232 | } 233 | .ax_vertical_line { 234 | font-size:13px; 235 | color:#333333; 236 | text-align:center; 237 | line-height:normal; 238 | } 239 | .ax_connector { 240 | font-family:'Arial Normalny', 'Arial'; 241 | font-weight:400; 242 | font-style:normal; 243 | font-size:13px; 244 | color:#333333; 245 | text-align:center; 246 | line-height:normal; 247 | } 248 | -------------------------------------------------------------------------------- /project/Project/files/page_1/data.js: -------------------------------------------------------------------------------- 1 | $axure.loadCurrentPage( 2 | (function() { 3 | var _ = function() { var r={},a=arguments; for(var i=0; i 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 | 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 | axure 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 |
121 | Install Extension 123 |
124 |
125 |
126 |

127 | 2. Open the Extensions Options

128 | extensions 129 |
130 |
131 |  
132 |
133 |

134 | 3. Check "Allow access to file URLs"

135 | allow access 136 |
137 |
138 |

139 | 4. Click the button below

140 |
141 | View in Chrome 142 |
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 | {##} 26 | {##} 27 | {##} 28 | {##} 29 | {#{% for row in books %}#} 30 | {##} 31 | {##} 32 | {##} 33 | {##} 36 | 37 | {##} 38 | {#{% endfor %}#} 39 | {#
nazwaopisakcje
{{ row.name }}{{ row.description }}#} 34 | {#Edytuj#} 35 | {#
#} 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 | 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
{{currentPage}}

2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 |
IDNameStatusActions
{{category.catId}}{{category.catName}}{{category.catStatus}}
20 | 21 |
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 | 13 | 14 |
15 | 16 | 17 |
18 | 19 | 22 |
23 | 24 | 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 | -------------------------------------------------------------------------------- /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('
IDNameDescAuthor
'); 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('
IDNameDescAuthor
'); 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 | } --------------------------------------------------------------------------------