Commit 4253cbec26bd4a4f64cdcd4b4883f59f62d8e7c6
0 parents
first commit
Showing
1232 changed files
with
85997 additions
and
0 deletions
Show diff stats
Too many changes.
To preserve performance only 100 of 1232 files are displayed.
| 1 | +++ a/.gitignore | |
| 1 | +# yii console command | |
| 2 | +/yii | |
| 3 | + | |
| 4 | +# phpstorm project files | |
| 5 | +.idea | |
| 6 | + | |
| 7 | +# netbeans project files | |
| 8 | +nbproject | |
| 9 | + | |
| 10 | +# zend studio for eclipse project files | |
| 11 | +.buildpath | |
| 12 | +.project | |
| 13 | +.settings | |
| 14 | + | |
| 15 | +# windows thumbnail cache | |
| 16 | +Thumbs.db | |
| 17 | + | |
| 18 | +# composer vendor dir | |
| 19 | +/vendor | |
| 20 | + | |
| 21 | +# composer itself is not needed | |
| 22 | +composer.phar | |
| 23 | + | |
| 24 | +# Mac DS_Store Files | |
| 25 | +.DS_Store | |
| 26 | + | |
| 27 | +# phpunit itself is not needed | |
| 28 | +phpunit.phar | |
| 29 | +# local phpunit config | |
| 30 | +/phpunit.xml | |
| 31 | + | |
| 32 | +/storage | |
| 33 | +/common/config/main-local.php | |
| 34 | +/common/config/params-local.php | |
| 35 | +/backend/config/main-local.php | |
| 36 | +/backend/config/params-local.php | |
| 37 | +/backend/runtime/ | |
| 38 | +/frontend/config/main-local.php | |
| 39 | +/frontend/config/params-local.php | |
| 40 | +/frontend/runtime/ | |
| 41 | +/backend/web/assets/ | |
| 42 | +/frontend/web/assets/ | |
| 43 | +/frontend/web/upload/ | |
| 44 | +/frontend/web/css/node_modules/ | |
| 45 | +/frontend/web/images/ | |
| 46 | +/frontend/views/вертска | |
| 47 | +composer.lock | |
| 48 | + | |
| 49 | +tests/_output/* | |
| 50 | +/common/modules/_comment/ | |
| 51 | +Будет удалено common/modules/comment/ | ... | ... |
| 1 | +++ a/.htaccess | |
| 1 | +AddDefaultCharset utf-8 | |
| 2 | +<IfModule mod_rewrite.c> | |
| 3 | + | |
| 4 | + | |
| 5 | + Options +FollowSymlinks | |
| 6 | + | |
| 7 | + RewriteEngine On | |
| 8 | + | |
| 9 | +</IfModule> | |
| 10 | + | |
| 11 | +<IfModule mod_rewrite.c> | |
| 12 | + | |
| 13 | + RewriteBase / | |
| 14 | + # deal with admin first | |
| 15 | + | |
| 16 | + | |
| 17 | + Redirect 301 /Kak_vibrat_ryuksak / | |
| 18 | + Redirect 301 /products/ryukzaki /catalog/ryukzaki | |
| 19 | + Redirect 301 /products/koshel_ki /catalog/koshelki | |
| 20 | + Redirect 301 /products/nesessery /catalog/nesessery | |
| 21 | + Redirect 301 /products/sumki /catalog/sumki | |
| 22 | + Redirect 301 /products/germochehly /catalog/germocehly | |
| 23 | + | |
| 24 | + RewriteRule ^storage/(.*)?$ /storage/$1 [L,PT] | |
| 25 | + RewriteRule ^generator/(.*)?$ /generator/$1 [L,PT] | |
| 26 | + | |
| 27 | + RewriteCond %{REQUEST_URI} ^/(admin) | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + RewriteRule ^admin/assets/(.*)$ backend/web/assets/$1 [L] | |
| 32 | + | |
| 33 | + RewriteRule ^admin/css/(.*)$ backend/web/css/$1 [L] | |
| 34 | + | |
| 35 | + RewriteRule ^admin/js/(.*)$ backend/web/js/$1 [L] | |
| 36 | + | |
| 37 | + RewriteRule ^admin/images/(.*)$ backend/web/images/$1 [L] | |
| 38 | + | |
| 39 | + RewriteRule ^admin/fonts/(.*)$ backend/web/fonts/$1 [L] | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + RewriteCond %{REQUEST_URI} !^/backend/web/(assets|css|js|images|fonts)/ | |
| 46 | + | |
| 47 | + RewriteCond %{REQUEST_URI} ^/(admin) | |
| 48 | + | |
| 49 | + RewriteRule ^.*$ backend/web/index.php [L] | |
| 50 | + | |
| 51 | + | |
| 52 | + RewriteCond %{REQUEST_URI} ^/(assets|css) | |
| 53 | + | |
| 54 | + RewriteRule ^assets/(.*)$ frontend/web/assets/$1 [L] | |
| 55 | + | |
| 56 | + RewriteRule ^css/(.*)$ frontend/web/css/$1 [L] | |
| 57 | + | |
| 58 | + RewriteRule ^js/(.*)$ frontend/web/js/$1 [L] | |
| 59 | + | |
| 60 | + RewriteRule ^images/(.*)$ frontend/web/images/$1 [L] | |
| 61 | + | |
| 62 | + RewriteRule ^libraries/(.*)$ frontend/web/libraries/$1 [L] | |
| 63 | + | |
| 64 | + RewriteRule ^img/(.*)$ frontend/web/img/$1 [L] | |
| 65 | + | |
| 66 | + RewriteRule ^files/(.*)$ frontend/web/files/$1 [L] | |
| 67 | + | |
| 68 | + RewriteRule ^fonts/(.*)$ frontend/web/fonts/$1 [L] | |
| 69 | + | |
| 70 | + RewriteRule robots.txt$ frontend/web/robots.txt [L] | |
| 71 | + | |
| 72 | + RewriteRule sitemap.xml$ frontend/web/sitemap.xml [L] | |
| 73 | + | |
| 74 | + RewriteCond %{REQUEST_URI} !^/(frontend|backend)/web/(assets|css|txt|js|images|fonts|img|files)/ | |
| 75 | + | |
| 76 | + RewriteCond %{REQUEST_URI} !index.php | |
| 77 | + | |
| 78 | + RewriteCond %{REQUEST_FILENAME} !-f [OR] | |
| 79 | + | |
| 80 | + RewriteCond %{REQUEST_FILENAME} !-d | |
| 81 | + | |
| 82 | + | |
| 83 | + RewriteCond %{HTTP_HOST} ^www\.(.*) | |
| 84 | + RewriteRule ^(.*)$ frontend/web/index.php | |
| 85 | + | |
| 86 | + | |
| 87 | + RewriteCond %{HTTP_HOST} ^([^www].*)$ | |
| 88 | + RewriteRule (.*) http://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301] | |
| 89 | + | |
| 90 | + RewriteCond %{THE_REQUEST} \s/+(.+?)/+[?\s] | |
| 91 | + RewriteRule /$ /%1 [R,L] | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | +# RewriteCond %{HTTP_HOST} ^([^www].*)$ | |
| 96 | +# RewriteRule ^(.*)$ http://www.%1/$1 [R=301] | |
| 97 | + | |
| 98 | +</IfModule> | |
| 99 | + | |
| 100 | +#для возможности загрузки файлов парсера | |
| 101 | +<IfModule mod_php5.c> | |
| 102 | + php_value upload_max_filesize 20M | |
| 103 | + php_value post_max_size 30M | |
| 104 | +</IfModule> | |
| 105 | + | |
| 106 | + | |
| 107 | +# кеширование в браузере на стороне пользователя | |
| 108 | + | |
| 109 | +<IfModule mod_expires.c> | |
| 110 | + ExpiresActive On | |
| 111 | + ExpiresDefault "access 7 days" | |
| 112 | + ExpiresByType application/javascript "access plus 1 year" | |
| 113 | + ExpiresByType text/javascript "access plus 1 year" | |
| 114 | + ExpiresByType text/css "access plus 1 year" | |
| 115 | + ExpiresByType text/html "access plus 7 day" | |
| 116 | + ExpiresByType text/x-javascript "access 1 year" | |
| 117 | + ExpiresByType image/gif "access plus 1 year" | |
| 118 | + ExpiresByType image/jpeg "access plus 1 year" | |
| 119 | + ExpiresByType image/png "access plus 1 year" | |
| 120 | + ExpiresByType image/jpg "access plus 1 year" | |
| 121 | + ExpiresByType image/x-icon "access 1 year" | |
| 122 | + ExpiresByType application/x-shockwave-flash "access 1 year" | |
| 123 | + </IfModule> | |
| 124 | +<IfModule mod_deflate.c> | |
| 125 | +AddOutputFilterByType DEFLATE text/plain | |
| 126 | +AddOutputFilterByType DEFLATE text/html | |
| 127 | +AddOutputFilterByType DEFLATE text/xml | |
| 128 | +AddOutputFilterByType DEFLATE text/css | |
| 129 | +AddOutputFilterByType DEFLATE application/xml | |
| 130 | +AddOutputFilterByType DEFLATE application/xhtml+xml | |
| 131 | +AddOutputFilterByType DEFLATE application/rss+xml | |
| 132 | +AddOutputFilterByType DEFLATE application/javascript | |
| 133 | +AddOutputFilterByType DEFLATE application/x-javascript | |
| 134 | +BrowserMatch ^Mozilla/4 gzip-only-text/html | |
| 135 | +BrowserMatch ^Mozilla/4\.0[678] no-gzip | |
| 136 | +BrowserMatch \bMSIE !no-gzip !gzip-only-text/html | |
| 137 | +Header append Vary User-Agent | |
| 138 | +RewriteEngine On | |
| 139 | +AddEncoding gzip .gz | |
| 140 | +RewriteCond %{HTTP:Accept-encoding} gzip | |
| 141 | +RewriteCond %{REQUEST_FILENAME}.gz -f | |
| 142 | +RewriteRule ^(.*)$ $1.gz [QSA,L] | |
| 143 | +</IfModule> | |
| 144 | +# Cache-Control | |
| 145 | +<ifModule mod_headers.c> | |
| 146 | +# 30 дней | |
| 147 | + <filesMatch "\.(ico|pdf|flv|jpg|jpeg|png|gif|swf)$"> | |
| 148 | + Header set Cache-Control "max-age=2592000, public" | |
| 149 | + </filesMatch> | |
| 150 | + # 30 дней | |
| 151 | + <filesMatch "\.(css|js)$"> | |
| 152 | + Header set Cache-Control "max-age=2592000, public" | |
| 153 | + </filesMatch> | |
| 154 | + # 2 дня | |
| 155 | + <filesMatch "\.(xml|txt)$"> | |
| 156 | + Header set Cache-Control "max-age=172800, public, must-revalidate" | |
| 157 | + </filesMatch> | |
| 158 | + # 1 день | |
| 159 | + <filesMatch "\.(html|htm|php)$"> | |
| 160 | + Header set Cache-Control "max-age=172800, private, must-revalidate" | |
| 161 | + </filesMatch> | |
| 162 | +</ifModule> | |
| 163 | + | |
| 164 | +#Запрет отдачи HTTP-заголовков Vary браузерам семейства MSIE | |
| 165 | +<IfModule mod_setenvif.c> | |
| 166 | +BrowserMatch "MSIE" force-no-vary | |
| 167 | +BrowserMatch "Mozilla/4.[0-9]{2}" force-no-vary | |
| 168 | +</IfModule> | ... | ... |
| 1 | +++ a/LICENSE.md | |
| 1 | +The Yii framework is free software. It is released under the terms of | |
| 2 | +the following BSD License. | |
| 3 | + | |
| 4 | +Copyright © 2008 by Yii Software LLC (http://www.yiisoft.com) | |
| 5 | +All rights reserved. | |
| 6 | + | |
| 7 | +Redistribution and use in source and binary forms, with or without | |
| 8 | +modification, are permitted provided that the following conditions | |
| 9 | +are met: | |
| 10 | + | |
| 11 | + * Redistributions of source code must retain the above copyright | |
| 12 | + notice, this list of conditions and the following disclaimer. | |
| 13 | + * Redistributions in binary form must reproduce the above copyright | |
| 14 | + notice, this list of conditions and the following disclaimer in | |
| 15 | + the documentation and/or other materials provided with the | |
| 16 | + distribution. | |
| 17 | + * Neither the name of Yii Software LLC nor the names of its | |
| 18 | + contributors may be used to endorse or promote products derived | |
| 19 | + from this software without specific prior written permission. | |
| 20 | + | |
| 21 | +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS | |
| 22 | +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT | |
| 23 | +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS | |
| 24 | +FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE | |
| 25 | +COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, | |
| 26 | +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, | |
| 27 | +BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | |
| 28 | +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER | |
| 29 | +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT | |
| 30 | +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN | |
| 31 | +ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE | |
| 32 | +POSSIBILITY OF SUCH DAMAGE. | ... | ... |
| 1 | +++ a/README.md | |
| 1 | +Yii 2 Advanced Project Template | |
| 2 | +=============================== | |
| 3 | + | |
| 4 | +Yii 2 Advanced Project Template is a skeleton [Yii 2](http://www.yiiframework.com/) application best for | |
| 5 | +developing complex Web applications with multiple tiers. | |
| 6 | + | |
| 7 | +The template includes three tiers: front end, back end, and console, each of which | |
| 8 | +is a separate Yii application. | |
| 9 | + | |
| 10 | +The template is designed to work in a team development environment. It supports | |
| 11 | +deploying the application in different environments. | |
| 12 | + | |
| 13 | +Documentation is at [docs/guide/README.md](docs/guide/README.md). | |
| 14 | + | |
| 15 | +[](https://packagist.org/packages/yiisoft/yii2-app-advanced) | |
| 16 | +[](https://packagist.org/packages/yiisoft/yii2-app-advanced) | |
| 17 | +[](https://travis-ci.org/yiisoft/yii2-app-advanced) | |
| 18 | + | |
| 19 | +DIRECTORY STRUCTURE | |
| 20 | +------------------- | |
| 21 | + | |
| 22 | +``` | |
| 23 | +common | |
| 24 | + config/ contains shared configurations | |
| 25 | + mail/ contains view files for e-mails | |
| 26 | + models/ contains model classes used in both backend and frontend | |
| 27 | +console | |
| 28 | + config/ contains console configurations | |
| 29 | + controllers/ contains console controllers (commands) | |
| 30 | + migrations/ contains database migrations | |
| 31 | + models/ contains console-specific model classes | |
| 32 | + runtime/ contains files generated during runtime | |
| 33 | +backend | |
| 34 | + assets/ contains application assets such as JavaScript and CSS | |
| 35 | + config/ contains backend configurations | |
| 36 | + controllers/ contains Web controller classes | |
| 37 | + models/ contains backend-specific model classes | |
| 38 | + runtime/ contains files generated during runtime | |
| 39 | + views/ contains view files for the Web application | |
| 40 | + web/ contains the entry script and Web resources | |
| 41 | +frontend | |
| 42 | + assets/ contains application assets such as JavaScript and CSS | |
| 43 | + config/ contains frontend configurations | |
| 44 | + controllers/ contains Web controller classes | |
| 45 | + models/ contains frontend-specific model classes | |
| 46 | + runtime/ contains files generated during runtime | |
| 47 | + views/ contains view files for the Web application | |
| 48 | + web/ contains the entry script and Web resources | |
| 49 | + widgets/ contains frontend widgets | |
| 50 | +vendor/ contains dependent 3rd-party packages | |
| 51 | +environments/ contains environment-based overrides | |
| 52 | +tests contains various tests for the advanced application | |
| 53 | + codeception/ contains tests developed with Codeception PHP Testing Framework | |
| 54 | +``` | ... | ... |
| 1 | +++ a/backend/assets/AdminLteAsset.php | |
| 1 | +<?php | |
| 2 | +/** | |
| 3 | + * @link http://www.yiiframework.com/ | |
| 4 | + * @copyright Copyright (c) 2008 Yii Software LLC | |
| 5 | + * @license http://www.yiiframework.com/license/ | |
| 6 | + */ | |
| 7 | + | |
| 8 | +namespace backend\assets; | |
| 9 | + | |
| 10 | +use yii\web\AssetBundle; | |
| 11 | + | |
| 12 | +/** | |
| 13 | + * @author Qiang Xue <qiang.xue@gmail.com> | |
| 14 | + * @since 2.0 | |
| 15 | + */ | |
| 16 | +class AdminLteAsset extends AssetBundle | |
| 17 | +{ | |
| 18 | + public $sourcePath = '@bower/'; | |
| 19 | + public $css = [ | |
| 20 | + 'admin-lte/dist/css/AdminLTE.css', | |
| 21 | + 'admin-lte/dist/css/skins/_all-skins.css' | |
| 22 | + ]; | |
| 23 | + | |
| 24 | + public $js = [ | |
| 25 | + 'admin-lte/dist/js/app.js', | |
| 26 | + | |
| 27 | + ]; | |
| 28 | + public $depends = [ | |
| 29 | + 'yii\web\YiiAsset', | |
| 30 | + 'common\modules\file\FileUploadAsset', | |
| 31 | + 'yii\bootstrap\BootstrapPluginAsset', | |
| 32 | + 'backend\assets\FontAwesomeAsset', | |
| 33 | + | |
| 34 | + ]; | |
| 35 | +} | |
| 0 | 36 | \ No newline at end of file | ... | ... |
| 1 | +++ a/backend/assets/AppAsset.php | |
| 1 | +<?php | |
| 2 | +/** | |
| 3 | + * @link http://www.yiiframework.com/ | |
| 4 | + * @copyright Copyright (c) 2008 Yii Software LLC | |
| 5 | + * @license http://www.yiiframework.com/license/ | |
| 6 | + */ | |
| 7 | + | |
| 8 | +namespace backend\assets; | |
| 9 | + | |
| 10 | +use yii\web\AssetBundle; | |
| 11 | + | |
| 12 | +/** | |
| 13 | + * @author Qiang Xue <qiang.xue@gmail.com> | |
| 14 | + * @since 2.0 | |
| 15 | + */ | |
| 16 | +class AppAsset extends AssetBundle | |
| 17 | +{ | |
| 18 | + public $basePath = '@webroot'; | |
| 19 | + public $baseUrl = '@web'; | |
| 20 | + public $css = [ | |
| 21 | + 'css/site.css', | |
| 22 | + ]; | |
| 23 | + public $js = [ | |
| 24 | + 'js/fieldWidget.js', | |
| 25 | + 'js/site.js', | |
| 26 | + ]; | |
| 27 | + public $depends = [ | |
| 28 | + 'yii\web\YiiAsset', | |
| 29 | + 'yii\bootstrap\BootstrapAsset', | |
| 30 | + ]; | |
| 31 | +} | ... | ... |
| 1 | +++ a/backend/assets/FontAwesomeAsset.php | |
| 1 | +<?php | |
| 2 | +namespace backend\assets; | |
| 3 | + | |
| 4 | +use yii\web\AssetBundle; | |
| 5 | + | |
| 6 | +class FontAwesomeAsset extends AssetBundle | |
| 7 | +{ | |
| 8 | + // The files are not web directory accessible, therefore we need | |
| 9 | + // to specify the sourcePath property. Notice the @vendor alias used. | |
| 10 | + public $sourcePath = '@vendor/fortawesome/font-awesome'; | |
| 11 | + public $css = [ | |
| 12 | + 'css/font-awesome.css', | |
| 13 | + ]; | |
| 14 | +} | |
| 0 | 15 | \ No newline at end of file | ... | ... |
| 1 | +++ a/backend/config/bootstrap.php | |
| 1 | +<?php | |
| 2 | +Yii::setAlias('@uploadDir', dirname(dirname(__DIR__)) . '/storage/sync'); | |
| 3 | +Yii::setAlias('@uploadFileProducts', 'products.csv'); | |
| 4 | +Yii::setAlias('@uploadFilePrices', 'file_1.csv'); | |
| 5 | +Yii::setAlias('@uploadFilePricesAway', 'price_product_away.csv'); | |
| 6 | +Yii::setAlias('@uploadFilePricesDuplicate', 'price_duplicate.csv'); | |
| 7 | +Yii::setAlias('@uploadFilePricesNoVariant', 'price_no_variant.csv'); | |
| 8 | + | |
| 9 | +Yii::setAlias('@productsDir', '@storage/products'); | |
| 0 | 10 | \ No newline at end of file | ... | ... |
| 1 | +++ a/backend/config/main.php | |
| 1 | +<?php | |
| 2 | +use common\behaviors\ArtBoxAccessBehavior; | |
| 3 | +$params = array_merge( | |
| 4 | + require(__DIR__ . '/../../common/config/params.php'), | |
| 5 | + require(__DIR__ . '/../../common/config/params-local.php'), | |
| 6 | + require(__DIR__ . '/params.php'), | |
| 7 | + require(__DIR__ . '/params-local.php') | |
| 8 | +); | |
| 9 | + | |
| 10 | +return [ | |
| 11 | + 'id' => 'app-backend', | |
| 12 | + 'basePath' => dirname(__DIR__), | |
| 13 | + 'controllerMap' => [ | |
| 14 | + 'elfinder' => [ | |
| 15 | + 'class' => 'mihaildev\elfinder\Controller', | |
| 16 | + 'access' => ['@'], //глобальный доступ к фаил менеджеру @ - для авторизорованных , ? - для гостей , чтоб открыть всем ['@', '?'] | |
| 17 | + 'disabledCommands' => ['netmount'], //отключение ненужных команд https://github.com/Studio-42/elFinder/wiki/Client-configuration-options#commands | |
| 18 | + 'roots' => [ | |
| 19 | + [ | |
| 20 | + 'class' => 'mihaildev\elfinder\volume\UserPath', | |
| 21 | + 'path' => '../../storage/user_{id}', | |
| 22 | + 'name' => 'My Documents' | |
| 23 | + ], | |
| 24 | + ], | |
| 25 | + 'watermark' => [ | |
| 26 | + 'source' => __DIR__.'/logo.png', // Path to Water mark image | |
| 27 | + 'marginRight' => 5, // Margin right pixel | |
| 28 | + 'marginBottom' => 5, // Margin bottom pixel | |
| 29 | + 'quality' => 95, // JPEG image save quality | |
| 30 | + 'transparency' => 70, // Water mark image transparency ( other than PNG ) | |
| 31 | + 'targetType' => IMG_GIF|IMG_JPG|IMG_PNG|IMG_WBMP, // Target image formats ( bit-field ) | |
| 32 | + 'targetMinPixel' => 200 // Target image minimum pixel size | |
| 33 | + ] | |
| 34 | + ], | |
| 35 | + 'artbox-comments' => [ | |
| 36 | + 'class' => 'common\modules\comment\controllers\ManageController', | |
| 37 | + 'viewPath' => '@common/modules/comment/views/manage', | |
| 38 | + ], | |
| 39 | + ], | |
| 40 | + 'layout' => 'admin', | |
| 41 | + 'controllerNamespace' => 'backend\controllers', | |
| 42 | + 'bootstrap' => ['log'], | |
| 43 | + 'as AccessBehavior' => [ | |
| 44 | + 'class' => ArtBoxAccessBehavior::className(), | |
| 45 | + 'rules' => | |
| 46 | + [ | |
| 47 | + 'permit/access' => | |
| 48 | + [ | |
| 49 | + [ | |
| 50 | + 'actions' => ['role', 'permission','add-role', 'update-role','add-permission', 'update-permission' ], | |
| 51 | + 'allow' => true, | |
| 52 | + ] | |
| 53 | + ], | |
| 54 | + 'site' => | |
| 55 | + [ | |
| 56 | + [ | |
| 57 | + 'actions' => ['login', 'error','logout',], | |
| 58 | + 'allow' => true, | |
| 59 | + ], | |
| 60 | + [ | |
| 61 | + 'actions' => ['index'], | |
| 62 | + 'allow' => true, | |
| 63 | + 'roles' => ['@'], | |
| 64 | + ] | |
| 65 | + | |
| 66 | + ], | |
| 67 | + 'file/uploader' =>[ | |
| 68 | + [ | |
| 69 | + 'actions' => ['images-upload'], | |
| 70 | + 'allow' => true, | |
| 71 | + ] | |
| 72 | + ], | |
| 73 | + 'elfinder' => [ | |
| 74 | + [ | |
| 75 | + 'actions' => ['manager','connect'], | |
| 76 | + 'allow' => true, | |
| 77 | + ] | |
| 78 | + ] | |
| 79 | + | |
| 80 | + | |
| 81 | + ] | |
| 82 | + ], | |
| 83 | + 'modules' => [ | |
| 84 | + 'permit' => [ | |
| 85 | + 'class' => 'developeruz\db_rbac\Yii2DbRbac', | |
| 86 | + 'params' => [ | |
| 87 | + 'userClass' => 'backend\models\User' | |
| 88 | + ] | |
| 89 | + ], | |
| 90 | + | |
| 91 | + 'rubrication' => [ | |
| 92 | + 'class' => 'common\modules\rubrication\Module', | |
| 93 | + 'types' => [ | |
| 94 | + 'string' => 'Strings', | |
| 95 | + 'float' => 'Floating number', | |
| 96 | + 'int' => 'Integer number', | |
| 97 | + 'link' => 'Web-link', | |
| 98 | + ] | |
| 99 | + ], | |
| 100 | + 'product' => [ | |
| 101 | + 'class' => 'common\modules\product\Module' | |
| 102 | + ], | |
| 103 | + 'gridview' => [ | |
| 104 | + 'class' => '\kartik\grid\Module' | |
| 105 | + ], | |
| 106 | + 'artbox-comment' => [ | |
| 107 | + 'class' => 'common\modules\comment\Module', | |
| 108 | + 'userIdentityClass' => 'common\models\Customer', | |
| 109 | + ], | |
| 110 | + ], | |
| 111 | + 'components' => [ | |
| 112 | + 'authManager' => [ | |
| 113 | + 'class' => 'yii\rbac\DbManager', | |
| 114 | + ], | |
| 115 | + 'user' => [ | |
| 116 | + 'identityClass' => 'common\models\User', | |
| 117 | + 'enableAutoLogin' => true, | |
| 118 | + ], | |
| 119 | + 'log' => [ | |
| 120 | + 'traceLevel' => YII_DEBUG ? 3 : 0, | |
| 121 | + 'targets' => [ | |
| 122 | + [ | |
| 123 | + 'class' => 'yii\log\FileTarget', | |
| 124 | + 'levels' => ['error', 'warning'], | |
| 125 | + ], | |
| 126 | + ], | |
| 127 | + ], | |
| 128 | + 'imageCache' => [ | |
| 129 | + 'class' => 'iutbay\yii2imagecache\ImageCache', | |
| 130 | + 'sourcePath' => '@storage', | |
| 131 | + 'sourceUrl' => '/storage', | |
| 132 | + 'thumbsPath' => '@storage/thumbs', | |
| 133 | + 'thumbsUrl' => '/storage/thumbs', | |
| 134 | + | |
| 135 | + 'sizes' => [ | |
| 136 | + 'slider' => [720, 340], | |
| 137 | + ], | |
| 138 | + ], | |
| 139 | + 'errorHandler' => [ | |
| 140 | + 'errorAction' => 'site/error', | |
| 141 | + ], | |
| 142 | + 'request'=>[ | |
| 143 | + 'cookieValidationKey' => 'j4iuot9u5894e7tu8reyh78g9y54sy7i', | |
| 144 | + 'csrfParam' => '_backendCSRF', | |
| 145 | + | |
| 146 | + 'class' => 'common\components\Request', | |
| 147 | + | |
| 148 | + 'web'=> '/backend/web', | |
| 149 | + | |
| 150 | + 'adminUrl' => '/admin' | |
| 151 | + | |
| 152 | + ], | |
| 153 | + 'urlManager' => [ | |
| 154 | + 'baseUrl' => '/admin', | |
| 155 | + 'enablePrettyUrl' => true, | |
| 156 | + 'showScriptName' => false, | |
| 157 | + 'rules' => [ | |
| 158 | + 'slider-image/<action>/<slider_id:[A-Za-z0-9_-]+>/<id:[A-Za-z0-9_-]+>' => 'slider-image/<action>', | |
| 159 | + 'slider-image/<action>/<slider_id:[A-Za-z0-9_-]+>' => 'slider-image/<action>', | |
| 160 | + 'rubrication/tax-group/<level:[0-9]+>' => 'rubrication/tax-group', | |
| 161 | + 'rubrication/tax-group/<action>/<level:[0-9]+>/<id:[A-Za-z0-9_-]+>' => 'rubrication/tax-group/<action>', | |
| 162 | + 'rubrication/tax-group/<action>/<level:[0-9]+>' => 'rubrication/tax-group/<action>', | |
| 163 | + 'product/manage/<action>' => 'product/manage/<action>', | |
| 164 | + 'product/<controller>/<action>/<product_id:[A-Za-z0-9_-]+>/<id:[A-Za-z0-9_-]+>' => 'product/<controller>/<action>', | |
| 165 | + 'product/<controller>/<action>/<product_id:[A-Za-z0-9_-]+>/' => 'product/<controller>/<action>', | |
| 166 | + 'product/<action>/<product_id:[A-Za-z0-9_-]+>' => 'product/<action>', | |
| 167 | + 'seo-dynamic/<action>/<seo_category_id:[A-Za-z0-9_-]+>/<id:[A-Za-z0-9_-]+>' => 'seo-dynamic/<action>', | |
| 168 | + 'seo-dynamic/<action>/<seo_category_id:[A-Za-z0-9_-]+>' => 'seo-dynamic/<action>', | |
| 169 | + ] | |
| 170 | + ] | |
| 171 | + | |
| 172 | + ], | |
| 173 | + 'params' => $params, | |
| 174 | +]; | ... | ... |
| 1 | +++ a/backend/controllers/ArticlesController.php | |
| 1 | +<?php | |
| 2 | + | |
| 3 | +namespace backend\controllers; | |
| 4 | + | |
| 5 | +use Yii; | |
| 6 | +use common\models\Articles; | |
| 7 | +use common\models\ArticlesSearch; | |
| 8 | +use yii\web\Controller; | |
| 9 | +use yii\web\NotFoundHttpException; | |
| 10 | +use yii\filters\VerbFilter; | |
| 11 | +use developeruz\db_rbac\behaviors\AccessBehavior; | |
| 12 | +use yii\web\UploadedFile; | |
| 13 | + | |
| 14 | +/** | |
| 15 | + * ArticlesController implements the CRUD actions for Articles model. | |
| 16 | + */ | |
| 17 | +class ArticlesController extends Controller | |
| 18 | +{ | |
| 19 | + /** | |
| 20 | + * @inheritdoc | |
| 21 | + */ | |
| 22 | + public function behaviors() | |
| 23 | + { | |
| 24 | + return [ | |
| 25 | + 'access'=>[ | |
| 26 | + 'class' => AccessBehavior::className(), | |
| 27 | + 'rules' => | |
| 28 | + ['site' => | |
| 29 | + [ | |
| 30 | + [ | |
| 31 | + 'actions' => ['login', 'error'], | |
| 32 | + 'allow' => true, | |
| 33 | + ] | |
| 34 | + ] | |
| 35 | + ] | |
| 36 | + ], | |
| 37 | + 'verbs' => [ | |
| 38 | + 'class' => VerbFilter::className(), | |
| 39 | + 'actions' => [ | |
| 40 | + 'delete' => ['POST'], | |
| 41 | + ], | |
| 42 | + ], | |
| 43 | + ]; | |
| 44 | + } | |
| 45 | + | |
| 46 | + /** | |
| 47 | + * Lists all Articles models. | |
| 48 | + * @return mixed | |
| 49 | + */ | |
| 50 | + public function actionIndex() | |
| 51 | + { | |
| 52 | + $searchModel = new ArticlesSearch(); | |
| 53 | + $dataProvider = $searchModel->search(Yii::$app->request->queryParams); | |
| 54 | + | |
| 55 | + return $this->render('index', [ | |
| 56 | + 'searchModel' => $searchModel, | |
| 57 | + 'dataProvider' => $dataProvider, | |
| 58 | + ]); | |
| 59 | + } | |
| 60 | + | |
| 61 | + /** | |
| 62 | + * Displays a single Articles model. | |
| 63 | + * @param integer $id | |
| 64 | + * @return mixed | |
| 65 | + */ | |
| 66 | + public function actionView($id) | |
| 67 | + { | |
| 68 | + return $this->render('view', [ | |
| 69 | + 'model' => $this->findModel($id), | |
| 70 | + ]); | |
| 71 | + } | |
| 72 | + | |
| 73 | + /** | |
| 74 | + * Creates a new Articles model. | |
| 75 | + * If creation is successful, the browser will be redirected to the 'view' page. | |
| 76 | + * @return mixed | |
| 77 | + */ | |
| 78 | + public function actionCreate() | |
| 79 | + { | |
| 80 | + $model = new Articles(); | |
| 81 | + | |
| 82 | + if ($model->load(Yii::$app->request->post())) { | |
| 83 | + | |
| 84 | + if ( ($image = UploadedFile::getInstance($model, 'image')) ) { | |
| 85 | + $model->image = $image->name; | |
| 86 | + } | |
| 87 | + | |
| 88 | + $imgDir = Yii::getAlias('@storage/articles/'); | |
| 89 | + | |
| 90 | + if(!is_dir($imgDir)) { | |
| 91 | + mkdir($imgDir, 0755, true); | |
| 92 | + } | |
| 93 | + if ($model->save() && $image) { | |
| 94 | + $image->saveAs(Yii::getAlias('@storage/articles/' . $image->name)); | |
| 95 | + } | |
| 96 | + | |
| 97 | + return $this->redirect(['view', 'id' => $model->id]); | |
| 98 | + } else { | |
| 99 | + return $this->render('create', [ | |
| 100 | + 'model' => $model, | |
| 101 | + ]); | |
| 102 | + } | |
| 103 | + } | |
| 104 | + | |
| 105 | + /** | |
| 106 | + * Updates an existing Articles model. | |
| 107 | + * If update is successful, the browser will be redirected to the 'view' page. | |
| 108 | + * @param integer $id | |
| 109 | + * @return mixed | |
| 110 | + */ | |
| 111 | + public function actionUpdate($id) | |
| 112 | + { | |
| 113 | + $model = $this->findModel($id); | |
| 114 | + | |
| 115 | + if ($model->load(Yii::$app->request->post())) { | |
| 116 | + if ( ($image = UploadedFile::getInstance($model, 'image')) ) { | |
| 117 | + $model->image = $image->name; | |
| 118 | + } | |
| 119 | + | |
| 120 | + $imgDir = Yii::getAlias('@storage/articles/'); | |
| 121 | + | |
| 122 | + if(!is_dir($imgDir)) { | |
| 123 | + mkdir($imgDir, 0755, true); | |
| 124 | + } | |
| 125 | + if ($model->save() && $image) { | |
| 126 | + $image->saveAs(Yii::getAlias('@storage/articles/' . $image->name)); | |
| 127 | + } | |
| 128 | + | |
| 129 | + return $this->redirect(['view', 'id' => $model->id]); | |
| 130 | + } else { | |
| 131 | + return $this->render('update', [ | |
| 132 | + 'model' => $model, | |
| 133 | + ]); | |
| 134 | + } | |
| 135 | + } | |
| 136 | + | |
| 137 | + /** | |
| 138 | + * Deletes an existing Articles model. | |
| 139 | + * If deletion is successful, the browser will be redirected to the 'index' page. | |
| 140 | + * @param integer $id | |
| 141 | + * @return mixed | |
| 142 | + */ | |
| 143 | + public function actionDelete($id) | |
| 144 | + { | |
| 145 | + $this->findModel($id)->delete(); | |
| 146 | + | |
| 147 | + return $this->redirect(['index']); | |
| 148 | + } | |
| 149 | + | |
| 150 | + /** | |
| 151 | + * Finds the Articles model based on its primary key value. | |
| 152 | + * If the model is not found, a 404 HTTP exception will be thrown. | |
| 153 | + * @param integer $id | |
| 154 | + * @return Articles the loaded model | |
| 155 | + * @throws NotFoundHttpException if the model cannot be found | |
| 156 | + */ | |
| 157 | + protected function findModel($id) | |
| 158 | + { | |
| 159 | + if (($model = Articles::findOne($id)) !== null) { | |
| 160 | + return $model; | |
| 161 | + } else { | |
| 162 | + throw new NotFoundHttpException('The requested page does not exist.'); | |
| 163 | + } | |
| 164 | + } | |
| 165 | +} | ... | ... |
| 1 | +++ a/backend/controllers/BannerController.php | |
| 1 | +<?php | |
| 2 | + | |
| 3 | +namespace backend\controllers; | |
| 4 | + | |
| 5 | +use common\modules\file\widgets\ImageUploader; | |
| 6 | +use Yii; | |
| 7 | +use common\models\Banner; | |
| 8 | +use common\models\BannerSearch; | |
| 9 | +use yii\web\Controller; | |
| 10 | +use yii\web\NotFoundHttpException; | |
| 11 | +use yii\filters\VerbFilter; | |
| 12 | +use developeruz\db_rbac\behaviors\AccessBehavior; | |
| 13 | +/** | |
| 14 | + * BannerController implements the CRUD actions for Banner model. | |
| 15 | + */ | |
| 16 | +class BannerController extends Controller | |
| 17 | +{ | |
| 18 | + /** | |
| 19 | + * @inheritdoc | |
| 20 | + */ | |
| 21 | + public function behaviors() | |
| 22 | + { | |
| 23 | + return [ | |
| 24 | + 'access'=>[ | |
| 25 | + 'class' => AccessBehavior::className(), | |
| 26 | + 'rules' => | |
| 27 | + ['site' => | |
| 28 | + [ | |
| 29 | + [ | |
| 30 | + 'actions' => ['login', 'error'], | |
| 31 | + 'allow' => true, | |
| 32 | + ] | |
| 33 | + ] | |
| 34 | + ] | |
| 35 | + ], | |
| 36 | + 'verbs' => [ | |
| 37 | + 'class' => VerbFilter::className(), | |
| 38 | + 'actions' => [ | |
| 39 | + 'delete' => ['POST'], | |
| 40 | + ], | |
| 41 | + ], | |
| 42 | + ]; | |
| 43 | + } | |
| 44 | + | |
| 45 | + /** | |
| 46 | + * Lists all Banner models. | |
| 47 | + * @return mixed | |
| 48 | + */ | |
| 49 | + public function actionIndex() | |
| 50 | + { | |
| 51 | + $searchModel = new BannerSearch(); | |
| 52 | + $dataProvider = $searchModel->search(Yii::$app->request->queryParams); | |
| 53 | + | |
| 54 | + return $this->render('index', [ | |
| 55 | + 'searchModel' => $searchModel, | |
| 56 | + 'dataProvider' => $dataProvider, | |
| 57 | + ]); | |
| 58 | + } | |
| 59 | + | |
| 60 | + public function actionSaveImageSettings(){ | |
| 61 | + \Yii::$app->response->format = \yii\web\Response::FORMAT_JSON; | |
| 62 | + $width = Yii::$app->request->post('width'); | |
| 63 | + $height = Yii::$app->request->post('height'); | |
| 64 | + | |
| 65 | + $html = ImageUploader::widget([ | |
| 66 | + 'model'=> new Banner(), | |
| 67 | + 'field'=>'image', | |
| 68 | + 'size' => [ | |
| 69 | + [ | |
| 70 | + 'width'=>$width, | |
| 71 | + 'height'=>$height, | |
| 72 | + ], | |
| 73 | + ], | |
| 74 | + 'name' => "Загрузить баннер" | |
| 75 | + ]); | |
| 76 | + | |
| 77 | + return ['html'=>$html]; | |
| 78 | + } | |
| 79 | + | |
| 80 | + /** | |
| 81 | + * Displays a single Banner model. | |
| 82 | + * @param integer $id | |
| 83 | + * @return mixed | |
| 84 | + */ | |
| 85 | + public function actionView($id) | |
| 86 | + { | |
| 87 | + return $this->render('view', [ | |
| 88 | + 'model' => $this->findModel($id), | |
| 89 | + ]); | |
| 90 | + } | |
| 91 | + | |
| 92 | + /** | |
| 93 | + * Creates a new Banner model. | |
| 94 | + * If creation is successful, the browser will be redirected to the 'view' page. | |
| 95 | + * @return mixed | |
| 96 | + */ | |
| 97 | + public function actionCreate() | |
| 98 | + { | |
| 99 | + $model = new Banner(); | |
| 100 | + | |
| 101 | + if ($model->load(Yii::$app->request->post()) && $model->save()) { | |
| 102 | + return $this->redirect(['view', 'id' => $model->banner_id]); | |
| 103 | + } else { | |
| 104 | + return $this->render('create', [ | |
| 105 | + 'model' => $model, | |
| 106 | + ]); | |
| 107 | + } | |
| 108 | + } | |
| 109 | + | |
| 110 | + /** | |
| 111 | + * Updates an existing Banner model. | |
| 112 | + * If update is successful, the browser will be redirected to the 'view' page. | |
| 113 | + * @param integer $id | |
| 114 | + * @return mixed | |
| 115 | + */ | |
| 116 | + public function actionUpdate($id) | |
| 117 | + { | |
| 118 | + $model = $this->findModel($id); | |
| 119 | + | |
| 120 | + if ($model->load(Yii::$app->request->post()) && $model->save()) { | |
| 121 | + return $this->redirect(['view', 'id' => $model->banner_id]); | |
| 122 | + } else { | |
| 123 | + return $this->render('update', [ | |
| 124 | + 'model' => $model, | |
| 125 | + ]); | |
| 126 | + } | |
| 127 | + } | |
| 128 | + | |
| 129 | + /** | |
| 130 | + * Deletes an existing Banner model. | |
| 131 | + * If deletion is successful, the browser will be redirected to the 'index' page. | |
| 132 | + * @param integer $id | |
| 133 | + * @return mixed | |
| 134 | + */ | |
| 135 | + public function actionDelete($id) | |
| 136 | + { | |
| 137 | + $this->findModel($id)->delete(); | |
| 138 | + | |
| 139 | + return $this->redirect(['index']); | |
| 140 | + } | |
| 141 | + | |
| 142 | + /** | |
| 143 | + * Finds the Banner model based on its primary key value. | |
| 144 | + * If the model is not found, a 404 HTTP exception will be thrown. | |
| 145 | + * @param integer $id | |
| 146 | + * @return Banner the loaded model | |
| 147 | + * @throws NotFoundHttpException if the model cannot be found | |
| 148 | + */ | |
| 149 | + protected function findModel($id) | |
| 150 | + { | |
| 151 | + if (($model = Banner::findOne($id)) !== null) { | |
| 152 | + return $model; | |
| 153 | + } else { | |
| 154 | + throw new NotFoundHttpException('The requested page does not exist.'); | |
| 155 | + } | |
| 156 | + } | |
| 157 | +} | ... | ... |
| 1 | +++ a/backend/controllers/BgController.php | |
| 1 | +<?php | |
| 2 | + | |
| 3 | +namespace backend\controllers; | |
| 4 | + | |
| 5 | +use Yii; | |
| 6 | +use common\models\Bg; | |
| 7 | +use common\models\BgSearch; | |
| 8 | +use yii\web\Controller; | |
| 9 | +use yii\web\NotFoundHttpException; | |
| 10 | +use yii\filters\VerbFilter; | |
| 11 | +use developeruz\db_rbac\behaviors\AccessBehavior; | |
| 12 | +/** | |
| 13 | + * BgController implements the CRUD actions for Bg model. | |
| 14 | + */ | |
| 15 | +class BgController extends Controller | |
| 16 | +{ | |
| 17 | + /** | |
| 18 | + * @inheritdoc | |
| 19 | + */ | |
| 20 | + public function behaviors() | |
| 21 | + { | |
| 22 | + return [ | |
| 23 | + 'access'=>[ | |
| 24 | + 'class' => AccessBehavior::className(), | |
| 25 | + 'rules' => | |
| 26 | + ['site' => | |
| 27 | + [ | |
| 28 | + [ | |
| 29 | + 'actions' => ['login', 'error'], | |
| 30 | + 'allow' => true, | |
| 31 | + ] | |
| 32 | + ] | |
| 33 | + ] | |
| 34 | + ], | |
| 35 | + 'verbs' => [ | |
| 36 | + 'class' => VerbFilter::className(), | |
| 37 | + 'actions' => [ | |
| 38 | + 'delete' => ['POST'], | |
| 39 | + ], | |
| 40 | + ], | |
| 41 | + ]; | |
| 42 | + } | |
| 43 | + | |
| 44 | + /** | |
| 45 | + * Lists all Bg models. | |
| 46 | + * @return mixed | |
| 47 | + */ | |
| 48 | + public function actionIndex() | |
| 49 | + { | |
| 50 | + $searchModel = new BgSearch(); | |
| 51 | + $dataProvider = $searchModel->search(Yii::$app->request->queryParams); | |
| 52 | + | |
| 53 | + return $this->render('index', [ | |
| 54 | + 'searchModel' => $searchModel, | |
| 55 | + 'dataProvider' => $dataProvider, | |
| 56 | + ]); | |
| 57 | + } | |
| 58 | + | |
| 59 | + /** | |
| 60 | + * Displays a single Bg model. | |
| 61 | + * @param integer $id | |
| 62 | + * @return mixed | |
| 63 | + */ | |
| 64 | + public function actionView($id) | |
| 65 | + { | |
| 66 | + return $this->render('view', [ | |
| 67 | + 'model' => $this->findModel($id), | |
| 68 | + ]); | |
| 69 | + } | |
| 70 | + | |
| 71 | + /** | |
| 72 | + * Creates a new Bg model. | |
| 73 | + * If creation is successful, the browser will be redirected to the 'view' page. | |
| 74 | + * @return mixed | |
| 75 | + */ | |
| 76 | + public function actionCreate() | |
| 77 | + { | |
| 78 | + $model = new Bg(); | |
| 79 | + | |
| 80 | + if ($model->load(Yii::$app->request->post()) && $model->save()) { | |
| 81 | + return $this->redirect(['view', 'id' => $model->id]); | |
| 82 | + } else { | |
| 83 | + return $this->render('create', [ | |
| 84 | + 'model' => $model, | |
| 85 | + ]); | |
| 86 | + } | |
| 87 | + } | |
| 88 | + | |
| 89 | + /** | |
| 90 | + * Updates an existing Bg model. | |
| 91 | + * If update is successful, the browser will be redirected to the 'view' page. | |
| 92 | + * @param integer $id | |
| 93 | + * @return mixed | |
| 94 | + */ | |
| 95 | + public function actionUpdate($id) | |
| 96 | + { | |
| 97 | + $model = $this->findModel($id); | |
| 98 | + | |
| 99 | + if ($model->load(Yii::$app->request->post()) && $model->save()) { | |
| 100 | + return $this->redirect(['view', 'id' => $model->id]); | |
| 101 | + } else { | |
| 102 | + return $this->render('update', [ | |
| 103 | + 'model' => $model, | |
| 104 | + ]); | |
| 105 | + } | |
| 106 | + } | |
| 107 | + | |
| 108 | + /** | |
| 109 | + * Deletes an existing Bg model. | |
| 110 | + * If deletion is successful, the browser will be redirected to the 'index' page. | |
| 111 | + * @param integer $id | |
| 112 | + * @return mixed | |
| 113 | + */ | |
| 114 | + public function actionDelete($id) | |
| 115 | + { | |
| 116 | + $this->findModel($id)->delete(); | |
| 117 | + | |
| 118 | + return $this->redirect(['index']); | |
| 119 | + } | |
| 120 | + | |
| 121 | + /** | |
| 122 | + * Finds the Bg model based on its primary key value. | |
| 123 | + * If the model is not found, a 404 HTTP exception will be thrown. | |
| 124 | + * @param integer $id | |
| 125 | + * @return Bg the loaded model | |
| 126 | + * @throws NotFoundHttpException if the model cannot be found | |
| 127 | + */ | |
| 128 | + protected function findModel($id) | |
| 129 | + { | |
| 130 | + if (($model = Bg::findOne($id)) !== null) { | |
| 131 | + return $model; | |
| 132 | + } else { | |
| 133 | + throw new NotFoundHttpException('The requested page does not exist.'); | |
| 134 | + } | |
| 135 | + } | |
| 136 | +} | ... | ... |
| 1 | +++ a/backend/controllers/BlogController.php | |
| 1 | +<?php | |
| 2 | + | |
| 3 | +namespace backend\controllers; | |
| 4 | +use developeruz\db_rbac\behaviors\AccessBehavior; | |
| 5 | +use common\models\Fields; | |
| 6 | +use Yii; | |
| 7 | +use common\models\Blog; | |
| 8 | +use common\models\BlogSearch; | |
| 9 | +use yii\web\Controller; | |
| 10 | +use yii\web\NotFoundHttpException; | |
| 11 | +use yii\filters\VerbFilter; | |
| 12 | +use yii\filters\AccessControl; | |
| 13 | +/** | |
| 14 | + * BlogController implements the CRUD actions for Blog model. | |
| 15 | + */ | |
| 16 | +class BlogController extends Controller | |
| 17 | +{ | |
| 18 | + | |
| 19 | + /** | |
| 20 | + * @inheritdoc | |
| 21 | + */ | |
| 22 | + public function behaviors() | |
| 23 | + { | |
| 24 | + return [ | |
| 25 | + 'access'=>[ | |
| 26 | + 'class' => AccessBehavior::className(), | |
| 27 | + 'rules' => | |
| 28 | + ['site' => | |
| 29 | + [ | |
| 30 | + [ | |
| 31 | + 'actions' => ['login', 'error'], | |
| 32 | + 'allow' => true, | |
| 33 | + ] | |
| 34 | + ] | |
| 35 | + ] | |
| 36 | + ], | |
| 37 | + 'verbs' => [ | |
| 38 | + 'class' => VerbFilter::className(), | |
| 39 | + 'actions' => [ | |
| 40 | + 'logout' => ['post'], | |
| 41 | + ], | |
| 42 | + ], | |
| 43 | + ]; | |
| 44 | + } | |
| 45 | + | |
| 46 | + /** | |
| 47 | + * Lists all Blog models. | |
| 48 | + * @return mixed | |
| 49 | + */ | |
| 50 | + public function actionIndex() | |
| 51 | + { | |
| 52 | + $searchModel = new BlogSearch(); | |
| 53 | + $dataProvider = $searchModel->search(Yii::$app->request->queryParams); | |
| 54 | + | |
| 55 | + return $this->render('index', [ | |
| 56 | + 'searchModel' => $searchModel, | |
| 57 | + 'dataProvider' => $dataProvider, | |
| 58 | + ]); | |
| 59 | + } | |
| 60 | + | |
| 61 | + /** | |
| 62 | + * Displays a single Blog model. | |
| 63 | + * @param integer $id | |
| 64 | + * @return mixed | |
| 65 | + */ | |
| 66 | + public function actionView($id) | |
| 67 | + { | |
| 68 | + return $this->render('view', [ | |
| 69 | + 'model' => $this->findModel($id), | |
| 70 | + ]); | |
| 71 | + } | |
| 72 | + | |
| 73 | + /** | |
| 74 | + * Creates a new Blog model. | |
| 75 | + * If creation is successful, the browser will be redirected to the 'view' page. | |
| 76 | + * @return mixed | |
| 77 | + */ | |
| 78 | + public function actionCreate() | |
| 79 | + { | |
| 80 | + $model = new Blog(); | |
| 81 | + | |
| 82 | + if ($model->load(Yii::$app->request->post())) { | |
| 83 | + | |
| 84 | + Fields::saveFieldData(Yii::$app->request->post('Fields'), $model->blog_id, Blog::className(), 'ru'); | |
| 85 | + | |
| 86 | + if ( ($image = UploadedFile::getInstance($model, 'imageUpload')) ) { | |
| 87 | + $model->cover = $image->name; | |
| 88 | + } | |
| 89 | + | |
| 90 | + if ($model->save() && $image) { | |
| 91 | + $image->saveAs(Yii::getAlias('@imagesDir/articles/' . $image->name)); | |
| 92 | + } | |
| 93 | + | |
| 94 | + return $this->redirect(['view', 'id' => $model->blog_id]); | |
| 95 | + } else { | |
| 96 | + return $this->render('create', [ | |
| 97 | + 'model' => $model, | |
| 98 | + ]); | |
| 99 | + } | |
| 100 | + } | |
| 101 | + | |
| 102 | + /** | |
| 103 | + * Updates an existing Blog model. | |
| 104 | + * If update is successful, the browser will be redirected to the 'view' page. | |
| 105 | + * @param integer $id | |
| 106 | + * @return mixed | |
| 107 | + */ | |
| 108 | + public function actionUpdate($id) | |
| 109 | + { | |
| 110 | + $model = $this->findModel($id); | |
| 111 | + | |
| 112 | + if ($model->load(Yii::$app->request->post())) { | |
| 113 | + | |
| 114 | + Fields::saveFieldData(Yii::$app->request->post('Fields'), $model->blog_id, Blog::className(), 'ru'); | |
| 115 | + | |
| 116 | + if ( ($image = UploadedFile::getInstance($model, 'imageUpload')) ) { | |
| 117 | + $model->cover = $image->name; | |
| 118 | + } | |
| 119 | + | |
| 120 | + if ($model->save() && $image) { | |
| 121 | + $image->saveAs(Yii::getAlias('@imagesDir/articles/' . $image->name)); | |
| 122 | + } | |
| 123 | + | |
| 124 | + return $this->redirect(['view', 'id' => $model->blog_id]); | |
| 125 | + } else { | |
| 126 | + return $this->render('update', [ | |
| 127 | + 'model' => $model, | |
| 128 | + ]); | |
| 129 | + } | |
| 130 | + } | |
| 131 | + | |
| 132 | + /** | |
| 133 | + * Deletes an existing Blog model. | |
| 134 | + * If deletion is successful, the browser will be redirected to the 'index' page. | |
| 135 | + * @param integer $id | |
| 136 | + * @return mixed | |
| 137 | + */ | |
| 138 | + public function actionDelete($id) | |
| 139 | + { | |
| 140 | + $this->findModel($id)->delete(); | |
| 141 | + | |
| 142 | + return $this->redirect(['index']); | |
| 143 | + } | |
| 144 | + | |
| 145 | + /** | |
| 146 | + * Finds the Blog model based on its primary key value. | |
| 147 | + * If the model is not found, a 404 HTTP exception will be thrown. | |
| 148 | + * @param integer $id | |
| 149 | + * @return Blog the loaded model | |
| 150 | + * @throws NotFoundHttpException if the model cannot be found | |
| 151 | + */ | |
| 152 | + protected function findModel($id) | |
| 153 | + { | |
| 154 | + if (($model = Blog::findOne($id)) !== null) { | |
| 155 | + return $model; | |
| 156 | + } else { | |
| 157 | + throw new NotFoundHttpException('The requested page does not exist.'); | |
| 158 | + } | |
| 159 | + } | |
| 160 | +} | ... | ... |
| 1 | +++ a/backend/controllers/BrandController.php | |
| 1 | +<?php | |
| 2 | + | |
| 3 | +namespace backend\controllers; | |
| 4 | + | |
| 5 | +use Yii; | |
| 6 | +use common\modules\product\models\Brand; | |
| 7 | +use common\modules\product\models\BrandSearch; | |
| 8 | +use yii\web\Controller; | |
| 9 | +use yii\web\NotFoundHttpException; | |
| 10 | +use yii\filters\VerbFilter; | |
| 11 | +use yii\filters\AccessControl; | |
| 12 | +use yii\web\UploadedFile; | |
| 13 | + | |
| 14 | +/** | |
| 15 | + * BrandController implements the CRUD actions for Brand model. | |
| 16 | + */ | |
| 17 | +class BrandController extends Controller | |
| 18 | +{ | |
| 19 | + /** | |
| 20 | + * @inheritdoc | |
| 21 | + */ | |
| 22 | + public function behaviors() | |
| 23 | + { | |
| 24 | + return [ | |
| 25 | + 'access' => [ | |
| 26 | + 'class' => AccessControl::className(), | |
| 27 | + 'rules' => [ | |
| 28 | + [ | |
| 29 | + 'actions' => ['login', 'error'], | |
| 30 | + 'allow' => true, | |
| 31 | + ], | |
| 32 | + [ | |
| 33 | + 'actions' => ['logout', 'index', 'create', 'update', 'view', 'delete'], | |
| 34 | + 'allow' => true, | |
| 35 | + 'roles' => ['@'], | |
| 36 | + ], | |
| 37 | + ], | |
| 38 | + ], | |
| 39 | + 'verbs' => [ | |
| 40 | + 'class' => VerbFilter::className(), | |
| 41 | + 'actions' => [ | |
| 42 | + 'logout' => ['post'], | |
| 43 | + ], | |
| 44 | + ], | |
| 45 | + ]; | |
| 46 | + } | |
| 47 | + | |
| 48 | + /** | |
| 49 | + * Lists all Brand models. | |
| 50 | + * @return mixed | |
| 51 | + */ | |
| 52 | + public function actionIndex() | |
| 53 | + { | |
| 54 | + $searchModel = new BrandSearch(); | |
| 55 | + $dataProvider = $searchModel->search(Yii::$app->request->queryParams); | |
| 56 | + | |
| 57 | + return $this->render('index', [ | |
| 58 | + 'searchModel' => $searchModel, | |
| 59 | + 'dataProvider' => $dataProvider, | |
| 60 | + ]); | |
| 61 | + } | |
| 62 | + | |
| 63 | + /** | |
| 64 | + * Displays a single Brand model. | |
| 65 | + * @param integer $id | |
| 66 | + * @return mixed | |
| 67 | + */ | |
| 68 | + public function actionView($id) | |
| 69 | + { | |
| 70 | + return $this->render('view', [ | |
| 71 | + 'model' => $this->findModel($id), | |
| 72 | + ]); | |
| 73 | + } | |
| 74 | + | |
| 75 | + /** | |
| 76 | + * Creates a new Brand model. | |
| 77 | + * If creation is successful, the browser will be redirected to the 'view' page. | |
| 78 | + * @return mixed | |
| 79 | + */ | |
| 80 | + public function actionCreate() | |
| 81 | + { | |
| 82 | + $model = new Brand(); | |
| 83 | + if ($model->load(Yii::$app->request->post())) { | |
| 84 | + if ( ($image = UploadedFile::getInstance($model, 'imageUpload')) ) { | |
| 85 | + $model->image = $image->name; | |
| 86 | + } | |
| 87 | + | |
| 88 | + if ($model->save() && $image) { | |
| 89 | + $image->saveAs(Yii::getAlias('@imagesDir/brands/' . $image->name)); | |
| 90 | + } | |
| 91 | + | |
| 92 | + return is_null(Yii::$app->request->post('create_and_new')) ? $this->redirect(['view', 'id' => $model->brand_id]) : $this->redirect(array_merge(['create'], Yii::$app->request->queryParams)); | |
| 93 | + } else { | |
| 94 | + return $this->render('create', [ | |
| 95 | + 'model' => $model, | |
| 96 | + ]); | |
| 97 | + } | |
| 98 | + } | |
| 99 | + | |
| 100 | + /** | |
| 101 | + * Updates an existing Brand model. | |
| 102 | + * If update is successful, the browser will be redirected to the 'view' page. | |
| 103 | + * @param integer $id | |
| 104 | + * @return mixed | |
| 105 | + */ | |
| 106 | + public function actionUpdate($id) | |
| 107 | + { | |
| 108 | + $model = $this->findModel($id); | |
| 109 | + | |
| 110 | + if ($model->load(Yii::$app->request->post())) { | |
| 111 | + if ( ($image = UploadedFile::getInstance($model, 'imageUpload')) ) { | |
| 112 | + $model->image = $image->name; | |
| 113 | + } | |
| 114 | + | |
| 115 | + if ($model->save() && $image) { | |
| 116 | + $image->saveAs(Yii::getAlias('@imagesDir/brands/' . $image->name)); | |
| 117 | + } | |
| 118 | + | |
| 119 | + return $this->redirect(['view', 'id' => $model->brand_id]); | |
| 120 | + } else { | |
| 121 | + return $this->render('update', [ | |
| 122 | + 'model' => $model, | |
| 123 | + ]); | |
| 124 | + } | |
| 125 | + } | |
| 126 | + | |
| 127 | + /** | |
| 128 | + * Deletes an existing Brand model. | |
| 129 | + * If deletion is successful, the browser will be redirected to the 'index' page. | |
| 130 | + * @param integer $id | |
| 131 | + * @return mixed | |
| 132 | + */ | |
| 133 | + public function actionDelete($id) | |
| 134 | + { | |
| 135 | + $this->findModel($id)->delete(); | |
| 136 | + | |
| 137 | + return $this->redirect(['index']); | |
| 138 | + } | |
| 139 | + | |
| 140 | + /** | |
| 141 | + * Finds the Brand model based on its primary key value. | |
| 142 | + * If the model is not found, a 404 HTTP exception will be thrown. | |
| 143 | + * @param integer $id | |
| 144 | + * @return Brand the loaded model | |
| 145 | + * @throws NotFoundHttpException if the model cannot be found | |
| 146 | + */ | |
| 147 | + protected function findModel($id) | |
| 148 | + { | |
| 149 | + if (($model = Brand::findOne($id)) !== null) { | |
| 150 | + return $model; | |
| 151 | + } else { | |
| 152 | + throw new NotFoundHttpException('The requested page does not exist.'); | |
| 153 | + } | |
| 154 | + } | |
| 155 | +} | ... | ... |
| 1 | +++ a/backend/controllers/CategoryController.php | |
| 1 | +<?php | |
| 2 | + | |
| 3 | +namespace backend\controllers; | |
| 4 | +use developeruz\db_rbac\behaviors\AccessBehavior; | |
| 5 | +use common\components\artboxtree\ArtboxTreeHelper; | |
| 6 | +use Yii; | |
| 7 | +use common\modules\product\models\Category; | |
| 8 | +use common\modules\product\models\CategorySearch; | |
| 9 | +use yii\helpers\ArrayHelper; | |
| 10 | +use yii\web\Controller; | |
| 11 | +use yii\web\NotFoundHttpException; | |
| 12 | +use yii\filters\VerbFilter; | |
| 13 | +use yii\filters\AccessControl; | |
| 14 | +use yii\web\UploadedFile; | |
| 15 | + | |
| 16 | +/** | |
| 17 | + * CategoryController implements the CRUD actions for Category model. | |
| 18 | + */ | |
| 19 | +class CategoryController extends Controller | |
| 20 | +{ | |
| 21 | + /** | |
| 22 | + * @inheritdoc | |
| 23 | + */ | |
| 24 | + public function behaviors() | |
| 25 | + { | |
| 26 | + return [ | |
| 27 | + 'access'=>[ | |
| 28 | + 'class' => AccessBehavior::className(), | |
| 29 | + 'rules' => | |
| 30 | + ['site' => | |
| 31 | + [ | |
| 32 | + [ | |
| 33 | + 'actions' => ['login', 'error'], | |
| 34 | + 'allow' => true, | |
| 35 | + ] | |
| 36 | + ] | |
| 37 | + ] | |
| 38 | + ], | |
| 39 | + 'verbs' => [ | |
| 40 | + 'class' => VerbFilter::className(), | |
| 41 | + 'actions' => [ | |
| 42 | + 'logout' => ['post'], | |
| 43 | + ], | |
| 44 | + ], | |
| 45 | + ]; | |
| 46 | + } | |
| 47 | + | |
| 48 | + /** | |
| 49 | + * Lists all Category models. | |
| 50 | + * @return mixed | |
| 51 | + */ | |
| 52 | + public function actionIndex() | |
| 53 | + { | |
| 54 | + $searchModel = new CategorySearch(); | |
| 55 | + $dataProvider = $searchModel->search(Yii::$app->request->queryParams); | |
| 56 | + | |
| 57 | + return $this->render('index', [ | |
| 58 | + 'searchModel' => $searchModel, | |
| 59 | + 'dataProvider' => $dataProvider, | |
| 60 | + ]); | |
| 61 | + } | |
| 62 | + | |
| 63 | + /** | |
| 64 | + * Displays a single Category model. | |
| 65 | + * @param integer $id | |
| 66 | + * @return mixed | |
| 67 | + */ | |
| 68 | + public function actionView($id) | |
| 69 | + { | |
| 70 | + return $this->render('view', [ | |
| 71 | + 'model' => $this->findModel($id), | |
| 72 | + ]); | |
| 73 | + } | |
| 74 | + | |
| 75 | + /** | |
| 76 | + * Creates a new Category model. | |
| 77 | + * If creation is successful, the browser will be redirected to the 'view' page. | |
| 78 | + * @return mixed | |
| 79 | + */ | |
| 80 | + public function actionCreate() | |
| 81 | + { | |
| 82 | + $model = new Category(); | |
| 83 | + | |
| 84 | + if ($model->load(Yii::$app->request->post())) { | |
| 85 | + if ( ($image = UploadedFile::getInstance($model, 'imageUpload')) ) { | |
| 86 | + $model->image = $image->name; | |
| 87 | + } | |
| 88 | + | |
| 89 | + if ($model->save() && $image) { | |
| 90 | + $image->saveAs(Yii::getAlias('@imagesDir/categories/' . $image->name)); | |
| 91 | + } | |
| 92 | + | |
| 93 | + return is_null(Yii::$app->request->post('create_and_new')) ? $this->redirect(['view', 'id' => $model->category_id]) : $this->redirect(array_merge(['create'], Yii::$app->request->queryParams)); | |
| 94 | + } else { | |
| 95 | + if (!empty(Yii::$app->request->queryParams['parent'])) { | |
| 96 | + $model->parent_id = Yii::$app->request->queryParams['parent']; | |
| 97 | + } | |
| 98 | + return $this->render('create', [ | |
| 99 | + 'model' => $model, | |
| 100 | + 'categories' => ArtboxTreeHelper::treeMap(Category::find()->with('categoryName')->getTree(), 'category_id', 'categoryName.value', '.') | |
| 101 | + ]); | |
| 102 | + } | |
| 103 | + } | |
| 104 | + | |
| 105 | + /** | |
| 106 | + * Updates an existing Category model. | |
| 107 | + * If update is successful, the browser will be redirected to the 'view' page. | |
| 108 | + * @param integer $id | |
| 109 | + * @return mixed | |
| 110 | + */ | |
| 111 | + public function actionUpdate($id) | |
| 112 | + { | |
| 113 | + $model = $this->findModel($id); | |
| 114 | + | |
| 115 | + if ($model->load(Yii::$app->request->post())) { | |
| 116 | + if ( ($image = UploadedFile::getInstance($model, 'imageUpload')) ) { | |
| 117 | + $model->image = $image->name; | |
| 118 | + } | |
| 119 | + | |
| 120 | + if ($model->save() && $image) { | |
| 121 | + $image->saveAs(Yii::getAlias('@imagesDir/categories/' . $image->name)); | |
| 122 | + } | |
| 123 | + | |
| 124 | + return $this->redirect(['view', 'id' => $model->category_id]); | |
| 125 | + } else { | |
| 126 | + return $this->render('update', [ | |
| 127 | + 'model' => $model, | |
| 128 | + 'categories' => ArtboxTreeHelper::treeMap(Category::find()->with('categoryName')->getTree(), 'category_id', 'categoryName.value', '.') | |
| 129 | + ]); | |
| 130 | + } | |
| 131 | + } | |
| 132 | + | |
| 133 | + /** | |
| 134 | + * Deletes an existing Category model. | |
| 135 | + * If deletion is successful, the browser will be redirected to the 'index' page. | |
| 136 | + * @param integer $id | |
| 137 | + * @return mixed | |
| 138 | + */ | |
| 139 | + public function actionDelete($id) | |
| 140 | + { | |
| 141 | + $this->findModel($id)->delete(); | |
| 142 | + | |
| 143 | + return $this->redirect(['index']); | |
| 144 | + } | |
| 145 | + | |
| 146 | + /** | |
| 147 | + * Finds the Category model based on its primary key value. | |
| 148 | + * If the model is not found, a 404 HTTP exception will be thrown. | |
| 149 | + * @param integer $id | |
| 150 | + * @return Category the loaded model | |
| 151 | + * @throws NotFoundHttpException if the model cannot be found | |
| 152 | + */ | |
| 153 | + protected function findModel($id) | |
| 154 | + { | |
| 155 | + if (($model = Category::findOne($id)) !== null) { | |
| 156 | + return $model; | |
| 157 | + } else { | |
| 158 | + throw new NotFoundHttpException('The requested page does not exist.'); | |
| 159 | + } | |
| 160 | + } | |
| 161 | +} | ... | ... |
| 1 | +++ a/backend/controllers/CommentController.php | |
| 1 | +<?php | |
| 2 | + | |
| 3 | +namespace backend\controllers; | |
| 4 | + | |
| 5 | +use developeruz\db_rbac\behaviors\AccessBehavior; | |
| 6 | +use Yii; | |
| 7 | +use common\modules\comment\models\Comment; | |
| 8 | +use backend\models\CommentSearch; | |
| 9 | +use yii\web\Controller; | |
| 10 | +use yii\web\NotFoundHttpException; | |
| 11 | +use yii\filters\VerbFilter; | |
| 12 | + | |
| 13 | +/** | |
| 14 | + * CommentController implements the CRUD actions for Comment model. | |
| 15 | + */ | |
| 16 | +class CommentController extends Controller | |
| 17 | +{ | |
| 18 | + /** | |
| 19 | + * @inheritdoc | |
| 20 | + */ | |
| 21 | + public function behaviors() | |
| 22 | + { | |
| 23 | + return [ | |
| 24 | + 'access'=>[ | |
| 25 | + 'class' => AccessBehavior::className(), | |
| 26 | + 'rules' => | |
| 27 | + ['site' => | |
| 28 | + [ | |
| 29 | + [ | |
| 30 | + 'actions' => ['login', 'error'], | |
| 31 | + 'allow' => true, | |
| 32 | + ] | |
| 33 | + ] | |
| 34 | + ] | |
| 35 | + ], | |
| 36 | + 'verbs' => [ | |
| 37 | + 'class' => VerbFilter::className(), | |
| 38 | + 'actions' => [ | |
| 39 | + 'delete' => ['POST'], | |
| 40 | + ], | |
| 41 | + ], | |
| 42 | + ]; | |
| 43 | + } | |
| 44 | + | |
| 45 | + /** | |
| 46 | + * Lists all Comment models. | |
| 47 | + * @return mixed | |
| 48 | + */ | |
| 49 | + public function actionIndex() | |
| 50 | + { | |
| 51 | + $searchModel = new CommentSearch(); | |
| 52 | + $dataProvider = $searchModel->search(Yii::$app->request->queryParams); | |
| 53 | + $query = $dataProvider->query; | |
| 54 | + $query->with(['rating', 'user']); | |
| 55 | + $sort = $dataProvider->sort; | |
| 56 | + $sort->defaultOrder = [ | |
| 57 | + 'status' => SORT_ASC, | |
| 58 | + ]; | |
| 59 | + | |
| 60 | + return $this->render('index', [ | |
| 61 | + 'searchModel' => $searchModel, | |
| 62 | + 'dataProvider' => $dataProvider, | |
| 63 | + ]); | |
| 64 | + } | |
| 65 | + | |
| 66 | + /** | |
| 67 | + * Displays a single Comment model. | |
| 68 | + * @param integer $id | |
| 69 | + * @return mixed | |
| 70 | + */ | |
| 71 | +// public function actionView($id) | |
| 72 | +// { | |
| 73 | +// return $this->render('view', [ | |
| 74 | +// 'model' => $this->findModel($id), | |
| 75 | +// ]); | |
| 76 | +// } | |
| 77 | + | |
| 78 | + /** | |
| 79 | + * Creates a new Comment model. | |
| 80 | + * If creation is successful, the browser will be redirected to the 'view' page. | |
| 81 | + * @return mixed | |
| 82 | + */ | |
| 83 | +// public function actionCreate() | |
| 84 | +// { | |
| 85 | +// $model = new Comment(); | |
| 86 | +// | |
| 87 | +// if ($model->load(Yii::$app->request->post()) && $model->save()) { | |
| 88 | +// return $this->redirect(['view', 'id' => $model->comment_id]); | |
| 89 | +// } else { | |
| 90 | +// return $this->render('create', [ | |
| 91 | +// 'model' => $model, | |
| 92 | +// ]); | |
| 93 | +// } | |
| 94 | +// } | |
| 95 | + | |
| 96 | + /** | |
| 97 | + * Updates an existing Comment model. | |
| 98 | + * If update is successful, the browser will be redirected to the 'view' page. | |
| 99 | + * @param integer $id | |
| 100 | + * @return mixed | |
| 101 | + */ | |
| 102 | + public function actionUpdate($id) | |
| 103 | + { | |
| 104 | + $model = $this->findModel($id); | |
| 105 | + | |
| 106 | + if ($model->load(Yii::$app->request->post()) && $model->save()) { | |
| 107 | + return $this->redirect(['view', 'id' => $model->comment_id]); | |
| 108 | + } else { | |
| 109 | + return $this->render('update', [ | |
| 110 | + 'model' => $model, | |
| 111 | + ]); | |
| 112 | + } | |
| 113 | + } | |
| 114 | + | |
| 115 | + public function actionApprove($id) { | |
| 116 | + $model = $this->findModel($id); | |
| 117 | + $model->status = Comment::STATUS_ACTIVE; | |
| 118 | + $model->save(false); | |
| 119 | + | |
| 120 | + return $this->redirect(['index']); | |
| 121 | + } | |
| 122 | + | |
| 123 | + public function actionDisapprove($id) { | |
| 124 | + $model = $this->findModel($id); | |
| 125 | + $model->status = Comment::STATUS_HIDDEN; | |
| 126 | + $model->save(false); | |
| 127 | + | |
| 128 | + return $this->redirect(['index']); | |
| 129 | + } | |
| 130 | + | |
| 131 | + /** | |
| 132 | + * Deletes an existing Comment model. | |
| 133 | + * If deletion is successful, the browser will be redirected to the 'index' page. | |
| 134 | + * @param integer $id | |
| 135 | + * @return mixed | |
| 136 | + */ | |
| 137 | + public function actionDelete($id) | |
| 138 | + { | |
| 139 | + $this->findModel($id)->delete(); | |
| 140 | + | |
| 141 | + return $this->redirect(['index']); | |
| 142 | + } | |
| 143 | + | |
| 144 | + /** | |
| 145 | + * Finds the Comment model based on its primary key value. | |
| 146 | + * If the model is not found, a 404 HTTP exception will be thrown. | |
| 147 | + * @param integer $id | |
| 148 | + * @return Comment the loaded model | |
| 149 | + * @throws NotFoundHttpException if the model cannot be found | |
| 150 | + */ | |
| 151 | + protected function findModel($id) | |
| 152 | + { | |
| 153 | + if (($model = Comment::findOne($id)) !== null) { | |
| 154 | + return $model; | |
| 155 | + } else { | |
| 156 | + throw new NotFoundHttpException('The requested page does not exist.'); | |
| 157 | + } | |
| 158 | + } | |
| 159 | +} | ... | ... |
| 1 | +++ a/backend/controllers/CustomerController.php | |
| 1 | +<?php | |
| 2 | + | |
| 3 | +namespace backend\controllers; | |
| 4 | + | |
| 5 | +use Yii; | |
| 6 | +use common\models\Customer; | |
| 7 | +use common\models\CustomerSearch; | |
| 8 | +use yii\web\Controller; | |
| 9 | +use yii\web\NotFoundHttpException; | |
| 10 | +use yii\filters\VerbFilter; | |
| 11 | +use developeruz\db_rbac\behaviors\AccessBehavior; | |
| 12 | +/** | |
| 13 | + * CustomerController implements the CRUD actions for Customer model. | |
| 14 | + */ | |
| 15 | +class CustomerController extends Controller | |
| 16 | +{ | |
| 17 | + /** | |
| 18 | + * @inheritdoc | |
| 19 | + */ | |
| 20 | + public function behaviors() | |
| 21 | + { | |
| 22 | + return [ | |
| 23 | + 'access'=>[ | |
| 24 | + 'class' => AccessBehavior::className(), | |
| 25 | + 'rules' => | |
| 26 | + ['site' => | |
| 27 | + [ | |
| 28 | + [ | |
| 29 | + 'actions' => ['login', 'error'], | |
| 30 | + 'allow' => true, | |
| 31 | + ] | |
| 32 | + ] | |
| 33 | + ] | |
| 34 | + ], | |
| 35 | + 'verbs' => [ | |
| 36 | + 'class' => VerbFilter::className(), | |
| 37 | + 'actions' => [ | |
| 38 | + 'delete' => ['POST'], | |
| 39 | + ], | |
| 40 | + ], | |
| 41 | + ]; | |
| 42 | + } | |
| 43 | + | |
| 44 | + /** | |
| 45 | + * Lists all Customer models. | |
| 46 | + * @return mixed | |
| 47 | + */ | |
| 48 | + public function actionIndex() | |
| 49 | + { | |
| 50 | + $searchModel = new CustomerSearch(); | |
| 51 | + $dataProvider = $searchModel->search(Yii::$app->request->queryParams); | |
| 52 | + | |
| 53 | + return $this->render('index', [ | |
| 54 | + 'searchModel' => $searchModel, | |
| 55 | + 'dataProvider' => $dataProvider, | |
| 56 | + ]); | |
| 57 | + } | |
| 58 | + | |
| 59 | + /** | |
| 60 | + * Displays a single Customer model. | |
| 61 | + * @param integer $id | |
| 62 | + * @return mixed | |
| 63 | + */ | |
| 64 | + public function actionView($id) | |
| 65 | + { | |
| 66 | + return $this->render('view', [ | |
| 67 | + 'model' => $this->findModel($id), | |
| 68 | + ]); | |
| 69 | + } | |
| 70 | + | |
| 71 | + /** | |
| 72 | + * Creates a new Customer model. | |
| 73 | + * If creation is successful, the browser will be redirected to the 'view' page. | |
| 74 | + * @return mixed | |
| 75 | + */ | |
| 76 | + public function actionCreate() | |
| 77 | + { | |
| 78 | + $model = new Customer(); | |
| 79 | + | |
| 80 | + if ($model->load(Yii::$app->request->post()) && $model->save()) { | |
| 81 | + return $this->redirect(['view', 'id' => $model->id]); | |
| 82 | + } else { | |
| 83 | + return $this->render('create', [ | |
| 84 | + 'model' => $model, | |
| 85 | + ]); | |
| 86 | + } | |
| 87 | + } | |
| 88 | + | |
| 89 | + /** | |
| 90 | + * Updates an existing Customer model. | |
| 91 | + * If update is successful, the browser will be redirected to the 'view' page. | |
| 92 | + * @param integer $id | |
| 93 | + * @return mixed | |
| 94 | + */ | |
| 95 | + public function actionUpdate($id) | |
| 96 | + { | |
| 97 | + $model = $this->findModel($id); | |
| 98 | + | |
| 99 | + if ($model->load(Yii::$app->request->post()) && $model->save()) { | |
| 100 | + return $this->redirect(['view', 'id' => $model->id]); | |
| 101 | + } else { | |
| 102 | + return $this->render('update', [ | |
| 103 | + 'model' => $model, | |
| 104 | + ]); | |
| 105 | + } | |
| 106 | + } | |
| 107 | + | |
| 108 | + /** | |
| 109 | + * Deletes an existing Customer model. | |
| 110 | + * If deletion is successful, the browser will be redirected to the 'index' page. | |
| 111 | + * @param integer $id | |
| 112 | + * @return mixed | |
| 113 | + */ | |
| 114 | + public function actionDelete($id) | |
| 115 | + { | |
| 116 | + $this->findModel($id)->delete(); | |
| 117 | + | |
| 118 | + return $this->redirect(['index']); | |
| 119 | + } | |
| 120 | + | |
| 121 | + /** | |
| 122 | + * Finds the Customer model based on its primary key value. | |
| 123 | + * If the model is not found, a 404 HTTP exception will be thrown. | |
| 124 | + * @param integer $id | |
| 125 | + * @return Customer the loaded model | |
| 126 | + * @throws NotFoundHttpException if the model cannot be found | |
| 127 | + */ | |
| 128 | + protected function findModel($id) | |
| 129 | + { | |
| 130 | + if (($model = Customer::findOne($id)) !== null) { | |
| 131 | + return $model; | |
| 132 | + } else { | |
| 133 | + throw new NotFoundHttpException('The requested page does not exist.'); | |
| 134 | + } | |
| 135 | + } | |
| 136 | +} | ... | ... |
| 1 | +++ a/backend/controllers/EventController.php | |
| 1 | +<?php | |
| 2 | + | |
| 3 | +namespace backend\controllers; | |
| 4 | + | |
| 5 | +use Yii; | |
| 6 | +use common\models\Event; | |
| 7 | +use common\models\EventSearch; | |
| 8 | +use yii\web\Controller; | |
| 9 | +use yii\web\NotFoundHttpException; | |
| 10 | +use yii\filters\VerbFilter; | |
| 11 | +use developeruz\db_rbac\behaviors\AccessBehavior; | |
| 12 | +use yii\web\UploadedFile; | |
| 13 | + | |
| 14 | +/** | |
| 15 | + * EventController implements the CRUD actions for Event model. | |
| 16 | + */ | |
| 17 | +class EventController extends Controller | |
| 18 | +{ | |
| 19 | + /** | |
| 20 | + * @inheritdoc | |
| 21 | + */ | |
| 22 | + public function behaviors() | |
| 23 | + { | |
| 24 | + return [ | |
| 25 | + 'access'=>[ | |
| 26 | + 'class' => AccessBehavior::className(), | |
| 27 | + 'rules' => | |
| 28 | + ['site' => | |
| 29 | + [ | |
| 30 | + [ | |
| 31 | + 'actions' => ['login', 'error'], | |
| 32 | + 'allow' => true, | |
| 33 | + ] | |
| 34 | + ] | |
| 35 | + ] | |
| 36 | + ], | |
| 37 | + 'verbs' => [ | |
| 38 | + 'class' => VerbFilter::className(), | |
| 39 | + 'actions' => [ | |
| 40 | + 'delete' => ['POST'], | |
| 41 | + ], | |
| 42 | + ], | |
| 43 | + ]; | |
| 44 | + } | |
| 45 | + | |
| 46 | + /** | |
| 47 | + * Lists all Event models. | |
| 48 | + * @return mixed | |
| 49 | + */ | |
| 50 | + public function actionIndex() | |
| 51 | + { | |
| 52 | + $searchModel = new EventSearch(); | |
| 53 | + $dataProvider = $searchModel->search(Yii::$app->request->queryParams); | |
| 54 | + | |
| 55 | + return $this->render('index', [ | |
| 56 | + 'searchModel' => $searchModel, | |
| 57 | + 'dataProvider' => $dataProvider, | |
| 58 | + ]); | |
| 59 | + } | |
| 60 | + | |
| 61 | + /** | |
| 62 | + * Displays a single Event model. | |
| 63 | + * @param integer $id | |
| 64 | + * @return mixed | |
| 65 | + */ | |
| 66 | + public function actionView($id) | |
| 67 | + { | |
| 68 | + return $this->render('view', [ | |
| 69 | + 'model' => $this->findModel($id), | |
| 70 | + ]); | |
| 71 | + } | |
| 72 | + | |
| 73 | + /** | |
| 74 | + * Creates a new Event model. | |
| 75 | + * If creation is successful, the browser will be redirected to the 'view' page. | |
| 76 | + * @return mixed | |
| 77 | + */ | |
| 78 | + public function actionCreate() | |
| 79 | + { | |
| 80 | + $model = new Event(); | |
| 81 | + | |
| 82 | + if ($model->load(Yii::$app->request->post())) { | |
| 83 | + | |
| 84 | + if ( ($image = UploadedFile::getInstance($model, 'imageUpload')) ) { | |
| 85 | + $model->image = $image->name; | |
| 86 | + } | |
| 87 | + | |
| 88 | + if ($model->save() && $image) { | |
| 89 | + $image->saveAs(Yii::getAlias('@imagesDir/articles/' . $image->name)); | |
| 90 | + } | |
| 91 | + | |
| 92 | + return $this->redirect(['view', 'id' => $model->event_id]); | |
| 93 | + } else { | |
| 94 | + return $this->render('create', [ | |
| 95 | + 'model' => $model, | |
| 96 | + ]); | |
| 97 | + } | |
| 98 | + } | |
| 99 | + | |
| 100 | + /** | |
| 101 | + * Updates an existing Event model. | |
| 102 | + * If update is successful, the browser will be redirected to the 'view' page. | |
| 103 | + * @param integer $id | |
| 104 | + * @return mixed | |
| 105 | + */ | |
| 106 | + public function actionUpdate($id) | |
| 107 | + { | |
| 108 | + $model = $this->findModel($id); | |
| 109 | + | |
| 110 | + if ($model->load(Yii::$app->request->post())) { | |
| 111 | + | |
| 112 | + if ( ($image = UploadedFile::getInstance($model, 'imageUpload')) ) { | |
| 113 | + $model->image = $image->name; | |
| 114 | + } | |
| 115 | + | |
| 116 | + if ($model->save() && $image) { | |
| 117 | + $image->saveAs(Yii::getAlias('@imagesDir/articles/' . $image->name)); | |
| 118 | + } | |
| 119 | + | |
| 120 | + return $this->redirect(['view', 'id' => $model->event_id]); | |
| 121 | + } else { | |
| 122 | + return $this->render('update', [ | |
| 123 | + 'model' => $model, | |
| 124 | + ]); | |
| 125 | + } | |
| 126 | + } | |
| 127 | + | |
| 128 | + /** | |
| 129 | + * Deletes an existing Event model. | |
| 130 | + * If deletion is successful, the browser will be redirected to the 'index' page. | |
| 131 | + * @param integer $id | |
| 132 | + * @return mixed | |
| 133 | + */ | |
| 134 | + public function actionDelete($id) | |
| 135 | + { | |
| 136 | + $this->findModel($id)->delete(); | |
| 137 | + | |
| 138 | + return $this->redirect(['index']); | |
| 139 | + } | |
| 140 | + | |
| 141 | + /** | |
| 142 | + * Finds the Event model based on its primary key value. | |
| 143 | + * If the model is not found, a 404 HTTP exception will be thrown. | |
| 144 | + * @param integer $id | |
| 145 | + * @return Event the loaded model | |
| 146 | + * @throws NotFoundHttpException if the model cannot be found | |
| 147 | + */ | |
| 148 | + protected function findModel($id) | |
| 149 | + { | |
| 150 | + if (($model = Event::findOne($id)) !== null) { | |
| 151 | + return $model; | |
| 152 | + } else { | |
| 153 | + throw new NotFoundHttpException('The requested page does not exist.'); | |
| 154 | + } | |
| 155 | + } | |
| 156 | +} | ... | ... |
| 1 | +++ a/backend/controllers/OrdersController.php | |
| 1 | +<?php | |
| 2 | + | |
| 3 | +namespace backend\controllers; | |
| 4 | + | |
| 5 | +use backend\models\OrdersSearch; | |
| 6 | +use Yii; | |
| 7 | +use yii\web\Controller; | |
| 8 | +use yii\filters\VerbFilter; | |
| 9 | +use yii\data\ActiveDataProvider; | |
| 10 | +use yii\web\HttpException; | |
| 11 | +use common\models\Orders; | |
| 12 | +use backend\models\OrdersProducts; | |
| 13 | +use common\modules\product\models\ProductVariant; | |
| 14 | +use yii\web\NotFoundHttpException; | |
| 15 | +use developeruz\db_rbac\behaviors\AccessBehavior; | |
| 16 | + | |
| 17 | +class OrdersController extends Controller | |
| 18 | +{ | |
| 19 | + /** | |
| 20 | + * @inheritdoc | |
| 21 | + */ | |
| 22 | + public function behaviors() | |
| 23 | + { | |
| 24 | + return [ | |
| 25 | + 'access'=>[ | |
| 26 | + 'class' => AccessBehavior::className(), | |
| 27 | + 'rules' => | |
| 28 | + ['site' => | |
| 29 | + [ | |
| 30 | + [ | |
| 31 | + 'actions' => ['login', 'error'], | |
| 32 | + 'allow' => true, | |
| 33 | + ] | |
| 34 | + ] | |
| 35 | + ] | |
| 36 | + ], | |
| 37 | + 'verbs' => [ | |
| 38 | + 'class' => VerbFilter::className(), | |
| 39 | + 'actions' => [ | |
| 40 | + 'delete' => ['POST'], | |
| 41 | + ], | |
| 42 | + ], | |
| 43 | + ]; | |
| 44 | + } | |
| 45 | + | |
| 46 | + public function actionIndex() | |
| 47 | + { | |
| 48 | + $searchModel = new OrdersSearch(); | |
| 49 | + $dataProvider = $searchModel->search(Yii::$app->request->queryParams); | |
| 50 | + | |
| 51 | + return $this->render('index', [ | |
| 52 | + 'dataProvider'=>$dataProvider, | |
| 53 | + 'searchModel'=>$searchModel, | |
| 54 | + ]); | |
| 55 | + } | |
| 56 | + | |
| 57 | + public function actionShow($id) | |
| 58 | + { | |
| 59 | + | |
| 60 | + $model = $this->findModel((int)$id); | |
| 61 | + $dataProvider = new ActiveDataProvider([ | |
| 62 | + 'query' => OrdersProducts::find()->where(['order_id'=>(int)$id]), | |
| 63 | + 'pagination' => [ | |
| 64 | + 'pageSize' => 20, | |
| 65 | + ], | |
| 66 | + ]); | |
| 67 | + if ($model->load(Yii::$app->request->post()) && $model->save()) { | |
| 68 | + return $this->redirect(['index']); | |
| 69 | + } else { | |
| 70 | + $model_orderproducts = new OrdersProducts; | |
| 71 | + | |
| 72 | + | |
| 73 | + return $this->renderAjax('show', [ | |
| 74 | + 'model' => $model, | |
| 75 | + 'model_orderproducts'=>$model_orderproducts, | |
| 76 | + 'dataProvider' => $dataProvider, | |
| 77 | + ]); | |
| 78 | + } | |
| 79 | + } | |
| 80 | + | |
| 81 | + public function actionLabelupdate(){ | |
| 82 | + $model = Orders::findOne($_POST['order_id']); | |
| 83 | + $model->label = $_POST['label_id']; | |
| 84 | + $model->save(); | |
| 85 | + } | |
| 86 | + | |
| 87 | + public function actionPayupdate(){ | |
| 88 | + $model = Orders::findOne($_POST['order_id']); | |
| 89 | + $model->pay = $_POST['pay_id']; | |
| 90 | + $model->save(); | |
| 91 | + } | |
| 92 | + | |
| 93 | + public function actionDelete(){ | |
| 94 | + $model = Orders::findOne($_GET['id']); | |
| 95 | + $model->delete(); | |
| 96 | + return Yii::$app->response->redirect(['/orders/index']); | |
| 97 | + } | |
| 98 | + | |
| 99 | + | |
| 100 | + public function actionAdd(){ | |
| 101 | + $model = new OrdersProducts; | |
| 102 | + if ($model->load(Yii::$app->request->post())) { | |
| 103 | + | |
| 104 | + if(!$modelMod = ProductVariant::find()->with(['product'])->where(['sku'=>$model->sku])->one()) | |
| 105 | + throw new HttpException(404, 'Данного артикля не существует!'); | |
| 106 | + $model->product_name = $modelMod->product->name; | |
| 107 | + $model->name = $modelMod->name; | |
| 108 | + $model->sku = $modelMod->sku; | |
| 109 | + $model->price = $modelMod->price; | |
| 110 | + $model->sum_cost = $model->count*$modelMod->price; | |
| 111 | + $model->mod_id = $modelMod->id; | |
| 112 | + $model->save(); | |
| 113 | + //return Yii::$app->response->redirect(['/admin/orders/show','id'=>$_GET['order_id']]); | |
| 114 | + } | |
| 115 | + | |
| 116 | + //return $this->render('add',['model'=>$model]); | |
| 117 | + } | |
| 118 | + | |
| 119 | + public function actionCreate(){ | |
| 120 | + $model = new Orders(); | |
| 121 | + | |
| 122 | + if ($model->load(Yii::$app->request->post()) && $model->save()) { | |
| 123 | + return $this->redirect(['index']); | |
| 124 | + } else { | |
| 125 | + return $this->render('create', [ | |
| 126 | + 'model' => $model, | |
| 127 | + ]); | |
| 128 | + } | |
| 129 | + } | |
| 130 | + | |
| 131 | + public function actionDelete_product(){ | |
| 132 | + $model = OrdersProducts::findOne($_GET['id']); | |
| 133 | + $model->delete(); | |
| 134 | + return Yii::$app->response->redirect(['/admin/orders/show','id'=>$_GET['order_id']]); | |
| 135 | + } | |
| 136 | + | |
| 137 | + protected function findModel($id) | |
| 138 | + { | |
| 139 | + if (($model = Orders::findOne($id)) !== null) { | |
| 140 | + return $model; | |
| 141 | + } else { | |
| 142 | + throw new NotFoundHttpException('The requested page does not exist.'); | |
| 143 | + } | |
| 144 | + } | |
| 145 | +} | ... | ... |
| 1 | +++ a/backend/controllers/PageController.php | |
| 1 | +<?php | |
| 2 | + | |
| 3 | +namespace backend\controllers; | |
| 4 | + | |
| 5 | +use Yii; | |
| 6 | +use common\models\Page; | |
| 7 | +use common\models\PageSearch; | |
| 8 | +use yii\web\Controller; | |
| 9 | +use yii\web\NotFoundHttpException; | |
| 10 | +use yii\filters\VerbFilter; | |
| 11 | +use developeruz\db_rbac\behaviors\AccessBehavior; | |
| 12 | +/** | |
| 13 | + * PageController implements the CRUD actions for Page model. | |
| 14 | + */ | |
| 15 | +class PageController extends Controller | |
| 16 | +{ | |
| 17 | + /** | |
| 18 | + * @inheritdoc | |
| 19 | + */ | |
| 20 | + public function behaviors() | |
| 21 | + { | |
| 22 | + return [ | |
| 23 | + 'access'=>[ | |
| 24 | + 'class' => AccessBehavior::className(), | |
| 25 | + 'rules' => | |
| 26 | + ['site' => | |
| 27 | + [ | |
| 28 | + [ | |
| 29 | + 'actions' => ['login', 'error'], | |
| 30 | + 'allow' => true, | |
| 31 | + ] | |
| 32 | + ] | |
| 33 | + ] | |
| 34 | + ], | |
| 35 | + 'verbs' => [ | |
| 36 | + 'class' => VerbFilter::className(), | |
| 37 | + 'actions' => [ | |
| 38 | + 'delete' => ['POST'], | |
| 39 | + ], | |
| 40 | + ], | |
| 41 | + ]; | |
| 42 | + } | |
| 43 | + | |
| 44 | + /** | |
| 45 | + * Lists all Page models. | |
| 46 | + * @return mixed | |
| 47 | + */ | |
| 48 | + public function actionIndex() | |
| 49 | + { | |
| 50 | + $searchModel = new PageSearch(); | |
| 51 | + $dataProvider = $searchModel->search(Yii::$app->request->queryParams); | |
| 52 | + | |
| 53 | + return $this->render('index', [ | |
| 54 | + 'searchModel' => $searchModel, | |
| 55 | + 'dataProvider' => $dataProvider, | |
| 56 | + ]); | |
| 57 | + } | |
| 58 | + | |
| 59 | + /** | |
| 60 | + * Displays a single Page model. | |
| 61 | + * @param integer $id | |
| 62 | + * @return mixed | |
| 63 | + */ | |
| 64 | + public function actionView($id) | |
| 65 | + { | |
| 66 | + return $this->render('view', [ | |
| 67 | + 'model' => $this->findModel($id), | |
| 68 | + ]); | |
| 69 | + } | |
| 70 | + | |
| 71 | + /** | |
| 72 | + * Creates a new Page model. | |
| 73 | + * If creation is successful, the browser will be redirected to the 'view' page. | |
| 74 | + * @return mixed | |
| 75 | + */ | |
| 76 | + public function actionCreate() | |
| 77 | + { | |
| 78 | + $model = new Page(); | |
| 79 | + | |
| 80 | + if ($model->load(Yii::$app->request->post()) && $model->save()) { | |
| 81 | + return $this->redirect(['view', 'id' => $model->id]); | |
| 82 | + } else { | |
| 83 | + return $this->render('create', [ | |
| 84 | + 'model' => $model, | |
| 85 | + ]); | |
| 86 | + } | |
| 87 | + } | |
| 88 | + | |
| 89 | + /** | |
| 90 | + * Updates an existing Page model. | |
| 91 | + * If update is successful, the browser will be redirected to the 'view' page. | |
| 92 | + * @param integer $id | |
| 93 | + * @return mixed | |
| 94 | + */ | |
| 95 | + public function actionUpdate($id) | |
| 96 | + { | |
| 97 | + $model = $this->findModel($id); | |
| 98 | + | |
| 99 | + if ($model->load(Yii::$app->request->post()) && $model->save()) { | |
| 100 | + return $this->redirect(['view', 'id' => $model->id]); | |
| 101 | + } else { | |
| 102 | + return $this->render('update', [ | |
| 103 | + 'model' => $model, | |
| 104 | + ]); | |
| 105 | + } | |
| 106 | + } | |
| 107 | + | |
| 108 | + /** | |
| 109 | + * Deletes an existing Page model. | |
| 110 | + * If deletion is successful, the browser will be redirected to the 'index' page. | |
| 111 | + * @param integer $id | |
| 112 | + * @return mixed | |
| 113 | + */ | |
| 114 | + public function actionDelete($id) | |
| 115 | + { | |
| 116 | + $this->findModel($id)->delete(); | |
| 117 | + | |
| 118 | + return $this->redirect(['index']); | |
| 119 | + } | |
| 120 | + | |
| 121 | + /** | |
| 122 | + * Finds the Page model based on its primary key value. | |
| 123 | + * If the model is not found, a 404 HTTP exception will be thrown. | |
| 124 | + * @param integer $id | |
| 125 | + * @return Page the loaded model | |
| 126 | + * @throws NotFoundHttpException if the model cannot be found | |
| 127 | + */ | |
| 128 | + protected function findModel($id) | |
| 129 | + { | |
| 130 | + if (($model = Page::findOne($id)) !== null) { | |
| 131 | + return $model; | |
| 132 | + } else { | |
| 133 | + throw new NotFoundHttpException('The requested page does not exist.'); | |
| 134 | + } | |
| 135 | + } | |
| 136 | +} | ... | ... |
| 1 | +++ a/backend/controllers/SeoCategoryController.php | |
| 1 | +<?php | |
| 2 | + | |
| 3 | +namespace backend\controllers; | |
| 4 | + | |
| 5 | +use Yii; | |
| 6 | +use common\models\SeoCategory; | |
| 7 | +use common\models\SeoCategorySearch; | |
| 8 | +use yii\web\Controller; | |
| 9 | +use yii\web\NotFoundHttpException; | |
| 10 | +use yii\filters\VerbFilter; | |
| 11 | +use developeruz\db_rbac\behaviors\AccessBehavior; | |
| 12 | +/** | |
| 13 | + * SeoCategoryController implements the CRUD actions for SeoCategory model. | |
| 14 | + */ | |
| 15 | +class SeoCategoryController extends Controller | |
| 16 | +{ | |
| 17 | + /** | |
| 18 | + * @inheritdoc | |
| 19 | + */ | |
| 20 | + public function behaviors() | |
| 21 | + { | |
| 22 | + return [ | |
| 23 | + 'access'=>[ | |
| 24 | + 'class' => AccessBehavior::className(), | |
| 25 | + 'rules' => | |
| 26 | + ['site' => | |
| 27 | + [ | |
| 28 | + [ | |
| 29 | + 'actions' => ['login', 'error'], | |
| 30 | + 'allow' => true, | |
| 31 | + ] | |
| 32 | + ] | |
| 33 | + ] | |
| 34 | + ], | |
| 35 | + 'verbs' => [ | |
| 36 | + 'class' => VerbFilter::className(), | |
| 37 | + | |
| 38 | + ], | |
| 39 | + ]; | |
| 40 | + } | |
| 41 | + | |
| 42 | + /** | |
| 43 | + * Lists all SeoCategory models. | |
| 44 | + * @return mixed | |
| 45 | + */ | |
| 46 | + public function actionIndex() | |
| 47 | + { | |
| 48 | + $searchModel = new SeoCategorySearch(); | |
| 49 | + $dataProvider = $searchModel->search(Yii::$app->request->queryParams); | |
| 50 | + | |
| 51 | + return $this->render('index', [ | |
| 52 | + 'searchModel' => $searchModel, | |
| 53 | + 'dataProvider' => $dataProvider, | |
| 54 | + ]); | |
| 55 | + } | |
| 56 | + | |
| 57 | + /** | |
| 58 | + * Displays a single SeoCategory model. | |
| 59 | + * @param integer $id | |
| 60 | + * @return mixed | |
| 61 | + */ | |
| 62 | + public function actionView($id) | |
| 63 | + { | |
| 64 | + return $this->render('view', [ | |
| 65 | + 'model' => $this->findModel($id), | |
| 66 | + ]); | |
| 67 | + } | |
| 68 | + | |
| 69 | + /** | |
| 70 | + * Creates a new SeoCategory model. | |
| 71 | + * If creation is successful, the browser will be redirected to the 'view' page. | |
| 72 | + * @return mixed | |
| 73 | + */ | |
| 74 | + public function actionCreate() | |
| 75 | + { | |
| 76 | + $model = new SeoCategory(); | |
| 77 | + | |
| 78 | + if ($model->load(Yii::$app->request->post()) && $model->save()) { | |
| 79 | + return $this->redirect(['view', 'id' => $model->seo_category_id]); | |
| 80 | + } else { | |
| 81 | + return $this->render('create', [ | |
| 82 | + 'model' => $model, | |
| 83 | + ]); | |
| 84 | + } | |
| 85 | + } | |
| 86 | + | |
| 87 | + /** | |
| 88 | + * Updates an existing SeoCategory model. | |
| 89 | + * If update is successful, the browser will be redirected to the 'view' page. | |
| 90 | + * @param integer $id | |
| 91 | + * @return mixed | |
| 92 | + */ | |
| 93 | + public function actionUpdate($id) | |
| 94 | + { | |
| 95 | + $model = $this->findModel($id); | |
| 96 | + | |
| 97 | + if ($model->load(Yii::$app->request->post()) && $model->save()) { | |
| 98 | + return $this->redirect(['view', 'id' => $model->seo_category_id]); | |
| 99 | + } else { | |
| 100 | + return $this->render('update', [ | |
| 101 | + 'model' => $model, | |
| 102 | + ]); | |
| 103 | + } | |
| 104 | + } | |
| 105 | + | |
| 106 | + /** | |
| 107 | + * Deletes an existing SeoCategory model. | |
| 108 | + * If deletion is successful, the browser will be redirected to the 'index' page. | |
| 109 | + * @param integer $id | |
| 110 | + * @return mixed | |
| 111 | + */ | |
| 112 | + public function actionDelete($id) | |
| 113 | + { | |
| 114 | + $this->findModel($id)->delete(); | |
| 115 | + | |
| 116 | + return $this->redirect(['index']); | |
| 117 | + } | |
| 118 | + | |
| 119 | + /** | |
| 120 | + * Finds the SeoCategory model based on its primary key value. | |
| 121 | + * If the model is not found, a 404 HTTP exception will be thrown. | |
| 122 | + * @param integer $id | |
| 123 | + * @return SeoCategory the loaded model | |
| 124 | + * @throws NotFoundHttpException if the model cannot be found | |
| 125 | + */ | |
| 126 | + protected function findModel($id) | |
| 127 | + { | |
| 128 | + if (($model = SeoCategory::findOne($id)) !== null) { | |
| 129 | + return $model; | |
| 130 | + } else { | |
| 131 | + throw new NotFoundHttpException('The requested page does not exist.'); | |
| 132 | + } | |
| 133 | + } | |
| 134 | +} | ... | ... |
| 1 | +++ a/backend/controllers/SeoController.php | |
| 1 | +<?php | |
| 2 | + | |
| 3 | +namespace backend\controllers; | |
| 4 | + | |
| 5 | +use Yii; | |
| 6 | +use common\models\Seo; | |
| 7 | +use common\models\SeoSearch; | |
| 8 | +use yii\web\Controller; | |
| 9 | +use yii\web\NotFoundHttpException; | |
| 10 | +use yii\filters\VerbFilter; | |
| 11 | +use developeruz\db_rbac\behaviors\AccessBehavior; | |
| 12 | +/** | |
| 13 | + * SeoController implements the CRUD actions for Seo model. | |
| 14 | + */ | |
| 15 | +class SeoController extends Controller | |
| 16 | +{ | |
| 17 | + /** | |
| 18 | + * @inheritdoc | |
| 19 | + */ | |
| 20 | + public function behaviors() | |
| 21 | + { | |
| 22 | + return [ | |
| 23 | + 'access'=>[ | |
| 24 | + 'class' => AccessBehavior::className(), | |
| 25 | + 'rules' => | |
| 26 | + ['site' => | |
| 27 | + [ | |
| 28 | + [ | |
| 29 | + 'actions' => ['login', 'error'], | |
| 30 | + 'allow' => true, | |
| 31 | + ] | |
| 32 | + ] | |
| 33 | + ] | |
| 34 | + ], | |
| 35 | + 'verbs' => [ | |
| 36 | + 'class' => VerbFilter::className(), | |
| 37 | + | |
| 38 | + ], | |
| 39 | + ]; | |
| 40 | + } | |
| 41 | + | |
| 42 | + /** | |
| 43 | + * Lists all Seo models. | |
| 44 | + * @return mixed | |
| 45 | + */ | |
| 46 | + public function actionIndex() | |
| 47 | + { | |
| 48 | + $searchModel = new SeoSearch(); | |
| 49 | + $dataProvider = $searchModel->search(Yii::$app->request->queryParams); | |
| 50 | + | |
| 51 | + return $this->render('index', [ | |
| 52 | + 'searchModel' => $searchModel, | |
| 53 | + 'dataProvider' => $dataProvider, | |
| 54 | + ]); | |
| 55 | + } | |
| 56 | + | |
| 57 | + /** | |
| 58 | + * Displays a single Seo model. | |
| 59 | + * @param integer $id | |
| 60 | + * @return mixed | |
| 61 | + */ | |
| 62 | + public function actionView($id) | |
| 63 | + { | |
| 64 | + return $this->render('view', [ | |
| 65 | + 'model' => $this->findModel($id), | |
| 66 | + ]); | |
| 67 | + } | |
| 68 | + | |
| 69 | + /** | |
| 70 | + * Creates a new Seo model. | |
| 71 | + * If creation is successful, the browser will be redirected to the 'view' page. | |
| 72 | + * @return mixed | |
| 73 | + */ | |
| 74 | + public function actionCreate() | |
| 75 | + { | |
| 76 | + $model = new Seo(); | |
| 77 | + | |
| 78 | + if ($model->load(Yii::$app->request->post()) && $model->save()) { | |
| 79 | + return $this->redirect(['view', 'id' => $model->seo_id]); | |
| 80 | + } else { | |
| 81 | + return $this->render('create', [ | |
| 82 | + 'model' => $model, | |
| 83 | + ]); | |
| 84 | + } | |
| 85 | + } | |
| 86 | + | |
| 87 | + /** | |
| 88 | + * Updates an existing Seo model. | |
| 89 | + * If update is successful, the browser will be redirected to the 'view' page. | |
| 90 | + * @param integer $id | |
| 91 | + * @return mixed | |
| 92 | + */ | |
| 93 | + public function actionUpdate($id) | |
| 94 | + { | |
| 95 | + $model = $this->findModel($id); | |
| 96 | + | |
| 97 | + if ($model->load(Yii::$app->request->post()) && $model->save()) { | |
| 98 | + return $this->redirect(['view', 'id' => $model->seo_id]); | |
| 99 | + } else { | |
| 100 | + return $this->render('update', [ | |
| 101 | + 'model' => $model, | |
| 102 | + ]); | |
| 103 | + } | |
| 104 | + } | |
| 105 | + | |
| 106 | + /** | |
| 107 | + * Deletes an existing Seo model. | |
| 108 | + * If deletion is successful, the browser will be redirected to the 'index' page. | |
| 109 | + * @param integer $id | |
| 110 | + * @return mixed | |
| 111 | + */ | |
| 112 | + public function actionDelete($id) | |
| 113 | + { | |
| 114 | + $this->findModel($id)->delete(); | |
| 115 | + | |
| 116 | + return $this->redirect(['index']); | |
| 117 | + } | |
| 118 | + | |
| 119 | + /** | |
| 120 | + * Finds the Seo model based on its primary key value. | |
| 121 | + * If the model is not found, a 404 HTTP exception will be thrown. | |
| 122 | + * @param integer $id | |
| 123 | + * @return Seo the loaded model | |
| 124 | + * @throws NotFoundHttpException if the model cannot be found | |
| 125 | + */ | |
| 126 | + protected function findModel($id) | |
| 127 | + { | |
| 128 | + if (($model = Seo::findOne($id)) !== null) { | |
| 129 | + return $model; | |
| 130 | + } else { | |
| 131 | + throw new NotFoundHttpException('The requested page does not exist.'); | |
| 132 | + } | |
| 133 | + } | |
| 134 | +} | ... | ... |
| 1 | +++ a/backend/controllers/SeoDynamicController.php | |
| 1 | +<?php | |
| 2 | + | |
| 3 | +namespace backend\controllers; | |
| 4 | + | |
| 5 | +use Yii; | |
| 6 | +use common\models\SeoDynamic; | |
| 7 | +use common\models\SeoDynamicSearch; | |
| 8 | +use yii\web\Controller; | |
| 9 | +use yii\web\NotFoundHttpException; | |
| 10 | +use yii\filters\VerbFilter; | |
| 11 | +use developeruz\db_rbac\behaviors\AccessBehavior; | |
| 12 | +/** | |
| 13 | + * SeoDynamicController implements the CRUD actions for SeoDynamic model. | |
| 14 | + */ | |
| 15 | +class SeoDynamicController extends Controller | |
| 16 | +{ | |
| 17 | + /** | |
| 18 | + * @inheritdoc | |
| 19 | + */ | |
| 20 | + public function behaviors() | |
| 21 | + { | |
| 22 | + return [ | |
| 23 | + 'access'=>[ | |
| 24 | + 'class' => AccessBehavior::className(), | |
| 25 | + 'rules' => | |
| 26 | + ['site' => | |
| 27 | + [ | |
| 28 | + [ | |
| 29 | + 'actions' => ['login', 'error'], | |
| 30 | + 'allow' => true, | |
| 31 | + ] | |
| 32 | + ] | |
| 33 | + ] | |
| 34 | + ], | |
| 35 | + 'verbs' => [ | |
| 36 | + 'class' => VerbFilter::className(), | |
| 37 | + | |
| 38 | + ], | |
| 39 | + ]; | |
| 40 | + } | |
| 41 | + | |
| 42 | + /** | |
| 43 | + * Lists all SeoDynamic models. | |
| 44 | + * @return mixed | |
| 45 | + */ | |
| 46 | + public function actionIndex($seo_category_id) | |
| 47 | + { | |
| 48 | + $searchModel = new SeoDynamicSearch(); | |
| 49 | + $dataProvider = $searchModel->search($seo_category_id,Yii::$app->request->queryParams); | |
| 50 | + | |
| 51 | + return $this->render('index', [ | |
| 52 | + 'searchModel' => $searchModel, | |
| 53 | + 'dataProvider' => $dataProvider, | |
| 54 | + 'seo_category_id' => $seo_category_id | |
| 55 | + ]); | |
| 56 | + } | |
| 57 | + | |
| 58 | + /** | |
| 59 | + * Displays a single SeoDynamic model. | |
| 60 | + * @param integer $id | |
| 61 | + * @return mixed | |
| 62 | + */ | |
| 63 | + public function actionView($seo_category_id, $id) | |
| 64 | + { | |
| 65 | + return $this->render('view', [ | |
| 66 | + 'model' => $this->findModel($id), | |
| 67 | + 'seo_category_id' => $seo_category_id | |
| 68 | + ]); | |
| 69 | + } | |
| 70 | + | |
| 71 | + /** | |
| 72 | + * Creates a new SeoDynamic model. | |
| 73 | + * If creation is successful, the browser will be redirected to the 'view' page. | |
| 74 | + * @return mixed | |
| 75 | + */ | |
| 76 | + public function actionCreate($seo_category_id) | |
| 77 | + { | |
| 78 | + $model = new SeoDynamic(); | |
| 79 | + | |
| 80 | + if ($model->load(Yii::$app->request->post())) { | |
| 81 | + $model->seo_category_id = $seo_category_id; | |
| 82 | + $model->save(); | |
| 83 | + return $this->redirect(['index', 'seo_category_id' => $model->seo_category_id]); | |
| 84 | + } else { | |
| 85 | + return $this->render('create', [ | |
| 86 | + 'model' => $model, | |
| 87 | + 'seo_category_id' => $seo_category_id | |
| 88 | + ]); | |
| 89 | + } | |
| 90 | + } | |
| 91 | + | |
| 92 | + /** | |
| 93 | + * Updates an existing SeoDynamic model. | |
| 94 | + * If update is successful, the browser will be redirected to the 'view' page. | |
| 95 | + * @param integer $id | |
| 96 | + * @return mixed | |
| 97 | + */ | |
| 98 | + public function actionUpdate($seo_category_id,$id) | |
| 99 | + { | |
| 100 | + $model = $this->findModel($id); | |
| 101 | + | |
| 102 | + if ($model->load(Yii::$app->request->post()) && $model->save()) { | |
| 103 | + return $this->redirect(['index', 'seo_category_id' => $model->seo_category_id]); | |
| 104 | + } else { | |
| 105 | + return $this->render('update', [ | |
| 106 | + 'model' => $model, | |
| 107 | + 'seo_category_id' => $seo_category_id | |
| 108 | + ]); | |
| 109 | + } | |
| 110 | + } | |
| 111 | + | |
| 112 | + /** | |
| 113 | + * Deletes an existing SeoDynamic model. | |
| 114 | + * If deletion is successful, the browser will be redirected to the 'index' page. | |
| 115 | + * @param integer $id | |
| 116 | + * @return mixed | |
| 117 | + */ | |
| 118 | + public function actionDelete($seo_category_id,$id) | |
| 119 | + { | |
| 120 | + $this->findModel($id)->delete(); | |
| 121 | + | |
| 122 | + return $this->redirect(['index','seo_category_id'=> $seo_category_id]); | |
| 123 | + } | |
| 124 | + | |
| 125 | + /** | |
| 126 | + * Finds the SeoDynamic model based on its primary key value. | |
| 127 | + * If the model is not found, a 404 HTTP exception will be thrown. | |
| 128 | + * @param integer $id | |
| 129 | + * @return SeoDynamic the loaded model | |
| 130 | + * @throws NotFoundHttpException if the model cannot be found | |
| 131 | + */ | |
| 132 | + protected function findModel($id) | |
| 133 | + { | |
| 134 | + if (($model = SeoDynamic::findOne($id)) !== null) { | |
| 135 | + return $model; | |
| 136 | + } else { | |
| 137 | + throw new NotFoundHttpException('The requested page does not exist.'); | |
| 138 | + } | |
| 139 | + } | |
| 140 | +} | ... | ... |
| 1 | +++ a/backend/controllers/ServiceController.php | |
| 1 | +<?php | |
| 2 | + | |
| 3 | +namespace backend\controllers; | |
| 4 | + | |
| 5 | +use Yii; | |
| 6 | +use common\models\Service; | |
| 7 | +use common\models\ServiceSearch; | |
| 8 | +use yii\web\Controller; | |
| 9 | +use yii\web\NotFoundHttpException; | |
| 10 | +use yii\filters\VerbFilter; | |
| 11 | +use developeruz\db_rbac\behaviors\AccessBehavior; | |
| 12 | +/** | |
| 13 | + * ServiceController implements the CRUD actions for Service model. | |
| 14 | + */ | |
| 15 | +class ServiceController extends Controller | |
| 16 | +{ | |
| 17 | + /** | |
| 18 | + * @inheritdoc | |
| 19 | + */ | |
| 20 | + public function behaviors() | |
| 21 | + { | |
| 22 | + return [ | |
| 23 | + 'access'=>[ | |
| 24 | + 'class' => AccessBehavior::className(), | |
| 25 | + 'rules' => | |
| 26 | + ['site' => | |
| 27 | + [ | |
| 28 | + [ | |
| 29 | + 'actions' => ['login', 'error'], | |
| 30 | + 'allow' => true, | |
| 31 | + ] | |
| 32 | + ] | |
| 33 | + ] | |
| 34 | + ], | |
| 35 | + 'verbs' => [ | |
| 36 | + 'class' => VerbFilter::className(), | |
| 37 | + 'actions' => [ | |
| 38 | + 'delete' => ['POST'], | |
| 39 | + ], | |
| 40 | + ], | |
| 41 | + ]; | |
| 42 | + } | |
| 43 | + | |
| 44 | + /** | |
| 45 | + * Lists all Service models. | |
| 46 | + * @return mixed | |
| 47 | + */ | |
| 48 | + public function actionIndex() | |
| 49 | + { | |
| 50 | + $searchModel = new ServiceSearch(); | |
| 51 | + $dataProvider = $searchModel->search(Yii::$app->request->queryParams); | |
| 52 | + | |
| 53 | + return $this->render('index', [ | |
| 54 | + 'searchModel' => $searchModel, | |
| 55 | + 'dataProvider' => $dataProvider, | |
| 56 | + ]); | |
| 57 | + } | |
| 58 | + | |
| 59 | + /** | |
| 60 | + * Displays a single Service model. | |
| 61 | + * @param integer $id | |
| 62 | + * @return mixed | |
| 63 | + */ | |
| 64 | + public function actionView($id) | |
| 65 | + { | |
| 66 | + return $this->render('view', [ | |
| 67 | + 'model' => $this->findModel($id), | |
| 68 | + ]); | |
| 69 | + } | |
| 70 | + | |
| 71 | + /** | |
| 72 | + * Creates a new Service model. | |
| 73 | + * If creation is successful, the browser will be redirected to the 'view' page. | |
| 74 | + * @return mixed | |
| 75 | + */ | |
| 76 | + public function actionCreate() | |
| 77 | + { | |
| 78 | + $model = new Service(); | |
| 79 | + | |
| 80 | + if ($model->load(Yii::$app->request->post()) && $model->save()) { | |
| 81 | + return $this->redirect(['view', 'id' => $model->service_id]); | |
| 82 | + } else { | |
| 83 | + return $this->render('create', [ | |
| 84 | + 'model' => $model, | |
| 85 | + ]); | |
| 86 | + } | |
| 87 | + } | |
| 88 | + | |
| 89 | + /** | |
| 90 | + * Updates an existing Service model. | |
| 91 | + * If update is successful, the browser will be redirected to the 'view' page. | |
| 92 | + * @param integer $id | |
| 93 | + * @return mixed | |
| 94 | + */ | |
| 95 | + public function actionUpdate($id) | |
| 96 | + { | |
| 97 | + $model = $this->findModel($id); | |
| 98 | + | |
| 99 | + if ($model->load(Yii::$app->request->post()) && $model->save()) { | |
| 100 | + return $this->redirect(['view', 'id' => $model->service_id]); | |
| 101 | + } else { | |
| 102 | + return $this->render('update', [ | |
| 103 | + 'model' => $model, | |
| 104 | + ]); | |
| 105 | + } | |
| 106 | + } | |
| 107 | + | |
| 108 | + /** | |
| 109 | + * Deletes an existing Service model. | |
| 110 | + * If deletion is successful, the browser will be redirected to the 'index' page. | |
| 111 | + * @param integer $id | |
| 112 | + * @return mixed | |
| 113 | + */ | |
| 114 | + public function actionDelete($id) | |
| 115 | + { | |
| 116 | + $this->findModel($id)->delete(); | |
| 117 | + | |
| 118 | + return $this->redirect(['index']); | |
| 119 | + } | |
| 120 | + | |
| 121 | + /** | |
| 122 | + * Finds the Service model based on its primary key value. | |
| 123 | + * If the model is not found, a 404 HTTP exception will be thrown. | |
| 124 | + * @param integer $id | |
| 125 | + * @return Service the loaded model | |
| 126 | + * @throws NotFoundHttpException if the model cannot be found | |
| 127 | + */ | |
| 128 | + protected function findModel($id) | |
| 129 | + { | |
| 130 | + if (($model = Service::findOne($id)) !== null) { | |
| 131 | + return $model; | |
| 132 | + } else { | |
| 133 | + throw new NotFoundHttpException('The requested page does not exist.'); | |
| 134 | + } | |
| 135 | + } | |
| 136 | +} | ... | ... |
| 1 | +++ a/backend/controllers/SiteController.php | |
| 1 | +<?php | |
| 2 | +namespace backend\controllers; | |
| 3 | +use developeruz\db_rbac\behaviors\AccessBehavior; | |
| 4 | +use common\modules\product\models\Brand; | |
| 5 | +use common\modules\product\models\BrandName; | |
| 6 | +use common\modules\product\models\Category; | |
| 7 | +use common\modules\product\models\CategoryName; | |
| 8 | +use common\modules\product\models\Product; | |
| 9 | +use common\modules\product\models\ProductVariant; | |
| 10 | +use common\modules\product\models\ProductVariantType; | |
| 11 | +use Yii; | |
| 12 | +use yii\filters\AccessControl; | |
| 13 | +use yii\helpers\Url; | |
| 14 | +use yii\web\Controller; | |
| 15 | +use backend\models\LoginForm; | |
| 16 | +use yii\filters\VerbFilter; | |
| 17 | +use common\models\Blog; | |
| 18 | +/** | |
| 19 | + * Site controller | |
| 20 | + */ | |
| 21 | +class SiteController extends Controller | |
| 22 | +{ | |
| 23 | + | |
| 24 | + | |
| 25 | + /** | |
| 26 | + * @inheritdoc | |
| 27 | + */ | |
| 28 | + public function behaviors() | |
| 29 | + { | |
| 30 | + return [ | |
| 31 | + 'verbs' => [ | |
| 32 | + 'class' => VerbFilter::className(), | |
| 33 | + 'actions' => [ | |
| 34 | + ], | |
| 35 | + ], | |
| 36 | + ]; | |
| 37 | + } | |
| 38 | + | |
| 39 | + /** | |
| 40 | + * @inheritdoc | |
| 41 | + */ | |
| 42 | + public function actions() | |
| 43 | + { | |
| 44 | + return [ | |
| 45 | + 'error' => [ | |
| 46 | + 'class' => 'yii\web\ErrorAction', | |
| 47 | + ], | |
| 48 | + ]; | |
| 49 | + } | |
| 50 | + | |
| 51 | + public function actionIndex() | |
| 52 | + { | |
| 53 | + $blog = new Blog(); | |
| 54 | + $post = \Yii::$app->request->post(); | |
| 55 | + if($blog->load($post)) { | |
| 56 | + $blog->save(); | |
| 57 | + } | |
| 58 | + return $this->render('index',[ | |
| 59 | + 'blog' => $blog | |
| 60 | + ]); | |
| 61 | + } | |
| 62 | + | |
| 63 | + public function actionLogin() | |
| 64 | + { | |
| 65 | + $this->layout = '/none'; | |
| 66 | + | |
| 67 | + if (!\Yii::$app->user->isGuest) { | |
| 68 | + return $this->goHome(); | |
| 69 | + } | |
| 70 | + | |
| 71 | + $model = new LoginForm(); | |
| 72 | + if ($model->load(Yii::$app->request->post()) && $model->login()) { | |
| 73 | + return $this->redirect(Url::to('/admin/site/index')); | |
| 74 | + } else { | |
| 75 | + return $this->render('login', [ | |
| 76 | + 'model' => $model, | |
| 77 | + ]); | |
| 78 | + } | |
| 79 | + } | |
| 80 | + | |
| 81 | + public function actionLogout() | |
| 82 | + { | |
| 83 | + Yii::$app->user->logout(); | |
| 84 | + | |
| 85 | + return $this->goHome(); | |
| 86 | + } | |
| 87 | + | |
| 88 | + public function actionGo() { | |
| 89 | + $new_products = $linked_products = 0; | |
| 90 | + | |
| 91 | + // открываем файл и перебираем | |
| 92 | + $filename = Yii::getAlias('@uploadDir') .'/'. Yii::getAlias('@uploadFileProducts'); | |
| 93 | + if (!is_file($filename)) { | |
| 94 | + var_dump("File $filename not found"); | |
| 95 | + return Controller::EXIT_CODE_ERROR; | |
| 96 | + } | |
| 97 | + var_dump("File $filename loaded\n"); | |
| 98 | + | |
| 99 | + $db = yii::$app->db; | |
| 100 | + | |
| 101 | + if (($handle = fopen ($filename, 'r')) !== FALSE) | |
| 102 | + { | |
| 103 | + $j = 0; | |
| 104 | + | |
| 105 | + while (($data = fgetcsv ($handle, 10000, ";")) !== FALSE) | |
| 106 | + { | |
| 107 | + $j++; | |
| 108 | + | |
| 109 | + foreach ($data as &$value) | |
| 110 | + { | |
| 111 | + //$value = mb_convert_encoding ($value, "UTF-8", mb_detect_encoding ($value)); | |
| 112 | + $value = iconv ('windows-1251', "UTF-8//TRANSLIT//IGNORE", $value); | |
| 113 | + $value = trim ($value); | |
| 114 | + } | |
| 115 | + | |
| 116 | + // будет всегда 19 элементов | |
| 117 | + for ($i = 0; $i <= 18; $i++) | |
| 118 | + { | |
| 119 | + if (! isset ($data[$i])) | |
| 120 | + { | |
| 121 | + $data[$i] = null; | |
| 122 | + } | |
| 123 | + } | |
| 124 | + | |
| 125 | + // 1 Группа (категория) | |
| 126 | + $catalog_name = $data[0]; | |
| 127 | + if (empty ($catalog_name)) | |
| 128 | + { | |
| 129 | + CONTINUE; | |
| 130 | + } | |
| 131 | + | |
| 132 | + // 2 Бренд | |
| 133 | + $brand_name = $data[1]; | |
| 134 | + if (empty ($brand_name)) | |
| 135 | + { | |
| 136 | + CONTINUE; | |
| 137 | + } | |
| 138 | + | |
| 139 | + // 3 Название товара | |
| 140 | + $product_name = $data[2]; | |
| 141 | + if (empty ($product_name)) | |
| 142 | + { | |
| 143 | + CONTINUE; | |
| 144 | + } | |
| 145 | + | |
| 146 | + // 4 Описание Укр | |
| 147 | + $product_body_uk = $data[3]; | |
| 148 | + | |
| 149 | + // 5 Описание Рус | |
| 150 | + $product_body_ru = $data[4]; | |
| 151 | + | |
| 152 | + // 6 Фильтр (через запятую) | |
| 153 | + $filters = explode (',', $data[5]); | |
| 154 | + | |
| 155 | + // 7 Доп фильтр через запятую | |
| 156 | + $filters_extra = explode (',', $data[6]); | |
| 157 | + | |
| 158 | + // 8 Пол череззапятую (мужской, женский, детский, унисекс) | |
| 159 | + $gender = explode (',', $data[7]); | |
| 160 | + | |
| 161 | + // 9 Год | |
| 162 | + $years = explode (',', $data[8]); | |
| 163 | + | |
| 164 | + // 10 Цена старая | |
| 165 | + $product_cost_old = $data[9]; | |
| 166 | + | |
| 167 | + // 11 Цена | |
| 168 | + $produc_cost = $data[10]; | |
| 169 | + | |
| 170 | + // 12 Акция | |
| 171 | + $product_akciya = (bool)$data[11]; | |
| 172 | + | |
| 173 | + // 13 Сопуд. Тов. | |
| 174 | + $similar = explode (',', $data[12]); | |
| 175 | + | |
| 176 | + // 14 Новинки | |
| 177 | + $product_new = (bool)$data[13]; | |
| 178 | + | |
| 179 | + // 15 Топ продаж | |
| 180 | + $product_top = (bool)$data[14]; | |
| 181 | + | |
| 182 | + // 16 Сетка Характеристик | |
| 183 | + $feature = explode ('=', $data[15]); | |
| 184 | + | |
| 185 | + // 17 ВИДЕО КОД | |
| 186 | + $product_video = $data[16]; | |
| 187 | + | |
| 188 | + // 18 Галлерея фото | |
| 189 | + $fotos = explode (',', $data[17]); | |
| 190 | + | |
| 191 | + // 19 Штрих код товара. | |
| 192 | + // расшифровал - это модификации товара! | |
| 193 | + | |
| 194 | + $product_image = explode ('=', $data[18]); | |
| 195 | + $product_image = @$product_image[3]; | |
| 196 | + | |
| 197 | + if ( ($_product = Product::find()->filterWhere(['ilike', 'name', trim($product_name)])->one()) === null ) { | |
| 198 | + $_product = new Product(); | |
| 199 | + } | |
| 200 | + | |
| 201 | + // ==== Set category ==== | |
| 202 | + if ( ($category = CategoryName::find()->filterWhere(['ilike', 'value', trim($catalog_name)])->one()) !== null ) { | |
| 203 | + $_product->categories = [$category->category_id]; | |
| 204 | + } else { | |
| 205 | + // Create category | |
| 206 | + $category = new Category(); | |
| 207 | + $category->name = trim($catalog_name); | |
| 208 | + $category->save(); | |
| 209 | + $_product->categories = [$category->category_id]; | |
| 210 | + } | |
| 211 | + | |
| 212 | + // ===== Set brand ==== | |
| 213 | + if ( $brand_name ) { | |
| 214 | + if ( ($brand = BrandName::find()->filterWhere(['ilike', 'value', trim($brand_name)])->one()) !== null ) { | |
| 215 | + $_product->brand_id = $brand->brand_id; | |
| 216 | + } else { | |
| 217 | + // Create brand | |
| 218 | + $brand = new Brand(); | |
| 219 | + $brand->name = trim($brand_name); | |
| 220 | + $brand->save(); | |
| 221 | + $_product->brand_id = $brand->brand_id; | |
| 222 | + } | |
| 223 | + } | |
| 224 | + | |
| 225 | + $_product->name = $product_name; | |
| 226 | + $_product->video = $product_video; | |
| 227 | + $_product->description = $product_body_ru; | |
| 228 | + $_product->top = $product_top; | |
| 229 | + $_product->akciya = $product_akciya; | |
| 230 | + $_product->new = $product_new; | |
| 231 | + | |
| 232 | + | |
| 233 | + $_product->save(); | |
| 234 | + | |
| 235 | + | |
| 236 | + // @todo Set image | |
| 237 | + /*// картинки | |
| 238 | + if (is_file ($dir.'/mod/' . $product_image)) | |
| 239 | + { | |
| 240 | + $resizeObj = new resize ($dir.'/mod/' . $product_image); | |
| 241 | + $resizeObj->resizeImage (135, 200, 'auto'); | |
| 242 | + $resizeObj->saveImage ($dir.'/products/ico/' . $product_image, 100); | |
| 243 | + $resizeObj->resizeImage (370, 370, 'auto'); | |
| 244 | + $resizeObj->saveImage ($dir.'/products/big/' . $product_image, 100); | |
| 245 | + }*/ | |
| 246 | + | |
| 247 | + // ==== mods ==== | |
| 248 | + | |
| 249 | + // (типа штрих код товара) | |
| 250 | + | |
| 251 | + // нужно для проставления характеристик относящихся к модификациям | |
| 252 | + $MOD_ARRAY = []; | |
| 253 | + | |
| 254 | + for ($i = 18; $i < count ($data); $i ++) | |
| 255 | + { | |
| 256 | + if (! empty ($data[$i])) | |
| 257 | + { | |
| 258 | + $mod_arr = explode ('=', $data[$i]); | |
| 259 | + $mod_art = $mod_arr[0]; | |
| 260 | + $mod_size = $mod_arr[1]; | |
| 261 | + $mod_color = $mod_arr[2]; | |
| 262 | + $mod_image = $mod_arr[3]; | |
| 263 | + $mod_cost = $produc_cost; | |
| 264 | + $mod_old_cost = $product_cost_old; | |
| 265 | + | |
| 266 | + // Check product variant | |
| 267 | + if ( ($_productVariant = ProductVariant::find()->andWhere(['ilike', 'sku', $mod_art])->andWhere(['product_id' => $_product->product_id])->one()) === null ) { | |
| 268 | + $_productVariant = new ProductVariant(); | |
| 269 | + $_productVariant->product_id = $_product->product_id; | |
| 270 | + } | |
| 271 | + | |
| 272 | + $_productVariant->sku = $mod_art; | |
| 273 | + $_productVariant->price = $mod_cost; | |
| 274 | + $_productVariant->price_old = $mod_old_cost; | |
| 275 | + | |
| 276 | + $_productVariant->save(); | |
| 277 | + | |
| 278 | + $MOD_ARRAY[] = $_productVariant->product_variant_id; | |
| 279 | + | |
| 280 | + | |
| 281 | + $dir = Yii::getAlias('@productsDir').'/'; | |
| 282 | + if (is_file ($dir . $mod_image)) | |
| 283 | + { | |
| 284 | + $resizeObj = new resize ($dir . $mod_image); | |
| 285 | + $resizeObj->resizeImage (40, 40, 'crop'); | |
| 286 | + $resizeObj->saveImage ($dir.'ico/' . $mod_image, 100); | |
| 287 | + $resizeObj->resizeImage (370, 370, 'auto'); | |
| 288 | + $resizeObj->saveImage ($dir.'/big/' . $mod_image, 100); | |
| 289 | + } | |
| 290 | + | |
| 291 | + $product_variant_type_name = ''; | |
| 292 | + if (! empty ($mod_color)) | |
| 293 | + $product_variant_type_name = 'Цвет'; | |
| 294 | + elseif (! empty ($mod_size)) | |
| 295 | + $product_variant_type_name = 'Размер'; | |
| 296 | + | |
| 297 | + // ===== Set variant type ==== | |
| 298 | + if ( $product_variant_type_name ) { | |
| 299 | + if ( ($product_variant_type = ProductVariantType::find()->filterWhere(['ilike', 'name', $product_variant_type_name])->one()) !== null ) { | |
| 300 | + $_productVariant->product_variant_type_id = $product_variant_type->product_variant_type_id; | |
| 301 | + } else { | |
| 302 | + // Create brand | |
| 303 | + $product_variant_type = new ProductVariantType(); | |
| 304 | + $product_variant_type->name = $product_variant_type_name; | |
| 305 | + $product_variant_type->save(); | |
| 306 | + $_productVariant->product_variant_type_id = $product_variant_type->product_variant_type_id; | |
| 307 | + } | |
| 308 | + } | |
| 309 | + } | |
| 310 | + } | |
| 311 | + | |
| 312 | + /*// ==== fotos ==== | |
| 313 | + | |
| 314 | + foreach ($fotos as $foto) | |
| 315 | + { | |
| 316 | + $fields = [ | |
| 317 | + 'product_id' => $product_id, | |
| 318 | + 'image' => $foto | |
| 319 | + ]; | |
| 320 | + | |
| 321 | + $modelFotos = Fotos::find () | |
| 322 | + ->where ('image=:image', [ | |
| 323 | + ':image' => $foto | |
| 324 | + ]) | |
| 325 | + ->one (); | |
| 326 | + | |
| 327 | + if (empty ($modelFotos->id)) | |
| 328 | + { | |
| 329 | + $db->createCommand () | |
| 330 | + ->insert ('products_fotos', $fields) | |
| 331 | + ->execute (); | |
| 332 | + } | |
| 333 | + else | |
| 334 | + { | |
| 335 | + $db->createCommand () | |
| 336 | + ->update ('products_fotos', $fields, 'id = ' . $modelFotos->id) | |
| 337 | + ->execute (); | |
| 338 | + } | |
| 339 | + | |
| 340 | + if (is_file ($dir.'/fotos/' . $foto)) | |
| 341 | + { | |
| 342 | + $resizeObj = new resize ($dir.'/fotos/' . $foto); | |
| 343 | + $resizeObj->resizeImage (100, 100, 'crop'); | |
| 344 | + $resizeObj->saveImage ($dir.'/fotos/ico/' . $foto, 100); | |
| 345 | + $resizeObj->resizeImage (400, 400, 'crop'); | |
| 346 | + $resizeObj->saveImage ($dir.'/fotos/big/' . $foto, 100); | |
| 347 | + } | |
| 348 | + }*/ | |
| 349 | + | |
| 350 | + // ======================== | |
| 351 | + // ==== ХАРАКТЕРИСТИКИ ==== | |
| 352 | + // ======================== | |
| 353 | + | |
| 354 | + // есть общие характеристики, которые относятся product_id, такие как brand, gender... | |
| 355 | + // есть характеристики, которые относятся mod_id, такие как цвет, размер... | |
| 356 | + | |
| 357 | + // ==== gender ==== | |
| 358 | + | |
| 359 | + /*if (! empty ($gender)) | |
| 360 | + { | |
| 361 | + $bookGender = Book::find () | |
| 362 | + ->where ('book_alias=:book', [ | |
| 363 | + ':book' => 'gender' | |
| 364 | + ]) | |
| 365 | + ->one (); | |
| 366 | + | |
| 367 | + foreach ($gender as $filter) | |
| 368 | + { | |
| 369 | + if (! empty ($filter)) | |
| 370 | + { | |
| 371 | + $bookGenderValue = BookValue::find () | |
| 372 | + ->where (' | |
| 373 | + book_id=:book | |
| 374 | + AND book_value_title=:value | |
| 375 | + AND book_value_alias=:alias | |
| 376 | + ', [ | |
| 377 | + ':book' => $bookGender->book_id, | |
| 378 | + ':value' => $filter, | |
| 379 | + ':alias' => Translite::rusencode ($filter), | |
| 380 | + ] | |
| 381 | + ) | |
| 382 | + ->one(); | |
| 383 | + | |
| 384 | + if (! isset ($bookGenderValue->book_value_id) || empty ($bookGenderValue->book_value_id)) | |
| 385 | + { | |
| 386 | + $db->createCommand () | |
| 387 | + ->insert (BookValue::tableName (), [ | |
| 388 | + 'book_id' => $bookGender->book_id, | |
| 389 | + 'book_value_title' => $filter, | |
| 390 | + 'book_value_alias' => Translite::rusencode ($filter), | |
| 391 | + ]) | |
| 392 | + ->execute (); | |
| 393 | + | |
| 394 | + $book_value_id = Yii::$app->db->lastInsertID; | |
| 395 | + } | |
| 396 | + else | |
| 397 | + { | |
| 398 | + $book_value_id = $bookGenderValue->book_value_id; | |
| 399 | + } | |
| 400 | + | |
| 401 | + // + products_value | |
| 402 | + $db->createCommand (' | |
| 403 | + INSERT IGNORE products_value | |
| 404 | + SET | |
| 405 | + product_id = '.(int)$product_id.', | |
| 406 | + book_value_id = '.(int)$book_value_id.' | |
| 407 | + ') | |
| 408 | + ->execute (); | |
| 409 | + } | |
| 410 | + } | |
| 411 | + } | |
| 412 | + | |
| 413 | + // есть характеристики, которые относятся mod_id, такие как цвет, размер... | |
| 414 | + | |
| 415 | + // ==== destination ==== | |
| 416 | + | |
| 417 | + if (! empty ($filters)) | |
| 418 | + { | |
| 419 | + $bookDestination = Book::find () | |
| 420 | + ->where ('book_alias=:book', [ | |
| 421 | + ':book' => 'destination' | |
| 422 | + ]) | |
| 423 | + ->one (); | |
| 424 | + | |
| 425 | + foreach ($filters as $filter) | |
| 426 | + { | |
| 427 | + if (! empty ($filter)) | |
| 428 | + { | |
| 429 | + $bookDestinationValue = BookValue::find () | |
| 430 | + ->where (' | |
| 431 | + book_id=:book | |
| 432 | + AND book_value_title=:value | |
| 433 | + AND book_value_alias=:alias | |
| 434 | + ', [ | |
| 435 | + ':book' => $bookDestination->book_id, | |
| 436 | + ':value' => $filter, | |
| 437 | + ':alias' => Translite::rusencode ($filter), | |
| 438 | + ] | |
| 439 | + ) | |
| 440 | + ->one(); | |
| 441 | + | |
| 442 | + if (! isset ($bookDestinationValue->book_value_id) || empty ($bookDestinationValue->book_value_id)) | |
| 443 | + { | |
| 444 | + $db->createCommand () | |
| 445 | + ->insert (BookValue::tableName (), [ | |
| 446 | + 'book_id' => $bookDestination->book_id, | |
| 447 | + 'book_value_title' => $filter, | |
| 448 | + 'book_value_alias' => Translite::rusencode ($filter), | |
| 449 | + ]) | |
| 450 | + ->execute (); | |
| 451 | + | |
| 452 | + $book_value_id = Yii::$app->db->lastInsertID; | |
| 453 | + } | |
| 454 | + else | |
| 455 | + { | |
| 456 | + $book_value_id = $bookDestinationValue->book_value_id; | |
| 457 | + } | |
| 458 | + | |
| 459 | + if (! empty ($MOD_ARRAY)) | |
| 460 | + { | |
| 461 | + foreach ($MOD_ARRAY as $id) | |
| 462 | + { | |
| 463 | + // + products_value | |
| 464 | + $db->createCommand (' | |
| 465 | + INSERT IGNORE mod_value | |
| 466 | + SET | |
| 467 | + mod_id = '.(int)$id.', | |
| 468 | + book_value_id = '.(int)$book_value_id.' | |
| 469 | + ') | |
| 470 | + ->execute (); | |
| 471 | + } | |
| 472 | + } | |
| 473 | + } | |
| 474 | + } | |
| 475 | + } | |
| 476 | + | |
| 477 | + // ==== special ==== | |
| 478 | + | |
| 479 | + if (! empty ($filters_extra)) | |
| 480 | + { | |
| 481 | + $bookSpecial = Book::find () | |
| 482 | + ->where ('book_alias=:book', [ | |
| 483 | + ':book' => 'special' | |
| 484 | + ]) | |
| 485 | + ->one (); | |
| 486 | + | |
| 487 | + foreach ($filters_extra as $filter) | |
| 488 | + { | |
| 489 | + if (! empty ($filter)) | |
| 490 | + { | |
| 491 | + $bookSpecialValue = BookValue::find () | |
| 492 | + ->where (' | |
| 493 | + book_id=:book | |
| 494 | + AND book_value_title=:value | |
| 495 | + AND book_value_alias=:alias | |
| 496 | + ', [ | |
| 497 | + ':book' => $bookSpecial->book_id, | |
| 498 | + ':value' => $filter, | |
| 499 | + ':alias' => Translite::rusencode ($filter), | |
| 500 | + ] | |
| 501 | + ) | |
| 502 | + ->one(); | |
| 503 | + | |
| 504 | + if (! isset ($bookSpecialValue->book_value_id) || empty ($bookSpecialValue->book_value_id)) | |
| 505 | + { | |
| 506 | + $db->createCommand () | |
| 507 | + ->insert (BookValue::tableName (), [ | |
| 508 | + 'book_id' => $bookSpecial->book_id, | |
| 509 | + 'book_value_title' => $filter, | |
| 510 | + 'book_value_alias' => Translite::rusencode ($filter), | |
| 511 | + ]) | |
| 512 | + ->execute (); | |
| 513 | + | |
| 514 | + $book_value_id = Yii::$app->db->lastInsertID; | |
| 515 | + } | |
| 516 | + else | |
| 517 | + { | |
| 518 | + $book_value_id = $bookSpecialValue->book_value_id; | |
| 519 | + } | |
| 520 | + | |
| 521 | + if (! empty ($MOD_ARRAY)) | |
| 522 | + { | |
| 523 | + foreach ($MOD_ARRAY as $id) | |
| 524 | + { | |
| 525 | + // + products_value | |
| 526 | + $db->createCommand (' | |
| 527 | + INSERT IGNORE mod_value | |
| 528 | + SET | |
| 529 | + mod_id = '.(int)$id.', | |
| 530 | + book_value_id = '.(int)$book_value_id.' | |
| 531 | + ') | |
| 532 | + ->execute (); | |
| 533 | + } | |
| 534 | + } | |
| 535 | + } | |
| 536 | + } | |
| 537 | + } | |
| 538 | + | |
| 539 | + // ==== year ==== | |
| 540 | + | |
| 541 | + if (! empty ($years)) | |
| 542 | + { | |
| 543 | + $bookYear = Book::find () | |
| 544 | + ->where ('book_alias=:book', [ | |
| 545 | + ':book' => 'year' | |
| 546 | + ]) | |
| 547 | + ->one (); | |
| 548 | + | |
| 549 | + foreach ($years as $filter) | |
| 550 | + { | |
| 551 | + if (! empty ($filter)) | |
| 552 | + { | |
| 553 | + $bookYearValue = BookValue::find () | |
| 554 | + ->where (' | |
| 555 | + book_id=:book | |
| 556 | + AND book_value_title=:value | |
| 557 | + AND book_value_alias=:alias | |
| 558 | + ', [ | |
| 559 | + ':book' => $bookYear->book_id, | |
| 560 | + ':value' => $filter, | |
| 561 | + ':alias' => Translite::rusencode ($filter), | |
| 562 | + ] | |
| 563 | + ) | |
| 564 | + ->one(); | |
| 565 | + | |
| 566 | + if (! isset ($bookYearValue->book_value_id) || empty ($bookYearValue->book_value_id)) | |
| 567 | + { | |
| 568 | + $db->createCommand () | |
| 569 | + ->insert (BookValue::tableName (), [ | |
| 570 | + 'book_id' => $bookYear->book_id, | |
| 571 | + 'book_value_title' => $filter, | |
| 572 | + 'book_value_alias' => Translite::rusencode ($filter), | |
| 573 | + ]) | |
| 574 | + ->execute (); | |
| 575 | + | |
| 576 | + $book_value_id = Yii::$app->db->lastInsertID; | |
| 577 | + } | |
| 578 | + else | |
| 579 | + { | |
| 580 | + $book_value_id = $bookYearValue->book_value_id; | |
| 581 | + } | |
| 582 | + | |
| 583 | + if (! empty ($MOD_ARRAY)) | |
| 584 | + { | |
| 585 | + foreach ($MOD_ARRAY as $id) | |
| 586 | + { | |
| 587 | + // + products_value | |
| 588 | + $db->createCommand (' | |
| 589 | + INSERT IGNORE mod_value | |
| 590 | + SET | |
| 591 | + mod_id = '.(int)$id.', | |
| 592 | + book_value_id = '.(int)$book_value_id.' | |
| 593 | + ') | |
| 594 | + ->execute (); | |
| 595 | + } | |
| 596 | + } | |
| 597 | + } | |
| 598 | + } | |
| 599 | + } | |
| 600 | + | |
| 601 | + // ==== $feature ==== | |
| 602 | + | |
| 603 | + if (! empty ($feature)) | |
| 604 | + { | |
| 605 | + foreach ($feature as $string) | |
| 606 | + { | |
| 607 | + $string = str_replace([':', '.'], '', $string); | |
| 608 | + | |
| 609 | + if (! empty ($string)) | |
| 610 | + { | |
| 611 | + list ($book_title, $value_title) = explode ('*', $string); | |
| 612 | + | |
| 613 | + $book_title = trim ($book_title); | |
| 614 | + $value_title = trim ($value_title); | |
| 615 | + | |
| 616 | + if (empty ($book_title) || empty ($value_title)) | |
| 617 | + { | |
| 618 | + CONTINUE; | |
| 619 | + } | |
| 620 | + | |
| 621 | + $bookFeature = Book::find () | |
| 622 | + ->where ('book_title=:book', [ | |
| 623 | + ':book' => $book_title | |
| 624 | + ]) | |
| 625 | + ->one (); | |
| 626 | + | |
| 627 | + if (! isset ($bookFeature->book_id) || empty ($bookFeature->book_id)) | |
| 628 | + { | |
| 629 | + $db->createCommand () | |
| 630 | + ->insert (Book::tableName (), [ | |
| 631 | + 'book_title' => $book_title, | |
| 632 | + 'book_alias' => Translite::rusencode ($book_title), | |
| 633 | + ]) | |
| 634 | + ->execute (); | |
| 635 | + | |
| 636 | + $book_id = Yii::$app->db->lastInsertID; | |
| 637 | + } | |
| 638 | + else | |
| 639 | + { | |
| 640 | + $book_id = $bookFeature->book_id; | |
| 641 | + } | |
| 642 | + | |
| 643 | + $bookFeatureValue = BookValue::find () | |
| 644 | + ->where (' | |
| 645 | + book_id=:book | |
| 646 | + AND book_value_title=:value | |
| 647 | + AND book_value_alias=:alias | |
| 648 | + ', [ | |
| 649 | + ':book' => $book_id, | |
| 650 | + ':value' => $value_title, | |
| 651 | + ':alias' => Translite::rusencode ($value_title), | |
| 652 | + ] | |
| 653 | + ) | |
| 654 | + ->one(); | |
| 655 | + | |
| 656 | + if (! isset ($bookFeatureValue->book_value_id) || empty ($bookFeatureValue->book_value_id)) | |
| 657 | + { | |
| 658 | + $db->createCommand () | |
| 659 | + ->insert (BookValue::tableName (), [ | |
| 660 | + 'book_id' => $book_id, | |
| 661 | + 'book_value_title' => $value_title, | |
| 662 | + 'book_value_alias' => Translite::rusencode ($value_title), | |
| 663 | + ]) | |
| 664 | + ->execute (); | |
| 665 | + | |
| 666 | + $book_value_id = Yii::$app->db->lastInsertID; | |
| 667 | + } | |
| 668 | + else | |
| 669 | + { | |
| 670 | + $book_value_id = $bookFeatureValue->book_value_id; | |
| 671 | + } | |
| 672 | + | |
| 673 | + if (! empty ($MOD_ARRAY)) | |
| 674 | + { | |
| 675 | + foreach ($MOD_ARRAY as $id) | |
| 676 | + { | |
| 677 | + // + products_value | |
| 678 | + $db->createCommand (' | |
| 679 | + INSERT IGNORE mod_value | |
| 680 | + SET | |
| 681 | + mod_id = '.(int)$id.', | |
| 682 | + book_value_id = '.(int)$book_value_id.' | |
| 683 | + ') | |
| 684 | + ->execute (); | |
| 685 | + } | |
| 686 | + } | |
| 687 | + } | |
| 688 | + } | |
| 689 | + }*/ | |
| 690 | + | |
| 691 | + // ==== IMPORTANT ==== | |
| 692 | + | |
| 693 | + // записуем ID обработанной записи | |
| 694 | + | |
| 695 | + $_product->save(); | |
| 696 | + var_dump("$j: Product {$_product->name} saved\n"); | |
| 697 | + if ($j > 100) { | |
| 698 | + var_dump("Dev OK"); | |
| 699 | + exit; | |
| 700 | + } | |
| 701 | + } | |
| 702 | + | |
| 703 | + fclose ($handle); | |
| 704 | + } | |
| 705 | + } | |
| 706 | +} | ... | ... |
| 1 | +++ a/backend/controllers/SliderController.php | |
| 1 | +<?php | |
| 2 | + | |
| 3 | +namespace backend\controllers; | |
| 4 | + | |
| 5 | +use common\models\TemplateLocation; | |
| 6 | +use Yii; | |
| 7 | +use common\models\Slider; | |
| 8 | +use common\models\SliderSearch; | |
| 9 | +use yii\helpers\ArrayHelper; | |
| 10 | +use yii\web\Controller; | |
| 11 | +use yii\web\NotFoundHttpException; | |
| 12 | +use yii\filters\VerbFilter; | |
| 13 | +use developeruz\db_rbac\behaviors\AccessBehavior; | |
| 14 | +/** | |
| 15 | + * SliderController implements the CRUD actions for Slider model. | |
| 16 | + */ | |
| 17 | +class SliderController extends Controller | |
| 18 | +{ | |
| 19 | + /** | |
| 20 | + * @inheritdoc | |
| 21 | + */ | |
| 22 | + public function behaviors() | |
| 23 | + { | |
| 24 | + return [ | |
| 25 | + 'access'=>[ | |
| 26 | + 'class' => AccessBehavior::className(), | |
| 27 | + 'rules' => | |
| 28 | + ['site' => | |
| 29 | + [ | |
| 30 | + [ | |
| 31 | + 'actions' => ['login', 'error'], | |
| 32 | + 'allow' => true, | |
| 33 | + ] | |
| 34 | + ] | |
| 35 | + ] | |
| 36 | + ], | |
| 37 | + 'verbs' => [ | |
| 38 | + 'class' => VerbFilter::className(), | |
| 39 | + 'actions' => [ | |
| 40 | + 'delete' => ['POST'], | |
| 41 | + ], | |
| 42 | + ], | |
| 43 | + ]; | |
| 44 | + } | |
| 45 | + | |
| 46 | + /** | |
| 47 | + * Lists all Slider models. | |
| 48 | + * @return mixed | |
| 49 | + */ | |
| 50 | + public function actionIndex() | |
| 51 | + { | |
| 52 | + $searchModel = new SliderSearch(); | |
| 53 | + $dataProvider = $searchModel->search(Yii::$app->request->queryParams); | |
| 54 | + | |
| 55 | + return $this->render('index', [ | |
| 56 | + 'searchModel' => $searchModel, | |
| 57 | + 'dataProvider' => $dataProvider, | |
| 58 | + ]); | |
| 59 | + } | |
| 60 | + | |
| 61 | + /** | |
| 62 | + * Displays a single Slider model. | |
| 63 | + * @param integer $id | |
| 64 | + * @return mixed | |
| 65 | + */ | |
| 66 | + public function actionView($id) | |
| 67 | + { | |
| 68 | + return $this->render('view', [ | |
| 69 | + 'model' => $this->findModel($id), | |
| 70 | + ]); | |
| 71 | + } | |
| 72 | + | |
| 73 | + /** | |
| 74 | + * Creates a new Slider model. | |
| 75 | + * If creation is successful, the browser will be redirected to the 'view' page. | |
| 76 | + * @return mixed | |
| 77 | + */ | |
| 78 | + public function actionCreate() | |
| 79 | + { | |
| 80 | + $model = new Slider(); | |
| 81 | + | |
| 82 | + if ($model->load(Yii::$app->request->post()) && $model->save()) { | |
| 83 | + return $this->redirect(['view', 'id' => $model->slider_id]); | |
| 84 | + } else { | |
| 85 | + | |
| 86 | + | |
| 87 | + return $this->render('create', [ | |
| 88 | + 'model' => $model, | |
| 89 | + ]); | |
| 90 | + } | |
| 91 | + } | |
| 92 | + | |
| 93 | + /** | |
| 94 | + * Updates an existing Slider model. | |
| 95 | + * If update is successful, the browser will be redirected to the 'view' page. | |
| 96 | + * @param integer $id | |
| 97 | + * @return mixed | |
| 98 | + */ | |
| 99 | + public function actionUpdate($id) | |
| 100 | + { | |
| 101 | + $model = $this->findModel($id); | |
| 102 | + | |
| 103 | + if ($model->load(Yii::$app->request->post()) && $model->save()) { | |
| 104 | + return $this->redirect(['view', 'id' => $model->slider_id]); | |
| 105 | + } else { | |
| 106 | + return $this->render('update', [ | |
| 107 | + 'model' => $model, | |
| 108 | + ]); | |
| 109 | + } | |
| 110 | + } | |
| 111 | + | |
| 112 | + /** | |
| 113 | + * Deletes an existing Slider model. | |
| 114 | + * If deletion is successful, the browser will be redirected to the 'index' page. | |
| 115 | + * @param integer $id | |
| 116 | + * @return mixed | |
| 117 | + */ | |
| 118 | + public function actionDelete($id) | |
| 119 | + { | |
| 120 | + $this->findModel($id)->delete(); | |
| 121 | + | |
| 122 | + return $this->redirect(['index']); | |
| 123 | + } | |
| 124 | + | |
| 125 | + /** | |
| 126 | + * Finds the Slider model based on its primary key value. | |
| 127 | + * If the model is not found, a 404 HTTP exception will be thrown. | |
| 128 | + * @param integer $id | |
| 129 | + * @return Slider the loaded model | |
| 130 | + * @throws NotFoundHttpException if the model cannot be found | |
| 131 | + */ | |
| 132 | + protected function findModel($id) | |
| 133 | + { | |
| 134 | + if (($model = Slider::findOne($id)) !== null) { | |
| 135 | + return $model; | |
| 136 | + } else { | |
| 137 | + throw new NotFoundHttpException('The requested page does not exist.'); | |
| 138 | + } | |
| 139 | + } | |
| 140 | +} | ... | ... |
| 1 | +++ a/backend/controllers/SliderImageController.php | |
| 1 | +<?php | |
| 2 | + | |
| 3 | +namespace backend\controllers; | |
| 4 | +use developeruz\db_rbac\behaviors\AccessBehavior; | |
| 5 | +use common\models\Slider; | |
| 6 | +use Yii; | |
| 7 | +use common\models\SliderImage; | |
| 8 | +use common\models\SliderImageSearch; | |
| 9 | +use yii\web\Controller; | |
| 10 | +use yii\web\NotFoundHttpException; | |
| 11 | +use yii\filters\VerbFilter; | |
| 12 | +use yii\web\UploadedFile; | |
| 13 | +/** | |
| 14 | + * SliderImageController implements the CRUD actions for SliderImage model. | |
| 15 | + */ | |
| 16 | +class SliderImageController extends Controller | |
| 17 | +{ | |
| 18 | + /** | |
| 19 | + * @inheritdoc | |
| 20 | + */ | |
| 21 | + public function behaviors() | |
| 22 | + { | |
| 23 | + return [ | |
| 24 | + 'access'=>[ | |
| 25 | + 'class' => AccessBehavior::className(), | |
| 26 | + 'rules' => | |
| 27 | + ['site' => | |
| 28 | + [ | |
| 29 | + [ | |
| 30 | + 'actions' => ['login', 'error'], | |
| 31 | + 'allow' => true, | |
| 32 | + ] | |
| 33 | + ] | |
| 34 | + ] | |
| 35 | + ], | |
| 36 | + 'verbs' => [ | |
| 37 | + 'class' => VerbFilter::className(), | |
| 38 | + 'actions' => [ | |
| 39 | + 'delete' => ['POST'], | |
| 40 | + ], | |
| 41 | + ], | |
| 42 | + ]; | |
| 43 | + } | |
| 44 | + | |
| 45 | + /** | |
| 46 | + * Lists all SliderImage models. | |
| 47 | + * @param $slider_id Slider id | |
| 48 | + * @return mixed | |
| 49 | + */ | |
| 50 | + public function actionIndex($slider_id) | |
| 51 | + { | |
| 52 | + $searchModel = new SliderImageSearch(); | |
| 53 | + $dataProvider = $searchModel->search($slider_id, Yii::$app->request->queryParams); | |
| 54 | + | |
| 55 | + return $this->render('index', [ | |
| 56 | + 'slider_id' => $slider_id, | |
| 57 | + 'searchModel' => $searchModel, | |
| 58 | + 'dataProvider' => $dataProvider, | |
| 59 | + ]); | |
| 60 | + } | |
| 61 | + | |
| 62 | + /** | |
| 63 | + * Displays a single SliderImage model. | |
| 64 | + * @param integer $id | |
| 65 | + * @param $slider_id Slider id | |
| 66 | + * @return mixed | |
| 67 | + */ | |
| 68 | + public function actionView($slider_id, $id) | |
| 69 | + { | |
| 70 | + return $this->render('view', [ | |
| 71 | + 'slider_id' => $slider_id, | |
| 72 | + 'model' => $this->findModel($slider_id, $id), | |
| 73 | + ]); | |
| 74 | + } | |
| 75 | + | |
| 76 | + /** | |
| 77 | + * Creates a new SliderImage model. | |
| 78 | + * If creation is successful, the browser will be redirected to the 'view' page. | |
| 79 | + * @param $slider_id Slider id | |
| 80 | + * @return mixed | |
| 81 | + */ | |
| 82 | + public function actionCreate($slider_id) | |
| 83 | + { | |
| 84 | + $model = new SliderImage(); | |
| 85 | + | |
| 86 | + if ($model->load(Yii::$app->request->post())) { | |
| 87 | + $model->slider_id = $slider_id; | |
| 88 | + if ( ($image = UploadedFile::getInstance($model, 'image')) ) { | |
| 89 | + $model->image = $image->name; | |
| 90 | + } | |
| 91 | + if ($model->save() && $image) { | |
| 92 | + | |
| 93 | + $imgDir = Yii::getAlias('@storage/slider/'); | |
| 94 | + | |
| 95 | + if(!is_dir($imgDir)) { | |
| 96 | + mkdir($imgDir, 0755, true); | |
| 97 | + } | |
| 98 | + | |
| 99 | + $image->saveAs(Yii::getAlias('@storage/slider/' . $image->name)); | |
| 100 | + } | |
| 101 | + return $this->redirect(['view', 'slider_id'=>$slider_id, 'id' => $model->slider_image_id]); | |
| 102 | + } else { | |
| 103 | + | |
| 104 | + $slider = Slider::findOne($slider_id); | |
| 105 | + | |
| 106 | + return $this->render('create', [ | |
| 107 | + 'slider_id' => $slider_id, | |
| 108 | + 'model' => $model, | |
| 109 | + 'slider' => $slider, | |
| 110 | + ]); | |
| 111 | + } | |
| 112 | + } | |
| 113 | + | |
| 114 | + /** | |
| 115 | + * Updates an existing SliderImage model. | |
| 116 | + * If update is successful, the browser will be redirected to the 'view' page. | |
| 117 | + * @param $slider_id Slider id | |
| 118 | + * @param integer $id | |
| 119 | + * @return mixed | |
| 120 | + */ | |
| 121 | + public function actionUpdate($slider_id, $id) | |
| 122 | + { | |
| 123 | + $model = $this->findModel($slider_id, $id); | |
| 124 | + | |
| 125 | + if ($model->load(Yii::$app->request->post())) { | |
| 126 | + | |
| 127 | + | |
| 128 | + | |
| 129 | + if ( ($image = UploadedFile::getInstance($model, 'image')) ) { | |
| 130 | + $model->image = $image->name; | |
| 131 | + } | |
| 132 | + | |
| 133 | + if(!$model->image){ | |
| 134 | + $model->image = $model->getOldAttribute('image'); | |
| 135 | + } | |
| 136 | + | |
| 137 | + if ($model->save() && $image) { | |
| 138 | + $imgDir = Yii::getAlias('@storage/slider/'); | |
| 139 | + | |
| 140 | + if(!is_dir($imgDir)) { | |
| 141 | + mkdir($imgDir, 0755, true); | |
| 142 | + } | |
| 143 | + | |
| 144 | + $image->saveAs(Yii::getAlias('@storage/slider/' . $image->name)); | |
| 145 | + } | |
| 146 | + return $this->redirect(['view', 'slider_id'=>$slider_id, 'id' => $model->slider_image_id]); | |
| 147 | + } else { | |
| 148 | + | |
| 149 | + $slider = Slider::findOne($slider_id); | |
| 150 | + return $this->render('update', [ | |
| 151 | + 'model' => $model, | |
| 152 | + 'slider_id' => $slider_id, | |
| 153 | + 'slider' => $slider, | |
| 154 | + ]); | |
| 155 | + } | |
| 156 | + } | |
| 157 | + | |
| 158 | + /** | |
| 159 | + * Deletes an existing SliderImage model. | |
| 160 | + * If deletion is successful, the browser will be redirected to the 'index' page. | |
| 161 | + * @param $slider_id Slider id | |
| 162 | + * @param integer $id | |
| 163 | + * @return mixed | |
| 164 | + */ | |
| 165 | + public function actionDelete($slider_id, $id) | |
| 166 | + { | |
| 167 | + $this->findModel($slider_id, $id)->delete(); | |
| 168 | + | |
| 169 | + return $this->redirect(['index','slider_id'=>$slider_id]); | |
| 170 | + } | |
| 171 | + | |
| 172 | + /** | |
| 173 | + * Finds the SliderImage model based on its primary key value. | |
| 174 | + * If the model is not found, a 404 HTTP exception will be thrown. | |
| 175 | + * @param $slider_id Slider id | |
| 176 | + * @param integer $id | |
| 177 | + * @return SliderImage the loaded model | |
| 178 | + * @throws NotFoundHttpException if the model cannot be found | |
| 179 | + */ | |
| 180 | + protected function findModel($slider_id,$id) | |
| 181 | + { | |
| 182 | + if (($model = SliderImage::find()->where(['slider_image_id'=> $id, 'slider_id'=>$slider_id])->one()) !== null) { | |
| 183 | + return $model; | |
| 184 | + } else { | |
| 185 | + throw new NotFoundHttpException('The requested page does not exist.'); | |
| 186 | + } | |
| 187 | + } | |
| 188 | +} | ... | ... |
| 1 | +++ a/backend/controllers/SubscribeController.php | |
| 1 | +<?php | |
| 2 | + | |
| 3 | +namespace backend\controllers; | |
| 4 | + | |
| 5 | +use Yii; | |
| 6 | +use common\models\Subscribe; | |
| 7 | +use common\models\SubscribeSearch; | |
| 8 | +use yii\web\Controller; | |
| 9 | +use yii\web\NotFoundHttpException; | |
| 10 | +use yii\filters\VerbFilter; | |
| 11 | +use developeruz\db_rbac\behaviors\AccessBehavior; | |
| 12 | +/** | |
| 13 | + * SubscribeController implements the CRUD actions for Subscribe model. | |
| 14 | + */ | |
| 15 | +class SubscribeController extends Controller | |
| 16 | +{ | |
| 17 | + /** | |
| 18 | + * @inheritdoc | |
| 19 | + */ | |
| 20 | + public function behaviors() | |
| 21 | + { | |
| 22 | + return [ | |
| 23 | + 'access'=>[ | |
| 24 | + 'class' => AccessBehavior::className(), | |
| 25 | + 'rules' => | |
| 26 | + ['site' => | |
| 27 | + [ | |
| 28 | + [ | |
| 29 | + 'actions' => ['login', 'error'], | |
| 30 | + 'allow' => true, | |
| 31 | + ] | |
| 32 | + ] | |
| 33 | + ] | |
| 34 | + ], | |
| 35 | + 'verbs' => [ | |
| 36 | + 'class' => VerbFilter::className(), | |
| 37 | + 'actions' => [ | |
| 38 | + 'delete' => ['POST'], | |
| 39 | + ], | |
| 40 | + ], | |
| 41 | + ]; | |
| 42 | + } | |
| 43 | + | |
| 44 | + /** | |
| 45 | + * Lists all Subscribe models. | |
| 46 | + * @return mixed | |
| 47 | + */ | |
| 48 | + public function actionIndex() | |
| 49 | + { | |
| 50 | + $searchModel = new SubscribeSearch(); | |
| 51 | + $dataProvider = $searchModel->search(Yii::$app->request->queryParams); | |
| 52 | + | |
| 53 | + return $this->render('index', [ | |
| 54 | + 'searchModel' => $searchModel, | |
| 55 | + 'dataProvider' => $dataProvider, | |
| 56 | + ]); | |
| 57 | + } | |
| 58 | + | |
| 59 | + /** | |
| 60 | + * Displays a single Subscribe model. | |
| 61 | + * @param integer $id | |
| 62 | + * @return mixed | |
| 63 | + */ | |
| 64 | + public function actionView($id) | |
| 65 | + { | |
| 66 | + return $this->render('view', [ | |
| 67 | + 'model' => $this->findModel($id), | |
| 68 | + ]); | |
| 69 | + } | |
| 70 | + | |
| 71 | + /** | |
| 72 | + * Creates a new Subscribe model. | |
| 73 | + * If creation is successful, the browser will be redirected to the 'view' page. | |
| 74 | + * @return mixed | |
| 75 | + */ | |
| 76 | + public function actionCreate() | |
| 77 | + { | |
| 78 | + $model = new Subscribe(); | |
| 79 | + | |
| 80 | + if ($model->load(Yii::$app->request->post()) && $model->save()) { | |
| 81 | + return $this->redirect(['view', 'id' => $model->id]); | |
| 82 | + } else { | |
| 83 | + return $this->render('create', [ | |
| 84 | + 'model' => $model, | |
| 85 | + ]); | |
| 86 | + } | |
| 87 | + } | |
| 88 | + | |
| 89 | + /** | |
| 90 | + * Updates an existing Subscribe model. | |
| 91 | + * If update is successful, the browser will be redirected to the 'view' page. | |
| 92 | + * @param integer $id | |
| 93 | + * @return mixed | |
| 94 | + */ | |
| 95 | + public function actionUpdate($id) | |
| 96 | + { | |
| 97 | + $model = $this->findModel($id); | |
| 98 | + | |
| 99 | + if ($model->load(Yii::$app->request->post()) && $model->save()) { | |
| 100 | + return $this->redirect(['view', 'id' => $model->id]); | |
| 101 | + } else { | |
| 102 | + return $this->render('update', [ | |
| 103 | + 'model' => $model, | |
| 104 | + ]); | |
| 105 | + } | |
| 106 | + } | |
| 107 | + | |
| 108 | + /** | |
| 109 | + * Deletes an existing Subscribe model. | |
| 110 | + * If deletion is successful, the browser will be redirected to the 'index' page. | |
| 111 | + * @param integer $id | |
| 112 | + * @return mixed | |
| 113 | + */ | |
| 114 | + public function actionDelete($id) | |
| 115 | + { | |
| 116 | + $this->findModel($id)->delete(); | |
| 117 | + | |
| 118 | + return $this->redirect(['index']); | |
| 119 | + } | |
| 120 | + | |
| 121 | + /** | |
| 122 | + * Finds the Subscribe model based on its primary key value. | |
| 123 | + * If the model is not found, a 404 HTTP exception will be thrown. | |
| 124 | + * @param integer $id | |
| 125 | + * @return Subscribe the loaded model | |
| 126 | + * @throws NotFoundHttpException if the model cannot be found | |
| 127 | + */ | |
| 128 | + protected function findModel($id) | |
| 129 | + { | |
| 130 | + if (($model = Subscribe::findOne($id)) !== null) { | |
| 131 | + return $model; | |
| 132 | + } else { | |
| 133 | + throw new NotFoundHttpException('The requested page does not exist.'); | |
| 134 | + } | |
| 135 | + } | |
| 136 | +} | ... | ... |
| 1 | +++ a/backend/controllers/UserController.php | |
| 1 | +<?php | |
| 2 | + | |
| 3 | +namespace backend\controllers; | |
| 4 | + | |
| 5 | +use Yii; | |
| 6 | +use backend\models\User; | |
| 7 | +use backend\models\UserSearch; | |
| 8 | +use yii\filters\AccessControl; | |
| 9 | +use yii\web\Controller; | |
| 10 | +use yii\web\NotFoundHttpException; | |
| 11 | +use yii\filters\VerbFilter; | |
| 12 | +use yii\web\Response; | |
| 13 | +use yii\widgets\ActiveForm; | |
| 14 | + | |
| 15 | +/** | |
| 16 | + * UserController implements the CRUD actions for User model. | |
| 17 | + */ | |
| 18 | +class UserController extends Controller | |
| 19 | +{ | |
| 20 | + /** | |
| 21 | + * @inheritdoc | |
| 22 | + */ | |
| 23 | + public function behaviors() | |
| 24 | + { | |
| 25 | + | |
| 26 | + | |
| 27 | + return [ | |
| 28 | + 'verbs' => [ | |
| 29 | + 'class' => VerbFilter::className(), | |
| 30 | + 'actions' => [ | |
| 31 | + 'delete' => ['POST'], | |
| 32 | + ], | |
| 33 | + ], | |
| 34 | + 'access' => [ | |
| 35 | + 'class' => AccessControl::className(), | |
| 36 | + 'rules' => [ | |
| 37 | + [ | |
| 38 | + 'allow' => true, | |
| 39 | +// 'actions' => ['login', 'signup'], | |
| 40 | + 'roles' => ['admin'], | |
| 41 | + ], | |
| 42 | + [ | |
| 43 | +// 'allow' => true, | |
| 44 | +// 'actions' => ['logout'], | |
| 45 | +// 'roles' => ['@'], | |
| 46 | + ], | |
| 47 | + ], | |
| 48 | + ], | |
| 49 | + ]; | |
| 50 | + } | |
| 51 | + | |
| 52 | + /** | |
| 53 | + * Lists all User models. | |
| 54 | + * @return mixed | |
| 55 | + */ | |
| 56 | + public function actionIndex() | |
| 57 | + { | |
| 58 | + $searchModel = new UserSearch(); | |
| 59 | + $dataProvider = $searchModel->search(Yii::$app->request->queryParams); | |
| 60 | + | |
| 61 | + return $this->render('index', [ | |
| 62 | + 'searchModel' => $searchModel, | |
| 63 | + 'dataProvider' => $dataProvider, | |
| 64 | + ]); | |
| 65 | + } | |
| 66 | + | |
| 67 | + /** | |
| 68 | + * Displays a single User model. | |
| 69 | + * @param integer $id | |
| 70 | + * @return mixed | |
| 71 | + */ | |
| 72 | + public function actionView($id) | |
| 73 | + { | |
| 74 | + return $this->render('view', [ | |
| 75 | + 'model' => $this->findModel($id), | |
| 76 | + ]); | |
| 77 | + } | |
| 78 | + | |
| 79 | + /** | |
| 80 | + * Creates a new User model. | |
| 81 | + * If creation is successful, the browser will be redirected to the 'view' page. | |
| 82 | + * @return mixed | |
| 83 | + */ | |
| 84 | + public function actionCreate() | |
| 85 | + { | |
| 86 | + $model = new User(); | |
| 87 | + if (Yii::$app->request->isAjax) { | |
| 88 | + Yii::$app->response->format = Response::FORMAT_JSON; | |
| 89 | + $model->load(Yii::$app->request->post()); | |
| 90 | + return ActiveForm::validate($model); | |
| 91 | + }else if ($model->load(Yii::$app->request->post()) && $model->validate()) { | |
| 92 | + $model->save(); | |
| 93 | + | |
| 94 | + foreach($model->role as $k => $role){ | |
| 95 | + $auth = Yii::$app->authManager; | |
| 96 | + $authorRole = $auth->getRole($role); | |
| 97 | + $auth->assign($authorRole, $model->id); | |
| 98 | + } | |
| 99 | + | |
| 100 | + return $this->redirect(['view', 'id' => $model->id]); | |
| 101 | + } else { | |
| 102 | + return $this->render('create', [ | |
| 103 | + 'model' => $model, | |
| 104 | + ]); | |
| 105 | + } | |
| 106 | + } | |
| 107 | + | |
| 108 | + /** | |
| 109 | + * Updates an existing User model. | |
| 110 | + * If update is successful, the browser will be redirected to the 'view' page. | |
| 111 | + * @param integer $id | |
| 112 | + * @return mixed | |
| 113 | + */ | |
| 114 | + public function actionUpdate($id) | |
| 115 | + { | |
| 116 | + $model = $this->findModel($id); | |
| 117 | + if (Yii::$app->request->isAjax) { | |
| 118 | + Yii::$app->response->format = Response::FORMAT_JSON; | |
| 119 | + $model->load(Yii::$app->request->post()); | |
| 120 | + return ActiveForm::validate($model); | |
| 121 | + }else if ($model->load(Yii::$app->request->post()) && $model->validate()) { | |
| 122 | + | |
| 123 | + $model->save(); | |
| 124 | + | |
| 125 | + return $this->redirect(['view', 'id' => $model->id]); | |
| 126 | + } else { | |
| 127 | + return $this->render('create', [ | |
| 128 | + 'model' => $model, | |
| 129 | + ]); | |
| 130 | + } | |
| 131 | + } | |
| 132 | + | |
| 133 | + /** | |
| 134 | + * Deletes an existing User model. | |
| 135 | + * If deletion is successful, the browser will be redirected to the 'index' page. | |
| 136 | + * @param integer $id | |
| 137 | + * @return mixed | |
| 138 | + */ | |
| 139 | + public function actionDelete($id) | |
| 140 | + { | |
| 141 | + $this->findModel($id)->delete(); | |
| 142 | + | |
| 143 | + return $this->redirect(['index']); | |
| 144 | + } | |
| 145 | + | |
| 146 | + /** | |
| 147 | + * Finds the User model based on its primary key value. | |
| 148 | + * If the model is not found, a 404 HTTP exception will be thrown. | |
| 149 | + * @param integer $id | |
| 150 | + * @return User the loaded model | |
| 151 | + * @throws NotFoundHttpException if the model cannot be found | |
| 152 | + */ | |
| 153 | + protected function findModel($id) | |
| 154 | + { | |
| 155 | + if (($model = User::findOne($id)) !== null) { | |
| 156 | + return $model; | |
| 157 | + } else { | |
| 158 | + throw new NotFoundHttpException('The requested page does not exist.'); | |
| 159 | + } | |
| 160 | + } | |
| 161 | +} | ... | ... |
| 1 | +++ a/backend/models/CommentSearch.php | |
| 1 | +<?php | |
| 2 | + | |
| 3 | +namespace backend\models; | |
| 4 | + | |
| 5 | +use Yii; | |
| 6 | +use yii\base\Model; | |
| 7 | +use yii\data\ActiveDataProvider; | |
| 8 | +use common\modules\comment\models\Comment; | |
| 9 | + | |
| 10 | +/** | |
| 11 | + * CommentSearch represents the model behind the search form about `common\modules\comment\models\Comment`. | |
| 12 | + */ | |
| 13 | +class CommentSearch extends Comment | |
| 14 | +{ | |
| 15 | + /** | |
| 16 | + * @inheritdoc | |
| 17 | + */ | |
| 18 | + public function rules() | |
| 19 | + { | |
| 20 | + return [ | |
| 21 | + [['comment_id', 'user_id', 'comment_pid', 'status', 'model_id'], 'integer'], | |
| 22 | + [['text', 'user_name', 'user_email', 'date_add', 'date_update', 'date_delete', 'model'], 'safe'], | |
| 23 | + ]; | |
| 24 | + } | |
| 25 | + | |
| 26 | + /** | |
| 27 | + * @inheritdoc | |
| 28 | + */ | |
| 29 | + public function scenarios() | |
| 30 | + { | |
| 31 | + // bypass scenarios() implementation in the parent class | |
| 32 | + return Model::scenarios(); | |
| 33 | + } | |
| 34 | + | |
| 35 | + /** | |
| 36 | + * Creates data provider instance with search query applied | |
| 37 | + * | |
| 38 | + * @param array $params | |
| 39 | + * | |
| 40 | + * @return ActiveDataProvider | |
| 41 | + */ | |
| 42 | + public function search($params) | |
| 43 | + { | |
| 44 | + $query = Comment::find(); | |
| 45 | + | |
| 46 | + // add conditions that should always apply here | |
| 47 | + | |
| 48 | + $dataProvider = new ActiveDataProvider([ | |
| 49 | + 'query' => $query, | |
| 50 | + ]); | |
| 51 | + | |
| 52 | + $this->load($params); | |
| 53 | + | |
| 54 | + if (!$this->validate()) { | |
| 55 | + // uncomment the following line if you do not want to return any records when validation fails | |
| 56 | + // $query->where('0=1'); | |
| 57 | + return $dataProvider; | |
| 58 | + } | |
| 59 | + | |
| 60 | + // grid filtering conditions | |
| 61 | + $query->andFilterWhere([ | |
| 62 | + 'comment_id' => $this->comment_id, | |
| 63 | + 'user_id' => $this->user_id, | |
| 64 | + 'comment_pid' => $this->comment_pid, | |
| 65 | + 'status' => $this->status, | |
| 66 | + 'date_add' => $this->date_add, | |
| 67 | + 'date_update' => $this->date_update, | |
| 68 | + 'date_delete' => $this->date_delete, | |
| 69 | + 'model_id' => $this->model_id, | |
| 70 | + ]); | |
| 71 | + | |
| 72 | + $query->andFilterWhere(['like', 'text', $this->text]) | |
| 73 | + ->andFilterWhere(['like', 'user_name', $this->user_name]) | |
| 74 | + ->andFilterWhere(['like', 'user_email', $this->user_email]) | |
| 75 | + ->andFilterWhere(['like', 'model', $this->model]); | |
| 76 | + | |
| 77 | + return $dataProvider; | |
| 78 | + } | |
| 79 | +} | ... | ... |
| 1 | +++ a/backend/models/Label.php | |
| 1 | +<?php | |
| 2 | + | |
| 3 | +namespace backend\models; | |
| 4 | +use Yii; | |
| 5 | + | |
| 6 | + | |
| 7 | +class Label extends \yii\db\ActiveRecord | |
| 8 | +{ | |
| 9 | + | |
| 10 | + public static function tableName() | |
| 11 | + { | |
| 12 | + return 'orders_label'; | |
| 13 | + } | |
| 14 | + | |
| 15 | + | |
| 16 | + public function getNl(){ | |
| 17 | + return $this->name; | |
| 18 | + } | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | +} | ... | ... |
| 1 | +++ a/backend/models/LoginForm.php | |
| 1 | +<?php | |
| 2 | +namespace backend\models; | |
| 3 | + | |
| 4 | +use common\models\User; | |
| 5 | +use Yii; | |
| 6 | +use yii\base\Model; | |
| 7 | + | |
| 8 | +/** | |
| 9 | + * Login form | |
| 10 | + */ | |
| 11 | +class LoginForm extends Model | |
| 12 | +{ | |
| 13 | + public $username; | |
| 14 | + public $password; | |
| 15 | + public $rememberMe = true; | |
| 16 | + | |
| 17 | + private $_user; | |
| 18 | + | |
| 19 | + | |
| 20 | + /** | |
| 21 | + * @inheritdoc | |
| 22 | + */ | |
| 23 | + public function rules() | |
| 24 | + { | |
| 25 | + return [ | |
| 26 | + // username and password are both required | |
| 27 | + [['username', 'password'], 'required'], | |
| 28 | + // rememberMe must be a boolean value | |
| 29 | + ['rememberMe', 'boolean'], | |
| 30 | + // password is validated by validatePassword() | |
| 31 | + ['password', 'validatePassword'], | |
| 32 | + ]; | |
| 33 | + } | |
| 34 | + | |
| 35 | + /** | |
| 36 | + * Validates the password. | |
| 37 | + * This method serves as the inline validation for password. | |
| 38 | + * | |
| 39 | + * @param string $attribute the attribute currently being validated | |
| 40 | + * @param array $params the additional name-value pairs given in the rule | |
| 41 | + */ | |
| 42 | + public function validatePassword($attribute, $params) | |
| 43 | + { | |
| 44 | + if (!$this->hasErrors()) { | |
| 45 | + $user = $this->getUser(); | |
| 46 | + if (!$user || !$user->validatePassword($this->password)) { | |
| 47 | + $this->addError($attribute, 'Incorrect username or password.'); | |
| 48 | + } | |
| 49 | + } | |
| 50 | + } | |
| 51 | + | |
| 52 | + /** | |
| 53 | + * Logs in a user using the provided username and password. | |
| 54 | + * | |
| 55 | + * @return boolean whether the user is logged in successfully | |
| 56 | + */ | |
| 57 | + public function login() | |
| 58 | + { | |
| 59 | + if ($this->validate()) { | |
| 60 | + return Yii::$app->user->login($this->getUser(), $this->rememberMe ? 3600 * 24 * 30 : 0); | |
| 61 | + } else { | |
| 62 | + return false; | |
| 63 | + } | |
| 64 | + } | |
| 65 | + | |
| 66 | + /** | |
| 67 | + * Finds user by [[username]] | |
| 68 | + * | |
| 69 | + * @return User|null | |
| 70 | + */ | |
| 71 | + protected function getUser() | |
| 72 | + { | |
| 73 | + if ($this->_user === null) { | |
| 74 | + $this->_user = User::findByUsername($this->username); | |
| 75 | + } | |
| 76 | + | |
| 77 | + return $this->_user; | |
| 78 | + } | |
| 79 | + | |
| 80 | + /** | |
| 81 | + * @inheritdoc | |
| 82 | + */ | |
| 83 | + public function attributeLabels() | |
| 84 | + { | |
| 85 | + return [ | |
| 86 | + | |
| 87 | + 'username' => 'Имя пользователя', | |
| 88 | + 'password' => 'Пароль', | |
| 89 | + 'rememberMe' => 'Запомнить пароль', | |
| 90 | + | |
| 91 | + ]; | |
| 92 | + } | |
| 93 | +} | ... | ... |
| 1 | +++ a/backend/models/Orders.php | |
| 1 | +<?php | |
| 2 | + | |
| 3 | +namespace backend\models; | |
| 4 | +use common\models\Customer; | |
| 5 | +use Yii; | |
| 6 | + | |
| 7 | +class Orders extends \yii\db\ActiveRecord | |
| 8 | +{ | |
| 9 | + public $labels; | |
| 10 | + public static function tableName() | |
| 11 | + { | |
| 12 | + return 'orders'; | |
| 13 | + } | |
| 14 | + | |
| 15 | + public function rules() | |
| 16 | + { | |
| 17 | + return [ | |
| 18 | + [['name'], 'required'], | |
| 19 | + [['user_id','adress','body','total','status','email', | |
| 20 | + 'comment','labels','pay','date_dedline','phone','phone2','numbercard','delivery', | |
| 21 | + 'declaration','stock','consignment','payment', 'insurance', | |
| 22 | + 'amount_imposed','shipping_by','city','date_time', 'id' ], 'safe'], | |
| 23 | + //[['image'], 'file', 'extensions'=>'jpg, gif, png', 'skipOnEmpty'=>true], | |
| 24 | + ]; | |
| 25 | + } | |
| 26 | + | |
| 27 | + public function attributeLabels() | |
| 28 | + { | |
| 29 | + return [ | |
| 30 | + 'id'=>'№ заказа', | |
| 31 | + 'name'=>'ФИО', | |
| 32 | + 'phone'=>'Телефон', | |
| 33 | + 'phone2'=>'Телефон 2', | |
| 34 | + 'adress'=>'Адрес', | |
| 35 | + 'body'=>'Сообщение', | |
| 36 | + 'reserve'=>'Резерв', | |
| 37 | + 'status'=>'Статус', | |
| 38 | + 'email'=>'E-mail', | |
| 39 | + 'total'=>'Сумма', | |
| 40 | + 'labels'=>'Метки', | |
| 41 | + 'label'=>'Метка', | |
| 42 | + 'comment'=>'Комментарий менеджера', | |
| 43 | + 'date_dedline'=>'Дедлайн', | |
| 44 | + 'numbercard'=>'№ карточки', | |
| 45 | + 'delivery'=>'Доставка', | |
| 46 | + 'declaration'=>'Декларация №', | |
| 47 | + 'stock'=>'№ склада', | |
| 48 | + 'consignment'=>'№ накладной', | |
| 49 | + 'payment'=>'Способ оплаты', | |
| 50 | + 'insurance'=>'Страховка', | |
| 51 | + 'amount_imposed'=>'Сумма наложенного', | |
| 52 | + 'shipping_by'=>'Отправка за счет', | |
| 53 | + 'city'=>'Город' | |
| 54 | + ]; | |
| 55 | + } | |
| 56 | + | |
| 57 | + public function beforeSave($insert) { | |
| 58 | + return parent::beforeSave($insert); | |
| 59 | + } | |
| 60 | + | |
| 61 | + public function beforeDelete() { | |
| 62 | + return parent::beforeDelete(); | |
| 63 | + } | |
| 64 | + | |
| 65 | + public function getUser() | |
| 66 | + { | |
| 67 | + return $this->hasOne(Customer::className(), ['id' => 'user_id']); | |
| 68 | + } | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | +} | |
| 0 | 73 | \ No newline at end of file | ... | ... |
| 1 | +++ a/backend/models/OrdersProducts.php | |
| 1 | +<?php | |
| 2 | + | |
| 3 | +namespace backend\models; | |
| 4 | +use common\modules\product\models\ProductVariant; | |
| 5 | +use Yii; | |
| 6 | + | |
| 7 | +class OrdersProducts extends \yii\db\ActiveRecord | |
| 8 | +{ | |
| 9 | + | |
| 10 | + public static function tableName() | |
| 11 | + { | |
| 12 | + return 'orders_products'; | |
| 13 | + } | |
| 14 | + | |
| 15 | + public function rules() | |
| 16 | + { | |
| 17 | + return [ | |
| 18 | + [['sku','count','order_id'], 'required'], | |
| 19 | + ]; | |
| 20 | + } | |
| 21 | + | |
| 22 | + public function attributeLabels() | |
| 23 | + { | |
| 24 | + return [ | |
| 25 | + 'product_name'=>'Продукт', | |
| 26 | + 'name'=>'Вид', | |
| 27 | + 'art'=>'Артикул', | |
| 28 | + 'cost'=>'Цена за один', | |
| 29 | + 'count'=>'Кол.', | |
| 30 | + 'sum_cost'=>'Сумма', | |
| 31 | + ]; | |
| 32 | + } | |
| 33 | + | |
| 34 | + public function getMod() | |
| 35 | + { | |
| 36 | + return $this->hasOne(ProductVariant::className(), ['product_variant_id' => 'mod_id']); | |
| 37 | + } | |
| 38 | +} | |
| 0 | 39 | \ No newline at end of file | ... | ... |
| 1 | +++ a/backend/models/OrdersSearch.php | |
| 1 | +<?php | |
| 2 | + | |
| 3 | +namespace backend\models; | |
| 4 | + | |
| 5 | +use Yii; | |
| 6 | +use yii\base\Model; | |
| 7 | +use yii\data\ActiveDataProvider; | |
| 8 | +use backend\models\Orders; | |
| 9 | + | |
| 10 | +/** | |
| 11 | + * OrdersSearch represents the model behind the search form about `backend\models\Orders`. | |
| 12 | + */ | |
| 13 | +class OrdersSearch extends Orders | |
| 14 | +{ | |
| 15 | + /** | |
| 16 | + * @inheritdoc | |
| 17 | + */ | |
| 18 | + public function rules() | |
| 19 | + { | |
| 20 | + return [ | |
| 21 | + [['id', 'user_id', 'label', 'pay', 'numbercard'], 'integer'], | |
| 22 | + [['name', 'phone', 'phone2', 'email', 'adress', 'body', 'date_time', 'date_dedline', 'reserve', 'status', 'comment', 'delivery', 'declaration', 'stock', 'consignment', 'payment', 'insurance', 'shipping_by', 'city'], 'safe'], | |
| 23 | + [['total', 'amount_imposed'], 'number'], | |
| 24 | + ]; | |
| 25 | + } | |
| 26 | + | |
| 27 | + /** | |
| 28 | + * @inheritdoc | |
| 29 | + */ | |
| 30 | + public function scenarios() | |
| 31 | + { | |
| 32 | + // bypass scenarios() implementation in the parent class | |
| 33 | + return Model::scenarios(); | |
| 34 | + } | |
| 35 | + | |
| 36 | + /** | |
| 37 | + * Creates data provider instance with search query applied | |
| 38 | + * | |
| 39 | + * @param array $params | |
| 40 | + * | |
| 41 | + * @return ActiveDataProvider | |
| 42 | + */ | |
| 43 | + public function search($params) | |
| 44 | + { | |
| 45 | + $query = Orders::find(); | |
| 46 | + | |
| 47 | + // add conditions that should always apply here | |
| 48 | + | |
| 49 | + $dataProvider = new ActiveDataProvider([ | |
| 50 | + 'query' => $query, | |
| 51 | + 'sort'=> ['defaultOrder' => ['id'=>SORT_DESC]], | |
| 52 | + 'pagination' => [ | |
| 53 | + 'pageSize' => 20, | |
| 54 | + ] | |
| 55 | + ]); | |
| 56 | + | |
| 57 | + $this->load($params); | |
| 58 | + | |
| 59 | + if (!$this->validate()) { | |
| 60 | + // uncomment the following line if you do not want to return any records when validation fails | |
| 61 | + // $query->where('0=1'); | |
| 62 | + return $dataProvider; | |
| 63 | + } | |
| 64 | + | |
| 65 | + // grid filtering conditions | |
| 66 | + $query->andFilterWhere([ | |
| 67 | + 'id' => $this->id, | |
| 68 | + 'user_id' => $this->user_id, | |
| 69 | + 'total' => $this->total, | |
| 70 | + 'date_time' => $this->date_time, | |
| 71 | + 'date_dedline' => $this->date_dedline, | |
| 72 | + 'label' => $this->label, | |
| 73 | + 'pay' => $this->pay, | |
| 74 | + 'numbercard' => $this->numbercard, | |
| 75 | + 'amount_imposed' => $this->amount_imposed, | |
| 76 | + ]); | |
| 77 | + | |
| 78 | + $query->andFilterWhere(['like', 'name', $this->name]) | |
| 79 | + ->andFilterWhere(['like', 'phone', $this->phone]) | |
| 80 | + ->andFilterWhere(['like', 'phone2', $this->phone2]) | |
| 81 | + ->andFilterWhere(['like', 'email', $this->email]) | |
| 82 | + ->andFilterWhere(['like', 'adress', $this->adress]) | |
| 83 | + ->andFilterWhere(['like', 'body', $this->body]) | |
| 84 | + ->andFilterWhere(['like', 'reserve', $this->reserve]) | |
| 85 | + ->andFilterWhere(['like', 'status', $this->status]) | |
| 86 | + ->andFilterWhere(['like', 'comment', $this->comment]) | |
| 87 | + ->andFilterWhere(['like', 'delivery', $this->delivery]) | |
| 88 | + ->andFilterWhere(['like', 'declaration', $this->declaration]) | |
| 89 | + ->andFilterWhere(['like', 'stock', $this->stock]) | |
| 90 | + ->andFilterWhere(['like', 'consignment', $this->consignment]) | |
| 91 | + ->andFilterWhere(['like', 'payment', $this->payment]) | |
| 92 | + ->andFilterWhere(['like', 'insurance', $this->insurance]) | |
| 93 | + ->andFilterWhere(['like', 'shipping_by', $this->shipping_by]) | |
| 94 | + ->andFilterWhere(['like', 'city', $this->city]); | |
| 95 | + | |
| 96 | + return $dataProvider; | |
| 97 | + } | |
| 98 | +} | ... | ... |
| 1 | +++ a/backend/models/User.php | |
| 1 | +<?php | |
| 2 | + | |
| 3 | +namespace backend\models; | |
| 4 | + | |
| 5 | +use developeruz\db_rbac\interfaces\UserRbacInterface; | |
| 6 | +use common\models\Share; | |
| 7 | +use common\modules\comment\models\Comment; | |
| 8 | +use common\modules\comment\models\Rating; | |
| 9 | +use yii\base\NotSupportedException; | |
| 10 | +use Yii; | |
| 11 | +use yii\behaviors\TimestampBehavior; | |
| 12 | +use yii\db\ActiveRecord; | |
| 13 | +use yii\web\IdentityInterface; | |
| 14 | +/** | |
| 15 | + * This is the model class for table "user". | |
| 16 | + * | |
| 17 | + * @property integer $id | |
| 18 | + * @property string $username | |
| 19 | + * @property string $auth_key | |
| 20 | + * @property string $password_hash | |
| 21 | + * @property string $password_reset_token | |
| 22 | + * @property string $email | |
| 23 | + * @property integer $status | |
| 24 | + * @property integer $created_at | |
| 25 | + * @property integer $updated_at | |
| 26 | + * | |
| 27 | + * @property Comment[] $comments | |
| 28 | + * @property Rating[] $ratings | |
| 29 | + * @property Share[] $shares | |
| 30 | + */ | |
| 31 | +class User extends ActiveRecord implements UserRbacInterface, IdentityInterface | |
| 32 | +{ | |
| 33 | + | |
| 34 | + const STATUS_DELETED = 0; | |
| 35 | + const STATUS_ACTIVE = 10; | |
| 36 | + public $password; | |
| 37 | + | |
| 38 | + /** | |
| 39 | + * @inheritdoc | |
| 40 | + */ | |
| 41 | + public static function tableName() | |
| 42 | + { | |
| 43 | + return 'user'; | |
| 44 | + } | |
| 45 | + | |
| 46 | + /** | |
| 47 | + * @inheritdoc | |
| 48 | + */ | |
| 49 | + public function rules() | |
| 50 | + { | |
| 51 | + return [ | |
| 52 | + [['username', 'password', 'email'], 'required'], | |
| 53 | + [['status', 'created_at', 'updated_at'], 'integer'], | |
| 54 | + [['username', 'password_hash', 'password_reset_token', 'email'], 'string', 'max' => 255], | |
| 55 | + [['auth_key'], 'string', 'max' => 32], | |
| 56 | + [['password_reset_token'], 'unique'], | |
| 57 | + ['email', 'unique', 'targetClass' => '\backend\models\User', 'message' => Yii::t('app','message',[ | |
| 58 | + 'field' => 'Email' | |
| 59 | + ])], | |
| 60 | + ]; | |
| 61 | + } | |
| 62 | + | |
| 63 | + | |
| 64 | + /** | |
| 65 | + * @inheritdoc | |
| 66 | + */ | |
| 67 | + public function behaviors() | |
| 68 | + { | |
| 69 | + return [ | |
| 70 | + TimestampBehavior::className(), | |
| 71 | + [ | |
| 72 | + 'class' => 'common\behaviors\ShowImage', | |
| 73 | + ], | |
| 74 | + ]; | |
| 75 | + } | |
| 76 | + | |
| 77 | + | |
| 78 | + public function beforeSave($insert) | |
| 79 | + { | |
| 80 | + $this->setPassword($this->password); | |
| 81 | + $this->generateAuthKey(); | |
| 82 | + return parent::beforeSave($insert); | |
| 83 | + } | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + /** | |
| 88 | + * @inheritdoc | |
| 89 | + */ | |
| 90 | + public function attributeLabels() | |
| 91 | + { | |
| 92 | + return [ | |
| 93 | + 'id' => 'ID', | |
| 94 | + 'username' => 'Username', | |
| 95 | + 'auth_key' => 'Auth Key', | |
| 96 | + 'password_hash' => 'Password Hash', | |
| 97 | + 'password_reset_token' => 'Password Reset Token', | |
| 98 | + 'email' => 'Email', | |
| 99 | + 'status' => 'Status', | |
| 100 | + 'created_at' => 'Created At', | |
| 101 | + 'updated_at' => 'Updated At', | |
| 102 | + ]; | |
| 103 | + } | |
| 104 | + | |
| 105 | + | |
| 106 | + /** | |
| 107 | + * Generates "remember me" authentication key | |
| 108 | + */ | |
| 109 | + public function generateAuthKey() | |
| 110 | + { | |
| 111 | + $this->auth_key = Yii::$app->security->generateRandomString(); | |
| 112 | + } | |
| 113 | + | |
| 114 | + /** | |
| 115 | + * Generates password hash from password and sets it to the model | |
| 116 | + * | |
| 117 | + * @param string $password | |
| 118 | + */ | |
| 119 | + public function setPassword($password) | |
| 120 | + { | |
| 121 | + $this->password_hash = Yii::$app->security->generatePasswordHash($password); | |
| 122 | + } | |
| 123 | + | |
| 124 | + | |
| 125 | + | |
| 126 | + | |
| 127 | + | |
| 128 | + public function getRole(){ | |
| 129 | + return !empty($this->id) ? \Yii::$app->authManager->getRolesByUser($this->id) : ""; | |
| 130 | + } | |
| 131 | + | |
| 132 | + /** | |
| 133 | + * @inheritdoc | |
| 134 | + */ | |
| 135 | + public function getId() | |
| 136 | + { | |
| 137 | + return $this->getPrimaryKey(); | |
| 138 | + } | |
| 139 | + | |
| 140 | + /** | |
| 141 | + * @inheritdoc | |
| 142 | + */ | |
| 143 | + public function getAuthKey() | |
| 144 | + { | |
| 145 | + return $this->auth_key; | |
| 146 | + } | |
| 147 | + | |
| 148 | + /** | |
| 149 | + * @inheritdoc | |
| 150 | + */ | |
| 151 | + public function validateAuthKey($authKey) | |
| 152 | + { | |
| 153 | + return $this->getAuthKey() === $authKey; | |
| 154 | + } | |
| 155 | + | |
| 156 | + | |
| 157 | + /** | |
| 158 | + * @inheritdoc | |
| 159 | + */ | |
| 160 | + public static function findIdentityByAccessToken($token, $type = null) | |
| 161 | + { | |
| 162 | + throw new NotSupportedException('"findIdentityByAccessToken" is not implemented.'); | |
| 163 | + } | |
| 164 | + | |
| 165 | + /** | |
| 166 | + * @inheritdoc | |
| 167 | + */ | |
| 168 | + public static function findIdentity($id) | |
| 169 | + { | |
| 170 | + return static::findOne(['id' => $id, 'status' => self::STATUS_ACTIVE]); | |
| 171 | + } | |
| 172 | + | |
| 173 | + /** | |
| 174 | + * @return \yii\db\ActiveQuery | |
| 175 | + */ | |
| 176 | + public function getComments() | |
| 177 | + { | |
| 178 | + return $this->hasMany(Comment::className(), ['user_id' => 'id']); | |
| 179 | + } | |
| 180 | + | |
| 181 | + /** | |
| 182 | + * @return \yii\db\ActiveQuery | |
| 183 | + */ | |
| 184 | + public function getRatings() | |
| 185 | + { | |
| 186 | + return $this->hasMany(Rating::className(), ['user_id' => 'id']); | |
| 187 | + } | |
| 188 | + | |
| 189 | + /** | |
| 190 | + * @return \yii\db\ActiveQuery | |
| 191 | + */ | |
| 192 | + public function getShares() | |
| 193 | + { | |
| 194 | + return $this->hasMany(Share::className(), ['user_id' => 'id']); | |
| 195 | + } | |
| 196 | + | |
| 197 | + | |
| 198 | + public function getUserName() | |
| 199 | + { | |
| 200 | + return $this->username; | |
| 201 | + } | |
| 202 | + | |
| 203 | + | |
| 204 | +} | ... | ... |
| 1 | +++ a/backend/models/UserSearch.php | |
| 1 | +<?php | |
| 2 | + | |
| 3 | +namespace backend\models; | |
| 4 | + | |
| 5 | +use Yii; | |
| 6 | +use yii\base\Model; | |
| 7 | +use yii\data\ActiveDataProvider; | |
| 8 | +use backend\models\User; | |
| 9 | + | |
| 10 | +/** | |
| 11 | + * UserSearch represents the model behind the search form about `backend\models\User`. | |
| 12 | + */ | |
| 13 | +class UserSearch extends User | |
| 14 | +{ | |
| 15 | + /** | |
| 16 | + * @inheritdoc | |
| 17 | + */ | |
| 18 | + public function rules() | |
| 19 | + { | |
| 20 | + return [ | |
| 21 | + [['id', 'status', 'created_at', 'updated_at'], 'integer'], | |
| 22 | + [['username', 'auth_key', 'password_hash', 'password_reset_token', 'email'], 'safe'], | |
| 23 | + ]; | |
| 24 | + } | |
| 25 | + | |
| 26 | + /** | |
| 27 | + * @inheritdoc | |
| 28 | + */ | |
| 29 | + public function scenarios() | |
| 30 | + { | |
| 31 | + // bypass scenarios() implementation in the parent class | |
| 32 | + return Model::scenarios(); | |
| 33 | + } | |
| 34 | + | |
| 35 | + /** | |
| 36 | + * Creates data provider instance with search query applied | |
| 37 | + * | |
| 38 | + * @param array $params | |
| 39 | + * | |
| 40 | + * @return ActiveDataProvider | |
| 41 | + */ | |
| 42 | + public function search($params) | |
| 43 | + { | |
| 44 | + $query = User::find(); | |
| 45 | + | |
| 46 | + // add conditions that should always apply here | |
| 47 | + | |
| 48 | + $dataProvider = new ActiveDataProvider([ | |
| 49 | + 'query' => $query, | |
| 50 | + ]); | |
| 51 | + | |
| 52 | + $this->load($params); | |
| 53 | + | |
| 54 | + if (!$this->validate()) { | |
| 55 | + // uncomment the following line if you do not want to return any records when validation fails | |
| 56 | + // $query->where('0=1'); | |
| 57 | + return $dataProvider; | |
| 58 | + } | |
| 59 | + | |
| 60 | + // grid filtering conditions | |
| 61 | + $query->andFilterWhere([ | |
| 62 | + 'id' => $this->id, | |
| 63 | + 'status' => $this->status, | |
| 64 | + 'created_at' => $this->created_at, | |
| 65 | + 'updated_at' => $this->updated_at, | |
| 66 | + ]); | |
| 67 | + | |
| 68 | + $query->andFilterWhere(['like', 'username', $this->username]) | |
| 69 | + ->andFilterWhere(['like', 'auth_key', $this->auth_key]) | |
| 70 | + ->andFilterWhere(['like', 'password_hash', $this->password_hash]) | |
| 71 | + ->andFilterWhere(['like', 'password_reset_token', $this->password_reset_token]) | |
| 72 | + ->andFilterWhere(['like', 'email', $this->email]); | |
| 73 | + | |
| 74 | + return $dataProvider; | |
| 75 | + } | |
| 76 | +} | ... | ... |
| 1 | +++ a/backend/views/articles/_form.php | |
| 1 | +<?php | |
| 2 | + | |
| 3 | +use yii\helpers\Html; | |
| 4 | +use yii\widgets\ActiveForm; | |
| 5 | +use common\modules\file\widgets\ImageUploader; | |
| 6 | +use mihaildev\ckeditor\CKEditor; | |
| 7 | +use mihaildev\elfinder\ElFinder; | |
| 8 | +use yii\jui\DatePicker; | |
| 9 | +/* @var $this yii\web\View */ | |
| 10 | +/* @var $model common\models\Articles */ | |
| 11 | +/* @var $form yii\widgets\ActiveForm */ | |
| 12 | +?> | |
| 13 | + | |
| 14 | +<div class="articles-form"> | |
| 15 | + | |
| 16 | + <?php $form = ActiveForm::begin([ | |
| 17 | + 'enableClientValidation' => false, | |
| 18 | + 'options' => ['enctype' => 'multipart/form-data'] | |
| 19 | + ]); ?> | |
| 20 | + | |
| 21 | + | |
| 22 | + <?= $form->field($model, 'date') | |
| 23 | + ->widget(DatePicker::className(), [ | |
| 24 | + 'dateFormat' => 'yyyy-MM-dd', | |
| 25 | + 'clientOptions' => [ 'minDate' => 1 ], | |
| 26 | + ]) ?> | |
| 27 | + <?= $form->field($model, 'title')->textInput(['maxlength' => true]) ?> | |
| 28 | + | |
| 29 | + <?= $form->field($model, 'body')->widget(CKEditor::className(), | |
| 30 | + [ | |
| 31 | + 'editorOptions' => ElFinder::ckeditorOptions('elfinder',[ | |
| 32 | + 'preset' => 'full', //разработанны стандартные настройки basic, standard, full данную возможность не обязательно использовать | |
| 33 | + 'inline' => false, //по умолчанию false]), | |
| 34 | + 'filebrowserUploadUrl'=>Yii::$app->getUrlManager()->createUrl('file/uploader/images-upload') | |
| 35 | + ] | |
| 36 | + ) | |
| 37 | + ]) ?> | |
| 38 | + | |
| 39 | + | |
| 40 | + <?= $form->field($model, 'image')->widget(\kartik\file\FileInput::classname(), [ | |
| 41 | + 'language' => 'ru', | |
| 42 | + 'options' => [ | |
| 43 | + 'accept' => 'image/*', | |
| 44 | + 'multiple' => false, | |
| 45 | + ], | |
| 46 | + 'pluginOptions' => [ | |
| 47 | + 'allowedFileExtensions' => ['jpg', 'gif', 'png'], | |
| 48 | + 'initialPreview' => !empty($model->imageUrl) ? \common\components\artboximage\ArtboxImageHelper::getImage($model->imageUrl, 'list') : '', | |
| 49 | + 'overwriteInitial' => true, | |
| 50 | + 'showRemove' => false, | |
| 51 | + 'showUpload' => false, | |
| 52 | + 'previewFileType' => 'image', | |
| 53 | + ], | |
| 54 | + ]); ?> | |
| 55 | + | |
| 56 | + <?= $form->field($model, 'translit')->textInput(['maxlength' => true]) ?> | |
| 57 | + | |
| 58 | + <?= $form->field($model, 'meta_title')->textInput(['maxlength' => true]) ?> | |
| 59 | + | |
| 60 | + <?= $form->field($model, 'meta_keywords')->textInput(['maxlength' => true]) ?> | |
| 61 | + | |
| 62 | + <?= $form->field($model, 'meta_description')->textInput(['maxlength' => true]) ?> | |
| 63 | + | |
| 64 | + <?= $form->field($model, 'seo_text')->textarea(['rows' => 6]) ?> | |
| 65 | + | |
| 66 | + <?= $form->field($model, 'h1')->textInput(['maxlength' => true]) ?> | |
| 67 | + | |
| 68 | + <div class="form-group"> | |
| 69 | + <?= Html::submitButton($model->isNewRecord ? 'Create' : 'Update', ['class' => $model->isNewRecord ? 'btn btn-success' : 'btn btn-primary']) ?> | |
| 70 | + </div> | |
| 71 | + | |
| 72 | + <?php ActiveForm::end(); ?> | |
| 73 | + | |
| 74 | +</div> | ... | ... |
| 1 | +++ a/backend/views/articles/_search.php | |
| 1 | +<?php | |
| 2 | + | |
| 3 | +use yii\helpers\Html; | |
| 4 | +use yii\widgets\ActiveForm; | |
| 5 | + | |
| 6 | +/* @var $this yii\web\View */ | |
| 7 | +/* @var $model common\models\ArticlesSearch */ | |
| 8 | +/* @var $form yii\widgets\ActiveForm */ | |
| 9 | +?> | |
| 10 | + | |
| 11 | +<div class="articles-search"> | |
| 12 | + | |
| 13 | + <?php $form = ActiveForm::begin([ | |
| 14 | + 'action' => ['index'], | |
| 15 | + 'method' => 'get', | |
| 16 | + ]); ?> | |
| 17 | + | |
| 18 | + <?= $form->field($model, 'id') ?> | |
| 19 | + | |
| 20 | + <?= $form->field($model, 'date') ?> | |
| 21 | + | |
| 22 | + <?= $form->field($model, 'title') ?> | |
| 23 | + | |
| 24 | + <?= $form->field($model, 'body') ?> | |
| 25 | + | |
| 26 | + <?= $form->field($model, 'image') ?> | |
| 27 | + | |
| 28 | + <?php // echo $form->field($model, 'translit') ?> | |
| 29 | + | |
| 30 | + <?php // echo $form->field($model, 'meta_title') ?> | |
| 31 | + | |
| 32 | + <?php // echo $form->field($model, 'meta_keywords') ?> | |
| 33 | + | |
| 34 | + <?php // echo $form->field($model, 'meta_description') ?> | |
| 35 | + | |
| 36 | + <?php // echo $form->field($model, 'seo_text') ?> | |
| 37 | + | |
| 38 | + <?php // echo $form->field($model, 'h1') ?> | |
| 39 | + | |
| 40 | + <div class="form-group"> | |
| 41 | + <?= Html::submitButton('Search', ['class' => 'btn btn-primary']) ?> | |
| 42 | + <?= Html::resetButton('Reset', ['class' => 'btn btn-default']) ?> | |
| 43 | + </div> | |
| 44 | + | |
| 45 | + <?php ActiveForm::end(); ?> | |
| 46 | + | |
| 47 | +</div> | ... | ... |
| 1 | +++ a/backend/views/articles/create.php | |
| 1 | +<?php | |
| 2 | + | |
| 3 | +use yii\helpers\Html; | |
| 4 | + | |
| 5 | + | |
| 6 | +/* @var $this yii\web\View */ | |
| 7 | +/* @var $model common\models\Articles */ | |
| 8 | + | |
| 9 | +$this->title = 'Create Articles'; | |
| 10 | +$this->params['breadcrumbs'][] = ['label' => 'Articles', 'url' => ['index']]; | |
| 11 | +$this->params['breadcrumbs'][] = $this->title; | |
| 12 | +?> | |
| 13 | +<div class="articles-create"> | |
| 14 | + | |
| 15 | + <h1><?= Html::encode($this->title) ?></h1> | |
| 16 | + | |
| 17 | + <?= $this->render('_form', [ | |
| 18 | + 'model' => $model, | |
| 19 | + ]) ?> | |
| 20 | + | |
| 21 | +</div> | ... | ... |
| 1 | +++ a/backend/views/articles/index.php | |
| 1 | +<?php | |
| 2 | + | |
| 3 | +use yii\helpers\Html; | |
| 4 | +use yii\grid\GridView; | |
| 5 | + | |
| 6 | +/* @var $this yii\web\View */ | |
| 7 | +/* @var $searchModel common\models\ArticlesSearch */ | |
| 8 | +/* @var $dataProvider yii\data\ActiveDataProvider */ | |
| 9 | + | |
| 10 | +$this->title = 'Articles'; | |
| 11 | +$this->params['breadcrumbs'][] = $this->title; | |
| 12 | +?> | |
| 13 | +<div class="articles-index" itemscope itemtype="http://data-vocabulary.org/Breadcrumb"> | |
| 14 | + | |
| 15 | + <h1 itemprop="title"><?= Html::encode($this->title) ?></h1> | |
| 16 | + <?php // echo $this->render('_search', ['model' => $searchModel]); ?> | |
| 17 | + | |
| 18 | + <p> | |
| 19 | + <?= Html::a('Create Articles', ['create'], ['class' => 'btn btn-success']) ?> | |
| 20 | + </p> | |
| 21 | + <?= GridView::widget([ | |
| 22 | + 'dataProvider' => $dataProvider, | |
| 23 | + 'filterModel' => $searchModel, | |
| 24 | + 'columns' => [ | |
| 25 | + ['class' => 'yii\grid\SerialColumn'], | |
| 26 | + | |
| 27 | + 'id', | |
| 28 | + 'date', | |
| 29 | + 'title', | |
| 30 | + 'image', | |
| 31 | + // 'translit', | |
| 32 | + // 'meta_title', | |
| 33 | + // 'meta_keywords', | |
| 34 | + // 'meta_description', | |
| 35 | + // 'seo_text:ntext', | |
| 36 | + // 'h1', | |
| 37 | + | |
| 38 | + ['class' => 'yii\grid\ActionColumn'], | |
| 39 | + ], | |
| 40 | + ]); ?> | |
| 41 | +</div> | ... | ... |
| 1 | +++ a/backend/views/articles/update.php | |
| 1 | +<?php | |
| 2 | + | |
| 3 | +use yii\helpers\Html; | |
| 4 | + | |
| 5 | +/* @var $this yii\web\View */ | |
| 6 | +/* @var $model common\models\Articles */ | |
| 7 | + | |
| 8 | +$this->title = 'Update Articles: ' . $model->title; | |
| 9 | +$this->params['breadcrumbs'][] = ['label' => 'Articles', 'url' => ['index']]; | |
| 10 | +$this->params['breadcrumbs'][] = ['label' => $model->title, 'url' => ['view', 'id' => $model->id]]; | |
| 11 | +$this->params['breadcrumbs'][] = 'Update'; | |
| 12 | +?> | |
| 13 | +<div class="articles-update"> | |
| 14 | + | |
| 15 | + <h1><?= Html::encode($this->title) ?></h1> | |
| 16 | + | |
| 17 | + <?= $this->render('_form', [ | |
| 18 | + 'model' => $model, | |
| 19 | + ]) ?> | |
| 20 | + | |
| 21 | +</div> | ... | ... |
| 1 | +++ a/backend/views/articles/view.php | |
| 1 | +<?php | |
| 2 | + | |
| 3 | +use yii\helpers\Html; | |
| 4 | +use yii\widgets\DetailView; | |
| 5 | + | |
| 6 | +/* @var $this yii\web\View */ | |
| 7 | +/* @var $model common\models\Articles */ | |
| 8 | + | |
| 9 | +$this->title = $model->title; | |
| 10 | +$this->params['breadcrumbs'][] = ['label' => 'Articles', 'url' => ['index']]; | |
| 11 | +$this->params['breadcrumbs'][] = $this->title; | |
| 12 | +?> | |
| 13 | +<div class="articles-view" itemscope itemtype="http://data-vocabulary.org/Breadcrumb"> | |
| 14 | + | |
| 15 | + <h1 itemprop="title"><?= Html::encode($this->title) ?></h1> | |
| 16 | + | |
| 17 | + <p> | |
| 18 | + <?= Html::a('Update', ['update', 'id' => $model->id], ['class' => 'btn btn-primary']) ?> | |
| 19 | + <?= Html::a('Delete', ['delete', 'id' => $model->id], [ | |
| 20 | + 'class' => 'btn btn-danger', | |
| 21 | + 'data' => [ | |
| 22 | + 'confirm' => 'Are you sure you want to delete this item?', | |
| 23 | + 'method' => 'post', | |
| 24 | + ], | |
| 25 | + ]) ?> | |
| 26 | + </p> | |
| 27 | + | |
| 28 | + <?= DetailView::widget([ | |
| 29 | + 'model' => $model, | |
| 30 | + 'attributes' => [ | |
| 31 | + 'id', | |
| 32 | + 'date', | |
| 33 | + 'title', | |
| 34 | + 'translit', | |
| 35 | + 'meta_title', | |
| 36 | + 'meta_keywords', | |
| 37 | + 'meta_description', | |
| 38 | + 'h1', | |
| 39 | + ], | |
| 40 | + ]) ?> | |
| 41 | + | |
| 42 | +</div> | ... | ... |
| 1 | +++ a/backend/views/banner/_form.php | |
| 1 | +<?php | |
| 2 | + | |
| 3 | +use common\modules\file\widgets\ImageUploader; | |
| 4 | +use kartik\select2\Select2; | |
| 5 | +use yii\helpers\Html; | |
| 6 | +use yii\widgets\ActiveForm; | |
| 7 | + | |
| 8 | +/* @var $this yii\web\View */ | |
| 9 | +/* @var $model common\models\Banner */ | |
| 10 | +/* @var $form yii\widgets\ActiveForm */ | |
| 11 | +?> | |
| 12 | + | |
| 13 | +<div class="banner-form"> | |
| 14 | + | |
| 15 | + <?php $form = ActiveForm::begin(); ?> | |
| 16 | + | |
| 17 | + | |
| 18 | + <?= $form->field($model, 'alt')->textInput(['maxlength' => true]) ?> | |
| 19 | + | |
| 20 | + <?= $form->field($model, 'title')->textInput(['maxlength' => true]) ?> | |
| 21 | + | |
| 22 | + <?= $form->field($model, 'url')->textInput(['maxlength' => true]) ?> | |
| 23 | + | |
| 24 | + <?= $form->field($model, 'status')->widget(Select2::className(),([ | |
| 25 | + 'name' => 'status', | |
| 26 | + 'hideSearch' => true, | |
| 27 | + 'data' => [1 => 'Active', 2 => 'Inactive'], | |
| 28 | + 'options' => ['placeholder' => 'Select status...'], | |
| 29 | + 'pluginOptions' => [ | |
| 30 | + 'allowClear' => true | |
| 31 | + ] | |
| 32 | + ])) ?> | |
| 33 | + | |
| 34 | + <?= $form->field($model, 'width')->textInput(['maxlength' => true]) ?> | |
| 35 | + | |
| 36 | + <?= $form->field($model, 'height')->textInput(['maxlength' => true]) ?> | |
| 37 | + | |
| 38 | + <p id="save_image_widget_settings" class = "btn btn-primary" >Применить настройки</p> | |
| 39 | + | |
| 40 | + <div id="image_widget_block"> | |
| 41 | + <?php if(!empty($model->image)){ | |
| 42 | + echo ImageUploader::widget([ | |
| 43 | + 'model'=> $model, | |
| 44 | + 'field'=>'image', | |
| 45 | + 'size' => [ | |
| 46 | + [ | |
| 47 | + 'width'=>$model->width, | |
| 48 | + 'height'=>$model->height, | |
| 49 | + ], | |
| 50 | + ], | |
| 51 | + 'gallery' =>$model->image, | |
| 52 | + 'name' => "Загрузить баннер" | |
| 53 | + ]); | |
| 54 | + }?> | |
| 55 | + </div> | |
| 56 | + | |
| 57 | + <div class="form-group"> | |
| 58 | + <?= Html::submitButton($model->isNewRecord ? Yii::t('app', 'Create') : Yii::t('app', 'Update'), ['class' => $model->isNewRecord ? 'btn btn-success' : 'btn btn-primary']) ?> | |
| 59 | + </div> | |
| 60 | + | |
| 61 | + <?php ActiveForm::end(); ?> | |
| 62 | + | |
| 63 | +</div> | |
| 64 | +<script> | |
| 65 | + $('#save_image_widget_settings').click(function(){ | |
| 66 | + var width = $('#banner-width').val(); | |
| 67 | + var height = $('#banner-height').val(); | |
| 68 | + save_image_widget_settings( width, height, function(data){ | |
| 69 | + $('#image_widget_block').html = ''; | |
| 70 | + $('#image_widget_block').html(data.html); | |
| 71 | + }); | |
| 72 | + }); | |
| 73 | + function save_image_widget_settings( width, height, callback ) | |
| 74 | + { | |
| 75 | + $.ajax({ | |
| 76 | + url: '/admin/banner/save-image-settings', | |
| 77 | + data : | |
| 78 | + { | |
| 79 | + 'width' : width, | |
| 80 | + 'height' : height | |
| 81 | + }, | |
| 82 | + type : 'POST', | |
| 83 | + dataType: 'json', | |
| 84 | + success: function (data) | |
| 85 | + { | |
| 86 | + if(callback) | |
| 87 | + callback(data); | |
| 88 | + }, | |
| 89 | + error: function() | |
| 90 | + { | |
| 91 | + console.info('error'); | |
| 92 | + } | |
| 93 | + }); | |
| 94 | + } | |
| 95 | +</script> | ... | ... |
| 1 | +++ a/backend/views/banner/_search.php | |
| 1 | +<?php | |
| 2 | + | |
| 3 | +use yii\helpers\Html; | |
| 4 | +use yii\widgets\ActiveForm; | |
| 5 | + | |
| 6 | +/* @var $this yii\web\View */ | |
| 7 | +/* @var $model common\models\BannerSearch */ | |
| 8 | +/* @var $form yii\widgets\ActiveForm */ | |
| 9 | +?> | |
| 10 | + | |
| 11 | +<div class="banner-search"> | |
| 12 | + | |
| 13 | + <?php $form = ActiveForm::begin([ | |
| 14 | + 'action' => ['index'], | |
| 15 | + 'method' => 'get', | |
| 16 | + ]); ?> | |
| 17 | + | |
| 18 | + <?= $form->field($model, 'banner_id') ?> | |
| 19 | + | |
| 20 | + | |
| 21 | + <?= $form->field($model, 'image') ?> | |
| 22 | + | |
| 23 | + <?= $form->field($model, 'alt') ?> | |
| 24 | + | |
| 25 | + <?= $form->field($model, 'title') ?> | |
| 26 | + | |
| 27 | + <?php // echo $form->field($model, 'url') ?> | |
| 28 | + | |
| 29 | + <?php // echo $form->field($model, 'status') ?> | |
| 30 | + | |
| 31 | + <div class="form-group"> | |
| 32 | + <?= Html::submitButton(Yii::t('app', 'Search'), ['class' => 'btn btn-primary']) ?> | |
| 33 | + <?= Html::resetButton(Yii::t('app', 'Reset'), ['class' => 'btn btn-default']) ?> | |
| 34 | + </div> | |
| 35 | + | |
| 36 | + <?php ActiveForm::end(); ?> | |
| 37 | + | |
| 38 | +</div> | ... | ... |
| 1 | +++ a/backend/views/banner/create.php | |
| 1 | +<?php | |
| 2 | + | |
| 3 | +use yii\helpers\Html; | |
| 4 | + | |
| 5 | + | |
| 6 | +/* @var $this yii\web\View */ | |
| 7 | +/* @var $model common\models\Banner */ | |
| 8 | + | |
| 9 | +$this->title = Yii::t('app', 'Create Banner'); | |
| 10 | +$this->params['breadcrumbs'][] = ['label' => Yii::t('app', 'Banners'), 'url' => ['index']]; | |
| 11 | +$this->params['breadcrumbs'][] = $this->title; | |
| 12 | +?> | |
| 13 | +<div class="banner-create"> | |
| 14 | + | |
| 15 | + <h1><?= Html::encode($this->title) ?></h1> | |
| 16 | + | |
| 17 | + <?= $this->render('_form', [ | |
| 18 | + 'model' => $model, | |
| 19 | + ]) ?> | |
| 20 | + | |
| 21 | +</div> | ... | ... |
| 1 | +++ a/backend/views/banner/index.php | |
| 1 | +<?php | |
| 2 | + | |
| 3 | +use yii\helpers\Html; | |
| 4 | +use yii\grid\GridView; | |
| 5 | + | |
| 6 | +/* @var $this yii\web\View */ | |
| 7 | +/* @var $searchModel common\models\BannerSearch */ | |
| 8 | +/* @var $dataProvider yii\data\ActiveDataProvider */ | |
| 9 | + | |
| 10 | +$this->title = Yii::t('app', 'Banners'); | |
| 11 | +$this->params['breadcrumbs'][] = $this->title; | |
| 12 | +?> | |
| 13 | +<div class="banner-index"> | |
| 14 | + | |
| 15 | + <h1><?= Html::encode($this->title) ?></h1> | |
| 16 | + <?php // echo $this->render('_search', ['model' => $searchModel]); ?> | |
| 17 | + | |
| 18 | + <p> | |
| 19 | + <?= Html::a(Yii::t('app', 'Create Banner'), ['create'], ['class' => 'btn btn-success']) ?> | |
| 20 | + </p> | |
| 21 | + <?= GridView::widget([ | |
| 22 | + 'dataProvider' => $dataProvider, | |
| 23 | + 'filterModel' => $searchModel, | |
| 24 | + 'columns' => [ | |
| 25 | + ['class' => 'yii\grid\SerialColumn'], | |
| 26 | + | |
| 27 | + 'banner_id', | |
| 28 | + 'image', | |
| 29 | + 'alt', | |
| 30 | + 'title', | |
| 31 | + // 'url:url', | |
| 32 | + // 'status', | |
| 33 | + | |
| 34 | + ['class' => 'yii\grid\ActionColumn'], | |
| 35 | + ], | |
| 36 | + ]); ?> | |
| 37 | +</div> | ... | ... |
| 1 | +++ a/backend/views/banner/update.php | |
| 1 | +<?php | |
| 2 | + | |
| 3 | +use yii\helpers\Html; | |
| 4 | + | |
| 5 | +/* @var $this yii\web\View */ | |
| 6 | +/* @var $model common\models\Banner */ | |
| 7 | + | |
| 8 | +$this->title = Yii::t('app', 'Update {modelClass}: ', [ | |
| 9 | + 'modelClass' => 'Banner', | |
| 10 | +]) . $model->title; | |
| 11 | +$this->params['breadcrumbs'][] = ['label' => Yii::t('app', 'Banners'), 'url' => ['index']]; | |
| 12 | +$this->params['breadcrumbs'][] = ['label' => $model->title, 'url' => ['view', 'id' => $model->banner_id]]; | |
| 13 | +$this->params['breadcrumbs'][] = Yii::t('app', 'Update'); | |
| 14 | +?> | |
| 15 | +<div class="banner-update"> | |
| 16 | + | |
| 17 | + <h1><?= Html::encode($this->title) ?></h1> | |
| 18 | + | |
| 19 | + <?= $this->render('_form', [ | |
| 20 | + 'model' => $model, | |
| 21 | + ]) ?> | |
| 22 | + | |
| 23 | +</div> | ... | ... |
| 1 | +++ a/backend/views/banner/view.php | |
| 1 | +<?php | |
| 2 | + | |
| 3 | +use yii\helpers\Html; | |
| 4 | +use yii\widgets\DetailView; | |
| 5 | + | |
| 6 | +/* @var $this yii\web\View */ | |
| 7 | +/* @var $model common\models\Banner */ | |
| 8 | + | |
| 9 | +$this->title = $model->title; | |
| 10 | +$this->params['breadcrumbs'][] = ['label' => Yii::t('app', 'Banners'), 'url' => ['index']]; | |
| 11 | +$this->params['breadcrumbs'][] = $this->title; | |
| 12 | +?> | |
| 13 | +<div class="banner-view"> | |
| 14 | + | |
| 15 | + <h1><?= Html::encode($this->title) ?></h1> | |
| 16 | + | |
| 17 | + <p> | |
| 18 | + <?= Html::a(Yii::t('app', 'Update'), ['update', 'id' => $model->banner_id], ['class' => 'btn btn-primary']) ?> | |
| 19 | + <?= Html::a(Yii::t('app', 'Delete'), ['delete', 'id' => $model->banner_id], [ | |
| 20 | + 'class' => 'btn btn-danger', | |
| 21 | + 'data' => [ | |
| 22 | + 'confirm' => Yii::t('app', 'Are you sure you want to delete this item?'), | |
| 23 | + 'method' => 'post', | |
| 24 | + ], | |
| 25 | + ]) ?> | |
| 26 | + </p> | |
| 27 | + | |
| 28 | + <?= DetailView::widget([ | |
| 29 | + 'model' => $model, | |
| 30 | + 'attributes' => [ | |
| 31 | + 'banner_id', | |
| 32 | + 'image', | |
| 33 | + 'alt', | |
| 34 | + 'title', | |
| 35 | + 'url:url', | |
| 36 | + 'status', | |
| 37 | + ], | |
| 38 | + ]) ?> | |
| 39 | + | |
| 40 | +</div> | ... | ... |
| 1 | +++ a/backend/views/bg/_form.php | |
| 1 | +<?php | |
| 2 | + | |
| 3 | +use yii\helpers\Html; | |
| 4 | +use yii\widgets\ActiveForm; | |
| 5 | + | |
| 6 | +/* @var $this yii\web\View */ | |
| 7 | +/* @var $model common\models\Bg */ | |
| 8 | +/* @var $form yii\widgets\ActiveForm */ | |
| 9 | +?> | |
| 10 | + | |
| 11 | +<div class="bg-form"> | |
| 12 | + | |
| 13 | + <?php $form = ActiveForm::begin(); ?> | |
| 14 | + | |
| 15 | + <?= $form->field($model, 'title')->textInput(['maxlength' => true]) ?> | |
| 16 | + | |
| 17 | + <?= $form->field($model, 'url')->textInput(['maxlength' => true]) ?> | |
| 18 | + | |
| 19 | + <?= $form->field($model, 'image')->textInput(['maxlength' => true]) ?> | |
| 20 | + | |
| 21 | + <div class="form-group"> | |
| 22 | + <?= Html::submitButton($model->isNewRecord ? 'Create' : 'Update', ['class' => $model->isNewRecord ? 'btn btn-success' : 'btn btn-primary']) ?> | |
| 23 | + </div> | |
| 24 | + | |
| 25 | + <?php ActiveForm::end(); ?> | |
| 26 | + | |
| 27 | +</div> | ... | ... |
| 1 | +++ a/backend/views/bg/_search.php | |
| 1 | +<?php | |
| 2 | + | |
| 3 | +use yii\helpers\Html; | |
| 4 | +use yii\widgets\ActiveForm; | |
| 5 | + | |
| 6 | +/* @var $this yii\web\View */ | |
| 7 | +/* @var $model common\models\BgSearch */ | |
| 8 | +/* @var $form yii\widgets\ActiveForm */ | |
| 9 | +?> | |
| 10 | + | |
| 11 | +<div class="bg-search"> | |
| 12 | + | |
| 13 | + <?php $form = ActiveForm::begin([ | |
| 14 | + 'action' => ['index'], | |
| 15 | + 'method' => 'get', | |
| 16 | + ]); ?> | |
| 17 | + | |
| 18 | + <?= $form->field($model, 'id') ?> | |
| 19 | + | |
| 20 | + <?= $form->field($model, 'title') ?> | |
| 21 | + | |
| 22 | + <?= $form->field($model, 'url') ?> | |
| 23 | + | |
| 24 | + <?= $form->field($model, 'image') ?> | |
| 25 | + | |
| 26 | + <div class="form-group"> | |
| 27 | + <?= Html::submitButton('Search', ['class' => 'btn btn-primary']) ?> | |
| 28 | + <?= Html::resetButton('Reset', ['class' => 'btn btn-default']) ?> | |
| 29 | + </div> | |
| 30 | + | |
| 31 | + <?php ActiveForm::end(); ?> | |
| 32 | + | |
| 33 | +</div> | ... | ... |
| 1 | +++ a/backend/views/bg/create.php | |
| 1 | +<?php | |
| 2 | + | |
| 3 | +use yii\helpers\Html; | |
| 4 | + | |
| 5 | + | |
| 6 | +/* @var $this yii\web\View */ | |
| 7 | +/* @var $model common\models\Bg */ | |
| 8 | + | |
| 9 | +$this->title = 'Create Bg'; | |
| 10 | +$this->params['breadcrumbs'][] = ['label' => 'Bgs', 'url' => ['index']]; | |
| 11 | +$this->params['breadcrumbs'][] = $this->title; | |
| 12 | +?> | |
| 13 | +<div class="bg-create"> | |
| 14 | + | |
| 15 | + <h1><?= Html::encode($this->title) ?></h1> | |
| 16 | + | |
| 17 | + <?= $this->render('_form', [ | |
| 18 | + 'model' => $model, | |
| 19 | + ]) ?> | |
| 20 | + | |
| 21 | +</div> | ... | ... |
| 1 | +++ a/backend/views/bg/index.php | |
| 1 | +<?php | |
| 2 | + | |
| 3 | +use yii\helpers\Html; | |
| 4 | +use yii\grid\GridView; | |
| 5 | + | |
| 6 | +/* @var $this yii\web\View */ | |
| 7 | +/* @var $searchModel common\models\BgSearch */ | |
| 8 | +/* @var $dataProvider yii\data\ActiveDataProvider */ | |
| 9 | + | |
| 10 | +$this->title = 'Bgs'; | |
| 11 | +$this->params['breadcrumbs'][] = $this->title; | |
| 12 | +?> | |
| 13 | +<div class="bg-index"> | |
| 14 | + | |
| 15 | + <h1><?= Html::encode($this->title) ?></h1> | |
| 16 | + <?php // echo $this->render('_search', ['model' => $searchModel]); ?> | |
| 17 | + | |
| 18 | + <p> | |
| 19 | + <?= Html::a('Create Bg', ['create'], ['class' => 'btn btn-success']) ?> | |
| 20 | + </p> | |
| 21 | + <?= GridView::widget([ | |
| 22 | + 'dataProvider' => $dataProvider, | |
| 23 | + 'filterModel' => $searchModel, | |
| 24 | + 'columns' => [ | |
| 25 | + ['class' => 'yii\grid\SerialColumn'], | |
| 26 | + | |
| 27 | + 'id', | |
| 28 | + 'title', | |
| 29 | + 'url:url', | |
| 30 | + 'image', | |
| 31 | + | |
| 32 | + ['class' => 'yii\grid\ActionColumn'], | |
| 33 | + ], | |
| 34 | + ]); ?> | |
| 35 | +</div> | ... | ... |
| 1 | +++ a/backend/views/bg/update.php | |
| 1 | +<?php | |
| 2 | + | |
| 3 | +use yii\helpers\Html; | |
| 4 | + | |
| 5 | +/* @var $this yii\web\View */ | |
| 6 | +/* @var $model common\models\Bg */ | |
| 7 | + | |
| 8 | +$this->title = 'Update Bg: ' . $model->title; | |
| 9 | +$this->params['breadcrumbs'][] = ['label' => 'Bgs', 'url' => ['index']]; | |
| 10 | +$this->params['breadcrumbs'][] = ['label' => $model->title, 'url' => ['view', 'id' => $model->id]]; | |
| 11 | +$this->params['breadcrumbs'][] = 'Update'; | |
| 12 | +?> | |
| 13 | +<div class="bg-update"> | |
| 14 | + | |
| 15 | + <h1><?= Html::encode($this->title) ?></h1> | |
| 16 | + | |
| 17 | + <?= $this->render('_form', [ | |
| 18 | + 'model' => $model, | |
| 19 | + ]) ?> | |
| 20 | + | |
| 21 | +</div> | ... | ... |
| 1 | +++ a/backend/views/bg/view.php | |
| 1 | +<?php | |
| 2 | + | |
| 3 | +use yii\helpers\Html; | |
| 4 | +use yii\widgets\DetailView; | |
| 5 | + | |
| 6 | +/* @var $this yii\web\View */ | |
| 7 | +/* @var $model common\models\Bg */ | |
| 8 | + | |
| 9 | +$this->title = $model->title; | |
| 10 | +$this->params['breadcrumbs'][] = ['label' => 'Bgs', 'url' => ['index']]; | |
| 11 | +$this->params['breadcrumbs'][] = $this->title; | |
| 12 | +?> | |
| 13 | +<div class="bg-view"> | |
| 14 | + | |
| 15 | + <h1><?= Html::encode($this->title) ?></h1> | |
| 16 | + | |
| 17 | + <p> | |
| 18 | + <?= Html::a('Update', ['update', 'id' => $model->id], ['class' => 'btn btn-primary']) ?> | |
| 19 | + <?= Html::a('Delete', ['delete', 'id' => $model->id], [ | |
| 20 | + 'class' => 'btn btn-danger', | |
| 21 | + 'data' => [ | |
| 22 | + 'confirm' => 'Are you sure you want to delete this item?', | |
| 23 | + 'method' => 'post', | |
| 24 | + ], | |
| 25 | + ]) ?> | |
| 26 | + </p> | |
| 27 | + | |
| 28 | + <?= DetailView::widget([ | |
| 29 | + 'model' => $model, | |
| 30 | + 'attributes' => [ | |
| 31 | + 'id', | |
| 32 | + 'title', | |
| 33 | + 'url:url', | |
| 34 | + 'image', | |
| 35 | + ], | |
| 36 | + ]) ?> | |
| 37 | + | |
| 38 | +</div> | ... | ... |
| 1 | +++ a/backend/views/blog/_form.php | |
| 1 | +<?php | |
| 2 | + | |
| 3 | +use common\widgets\FieldEditor; | |
| 4 | +use yii\helpers\Html; | |
| 5 | +use yii\widgets\ActiveForm; | |
| 6 | +use common\modules\file\widgets\ImageUploader; | |
| 7 | +use mihaildev\ckeditor\CKEditor; | |
| 8 | +use mihaildev\elfinder\ElFinder; | |
| 9 | +use common\components\Request; | |
| 10 | + | |
| 11 | +/* @var $this yii\web\View */ | |
| 12 | +/* @var $model common\models\Blog */ | |
| 13 | +/* @var $form yii\widgets\ActiveForm */ | |
| 14 | +?> | |
| 15 | + | |
| 16 | +<div class="blog-form"> | |
| 17 | + | |
| 18 | + <?php $form = ActiveForm::begin([ | |
| 19 | + 'enableClientValidation' => false, | |
| 20 | + 'options' => ['enctype' => 'multipart/form-data'] | |
| 21 | + ]); ?> | |
| 22 | + | |
| 23 | + <?= $form->field($model, 'name')->textInput(['maxlength' => true]) ?> | |
| 24 | + | |
| 25 | + <?= $form->field($model, 'link')->textInput(['maxlength' => true]) ?> | |
| 26 | + | |
| 27 | + <?= $form->field($model, 'description')->widget(CKEditor::className(), | |
| 28 | + [ | |
| 29 | + 'editorOptions' => ElFinder::ckeditorOptions('elfinder',[ | |
| 30 | + 'preset' => 'full', //разработанны стандартные настройки basic, standard, full данную возможность не обязательно использовать | |
| 31 | + 'inline' => false, //по умолчанию false]), | |
| 32 | + 'filebrowserUploadUrl'=>Yii::$app->getUrlManager()->createUrl('file/uploader/images-upload') | |
| 33 | + ] | |
| 34 | + ) | |
| 35 | + ]) ?> | |
| 36 | + | |
| 37 | + <?= $form->field($model, 'imageUpload')->widget(\kartik\file\FileInput::classname(), [ | |
| 38 | + 'language' => 'ru', | |
| 39 | + 'options' => [ | |
| 40 | + 'accept' => 'image/*', | |
| 41 | + 'multiple' => false, | |
| 42 | + ], | |
| 43 | + 'pluginOptions' => [ | |
| 44 | + 'allowedFileExtensions' => ['jpg', 'gif', 'png'], | |
| 45 | + 'initialPreview' => !empty($model->imageUrl) ? \common\components\artboximage\ArtboxImageHelper::getImage($model->imageUrl, 'list') : '', | |
| 46 | + 'overwriteInitial' => true, | |
| 47 | + 'showRemove' => false, | |
| 48 | + 'showUpload' => false, | |
| 49 | + 'previewFileType' => 'image', | |
| 50 | + ], | |
| 51 | + ]); ?> | |
| 52 | + | |
| 53 | + <?= FieldEditor::widget([ | |
| 54 | + 'template' => 'education', | |
| 55 | + 'item_id' => $model->blog_id, | |
| 56 | + 'model' => 'common\models\Blog', | |
| 57 | + 'language' => 'ru', | |
| 58 | + ]); ?> | |
| 59 | + <div class="form-group"> | |
| 60 | + <?= Html::submitButton($model->isNewRecord ? 'Create' : 'Update', ['class' => $model->isNewRecord ? 'btn btn-success' : 'btn btn-primary']) ?> | |
| 61 | + </div> | |
| 62 | + | |
| 63 | + <?php ActiveForm::end(); ?> | |
| 64 | + | |
| 65 | +</div> | ... | ... |
| 1 | +++ a/backend/views/blog/_search.php | |
| 1 | +<?php | |
| 2 | + | |
| 3 | +use yii\helpers\Html; | |
| 4 | +use yii\widgets\ActiveForm; | |
| 5 | + | |
| 6 | +/* @var $this yii\web\View */ | |
| 7 | +/* @var $model common\models\BlogSearch */ | |
| 8 | +/* @var $form yii\widgets\ActiveForm */ | |
| 9 | +?> | |
| 10 | + | |
| 11 | +<div class="blog-search"> | |
| 12 | + | |
| 13 | + <?php $form = ActiveForm::begin([ | |
| 14 | + 'action' => ['index'], | |
| 15 | + 'method' => 'get', | |
| 16 | + ]); ?> | |
| 17 | + | |
| 18 | + <?= $form->field($model, 'blog_id') ?> | |
| 19 | + | |
| 20 | + <?= $form->field($model, 'user_id') ?> | |
| 21 | + | |
| 22 | + <?= $form->field($model, 'name') ?> | |
| 23 | + | |
| 24 | + <?= $form->field($model, 'link') ?> | |
| 25 | + | |
| 26 | + <?= $form->field($model, 'date_add') ?> | |
| 27 | + | |
| 28 | + <?php // echo $form->field($model, 'user_add_id') ?> | |
| 29 | + | |
| 30 | + <?php // echo $form->field($model, 'view_count') ?> | |
| 31 | + | |
| 32 | + <?php // echo $form->field($model, 'description') ?> | |
| 33 | + | |
| 34 | + <?php // echo $form->field($model, 'cover') ?> | |
| 35 | + | |
| 36 | + <div class="form-group"> | |
| 37 | + <?= Html::submitButton('Search', ['class' => 'btn btn-primary']) ?> | |
| 38 | + <?= Html::resetButton('Reset', ['class' => 'btn btn-default']) ?> | |
| 39 | + </div> | |
| 40 | + | |
| 41 | + <?php ActiveForm::end(); ?> | |
| 42 | + | |
| 43 | +</div> | ... | ... |
| 1 | +++ a/backend/views/blog/create.php | |
| 1 | +<?php | |
| 2 | + | |
| 3 | +use yii\helpers\Html; | |
| 4 | + | |
| 5 | + | |
| 6 | +/* @var $this yii\web\View */ | |
| 7 | +/* @var $model common\models\Blog */ | |
| 8 | + | |
| 9 | +$this->title = 'Create Blog'; | |
| 10 | +$this->params['breadcrumbs'][] = ['label' => 'Blogs', 'url' => ['index']]; | |
| 11 | +$this->params['breadcrumbs'][] = $this->title; | |
| 12 | +?> | |
| 13 | +<div class="blog-create"> | |
| 14 | + | |
| 15 | + <h1><?= Html::encode($this->title) ?></h1> | |
| 16 | + | |
| 17 | + <?= $this->render('_form', [ | |
| 18 | + 'model' => $model, | |
| 19 | + ]) ?> | |
| 20 | + | |
| 21 | +</div> | ... | ... |
| 1 | +++ a/backend/views/blog/index.php | |
| 1 | +<?php | |
| 2 | + | |
| 3 | +use yii\helpers\Html; | |
| 4 | +use yii\grid\GridView; | |
| 5 | + | |
| 6 | +/* @var $this yii\web\View */ | |
| 7 | +/* @var $searchModel common\models\BlogSearch */ | |
| 8 | +/* @var $dataProvider yii\data\ActiveDataProvider */ | |
| 9 | + | |
| 10 | +$this->title = 'Blogs'; | |
| 11 | +$this->params['breadcrumbs'][] = $this->title; | |
| 12 | +?> | |
| 13 | +<div class="blog-index"> | |
| 14 | + | |
| 15 | + <h1><?= Html::encode($this->title) ?></h1> | |
| 16 | + <?php // echo $this->render('_search', ['model' => $searchModel]); ?> | |
| 17 | + | |
| 18 | + <p> | |
| 19 | + <?= Html::a('Create Blog', ['create'], ['class' => 'btn btn-success']) ?> | |
| 20 | + </p> | |
| 21 | + <?= GridView::widget([ | |
| 22 | + 'dataProvider' => $dataProvider, | |
| 23 | + 'filterModel' => $searchModel, | |
| 24 | + 'columns' => [ | |
| 25 | + ['class' => 'yii\grid\SerialColumn'], | |
| 26 | + | |
| 27 | + 'blog_id', | |
| 28 | + 'user_id', | |
| 29 | + 'name', | |
| 30 | + 'link', | |
| 31 | + 'date_add', | |
| 32 | + // 'user_add_id', | |
| 33 | + // 'view_count', | |
| 34 | + // 'description:ntext', | |
| 35 | + // 'cover', | |
| 36 | + | |
| 37 | + ['class' => 'yii\grid\ActionColumn'], | |
| 38 | + ], | |
| 39 | + ]); ?> | |
| 40 | +</div> | ... | ... |
| 1 | +++ a/backend/views/blog/update.php | |
| 1 | +<?php | |
| 2 | + | |
| 3 | +use yii\helpers\Html; | |
| 4 | + | |
| 5 | +/* @var $this yii\web\View */ | |
| 6 | +/* @var $model common\models\Blog */ | |
| 7 | + | |
| 8 | +$this->title = 'Update Blog: ' . ' ' . $model->name; | |
| 9 | +$this->params['breadcrumbs'][] = ['label' => 'Blogs', 'url' => ['index']]; | |
| 10 | +$this->params['breadcrumbs'][] = ['label' => $model->name, 'url' => ['view', 'id' => $model->blog_id]]; | |
| 11 | +$this->params['breadcrumbs'][] = 'Update'; | |
| 12 | +?> | |
| 13 | +<div class="blog-update"> | |
| 14 | + | |
| 15 | + <h1><?= Html::encode($this->title) ?></h1> | |
| 16 | + | |
| 17 | + <?= $this->render('_form', [ | |
| 18 | + 'model' => $model, | |
| 19 | + ]) ?> | |
| 20 | + | |
| 21 | +</div> | ... | ... |
| 1 | +++ a/backend/views/blog/view.php | |
| 1 | +<?php | |
| 2 | + | |
| 3 | +use yii\helpers\Html; | |
| 4 | +use yii\widgets\DetailView; | |
| 5 | + | |
| 6 | +/* @var $this yii\web\View */ | |
| 7 | +/* @var $model common\models\Blog */ | |
| 8 | + | |
| 9 | +$this->title = $model->name; | |
| 10 | +$this->params['breadcrumbs'][] = ['label' => 'Blogs', 'url' => ['index']]; | |
| 11 | +$this->params['breadcrumbs'][] = $this->title; | |
| 12 | +?> | |
| 13 | +<div class="blog-view"> | |
| 14 | + | |
| 15 | + <h1><?= Html::encode($this->title) ?></h1> | |
| 16 | + | |
| 17 | + <p> | |
| 18 | + <?= Html::a('Update', ['update', 'id' => $model->blog_id], ['class' => 'btn btn-primary']) ?> | |
| 19 | + <?= Html::a('Delete', ['delete', 'id' => $model->blog_id], [ | |
| 20 | + 'class' => 'btn btn-danger', | |
| 21 | + 'data' => [ | |
| 22 | + 'confirm' => 'Are you sure you want to delete this item?', | |
| 23 | + 'method' => 'post', | |
| 24 | + ], | |
| 25 | + ]) ?> | |
| 26 | + </p> | |
| 27 | + | |
| 28 | + <?= DetailView::widget([ | |
| 29 | + 'model' => $model, | |
| 30 | + 'attributes' => [ | |
| 31 | + 'blog_id', | |
| 32 | + 'user_id', | |
| 33 | + 'name', | |
| 34 | + 'link', | |
| 35 | + 'date_add', | |
| 36 | + 'user_add_id', | |
| 37 | + 'view_count', | |
| 38 | + 'description:ntext', | |
| 39 | + 'cover', | |
| 40 | + ], | |
| 41 | + ]) ?> | |
| 42 | + | |
| 43 | +</div> | ... | ... |
| 1 | +++ a/backend/views/brand/_form.php | |
| 1 | +<?php | |
| 2 | + | |
| 3 | +use yii\helpers\Html; | |
| 4 | +use yii\widgets\ActiveForm; | |
| 5 | + | |
| 6 | +/* @var $this yii\web\View */ | |
| 7 | +/* @var $model common\modules\product\models\Brand */ | |
| 8 | +/* @var $form yii\widgets\ActiveForm */ | |
| 9 | +?> | |
| 10 | + | |
| 11 | +<div class="brand-form"> | |
| 12 | + | |
| 13 | + <?php $form = ActiveForm::begin([ | |
| 14 | + 'enableClientValidation' => false, | |
| 15 | + 'options' => ['enctype' => 'multipart/form-data'] | |
| 16 | + ]); ?> | |
| 17 | + | |
| 18 | + <?= $form->field($model, 'name')->textInput() ?> | |
| 19 | + | |
| 20 | + <?= $form->field($model, 'alias')->textInput(['maxlength' => true]) ?> | |
| 21 | + | |
| 22 | + <?= $form->field($model, 'imageUpload')->widget(\kartik\file\FileInput::classname(), [ | |
| 23 | + 'language' => 'ru', | |
| 24 | + 'options' => [ | |
| 25 | + 'accept' => 'image/*', | |
| 26 | + 'multiple' => false, | |
| 27 | + ], | |
| 28 | + 'pluginOptions' => [ | |
| 29 | + 'allowedFileExtensions' => ['jpg', 'gif', 'png'], | |
| 30 | + 'initialPreview' => !empty($model->imageUrl) ? \common\components\artboximage\ArtboxImageHelper::getImage($model->imageUrl, 'list') : '', | |
| 31 | + 'overwriteInitial' => true, | |
| 32 | + 'showRemove' => false, | |
| 33 | + 'showUpload' => false, | |
| 34 | + 'previewFileType' => 'image', | |
| 35 | + ], | |
| 36 | + ]); ?> | |
| 37 | + | |
| 38 | + <?= $form->field($model, 'meta_title')->textInput(['maxlength' => true]) ?> | |
| 39 | + | |
| 40 | + <?= $form->field($model, 'meta_desc')->textarea(['rows' => 6]) ?> | |
| 41 | + | |
| 42 | + <?= $form->field($model, 'meta_robots')->textInput(['maxlength' => true]) ?> | |
| 43 | + | |
| 44 | + <?= $form->field($model, 'seo_text')->textarea(['rows' => 6]) ?> | |
| 45 | + | |
| 46 | + <div class="form-group"> | |
| 47 | + <?= Html::submitButton($model->isNewRecord ? Yii::t('product', 'Create') : Yii::t('product', 'Update'), ['class' => $model->isNewRecord ? 'btn btn-success' : 'btn btn-primary']) ?> | |
| 48 | + <?php if ($model->isNewRecord) :?> | |
| 49 | + <?= Html::submitButton(Yii::t('product', 'Create and continue'), ['name' => 'create_and_new', 'class' => 'btn btn-primary']) ?> | |
| 50 | + <?php endif?> | |
| 51 | + </div> | |
| 52 | + | |
| 53 | + <?php ActiveForm::end(); ?> | |
| 54 | + | |
| 55 | +</div> | ... | ... |
| 1 | +++ a/backend/views/brand/_search.php | |
| 1 | +<?php | |
| 2 | + | |
| 3 | +use yii\helpers\Html; | |
| 4 | +use yii\widgets\ActiveForm; | |
| 5 | + | |
| 6 | +/* @var $this yii\web\View */ | |
| 7 | +/* @var $model common\modules\product\models\BrandSearch */ | |
| 8 | +/* @var $form yii\widgets\ActiveForm */ | |
| 9 | +?> | |
| 10 | + | |
| 11 | +<div class="brand-search"> | |
| 12 | + | |
| 13 | + <?php $form = ActiveForm::begin([ | |
| 14 | + 'action' => ['index'], | |
| 15 | + 'method' => 'get', | |
| 16 | + ]); ?> | |
| 17 | + | |
| 18 | + <?= $form->field($model, 'brand_id') ?> | |
| 19 | + | |
| 20 | + <?= $form->field($model, 'brand_name_id') ?> | |
| 21 | + | |
| 22 | + <?= $form->field($model, 'alias') ?> | |
| 23 | + | |
| 24 | + <?= $form->field($model, 'image') ?> | |
| 25 | + | |
| 26 | + <?= $form->field($model, 'meta_title') ?> | |
| 27 | + | |
| 28 | + <?php // echo $form->field($model, 'meta_desc') ?> | |
| 29 | + | |
| 30 | + <?php // echo $form->field($model, 'meta_robots') ?> | |
| 31 | + | |
| 32 | + <?php // echo $form->field($model, 'seo_text') ?> | |
| 33 | + | |
| 34 | + <div class="form-group"> | |
| 35 | + <?= Html::submitButton(Yii::t('product', 'Search'), ['class' => 'btn btn-primary']) ?> | |
| 36 | + <?= Html::resetButton(Yii::t('product', 'Reset'), ['class' => 'btn btn-default']) ?> | |
| 37 | + </div> | |
| 38 | + | |
| 39 | + <?php ActiveForm::end(); ?> | |
| 40 | + | |
| 41 | +</div> | ... | ... |
| 1 | +++ a/backend/views/brand/create.php | |
| 1 | +<?php | |
| 2 | + | |
| 3 | +use yii\helpers\Html; | |
| 4 | + | |
| 5 | + | |
| 6 | +/* @var $this yii\web\View */ | |
| 7 | +/* @var $model common\modules\product\models\Brand */ | |
| 8 | + | |
| 9 | +$this->title = Yii::t('product', 'Create Brand'); | |
| 10 | +$this->params['breadcrumbs'][] = ['label' => Yii::t('product', 'Brands'), 'url' => ['index']]; | |
| 11 | +$this->params['breadcrumbs'][] = $this->title; | |
| 12 | +?> | |
| 13 | +<div class="brand-create"> | |
| 14 | + | |
| 15 | + <h1><?= Html::encode($this->title) ?></h1> | |
| 16 | + | |
| 17 | + <?= $this->render('_form', [ | |
| 18 | + 'model' => $model, | |
| 19 | + ]) ?> | |
| 20 | + | |
| 21 | +</div> | ... | ... |
| 1 | +++ a/backend/views/brand/index.php | |
| 1 | +<?php | |
| 2 | + | |
| 3 | +use yii\helpers\Html; | |
| 4 | +use yii\grid\GridView; | |
| 5 | + | |
| 6 | +/* @var $this yii\web\View */ | |
| 7 | +/* @var $searchModel common\modules\product\models\BrandSearch */ | |
| 8 | +/* @var $dataProvider yii\data\ActiveDataProvider */ | |
| 9 | + | |
| 10 | +$this->title = Yii::t('product', 'Brands'); | |
| 11 | +$this->params['breadcrumbs'][] = $this->title; | |
| 12 | +?> | |
| 13 | +<div class="brand-index"> | |
| 14 | + | |
| 15 | + <h1><?= Html::encode($this->title) ?></h1> | |
| 16 | + <?php // echo $this->render('_search', ['model' => $searchModel]); ?> | |
| 17 | + | |
| 18 | + <p> | |
| 19 | + <?= Html::a(Yii::t('product', 'Create Brand'), ['create'], ['class' => 'btn btn-success']) ?> | |
| 20 | + </p> | |
| 21 | + <?= GridView::widget([ | |
| 22 | + 'dataProvider' => $dataProvider, | |
| 23 | +// 'filterModel' => $searchModel, | |
| 24 | + 'columns' => [ | |
| 25 | + ['class' => 'yii\grid\SerialColumn'], | |
| 26 | + | |
| 27 | + 'name', | |
| 28 | + 'alias', | |
| 29 | + [ | |
| 30 | + 'attribute' => 'title', | |
| 31 | + 'format' => 'html', | |
| 32 | + 'value' => function($data) { | |
| 33 | + return Html::img($data->imageUrl, ['width'=>'100']); | |
| 34 | + }, | |
| 35 | + ], | |
| 36 | + | |
| 37 | + ['class' => 'yii\grid\ActionColumn'], | |
| 38 | + ], | |
| 39 | + ]); ?> | |
| 40 | +</div> | ... | ... |
| 1 | +++ a/backend/views/brand/update.php | |
| 1 | +<?php | |
| 2 | + | |
| 3 | +use yii\helpers\Html; | |
| 4 | + | |
| 5 | +/* @var $this yii\web\View */ | |
| 6 | +/* @var $model common\modules\product\models\Brand */ | |
| 7 | + | |
| 8 | +$this->title = Yii::t('product', 'Update {modelClass}: ', [ | |
| 9 | + 'modelClass' => 'Brand', | |
| 10 | +]) . ' ' . $model->brand_id; | |
| 11 | +$this->params['breadcrumbs'][] = ['label' => Yii::t('product', 'Brands'), 'url' => ['index']]; | |
| 12 | +$this->params['breadcrumbs'][] = ['label' => $model->brand_id, 'url' => ['view', 'id' => $model->brand_id]]; | |
| 13 | +$this->params['breadcrumbs'][] = Yii::t('product', 'Update'); | |
| 14 | +?> | |
| 15 | +<div class="brand-update"> | |
| 16 | + | |
| 17 | + <h1><?= Html::encode($this->title) ?></h1> | |
| 18 | + | |
| 19 | + <?= $this->render('_form', [ | |
| 20 | + 'model' => $model, | |
| 21 | + ]) ?> | |
| 22 | + | |
| 23 | +</div> | ... | ... |
| 1 | +++ a/backend/views/brand/view.php | |
| 1 | +<?php | |
| 2 | + | |
| 3 | +use yii\helpers\Html; | |
| 4 | +use yii\widgets\DetailView; | |
| 5 | + | |
| 6 | +/* @var $this yii\web\View */ | |
| 7 | +/* @var $model common\modules\product\models\Brand */ | |
| 8 | + | |
| 9 | +$this->title = $model->brand_id; | |
| 10 | +$this->params['breadcrumbs'][] = ['label' => Yii::t('product', 'Brands'), 'url' => ['index']]; | |
| 11 | +$this->params['breadcrumbs'][] = $this->title; | |
| 12 | +?> | |
| 13 | +<div class="brand-view"> | |
| 14 | + | |
| 15 | + <h1><?= Html::encode($this->title) ?></h1> | |
| 16 | + | |
| 17 | + <p> | |
| 18 | + <?= Html::a(Yii::t('product', 'Update'), ['update', 'id' => $model->brand_id], ['class' => 'btn btn-primary']) ?> | |
| 19 | + <?= Html::a(Yii::t('product', 'Delete'), ['delete', 'id' => $model->brand_id], [ | |
| 20 | + 'class' => 'btn btn-danger', | |
| 21 | + 'data' => [ | |
| 22 | + 'confirm' => Yii::t('product', 'Are you sure you want to delete this item?'), | |
| 23 | + 'method' => 'post', | |
| 24 | + ], | |
| 25 | + ]) ?> | |
| 26 | + </p> | |
| 27 | + | |
| 28 | + <?= DetailView::widget([ | |
| 29 | + 'model' => $model, | |
| 30 | + 'attributes' => [ | |
| 31 | + 'brand_id', | |
| 32 | + 'brand_name_id', | |
| 33 | + 'alias', | |
| 34 | + 'imageUrl:image', | |
| 35 | + 'meta_title', | |
| 36 | + 'meta_desc:ntext', | |
| 37 | + 'meta_robots', | |
| 38 | + 'seo_text:ntext', | |
| 39 | + ], | |
| 40 | + ]) ?> | |
| 41 | + | |
| 42 | +</div> | ... | ... |
| 1 | +++ a/backend/views/category/_form.php | |
| 1 | +<?php | |
| 2 | + | |
| 3 | +use yii\helpers\Html; | |
| 4 | +use yii\widgets\ActiveForm; | |
| 5 | +use mihaildev\ckeditor\CKEditor; | |
| 6 | +use mihaildev\elfinder\ElFinder; | |
| 7 | +use common\modules\file\widgets\ImageUploader; | |
| 8 | +use kartik\select2\Select2; | |
| 9 | + | |
| 10 | +/* @var $this yii\web\View */ | |
| 11 | +/* @var $model common\modules\product\models\Category */ | |
| 12 | +/* @var $form yii\widgets\ActiveForm */ | |
| 13 | +?> | |
| 14 | + | |
| 15 | +<div class="category-form"> | |
| 16 | + | |
| 17 | + <?php $form = ActiveForm::begin([ | |
| 18 | + 'enableClientValidation' => false, | |
| 19 | + 'options' => ['enctype' => 'multipart/form-data'] | |
| 20 | + ]); ?> | |
| 21 | + | |
| 22 | + <?= $form->field($model, 'name')->textInput() ?> | |
| 23 | + | |
| 24 | + <?= $form->field($model, 'alias')->textInput(['maxlength' => true]) ?> | |
| 25 | + | |
| 26 | + <?= $form->field($model, 'parent_id')->dropDownList($categories, [ | |
| 27 | + 'prompt' => Yii::t('rubrication', 'Root category'), | |
| 28 | + 'options' => [ | |
| 29 | + $model->category_id => ['disabled' => true] | |
| 30 | + ] | |
| 31 | + ])->label(Yii::t('product', 'Parent category')) ?> | |
| 32 | + | |
| 33 | + <?= $form->field($model, 'group_to_category')->widget(Select2::className(), [ | |
| 34 | + 'data' => \yii\helpers\ArrayHelper::map(\common\modules\rubrication\models\TaxGroup::find()->all(), 'tax_group_id', 'name'), | |
| 35 | + 'language' => 'ru', | |
| 36 | + 'options' => [ | |
| 37 | + 'placeholder' => 'Linked options', | |
| 38 | + 'multiple' => true, | |
| 39 | + ], | |
| 40 | + 'pluginOptions' => [ | |
| 41 | + 'allowClear' => true | |
| 42 | + ], | |
| 43 | + ] | |
| 44 | + ) ?> | |
| 45 | + | |
| 46 | + <?= $form->field($model, 'imageUpload')->widget(\kartik\file\FileInput::classname(), [ | |
| 47 | + 'language' => 'ru', | |
| 48 | + 'options' => [ | |
| 49 | + 'accept' => 'image/*', | |
| 50 | + 'multiple' => false, | |
| 51 | + ], | |
| 52 | + 'pluginOptions' => [ | |
| 53 | + 'allowedFileExtensions' => ['jpg', 'gif', 'png'], | |
| 54 | + 'initialPreview' => !empty($model->imageUrl) ? \common\components\artboximage\ArtboxImageHelper::getImage($model->imageUrl, 'list') : '', | |
| 55 | + 'overwriteInitial' => true, | |
| 56 | + 'showRemove' => false, | |
| 57 | + 'showUpload' => false, | |
| 58 | + 'previewFileType' => 'image', | |
| 59 | + ], | |
| 60 | + ]); ?> | |
| 61 | + | |
| 62 | + <?= $form->field($model, 'meta_title')->textInput(['maxlength' => true]) ?> | |
| 63 | + | |
| 64 | + <?= $form->field($model, 'meta_desc')->textarea(['rows' => 6]) ?> | |
| 65 | + | |
| 66 | + <?= $form->field($model, 'meta_robots')->textInput(['maxlength' => true]) ?> | |
| 67 | + | |
| 68 | + <?= $form->field($model, 'h1')->textInput(['maxlength' => true]) ?> | |
| 69 | + | |
| 70 | + <?= $form->field($model, 'seo_text')->widget(CKEditor::className(), | |
| 71 | + [ | |
| 72 | + 'editorOptions' => ElFinder::ckeditorOptions('elfinder',[ | |
| 73 | + 'preset' => 'full', //разработанны стандартные настройки basic, standard, full данную возможность не обязательно использовать | |
| 74 | + 'inline' => false, //по умолчанию false]), | |
| 75 | + 'filebrowserUploadUrl'=>Yii::$app->getUrlManager()->createUrl('file/uploader/images-upload') | |
| 76 | + ] | |
| 77 | + ) | |
| 78 | + ]) ?> | |
| 79 | + | |
| 80 | + <?php if (!empty($model) && $model->depth == 2) :?> | |
| 81 | + <?= $form->field($model, 'populary')->checkbox() ?> | |
| 82 | + <?php endif?> | |
| 83 | + | |
| 84 | + <div class="form-group"> | |
| 85 | + <?= Html::submitButton($model->isNewRecord ? Yii::t('product', 'Create') : Yii::t('product', 'Update'), ['class' => $model->isNewRecord ? 'btn btn-success' : 'btn btn-primary']) ?> | |
| 86 | + <?php if ($model->isNewRecord) :?> | |
| 87 | + <?= Html::submitButton(Yii::t('product', 'Create and continue'), ['name' => 'create_and_new', 'class' => 'btn btn-primary']) ?> | |
| 88 | + <?php endif?> | |
| 89 | + </div> | |
| 90 | + | |
| 91 | + <?php ActiveForm::end(); ?> | |
| 92 | + | |
| 93 | +</div> | ... | ... |
| 1 | +++ a/backend/views/category/_search.php | |
| 1 | +<?php | |
| 2 | + | |
| 3 | +use yii\helpers\Html; | |
| 4 | +use yii\widgets\ActiveForm; | |
| 5 | + | |
| 6 | +/* @var $this yii\web\View */ | |
| 7 | +/* @var $model common\modules\product\models\CategorySearch */ | |
| 8 | +/* @var $form yii\widgets\ActiveForm */ | |
| 9 | +?> | |
| 10 | + | |
| 11 | +<div class="category-search"> | |
| 12 | + | |
| 13 | + <?php $form = ActiveForm::begin([ | |
| 14 | + 'action' => ['index'], | |
| 15 | + 'method' => 'get', | |
| 16 | + ]); ?> | |
| 17 | + | |
| 18 | + <?= $form->field($model, 'category_id') ?> | |
| 19 | + | |
| 20 | + <?= $form->field($model, 'parent_id') ?> | |
| 21 | + | |
| 22 | + <?= $form->field($model, 'path') ?> | |
| 23 | + | |
| 24 | + <?= $form->field($model, 'depth') ?> | |
| 25 | + | |
| 26 | + <?= $form->field($model, 'image') ?> | |
| 27 | + | |
| 28 | + <?php // echo $form->field($model, 'meta_title') ?> | |
| 29 | + | |
| 30 | + <?php // echo $form->field($model, 'meta_desc') ?> | |
| 31 | + | |
| 32 | + <?php // echo $form->field($model, 'meta_robots') ?> | |
| 33 | + | |
| 34 | + <?php // echo $form->field($model, 'seo_text') ?> | |
| 35 | + | |
| 36 | + <?php // echo $form->field($model, 'category_name_id') ?> | |
| 37 | + | |
| 38 | + <?php // echo $form->field($model, 'product_unit_id') ?> | |
| 39 | + | |
| 40 | + <?php // echo $form->field($model, 'alias') ?> | |
| 41 | + | |
| 42 | + <div class="form-group"> | |
| 43 | + <?= Html::submitButton(Yii::t('product', 'Search'), ['class' => 'btn btn-primary']) ?> | |
| 44 | + <?= Html::resetButton(Yii::t('product', 'Reset'), ['class' => 'btn btn-default']) ?> | |
| 45 | + </div> | |
| 46 | + | |
| 47 | + <?php ActiveForm::end(); ?> | |
| 48 | + | |
| 49 | +</div> | ... | ... |
| 1 | +++ a/backend/views/category/create.php | |
| 1 | +<?php | |
| 2 | + | |
| 3 | +use yii\helpers\Html; | |
| 4 | + | |
| 5 | + | |
| 6 | +/* @var $this yii\web\View */ | |
| 7 | +/* @var $model common\modules\product\models\Category */ | |
| 8 | + | |
| 9 | +$this->title = Yii::t('product', 'Create Category'); | |
| 10 | +$this->params['breadcrumbs'][] = ['label' => Yii::t('product', 'Categories'), 'url' => ['index']]; | |
| 11 | +$this->params['breadcrumbs'][] = $this->title; | |
| 12 | +?> | |
| 13 | +<div class="category-create"> | |
| 14 | + | |
| 15 | + <h1><?= Html::encode($this->title) ?></h1> | |
| 16 | + | |
| 17 | + <?= $this->render('_form', [ | |
| 18 | + 'model' => $model, | |
| 19 | + 'categories' => $categories | |
| 20 | + ]) ?> | |
| 21 | + | |
| 22 | +</div> | ... | ... |
| 1 | +++ a/backend/views/category/index.php | |
| 1 | +<?php | |
| 2 | + | |
| 3 | +use yii\helpers\Html; | |
| 4 | +use kartik\grid\GridView; | |
| 5 | + | |
| 6 | +/* @var $this yii\web\View */ | |
| 7 | +/* @var $searchModel common\modules\product\models\CategorySearch */ | |
| 8 | +/* @var $dataProvider yii\data\ActiveDataProvider */ | |
| 9 | + | |
| 10 | +$this->title = Yii::t('product', 'Categories'); | |
| 11 | +$this->params['breadcrumbs'][] = $this->title; | |
| 12 | +?> | |
| 13 | +<div class="category-index"> | |
| 14 | + | |
| 15 | + <h1><?= Html::encode($this->title) ?></h1> | |
| 16 | + <?php // echo $this->render('_search', ['model' => $searchModel]); ?> | |
| 17 | + | |
| 18 | + <p> | |
| 19 | + <?= Html::a(Yii::t('product', 'Create Category'), ['create'], ['class' => 'btn btn-success']) ?> | |
| 20 | + </p> | |
| 21 | + <?= GridView::widget([ | |
| 22 | + 'dataProvider' => $dataProvider, | |
| 23 | +// 'filterModel' => $searchModel, | |
| 24 | + 'columns' => [ | |
| 25 | + ['class' => 'yii\grid\SerialColumn'], | |
| 26 | + [ | |
| 27 | + 'label'=> Yii::t('product', 'Name'), | |
| 28 | + 'content'=>function($data){ | |
| 29 | + $op = []; | |
| 30 | + foreach($data->getParents()->all() as $parent) { | |
| 31 | + $op[] = $parent->name; | |
| 32 | + } | |
| 33 | + $op[] = $data->name; | |
| 34 | + return implode(' → ', $op); | |
| 35 | +// return str_repeat('-', $data->depth) .' '. $data->name; | |
| 36 | + } | |
| 37 | + ], | |
| 38 | + [ | |
| 39 | + 'class' => 'yii\grid\ActionColumn', | |
| 40 | + 'template' => '{view} {update} {delete} {populary}', | |
| 41 | + 'buttons' => [ | |
| 42 | + 'populary' => function ($url, $model) { | |
| 43 | + if ($model->depth == 2) { | |
| 44 | + return Html::a('<span class="glyphicon glyphicon-star' . ($model->populary ? '' : '-empty') . '"></span>', $url, [ | |
| 45 | + 'title' => Yii::t('product', ($model->populary ? 'Set not populary' : 'Set populary')), | |
| 46 | + ]); | |
| 47 | + } | |
| 48 | + }, | |
| 49 | + ], | |
| 50 | + 'urlCreator' => function ($action, $model, $key, $index) { | |
| 51 | + switch ($action) { | |
| 52 | + case 'populary': | |
| 53 | + return \yii\helpers\Url::to(['category/populary', 'id' => $model->category_id]); | |
| 54 | + break; | |
| 55 | + case 'view': | |
| 56 | + return \yii\helpers\Url::to(['category/view', 'id' => $model->category_id]); | |
| 57 | + break; | |
| 58 | + case 'update': | |
| 59 | + return \yii\helpers\Url::to(['category/update', 'id' => $model->category_id]); | |
| 60 | + break; | |
| 61 | + case 'delete': | |
| 62 | + return \yii\helpers\Url::to(['category/delete', 'id' => $model->category_id]); | |
| 63 | + break; | |
| 64 | + } | |
| 65 | + } | |
| 66 | + ], | |
| 67 | + ], | |
| 68 | + 'panel' => [ | |
| 69 | + 'type'=>'success', | |
| 70 | + ], | |
| 71 | + ]); ?> | |
| 72 | +</div> | ... | ... |
| 1 | +++ a/backend/views/category/update.php | |
| 1 | +<?php | |
| 2 | + | |
| 3 | +use yii\helpers\Html; | |
| 4 | + | |
| 5 | +/* @var $this yii\web\View */ | |
| 6 | +/* @var $model common\modules\product\models\Category */ | |
| 7 | + | |
| 8 | +$this->title = Yii::t('product', 'Update {modelClass}: ', [ | |
| 9 | + 'modelClass' => 'Category', | |
| 10 | +]) . ' ' . $model->name; | |
| 11 | +$this->params['breadcrumbs'][] = ['label' => Yii::t('product', 'Categories'), 'url' => ['index']]; | |
| 12 | +$this->params['breadcrumbs'][] = ['label' => $model->name, 'url' => ['view', 'id' => $model->category_id]]; | |
| 13 | +$this->params['breadcrumbs'][] = Yii::t('product', 'Update'); | |
| 14 | +?> | |
| 15 | +<div class="category-update"> | |
| 16 | + | |
| 17 | + <h1><?= Html::encode($this->title) ?></h1> | |
| 18 | + | |
| 19 | + <?= $this->render('_form', [ | |
| 20 | + 'model' => $model, | |
| 21 | + 'categories' => $categories | |
| 22 | + ]) ?> | |
| 23 | + | |
| 24 | +</div> | ... | ... |
| 1 | +++ a/backend/views/category/view.php | |
| 1 | +<?php | |
| 2 | + | |
| 3 | +use yii\helpers\Html; | |
| 4 | +use yii\widgets\DetailView; | |
| 5 | + | |
| 6 | +/* @var $this yii\web\View */ | |
| 7 | +/* @var $model common\modules\product\models\Category */ | |
| 8 | + | |
| 9 | +$this->title = $model->name; | |
| 10 | +$this->params['breadcrumbs'][] = ['label' => Yii::t('product', 'Categories'), 'url' => ['index']]; | |
| 11 | +$this->params['breadcrumbs'][] = $this->title; | |
| 12 | +?> | |
| 13 | +<div class="category-view"> | |
| 14 | + | |
| 15 | + <h1><?= Html::encode($this->title) ?></h1> | |
| 16 | + | |
| 17 | + <p> | |
| 18 | + <?= Html::a(Yii::t('product', 'Update'), ['update', 'id' => $model->category_id], ['class' => 'btn btn-primary']) ?> | |
| 19 | + <?= Html::a(Yii::t('product', 'Delete'), ['delete', 'id' => $model->category_id], [ | |
| 20 | + 'class' => 'btn btn-danger', | |
| 21 | + 'data' => [ | |
| 22 | + 'confirm' => Yii::t('product', 'Are you sure you want to delete this item?'), | |
| 23 | + 'method' => 'post', | |
| 24 | + ], | |
| 25 | + ]) ?> | |
| 26 | + <?= Html::a(Yii::t('product', 'Create Category'), ['category/create'], ['class' => 'btn btn-success']) ?> | |
| 27 | + <?php if (!empty($model->parent_id)) :?> | |
| 28 | + <?= Html::a(Yii::t('product', 'Create category By {name}', ['name' => $model->parent->name]), ['category/create?parent='. $model->parent->category_id], ['class' => 'btn btn-success']) ?> | |
| 29 | + <?php endif?> | |
| 30 | + </p> | |
| 31 | + | |
| 32 | + <?= DetailView::widget([ | |
| 33 | + 'model' => $model, | |
| 34 | + 'attributes' => [ | |
| 35 | + 'category_id', | |
| 36 | + 'parent_id', | |
| 37 | + 'path', | |
| 38 | + 'depth', | |
| 39 | + 'imageUrl:image', | |
| 40 | + 'meta_title', | |
| 41 | + 'meta_desc:ntext', | |
| 42 | + 'meta_robots', | |
| 43 | + 'h1', | |
| 44 | + 'seo_text:ntext', | |
| 45 | + 'category_name_id', | |
| 46 | + 'product_unit_id', | |
| 47 | + 'alias', | |
| 48 | + | |
| 49 | + ], | |
| 50 | + ]) ?> | |
| 51 | + | |
| 52 | +</div> | ... | ... |
| 1 | +++ a/backend/views/comment/_form.php | |
| 1 | +<?php | |
| 2 | + | |
| 3 | + use common\modules\comment\models\Comment; | |
| 4 | + use yii\helpers\Html; | |
| 5 | + use yii\widgets\ActiveForm; | |
| 6 | + | |
| 7 | + /* @var $this yii\web\View */ | |
| 8 | + /* @var $model Comment */ | |
| 9 | + /* @var $form yii\widgets\ActiveForm */ | |
| 10 | + $status_list = [ | |
| 11 | + Comment::STATUS_ACTIVE => 'Активный', | |
| 12 | + Comment::STATUS_HIDDEN => 'Новый', | |
| 13 | + Comment::STATUS_DELETED => 'Удаленный', | |
| 14 | + ] | |
| 15 | +?> | |
| 16 | + | |
| 17 | +<div class="comment-form"> | |
| 18 | + | |
| 19 | + <?php $form = ActiveForm::begin(); ?> | |
| 20 | + | |
| 21 | + <?= $form->field($model, 'text') | |
| 22 | + ->textarea([ 'rows' => 6 ]) ?> | |
| 23 | + | |
| 24 | + <?= $form->field($model, 'status') | |
| 25 | + ->dropDownList($status_list) ?> | |
| 26 | + | |
| 27 | + <div class="form-group"> | |
| 28 | + <?= Html::submitButton('Обновить', [ 'class' => 'btn btn-primary' ]) ?> | |
| 29 | + </div> | |
| 30 | + | |
| 31 | + <?php ActiveForm::end(); ?> | |
| 32 | + | |
| 33 | +</div> | ... | ... |
| 1 | +++ a/backend/views/comment/_search.php | |
| 1 | +<?php | |
| 2 | + | |
| 3 | +use yii\helpers\Html; | |
| 4 | +use yii\widgets\ActiveForm; | |
| 5 | + | |
| 6 | +/* @var $this yii\web\View */ | |
| 7 | +/* @var $model backend\models\CommentSearch */ | |
| 8 | +/* @var $form yii\widgets\ActiveForm */ | |
| 9 | +?> | |
| 10 | + | |
| 11 | +<div class="comment-search"> | |
| 12 | + | |
| 13 | + <?php $form = ActiveForm::begin([ | |
| 14 | + 'action' => ['index'], | |
| 15 | + 'method' => 'get', | |
| 16 | + ]); ?> | |
| 17 | + | |
| 18 | + <?= $form->field($model, 'comment_id') ?> | |
| 19 | + | |
| 20 | + <?= $form->field($model, 'text') ?> | |
| 21 | + | |
| 22 | + <?= $form->field($model, 'user_id') ?> | |
| 23 | + | |
| 24 | + <?= $form->field($model, 'user_name') ?> | |
| 25 | + | |
| 26 | + <?= $form->field($model, 'user_email') ?> | |
| 27 | + | |
| 28 | + <?php // echo $form->field($model, 'comment_pid') ?> | |
| 29 | + | |
| 30 | + <?php // echo $form->field($model, 'status') ?> | |
| 31 | + | |
| 32 | + <?php // echo $form->field($model, 'date_add') ?> | |
| 33 | + | |
| 34 | + <?php // echo $form->field($model, 'date_update') ?> | |
| 35 | + | |
| 36 | + <?php // echo $form->field($model, 'date_delete') ?> | |
| 37 | + | |
| 38 | + <?php // echo $form->field($model, 'model') ?> | |
| 39 | + | |
| 40 | + <?php // echo $form->field($model, 'model_id') ?> | |
| 41 | + | |
| 42 | + <div class="form-group"> | |
| 43 | + <?= Html::submitButton('Search', ['class' => 'btn btn-primary']) ?> | |
| 44 | + <?= Html::resetButton('Reset', ['class' => 'btn btn-default']) ?> | |
| 45 | + </div> | |
| 46 | + | |
| 47 | + <?php ActiveForm::end(); ?> | |
| 48 | + | |
| 49 | +</div> | ... | ... |
| 1 | +++ a/backend/views/comment/index.php | |
| 1 | +<?php | |
| 2 | + | |
| 3 | + use common\modules\comment\models\Comment; | |
| 4 | + use yii\helpers\Html; | |
| 5 | + use yii\grid\GridView; | |
| 6 | + use yii\helpers\Url; | |
| 7 | + | |
| 8 | + /* @var $this yii\web\View */ | |
| 9 | + /* @var $dataProvider yii\data\ActiveDataProvider */ | |
| 10 | + | |
| 11 | + $this->title = 'Комменты'; | |
| 12 | + $this->params[ 'breadcrumbs' ][] = $this->title; | |
| 13 | +?> | |
| 14 | +<div class="comment-index"> | |
| 15 | + | |
| 16 | + <h1><?= Html::encode($this->title) ?></h1> | |
| 17 | + | |
| 18 | + <?= GridView::widget([ | |
| 19 | + 'dataProvider' => $dataProvider, | |
| 20 | + 'columns' => [ | |
| 21 | + [ | |
| 22 | + 'class' => 'yii\grid\ActionColumn', | |
| 23 | + 'template' => '{approve} {update} {delete}', | |
| 24 | + 'buttons' => [ | |
| 25 | + 'approve' => function($url, $model, $key) { | |
| 26 | + /** | |
| 27 | + * @var Comment $model | |
| 28 | + */ | |
| 29 | + $options = array_merge([ | |
| 30 | + 'title' => "Подтвердить", | |
| 31 | + 'aria-label' => "Подтвердить", | |
| 32 | + 'data-confirm' => "Комментарий и оценка отобразится на публичной части сайта, подтвердить?", | |
| 33 | + 'data-method' => 'post', | |
| 34 | + 'data-pjax' => '0', | |
| 35 | + ]); | |
| 36 | + $glyphicon = 'glyphicon-ok'; | |
| 37 | + if($model->status == $model::STATUS_ACTIVE) { | |
| 38 | + $url = Url::to(['comment/disapprove', 'id' => $model->comment_id]); | |
| 39 | + $glyphicon = 'glyphicon-remove'; | |
| 40 | + } | |
| 41 | + return Html::a('<span class="glyphicon '.$glyphicon.'"></span>', $url, $options); | |
| 42 | + } | |
| 43 | + ] | |
| 44 | + ], | |
| 45 | + 'comment_id', | |
| 46 | + [ | |
| 47 | + 'attribute' => 'rating.value', | |
| 48 | + 'label' => 'Оценка', | |
| 49 | + ], | |
| 50 | + 'text:ntext', | |
| 51 | + [ | |
| 52 | + 'content' => function($model) { | |
| 53 | + /** | |
| 54 | + * @var Comment $model | |
| 55 | + */ | |
| 56 | + if(!empty( $model->user )) { | |
| 57 | + return $model->user->username . " (ID: " . $model->user->id . ")"; | |
| 58 | + } else { | |
| 59 | + return $model->user_name . " (Гость: " . $model->user_email . ")"; | |
| 60 | + } | |
| 61 | + }, | |
| 62 | + 'label' => 'Пользователь', | |
| 63 | + ], | |
| 64 | + [ | |
| 65 | + 'attribute' => 'status', | |
| 66 | + 'value' => function($model) { | |
| 67 | + /** | |
| 68 | + * @var Comment $model | |
| 69 | + */ | |
| 70 | + $status = ''; | |
| 71 | + switch($model->status) { | |
| 72 | + case Comment::STATUS_ACTIVE: | |
| 73 | + $status = 'Активный'; | |
| 74 | + break; | |
| 75 | + case Comment::STATUS_HIDDEN: | |
| 76 | + $status = 'Новый'; | |
| 77 | + break; | |
| 78 | + case Comment::STATUS_DELETED: | |
| 79 | + $status = 'Удаленный'; | |
| 80 | + break; | |
| 81 | + default: | |
| 82 | + $status = 'Неизвестно'; | |
| 83 | + }; | |
| 84 | + return $status; | |
| 85 | + }, | |
| 86 | + ], | |
| 87 | + 'date_add', | |
| 88 | + [ | |
| 89 | + 'attribute' => 'model', | |
| 90 | + 'value' => function($model) { | |
| 91 | + /** | |
| 92 | + * @var Comment $model | |
| 93 | + */ | |
| 94 | + return $model->model . " (ID: " . $model->model_id . ")"; | |
| 95 | + }, | |
| 96 | + ], | |
| 97 | + ], | |
| 98 | + ]); ?> | |
| 99 | +</div> | ... | ... |
| 1 | +++ a/backend/views/comment/update.php | |
| 1 | +<?php | |
| 2 | + | |
| 3 | +use yii\helpers\Html; | |
| 4 | + | |
| 5 | +/* @var $this yii\web\View */ | |
| 6 | +/* @var $model common\modules\comment\models\Comment */ | |
| 7 | + | |
| 8 | +$this->title = 'Редактировать коммент: ' . $model->comment_id; | |
| 9 | +$this->params['breadcrumbs'][] = ['label' => 'Комментарии', 'url' => ['index']]; | |
| 10 | +$this->params['breadcrumbs'][] = ['label' => $model->comment_id, 'url' => ['view', 'id' => $model->comment_id]]; | |
| 11 | +$this->params['breadcrumbs'][] = 'Редактировать'; | |
| 12 | +?> | |
| 13 | +<div class="comment-update"> | |
| 14 | + | |
| 15 | + <h1><?= Html::encode($this->title) ?></h1> | |
| 16 | + | |
| 17 | + <?= $this->render('_form', [ | |
| 18 | + 'model' => $model, | |
| 19 | + ]) ?> | |
| 20 | + | |
| 21 | +</div> | ... | ... |
| 1 | +++ a/backend/views/comment/view.php | |
| 1 | +<?php | |
| 2 | + | |
| 3 | +use yii\helpers\Html; | |
| 4 | +use yii\widgets\DetailView; | |
| 5 | + | |
| 6 | +/* @var $this yii\web\View */ | |
| 7 | +/* @var $model common\modules\comment\models\Comment */ | |
| 8 | + | |
| 9 | +$this->title = $model->comment_id; | |
| 10 | +$this->params['breadcrumbs'][] = ['label' => 'Comments', 'url' => ['index']]; | |
| 11 | +$this->params['breadcrumbs'][] = $this->title; | |
| 12 | +?> | |
| 13 | +<div class="comment-view"> | |
| 14 | + | |
| 15 | + <h1><?= Html::encode($this->title) ?></h1> | |
| 16 | + | |
| 17 | + <p> | |
| 18 | + <?= Html::a('Update', ['update', 'id' => $model->comment_id], ['class' => 'btn btn-primary']) ?> | |
| 19 | + <?= Html::a('Delete', ['delete', 'id' => $model->comment_id], [ | |
| 20 | + 'class' => 'btn btn-danger', | |
| 21 | + 'data' => [ | |
| 22 | + 'confirm' => 'Are you sure you want to delete this item?', | |
| 23 | + 'method' => 'post', | |
| 24 | + ], | |
| 25 | + ]) ?> | |
| 26 | + </p> | |
| 27 | + | |
| 28 | + <?= DetailView::widget([ | |
| 29 | + 'model' => $model, | |
| 30 | + 'attributes' => [ | |
| 31 | + 'comment_id', | |
| 32 | + 'text:ntext', | |
| 33 | + 'user_id', | |
| 34 | + 'user_name', | |
| 35 | + 'user_email:email', | |
| 36 | + 'comment_pid', | |
| 37 | + 'status', | |
| 38 | + 'date_add', | |
| 39 | + 'date_update', | |
| 40 | + 'date_delete', | |
| 41 | + 'model', | |
| 42 | + 'model_id', | |
| 43 | + ], | |
| 44 | + ]) ?> | |
| 45 | + | |
| 46 | +</div> | ... | ... |
| 1 | +++ a/backend/views/customer/_form.php | |
| 1 | +<?php | |
| 2 | + | |
| 3 | +use yii\helpers\Html; | |
| 4 | +use yii\widgets\ActiveForm; | |
| 5 | + | |
| 6 | +/* @var $this yii\web\View */ | |
| 7 | +/* @var $model common\models\Customer */ | |
| 8 | +/* @var $form yii\widgets\ActiveForm */ | |
| 9 | +?> | |
| 10 | + | |
| 11 | +<div class="customer-form"> | |
| 12 | + | |
| 13 | + <?php $form = ActiveForm::begin(); ?> | |
| 14 | + | |
| 15 | + <?= $form->field($model, 'id')->textInput() ?> | |
| 16 | + | |
| 17 | + <?= $form->field($model, 'username')->textInput(['maxlength' => true]) ?> | |
| 18 | + | |
| 19 | + <?= $form->field($model, 'password')->passwordInput(['maxlength' => true]) ?> | |
| 20 | + | |
| 21 | + <?= $form->field($model, 'name')->textInput(['maxlength' => true]) ?> | |
| 22 | + | |
| 23 | + <?= $form->field($model, 'surname')->textInput(['maxlength' => true]) ?> | |
| 24 | + | |
| 25 | + <?= $form->field($model, 'phone')->textInput(['maxlength' => true]) ?> | |
| 26 | + | |
| 27 | + <?= $form->field($model, 'date_time')->textInput() ?> | |
| 28 | + | |
| 29 | + <?= $form->field($model, 'sex')->textInput(['maxlength' => true]) ?> | |
| 30 | + | |
| 31 | + <?= $form->field($model, 'birth_day')->textInput() ?> | |
| 32 | + | |
| 33 | + <?= $form->field($model, 'birth_month')->textInput() ?> | |
| 34 | + | |
| 35 | + <?= $form->field($model, 'birth_year')->textInput() ?> | |
| 36 | + | |
| 37 | + <?= $form->field($model, 'body')->textarea(['rows' => 6]) ?> | |
| 38 | + | |
| 39 | + <?= $form->field($model, 'group_id')->textInput() ?> | |
| 40 | + | |
| 41 | + <div class="form-group"> | |
| 42 | + <?= Html::submitButton($model->isNewRecord ? 'Create' : 'Update', ['class' => $model->isNewRecord ? 'btn btn-success' : 'btn btn-primary']) ?> | |
| 43 | + </div> | |
| 44 | + | |
| 45 | + <?php ActiveForm::end(); ?> | |
| 46 | + | |
| 47 | +</div> | ... | ... |
| 1 | +++ a/backend/views/customer/_search.php | |
| 1 | +<?php | |
| 2 | + | |
| 3 | +use yii\helpers\Html; | |
| 4 | +use yii\widgets\ActiveForm; | |
| 5 | + | |
| 6 | +/* @var $this yii\web\View */ | |
| 7 | +/* @var $model common\models\CustomerSearch */ | |
| 8 | +/* @var $form yii\widgets\ActiveForm */ | |
| 9 | +?> | |
| 10 | + | |
| 11 | +<div class="customer-search"> | |
| 12 | + | |
| 13 | + <?php $form = ActiveForm::begin([ | |
| 14 | + 'action' => ['index'], | |
| 15 | + 'method' => 'get', | |
| 16 | + ]); ?> | |
| 17 | + | |
| 18 | + <?= $form->field($model, 'id') ?> | |
| 19 | + | |
| 20 | + <?= $form->field($model, 'username') ?> | |
| 21 | + | |
| 22 | + <?= $form->field($model, 'password') ?> | |
| 23 | + | |
| 24 | + <?= $form->field($model, 'name') ?> | |
| 25 | + | |
| 26 | + <?= $form->field($model, 'surname') ?> | |
| 27 | + | |
| 28 | + <?php // echo $form->field($model, 'phone') ?> | |
| 29 | + | |
| 30 | + <?php // echo $form->field($model, 'date_time') ?> | |
| 31 | + | |
| 32 | + <?php // echo $form->field($model, 'sex') ?> | |
| 33 | + | |
| 34 | + <?php // echo $form->field($model, 'birth_day') ?> | |
| 35 | + | |
| 36 | + <?php // echo $form->field($model, 'birth_month') ?> | |
| 37 | + | |
| 38 | + <?php // echo $form->field($model, 'birth_year') ?> | |
| 39 | + | |
| 40 | + <?php // echo $form->field($model, 'body') ?> | |
| 41 | + | |
| 42 | + <?php // echo $form->field($model, 'group_id') ?> | |
| 43 | + | |
| 44 | + <div class="form-group"> | |
| 45 | + <?= Html::submitButton('Search', ['class' => 'btn btn-primary']) ?> | |
| 46 | + <?= Html::resetButton('Reset', ['class' => 'btn btn-default']) ?> | |
| 47 | + </div> | |
| 48 | + | |
| 49 | + <?php ActiveForm::end(); ?> | |
| 50 | + | |
| 51 | +</div> | ... | ... |
| 1 | +++ a/backend/views/customer/create.php | |
| 1 | +<?php | |
| 2 | + | |
| 3 | +use yii\helpers\Html; | |
| 4 | + | |
| 5 | + | |
| 6 | +/* @var $this yii\web\View */ | |
| 7 | +/* @var $model common\models\Customer */ | |
| 8 | + | |
| 9 | +$this->title = 'Create Customer'; | |
| 10 | +$this->params['breadcrumbs'][] = ['label' => 'Customers', 'url' => ['index']]; | |
| 11 | +$this->params['breadcrumbs'][] = $this->title; | |
| 12 | +?> | |
| 13 | +<div class="customer-create"> | |
| 14 | + | |
| 15 | + <h1><?= Html::encode($this->title) ?></h1> | |
| 16 | + | |
| 17 | + <?= $this->render('_form', [ | |
| 18 | + 'model' => $model, | |
| 19 | + ]) ?> | |
| 20 | + | |
| 21 | +</div> | ... | ... |
| 1 | +++ a/backend/views/customer/index.php | |
| 1 | +<?php | |
| 2 | + | |
| 3 | +use yii\helpers\Html; | |
| 4 | +use yii\grid\GridView; | |
| 5 | + | |
| 6 | +/* @var $this yii\web\View */ | |
| 7 | +/* @var $searchModel common\models\CustomerSearch */ | |
| 8 | +/* @var $dataProvider yii\data\ActiveDataProvider */ | |
| 9 | + | |
| 10 | +$this->title = 'Customers'; | |
| 11 | +$this->params['breadcrumbs'][] = $this->title; | |
| 12 | +?> | |
| 13 | +<div class="customer-index"> | |
| 14 | + | |
| 15 | + <h1><?= Html::encode($this->title) ?></h1> | |
| 16 | + <?php // echo $this->render('_search', ['model' => $searchModel]); ?> | |
| 17 | + | |
| 18 | + <p> | |
| 19 | + <?= Html::a('Create Customer', ['create'], ['class' => 'btn btn-success']) ?> | |
| 20 | + </p> | |
| 21 | + <?= GridView::widget([ | |
| 22 | + 'dataProvider' => $dataProvider, | |
| 23 | + 'filterModel' => $searchModel, | |
| 24 | + 'columns' => [ | |
| 25 | + ['class' => 'yii\grid\SerialColumn'], | |
| 26 | + | |
| 27 | + 'id', | |
| 28 | + 'username', | |
| 29 | + 'password', | |
| 30 | + 'name', | |
| 31 | + 'surname', | |
| 32 | + // 'phone', | |
| 33 | + // 'date_time', | |
| 34 | + // 'sex', | |
| 35 | + // 'birth_day', | |
| 36 | + // 'birth_month', | |
| 37 | + // 'birth_year', | |
| 38 | + // 'body:ntext', | |
| 39 | + // 'group_id', | |
| 40 | + | |
| 41 | + ['class' => 'yii\grid\ActionColumn'], | |
| 42 | + ], | |
| 43 | + ]); ?> | |
| 44 | +</div> | ... | ... |
| 1 | +++ a/backend/views/customer/update.php | |
| 1 | +<?php | |
| 2 | + | |
| 3 | +use yii\helpers\Html; | |
| 4 | + | |
| 5 | +/* @var $this yii\web\View */ | |
| 6 | +/* @var $model common\models\Customer */ | |
| 7 | + | |
| 8 | +$this->title = 'Update Customer: ' . $model->name; | |
| 9 | +$this->params['breadcrumbs'][] = ['label' => 'Customers', 'url' => ['index']]; | |
| 10 | +$this->params['breadcrumbs'][] = ['label' => $model->name, 'url' => ['view', 'id' => $model->id]]; | |
| 11 | +$this->params['breadcrumbs'][] = 'Update'; | |
| 12 | +?> | |
| 13 | +<div class="customer-update"> | |
| 14 | + | |
| 15 | + <h1><?= Html::encode($this->title) ?></h1> | |
| 16 | + | |
| 17 | + <?= $this->render('_form', [ | |
| 18 | + 'model' => $model, | |
| 19 | + ]) ?> | |
| 20 | + | |
| 21 | +</div> | ... | ... |
| 1 | +++ a/backend/views/customer/view.php | |
| 1 | +<?php | |
| 2 | + | |
| 3 | +use yii\helpers\Html; | |
| 4 | +use yii\widgets\DetailView; | |
| 5 | + | |
| 6 | +/* @var $this yii\web\View */ | |
| 7 | +/* @var $model common\models\Customer */ | |
| 8 | + | |
| 9 | +$this->title = $model->name; | |
| 10 | +$this->params['breadcrumbs'][] = ['label' => 'Customers', 'url' => ['index']]; | |
| 11 | +$this->params['breadcrumbs'][] = $this->title; | |
| 12 | +?> | |
| 13 | +<div class="customer-view"> | |
| 14 | + | |
| 15 | + <h1><?= Html::encode($this->title) ?></h1> | |
| 16 | + | |
| 17 | + <p> | |
| 18 | + <?= Html::a('Update', ['update', 'id' => $model->id], ['class' => 'btn btn-primary']) ?> | |
| 19 | + <?= Html::a('Delete', ['delete', 'id' => $model->id], [ | |
| 20 | + 'class' => 'btn btn-danger', | |
| 21 | + 'data' => [ | |
| 22 | + 'confirm' => 'Are you sure you want to delete this item?', | |
| 23 | + 'method' => 'post', | |
| 24 | + ], | |
| 25 | + ]) ?> | |
| 26 | + </p> | |
| 27 | + | |
| 28 | + <?= DetailView::widget([ | |
| 29 | + 'model' => $model, | |
| 30 | + 'attributes' => [ | |
| 31 | + 'id', | |
| 32 | + 'username', | |
| 33 | + 'password', | |
| 34 | + 'name', | |
| 35 | + 'surname', | |
| 36 | + 'phone', | |
| 37 | + 'date_time', | |
| 38 | + 'sex', | |
| 39 | + 'birth_day', | |
| 40 | + 'birth_month', | |
| 41 | + 'birth_year', | |
| 42 | + 'body:ntext', | |
| 43 | + 'group_id', | |
| 44 | + ], | |
| 45 | + ]) ?> | |
| 46 | + | |
| 47 | +</div> | ... | ... |
| 1 | +++ a/backend/views/event/_form.php | |
| 1 | +<?php | |
| 2 | + | |
| 3 | +use kartik\date\DatePicker; | |
| 4 | +use yii\helpers\Html; | |
| 5 | +use yii\widgets\ActiveForm; | |
| 6 | +use mihaildev\ckeditor\CKEditor; | |
| 7 | +use mihaildev\elfinder\ElFinder; | |
| 8 | +/* @var $this yii\web\View */ | |
| 9 | +/* @var $model common\models\Event */ | |
| 10 | +/* @var $form yii\widgets\ActiveForm */ | |
| 11 | +?> | |
| 12 | + | |
| 13 | +<div class="event-form"> | |
| 14 | + | |
| 15 | + <?php $form = ActiveForm::begin([ | |
| 16 | + 'enableClientValidation' => false, | |
| 17 | + 'options' => ['enctype' => 'multipart/form-data'] | |
| 18 | + ]); ?> | |
| 19 | + | |
| 20 | + <?= $form->field($model, 'name')->textInput(['maxlength' => true]) ?> | |
| 21 | + | |
| 22 | + <?= $form->field($model, 'alias')->textInput(['maxlength' => true]) ?> | |
| 23 | + | |
| 24 | + <?= $form->field($model, 'body')->widget(CKEditor::className(), | |
| 25 | + [ | |
| 26 | + 'editorOptions' => ElFinder::ckeditorOptions('elfinder',[ | |
| 27 | + 'preset' => 'full', //разработанны стандартные настройки basic, standard, full данную возможность не обязательно использовать | |
| 28 | + 'inline' => false, //по умолчанию false]), | |
| 29 | + 'filebrowserUploadUrl'=>Yii::$app->getUrlManager()->createUrl('file/uploader/images-upload') | |
| 30 | + ] | |
| 31 | + ) | |
| 32 | + ]) ?> | |
| 33 | + | |
| 34 | + | |
| 35 | + <?= $form->field($model, 'end_at') | |
| 36 | + ->widget(DatePicker::className(), [ | |
| 37 | + 'pluginOptions' => [ | |
| 38 | + 'format' => 'dd-M-yyyy', | |
| 39 | + 'todayHighlight' => true | |
| 40 | + ]]) ?> | |
| 41 | + | |
| 42 | + | |
| 43 | + <?= $form->field($model, 'imageUpload')->widget(\kartik\file\FileInput::classname(), [ | |
| 44 | + 'language' => 'ru', | |
| 45 | + 'options' => [ | |
| 46 | + 'accept' => 'image/*', | |
| 47 | + 'multiple' => false, | |
| 48 | + ], | |
| 49 | + 'pluginOptions' => [ | |
| 50 | + 'allowedFileExtensions' => ['jpg', 'gif', 'png'], | |
| 51 | + 'initialPreview' => !empty($model->imageUrl) ? \common\components\artboximage\ArtboxImageHelper::getImage($model->imageUrl, 'list') : '', | |
| 52 | + 'overwriteInitial' => true, | |
| 53 | + 'showRemove' => false, | |
| 54 | + 'showUpload' => false, | |
| 55 | + 'previewFileType' => 'image', | |
| 56 | + ], | |
| 57 | + ]); ?> | |
| 58 | + | |
| 59 | + <?= $form->field($model, 'meta_title')->textInput(['maxlength' => true]) ?> | |
| 60 | + | |
| 61 | + <?= $form->field($model, 'description')->textInput(['maxlength' => true]) ?> | |
| 62 | + | |
| 63 | + <?= $form->field($model, 'h1')->textInput(['maxlength' => true]) ?> | |
| 64 | + | |
| 65 | + <?= $form->field($model, 'seo_text')->textarea(['rows' => 6]) ?> | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + <div class="form-group"> | |
| 70 | + <?= Html::submitButton($model->isNewRecord ? Yii::t('app', 'Create') : Yii::t('app', 'Update'), ['class' => $model->isNewRecord ? 'btn btn-success' : 'btn btn-primary']) ?> | |
| 71 | + </div> | |
| 72 | + | |
| 73 | + <?php ActiveForm::end(); ?> | |
| 74 | + | |
| 75 | +</div> | ... | ... |
| 1 | +++ a/backend/views/event/_search.php | |
| 1 | +<?php | |
| 2 | + | |
| 3 | +use yii\helpers\Html; | |
| 4 | +use yii\widgets\ActiveForm; | |
| 5 | + | |
| 6 | +/* @var $this yii\web\View */ | |
| 7 | +/* @var $model common\models\EventSearch */ | |
| 8 | +/* @var $form yii\widgets\ActiveForm */ | |
| 9 | +?> | |
| 10 | + | |
| 11 | +<div class="event-search"> | |
| 12 | + | |
| 13 | + <?php $form = ActiveForm::begin([ | |
| 14 | + 'action' => ['index'], | |
| 15 | + 'method' => 'get', | |
| 16 | + ]); ?> | |
| 17 | + | |
| 18 | + <?= $form->field($model, 'event_id') ?> | |
| 19 | + | |
| 20 | + <?= $form->field($model, 'name') ?> | |
| 21 | + | |
| 22 | + <?= $form->field($model, 'alias') ?> | |
| 23 | + | |
| 24 | + <?= $form->field($model, 'body') ?> | |
| 25 | + | |
| 26 | + <?= $form->field($model, 'image') ?> | |
| 27 | + | |
| 28 | + <?php // echo $form->field($model, 'meta_title') ?> | |
| 29 | + | |
| 30 | + <?php // echo $form->field($model, 'description') ?> | |
| 31 | + | |
| 32 | + <?php // echo $form->field($model, 'h1') ?> | |
| 33 | + | |
| 34 | + <?php // echo $form->field($model, 'seo_text') ?> | |
| 35 | + | |
| 36 | + <?php // echo $form->field($model, 'created_at') ?> | |
| 37 | + | |
| 38 | + <?php // echo $form->field($model, 'updated_at') ?> | |
| 39 | + | |
| 40 | + <?php // echo $form->field($model, 'end_at') ?> | |
| 41 | + | |
| 42 | + <div class="form-group"> | |
| 43 | + <?= Html::submitButton(Yii::t('app', 'Search'), ['class' => 'btn btn-primary']) ?> | |
| 44 | + <?= Html::resetButton(Yii::t('app', 'Reset'), ['class' => 'btn btn-default']) ?> | |
| 45 | + </div> | |
| 46 | + | |
| 47 | + <?php ActiveForm::end(); ?> | |
| 48 | + | |
| 49 | +</div> | ... | ... |
| 1 | +++ a/backend/views/event/create.php | |
| 1 | +<?php | |
| 2 | + | |
| 3 | +use yii\helpers\Html; | |
| 4 | + | |
| 5 | + | |
| 6 | +/* @var $this yii\web\View */ | |
| 7 | +/* @var $model common\models\Event */ | |
| 8 | + | |
| 9 | +$this->title = Yii::t('app', 'Create Event'); | |
| 10 | +$this->params['breadcrumbs'][] = ['label' => Yii::t('app', 'Events'), 'url' => ['index']]; | |
| 11 | +$this->params['breadcrumbs'][] = $this->title; | |
| 12 | +?> | |
| 13 | +<div class="event-create"> | |
| 14 | + | |
| 15 | + <h1><?= Html::encode($this->title) ?></h1> | |
| 16 | + | |
| 17 | + <?= $this->render('_form', [ | |
| 18 | + 'model' => $model, | |
| 19 | + ]) ?> | |
| 20 | + | |
| 21 | +</div> | ... | ... |
| 1 | +++ a/backend/views/event/index.php | |
| 1 | +<?php | |
| 2 | + | |
| 3 | +use yii\helpers\Html; | |
| 4 | +use yii\grid\GridView; | |
| 5 | + | |
| 6 | +/* @var $this yii\web\View */ | |
| 7 | +/* @var $searchModel common\models\EventSearch */ | |
| 8 | +/* @var $dataProvider yii\data\ActiveDataProvider */ | |
| 9 | + | |
| 10 | +$this->title = Yii::t('app', 'Events'); | |
| 11 | +$this->params['breadcrumbs'][] = $this->title; | |
| 12 | +?> | |
| 13 | +<div class="event-index"> | |
| 14 | + | |
| 15 | + <h1><?= Html::encode($this->title) ?></h1> | |
| 16 | + <?php // echo $this->render('_search', ['model' => $searchModel]); ?> | |
| 17 | + | |
| 18 | + <p> | |
| 19 | + <?= Html::a(Yii::t('app', 'Create Event'), ['create'], ['class' => 'btn btn-success']) ?> | |
| 20 | + </p> | |
| 21 | + <?= GridView::widget([ | |
| 22 | + 'dataProvider' => $dataProvider, | |
| 23 | + 'filterModel' => $searchModel, | |
| 24 | + 'columns' => [ | |
| 25 | + ['class' => 'yii\grid\SerialColumn'], | |
| 26 | + | |
| 27 | + 'event_id', | |
| 28 | + 'name', | |
| 29 | + 'alias', | |
| 30 | + [ | |
| 31 | + 'format' => 'image', | |
| 32 | + 'attribute'=>'image', | |
| 33 | + ], | |
| 34 | + // 'meta_title', | |
| 35 | + // 'description', | |
| 36 | + // 'h1', | |
| 37 | + // 'seo_text:ntext', | |
| 38 | + // 'created_at', | |
| 39 | + // 'updated_at', | |
| 40 | + // 'end_at', | |
| 41 | + | |
| 42 | + ['class' => 'yii\grid\ActionColumn'], | |
| 43 | + ], | |
| 44 | + ]); ?> | |
| 45 | +</div> | ... | ... |
| 1 | +++ a/backend/views/event/update.php | |
| 1 | +<?php | |
| 2 | + | |
| 3 | +use yii\helpers\Html; | |
| 4 | + | |
| 5 | +/* @var $this yii\web\View */ | |
| 6 | +/* @var $model common\models\Event */ | |
| 7 | + | |
| 8 | +$this->title = Yii::t('app', 'Update {modelClass}: ', [ | |
| 9 | + 'modelClass' => 'Event', | |
| 10 | +]) . $model->name; | |
| 11 | +$this->params['breadcrumbs'][] = ['label' => Yii::t('app', 'Events'), 'url' => ['index']]; | |
| 12 | +$this->params['breadcrumbs'][] = ['label' => $model->name, 'url' => ['view', 'id' => $model->event_id]]; | |
| 13 | +$this->params['breadcrumbs'][] = Yii::t('app', 'Update'); | |
| 14 | +?> | |
| 15 | +<div class="event-update"> | |
| 16 | + | |
| 17 | + <h1><?= Html::encode($this->title) ?></h1> | |
| 18 | + | |
| 19 | + <?= $this->render('_form', [ | |
| 20 | + 'model' => $model, | |
| 21 | + ]) ?> | |
| 22 | + | |
| 23 | +</div> | ... | ... |
| 1 | +++ a/backend/views/event/view.php | |
| 1 | +<?php | |
| 2 | + | |
| 3 | +use yii\helpers\Html; | |
| 4 | +use yii\widgets\DetailView; | |
| 5 | + | |
| 6 | +/* @var $this yii\web\View */ | |
| 7 | +/* @var $model common\models\Event */ | |
| 8 | + | |
| 9 | +$this->title = $model->name; | |
| 10 | +$this->params['breadcrumbs'][] = ['label' => Yii::t('app', 'Events'), 'url' => ['index']]; | |
| 11 | +$this->params['breadcrumbs'][] = $this->title; | |
| 12 | +?> | |
| 13 | +<div class="event-view"> | |
| 14 | + | |
| 15 | + <h1><?= Html::encode($this->title) ?></h1> | |
| 16 | + | |
| 17 | + <p> | |
| 18 | + <?= Html::a(Yii::t('app', 'Update'), ['update', 'id' => $model->event_id], ['class' => 'btn btn-primary']) ?> | |
| 19 | + <?= Html::a(Yii::t('app', 'Delete'), ['delete', 'id' => $model->event_id], [ | |
| 20 | + 'class' => 'btn btn-danger', | |
| 21 | + 'data' => [ | |
| 22 | + 'confirm' => Yii::t('app', 'Are you sure you want to delete this item?'), | |
| 23 | + 'method' => 'post', | |
| 24 | + ], | |
| 25 | + ]) ?> | |
| 26 | + </p> | |
| 27 | + | |
| 28 | + <?= DetailView::widget([ | |
| 29 | + 'model' => $model, | |
| 30 | + 'attributes' => [ | |
| 31 | + 'event_id', | |
| 32 | + 'name', | |
| 33 | + 'alias', | |
| 34 | + 'meta_title', | |
| 35 | + 'description', | |
| 36 | + 'h1', | |
| 37 | + ], | |
| 38 | + ]) ?> | |
| 39 | + | |
| 40 | +</div> | ... | ... |
| 1 | +++ a/backend/views/layouts/admin.php | |
| 1 | +<?php | |
| 2 | +use yii\widgets\Breadcrumbs; | |
| 3 | +use common\widgets\Alert; | |
| 4 | + | |
| 5 | +/* @var $content string */ | |
| 6 | +$this->beginContent('@app/views/layouts/main.php'); | |
| 7 | +?> | |
| 8 | + | |
| 9 | + <?= $this->render('header') ?> | |
| 10 | + <!-- Left side column. contains the logo and sidebar --> | |
| 11 | + <?= $this->render('main-sidebar') ?> | |
| 12 | + | |
| 13 | + <!-- Content Wrapper. Contains page content --> | |
| 14 | + <div class="content-wrapper"> | |
| 15 | + <section class="content"> | |
| 16 | + <?= Breadcrumbs::widget([ | |
| 17 | + 'links' => isset($this->params['breadcrumbs']) ? $this->params['breadcrumbs'] : [], | |
| 18 | + ]) ?> | |
| 19 | + <?= Alert::widget() ?> | |
| 20 | + | |
| 21 | + <?= $content; ?> | |
| 22 | + </section> | |
| 23 | + </div><!-- /.content-wrapper --> | |
| 24 | + <?= $this->render('footer') ?> | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + <!-- Control Sidebar --> | |
| 29 | + <?= $this->render('control-sidebar') ?> | |
| 30 | + <!-- /.control-sidebar --> | |
| 31 | + <!-- Add the sidebar's background. This div must be placed | |
| 32 | + immediately after the control sidebar --> | |
| 33 | + <div class="control-sidebar-bg"></div> | |
| 34 | +<?php $this->endContent() ?> | |
| 0 | 35 | \ No newline at end of file | ... | ... |
| 1 | +++ a/backend/views/layouts/control-sidebar.php | |
| 1 | +<aside class="control-sidebar control-sidebar-dark"> | |
| 2 | + <!-- Create the tabs --> | |
| 3 | + <ul class="nav nav-tabs nav-justified control-sidebar-tabs"> | |
| 4 | + <li><a href="#control-sidebar-home-tab" data-toggle="tab"><i class="fa fa-home"></i></a></li> | |
| 5 | + <li><a href="#control-sidebar-settings-tab" data-toggle="tab"><i class="fa fa-gears"></i></a></li> | |
| 6 | + </ul> | |
| 7 | + <!-- Tab panes --> | |
| 8 | + <div class="tab-content"> | |
| 9 | + <!-- Home tab content --> | |
| 10 | + <div class="tab-pane" id="control-sidebar-home-tab"> | |
| 11 | + <h3 class="control-sidebar-heading">Recent Activity</h3> | |
| 12 | + <ul class="control-sidebar-menu"> | |
| 13 | + <li> | |
| 14 | + <a href="javascript::;"> | |
| 15 | + <i class="menu-icon fa fa-birthday-cake bg-red"></i> | |
| 16 | + | |
| 17 | + <div class="menu-info"> | |
| 18 | + <h4 class="control-sidebar-subheading">Langdon's Birthday</h4> | |
| 19 | + | |
| 20 | + <p>Will be 23 on April 24th</p> | |
| 21 | + </div> | |
| 22 | + </a> | |
| 23 | + </li> | |
| 24 | + <li> | |
| 25 | + <a href="javascript::;"> | |
| 26 | + <i class="menu-icon fa fa-user bg-yellow"></i> | |
| 27 | + | |
| 28 | + <div class="menu-info"> | |
| 29 | + <h4 class="control-sidebar-subheading">Frodo Updated His Profile</h4> | |
| 30 | + | |
| 31 | + <p>New phone +1(800)555-1234</p> | |
| 32 | + </div> | |
| 33 | + </a> | |
| 34 | + </li> | |
| 35 | + <li> | |
| 36 | + <a href="javascript::;"> | |
| 37 | + <i class="menu-icon fa fa-envelope-o bg-light-blue"></i> | |
| 38 | + | |
| 39 | + <div class="menu-info"> | |
| 40 | + <h4 class="control-sidebar-subheading">Nora Joined Mailing List</h4> | |
| 41 | + | |
| 42 | + <p>nora@example.com</p> | |
| 43 | + </div> | |
| 44 | + </a> | |
| 45 | + </li> | |
| 46 | + <li> | |
| 47 | + <a href="javascript::;"> | |
| 48 | + <i class="menu-icon fa fa-file-code-o bg-green"></i> | |
| 49 | + | |
| 50 | + <div class="menu-info"> | |
| 51 | + <h4 class="control-sidebar-subheading">Cron Job 254 Executed</h4> | |
| 52 | + | |
| 53 | + <p>Execution time 5 seconds</p> | |
| 54 | + </div> | |
| 55 | + </a> | |
| 56 | + </li> | |
| 57 | + </ul> | |
| 58 | + <!-- /.control-sidebar-menu --> | |
| 59 | + | |
| 60 | + <h3 class="control-sidebar-heading">Tasks Progress</h3> | |
| 61 | + <ul class="control-sidebar-menu"> | |
| 62 | + <li> | |
| 63 | + <a href="javascript::;"> | |
| 64 | + <h4 class="control-sidebar-subheading"> | |
| 65 | + Custom Template Design | |
| 66 | + <span class="label label-danger pull-right">70%</span> | |
| 67 | + </h4> | |
| 68 | + | |
| 69 | + <div class="progress progress-xxs"> | |
| 70 | + <div class="progress-bar progress-bar-danger" style="width: 70%"></div> | |
| 71 | + </div> | |
| 72 | + </a> | |
| 73 | + </li> | |
| 74 | + <li> | |
| 75 | + <a href="javascript::;"> | |
| 76 | + <h4 class="control-sidebar-subheading"> | |
| 77 | + Update Resume | |
| 78 | + <span class="label label-success pull-right">95%</span> | |
| 79 | + </h4> | |
| 80 | + | |
| 81 | + <div class="progress progress-xxs"> | |
| 82 | + <div class="progress-bar progress-bar-success" style="width: 95%"></div> | |
| 83 | + </div> | |
| 84 | + </a> | |
| 85 | + </li> | |
| 86 | + <li> | |
| 87 | + <a href="javascript::;"> | |
| 88 | + <h4 class="control-sidebar-subheading"> | |
| 89 | + Laravel Integration | |
| 90 | + <span class="label label-warning pull-right">50%</span> | |
| 91 | + </h4> | |
| 92 | + | |
| 93 | + <div class="progress progress-xxs"> | |
| 94 | + <div class="progress-bar progress-bar-warning" style="width: 50%"></div> | |
| 95 | + </div> | |
| 96 | + </a> | |
| 97 | + </li> | |
| 98 | + <li> | |
| 99 | + <a href="javascript::;"> | |
| 100 | + <h4 class="control-sidebar-subheading"> | |
| 101 | + Back End Framework | |
| 102 | + <span class="label label-primary pull-right">68%</span> | |
| 103 | + </h4> | |
| 104 | + | |
| 105 | + <div class="progress progress-xxs"> | |
| 106 | + <div class="progress-bar progress-bar-primary" style="width: 68%"></div> | |
| 107 | + </div> | |
| 108 | + </a> | |
| 109 | + </li> | |
| 110 | + </ul> | |
| 111 | + <!-- /.control-sidebar-menu --> | |
| 112 | + | |
| 113 | + </div> | |
| 114 | + <!-- /.tab-pane --> | |
| 115 | + <!-- Stats tab content --> | |
| 116 | + <div class="tab-pane" id="control-sidebar-stats-tab">Stats Tab Content</div> | |
| 117 | + <!-- /.tab-pane --> | |
| 118 | + <!-- Settings tab content --> | |
| 119 | + <div class="tab-pane" id="control-sidebar-settings-tab"> | |
| 120 | + <form method="post"> | |
| 121 | + <h3 class="control-sidebar-heading">General Settings</h3> | |
| 122 | + | |
| 123 | + <div class="form-group"> | |
| 124 | + <label class="control-sidebar-subheading"> | |
| 125 | + Report panel usage | |
| 126 | + <input type="checkbox" class="pull-right" checked> | |
| 127 | + </label> | |
| 128 | + | |
| 129 | + <p> | |
| 130 | + Some information about this general settings option | |
| 131 | + </p> | |
| 132 | + </div> | |
| 133 | + <!-- /.form-group --> | |
| 134 | + | |
| 135 | + <div class="form-group"> | |
| 136 | + <label class="control-sidebar-subheading"> | |
| 137 | + Allow mail redirect | |
| 138 | + <input type="checkbox" class="pull-right" checked> | |
| 139 | + </label> | |
| 140 | + | |
| 141 | + <p> | |
| 142 | + Other sets of options are available | |
| 143 | + </p> | |
| 144 | + </div> | |
| 145 | + <!-- /.form-group --> | |
| 146 | + | |
| 147 | + <div class="form-group"> | |
| 148 | + <label class="control-sidebar-subheading"> | |
| 149 | + Expose author name in posts | |
| 150 | + <input type="checkbox" class="pull-right" checked> | |
| 151 | + </label> | |
| 152 | + | |
| 153 | + <p> | |
| 154 | + Allow the user to show his name in blog posts | |
| 155 | + </p> | |
| 156 | + </div> | |
| 157 | + <!-- /.form-group --> | |
| 158 | + | |
| 159 | + <h3 class="control-sidebar-heading">Chat Settings</h3> | |
| 160 | + | |
| 161 | + <div class="form-group"> | |
| 162 | + <label class="control-sidebar-subheading"> | |
| 163 | + Show me as online | |
| 164 | + <input type="checkbox" class="pull-right" checked> | |
| 165 | + </label> | |
| 166 | + </div> | |
| 167 | + <!-- /.form-group --> | |
| 168 | + | |
| 169 | + <div class="form-group"> | |
| 170 | + <label class="control-sidebar-subheading"> | |
| 171 | + Turn off notifications | |
| 172 | + <input type="checkbox" class="pull-right"> | |
| 173 | + </label> | |
| 174 | + </div> | |
| 175 | + <!-- /.form-group --> | |
| 176 | + | |
| 177 | + <div class="form-group"> | |
| 178 | + <label class="control-sidebar-subheading"> | |
| 179 | + Delete chat history | |
| 180 | + <a href="javascript::;" class="text-red pull-right"><i class="fa fa-trash-o"></i></a> | |
| 181 | + </label> | |
| 182 | + </div> | |
| 183 | + <!-- /.form-group --> | |
| 184 | + </form> | |
| 185 | + </div> | |
| 186 | + <!-- /.tab-pane --> | |
| 187 | + </div> | |
| 188 | +</aside> | |
| 0 | 189 | \ No newline at end of file | ... | ... |
| 1 | +++ a/backend/views/layouts/header.php | |
| 1 | +<?php | |
| 2 | + | |
| 3 | +/* @var $this \yii\web\View */ | |
| 4 | +/* @var $content string */ | |
| 5 | + | |
| 6 | +use yii\helpers\Html; | |
| 7 | +use yii\bootstrap\Nav; | |
| 8 | +use yii\bootstrap\NavBar; | |
| 9 | +use yii\helpers\Url; | |
| 10 | +use yii\widgets\Breadcrumbs; | |
| 11 | +use frontend\assets\AppAsset; | |
| 12 | +use common\widgets\Alert; | |
| 13 | +use yii\widgets\Menu; | |
| 14 | + | |
| 15 | +AppAsset::register($this); | |
| 16 | +?> | |
| 17 | +<header class="main-header"> | |
| 18 | + <!-- Logo --> | |
| 19 | + <a href="/admin/" class="logo"> | |
| 20 | + <!-- mini logo for sidebar mini 50x50 pixels --> | |
| 21 | + <span class="logo-mini"><b>A</b>BOX</span> | |
| 22 | + <!-- logo for regular state and mobile devices --> | |
| 23 | + <span class="logo-lg"><b>Art</b>BOX</span> | |
| 24 | + </a> | |
| 25 | + <!-- Header Navbar: style can be found in header.less --> | |
| 26 | + <nav class="navbar navbar-static-top" role="navigation"> | |
| 27 | + <!-- Sidebar toggle button--> | |
| 28 | + <a href="#" class="sidebar-toggle" data-toggle="offcanvas" role="button"> | |
| 29 | + <span class="sr-only">Toggle navigation</span> | |
| 30 | + </a> | |
| 31 | + | |
| 32 | + <div class="navbar-custom-menu"> | |
| 33 | + </div> | |
| 34 | + </nav> | |
| 35 | +</header> | |
| 0 | 36 | \ No newline at end of file | ... | ... |
| 1 | +++ a/backend/views/layouts/main-sidebar.php | |
| 1 | +<?php | |
| 2 | +use yii\helpers\Url; | |
| 3 | +use yii\widgets\Menu; | |
| 4 | +?> | |
| 5 | +<aside class="main-sidebar"> | |
| 6 | + <!-- sidebar: style can be found in sidebar.less --> | |
| 7 | + <section class="sidebar"> | |
| 8 | + <?php | |
| 9 | +//print_r($this->context->id); | |
| 10 | +// die(); | |
| 11 | + | |
| 12 | + $items = [ | |
| 13 | + [ | |
| 14 | + 'label' => 'Заказы', | |
| 15 | + 'url' => ['/orders/index'], | |
| 16 | + 'template'=>'<a href="{url}"> <i class="glyphicon glyphicon-shopping-cart"></i> <span>{label}</span></a>', | |
| 17 | + 'options' => ['class'=>\Yii::$app->user->can('orders') ? '' :'hide'], | |
| 18 | + ], | |
| 19 | + [ | |
| 20 | + 'label' => 'eCommerce', | |
| 21 | + 'template'=>'<a href="{url}"> <i class="glyphicon glyphicon-barcode"></i> <span>{label}</span></a>', | |
| 22 | + 'url' => ['/product/manage'], | |
| 23 | + 'active' => preg_match('/^manage.*$/', $this->context->id) || | |
| 24 | + preg_match('/^category.*$/', $this->context->id) || | |
| 25 | + preg_match('/^brand.*$/', $this->context->id) || | |
| 26 | + preg_match('/^product-unit.*$/', $this->context->id) || | |
| 27 | + preg_match('/^import.*$/', $this->context->id) || | |
| 28 | + preg_match('/^tax-group.*$/', $this->context->id) || | |
| 29 | + preg_match('/^export.*$/', $this->context->id) ? true : false, | |
| 30 | + 'options' => ['class'=>\Yii::$app->user->can('product') || \Yii::$app->user->can('category') || \Yii::$app->user->can('brand') || \Yii::$app->user->can('rubrication') ? '' :'hide'], | |
| 31 | + 'items' => [ | |
| 32 | + [ | |
| 33 | + 'label' => 'Товары', | |
| 34 | + 'url' => ['/product/manage'], | |
| 35 | + 'options' => ['class'=>\Yii::$app->user->can('product') ? '' :'hide'] | |
| 36 | + ], | |
| 37 | +// [ | |
| 38 | +// 'label' => 'Модификации', | |
| 39 | +// 'url' => ['/product/variant'], | |
| 40 | +// 'options' => ['class'=>\Yii::$app->user->can('product') ? '' :'hide'] | |
| 41 | +// ], | |
| 42 | + [ | |
| 43 | + 'label' => 'Категории', | |
| 44 | + 'url' => ['/category'], | |
| 45 | + 'options' => ['class'=>\Yii::$app->user->can('category') ? '' :'hide'], | |
| 46 | + | |
| 47 | + ], | |
| 48 | + [ | |
| 49 | + 'label' => 'Бренды', | |
| 50 | + 'url' => ['/brand'], | |
| 51 | + 'options' => ['class'=>\Yii::$app->user->can('brand') ? '' :'hide'], | |
| 52 | + ], | |
| 53 | + [ | |
| 54 | + 'label' => 'Единицы измерения', | |
| 55 | + 'url' => ['/product/product-unit'], | |
| 56 | + 'options' => ['class'=>\Yii::$app->user->can('product') ? '' :'hide'], | |
| 57 | + ], | |
| 58 | + [ | |
| 59 | + 'label' => 'Импорт товаров', | |
| 60 | + 'url' => ['/product/manage/import'], | |
| 61 | + 'options' => ['class'=>\Yii::$app->user->can('product') ? '' :'hide'], | |
| 62 | + ], | |
| 63 | + [ | |
| 64 | + 'label' => 'Экспорт товаров', | |
| 65 | + 'url' => ['/product/manage/export'], | |
| 66 | + 'options' => ['class'=>\Yii::$app->user->can('product') ? '' :'hide'], | |
| 67 | + ], | |
| 68 | + [ | |
| 69 | + 'label' => 'Характеристики Товаров', | |
| 70 | + 'url' => Url::toRoute(['/rubrication/tax-group', 'level'=> '0']), | |
| 71 | + 'options' => ['class'=>\Yii::$app->user->can('rubrication') ? '' :'hide'], | |
| 72 | + ], | |
| 73 | + [ | |
| 74 | + 'label' => 'Характеристики Модификаций', | |
| 75 | + 'url' => Url::toRoute(['/rubrication/tax-group', 'level'=> '1']), | |
| 76 | + 'options' => ['class'=>\Yii::$app->user->can('rubrication') ? '' :'hide'], | |
| 77 | + ], | |
| 78 | + [ | |
| 79 | + 'label' => 'Зависимости', | |
| 80 | + 'url' => ['/relation/manage'], | |
| 81 | + 'options' => ['class'=>\Yii::$app->user->can('relation') ? '' :'hide'], | |
| 82 | + ] | |
| 83 | + ] | |
| 84 | + ], | |
| 85 | + [ | |
| 86 | + 'label' => 'Слайдер/Банеры', | |
| 87 | + 'template'=>'<a href="{url}"> <i class="glyphicon glyphicon-picture"></i> <span>{label}</span></a>', | |
| 88 | + 'options' => ['class'=>\Yii::$app->user->can('banner') || \Yii::$app->user->can('slider') ? '' :'hide'], | |
| 89 | + 'active' => preg_match('/^slider.*$/', $this->context->id) || preg_match('/^banner.*$/', $this->context->id) ? true : false, | |
| 90 | + 'items' => [ | |
| 91 | + [ | |
| 92 | + 'label' => 'Слайдер', | |
| 93 | + 'url' => ['/slider/index'], | |
| 94 | + 'options' => ['class'=>\Yii::$app->user->can('slider') ? '' :'hide'], | |
| 95 | + ], | |
| 96 | + [ | |
| 97 | + 'label' => 'Банер', | |
| 98 | + 'url' => ['/banner/index'], | |
| 99 | + 'options' => ['class'=>\Yii::$app->user->can('banner') ? '' :'hide'], | |
| 100 | + ], | |
| 101 | + ] | |
| 102 | + ], | |
| 103 | + [ | |
| 104 | + 'label' => 'Текстовые страницы', | |
| 105 | + 'template'=>'<a href="{url}"> <i class="glyphicon glyphicon-duplicate"></i> <span>{label}</span></a>', | |
| 106 | + 'url' => ['/page/index'], | |
| 107 | + 'options' => ['class'=>\Yii::$app->user->can('event') ? '' :'hide'], | |
| 108 | + ], | |
| 109 | + [ | |
| 110 | + 'label' => 'Статьи', | |
| 111 | + 'template'=>'<a href="{url}"> <i class="glyphicon glyphicon-pencil"></i> <span>{label}</span></a>', | |
| 112 | + 'url' => ['/articles/index'], | |
| 113 | + 'options' => ['class'=>\Yii::$app->user->can('articles') ? '' :'hide'], | |
| 114 | + ], | |
| 115 | + [ | |
| 116 | + 'label' => 'Акции', | |
| 117 | + 'template'=>'<a href="{url}"> <i class="glyphicon glyphicon-piggy-bank"></i> <span>{label}</span></a>', | |
| 118 | + 'url' => ['/event/index'], | |
| 119 | + 'options' => ['class'=>\Yii::$app->user->can('event') ? '' :'hide'], | |
| 120 | + ], | |
| 121 | + [ | |
| 122 | + 'label' => 'SEO', | |
| 123 | + 'template'=>'<a href="{url}"> <i class="glyphicon glyphicon-search"></i> <span>{label}</span></a>', | |
| 124 | + 'active' => preg_match('/^seo.*$/', $this->context->id) || preg_match('/^seo-category.*$/', $this->context->id) ? true : false, | |
| 125 | + 'options' => ['class'=>\Yii::$app->user->can('seo') || \Yii::$app->user->can('seo-category') ? '' :'hide'], | |
| 126 | + 'items' => [ | |
| 127 | + [ | |
| 128 | + 'label' => 'URL', | |
| 129 | + 'url' => ['/seo/index'], | |
| 130 | + 'options' => ['class'=>\Yii::$app->user->can('seo') ? '' :'hide'], | |
| 131 | + ], | |
| 132 | + [ | |
| 133 | + 'label' => 'Шаблоны', | |
| 134 | + 'url' => ['/seo-category/index'], | |
| 135 | + 'options' => ['class'=>\Yii::$app->user->can('seo-category') ? '' :'hide'], | |
| 136 | + ] | |
| 137 | + ] | |
| 138 | + ], | |
| 139 | + | |
| 140 | + [ | |
| 141 | + 'label' => 'Фон', | |
| 142 | + 'url' => ['/bg/index'], | |
| 143 | + 'template'=>'<a href="{url}"> <i class="glyphicon glyphicon-picture"></i> <span>{label}</span></a>', | |
| 144 | + 'options' => ['class'=>\Yii::$app->user->can('bg')? '' :'hide'] | |
| 145 | + ], | |
| 146 | + [ | |
| 147 | + 'label' => 'Подписка', | |
| 148 | + 'template'=>'<a href="{url}"> <i class="glyphicon glyphicon-envelope"></i> <span>{label}</span></a>', | |
| 149 | + 'url' => ['/subscribe/index'], | |
| 150 | + 'options' => ['class'=>\Yii::$app->user->can('subscribe') ? '' :'hide'], | |
| 151 | + ], | |
| 152 | + [ | |
| 153 | + 'template'=>'<a href="{url}"> <i class="glyphicon glyphicon-user"></i> <span>{label}</span></a>', | |
| 154 | + 'label' => 'Пользователи', | |
| 155 | + 'url' => ['/customer/index'], | |
| 156 | + 'options' => ['class'=>\Yii::$app->user->can('customer') ? '' :'hide'], | |
| 157 | + ], | |
| 158 | + [ | |
| 159 | + 'template'=>'<a href="{url}"> <i class="glyphicon glyphicon-comment"></i> <span>{label}</span></a>', | |
| 160 | + 'label' => 'Комментарии', | |
| 161 | + 'url' => ['/artbox-comments'], | |
| 162 | + 'options' => ['class'=>\Yii::$app->user->can('artbox-comments') ? '' :'hide'], | |
| 163 | + ], | |
| 164 | + [ | |
| 165 | + 'label' => 'Настройка ролей', | |
| 166 | + 'template'=>'<a href="{url}"> <i class="glyphicon glyphicon-cog"></i> <span>{label}</span></a>', | |
| 167 | + 'active' => preg_match('/^user.*$/', $this->context->id) | |
| 168 | + || preg_match('/^access.*$/', $this->context->id) ? true : false, | |
| 169 | + 'options' => ['class'=>\Yii::$app->user->can('user') || \Yii::$app->user->can('user') || \Yii::$app->user->can('permit') ? '' :'hide'], | |
| 170 | + 'items' => [ | |
| 171 | + [ | |
| 172 | + 'label' => 'Администраторы', | |
| 173 | + 'url' => ['/user/index'], | |
| 174 | + 'options' => ['class'=>\Yii::$app->user->can('user') ? '' :'hide'], | |
| 175 | + ], | |
| 176 | + [ | |
| 177 | + 'label' => 'управление ролями', | |
| 178 | + 'url' => ['/permit/access/role'], | |
| 179 | + 'options' => ['class'=>\Yii::$app->user->can('permit') ? '' :'hide'], | |
| 180 | + ], | |
| 181 | + [ | |
| 182 | + 'label' => 'управление правами доступа', | |
| 183 | + 'url' => ['/permit/access/permission'], | |
| 184 | + 'options' => ['class'=>\Yii::$app->user->can('permit') ? '' :'hide'], | |
| 185 | + ] | |
| 186 | + ] | |
| 187 | + ], | |
| 188 | + | |
| 189 | + | |
| 190 | + | |
| 191 | + ]; | |
| 192 | + | |
| 193 | + | |
| 194 | + if (Yii::$app->user->isGuest) { | |
| 195 | + array_push($items, | |
| 196 | + ['label' => 'Signup', 'url' => ['/admin/site/signup']], ['label' => 'Login', 'url' => ['/admin/site/login']] | |
| 197 | + ); | |
| 198 | + } else { | |
| 199 | + array_push($items, | |
| 200 | + [ | |
| 201 | + 'label' => 'Logout (' . Yii::$app->user->identity->username . ')', | |
| 202 | + 'url'=>'/admin/site/logout', | |
| 203 | + 'template'=>'<a href="{url}"> <i class="glyphicon glyphicon-log-out"></i> <span>{label}</span></a>', | |
| 204 | + ] | |
| 205 | + ); | |
| 206 | + } | |
| 207 | + echo Menu::widget([ | |
| 208 | + 'options' => ['class' => 'sidebar-menu'], | |
| 209 | + 'submenuTemplate' => "\n<ul class='treeview-menu'>\n{items}\n</ul>\n", | |
| 210 | + | |
| 211 | + 'items' =>$items, | |
| 212 | + | |
| 213 | + ]); | |
| 214 | + ?> | |
| 215 | + <!-- sidebar menu: : style can be found in sidebar.less --> | |
| 216 | + | |
| 217 | + </section> | |
| 218 | + <!-- /.sidebar --> | |
| 219 | +</aside> | |
| 0 | 220 | \ No newline at end of file | ... | ... |
| 1 | +++ a/backend/views/layouts/main.php | |
| 1 | +<?php | |
| 2 | + | |
| 3 | +/* @var $this \yii\web\View */ | |
| 4 | +/* @var $content string */ | |
| 5 | + | |
| 6 | +use backend\assets\AdminLteAsset; | |
| 7 | +use backend\assets\AppAsset; | |
| 8 | +use yii\helpers\Html; | |
| 9 | + | |
| 10 | +AppAsset::register($this); | |
| 11 | +AdminLteAsset::register($this); | |
| 12 | +?> | |
| 13 | +<?php $this->beginPage() ?> | |
| 14 | +<!DOCTYPE html> | |
| 15 | +<html lang="<?= Yii::$app->language ?>" > | |
| 16 | +<head> | |
| 17 | + <meta charset="<?= Yii::$app->charset ?>"> | |
| 18 | + <meta name="viewport" content="width=device-width, initial-scale=1"> | |
| 19 | + <?= Html::csrfMetaTags() ?> | |
| 20 | + <title><?= Html::encode($this->title) ?></title> | |
| 21 | + <?php $this->head() ?> | |
| 22 | +</head> | |
| 23 | +<body class="hold-transition skin-blue sidebar-mini"> | |
| 24 | +<?php $this->beginBody() ?> | |
| 25 | +<div class="wrapper"> | |
| 26 | + | |
| 27 | + <?= $content ?> | |
| 28 | + | |
| 29 | +</div> | |
| 30 | +<!-- ./wrapper --> | |
| 31 | +<?php $this->endBody() ?> | |
| 32 | +</body> | |
| 33 | +</html> | |
| 34 | +<?php $this->endPage() ?> | ... | ... |