Commit 3b1725bf8dbf19c5b1f027d6b021c9f11cbe6d35
1 parent
d311541c
-Bug with fill resize fixed
Showing
19 changed files
with
651 additions
and
117 deletions
Show diff stats
controllers/ArticleController.php
| @@ -5,8 +5,8 @@ | @@ -5,8 +5,8 @@ | ||
| 5 | use artbox\weblog\models\BlogCategory; | 5 | use artbox\weblog\models\BlogCategory; |
| 6 | use artbox\weblog\models\BlogTag; | 6 | use artbox\weblog\models\BlogTag; |
| 7 | use Yii; | 7 | use Yii; |
| 8 | - use artbox\weblog\models\BlogArticle; | ||
| 9 | - use artbox\weblog\models\BlogArticleSearch; | 8 | + use artbox\weblog\models\Article; |
| 9 | + use artbox\weblog\models\ArticleSearch; | ||
| 10 | use yii\helpers\ArrayHelper; | 10 | use yii\helpers\ArrayHelper; |
| 11 | use yii\web\Controller; | 11 | use yii\web\Controller; |
| 12 | use yii\web\NotFoundHttpException; | 12 | use yii\web\NotFoundHttpException; |
| @@ -21,6 +21,14 @@ | @@ -21,6 +21,14 @@ | ||
| 21 | /** | 21 | /** |
| 22 | * @inheritdoc | 22 | * @inheritdoc |
| 23 | */ | 23 | */ |
| 24 | + public function getViewPath() | ||
| 25 | + { | ||
| 26 | + return '@artbox/weblog/views/blog-article'; | ||
| 27 | + } | ||
| 28 | + | ||
| 29 | + /** | ||
| 30 | + * @inheritdoc | ||
| 31 | + */ | ||
| 24 | public function behaviors() | 32 | public function behaviors() |
| 25 | { | 33 | { |
| 26 | return [ | 34 | return [ |
| @@ -40,7 +48,7 @@ | @@ -40,7 +48,7 @@ | ||
| 40 | */ | 48 | */ |
| 41 | public function actionIndex() | 49 | public function actionIndex() |
| 42 | { | 50 | { |
| 43 | - $searchModel = new BlogArticleSearch(); | 51 | + $searchModel = new ArticleSearch(); |
| 44 | $dataProvider = $searchModel->search(Yii::$app->request->queryParams); | 52 | $dataProvider = $searchModel->search(Yii::$app->request->queryParams); |
| 45 | 53 | ||
| 46 | return $this->render( | 54 | return $this->render( |
| @@ -77,7 +85,7 @@ | @@ -77,7 +85,7 @@ | ||
| 77 | */ | 85 | */ |
| 78 | public function actionCreate() | 86 | public function actionCreate() |
| 79 | { | 87 | { |
| 80 | - $model = new BlogArticle(); | 88 | + $model = new Article(); |
| 81 | $model->generateLangs(); | 89 | $model->generateLangs(); |
| 82 | 90 | ||
| 83 | $categories = ArrayHelper::map( | 91 | $categories = ArrayHelper::map( |
controllers/DefaultController.php deleted
| 1 | -<?php | ||
| 2 | - | ||
| 3 | - namespace artweb\artbox\weblog\controllers; | ||
| 4 | - | ||
| 5 | -use yii\web\Controller; | ||
| 6 | - | ||
| 7 | -/** | ||
| 8 | - * Default controller for the `blog` module | ||
| 9 | - */ | ||
| 10 | -class DefaultController extends Controller | ||
| 11 | -{ | ||
| 12 | - /** | ||
| 13 | - * Renders the index view for the module | ||
| 14 | - * @return string | ||
| 15 | - */ | ||
| 16 | - public function actionIndex() | ||
| 17 | - { | ||
| 18 | - return $this->render('index'); | ||
| 19 | - } | ||
| 20 | -} |
| 1 | +<?php | ||
| 2 | + | ||
| 3 | + use yii\db\Migration; | ||
| 4 | + | ||
| 5 | + class m161101_142334_blog_article extends Migration | ||
| 6 | + { | ||
| 7 | + public function up() | ||
| 8 | + { | ||
| 9 | + /** | ||
| 10 | + * Create main table with blog's articles | ||
| 11 | + */ | ||
| 12 | + $this->createTable( | ||
| 13 | + 'blog_article', | ||
| 14 | + [ | ||
| 15 | + 'id' => $this->primaryKey(), | ||
| 16 | + 'image' => $this->string(255), | ||
| 17 | + 'created_at' => $this->integer(), | ||
| 18 | + 'updated_at' => $this->integer(), | ||
| 19 | + 'deleted_at' => $this->integer(), | ||
| 20 | + 'sort' => $this->integer(), | ||
| 21 | + 'status' => $this->boolean(), | ||
| 22 | + 'author_id' => $this->integer(), | ||
| 23 | + ] | ||
| 24 | + ); | ||
| 25 | + } | ||
| 26 | + | ||
| 27 | + public function down() | ||
| 28 | + { | ||
| 29 | + $this->dropTable('blog_article'); | ||
| 30 | + } | ||
| 31 | + } |
| 1 | +<?php | ||
| 2 | + | ||
| 3 | + use yii\db\Migration; | ||
| 4 | + | ||
| 5 | + class m161101_142752_blog_article_lang extends Migration | ||
| 6 | + { | ||
| 7 | + public function up() | ||
| 8 | + { | ||
| 9 | + /** | ||
| 10 | + * Create table with language fields of blog articles | ||
| 11 | + */ | ||
| 12 | + $this->createTable( | ||
| 13 | + 'blog_article_lang', | ||
| 14 | + [ | ||
| 15 | + 'id' => $this->primaryKey(), | ||
| 16 | + 'blog_article_id' => $this->integer() | ||
| 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), | ||
| 28 | + ] | ||
| 29 | + ); | ||
| 30 | + | ||
| 31 | + /** | ||
| 32 | + * Creating indexes for unique fields (field pairs) | ||
| 33 | + */ | ||
| 34 | + $this->createIndex( | ||
| 35 | + 'blog_article_lang_uk', | ||
| 36 | + 'blog_article_lang', | ||
| 37 | + [ | ||
| 38 | + 'blog_article_id', | ||
| 39 | + 'language_id', | ||
| 40 | + ], | ||
| 41 | + true | ||
| 42 | + ); | ||
| 43 | + | ||
| 44 | + $this->createIndex( | ||
| 45 | + 'blog_article_alias_uk', | ||
| 46 | + 'blog_article_lang', | ||
| 47 | + 'alias', | ||
| 48 | + true | ||
| 49 | + ); | ||
| 50 | + | ||
| 51 | + /** | ||
| 52 | + * Add foreign keys in blog_articles and language tables | ||
| 53 | + */ | ||
| 54 | + $this->addForeignKey( | ||
| 55 | + 'blog_article_fk', | ||
| 56 | + 'blog_article_lang', | ||
| 57 | + 'blog_article_id', | ||
| 58 | + 'blog_article', | ||
| 59 | + 'id', | ||
| 60 | + 'CASCADE', | ||
| 61 | + 'CASCADE' | ||
| 62 | + ); | ||
| 63 | + | ||
| 64 | + $this->addForeignKey( | ||
| 65 | + 'blog_article_lang_fk', | ||
| 66 | + 'blog_article_lang', | ||
| 67 | + 'language_id', | ||
| 68 | + 'language', | ||
| 69 | + 'id', | ||
| 70 | + 'RESTRICT', | ||
| 71 | + 'CASCADE' | ||
| 72 | + ); | ||
| 73 | + } | ||
| 74 | + | ||
| 75 | + public function down() | ||
| 76 | + { | ||
| 77 | + $this->dropForeignKey('blog_article_lang_fk', 'blog_article_lang'); | ||
| 78 | + $this->dropForeignKey('blog_article_fk', 'blog_article_lang'); | ||
| 79 | + $this->dropIndex('blog_article_alias_uk', 'blog_article_lang'); | ||
| 80 | + $this->dropIndex('blog_article_lang_uk', 'blog_article_lang'); | ||
| 81 | + $this->dropTable('blog_article_lang'); | ||
| 82 | + } | ||
| 83 | + } |
| 1 | +<?php | ||
| 2 | + | ||
| 3 | + use yii\db\Migration; | ||
| 4 | + | ||
| 5 | + class m161101_143033_blog_category extends Migration | ||
| 6 | + { | ||
| 7 | + public function up() | ||
| 8 | + { | ||
| 9 | + /** | ||
| 10 | + * Create table for blog's categories | ||
| 11 | + */ | ||
| 12 | + $this->createTable( | ||
| 13 | + 'blog_category', | ||
| 14 | + [ | ||
| 15 | + 'id' => $this->primaryKey(), | ||
| 16 | + 'sort' => $this->integer(), | ||
| 17 | + 'image' => $this->string(255), | ||
| 18 | + 'parent_id' => $this->integer() | ||
| 19 | + ->defaultValue(0), | ||
| 20 | + 'status' => $this->boolean(), | ||
| 21 | + ] | ||
| 22 | + ); | ||
| 23 | + } | ||
| 24 | + | ||
| 25 | + public function down() | ||
| 26 | + { | ||
| 27 | + $this->dropTable('blog_category'); | ||
| 28 | + } | ||
| 29 | + } |
| 1 | +<?php | ||
| 2 | + | ||
| 3 | + use yii\db\Migration; | ||
| 4 | + | ||
| 5 | + class m161101_143259_blog_category_lang extends Migration | ||
| 6 | + { | ||
| 7 | + public function up() | ||
| 8 | + { | ||
| 9 | + /** | ||
| 10 | + * Table for category languages | ||
| 11 | + */ | ||
| 12 | + $this->createTable( | ||
| 13 | + 'blog_category_lang', | ||
| 14 | + [ | ||
| 15 | + 'id' => $this->primaryKey(), | ||
| 16 | + 'blog_category_id' => $this->integer() | ||
| 17 | + ->notNull(), | ||
| 18 | + 'language_id' => $this->integer() | ||
| 19 | + ->notNull(), | ||
| 20 | + 'title' => $this->string(255), | ||
| 21 | + 'alias' => $this->string(255), | ||
| 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 | + ] | ||
| 28 | + ); | ||
| 29 | + | ||
| 30 | + /** | ||
| 31 | + * Create unique indexes for language and alias | ||
| 32 | + */ | ||
| 33 | + $this->createIndex( | ||
| 34 | + 'blog_category_lang_uk', | ||
| 35 | + 'blog_category_lang', | ||
| 36 | + [ | ||
| 37 | + 'blog_category_id', | ||
| 38 | + 'language_id', | ||
| 39 | + ], | ||
| 40 | + true | ||
| 41 | + ); | ||
| 42 | + | ||
| 43 | + $this->createIndex( | ||
| 44 | + 'blog_category_alias_uk', | ||
| 45 | + 'blog_category_lang', | ||
| 46 | + 'alias', | ||
| 47 | + true | ||
| 48 | + ); | ||
| 49 | + | ||
| 50 | + /** | ||
| 51 | + * Add foreign keys for language tables | ||
| 52 | + */ | ||
| 53 | + $this->addForeignKey( | ||
| 54 | + 'blog_category_fk', | ||
| 55 | + 'blog_category_lang', | ||
| 56 | + 'blog_category_id', | ||
| 57 | + 'blog_category', | ||
| 58 | + 'id', | ||
| 59 | + 'CASCADE', | ||
| 60 | + 'CASCADE' | ||
| 61 | + ); | ||
| 62 | + | ||
| 63 | + $this->addForeignKey( | ||
| 64 | + 'blog_category_lang_fk', | ||
| 65 | + 'blog_category_lang', | ||
| 66 | + 'language_id', | ||
| 67 | + 'language', | ||
| 68 | + 'id', | ||
| 69 | + 'RESTRICT', | ||
| 70 | + 'CASCADE' | ||
| 71 | + ); | ||
| 72 | + } | ||
| 73 | + | ||
| 74 | + public function down() | ||
| 75 | + { | ||
| 76 | + $this->dropForeignKey('blog_category_lang_fk', 'blog_category_lang'); | ||
| 77 | + $this->dropForeignKey('blog_category_fk', 'blog_category_lang'); | ||
| 78 | + $this->dropIndex('blog_category_alias_uk', 'blog_category_lang'); | ||
| 79 | + $this->dropIndex('blog_category_lang_uk', 'blog_category_lang'); | ||
| 80 | + $this->dropTable('blog_category_lang'); | ||
| 81 | + } | ||
| 82 | + } |
migrations/m161101_143541_blog_article_to_category.php
0 → 100755
| 1 | +<?php | ||
| 2 | + | ||
| 3 | + use yii\db\Migration; | ||
| 4 | + | ||
| 5 | + class m161101_143541_blog_article_to_category extends Migration | ||
| 6 | + { | ||
| 7 | + public function up() | ||
| 8 | + { | ||
| 9 | + /** | ||
| 10 | + * Create junction table to connect articles with categories | ||
| 11 | + */ | ||
| 12 | + $this->createTable( | ||
| 13 | + 'blog_article_to_category', | ||
| 14 | + [ | ||
| 15 | + 'id' => $this->primaryKey(), | ||
| 16 | + 'blog_article_id' => $this->integer() | ||
| 17 | + ->notNull(), | ||
| 18 | + 'blog_category_id' => $this->integer() | ||
| 19 | + ->notNull(), | ||
| 20 | + ] | ||
| 21 | + ); | ||
| 22 | + | ||
| 23 | + /** | ||
| 24 | + * Add foreign keys and indexes for junction table | ||
| 25 | + */ | ||
| 26 | + $this->createIndex( | ||
| 27 | + 'blog_article_to_category_uk', | ||
| 28 | + 'blog_article_to_category', | ||
| 29 | + [ | ||
| 30 | + 'blog_article_id', | ||
| 31 | + 'blog_category_id', | ||
| 32 | + ], | ||
| 33 | + true | ||
| 34 | + ); | ||
| 35 | + | ||
| 36 | + $this->addForeignKey( | ||
| 37 | + 'blog_article_to_category_art_fk', | ||
| 38 | + 'blog_article_to_category', | ||
| 39 | + 'blog_article_id', | ||
| 40 | + 'blog_article', | ||
| 41 | + 'id', | ||
| 42 | + 'CASCADE', | ||
| 43 | + 'CASCADE' | ||
| 44 | + ); | ||
| 45 | + | ||
| 46 | + $this->addForeignKey( | ||
| 47 | + 'blog_article_to_category_cat_fk', | ||
| 48 | + 'blog_article_to_category', | ||
| 49 | + 'blog_category_id', | ||
| 50 | + 'blog_category', | ||
| 51 | + 'id', | ||
| 52 | + 'CASCADE', | ||
| 53 | + 'CASCADE' | ||
| 54 | + ); | ||
| 55 | + } | ||
| 56 | + | ||
| 57 | + public function down() | ||
| 58 | + { | ||
| 59 | + $this->dropForeignKey('blog_article_to_category_cat_fk', 'blog_article_to_category'); | ||
| 60 | + $this->dropForeignKey('blog_article_to_category_art_fk', 'blog_article_to_category'); | ||
| 61 | + $this->dropIndex('blog_article_to_category_uk', 'blog_article_to_category'); | ||
| 62 | + $this->dropTable('blog_article_to_category'); | ||
| 63 | + } | ||
| 64 | + } |
| 1 | +<?php | ||
| 2 | + | ||
| 3 | + use yii\db\Migration; | ||
| 4 | + | ||
| 5 | + class m161101_143734_blog_tag extends Migration | ||
| 6 | + { | ||
| 7 | + public function up() | ||
| 8 | + { | ||
| 9 | + /** | ||
| 10 | + * Create table for tags | ||
| 11 | + */ | ||
| 12 | + $this->createTable( | ||
| 13 | + 'blog_tag', | ||
| 14 | + [ | ||
| 15 | + 'id' => $this->primaryKey(), | ||
| 16 | + ] | ||
| 17 | + ); | ||
| 18 | + } | ||
| 19 | + | ||
| 20 | + public function down() | ||
| 21 | + { | ||
| 22 | + $this->dropTable('blog_tag'); | ||
| 23 | + } | ||
| 24 | + } |
| 1 | +<?php | ||
| 2 | + | ||
| 3 | + use yii\db\Migration; | ||
| 4 | + | ||
| 5 | + class m161101_143939_blog_tag_lang extends Migration | ||
| 6 | + { | ||
| 7 | + public function up() | ||
| 8 | + { | ||
| 9 | + /** | ||
| 10 | + * Tags can be in different languages | ||
| 11 | + */ | ||
| 12 | + $this->createTable( | ||
| 13 | + 'blog_tag_lang', | ||
| 14 | + [ | ||
| 15 | + 'id' => $this->primaryKey(), | ||
| 16 | + 'blog_tag_id' => $this->integer() | ||
| 17 | + ->notNull(), | ||
| 18 | + 'language_id' => $this->integer() | ||
| 19 | + ->notNull(), | ||
| 20 | + 'label' => $this->string(255), | ||
| 21 | + ] | ||
| 22 | + ); | ||
| 23 | + | ||
| 24 | + /** | ||
| 25 | + * Creating indexes and foreign keys for language table | ||
| 26 | + */ | ||
| 27 | + $this->createIndex( | ||
| 28 | + 'blog_tag_lang_uk', | ||
| 29 | + 'blog_tag_lang', | ||
| 30 | + [ | ||
| 31 | + 'blog_tag_id', | ||
| 32 | + 'language_id', | ||
| 33 | + ], | ||
| 34 | + true | ||
| 35 | + ); | ||
| 36 | + | ||
| 37 | + $this->addForeignKey( | ||
| 38 | + 'blog_tag_lang_fk', | ||
| 39 | + 'blog_tag_lang', | ||
| 40 | + 'language_id', | ||
| 41 | + 'language', | ||
| 42 | + 'id', | ||
| 43 | + 'RESTRICT', | ||
| 44 | + 'CASCADE' | ||
| 45 | + ); | ||
| 46 | + | ||
| 47 | + $this->addForeignKey( | ||
| 48 | + 'blog_tag_fk', | ||
| 49 | + 'blog_tag_lang', | ||
| 50 | + 'blog_tag_id', | ||
| 51 | + 'blog_tag', | ||
| 52 | + 'id', | ||
| 53 | + 'CASCADE', | ||
| 54 | + 'CASCADE' | ||
| 55 | + ); | ||
| 56 | + } | ||
| 57 | + | ||
| 58 | + public function down() | ||
| 59 | + { | ||
| 60 | + $this->dropForeignKey('blog_tag_fk', 'blog_tag_lang'); | ||
| 61 | + $this->dropForeignKey('blog_tag_lang_fk', 'blog_tag_lang'); | ||
| 62 | + $this->dropIndex('blog_tag_lang_uk', 'blog_tag_lang'); | ||
| 63 | + $this->dropTable('blog_tag_lang'); | ||
| 64 | + } | ||
| 65 | + } |
| 1 | +<?php | ||
| 2 | + | ||
| 3 | + use yii\db\Migration; | ||
| 4 | + | ||
| 5 | + class m161101_144140_blog_article_to_tag extends Migration | ||
| 6 | + { | ||
| 7 | + public function up() | ||
| 8 | + { | ||
| 9 | + /** | ||
| 10 | + * Create junction table to connect articles with tags | ||
| 11 | + */ | ||
| 12 | + $this->createTable( | ||
| 13 | + 'blog_article_to_tag', | ||
| 14 | + [ | ||
| 15 | + 'id' => $this->primaryKey(), | ||
| 16 | + 'blog_article_id' => $this->integer() | ||
| 17 | + ->notNull(), | ||
| 18 | + 'blog_tag_id' => $this->integer() | ||
| 19 | + ->notNull(), | ||
| 20 | + ] | ||
| 21 | + ); | ||
| 22 | + | ||
| 23 | + /** | ||
| 24 | + * Create indexes and foreign keys for junction table | ||
| 25 | + */ | ||
| 26 | + $this->createIndex( | ||
| 27 | + 'blog_article_to_tag_uk', | ||
| 28 | + 'blog_article_to_tag', | ||
| 29 | + [ | ||
| 30 | + 'blog_article_id', | ||
| 31 | + 'blog_tag_id', | ||
| 32 | + ], | ||
| 33 | + true | ||
| 34 | + ); | ||
| 35 | + | ||
| 36 | + $this->addForeignKey( | ||
| 37 | + 'blog_article_to_tag_tag_fk', | ||
| 38 | + 'blog_article_to_tag', | ||
| 39 | + 'blog_tag_id', | ||
| 40 | + 'blog_tag', | ||
| 41 | + 'id', | ||
| 42 | + 'CASCADE', | ||
| 43 | + 'CASCADE' | ||
| 44 | + ); | ||
| 45 | + | ||
| 46 | + $this->addForeignKey( | ||
| 47 | + 'blog_article_to_tag_art_fk', | ||
| 48 | + 'blog_article_to_tag', | ||
| 49 | + 'blog_article_id', | ||
| 50 | + 'blog_article', | ||
| 51 | + 'id', | ||
| 52 | + 'CASCADE', | ||
| 53 | + 'CASCADE' | ||
| 54 | + ); | ||
| 55 | + } | ||
| 56 | + | ||
| 57 | + public function down() | ||
| 58 | + { | ||
| 59 | + $this->dropForeignKey('blog_article_to_tag_art_fk', 'blog_article_to_tag'); | ||
| 60 | + $this->dropForeignKey('blog_article_to_tag_tag_fk', 'blog_article_to_tag'); | ||
| 61 | + $this->dropIndex('blog_article_to_tag_uk', 'blog_article_to_tag'); | ||
| 62 | + $this->dropTable('blog_article_to_tag'); | ||
| 63 | + } | ||
| 64 | + } |
migrations/m161101_144312_blog_article_to_article.php
0 → 100755
| 1 | +<?php | ||
| 2 | + | ||
| 3 | + use yii\db\Migration; | ||
| 4 | + | ||
| 5 | + class m161101_144312_blog_article_to_article extends Migration | ||
| 6 | + { | ||
| 7 | + public function up() | ||
| 8 | + { | ||
| 9 | + /** | ||
| 10 | + * Create table and all relations for related articles functionality | ||
| 11 | + */ | ||
| 12 | + $this->createTable( | ||
| 13 | + 'blog_article_to_article', | ||
| 14 | + [ | ||
| 15 | + 'id' => $this->primaryKey(), | ||
| 16 | + 'blog_article_id' => $this->integer() | ||
| 17 | + ->notNull(), | ||
| 18 | + 'related_blog_article_id' => $this->integer() | ||
| 19 | + ->notNull(), | ||
| 20 | + ] | ||
| 21 | + ); | ||
| 22 | + | ||
| 23 | + $this->createIndex( | ||
| 24 | + 'blog_article_to_article_uk', | ||
| 25 | + 'blog_article_to_article', | ||
| 26 | + [ | ||
| 27 | + 'blog_article_id', | ||
| 28 | + 'related_blog_article_id', | ||
| 29 | + ], | ||
| 30 | + true | ||
| 31 | + ); | ||
| 32 | + | ||
| 33 | + $this->addForeignKey( | ||
| 34 | + 'blog_article_to_article_art_fk', | ||
| 35 | + 'blog_article_to_article', | ||
| 36 | + 'blog_article_id', | ||
| 37 | + 'blog_article', | ||
| 38 | + 'id', | ||
| 39 | + 'CASCADE', | ||
| 40 | + 'CASCADE' | ||
| 41 | + ); | ||
| 42 | + | ||
| 43 | + $this->addForeignKey( | ||
| 44 | + 'blog_article_to_article_rel_fk', | ||
| 45 | + 'blog_article_to_article', | ||
| 46 | + 'related_blog_article_id', | ||
| 47 | + 'blog_article', | ||
| 48 | + 'id', | ||
| 49 | + 'CASCADE', | ||
| 50 | + 'CASCADE' | ||
| 51 | + ); | ||
| 52 | + } | ||
| 53 | + | ||
| 54 | + public function down() | ||
| 55 | + { | ||
| 56 | + $this->dropForeignKey('blog_article_to_article_rel_fk', 'blog_article_to_article'); | ||
| 57 | + $this->dropForeignKey('blog_article_to_article_art_fk', 'blog_article_to_article'); | ||
| 58 | + $this->dropIndex('blog_article_to_article_uk', 'blog_article_to_article'); | ||
| 59 | + $this->dropTable('blog_article_to_article'); | ||
| 60 | + } | ||
| 61 | + } |
migrations/m161101_144434_blog_article_to_product.php
0 → 100755
| 1 | +<?php | ||
| 2 | + | ||
| 3 | + use yii\db\Migration; | ||
| 4 | + | ||
| 5 | + class m161101_144434_blog_article_to_product extends Migration | ||
| 6 | + { | ||
| 7 | + public function up() | ||
| 8 | + { | ||
| 9 | + /** | ||
| 10 | + * Creates junction table and all stuff for adding related products to articles | ||
| 11 | + */ | ||
| 12 | + $this->createTable( | ||
| 13 | + 'blog_article_to_product', | ||
| 14 | + [ | ||
| 15 | + 'id' => $this->primaryKey(), | ||
| 16 | + 'blog_article_id' => $this->integer() | ||
| 17 | + ->notNull(), | ||
| 18 | + 'product_id' => $this->integer() | ||
| 19 | + ->notNull(), | ||
| 20 | + ] | ||
| 21 | + ); | ||
| 22 | + | ||
| 23 | + $this->createIndex( | ||
| 24 | + 'blog_article_to_product_uk', | ||
| 25 | + 'blog_article_to_product', | ||
| 26 | + [ | ||
| 27 | + 'blog_article_id', | ||
| 28 | + 'product_id', | ||
| 29 | + ], | ||
| 30 | + true | ||
| 31 | + ); | ||
| 32 | + | ||
| 33 | + $this->addForeignKey( | ||
| 34 | + 'blog_article_to_product_art_fk', | ||
| 35 | + 'blog_article_to_product', | ||
| 36 | + 'blog_article_id', | ||
| 37 | + 'blog_article', | ||
| 38 | + 'id', | ||
| 39 | + 'CASCADE', | ||
| 40 | + 'CASCADE' | ||
| 41 | + ); | ||
| 42 | + | ||
| 43 | + $this->addForeignKey( | ||
| 44 | + 'blog_article_to_product_prod_fk', | ||
| 45 | + 'blog_article_to_product', | ||
| 46 | + 'product_id', | ||
| 47 | + 'product', | ||
| 48 | + 'id', | ||
| 49 | + 'CASCADE', | ||
| 50 | + 'CASCADE' | ||
| 51 | + ); | ||
| 52 | + } | ||
| 53 | + | ||
| 54 | + public function down() | ||
| 55 | + { | ||
| 56 | + $this->dropForeignKey('blog_article_to_product_prod_fk', 'blog_article_to_product'); | ||
| 57 | + $this->dropForeignKey('blog_article_to_product_art_fk', 'blog_article_to_product'); | ||
| 58 | + $this->dropIndex('blog_article_to_product_uk', 'blog_article_to_product'); | ||
| 59 | + $this->dropTable('blog_article_to_product'); | ||
| 60 | + } | ||
| 61 | + } |
models/BlogArticle.php renamed to models/Article.php
| 1 | <?php | 1 | <?php |
| 2 | 2 | ||
| 3 | namespace artbox\weblog\models; | 3 | namespace artbox\weblog\models; |
| 4 | - | 4 | + |
| 5 | + use artbox\catalog\models\Product; | ||
| 5 | use yii\behaviors\TimestampBehavior; | 6 | use yii\behaviors\TimestampBehavior; |
| 6 | use yii\db\ActiveRecord; | 7 | use yii\db\ActiveRecord; |
| 7 | use artbox\core\behaviors\LanguageBehavior; | 8 | use artbox\core\behaviors\LanguageBehavior; |
| 8 | use artbox\core\models\Language; | 9 | use artbox\core\models\Language; |
| 9 | use yii\db\ActiveQuery; | 10 | use yii\db\ActiveQuery; |
| 10 | use yii\web\Request; | 11 | use yii\web\Request; |
| 11 | - | 12 | + |
| 12 | /** | 13 | /** |
| 13 | * This is the model class for table "blog_article". | 14 | * This is the model class for table "blog_article". |
| 14 | * | 15 | * |
| 15 | - * @property integer $id | ||
| 16 | - * @property string $image | ||
| 17 | - * @property integer $created_at | ||
| 18 | - * @property integer $updated_at | ||
| 19 | - * @property integer $deleted_at | ||
| 20 | - * @property integer $sort | ||
| 21 | - * @property boolean $status | ||
| 22 | - * @property integer $author_id | ||
| 23 | - * @property BlogArticleLang[] $blogArticleLangs | ||
| 24 | - * @property Language[] $languages | ||
| 25 | - * @property BlogArticle[] $relatedBlogArticles | ||
| 26 | - * @property BlogArticle[] $blogArticles | ||
| 27 | - * @property BlogCategory[] $blogCategories | ||
| 28 | - * @property BlogCategory $blogCategory | ||
| 29 | - * @property Product[] $products | ||
| 30 | - * @property BlogTag[] $blogTags | 16 | +*@property integer $id |
| 17 | + * @property string $image | ||
| 18 | + * @property integer $created_at | ||
| 19 | + * @property integer $updated_at | ||
| 20 | + * @property integer $deleted_at | ||
| 21 | + * @property integer $sort | ||
| 22 | + * @property boolean $status | ||
| 23 | + * @property integer $author_id | ||
| 24 | + * @property ArticleLang[] $blogArticleLangs | ||
| 25 | + * @property Language[] $languages | ||
| 26 | + * @property Article[] $relatedBlogArticles | ||
| 27 | + * @property Article[] $blogArticles | ||
| 28 | + * @property BlogCategory[] $blogCategories | ||
| 29 | + * @property BlogCategory $blogCategory | ||
| 30 | + * @property Product[] $products | ||
| 31 | + * @property BlogTag[] $blogTags | ||
| 31 | * * * From language behavior * | 32 | * * * From language behavior * |
| 32 | - * @property BlogArticleLang $lang | ||
| 33 | - * @property BlogArticleLang[] $langs | ||
| 34 | - * @property BlogArticleLang $objectLang | ||
| 35 | - * @property string $ownerKey | ||
| 36 | - * @property string $langKey | ||
| 37 | - * @property BlogArticleLang[] $modelLangs | ||
| 38 | - * @property bool $transactionStatus | 33 | + * @property ArticleLang $lang |
| 34 | + * @property ArticleLang[] $langs | ||
| 35 | + * @property ArticleLang $objectLang | ||
| 36 | + * @property string $ownerKey | ||
| 37 | + * @property string $langKey | ||
| 38 | + * @property ArticleLang[] $modelLangs | ||
| 39 | + * @property bool $transactionStatus | ||
| 39 | * @method string getOwnerKey() | 40 | * @method string getOwnerKey() |
| 40 | * @method void setOwnerKey( string $value ) | 41 | * @method void setOwnerKey( string $value ) |
| 41 | * @method string getLangKey() | 42 | * @method string getLangKey() |
| 42 | * @method void setLangKey( string $value ) | 43 | * @method void setLangKey( string $value ) |
| 43 | * @method ActiveQuery getLangs() | 44 | * @method ActiveQuery getLangs() |
| 44 | * @method ActiveQuery getLang( integer $language_id ) | 45 | * @method ActiveQuery getLang( integer $language_id ) |
| 45 | - * @method BlogArticleLang[] generateLangs() | 46 | + * @method ArticleLang[] generateLangs() |
| 46 | * @method void loadLangs( Request $request ) | 47 | * @method void loadLangs( Request $request ) |
| 47 | * @method bool linkLangs() | 48 | * @method bool linkLangs() |
| 48 | * @method bool saveLangs() | 49 | * @method bool saveLangs() |
| 49 | * @method bool getTransactionStatus() | 50 | * @method bool getTransactionStatus() |
| 50 | * * End language behavior * | 51 | * * End language behavior * |
| 51 | * * From SaveImgBehavior | 52 | * * From SaveImgBehavior |
| 52 | - * @property string|null $imageFile | ||
| 53 | - * @property string|null $imageUrl | 53 | + * @property string|null $imageFile |
| 54 | + * @property string|null $imageUrl | ||
| 54 | * @method string|null getImageFile( int $field ) | 55 | * @method string|null getImageFile( int $field ) |
| 55 | * @method string|null getImageUrl( int $field ) | 56 | * @method string|null getImageUrl( int $field ) |
| 56 | * * End SaveImgBehavior | 57 | * * End SaveImgBehavior |
| 57 | */ | 58 | */ |
| 58 | - class BlogArticle extends ActiveRecord | 59 | + class Article extends ActiveRecord |
| 59 | { | 60 | { |
| 60 | /** | 61 | /** |
| 61 | * @inheritdoc | 62 | * @inheritdoc |
| @@ -64,22 +65,13 @@ | @@ -64,22 +65,13 @@ | ||
| 64 | { | 65 | { |
| 65 | return 'blog_article'; | 66 | return 'blog_article'; |
| 66 | } | 67 | } |
| 67 | - | 68 | + |
| 68 | public function behaviors() | 69 | public function behaviors() |
| 69 | { | 70 | { |
| 70 | return [ | 71 | return [ |
| 71 | [ | 72 | [ |
| 72 | 'class' => TimestampBehavior::className(), | 73 | 'class' => TimestampBehavior::className(), |
| 73 | ], | 74 | ], |
| 74 | - [ | ||
| 75 | - 'class' => SaveImgBehavior::className(), | ||
| 76 | - 'fields' => [ | ||
| 77 | - [ | ||
| 78 | - 'name' => 'image', | ||
| 79 | - 'directory' => 'blog/article', | ||
| 80 | - ], | ||
| 81 | - ], | ||
| 82 | - ], | ||
| 83 | 'language' => [ | 75 | 'language' => [ |
| 84 | 'class' => LanguageBehavior::className(), | 76 | 'class' => LanguageBehavior::className(), |
| 85 | ], | 77 | ], |
| @@ -112,7 +104,7 @@ | @@ -112,7 +104,7 @@ | ||
| 112 | ], | 104 | ], |
| 113 | ]; | 105 | ]; |
| 114 | } | 106 | } |
| 115 | - | 107 | + |
| 116 | /** | 108 | /** |
| 117 | * @inheritdoc | 109 | * @inheritdoc |
| 118 | */ | 110 | */ |
| @@ -129,25 +121,25 @@ | @@ -129,25 +121,25 @@ | ||
| 129 | 'author_id' => 'Author ID', | 121 | 'author_id' => 'Author ID', |
| 130 | ]; | 122 | ]; |
| 131 | } | 123 | } |
| 132 | - | 124 | + |
| 133 | /** | 125 | /** |
| 134 | * @return \yii\db\ActiveQuery | 126 | * @return \yii\db\ActiveQuery |
| 135 | */ | 127 | */ |
| 136 | public function getRelatedBlogArticles() | 128 | public function getRelatedBlogArticles() |
| 137 | { | 129 | { |
| 138 | - return $this->hasMany(BlogArticle::className(), [ 'id' => 'related_blog_article_id' ]) | 130 | + return $this->hasMany(Article::className(), [ 'id' => 'related_blog_article_id' ]) |
| 139 | ->viaTable('blog_article_to_article', [ 'blog_article_id' => 'id' ]); | 131 | ->viaTable('blog_article_to_article', [ 'blog_article_id' => 'id' ]); |
| 140 | } | 132 | } |
| 141 | - | 133 | + |
| 142 | /** | 134 | /** |
| 143 | * @return \yii\db\ActiveQuery | 135 | * @return \yii\db\ActiveQuery |
| 144 | */ | 136 | */ |
| 145 | - public function getBlogArticles() | 137 | + public function getArticles() |
| 146 | { | 138 | { |
| 147 | - return $this->hasMany(BlogArticle::className(), [ 'id' => 'blog_article_id' ]) | 139 | + return $this->hasMany(Article::className(), [ 'id' => 'blog_article_id' ]) |
| 148 | ->viaTable('blog_article_to_article', [ 'related_blog_article_id' => 'id' ]); | 140 | ->viaTable('blog_article_to_article', [ 'related_blog_article_id' => 'id' ]); |
| 149 | } | 141 | } |
| 150 | - | 142 | + |
| 151 | /** | 143 | /** |
| 152 | * @return \yii\db\ActiveQuery | 144 | * @return \yii\db\ActiveQuery |
| 153 | */ | 145 | */ |
| @@ -156,31 +148,31 @@ | @@ -156,31 +148,31 @@ | ||
| 156 | return $this->hasMany(BlogCategory::className(), [ 'id' => 'blog_category_id' ]) | 148 | return $this->hasMany(BlogCategory::className(), [ 'id' => 'blog_category_id' ]) |
| 157 | ->viaTable('blog_article_to_category', [ 'blog_article_id' => 'id' ]); | 149 | ->viaTable('blog_article_to_category', [ 'blog_article_id' => 'id' ]); |
| 158 | } | 150 | } |
| 159 | - | 151 | + |
| 160 | /** | 152 | /** |
| 161 | * @return \yii\db\ActiveQuery | 153 | * @return \yii\db\ActiveQuery |
| 162 | */ | 154 | */ |
| 163 | public function getBlogCategory() | 155 | public function getBlogCategory() |
| 164 | { | 156 | { |
| 165 | return $this->hasOne(BlogCategory::className(), [ 'id' => 'blog_category_id' ]) | 157 | return $this->hasOne(BlogCategory::className(), [ 'id' => 'blog_category_id' ]) |
| 166 | - ->viaTable('blog_article_to_category', [ 'blog_article_id' => 'id' ]); | 158 | + ->viaTable('blog_article_to_category', [ 'blog_article_id' => 'id' ]); |
| 167 | } | 159 | } |
| 168 | - | 160 | + |
| 169 | /** | 161 | /** |
| 170 | * @return \yii\db\ActiveQuery | 162 | * @return \yii\db\ActiveQuery |
| 171 | */ | 163 | */ |
| 172 | public function getProducts() | 164 | public function getProducts() |
| 173 | { | 165 | { |
| 174 | return $this->hasMany(Product::className(), [ 'id' => 'product_id' ]) | 166 | return $this->hasMany(Product::className(), [ 'id' => 'product_id' ]) |
| 175 | - ->viaTable('blog_article_to_product', [ 'blog_article_id' => 'id' ]); | 167 | + ->viaTable('blog_article_to_product', [ 'blog_article_id' => 'id' ]); |
| 176 | } | 168 | } |
| 177 | - | 169 | + |
| 178 | /** | 170 | /** |
| 179 | * @return \yii\db\ActiveQuery | 171 | * @return \yii\db\ActiveQuery |
| 180 | */ | 172 | */ |
| 181 | public function getBlogTags() | 173 | public function getBlogTags() |
| 182 | { | 174 | { |
| 183 | return $this->hasMany(BlogTag::className(), [ 'id' => 'blog_tag_id' ]) | 175 | return $this->hasMany(BlogTag::className(), [ 'id' => 'blog_tag_id' ]) |
| 184 | - ->viaTable('blog_article_to_tag', [ 'blog_article_id' => 'id' ]); | 176 | + ->viaTable('blog_article_to_tag', [ 'blog_article_id' => 'id' ]); |
| 185 | } | 177 | } |
| 186 | } | 178 | } |
models/BlogArticleLang.php renamed to models/ArticleLang.php
| @@ -8,21 +8,21 @@ | @@ -8,21 +8,21 @@ | ||
| 8 | /** | 8 | /** |
| 9 | * This is the model class for table "blog_article_lang". | 9 | * This is the model class for table "blog_article_lang". |
| 10 | * | 10 | * |
| 11 | - * @property integer $id | ||
| 12 | - * @property integer $blog_article_id | ||
| 13 | - * @property integer $language_id | ||
| 14 | - * @property string $title | ||
| 15 | - * @property string $body | ||
| 16 | - * @property string $body_preview | ||
| 17 | - * @property string $alias | ||
| 18 | - * @property string $meta_title | ||
| 19 | - * @property string $meta_description | ||
| 20 | - * @property string $h1 | ||
| 21 | - * @property string $seo_text | ||
| 22 | - * @property BlogArticle $blogArticle | ||
| 23 | - * @property Language $language | 11 | + * @property integer $id |
| 12 | + * @property integer $blog_article_id | ||
| 13 | + * @property integer $language_id | ||
| 14 | + * @property string $title | ||
| 15 | + * @property string $body | ||
| 16 | + * @property string $body_preview | ||
| 17 | + * @property string $alias | ||
| 18 | + * @property string $meta_title | ||
| 19 | + * @property string $meta_description | ||
| 20 | + * @property string $h1 | ||
| 21 | + * @property string $seo_text | ||
| 22 | + * @property Article $article | ||
| 23 | + * @property Language $language | ||
| 24 | */ | 24 | */ |
| 25 | - class BlogArticleLang extends ActiveRecord | 25 | + class ArticleLang extends ActiveRecord |
| 26 | { | 26 | { |
| 27 | /** | 27 | /** |
| 28 | * @inheritdoc | 28 | * @inheritdoc |
| @@ -34,11 +34,7 @@ | @@ -34,11 +34,7 @@ | ||
| 34 | 34 | ||
| 35 | public function behaviors() | 35 | public function behaviors() |
| 36 | { | 36 | { |
| 37 | - return [ | ||
| 38 | - 'slug' => [ | ||
| 39 | - 'class' => 'artweb\artbox\behaviors\Slug', | ||
| 40 | - ], | ||
| 41 | - ]; | 37 | + return []; |
| 42 | } | 38 | } |
| 43 | 39 | ||
| 44 | /** | 40 | /** |
| @@ -101,7 +97,7 @@ | @@ -101,7 +97,7 @@ | ||
| 101 | [ 'blog_article_id' ], | 97 | [ 'blog_article_id' ], |
| 102 | 'exist', | 98 | 'exist', |
| 103 | 'skipOnError' => true, | 99 | 'skipOnError' => true, |
| 104 | - 'targetClass' => BlogArticle::className(), | 100 | + 'targetClass' => Article::className(), |
| 105 | 'targetAttribute' => [ 'blog_article_id' => 'id' ], | 101 | 'targetAttribute' => [ 'blog_article_id' => 'id' ], |
| 106 | ], | 102 | ], |
| 107 | [ | 103 | [ |
| @@ -137,9 +133,9 @@ | @@ -137,9 +133,9 @@ | ||
| 137 | /** | 133 | /** |
| 138 | * @return \yii\db\ActiveQuery | 134 | * @return \yii\db\ActiveQuery |
| 139 | */ | 135 | */ |
| 140 | - public function getBlogArticle() | 136 | + public function getArticle() |
| 141 | { | 137 | { |
| 142 | - return $this->hasOne(BlogArticle::className(), [ 'id' => 'blog_article_id' ]); | 138 | + return $this->hasOne(Article::className(), [ 'id' => 'blog_article_id' ]); |
| 143 | } | 139 | } |
| 144 | 140 | ||
| 145 | /** | 141 | /** |
models/BlogArticleSearch.php renamed to models/ArticleSearch.php
| @@ -8,7 +8,7 @@ | @@ -8,7 +8,7 @@ | ||
| 8 | /** | 8 | /** |
| 9 | * BlogArticleSearch represents the model behind the search form about `artweb\artbox\blog\models\BlogArticle`. | 9 | * BlogArticleSearch represents the model behind the search form about `artweb\artbox\blog\models\BlogArticle`. |
| 10 | */ | 10 | */ |
| 11 | - class BlogArticleSearch extends BlogArticle | 11 | + class ArticleSearch extends Article |
| 12 | { | 12 | { |
| 13 | /** | 13 | /** |
| 14 | * @var string | 14 | * @var string |
| @@ -70,8 +70,8 @@ | @@ -70,8 +70,8 @@ | ||
| 70 | */ | 70 | */ |
| 71 | public function search($params) | 71 | public function search($params) |
| 72 | { | 72 | { |
| 73 | - $query = BlogArticle::find() | ||
| 74 | - ->joinWith('lang'); | 73 | + $query = Article::find() |
| 74 | + ->joinWith('lang'); | ||
| 75 | 75 | ||
| 76 | // add conditions that should always apply here | 76 | // add conditions that should always apply here |
| 77 | 77 |
views/blog-article/index.php
| 1 | <?php | 1 | <?php |
| 2 | 2 | ||
| 3 | - use artweb\artbox\blog\models\BlogArticle; | ||
| 4 | - use artweb\artbox\blog\models\BlogArticleSearch; | 3 | + use artbox\weblog\models\Article; |
| 4 | + use artbox\weblog\models\ArticleSearch; | ||
| 5 | use yii\data\ActiveDataProvider; | 5 | use yii\data\ActiveDataProvider; |
| 6 | use yii\helpers\Html; | 6 | use yii\helpers\Html; |
| 7 | use yii\grid\GridView; | 7 | use yii\grid\GridView; |
| @@ -9,7 +9,7 @@ | @@ -9,7 +9,7 @@ | ||
| 9 | 9 | ||
| 10 | /** | 10 | /** |
| 11 | * @var View $this | 11 | * @var View $this |
| 12 | - * @var BlogArticleSearch $searchModel | 12 | + * @var ArticleSearch $searchModel |
| 13 | * @var ActiveDataProvider $dataProvider | 13 | * @var ActiveDataProvider $dataProvider |
| 14 | */ | 14 | */ |
| 15 | 15 | ||
| @@ -39,7 +39,7 @@ | @@ -39,7 +39,7 @@ | ||
| 39 | 'attribute' => 'status', | 39 | 'attribute' => 'status', |
| 40 | 'value' => function($model) { | 40 | 'value' => function($model) { |
| 41 | /** | 41 | /** |
| 42 | - * @var BlogArticle $model | 42 | + * @var Article $model |
| 43 | */ | 43 | */ |
| 44 | return ( !$model->status ) ? \Yii::t('blog', 'Not active') : \Yii::t('blog', 'Active'); | 44 | return ( !$model->status ) ? \Yii::t('blog', 'Not active') : \Yii::t('blog', 'Active'); |
| 45 | }, | 45 | }, |
views/default/index.php deleted
| 1 | -<div class="blog-default-index"> | ||
| 2 | - <h1><?= $this->context->action->uniqueId ?></h1> | ||
| 3 | - <p> | ||
| 4 | - This is the view content for action "<?= $this->context->action->id ?>". | ||
| 5 | - The action belongs to the controller "<?= get_class($this->context) ?>" | ||
| 6 | - in the "<?= $this->context->module->id ?>" module. | ||
| 7 | - </p> | ||
| 8 | - <p> | ||
| 9 | - You may customize this page by editing the following file:<br> | ||
| 10 | - <code><?= __FILE__ ?></code> | ||
| 11 | - </p> | ||
| 12 | -</div> |