diff --git a/assets/photos/photos.js b/assets/photos/photos.js index dab2e0a..7804282 100644 --- a/assets/photos/photos.js +++ b/assets/photos/photos.js @@ -72,12 +72,13 @@ $(function(){ photosBody.on('input propertychange', '.photo-description', function(){ var saveBtn = $(this).siblings('.save-photo-description'); if(saveBtn.hasClass('disabled')){ - saveBtn.removeClass('disabled').on('click', function(){ + saveBtn.removeClass('disabled').on('click', function(e){ + e.preventDefault(); var $this = $(this).unbind('click').addClass('disabled'); var tr = $this.closest('tr'); var text = $this.siblings('.photo-description').val(); $.post( - '/admin/photos/description/'+ tr.data('id'), + $this.attr('href'), {description: text}, function(response){ if(response.result === 'success'){ diff --git a/components/Controller.php b/components/Controller.php index 07d0040..b304843 100644 --- a/components/Controller.php +++ b/components/Controller.php @@ -18,7 +18,7 @@ public function beforeAction($action) if(Yii::$app->user->isGuest){ Yii::$app->user->setReturnUrl(Yii::$app->request->url); - return $this->redirect('/admin/sign/in'); + return $this->redirect(['/admin/sign/in']); } else{ diff --git a/controllers/AdminsController.php b/controllers/AdminsController.php index cab0e01..e0c1e8a 100644 --- a/controllers/AdminsController.php +++ b/controllers/AdminsController.php @@ -15,7 +15,7 @@ public function actionIndex() $data = new ActiveDataProvider([ 'query' => Admin::find()->desc(), ]); - Yii::$app->user->setReturnUrl('/admin/admins'); + Yii::$app->user->setReturnUrl(['/admin/admins']); return $this->render('index', [ 'data' => $data @@ -35,7 +35,7 @@ public function actionCreate() else{ if($model->save()){ $this->flash('success', Yii::t('easyii', 'Admin created')); - return $this->redirect('/admin/admins'); + return $this->redirect(['/admin/admins']); } else{ $this->flash('error', Yii::t('easyii', 'Create error. {0}', $model->formatErrors())); @@ -56,7 +56,7 @@ public function actionEdit($id) if($model === null){ $this->flash('error', Yii::t('easyii', 'Not found')); - return $this->redirect('/admin/admins'); + return $this->redirect(['/admin/admins']); } if ($model->load(Yii::$app->request->post())) { diff --git a/controllers/InstallController.php b/controllers/InstallController.php index d6544b9..4d2a949 100644 --- a/controllers/InstallController.php +++ b/controllers/InstallController.php @@ -47,7 +47,7 @@ public function actionIndex() Yii::$app->cache->flush(); Yii::$app->session->setFlash('root_password', $installForm->root_password); - return $this->redirect('/admin/install/finish'); + return $this->redirect(['/admin/install/finish']); } else { $installForm->robot_email = 'noreply@'.Yii::$app->request->serverName; @@ -68,7 +68,7 @@ public function actionFinish() 'password' => $root_password, ]); if($loginForm->login()){ - return $this->redirect('/admin/'); + return $this->redirect(['/admin/']); } } diff --git a/controllers/ModulesController.php b/controllers/ModulesController.php index 27dab29..d128547 100644 --- a/controllers/ModulesController.php +++ b/controllers/ModulesController.php @@ -51,7 +51,7 @@ public function actionCreate() else{ if($model->save()){ $this->flash('success', Yii::t('easyii', 'Module created')); - return $this->redirect('/admin/modules'); + return $this->redirect(['/admin/modules']); } else{ $this->flash('error', Yii::t('Create error. {0}', $model->formatErrors())); @@ -72,7 +72,7 @@ public function actionEdit($id) if($model === null){ $this->flash('error', Yii::t('easyii', 'Not found')); - return $this->redirect('/admin/modules'); + return $this->redirect(['/admin/modules']); } if ($model->load(Yii::$app->request->post())) { @@ -103,7 +103,7 @@ public function actionSettings($id) if($model === null){ $this->flash('error', Yii::t('easyii', 'Not found')); - return $this->redirect('/admin/modules'); + return $this->redirect(['/admin/modules']); } if (Yii::$app->request->post('Settings')) { diff --git a/controllers/PhotosController.php b/controllers/PhotosController.php index aa6251d..89715ca 100644 --- a/controllers/PhotosController.php +++ b/controllers/PhotosController.php @@ -2,6 +2,7 @@ namespace yii\easyii\controllers; use Yii; +use yii\helpers\Url; use yii\web\UploadedFile; use yii\web\Response; @@ -31,7 +32,7 @@ public function behaviors() public function actionUpload($model, $item_id) { $success = null; - + $photo = new Photo; $photo->model = $model; $photo->item_id = $item_id; @@ -52,7 +53,7 @@ public function actionUpload($model, $item_id) ]; } else{ - @unlink(Yii::getAlias('@webroot').$photo->image); + @unlink(Yii::getAlias('@webroot') . str_replace(Url::base(true), '', $photo->image)); $this->error = Yii::t('easyii', 'Create error. {0}', $photo->formatErrors()); } } diff --git a/controllers/RedactorController.php b/controllers/RedactorController.php index 6d7597f..bf95108 100644 --- a/controllers/RedactorController.php +++ b/controllers/RedactorController.php @@ -4,6 +4,7 @@ use Yii; use yii\web\HttpException; use yii\helpers\FileHelper; +use yii\helpers\Url; use yii\web\UploadedFile; use yii\web\Response; @@ -116,7 +117,7 @@ public function actionUpload($dir = '') private function getResponse($fileName) { return [ - 'filelink' => 'http://'.Yii::$app->request->serverName.$fileName, + 'filelink' => $fileName, 'filename' => basename($fileName) ]; } diff --git a/controllers/SettingsController.php b/controllers/SettingsController.php index 469928a..0b3ff7d 100644 --- a/controllers/SettingsController.php +++ b/controllers/SettingsController.php @@ -55,7 +55,7 @@ public function actionEdit($id) if($model === null || ($model->visibility < (IS_ROOT ? Setting::VISIBLE_ROOT : Setting::VISIBLE_ALL))){ $this->flash('error', Yii::t('easyii', 'Not found')); - return $this->redirect('/admin/settings'); + return $this->redirect(['/admin/settings']); } if ($model->load(Yii::$app->request->post())) { diff --git a/controllers/SignController.php b/controllers/SignController.php index 9206499..b846444 100644 --- a/controllers/SignController.php +++ b/controllers/SignController.php @@ -14,7 +14,7 @@ public function actionIn() $model = new models\LoginForm; if (!Yii::$app->user->isGuest || ($model->load(Yii::$app->request->post()) && $model->login())) { - return $this->redirect(Yii::$app->user->getReturnUrl('/admin')); + return $this->redirect(Yii::$app->user->getReturnUrl(['/admin'])); } else { return $this->render('in', [ 'model' => $model, diff --git a/helpers/Image.php b/helpers/Image.php index afdba1f..b820eb5 100644 --- a/helpers/Image.php +++ b/helpers/Image.php @@ -5,6 +5,7 @@ use yii\web\UploadedFile; use yii\web\HttpException; use yii\helpers\FileHelper; +use yii\helpers\Url; use yii\easyii\helpers\GD; class Image @@ -26,6 +27,8 @@ public static function upload(UploadedFile $fileInstance, $dir = '', $resizeWidt static function createThumbnail($fileName, $width, $height = null, $crop = true) { + $fileName = str_replace(Url::base(true), '', $fileName); + $webRoot = Yii::getAlias('@webroot'); if(!strstr($fileName, $webRoot)){ $fileName = $webRoot . $fileName; diff --git a/helpers/Upload.php b/helpers/Upload.php index 7da342f..7462241 100644 --- a/helpers/Upload.php +++ b/helpers/Upload.php @@ -7,6 +7,7 @@ use yii\helpers\Inflector; use yii\helpers\StringHelper; use yii\helpers\FileHelper; +use yii\helpers\Url; class Upload { @@ -33,7 +34,7 @@ static function getUploadPath($dir) static function getLink($fileName) { - return str_replace('\\', '/', str_replace(Yii::getAlias('@webroot'), '', $fileName)); + return Url::base(true) . str_replace('\\', '/', str_replace(Yii::getAlias('@webroot'), '', $fileName)); } static function getFileName($fileInstanse, $namePostfix = true) diff --git a/media/js/admin.js b/media/js/admin.js index f09d4f5..7aeacd0 100644 --- a/media/js/admin.js +++ b/media/js/admin.js @@ -51,7 +51,7 @@ $(function(){ var checkbox = $(this); checkbox.switcher('setDisabled', true); - $.getJSON(checkbox.data('link') + (checkbox.is(':checked') ? 'on' : 'off') + '/' + checkbox.data('id'), function(response){ + $.getJSON(checkbox.data('link') + '/' + (checkbox.is(':checked') ? 'on' : 'off') + '/' + checkbox.data('id'), function(response){ if(response.result === 'error'){ alert(response.error); } diff --git a/media/js/frontend.js b/media/js/frontend.js index 004b514..3dc43a8 100644 --- a/media/js/frontend.js +++ b/media/js/frontend.js @@ -6,6 +6,6 @@ $(function(){ $('#easyii-navbar input').switcher({copy: {en: {yes: '', no: ''}}}).on('change', function(){ var checkbox = $(this); checkbox.switcher('setDisabled', true); - location.href = '/admin/system/live-edit/'+(checkbox.is(':checked') ? 1 : 0); + location.href = checkbox.attr('data-link') + '/' + (checkbox.is(':checked') ? 1 : 0); });; }); \ No newline at end of file diff --git a/modules/article/ArticleModule.php b/modules/article/ArticleModule.php index 68d0c5d..2a66de2 100644 --- a/modules/article/ArticleModule.php +++ b/modules/article/ArticleModule.php @@ -9,9 +9,6 @@ class ArticleModule extends \yii\easyii\components\Module 'enableShort' => true, 'shortMaxLength' => 255, - - 'categoryAutoSlug' => true, - 'itemAutoSlug' => true, ]; public static $installConfig = [ diff --git a/modules/article/api/Article.php b/modules/article/api/Article.php index 0f74763..8129822 100644 --- a/modules/article/api/Article.php +++ b/modules/article/api/Article.php @@ -3,6 +3,7 @@ use Yii; use yii\data\ActiveDataProvider; +use yii\helpers\Url; use yii\widgets\LinkPager; use yii\easyii\widgets\Colorbox; @@ -70,7 +71,6 @@ private function findItem($id_slug) } $item->updateCounters(['views' => 1]); - return new ArticleObject($item); } } \ No newline at end of file diff --git a/modules/article/controllers/AController.php b/modules/article/controllers/AController.php index acc7516..481bb93 100644 --- a/modules/article/controllers/AController.php +++ b/modules/article/controllers/AController.php @@ -65,7 +65,7 @@ public function actionCreate($parent = null) if($model->save()){ $this->flash('success', Yii::t('easyii/article', 'Category created')); - return $this->redirect('/admin/article/items/'.$model->primaryKey); + return $this->redirect(['/admin/article/items/index', 'id' => $model->primaryKey]); } else{ $this->flash('error', Yii::t('easyii', 'Create error. {0}', $model->formatErrors())); @@ -84,7 +84,7 @@ public function actionCreate($parent = null) public function actionEdit($id) { if(!($model = Category::findOne($id))){ - return $this->redirect('/admin/article'); + return $this->redirect(['/admin/article/']); } if ($model->load(Yii::$app->request->post())) { diff --git a/modules/article/controllers/ItemsController.php b/modules/article/controllers/ItemsController.php index 609c130..222c13e 100644 --- a/modules/article/controllers/ItemsController.php +++ b/modules/article/controllers/ItemsController.php @@ -26,7 +26,7 @@ public function behaviors() public function actionIndex($id) { if(!($model = Category::findOne($id))){ - return $this->redirect('/admin/article'); + return $this->redirect(['/admin/article']); } return $this->render('index', [ @@ -38,7 +38,7 @@ public function actionIndex($id) public function actionCreate($id) { if(!($category = Category::findOne($id))){ - return $this->redirect('/admin/article'); + return $this->redirect(['/admin/article']); } $model = new Item; @@ -62,7 +62,7 @@ public function actionCreate($id) if ($model->save()) { $this->flash('success', Yii::t('easyii/article', 'Article created')); - return $this->redirect('/admin/article/items/edit/' . $model->primaryKey); + return $this->redirect(['/admin/article/items/edit', 'id' => $model->primaryKey]); } else { $this->flash('error', Yii::t('easyii', 'Create error. {0}', $model->formatErrors())); return $this->refresh(); @@ -80,7 +80,7 @@ public function actionCreate($id) public function actionEdit($id) { if(!($model = Item::findOne($id))){ - return $this->redirect('/admin/article'); + return $this->redirect(['/admin/article']); } if ($model->load(Yii::$app->request->post())) { @@ -100,7 +100,7 @@ public function actionEdit($id) if ($model->save()) { $this->flash('success', Yii::t('easyii/article', 'Article updated')); - return $this->redirect('/admin/article/items/edit/' . $model->primaryKey); + return $this->redirect(['/admin/article/items/edit', 'id' => $model->primaryKey]); } else { $this->flash('error', Yii::t('easyii', 'Update error. {0}', $model->formatErrors())); return $this->refresh(); diff --git a/modules/article/models/Category.php b/modules/article/models/Category.php index b923b1e..c748b23 100644 --- a/modules/article/models/Category.php +++ b/modules/article/models/Category.php @@ -28,10 +28,7 @@ public function rules() ['image', 'image'], ['item_count', 'integer'], ['slug', 'match', 'pattern' => self::$SLUG_PATTERN, 'message' => Yii::t('easyii', 'Slug can contain only 0-9, a-z and "-" characters (max: 128).')], - ['slug', 'default', 'value' => null], - ['slug', 'unique', 'when' => function($model){ - return $model->slug && !self::autoSlug(); - }], + ['slug', 'default', 'value' => null] ]; } @@ -50,6 +47,11 @@ public function behaviors() return [ SortableModel::className(), 'seoBehavior' => SeoBehavior::className(), + 'sluggable' => [ + 'class' => SluggableBehavior::className(), + 'attribute' => 'title', + 'ensureUnique' => true + ], 'tree' => [ 'class' => NestedSetsBehavior::className(), 'treeAttribute' => 'tree' @@ -57,18 +59,6 @@ public function behaviors() ]; } - public function beforeValidate() - { - if(self::autoSlug() && (!$this->isNewRecord || ($this->isNewRecord && $this->slug == ''))){ - $this->attachBehavior('sluggable', [ - 'class' => SluggableBehavior::className(), - 'attribute' => 'title', - 'ensureUnique' => true - ]); - } - return parent::beforeValidate(); - } - public static function getTree() { $collection = self::find()->sort()->asArray()->all(); @@ -134,17 +124,11 @@ public function afterDelete() { parent::afterDelete(); - foreach($this->getItems()->all() as $item){ + foreach ($this->getItems()->all() as $item) { $item->delete(); } - if($this->image) { @unlink(Yii::getAlias('@webroot') . $this->image); } } - - public static function autoSlug() - { - return Yii::$app->getModule('admin')->activeModules['article']->settings['categoryAutoSlug']; - } } \ No newline at end of file diff --git a/modules/article/models/Item.php b/modules/article/models/Item.php index 1caceba..d61318c 100644 --- a/modules/article/models/Item.php +++ b/modules/article/models/Item.php @@ -27,9 +27,6 @@ public function rules() ['views', 'number', 'integerOnly' => true], ['slug', 'match', 'pattern' => self::$SLUG_PATTERN, 'message' => Yii::t('easyii', 'Slug can contain only 0-9, a-z and "-" characters (max: 128).')], ['slug', 'default', 'value' => null], - ['slug', 'unique', 'when' => function($model){ - return $model->slug && !self::autoSlug(); - }] ]; } @@ -49,7 +46,8 @@ public function behaviors() return [ SortableModel::className(), 'seoBehavior' => SeoBehavior::className(), - [ + 'seo' => SeoBehavior::className(), + 'sluggable' => [ 'class' => SluggableBehavior::className(), 'attribute' => 'title', 'ensureUnique' => true @@ -62,18 +60,6 @@ public function getCategory() return $this->hasOne(Category::className(), ['category_id' => 'category_id']); } - public function beforeValidate() - { - if(self::autoSlug() && (!$this->isNewRecord || ($this->isNewRecord && $this->slug == ''))){ - $this->attachBehavior('sluggable', [ - 'class' => SluggableBehavior::className(), - 'attribute' => 'title', - 'ensureUnique' => true - ]); - } - return parent::beforeValidate(); - } - public function beforeSave($insert) { if (parent::beforeSave($insert)) { @@ -100,9 +86,4 @@ public function afterDelete() @unlink(Yii::getAlias('@webroot').$this->image); } } - - public static function autoSlug() - { - return Yii::$app->getModule('admin')->activeModules['article']->settings['itemAutoSlug']; - } } \ No newline at end of file diff --git a/modules/article/views/a/_form.php b/modules/article/views/a/_form.php index 4b3160d..1d96e05 100644 --- a/modules/article/views/a/_form.php +++ b/modules/article/views/a/_form.php @@ -2,6 +2,7 @@ use yii\easyii\helpers\Image; use yii\easyii\modules\article\models\Category; use yii\helpers\Html; +use yii\helpers\Url; use yii\widgets\ActiveForm; use yii\easyii\widgets\SeoForm; @@ -31,8 +32,8 @@ image) : ?> - - + + field($model, 'image')->fileInput() ?> diff --git a/modules/article/views/a/_menu.php b/modules/article/views/a/_menu.php index c8bafb8..4b9d678 100644 --- a/modules/article/views/a/_menu.php +++ b/modules/article/views/a/_menu.php @@ -1,15 +1,17 @@ context->action->id; ?>
\ No newline at end of file diff --git a/modules/article/views/a/index.php b/modules/article/views/a/index.php index ec9a9a1..da36386 100644 --- a/modules/article/views/a/index.php +++ b/modules/article/views/a/index.php @@ -1,4 +1,8 @@ title = Yii::t('easyii/article', 'Articles'); @@ -9,20 +13,20 @@ function renderNode($node) $html .= ''.$node['category_id'].''; $html .= ' - '.(sizeof($node['children']) ? '' : '').' '.$node['title'].' + '.(sizeof($node['children']) ? '' : '').' '.$node['title'].' '; $html .= ' diff --git a/modules/article/views/items/_form.php b/modules/article/views/items/_form.php index d3cdab4..36779af 100644 --- a/modules/article/views/items/_form.php +++ b/modules/article/views/items/_form.php @@ -1,6 +1,7 @@ context->module->settings['articleThumb']) : ?> image) : ?> - - + + field($model, 'image')->fileInput() ?> @@ -26,8 +27,8 @@ field($model, 'text')->widget(Redactor::className(),[ 'options' => [ 'minHeight' => 400, - 'imageUpload' => '/admin/redactor/upload?dir=article', - 'fileUpload' => '/admin/redactor/upload?dir=article', + 'imageUpload' => Url::to(['/admin/redactor/upload', 'dir' => 'article'], true), + 'fileUpload' => Url::to(['/admin/redactor/upload', 'dir' => 'article'], true), 'plugins' => ['fullscreen'] ] ]) ?> diff --git a/modules/article/views/items/_menu.php b/modules/article/views/items/_menu.php index e5b2df3..e75d3f7 100644 --- a/modules/article/views/items/_menu.php +++ b/modules/article/views/items/_menu.php @@ -1,11 +1,13 @@ context->action->id; ?>
\ No newline at end of file diff --git a/modules/article/views/items/index.php b/modules/article/views/items/index.php index 79360c3..108ae9a 100644 --- a/modules/article/views/items/index.php +++ b/modules/article/views/items/index.php @@ -1,4 +1,6 @@ title = Yii::t('easyii/article', 'Articles'); ?> render('_menu', ['category' => $model]) ?> @@ -21,13 +23,13 @@ primaryKey ?> - title ?> + title ?> views ?>
- - - + + +
diff --git a/modules/carousel/controllers/AController.php b/modules/carousel/controllers/AController.php index ec40597..47dac3d 100644 --- a/modules/carousel/controllers/AController.php +++ b/modules/carousel/controllers/AController.php @@ -58,7 +58,7 @@ public function actionCreate() if($model->save()){ $this->flash('success', Yii::t('easyii/carousel', 'Carousel created')); - return $this->redirect('/admin/carousel'); + return $this->redirect(['/admin/carousel']); } else{ $this->flash('error', Yii::t('easyii', 'Create error. {0}', $model->formatErrors())); @@ -87,7 +87,7 @@ public function actionEdit($id) if($model === null){ $this->flash('error', Yii::t('easyii', 'Not found')); - return $this->redirect('/admin/carousel'); + return $this->redirect(['/admin/carousel']); } if ($model->load(Yii::$app->request->post())) { diff --git a/modules/carousel/views/a/_form.php b/modules/carousel/views/a/_form.php index 9d78a6c..a0c8b7c 100644 --- a/modules/carousel/views/a/_form.php +++ b/modules/carousel/views/a/_form.php @@ -7,7 +7,7 @@ 'options' => ['enctype' => 'multipart/form-data'] ]); ?> image) : ?> - + field($model, 'image')->fileInput() ?> field($model, 'link') ?> diff --git a/modules/carousel/views/a/_menu.php b/modules/carousel/views/a/_menu.php index eeccc3c..0b05a09 100644 --- a/modules/carousel/views/a/_menu.php +++ b/modules/carousel/views/a/_menu.php @@ -1,15 +1,17 @@ context->action->id; ?>
\ No newline at end of file diff --git a/modules/carousel/views/a/index.php b/modules/carousel/views/a/index.php index 3cd56b1..a1b8d98 100644 --- a/modules/carousel/views/a/index.php +++ b/modules/carousel/views/a/index.php @@ -1,6 +1,7 @@ title = Yii::t('easyii/carousel', 'Carousel'); ?> @@ -25,19 +26,19 @@ primaryKey ?> - + status == Carousel::STATUS_ON, [ 'class' => 'switch', 'data-id' => $item->primaryKey, - 'data-link' => '/admin/carousel/a/' + 'data-link' => Url::to(['/admin/carousel/a/']), ]) ?>
- - - + + +
diff --git a/modules/catalog/api/Catalog.php b/modules/catalog/api/Catalog.php index 2d6a700..d6810b7 100644 --- a/modules/catalog/api/Catalog.php +++ b/modules/catalog/api/Catalog.php @@ -3,6 +3,7 @@ use Yii; use yii\data\ActiveDataProvider; +use yii\helpers\Url; use yii\widgets\LinkPager; use yii\easyii\widgets\Fancybox; @@ -215,17 +216,4 @@ private function createItemObject($data) } return $temp; } - - private function notFound($id_slug) - { - if(Yii::$app->user->isGuest) { - return $this->createCatObject(''); - } - elseif(preg_match(Category::$SLUG_PATTERN, $id_slug)){ - return $this->createCatObject(''.Yii::t('easyii/catalog/api', 'Create category').''); - } - else{ - return $this->createCatObject($this->errorText('WRONG CATEGORY IDENTIFIER')); - } - } } \ No newline at end of file diff --git a/modules/catalog/controllers/AController.php b/modules/catalog/controllers/AController.php index eb60277..8d62542 100644 --- a/modules/catalog/controllers/AController.php +++ b/modules/catalog/controllers/AController.php @@ -64,7 +64,7 @@ public function actionCreate($slug = null) if($model->save()){ $this->flash('success', Yii::t('easyii/catalog', 'Category created')); - return $this->redirect('/admin/catalog/a/fields/'.$model->primaryKey); + return $this->redirect(['/admin/catalog/a/fields', 'id' => $model->primaryKey]); } else{ $this->flash('error', Yii::t('easyii', 'Create error. {0}', $model->formatErrors())); @@ -84,7 +84,7 @@ public function actionCreate($slug = null) public function actionEdit($id) { if(!($model = Category::findOne($id))){ - return $this->redirect('/admin/catalog'); + return $this->redirect(['/admin/catalog']); } if ($model->load(Yii::$app->request->post())) { @@ -120,7 +120,7 @@ public function actionEdit($id) public function actionFields($id) { if(!($model = Category::findOne($id))){ - return $this->redirect('/admin/catalog'); + return $this->redirect(['/admin/catalog']); } if (Yii::$app->request->post('save')) diff --git a/modules/catalog/controllers/ItemsController.php b/modules/catalog/controllers/ItemsController.php index 21c1c35..cbdddfa 100644 --- a/modules/catalog/controllers/ItemsController.php +++ b/modules/catalog/controllers/ItemsController.php @@ -27,7 +27,7 @@ public function behaviors() public function actionIndex($id) { if(!($model = Category::findOne($id))){ - return $this->redirect('/admin/catalog'); + return $this->redirect(['/admin/catalog']); } return $this->render('index', [ @@ -39,7 +39,7 @@ public function actionIndex($id) public function actionCreate($id) { if(!($category = Category::findOne($id))){ - return $this->redirect('/admin/catalog'); + return $this->redirect(['/admin/catalog']); } $model = new Item; @@ -64,7 +64,7 @@ public function actionCreate($id) if ($model->save()) { $this->flash('success', Yii::t('easyii/catalog', 'Item created')); - return $this->redirect('/admin/catalog/items/edit/' . $model->primaryKey); + return $this->redirect(['/admin/catalog/items/edit/', 'id' => $model->primaryKey]); } else { $this->flash('error', Yii::t('easyii', 'Create error. {0}', $model->formatErrors())); return $this->refresh(); @@ -83,7 +83,7 @@ public function actionCreate($id) public function actionEdit($id) { if(!($model = Item::findOne($id))){ - return $this->redirect('/admin/catalog'); + return $this->redirect(['/admin/catalog']); } if ($model->load(Yii::$app->request->post())) { @@ -105,7 +105,7 @@ public function actionEdit($id) if ($model->save()) { $this->flash('success', Yii::t('easyii/catalog', 'Item updated')); - return $this->redirect('/admin/catalog/items/edit/' . $model->primaryKey); + return $this->redirect(['/admin/catalog/items/edit', 'id' => $model->primaryKey]); } else { $this->flash('error', Yii::t('easyii', 'Update error. {0}', $model->formatErrors())); return $this->refresh(); @@ -123,7 +123,7 @@ public function actionEdit($id) public function actionPhotos($id) { if(!($model = Item::findOne($id))){ - return $this->redirect('/admin/catalog'); + return $this->redirect(['/admin/catalog']); } return $this->render('photos', [ diff --git a/modules/catalog/models/Category.php b/modules/catalog/models/Category.php index 90b841c..5c729b1 100644 --- a/modules/catalog/models/Category.php +++ b/modules/catalog/models/Category.php @@ -44,9 +44,6 @@ public function rules() ['item_count', 'integer'], ['slug', 'match', 'pattern' => self::$SLUG_PATTERN, 'message' => Yii::t('easyii', 'Slug can contain only 0-9, a-z and "-" characters (max: 128).')], ['slug', 'default', 'value' => null], - ['slug', 'unique', 'when' => function($model){ - return $model->slug && !self::autoSlug(); - }], ]; } @@ -68,6 +65,11 @@ public function behaviors() 'tree' => [ 'class' => NestedSetsBehavior::className(), 'treeAttribute' => 'tree' + ], + 'sluggable' => [ + 'class' => SluggableBehavior::className(), + 'attribute' => 'title', + 'ensureUnique' => true ] ]; } @@ -86,18 +88,6 @@ public function beforeSave($insert) } } - public function beforeValidate() - { - if(self::autoSlug() && (!$this->isNewRecord || ($this->isNewRecord && $this->slug == ''))){ - $this->attachBehavior('sluggable', [ - 'class' => SluggableBehavior::className(), - 'attribute' => 'title', - 'ensureUnique' => true - ]); - } - return parent::beforeValidate(); - } - public function afterFind() { parent::afterFind(); @@ -121,9 +111,4 @@ public function afterDelete() @unlink(Yii::getAlias('@webroot') . $this->image); } } - - public static function autoSlug() - { - return Yii::$app->getModule('admin')->activeModules['catalog']->settings['categoryAutoSlug']; - } } \ No newline at end of file diff --git a/modules/catalog/models/Item.php b/modules/catalog/models/Item.php index e2c9787..873d1ee 100644 --- a/modules/catalog/models/Item.php +++ b/modules/catalog/models/Item.php @@ -25,9 +25,6 @@ public function rules() ['description', 'safe'], ['slug', 'match', 'pattern' => self::$SLUG_PATTERN, 'message' => Yii::t('easyii', 'Slug can contain only 0-9, a-z and "-" characters (max: 128).')], ['slug', 'default', 'value' => null], - ['slug', 'unique', 'when' => function($model){ - return $model->slug && !self::autoSlug(); - }] ]; } @@ -46,6 +43,11 @@ public function behaviors() return [ SortableModel::className(), 'seo' => SeoBehavior::className(), + 'sluggable' => [ + 'class' => SluggableBehavior::className(), + 'attribute' => 'title', + 'ensureUnique' => true + ] ]; } @@ -62,18 +64,6 @@ public function beforeSave($insert) } } - public function beforeValidate() - { - if(self::autoSlug() && (!$this->isNewRecord || ($this->isNewRecord && $this->slug == ''))){ - $this->attachBehavior('sluggable', [ - 'class' => SluggableBehavior::className(), - 'attribute' => 'title', - 'ensureUnique' => true - ]); - } - return parent::beforeValidate(); - } - public function afterFind() { parent::afterFind(); @@ -102,9 +92,4 @@ public function afterDelete() @unlink(Yii::getAlias('@webroot') . $this->image); } } - - public static function autoSlug() - { - return Yii::$app->getModule('admin')->activeModules['catalog']->settings['itemAutoSlug']; - } } \ No newline at end of file diff --git a/modules/catalog/views/a/_form.php b/modules/catalog/views/a/_form.php index 7c215cc..2b71501 100644 --- a/modules/catalog/views/a/_form.php +++ b/modules/catalog/views/a/_form.php @@ -1,5 +1,6 @@ field($model, 'title') ?> image) : ?> - - + + field($model, 'image')->fileInput() ?> diff --git a/modules/catalog/views/a/_menu.php b/modules/catalog/views/a/_menu.php index 6c5fcd8..8426d5b 100644 --- a/modules/catalog/views/a/_menu.php +++ b/modules/catalog/views/a/_menu.php @@ -1,23 +1,25 @@ context->action->id; ?>
diff --git a/modules/guestbook/views/a/index.php b/modules/guestbook/views/a/index.php index 4fcf5ce..cf7eb8c 100644 --- a/modules/guestbook/views/a/index.php +++ b/modules/guestbook/views/a/index.php @@ -1,6 +1,7 @@ title = Yii::t('easyii/guestbook', 'Guestbook'); @@ -32,7 +33,7 @@ new) : ?> NEW - + title != '') ? $item->title : StringHelper::truncate($item->text, 120, '...') ?> @@ -48,10 +49,10 @@ status == Guestbook::STATUS_ON, [ 'class' => 'switch', 'data-id' => $item->primaryKey, - 'data-link' => '/admin/guestbook/a/' + 'data-link' => Url::to(['/admin/guestbook/a/']), ]) ?> - + diff --git a/modules/news/NewsModule.php b/modules/news/NewsModule.php index 9435f6f..93ac4e0 100644 --- a/modules/news/NewsModule.php +++ b/modules/news/NewsModule.php @@ -6,7 +6,7 @@ class NewsModule extends \yii\easyii\components\Module public $settings = [ 'enableThumb' => true, 'enableShort' => true, - 'shortMaxLength' => 256 + 'shortMaxLength' => 256, ]; public static $installConfig = [ diff --git a/modules/news/api/News.php b/modules/news/api/News.php index 376792b..4943bb2 100644 --- a/modules/news/api/News.php +++ b/modules/news/api/News.php @@ -3,6 +3,7 @@ use Yii; use yii\data\ActiveDataProvider; +use yii\helpers\Url; use yii\widgets\LinkPager; use yii\easyii\modules\news\models\News as NewsModel; diff --git a/modules/news/controllers/AController.php b/modules/news/controllers/AController.php index 6159984..ff975b5 100644 --- a/modules/news/controllers/AController.php +++ b/modules/news/controllers/AController.php @@ -58,7 +58,7 @@ public function actionCreate() if($model->save()){ $this->flash('success', Yii::t('easyii/news', 'News created')); - return $this->redirect('/admin/news'); + return $this->redirect(['/admin/news']); } else{ $this->flash('error', Yii::t('easyii', 'Create error. {0}', $model->formatErrors())); @@ -79,7 +79,7 @@ public function actionEdit($id) if($model === null){ $this->flash('error', Yii::t('easyii', 'Not found')); - return $this->redirect('/admin/news'); + return $this->redirect(['/admin/news']); } if ($model->load(Yii::$app->request->post())) { diff --git a/modules/news/models/News.php b/modules/news/models/News.php index b9f3dfa..701e31e 100644 --- a/modules/news/models/News.php +++ b/modules/news/models/News.php @@ -46,7 +46,7 @@ public function behaviors() { return [ 'seo' => SeoBehavior::className(), - [ + 'sluggable' => [ 'class' => SluggableBehavior::className(), 'attribute' => 'title', 'ensureUnique' => true diff --git a/modules/news/views/a/_form.php b/modules/news/views/a/_form.php index e71e1c1..68447dd 100644 --- a/modules/news/views/a/_form.php +++ b/modules/news/views/a/_form.php @@ -2,6 +2,7 @@ use dosamigos\datepicker\DatePicker; use yii\easyii\helpers\Image; use yii\helpers\Html; +use yii\helpers\Url; use yii\widgets\ActiveForm; use yii\easyii\widgets\Redactor; use yii\easyii\widgets\SeoForm; @@ -15,8 +16,8 @@ field($model, 'title') ?> context->module->settings['enableThumb']) : ?> image) : ?> - - + + field($model, 'image')->fileInput() ?> @@ -26,8 +27,8 @@ field($model, 'text')->widget(Redactor::className(),[ 'options' => [ 'minHeight' => 400, - 'imageUpload' => '/admin/redactor/upload?dir=news', - 'fileUpload' => '/admin/redactor/upload?dir=news', + 'imageUpload' => Url::to(['/admin/redactor/upload', 'dir' => 'news']), + 'fileUpload' => Url::to(['/admin/redactor/upload', 'dir' => 'news']), 'plugins' => ['fullscreen'] ] ]) ?> diff --git a/modules/news/views/a/_menu.php b/modules/news/views/a/_menu.php index b868fdf..3ce2bac 100644 --- a/modules/news/views/a/_menu.php +++ b/modules/news/views/a/_menu.php @@ -1,15 +1,17 @@ context->action->id; ?>
\ No newline at end of file diff --git a/modules/news/views/a/index.php b/modules/news/views/a/index.php index 267f113..1db80a4 100644 --- a/modules/news/views/a/index.php +++ b/modules/news/views/a/index.php @@ -1,6 +1,7 @@ title = Yii::t('easyii/news', 'News'); ?> @@ -26,16 +27,16 @@ primaryKey ?> - title ?> + title ?> views ?> status == News::STATUS_ON, [ 'class' => 'switch', 'data-id' => $item->primaryKey, - 'data-link' => '/admin/news/a/' + 'data-link' => Url::to(['/admin/news/a/']), ]) ?> - + diff --git a/modules/page/PageModule.php b/modules/page/PageModule.php index ea29383..93f9dea 100644 --- a/modules/page/PageModule.php +++ b/modules/page/PageModule.php @@ -5,10 +5,6 @@ class PageModule extends \yii\easyii\components\Module { - public $settings = [ - 'autoSlug' => true - ]; - public static $installConfig = [ 'title' => [ 'en' => 'Pages', diff --git a/modules/page/api/Page.php b/modules/page/api/Page.php index bf4c5ab..5caab0e 100644 --- a/modules/page/api/Page.php +++ b/modules/page/api/Page.php @@ -32,6 +32,7 @@ private function notFound($id_slug) $a = Html::a(Yii::t('easyii/page/api', 'Create page'), ['/admin/page/a/create', 'slug' => $id_slug], ['target' => '_blank']); $page->title = $a; $page->text = $a; + } return new PageObject($page); diff --git a/modules/page/controllers/AController.php b/modules/page/controllers/AController.php index 425fc9c..146ce97 100644 --- a/modules/page/controllers/AController.php +++ b/modules/page/controllers/AController.php @@ -34,7 +34,7 @@ public function actionCreate($slug = null) else{ if($model->save()){ $this->flash('success', Yii::t('easyii/page', 'Page created')); - return $this->redirect('/admin/page'); + return $this->redirect(['/admin/page']); } else{ $this->flash('error', Yii::t('easyii', 'Create error. {0}', $model->formatErrors())); @@ -57,7 +57,7 @@ public function actionEdit($id) if($model === null){ $this->flash('error', Yii::t('easyii', 'Not found')); - return $this->redirect('/admin/page'); + return $this->redirect(['/admin/page']); } if ($model->load(Yii::$app->request->post())) { diff --git a/modules/page/models/Page.php b/modules/page/models/Page.php index b8a0266..0029298 100644 --- a/modules/page/models/Page.php +++ b/modules/page/models/Page.php @@ -2,7 +2,6 @@ namespace yii\easyii\modules\page\models; use Yii; -use yii\behaviors\SluggableBehavior; use yii\easyii\behaviors\SeoBehavior; class Page extends \yii\easyii\components\ActiveRecord @@ -20,9 +19,7 @@ public function rules() ['title', 'string', 'max' => 128], ['slug', 'match', 'pattern' => self::$SLUG_PATTERN, 'message' => Yii::t('easyii', 'Slug can contain only 0-9, a-z and "-" characters (max: 128).')], ['slug', 'default', 'value' => null], - ['slug', 'unique', 'when' => function($model){ - return $model->slug && !self::autoSlug(); - }], + ['slug', 'unique'], ]; } @@ -41,21 +38,4 @@ public function behaviors() 'seo' => SeoBehavior::className(), ]; } - - public function beforeValidate() - { - if(self::autoSlug() && (!$this->isNewRecord || ($this->isNewRecord && $this->slug == ''))){ - $this->attachBehavior('sluggable', [ - 'class' => SluggableBehavior::className(), - 'attribute' => 'title', - 'ensureUnique' => true - ]); - } - return parent::beforeValidate(); - } - - public static function autoSlug() - { - return Yii::$app->getModule('admin')->activeModules['page']->settings['autoSlug']; - } } \ No newline at end of file diff --git a/modules/page/views/a/_form.php b/modules/page/views/a/_form.php index 65bdbe4..ca5e603 100644 --- a/modules/page/views/a/_form.php +++ b/modules/page/views/a/_form.php @@ -1,5 +1,6 @@ field($model, 'text')->widget(Redactor::className(),[ 'options' => [ 'minHeight' => 400, - 'imageUpload' => '/admin/redactor/upload?dir=pages', - 'fileUpload' => '/admin/redactor/upload?dir=pages', + 'imageUpload' => Url::to(['/admin/redactor/upload', 'dir' => 'pages']), + 'fileUpload' => Url::to(['/admin/redactor/upload', 'dir' => 'pages']), 'plugins' => ['fullscreen'] ] ]) ?> diff --git a/modules/page/views/a/_menu.php b/modules/page/views/a/_menu.php index 6732570..364914a 100644 --- a/modules/page/views/a/_menu.php +++ b/modules/page/views/a/_menu.php @@ -1,23 +1,25 @@ context->action->id; ?>