Commit ba196ec2a73b4cb2d3c0e6755a8f6c57bb4fd8e2

Authored by Alexey Boroda
1 parent 3b1725bf

-Blog in process

controllers/ArticleController.php
@@ -87,22 +87,22 @@ @@ -87,22 +87,22 @@
87 { 87 {
88 $model = new Article(); 88 $model = new Article();
89 $model->generateLangs(); 89 $model->generateLangs();
90 -  
91 - $categories = ArrayHelper::map(  
92 - BlogCategory::find()  
93 - ->joinWith('lang')  
94 - ->all(),  
95 - 'id',  
96 - 'lang.title'  
97 - );  
98 -  
99 - $tags = ArrayHelper::map(  
100 - BlogTag::find()  
101 - ->joinWith('lang')  
102 - ->all(),  
103 - 'id',  
104 - 'lang.label'  
105 - ); 90 +
  91 + // $categories = ArrayHelper::map(
  92 + // BlogCategory::find()
  93 + // ->joinWith('lang')
  94 + // ->all(),
  95 + // 'id',
  96 + // 'lang.title'
  97 + // );
  98 + //
  99 + // $tags = ArrayHelper::map(
  100 + // BlogTag::find()
  101 + // ->joinWith('lang')
  102 + // ->all(),
  103 + // 'id',
  104 + // 'lang.label'
  105 + // );
106 106
107 if ($model->load(Yii::$app->request->post())) { 107 if ($model->load(Yii::$app->request->post())) {
108 $model->loadLangs(\Yii::$app->request); 108 $model->loadLangs(\Yii::$app->request);
@@ -153,8 +153,8 @@ @@ -153,8 +153,8 @@
153 [ 153 [
154 'model' => $model, 154 'model' => $model,
155 'modelLangs' => $model->modelLangs, 155 'modelLangs' => $model->modelLangs,
156 - 'categories' => $categories,  
157 - 'tags' => $tags, 156 + // 'categories' => $categories,
  157 + // 'tags' => $tags,
158 'products' => [], 158 'products' => [],
159 'articles' => [], 159 'articles' => [],
160 ] 160 ]
@@ -287,75 +287,75 @@ @@ -287,75 +287,75 @@
287 return $this->redirect([ 'index' ]); 287 return $this->redirect([ 'index' ]);
288 } 288 }
289 289
290 - public function actionDeleteImage($id)  
291 - {  
292 - $model = $this->findModel($id);  
293 - $model->image = null;  
294 - $model->updateAttributes(['image']);  
295 - return true;  
296 - }  
297 -  
298 /** 290 /**
299 * Finds the BlogArticle model based on its primary key value. 291 * Finds the BlogArticle model based on its primary key value.
300 * If the model is not found, a 404 HTTP exception will be thrown. 292 * If the model is not found, a 404 HTTP exception will be thrown.
  293 +
  294 +*
  295 +*@param integer $id
301 * 296 *
302 - * @param integer $id  
303 - *  
304 - * @return BlogArticle the loaded model 297 +*@return Article the loaded model
305 * @throws NotFoundHttpException if the model cannot be found 298 * @throws NotFoundHttpException if the model cannot be found
306 */ 299 */
307 protected function findModel($id) 300 protected function findModel($id)
308 { 301 {
309 - if (( $model = BlogArticle::findOne($id) ) !== NULL) { 302 + if (( $model = Article::findOne($id) ) !== null) {
310 return $model; 303 return $model;
311 } else { 304 } else {
312 throw new NotFoundHttpException('The requested page does not exist.'); 305 throw new NotFoundHttpException('The requested page does not exist.');
313 } 306 }
314 } 307 }
315 -  
316 - /**  
317 - * @param string $q  
318 - * @param null $id  
319 - *  
320 - * @return array  
321 - */  
322 - public function actionProductList($q = NULL, $id = NULL) 308 +
  309 + public function actionList($q = null, $id = null)
323 { 310 {
324 \Yii::$app->response->format = Response::FORMAT_JSON; 311 \Yii::$app->response->format = Response::FORMAT_JSON;
325 $out = [ 312 $out = [
326 'results' => [ 313 'results' => [
327 - 'id' => '',  
328 - 'text' => '', 314 + [
  315 + 'id' => '',
  316 + 'text' => '',
  317 + ],
329 ], 318 ],
330 ]; 319 ];
331 if (!is_null($q)) { 320 if (!is_null($q)) {
332 - $out[ 'results' ] = Product::find()  
333 - ->joinWith('lang')  
334 - ->select(  
335 - [  
336 - 'id',  
337 - 'product_lang.title as text',  
338 - ]  
339 - )  
340 - ->where(  
341 - [  
342 - 'like',  
343 - 'product_lang.title',  
344 - $q,  
345 - ]  
346 - )  
347 - ->limit(20)  
348 - ->asArray()  
349 - ->all();  
350 - } elseif ($id > 0) {  
351 - $out[ 'results' ] = [  
352 - 'id' => $id,  
353 - 'text' => Product::find() 321 + $categories = Article::find()
354 ->joinWith('lang') 322 ->joinWith('lang')
355 - ->where([ 'id' => $id ])  
356 - ->one()->title,  
357 - ]; 323 + ->select(
  324 + [
  325 + 'id',
  326 + 'text' => 'category_lang.title',
  327 + ]
  328 + )
  329 + ->filterWhere(
  330 + [
  331 + '!=',
  332 + 'id',
  333 + $id,
  334 + ]
  335 + )
  336 + ->andFilterWhere(
  337 + [
  338 + 'like',
  339 + 'category_lang.title',
  340 + $q,
  341 + ]
  342 + )
  343 + ->andFilterWhere(
  344 + [
  345 + '!=',
  346 + 'parent_id',
  347 + $id,
  348 + ]
  349 + )
  350 + ->limit(20)
  351 + ->asArray()
  352 + ->all();
  353 +
  354 + if (!empty($categories)) {
  355 + $out[ 'results' ] = $categories;
  356 + }
358 } 357 }
  358 +
359 return $out; 359 return $out;
360 } 360 }
361 361
controllers/BlogCategoryController.php renamed to controllers/CategoryController.php
1 <?php 1 <?php
2 2
3 namespace artbox\weblog\controllers; 3 namespace artbox\weblog\controllers;
4 - 4 +
  5 + use artbox\weblog\models\CategorySearch;
5 use Yii; 6 use Yii;
6 - use artbox\weblog\models\BlogCategory;  
7 - use artbox\weblog\models\BlogCategorySearch;  
8 use yii\helpers\ArrayHelper; 7 use yii\helpers\ArrayHelper;
9 use yii\web\Controller; 8 use yii\web\Controller;
10 use yii\web\NotFoundHttpException; 9 use yii\web\NotFoundHttpException;
11 use yii\filters\VerbFilter; 10 use yii\filters\VerbFilter;
12 - 11 +
13 /** 12 /**
14 * BlogCategoryController implements the CRUD actions for BlogCategory model. 13 * BlogCategoryController implements the CRUD actions for BlogCategory model.
15 */ 14 */
16 - class BlogCategoryController extends Controller 15 + class CategoryController extends Controller
17 { 16 {
18 /** 17 /**
19 * @inheritdoc 18 * @inheritdoc
20 */ 19 */
  20 + public function getViewPath()
  21 + {
  22 + return '@artbox/weblog/views/blog-category';
  23 + }
  24 +
  25 + /**
  26 + * @inheritdoc
  27 + */
21 public function behaviors() 28 public function behaviors()
22 { 29 {
23 return [ 30 return [
@@ -29,7 +36,7 @@ @@ -29,7 +36,7 @@
29 ], 36 ],
30 ]; 37 ];
31 } 38 }
32 - 39 +
33 /** 40 /**
34 * Lists all BlogCategory models. 41 * Lists all BlogCategory models.
35 * 42 *
@@ -37,9 +44,9 @@ @@ -37,9 +44,9 @@
37 */ 44 */
38 public function actionIndex() 45 public function actionIndex()
39 { 46 {
40 - $searchModel = new BlogCategorySearch(); 47 + $searchModel = new CategorySearch();
41 $dataProvider = $searchModel->search(Yii::$app->request->queryParams); 48 $dataProvider = $searchModel->search(Yii::$app->request->queryParams);
42 - 49 +
43 return $this->render( 50 return $this->render(
44 'index', 51 'index',
45 [ 52 [
@@ -48,7 +55,7 @@ @@ -48,7 +55,7 @@
48 ] 55 ]
49 ); 56 );
50 } 57 }
51 - 58 +
52 /** 59 /**
53 * Displays a single BlogCategory model. 60 * Displays a single BlogCategory model.
54 * 61 *
@@ -65,7 +72,7 @@ @@ -65,7 +72,7 @@
65 ] 72 ]
66 ); 73 );
67 } 74 }
68 - 75 +
69 /** 76 /**
70 * Creates a new BlogCategory model. 77 * Creates a new BlogCategory model.
71 * If creation is successful, the browser will be redirected to the 'view' page. 78 * If creation is successful, the browser will be redirected to the 'view' page.
@@ -88,7 +95,7 @@ @@ -88,7 +95,7 @@
88 'id', 95 'id',
89 'lang.title' 96 'lang.title'
90 ); 97 );
91 - 98 +
92 if ($model->load(Yii::$app->request->post())) { 99 if ($model->load(Yii::$app->request->post())) {
93 $model->loadLangs(\Yii::$app->request); 100 $model->loadLangs(\Yii::$app->request);
94 if ($model->save() && $model->transactionStatus) { 101 if ($model->save() && $model->transactionStatus) {
@@ -108,9 +115,9 @@ @@ -108,9 +115,9 @@
108 'parentCategories' => $parentCategories, 115 'parentCategories' => $parentCategories,
109 ] 116 ]
110 ); 117 );
111 - 118 +
112 } 119 }
113 - 120 +
114 /** 121 /**
115 * Updates an existing BlogCategory model. 122 * Updates an existing BlogCategory model.
116 * If update is successful, the browser will be redirected to the 'view' page. 123 * If update is successful, the browser will be redirected to the 'view' page.
@@ -142,7 +149,7 @@ @@ -142,7 +149,7 @@
142 'id', 149 'id',
143 'lang.title' 150 'lang.title'
144 ); 151 );
145 - 152 +
146 if ($model->load(Yii::$app->request->post())) { 153 if ($model->load(Yii::$app->request->post())) {
147 $model->loadLangs(\Yii::$app->request); 154 $model->loadLangs(\Yii::$app->request);
148 if ($model->save() && $model->transactionStatus) { 155 if ($model->save() && $model->transactionStatus) {
@@ -162,9 +169,9 @@ @@ -162,9 +169,9 @@
162 'parentCategories' => $parentCategories, 169 'parentCategories' => $parentCategories,
163 ] 170 ]
164 ); 171 );
165 - 172 +
166 } 173 }
167 - 174 +
168 /** 175 /**
169 * Deletes an existing BlogCategory model. 176 * Deletes an existing BlogCategory model.
170 * If deletion is successful, the browser will be redirected to the 'index' page. 177 * If deletion is successful, the browser will be redirected to the 'index' page.
@@ -177,7 +184,7 @@ @@ -177,7 +184,7 @@
177 { 184 {
178 $this->findModel($id) 185 $this->findModel($id)
179 ->delete(); 186 ->delete();
180 - 187 +
181 return $this->redirect([ 'index' ]); 188 return $this->redirect([ 'index' ]);
182 } 189 }
183 190
@@ -188,7 +195,7 @@ @@ -188,7 +195,7 @@
188 $model->updateAttributes(['image']); 195 $model->updateAttributes(['image']);
189 return true; 196 return true;
190 } 197 }
191 - 198 +
192 /** 199 /**
193 * Finds the BlogCategory model based on its primary key value. 200 * Finds the BlogCategory model based on its primary key value.
194 * If the model is not found, a 404 HTTP exception will be thrown. 201 * If the model is not found, a 404 HTTP exception will be thrown.
controllers/BlogTagController.php renamed to controllers/TagController.php
1 <?php 1 <?php
2 2
3 - namespace artweb\artbox\blog\controllers; 3 + namespace artbox\weblog\controllers;
4 4
  5 + use artbox\weblog\models\TagSearch;
5 use Yii; 6 use Yii;
6 - use artbox\weblog\models\BlogTag;  
7 - use artbox\weblog\models\BlogTagSearch;  
8 use yii\web\Controller; 7 use yii\web\Controller;
9 use yii\web\NotFoundHttpException; 8 use yii\web\NotFoundHttpException;
10 use yii\filters\VerbFilter; 9 use yii\filters\VerbFilter;
@@ -12,8 +11,13 @@ @@ -12,8 +11,13 @@
12 /** 11 /**
13 * BlogTagController implements the CRUD actions for BlogTag model. 12 * BlogTagController implements the CRUD actions for BlogTag model.
14 */ 13 */
15 - class BlogTagController extends Controller 14 + class TagController extends Controller
16 { 15 {
  16 + public function getViewPath()
  17 + {
  18 + return '@artbox/weblog/views/blog-tag';
  19 + }
  20 +
17 /** 21 /**
18 * @inheritdoc 22 * @inheritdoc
19 */ 23 */
@@ -36,7 +40,7 @@ @@ -36,7 +40,7 @@
36 */ 40 */
37 public function actionIndex() 41 public function actionIndex()
38 { 42 {
39 - $searchModel = new BlogTagSearch(); 43 + $searchModel = new TagSearch();
40 $dataProvider = $searchModel->search(Yii::$app->request->queryParams); 44 $dataProvider = $searchModel->search(Yii::$app->request->queryParams);
41 45
42 return $this->render( 46 return $this->render(
migrations/m161101_142334_blog_article.php
@@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@
13 'blog_article', 13 'blog_article',
14 [ 14 [
15 'id' => $this->primaryKey(), 15 'id' => $this->primaryKey(),
16 - 'image' => $this->string(255), 16 + 'image_id' => $this->integer(),
17 'created_at' => $this->integer(), 17 'created_at' => $this->integer(),
18 'updated_at' => $this->integer(), 18 'updated_at' => $this->integer(),
19 'deleted_at' => $this->integer(), 19 'deleted_at' => $this->integer(),
migrations/m161101_142752_blog_article_lang.php
@@ -12,19 +12,15 @@ @@ -12,19 +12,15 @@
12 $this->createTable( 12 $this->createTable(
13 'blog_article_lang', 13 'blog_article_lang',
14 [ 14 [
15 - 'id' => $this->primaryKey(),  
16 - 'blog_article_id' => $this->integer() 15 + 'id' => $this->primaryKey(),
  16 + 'blog_article_id' => $this->integer()
17 ->notNull(), 17 ->notNull(),
18 - 'language_id' => $this->integer()  
19 - ->notNull(),  
20 - 'title' => $this->string(255),  
21 - 'body' => $this->text(),  
22 - 'body_preview' => $this->text(),  
23 - 'alias' => $this->string(255),  
24 - 'meta_title' => $this->string(255),  
25 - 'meta_description' => $this->string(255),  
26 - 'h1' => $this->string(255),  
27 - 'seo_text' => $this->string(255), 18 + 'language_id' => $this->integer()
  19 + ->notNull(),
  20 + 'title' => $this->string(255),
  21 + 'body' => $this->text(),
  22 + 'body_preview' => $this->text(),
  23 + 'alias_id' => $this->integer(),
28 ] 24 ]
29 ); 25 );
30 26
@@ -44,7 +40,7 @@ @@ -44,7 +40,7 @@
44 $this->createIndex( 40 $this->createIndex(
45 'blog_article_alias_uk', 41 'blog_article_alias_uk',
46 'blog_article_lang', 42 'blog_article_lang',
47 - 'alias', 43 + 'alias_id',
48 true 44 true
49 ); 45 );
50 46
migrations/m161101_143033_blog_category.php
@@ -14,7 +14,7 @@ @@ -14,7 +14,7 @@
14 [ 14 [
15 'id' => $this->primaryKey(), 15 'id' => $this->primaryKey(),
16 'sort' => $this->integer(), 16 'sort' => $this->integer(),
17 - 'image' => $this->string(255), 17 + 'image_id' => $this->integer(),
18 'parent_id' => $this->integer() 18 'parent_id' => $this->integer()
19 ->defaultValue(0), 19 ->defaultValue(0),
20 'status' => $this->boolean(), 20 'status' => $this->boolean(),
migrations/m161101_143259_blog_category_lang.php
@@ -18,12 +18,8 @@ @@ -18,12 +18,8 @@
18 'language_id' => $this->integer() 18 'language_id' => $this->integer()
19 ->notNull(), 19 ->notNull(),
20 'title' => $this->string(255), 20 'title' => $this->string(255),
21 - 'alias' => $this->string(255), 21 + 'alias_id' => $this->integer(),
22 'description' => $this->text(), 22 'description' => $this->text(),
23 - 'meta_title' => $this->string(255),  
24 - 'meta_description' => $this->string(255),  
25 - 'h1' => $this->string(255),  
26 - 'seo_text' => $this->string(255),  
27 ] 23 ]
28 ); 24 );
29 25
@@ -43,7 +39,7 @@ @@ -43,7 +39,7 @@
43 $this->createIndex( 39 $this->createIndex(
44 'blog_category_alias_uk', 40 'blog_category_alias_uk',
45 'blog_category_lang', 41 'blog_category_lang',
46 - 'alias', 42 + 'alias_id',
47 true 43 true
48 ); 44 );
49 45
migrations/m161101_143541_blog_article_to_category.php
@@ -12,7 +12,6 @@ @@ -12,7 +12,6 @@
12 $this->createTable( 12 $this->createTable(
13 'blog_article_to_category', 13 'blog_article_to_category',
14 [ 14 [
15 - 'id' => $this->primaryKey(),  
16 'blog_article_id' => $this->integer() 15 'blog_article_id' => $this->integer()
17 ->notNull(), 16 ->notNull(),
18 'blog_category_id' => $this->integer() 17 'blog_category_id' => $this->integer()
migrations/m161101_143939_blog_tag_lang.php
@@ -17,6 +17,7 @@ @@ -17,6 +17,7 @@
17 ->notNull(), 17 ->notNull(),
18 'language_id' => $this->integer() 18 'language_id' => $this->integer()
19 ->notNull(), 19 ->notNull(),
  20 + 'alias_id' => $this->integer(),
20 'label' => $this->string(255), 21 'label' => $this->string(255),
21 ] 22 ]
22 ); 23 );
@@ -33,6 +34,8 @@ @@ -33,6 +34,8 @@
33 ], 34 ],
34 true 35 true
35 ); 36 );
  37 +
  38 + $this->createIndex('blog_tag_lang_auk', 'blog_tag_lang', 'alias_id', true);
36 39
37 $this->addForeignKey( 40 $this->addForeignKey(
38 'blog_tag_lang_fk', 41 'blog_tag_lang_fk',
migrations/m161101_144140_blog_article_to_tag.php
@@ -12,7 +12,6 @@ @@ -12,7 +12,6 @@
12 $this->createTable( 12 $this->createTable(
13 'blog_article_to_tag', 13 'blog_article_to_tag',
14 [ 14 [
15 - 'id' => $this->primaryKey(),  
16 'blog_article_id' => $this->integer() 15 'blog_article_id' => $this->integer()
17 ->notNull(), 16 ->notNull(),
18 'blog_tag_id' => $this->integer() 17 'blog_tag_id' => $this->integer()
migrations/m161101_144312_blog_article_to_article.php
@@ -12,7 +12,6 @@ @@ -12,7 +12,6 @@
12 $this->createTable( 12 $this->createTable(
13 'blog_article_to_article', 13 'blog_article_to_article',
14 [ 14 [
15 - 'id' => $this->primaryKey(),  
16 'blog_article_id' => $this->integer() 15 'blog_article_id' => $this->integer()
17 ->notNull(), 16 ->notNull(),
18 'related_blog_article_id' => $this->integer() 17 'related_blog_article_id' => $this->integer()
migrations/m161101_144434_blog_article_to_product.php
@@ -12,7 +12,6 @@ @@ -12,7 +12,6 @@
12 $this->createTable( 12 $this->createTable(
13 'blog_article_to_product', 13 'blog_article_to_product',
14 [ 14 [
15 - 'id' => $this->primaryKey(),  
16 'blog_article_id' => $this->integer() 15 'blog_article_id' => $this->integer()
17 ->notNull(), 16 ->notNull(),
18 'product_id' => $this->integer() 17 'product_id' => $this->integer()
models/Article.php
@@ -90,6 +90,7 @@ @@ -90,6 +90,7 @@
90 'deleted_at', 90 'deleted_at',
91 'sort', 91 'sort',
92 'author_id', 92 'author_id',
  93 + 'image_id',
93 ], 94 ],
94 'integer', 95 'integer',
95 ], 96 ],
@@ -97,11 +98,6 @@ @@ -97,11 +98,6 @@
97 [ 'status' ], 98 [ 'status' ],
98 'boolean', 99 'boolean',
99 ], 100 ],
100 - [  
101 - [ 'image' ],  
102 - 'string',  
103 - 'max' => 255,  
104 - ],  
105 ]; 101 ];
106 } 102 }
107 103
models/ArticleLang.php
1 <?php 1 <?php
2 2
3 namespace artbox\weblog\models; 3 namespace artbox\weblog\models;
4 - 4 +
  5 + use artbox\core\behaviors\SlugBehavior;
5 use artbox\core\models\Language; 6 use artbox\core\models\Language;
6 use yii\db\ActiveRecord; 7 use yii\db\ActiveRecord;
7 - 8 +
8 /** 9 /**
9 * This is the model class for table "blog_article_lang". 10 * This is the model class for table "blog_article_lang".
10 * 11 *
@@ -31,12 +32,23 @@ @@ -31,12 +32,23 @@
31 { 32 {
32 return 'blog_article_lang'; 33 return 'blog_article_lang';
33 } 34 }
34 - 35 +
35 public function behaviors() 36 public function behaviors()
36 { 37 {
37 - return []; 38 + return [
  39 + 'slug' => [
  40 + 'class' => SlugBehavior::className(),
  41 + 'action' => 'article/view',
  42 + 'params' => [
  43 + 'id' => 'blog_article_id',
  44 + ],
  45 + 'fields' => [
  46 + 'title' => 'Article title',
  47 + ],
  48 + ],
  49 + ];
38 } 50 }
39 - 51 +
40 /** 52 /**
41 * @inheritdoc 53 * @inheritdoc
42 */ 54 */
@@ -68,19 +80,11 @@ @@ -68,19 +80,11 @@
68 [ 80 [
69 [ 81 [
70 'title', 82 'title',
71 - 'alias',  
72 - 'meta_title',  
73 - 'meta_description',  
74 - 'h1',  
75 - 'seo_text',  
76 ], 83 ],
77 'string', 84 'string',
78 'max' => 255, 85 'max' => 255,
79 ], 86 ],
80 - [  
81 - [ 'alias' ],  
82 - 'unique',  
83 - ], 87 +
84 [ 88 [
85 [ 89 [
86 'blog_article_id', 90 'blog_article_id',
@@ -109,7 +113,7 @@ @@ -109,7 +113,7 @@
109 ], 113 ],
110 ]; 114 ];
111 } 115 }
112 - 116 +
113 /** 117 /**
114 * @inheritdoc 118 * @inheritdoc
115 */ 119 */
@@ -129,7 +133,7 @@ @@ -129,7 +133,7 @@
129 'seo_text' => 'Seo Text', 133 'seo_text' => 'Seo Text',
130 ]; 134 ];
131 } 135 }
132 - 136 +
133 /** 137 /**
134 * @return \yii\db\ActiveQuery 138 * @return \yii\db\ActiveQuery
135 */ 139 */
@@ -137,7 +141,7 @@ @@ -137,7 +141,7 @@
137 { 141 {
138 return $this->hasOne(Article::className(), [ 'id' => 'blog_article_id' ]); 142 return $this->hasOne(Article::className(), [ 'id' => 'blog_article_id' ]);
139 } 143 }
140 - 144 +
141 /** 145 /**
142 * @return \yii\db\ActiveQuery 146 * @return \yii\db\ActiveQuery
143 */ 147 */
models/ArticleSearch.php
@@ -30,10 +30,6 @@ @@ -30,10 +30,6 @@
30 'integer', 30 'integer',
31 ], 31 ],
32 [ 32 [
33 - [ 'image' ],  
34 - 'safe',  
35 - ],  
36 - [  
37 [ 'status' ], 33 [ 'status' ],
38 'boolean', 34 'boolean',
39 ], 35 ],
@@ -112,14 +108,6 @@ @@ -112,14 +108,6 @@
112 $query->andFilterWhere( 108 $query->andFilterWhere(
113 [ 109 [
114 'like', 110 'like',
115 - 'image',  
116 - $this->image,  
117 - ]  
118 - );  
119 -  
120 - $query->andFilterWhere(  
121 - [  
122 - 'like',  
123 'blog_article_lang.title', 111 'blog_article_lang.title',
124 $this->title, 112 $this->title,
125 ] 113 ]
models/BlogCategory.php renamed to models/Category.php
@@ -10,13 +10,14 @@ @@ -10,13 +10,14 @@
10 10
11 /** 11 /**
12 * This is the model class for table "blog_category". 12 * This is the model class for table "blog_category".
13 - *  
14 - * @property integer $id 13 +
  14 +*
  15 +*@property integer $id
15 * @property integer $sort 16 * @property integer $sort
16 * @property string $image 17 * @property string $image
17 * @property integer $parent_id 18 * @property integer $parent_id
18 * @property boolean $status 19 * @property boolean $status
19 - * @property BlogArticle[] $blogArticles 20 + * @property Article[] $blogArticles
20 * @property BlogCategoryLang[] $blogCategoryLangs 21 * @property BlogCategoryLang[] $blogCategoryLangs
21 * @property Language[] $languages 22 * @property Language[] $languages
22 * @property BlogCategory $parent 23 * @property BlogCategory $parent
@@ -47,7 +48,7 @@ @@ -47,7 +48,7 @@
47 * @method string|null getImageUrl( int $field ) 48 * @method string|null getImageUrl( int $field )
48 * * End SaveImgBehavior 49 * * End SaveImgBehavior
49 */ 50 */
50 - class BlogCategory extends ActiveRecord 51 + class Category extends ActiveRecord
51 { 52 {
52 /** 53 /**
53 * @inheritdoc 54 * @inheritdoc
@@ -63,21 +64,9 @@ @@ -63,21 +64,9 @@
63 public function behaviors() 64 public function behaviors()
64 { 65 {
65 return [ 66 return [
66 - [  
67 - 'class' => SaveImgBehavior::className(),  
68 - 'fields' => [  
69 - [  
70 - 'name' => 'image',  
71 - 'directory' => 'blog/category',  
72 - ],  
73 - ],  
74 - ],  
75 'language' => [ 67 'language' => [
76 'class' => LanguageBehavior::className(), 68 'class' => LanguageBehavior::className(),
77 ], 69 ],
78 - 'Slug' => [  
79 - 'class' => 'artweb\artbox\behaviors\Slug',  
80 - ],  
81 ]; 70 ];
82 } 71 }
83 72
models/BlogCategoryLang.php renamed to models/CategoryLang.php
1 <?php 1 <?php
2 2
3 namespace artbox\weblog\models; 3 namespace artbox\weblog\models;
4 - 4 +
  5 + use artbox\core\behaviors\SlugBehavior;
5 use yii\db\ActiveRecord; 6 use yii\db\ActiveRecord;
6 use artbox\core\models\Language; 7 use artbox\core\models\Language;
7 - 8 +
8 /** 9 /**
9 * This is the model class for table "blog_category_lang". 10 * This is the model class for table "blog_category_lang".
10 - *  
11 - * @property integer $id  
12 - * @property integer $blog_category_id  
13 - * @property integer $language_id  
14 - * @property string $title  
15 - * @property string $alias  
16 - * @property string $description  
17 - * @property string $meta_title  
18 - * @property string $meta_description  
19 - * @property string $h1  
20 - * @property string $seo_text  
21 - * @property BlogCategory $blogCategory  
22 - * @property Language $language 11 +
  12 +*
  13 + * @property integer $id
  14 + * @property integer $blog_category_id
  15 + * @property integer $language_id
  16 + * @property string $title
  17 + * @property string $alias
  18 + * @property string $description
  19 + * @property string $meta_title
  20 + * @property string $meta_description
  21 + * @property string $h1
  22 + * @property string $seo_text
  23 + * @property Category $blogCategory
  24 + * @property Language $language
23 */ 25 */
24 - class BlogCategoryLang extends ActiveRecord 26 + class CategoryLang extends ActiveRecord
25 { 27 {
26 /** 28 /**
27 * @inheritdoc 29 * @inheritdoc
@@ -30,16 +32,23 @@ @@ -30,16 +32,23 @@
30 { 32 {
31 return 'blog_category_lang'; 33 return 'blog_category_lang';
32 } 34 }
33 - 35 +
34 public function behaviors() 36 public function behaviors()
35 { 37 {
36 return [ 38 return [
37 'slug' => [ 39 'slug' => [
38 - 'class' => 'artweb\artbox\behaviors\Slug', 40 + 'class' => SlugBehavior::className(),
  41 + 'action' => 'blog-category/view',
  42 + 'params' => [
  43 + 'id' => 'blog_category_id',
  44 + ],
  45 + 'fields' => [
  46 + 'title' => 'Category title',
  47 + ],
39 ], 48 ],
40 ]; 49 ];
41 } 50 }
42 - 51 +
43 /** 52 /**
44 * @inheritdoc 53 * @inheritdoc
45 */ 54 */
@@ -108,7 +117,7 @@ @@ -108,7 +117,7 @@
108 ], 117 ],
109 ]; 118 ];
110 } 119 }
111 - 120 +
112 /** 121 /**
113 * @inheritdoc 122 * @inheritdoc
114 */ 123 */
@@ -127,7 +136,7 @@ @@ -127,7 +136,7 @@
127 'seo_text' => 'Seo Text', 136 'seo_text' => 'Seo Text',
128 ]; 137 ];
129 } 138 }
130 - 139 +
131 /** 140 /**
132 * @return \yii\db\ActiveQuery 141 * @return \yii\db\ActiveQuery
133 */ 142 */
@@ -135,7 +144,7 @@ @@ -135,7 +144,7 @@
135 { 144 {
136 return $this->hasOne(BlogCategory::className(), [ 'id' => 'blog_category_id' ]); 145 return $this->hasOne(BlogCategory::className(), [ 'id' => 'blog_category_id' ]);
137 } 146 }
138 - 147 +
139 /** 148 /**
140 * @return \yii\db\ActiveQuery 149 * @return \yii\db\ActiveQuery
141 */ 150 */
models/BlogCategorySearch.php renamed to models/CategorySearch.php
@@ -8,7 +8,7 @@ @@ -8,7 +8,7 @@
8 /** 8 /**
9 * BlogCategorySearch represents the model behind the search form about `artweb\artbox\blog\models\BlogCategory`. 9 * BlogCategorySearch represents the model behind the search form about `artweb\artbox\blog\models\BlogCategory`.
10 */ 10 */
11 - class BlogCategorySearch extends BlogCategory 11 + class CategorySearch extends Category
12 { 12 {
13 /** 13 /**
14 * @var string 14 * @var string
@@ -29,10 +29,6 @@ @@ -29,10 +29,6 @@
29 'integer', 29 'integer',
30 ], 30 ],
31 [ 31 [
32 - [ 'image' ],  
33 - 'safe',  
34 - ],  
35 - [  
36 [ 'status' ], 32 [ 'status' ],
37 'boolean', 33 'boolean',
38 ], 34 ],
@@ -69,8 +65,8 @@ @@ -69,8 +65,8 @@
69 */ 65 */
70 public function search($params) 66 public function search($params)
71 { 67 {
72 - $query = BlogCategory::find()  
73 - ->joinWith('lang', 'parent.lang'); 68 + $query = Category::find()
  69 + ->joinWith('lang', 'parent.lang');
74 70
75 // add conditions that should always apply here 71 // add conditions that should always apply here
76 72
@@ -110,14 +106,6 @@ @@ -110,14 +106,6 @@
110 $query->andFilterWhere( 106 $query->andFilterWhere(
111 [ 107 [
112 'like', 108 'like',
113 - 'image',  
114 - $this->image,  
115 - ]  
116 - );  
117 -  
118 - $query->andFilterWhere(  
119 - [  
120 - 'like',  
121 'blog_category_lang.title', 109 'blog_category_lang.title',
122 $this->title, 110 $this->title,
123 ] 111 ]
models/BlogTag.php renamed to models/Tag.php
@@ -10,9 +10,10 @@ @@ -10,9 +10,10 @@
10 10
11 /** 11 /**
12 * This is the model class for table "blog_tag". 12 * This is the model class for table "blog_tag".
13 - *  
14 - * @property integer $id  
15 - * @property BlogArticle[] $blogArticles 13 +
  14 +*
  15 +*@property integer $id
  16 + * @property Article[] $blogArticles
16 * @property BlogTagLang[] $blogTagLangs 17 * @property BlogTagLang[] $blogTagLangs
17 * @property Language[] $languages 18 * @property Language[] $languages
18 * * From language behavior * 19 * * From language behavior *
@@ -36,7 +37,7 @@ @@ -36,7 +37,7 @@
36 * @method bool getTransactionStatus() 37 * @method bool getTransactionStatus()
37 * * End language behavior * 38 * * End language behavior *
38 */ 39 */
39 - class BlogTag extends ActiveRecord 40 + class Tag extends ActiveRecord
40 { 41 {
41 /** 42 /**
42 * @inheritdoc 43 * @inheritdoc
@@ -86,7 +87,7 @@ @@ -86,7 +87,7 @@
86 */ 87 */
87 public function getBlogArticles() 88 public function getBlogArticles()
88 { 89 {
89 - return $this->hasMany(BlogArticle::className(), [ 'id' => 'blog_article_id' ]) 90 + return $this->hasMany(Article::className(), [ 'id' => 'blog_article_id' ])
90 ->viaTable('blog_article_to_tag', [ 'blog_tag_id' => 'id' ]); 91 ->viaTable('blog_article_to_tag', [ 'blog_tag_id' => 'id' ]);
91 } 92 }
92 } 93 }
models/BlogTagLang.php renamed to models/TagLang.php
@@ -7,15 +7,16 @@ @@ -7,15 +7,16 @@
7 7
8 /** 8 /**
9 * This is the model class for table "blog_tag_lang". 9 * This is the model class for table "blog_tag_lang".
10 - *  
11 - * @property integer $id 10 +
  11 +*
  12 +*@property integer $id
12 * @property integer $blog_tag_id 13 * @property integer $blog_tag_id
13 * @property integer $language_id 14 * @property integer $language_id
14 * @property string $label 15 * @property string $label
15 - * @property BlogTag $blogTag 16 + * @property Tag $blogTag
16 * @property Language $language 17 * @property Language $language
17 */ 18 */
18 - class BlogTagLang extends ActiveRecord 19 + class TagLang extends ActiveRecord
19 { 20 {
20 /** 21 /**
21 * @inheritdoc 22 * @inheritdoc
@@ -66,7 +67,7 @@ @@ -66,7 +67,7 @@
66 [ 'blog_tag_id' ], 67 [ 'blog_tag_id' ],
67 'exist', 68 'exist',
68 'skipOnError' => true, 69 'skipOnError' => true,
69 - 'targetClass' => BlogTag::className(), 70 + 'targetClass' => Tag::className(),
70 'targetAttribute' => [ 'blog_tag_id' => 'id' ], 71 'targetAttribute' => [ 'blog_tag_id' => 'id' ],
71 ], 72 ],
72 [ 73 [
@@ -97,7 +98,7 @@ @@ -97,7 +98,7 @@
97 */ 98 */
98 public function getBlogTag() 99 public function getBlogTag()
99 { 100 {
100 - return $this->hasOne(BlogTag::className(), [ 'id' => 'blog_tag_id' ]); 101 + return $this->hasOne(Tag::className(), [ 'id' => 'blog_tag_id' ]);
101 } 102 }
102 103
103 /** 104 /**
models/BlogTagSearch.php renamed to models/TagSearch.php
@@ -8,7 +8,7 @@ @@ -8,7 +8,7 @@
8 /** 8 /**
9 * BlogTagSearch represents the model behind the search form about `artweb\artbox\blog\models\BlogTag`. 9 * BlogTagSearch represents the model behind the search form about `artweb\artbox\blog\models\BlogTag`.
10 */ 10 */
11 - class BlogTagSearch extends BlogTag 11 + class TagSearch extends Tag
12 { 12 {
13 /** 13 /**
14 * @var string 14 * @var string
@@ -58,8 +58,8 @@ @@ -58,8 +58,8 @@
58 */ 58 */
59 public function search($params) 59 public function search($params)
60 { 60 {
61 - $query = BlogTag::find()  
62 - ->joinWith('lang'); 61 + $query = Tag::find()
  62 + ->joinWith('lang');
63 63
64 // add conditions that should always apply here 64 // add conditions that should always apply here
65 65
views/blog-article/_form.php
1 <?php 1 <?php
2 2
3 - use artweb\artbox\blog\models\BlogArticle;  
4 - use artweb\artbox\blog\models\BlogArticleLang;  
5 - use artweb\artbox\blog\models\BlogCategory;  
6 - use artweb\artbox\blog\models\BlogTag; 3 + use artbox\weblog\models\Article;
  4 + use artbox\weblog\models\ArticleLang;
  5 +
  6 + // use artweb\artbox\blog\models\BlogCategory;
  7 + // use artweb\artbox\blog\models\BlogTag;
7 use kartik\select2\Select2; 8 use kartik\select2\Select2;
  9 + use noam148\imagemanager\components\ImageManagerInputWidget;
8 use yii\helpers\Html; 10 use yii\helpers\Html;
9 use yii\helpers\Url; 11 use yii\helpers\Url;
10 use yii\web\View; 12 use yii\web\View;
11 use yii\widgets\ActiveForm; 13 use yii\widgets\ActiveForm;
12 - use artweb\artbox\language\widgets\LanguageForm; 14 + use artbox\core\widgets\LanguageForm;
13 use yii\web\JsExpression; 15 use yii\web\JsExpression;
14 16
15 /** 17 /**
16 - * @var View $this  
17 - * @var BlogArticle $model  
18 - * @var ActiveForm $form  
19 - * @var BlogArticleLang[] $modelLangs  
20 - * @var BlogCategory[] $categories  
21 - * @var BlogTag[] $tags  
22 - * @var array $products  
23 - * @var array $articles 18 + * @var View $this
  19 + * @var Article $model
  20 + * @var ActiveForm $form
  21 + * @var ArticleLang[] $modelLangs
  22 + * @var BlogCategory[] $categories
  23 + * @var BlogTag[] $tags
  24 + * @var array $products
  25 + * @var array $articles
24 */ 26 */
25 ?> 27 ?>
26 28
@@ -36,151 +38,137 @@ @@ -36,151 +38,137 @@
36 echo LanguageForm::widget( 38 echo LanguageForm::widget(
37 [ 39 [
38 'modelLangs' => $modelLangs, 40 'modelLangs' => $modelLangs,
39 - 'formView' => '@artweb/artbox/blog/views/blog-article/_form_language', 41 + 'formView' => '@artbox/weblog/views/blog-article/_form_language',
40 'form' => $form, 42 'form' => $form,
41 ] 43 ]
42 ); 44 );
43 ?> 45 ?>
44 46
45 <?php 47 <?php
46 - echo $form->field($model, 'blogCategories')  
47 - ->widget(  
48 - Select2::className(),  
49 - [  
50 - 'data' => $categories,  
51 - 'theme' => Select2::THEME_BOOTSTRAP,  
52 - 'options' => [  
53 - 'placeholder' => \Yii::t('blog', 'Select category'),  
54 - 'multiple' => true,  
55 - ],  
56 - 'pluginOptions' => [  
57 - 'allowClear' => true,  
58 - ],  
59 - ]  
60 - ); 48 + // echo $form->field($model, 'blogCategories')
  49 + // ->widget(
  50 + // Select2::className(),
  51 + // [
  52 + // 'data' => $categories,
  53 + // 'theme' => Select2::THEME_BOOTSTRAP,
  54 + // 'options' => [
  55 + // 'placeholder' => \Yii::t('blog', 'Select category'),
  56 + // 'multiple' => true,
  57 + // ],
  58 + // 'pluginOptions' => [
  59 + // 'allowClear' => true,
  60 + // ],
  61 + // ]
  62 + // );
61 ?> 63 ?>
62 64
63 <?php 65 <?php
64 - echo $form->field($model, 'blogTags')  
65 - ->widget(  
66 - Select2::className(),  
67 - [  
68 - 'data' => $tags,  
69 - 'theme' => Select2::THEME_BOOTSTRAP,  
70 - 'options' => [  
71 - 'placeholder' => \Yii::t('blog', 'Select tag'),  
72 - 'multiple' => true,  
73 - ],  
74 - 'pluginOptions' => [  
75 - 'allowClear' => true,  
76 - ],  
77 - ]  
78 - ); 66 + // echo $form->field($model, 'blogTags')
  67 + // ->widget(
  68 + // Select2::className(),
  69 + // [
  70 + // 'data' => $tags,
  71 + // 'theme' => Select2::THEME_BOOTSTRAP,
  72 + // 'options' => [
  73 + // 'placeholder' => \Yii::t('blog', 'Select tag'),
  74 + // 'multiple' => true,
  75 + // ],
  76 + // 'pluginOptions' => [
  77 + // 'allowClear' => true,
  78 + // ],
  79 + // ]
  80 + // );
79 ?> 81 ?>
80 82
81 - <?= $form->field($model, 'image') 83 + <?= $form->field($model, 'image_id')
82 ->widget( 84 ->widget(
83 - \kartik\file\FileInput::className(), 85 + ImageManagerInputWidget::className(),
84 [ 86 [
85 - 'language' => 'ru',  
86 - 'options' => [  
87 - 'accept' => 'image/*',  
88 - 'multiple' => false,  
89 - 'deleteurl' => $model->isNewRecord?false:Url::to(['/blog/blog-article/delete-image', 'id' => $model->id]),  
90 - 'class' => $model->isNewRecord?'':'artbox-delete-file',  
91 - ],  
92 - 'pluginOptions' => [  
93 - 'allowedFileExtensions' => [  
94 - 'jpg',  
95 - 'gif',  
96 - 'png',  
97 - ],  
98 - 'initialPreview' => !empty( $model->getImageUrl(0, false) ) ? \artweb\artbox\components\artboximage\ArtboxImageHelper::getImage(  
99 - $model->imageUrl,  
100 - 'list'  
101 - ) : '',  
102 - 'initialPreviewShowDelete' => false,  
103 - 'overwriteInitial' => true,  
104 - 'showRemove' => true,  
105 - 'showUpload' => false,  
106 - 'showClose' => false,  
107 - 'previewFileType' => 'image',  
108 - ], 87 + 'aspectRatio' => ( 16 / 9 ),
  88 + //set the aspect ratio
  89 + 'showPreview' => true,
  90 + //false to hide the preview
  91 + 'showDeletePickedImageConfirm' => false,
  92 + //on true show warning before detach image
109 ] 93 ]
110 ); ?> 94 ); ?>
111 95
112 <?php 96 <?php
113 - echo $form->field($model, 'products')  
114 - ->widget(  
115 - Select2::className(),  
116 - [  
117 - 'data' => $products,  
118 - 'options' => [  
119 - 'placeholder' => \Yii::t('blog', 'Select related products'),  
120 - 'multiple' => true,  
121 - ],  
122 - 'pluginOptions' => [  
123 - 'allowClear' => true,  
124 - 'minimumInputLength' => 3,  
125 - 'language' => [  
126 - 'errorLoading' => new JsExpression(  
127 - "function () { return '" . \Yii::t('blog', 'Waiting for results') . "'; }"  
128 - ),  
129 - ],  
130 - 'ajax' => [  
131 - 'url' => yii\helpers\Url::to([ '/blog/blog-article/product-list' ]),  
132 - 'dataType' => 'json',  
133 - 'data' => new JsExpression('function(params) { return {q:params.term}; }'),  
134 - ],  
135 - 'templateResult' => new JsExpression('function(product) { return product.text; }'),  
136 - 'templateSelection' => new JsExpression('function (product) { return product.text; }'),  
137 - ],  
138 - ]  
139 - ); 97 + // echo $form->field($model, 'products')
  98 + // ->widget(
  99 + // Select2::className(),
  100 + // [
  101 + // 'data' => $products,
  102 + // 'options' => [
  103 + // 'placeholder' => \Yii::t('blog', 'Select related products'),
  104 + // 'multiple' => true,
  105 + // ],
  106 + // 'pluginOptions' => [
  107 + // 'allowClear' => true,
  108 + // 'minimumInputLength' => 3,
  109 + // 'language' => [
  110 + // 'errorLoading' => new JsExpression(
  111 + // "function () { return '" . \Yii::t('blog', 'Waiting for results') . "'; }"
  112 + // ),
  113 + // ],
  114 + // 'ajax' => [
  115 + // 'url' => yii\helpers\Url::to([ '/blog/blog-article/product-list' ]),
  116 + // 'dataType' => 'json',
  117 + // 'data' => new JsExpression('function(params) { return {q:params.term}; }'),
  118 + // ],
  119 + // 'templateResult' => new JsExpression('function(product) { return product.text; }'),
  120 + // 'templateSelection' => new JsExpression('function (product) { return product.text; }'),
  121 + // ],
  122 + // ]
  123 + // );
140 ?> 124 ?>
141 125
142 <?php 126 <?php
143 - if (empty( $model->id )) {  
144 - $data = 'function(params) { return {q:params.term}; }';  
145 - } else {  
146 - $data = 'function(params) { return {q:params.term, id:' . $model->id . '}; }';  
147 - }  
148 - echo $form->field($model, 'blogArticles')  
149 - ->widget(  
150 - Select2::className(),  
151 - [  
152 - 'data' => $articles,  
153 - 'options' => [  
154 - 'placeholder' => \Yii::t('blog', 'Select related articles'),  
155 - 'multiple' => true,  
156 - ],  
157 - 'pluginOptions' => [  
158 - 'allowClear' => true,  
159 - 'minimumInputLength' => 3,  
160 - 'language' => [  
161 - 'errorLoading' => new JsExpression(  
162 - "function () { return '" . \Yii::t('blog', 'Waiting for results') . "'; }"  
163 - ),  
164 - ],  
165 - 'ajax' => [  
166 - 'url' => yii\helpers\Url::to([ '/blog/blog-article/article-list' ]),  
167 - 'dataType' => 'json',  
168 - 'data' => new JsExpression(  
169 - $data  
170 - ),  
171 - ],  
172 - 'templateResult' => new JsExpression('function(article) { return article.text; }'),  
173 - 'templateSelection' => new JsExpression('function (article) { return article.text; }'),  
174 - ],  
175 - ]  
176 - ); 127 + // if (empty( $model->id )) {
  128 + // $data = 'function(params) { return {q:params.term}; }';
  129 + // } else {
  130 + // $data = 'function(params) { return {q:params.term, id:' . $model->id . '}; }';
  131 + // }
  132 + // echo $form->field($model, 'blogArticles')
  133 + // ->widget(
  134 + // Select2::className(),
  135 + // [
  136 + // 'data' => $articles,
  137 + // 'options' => [
  138 + // 'placeholder' => \Yii::t('blog', 'Select related articles'),
  139 + // 'multiple' => true,
  140 + // ],
  141 + // 'pluginOptions' => [
  142 + // 'allowClear' => true,
  143 + // 'minimumInputLength' => 3,
  144 + // 'language' => [
  145 + // 'errorLoading' => new JsExpression(
  146 + // "function () { return '" . \Yii::t('blog', 'Waiting for results') . "'; }"
  147 + // ),
  148 + // ],
  149 + // 'ajax' => [
  150 + // 'url' => yii\helpers\Url::to([ '/blog/blog-article/article-list' ]),
  151 + // 'dataType' => 'json',
  152 + // 'data' => new JsExpression(
  153 + // $data
  154 + // ),
  155 + // ],
  156 + // 'templateResult' => new JsExpression('function(article) { return article.text; }'),
  157 + // 'templateSelection' => new JsExpression('function (article) { return article.text; }'),
  158 + // ],
  159 + // ]
  160 + // );
177 ?> 161 ?>
178 162
179 <?= $form->field($model, 'sort') 163 <?= $form->field($model, 'sort')
180 ->textInput() ?> 164 ->textInput() ?>
181 165
182 <?= $form->field($model, 'status') 166 <?= $form->field($model, 'status')
183 - ->checkbox() ?> 167 + ->checkbox(
  168 + [
  169 + 'class' => 'flat',
  170 + ]
  171 + ) ?>
184 172
185 <?= $form->field($model, 'author_id') 173 <?= $form->field($model, 'author_id')
186 ->textInput() ?> 174 ->textInput() ?>
views/blog-article/_form_language.php
1 <?php 1 <?php
2 - use artweb\artbox\blog\models\BlogArticleLang;  
3 - use artweb\artbox\language\models\Language;  
4 - use mihaildev\ckeditor\CKEditor;  
5 - use mihaildev\elfinder\ElFinder; 2 + use artbox\core\helpers\SlugifyDecorator;
  3 + use artbox\weblog\models\ArticleLang;
  4 + use artbox\core\models\Language;
  5 + use dosamigos\tinymce\TinyMce;
  6 + use yii\helpers\Url;
  7 + use yii\web\JsExpression;
6 use yii\web\View; 8 use yii\web\View;
7 use yii\widgets\ActiveForm; 9 use yii\widgets\ActiveForm;
8 10
9 /** 11 /**
10 - * @var BlogArticleLang $model_lang  
11 - * @var Language $language  
12 - * @var ActiveForm $form  
13 - * @var View $this 12 + * @var ArticleLang $model_lang
  13 + * @var Language $language
  14 + * @var ActiveForm $form
  15 + * @var View $this
14 */ 16 */
15 ?> 17 ?>
16 -<?= $form->field($model_lang, '[' . $language->id . ']title')  
17 - ->textInput([ 'maxlength' => true ]); ?> 18 +<?php
  19 + $attributeField = $form->field($model_lang, '[' . $language->id . ']title')
  20 + ->textInput([ 'maxlength' => true ]);
  21 + echo $attributeField;
  22 +?>
18 23
19 -<?= $form->field($model_lang, '[' . $language->id . ']alias')  
20 - ->textInput([ 'maxlength' => true ]); ?> 24 +<?= SlugifyDecorator::decorate(
  25 + $form->field($model_lang, '[' . $language->id . ']aliasValue'),
  26 + [ '/alias/slugify' ],
  27 + $attributeField
  28 +)
  29 + ->textInput([ 'maxlength' => true ]); ?>
21 30
22 <?= $form->field($model_lang, '[' . $language->id . ']body') 31 <?= $form->field($model_lang, '[' . $language->id . ']body')
23 ->widget( 32 ->widget(
24 - CKEditor::className(), 33 + TinyMce::className(),
25 [ 34 [
26 - 'editorOptions' => ElFinder::ckeditorOptions(  
27 - 'elfinder',  
28 - [  
29 - 'preset' => 'full',  
30 - 'inline' => false,  
31 - 'filebrowserUploadUrl' => Yii::$app->getUrlManager()  
32 - ->createUrl('file/uploader/images-upload'),  
33 - ]  
34 - ), 35 + 'options' => [ 'rows' => 6 ],
  36 + 'language' => 'ru',
  37 + 'clientOptions' => [
  38 + 'file_browser_callback' => new JsExpression(
  39 + "function(field_name, url, type, win) {
  40 +window.open('" . Url::to(
  41 + [
  42 + 'imagemanager/manager',
  43 + 'view-mode' => 'iframe',
  44 + 'select-type' => 'tinymce',
  45 + ]
  46 + ) . "&tag_name='+field_name,'','width=800,height=540 ,toolbar=no,status=no,menubar=no,scrollbars=no,resizable=no');
  47 +}"
  48 + ),
  49 + 'plugins' => [
  50 + "advlist autolink lists link charmap print preview anchor",
  51 + "searchreplace visualblocks code fullscreen",
  52 + "insertdatetime media table contextmenu paste image",
  53 + ],
  54 + 'toolbar' => "undo redo | styleselect | bold italic | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | link image | code",
  55 + ],
35 ] 56 ]
36 - ) ?> 57 + ); ?>
37 58
38 <?= $form->field($model_lang, '[' . $language->id . ']body_preview') 59 <?= $form->field($model_lang, '[' . $language->id . ']body_preview')
39 ->textarea( 60 ->textarea(
@@ -41,15 +62,3 @@ @@ -41,15 +62,3 @@
41 'rows' => '10', 62 'rows' => '10',
42 ] 63 ]
43 ) ?> 64 ) ?>
44 -  
45 -<?= $form->field($model_lang, '[' . $language->id . ']meta_title')  
46 - ->textInput([ 'maxlength' => true ]); ?>  
47 -  
48 -<?= $form->field($model_lang, '[' . $language->id . ']meta_description')  
49 - ->textInput([ 'maxlength' => true ]); ?>  
50 -  
51 -<?= $form->field($model_lang, '[' . $language->id . ']seo_text')  
52 - ->textInput([ 'maxlength' => true ]); ?>  
53 -  
54 -<?= $form->field($model_lang, '[' . $language->id . ']h1')  
55 - ->textInput([ 'maxlength' => true ]); ?>  
views/blog-article/create.php
1 <?php 1 <?php
2 2
3 - use artweb\artbox\blog\models\BlogArticle;  
4 - use artweb\artbox\blog\models\BlogArticleLang;  
5 - use artweb\artbox\blog\models\BlogCategory;  
6 - use artweb\artbox\blog\models\BlogTag;  
7 - use yii\helpers\Html; 3 + use artbox\weblog\models\Article;
  4 + use artbox\weblog\models\ArticleLang;
8 use yii\web\View; 5 use yii\web\View;
  6 + use yiister\gentelella\widgets\Panel;
9 7
10 /** 8 /**
11 - * @var View $this  
12 - * @var BlogArticle $model  
13 - * @var BlogArticleLang[] $modelLangs  
14 - * @var BlogCategory[] $categories  
15 - * @var BlogTag[] $tags  
16 - * @var array $products  
17 - * @var array $articles 9 + * @var View $this
  10 + * @var Article $model
  11 + * @var ArticleLang[] $modelLangs
  12 + * @var array $products
  13 + * @var array $articles
18 */ 14 */
19 15
20 $this->title = \Yii::t('blog', 'Create Blog Article'); 16 $this->title = \Yii::t('blog', 'Create Blog Article');
@@ -26,18 +22,24 @@ @@ -26,18 +22,24 @@
26 ?> 22 ?>
27 <div class="blog-article-create"> 23 <div class="blog-article-create">
28 24
29 - <h1><?= Html::encode($this->title) ?></h1> 25 + <?php $panel = Panel::begin(
  26 + [
  27 + 'header' => $this->title,
  28 + ]
  29 + ); ?>
30 30
31 <?= $this->render( 31 <?= $this->render(
32 '_form', 32 '_form',
33 [ 33 [
34 'model' => $model, 34 'model' => $model,
35 'modelLangs' => $modelLangs, 35 'modelLangs' => $modelLangs,
36 - 'categories' => $categories,  
37 - 'tags' => $tags, 36 + // 'categories' => $categories,
  37 + // 'tags' => $tags,
38 'products' => $products, 38 'products' => $products,
39 'articles' => $articles, 39 'articles' => $articles,
40 ] 40 ]
41 ) ?> 41 ) ?>
  42 +
  43 + <?php $panel::end(); ?>
42 44
43 </div> 45 </div>
views/blog-article/index.php
@@ -6,6 +6,7 @@ @@ -6,6 +6,7 @@
6 use yii\helpers\Html; 6 use yii\helpers\Html;
7 use yii\grid\GridView; 7 use yii\grid\GridView;
8 use yii\web\View; 8 use yii\web\View;
  9 + use yiister\gentelella\widgets\Panel;
9 10
10 /** 11 /**
11 * @var View $this 12 * @var View $this
@@ -18,12 +19,18 @@ @@ -18,12 +19,18 @@
18 ?> 19 ?>
19 <div class="blog-article-index"> 20 <div class="blog-article-index">
20 21
21 - <h1><?= Html::encode($this->title) ?></h1>  
22 - <?php // echo $this->render('_search', ['model' => $searchModel]); ?>  
23 -  
24 - <p>  
25 - <?= Html::a(\Yii::t('app', 'create_item',['item'=>'Blog Article']), [ 'create' ], [ 'class' => 'btn btn-success' ]) ?>  
26 - </p> 22 + <?php $panel = Panel::begin(
  23 + [
  24 + 'header' => $this->title,
  25 + ]
  26 + ); ?>
  27 + <p>
  28 + <?= Html::a(
  29 + \Yii::t('app', 'create_item', [ 'item' => 'Blog Article' ]),
  30 + [ 'create' ],
  31 + [ 'class' => 'btn btn-success' ]
  32 + ) ?>
  33 + </p>
27 <?= GridView::widget( 34 <?= GridView::widget(
28 [ 35 [
29 'dataProvider' => $dataProvider, 36 'dataProvider' => $dataProvider,
@@ -37,7 +44,7 @@ @@ -37,7 +44,7 @@
37 'imageUrl:image', 44 'imageUrl:image',
38 [ 45 [
39 'attribute' => 'status', 46 'attribute' => 'status',
40 - 'value' => function($model) { 47 + 'value' => function ($model) {
41 /** 48 /**
42 * @var Article $model 49 * @var Article $model
43 */ 50 */
@@ -54,4 +61,7 @@ @@ -54,4 +61,7 @@
54 ], 61 ],
55 ] 62 ]
56 ); ?> 63 ); ?>
  64 +
  65 + <?php $panel::end(); ?>
  66 +
57 </div> 67 </div>
views/blog-category/index.php
1 <?php 1 <?php
2 2
3 - use artweb\artbox\blog\models\BlogCategory;  
4 - use artweb\artbox\blog\models\BlogCategorySearch;  
5 use yii\data\ActiveDataProvider; 3 use yii\data\ActiveDataProvider;
6 use yii\helpers\Html; 4 use yii\helpers\Html;
7 use yii\grid\GridView; 5 use yii\grid\GridView;
8 use yii\web\View; 6 use yii\web\View;
  7 + use yiister\gentelella\widgets\Panel;
9 8
10 /** 9 /**
11 * @var View $this 10 * @var View $this
@@ -18,12 +17,15 @@ @@ -18,12 +17,15 @@
18 ?> 17 ?>
19 <div class="blog-category-index"> 18 <div class="blog-category-index">
20 19
21 - <h1><?= Html::encode($this->title) ?></h1>  
22 - <?php // echo $this->render('_search', ['model' => $searchModel]); ?>  
23 -  
24 - <p>  
25 - <?= Html::a(\Yii::t('blog', 'Create Blog Category'), [ 'create' ], [ 'class' => 'btn btn-success' ]) ?>  
26 - </p> 20 + <?php $panel = Panel::begin(
  21 + [
  22 + 'header' => $this->title,
  23 + ]
  24 + ); ?>
  25 +
  26 + <p>
  27 + <?= Html::a(\Yii::t('blog', 'Create Blog Category'), [ 'create' ], [ 'class' => 'btn btn-success' ]) ?>
  28 + </p>
27 <?= GridView::widget( 29 <?= GridView::widget(
28 [ 30 [
29 'dataProvider' => $dataProvider, 31 'dataProvider' => $dataProvider,
@@ -37,11 +39,11 @@ @@ -37,11 +39,11 @@
37 'imageUrl:image', 39 'imageUrl:image',
38 [ 40 [
39 'label' => \Yii::t('blog', 'Parent category'), 41 'label' => \Yii::t('blog', 'Parent category'),
40 - 'value' => function($model) { 42 + 'value' => function ($model) {
41 /** 43 /**
42 * @var BlogCategory $model 44 * @var BlogCategory $model
43 */ 45 */
44 - if (!empty( $model->parent )) { 46 + if (!empty($model->parent)) {
45 return $model->parent->lang->title; 47 return $model->parent->lang->title;
46 } else { 48 } else {
47 return false; 49 return false;
@@ -50,7 +52,7 @@ @@ -50,7 +52,7 @@
50 ], 52 ],
51 [ 53 [
52 'attribute' => 'status', 54 'attribute' => 'status',
53 - 'value' => function($model) { 55 + 'value' => function ($model) {
54 /** 56 /**
55 * @var BlogCategory $model 57 * @var BlogCategory $model
56 */ 58 */
@@ -65,4 +67,7 @@ @@ -65,4 +67,7 @@
65 ], 67 ],
66 ] 68 ]
67 ); ?> 69 ); ?>
  70 +
  71 + <?php $panel::end(); ?>
  72 +
68 </div> 73 </div>
views/blog-tag/index.php
1 <?php 1 <?php
2 2
3 - use artweb\artbox\blog\models\BlogTagSearch; 3 + use artbox\weblog\models\TagSearch;
4 use yii\data\ActiveDataProvider; 4 use yii\data\ActiveDataProvider;
5 use yii\helpers\Html; 5 use yii\helpers\Html;
6 use yii\grid\GridView; 6 use yii\grid\GridView;
7 use yii\web\View; 7 use yii\web\View;
  8 + use yiister\gentelella\widgets\Panel;
8 9
9 /** 10 /**
10 * @var View $this 11 * @var View $this
11 - * @var BlogTagSearch $searchModel 12 + * @var TagSearch $searchModel
12 * @var ActiveDataProvider $dataProvider 13 * @var ActiveDataProvider $dataProvider
13 */ 14 */
14 15
@@ -17,12 +18,15 @@ @@ -17,12 +18,15 @@
17 ?> 18 ?>
18 <div class="blog-tag-index"> 19 <div class="blog-tag-index">
19 20
20 - <h1><?= Html::encode($this->title) ?></h1>  
21 - <?php // echo $this->render('_search', ['model' => $searchModel]); ?>  
22 -  
23 - <p>  
24 - <?= Html::a(\Yii::t('blog', 'Create Blog Tag'), [ 'create' ], [ 'class' => 'btn btn-success' ]) ?>  
25 - </p> 21 + <?php $panel = Panel::begin(
  22 + [
  23 + 'header' => $this->title,
  24 + ]
  25 + ); ?>
  26 +
  27 + <p>
  28 + <?= Html::a(\Yii::t('blog', 'Create Blog Tag'), [ 'create' ], [ 'class' => 'btn btn-success' ]) ?>
  29 + </p>
26 <?= GridView::widget( 30 <?= GridView::widget(
27 [ 31 [
28 'dataProvider' => $dataProvider, 32 'dataProvider' => $dataProvider,
@@ -39,4 +43,7 @@ @@ -39,4 +43,7 @@
39 ], 43 ],
40 ] 44 ]
41 ); ?> 45 ); ?>
  46 +
  47 + <?php $panel::end(); ?>
  48 +
42 </div> 49 </div>