Commit fe5be656c6a29aecc5f336c383442ef0d28784c4
Merge branch 'Yarik'
Showing
147 changed files
with
1967 additions
and
744 deletions
Show diff stats
Too many changes.
To preserve performance only 100 of 147 files are displayed.
| 1 | +<?php | ||
| 2 | + | ||
| 3 | +namespace backend\controllers; | ||
| 4 | + | ||
| 5 | +use Yii; | ||
| 6 | +use backend\models\AdminMenu; | ||
| 7 | +use backend\models\AdminMenuSearch; | ||
| 8 | +use yii\web\Controller; | ||
| 9 | +use yii\web\NotFoundHttpException; | ||
| 10 | +use yii\filters\VerbFilter; | ||
| 11 | + | ||
| 12 | +/** | ||
| 13 | + * AdminMenuController implements the CRUD actions for AdminMenu model. | ||
| 14 | + */ | ||
| 15 | +class AdminMenuController extends Controller | ||
| 16 | +{ | ||
| 17 | + public $layout = 'settings'; | ||
| 18 | + | ||
| 19 | + public function behaviors() | ||
| 20 | + { | ||
| 21 | + return [ | ||
| 22 | + 'verbs' => [ | ||
| 23 | + 'class' => VerbFilter::className(), | ||
| 24 | + 'actions' => [ | ||
| 25 | + 'delete' => ['post'], | ||
| 26 | + ], | ||
| 27 | + ], | ||
| 28 | + ]; | ||
| 29 | + } | ||
| 30 | + | ||
| 31 | + /** | ||
| 32 | + * Lists all AdminMenu models. | ||
| 33 | + * @return mixed | ||
| 34 | + */ | ||
| 35 | + public function actionIndex() | ||
| 36 | + { | ||
| 37 | + $searchModel = new AdminMenuSearch(); | ||
| 38 | + $dataProvider = $searchModel->search(Yii::$app->request->queryParams); | ||
| 39 | + | ||
| 40 | + return $this->render('index', [ | ||
| 41 | + 'searchModel' => $searchModel, | ||
| 42 | + 'dataProvider' => $dataProvider, | ||
| 43 | + ]); | ||
| 44 | + } | ||
| 45 | + | ||
| 46 | + /** | ||
| 47 | + * Displays a single AdminMenu model. | ||
| 48 | + * @param integer $id | ||
| 49 | + * @return mixed | ||
| 50 | + */ | ||
| 51 | + public function actionView($id) | ||
| 52 | + { | ||
| 53 | + return $this->render('view', [ | ||
| 54 | + 'model' => $this->findModel($id), | ||
| 55 | + ]); | ||
| 56 | + } | ||
| 57 | + | ||
| 58 | + /** | ||
| 59 | + * Creates a new AdminMenu model. | ||
| 60 | + * If creation is successful, the browser will be redirected to the 'view' page. | ||
| 61 | + * @return mixed | ||
| 62 | + */ | ||
| 63 | + public function actionCreate() | ||
| 64 | + { | ||
| 65 | + $model = new AdminMenu(); | ||
| 66 | + if ($model->load(Yii::$app->request->post()) && $model->save()) { | ||
| 67 | + return $this->redirect(['view', 'id' => $model->admin_menu_id]); | ||
| 68 | + } else { | ||
| 69 | + return $this->render('create', [ | ||
| 70 | + 'model' => $model, | ||
| 71 | + ]); | ||
| 72 | + } | ||
| 73 | + } | ||
| 74 | + | ||
| 75 | + /** | ||
| 76 | + * Updates an existing AdminMenu model. | ||
| 77 | + * If update is successful, the browser will be redirected to the 'view' page. | ||
| 78 | + * @param integer $id | ||
| 79 | + * @return mixed | ||
| 80 | + */ | ||
| 81 | + public function actionUpdate($id) | ||
| 82 | + { | ||
| 83 | + $model = $this->findModel($id); | ||
| 84 | + | ||
| 85 | + if ($model->load(Yii::$app->request->post()) && $model->save()) { | ||
| 86 | + return $this->redirect(['view', 'id' => $model->adminmenu_id]); | ||
| 87 | + } else { | ||
| 88 | + return $this->render('update', [ | ||
| 89 | + 'model' => $model, | ||
| 90 | + ]); | ||
| 91 | + } | ||
| 92 | + } | ||
| 93 | + | ||
| 94 | + /** | ||
| 95 | + * Deletes an existing AdminMenu model. | ||
| 96 | + * If deletion is successful, the browser will be redirected to the 'index' page. | ||
| 97 | + * @param integer $id | ||
| 98 | + * @return mixed | ||
| 99 | + */ | ||
| 100 | + public function actionDelete($id) | ||
| 101 | + { | ||
| 102 | + $this->findModel($id)->delete(); | ||
| 103 | + | ||
| 104 | + return $this->redirect(['index']); | ||
| 105 | + } | ||
| 106 | + | ||
| 107 | + /** | ||
| 108 | + * Finds the AdminMenu model based on its primary key value. | ||
| 109 | + * If the model is not found, a 404 HTTP exception will be thrown. | ||
| 110 | + * @param integer $id | ||
| 111 | + * @return AdminMenu the loaded model | ||
| 112 | + * @throws NotFoundHttpException if the model cannot be found | ||
| 113 | + */ | ||
| 114 | + protected function findModel($id) | ||
| 115 | + { | ||
| 116 | + if (($model = AdminMenu::findOne($id)) !== null) { | ||
| 117 | + return $model; | ||
| 118 | + } else { | ||
| 119 | + throw new NotFoundHttpException('The requested page does not exist.'); | ||
| 120 | + } | ||
| 121 | + } | ||
| 122 | + | ||
| 123 | +} |
backend/controllers/LanguageController.php
| @@ -54,7 +54,7 @@ class LanguageController extends Controller | @@ -54,7 +54,7 @@ class LanguageController extends Controller | ||
| 54 | { | 54 | { |
| 55 | if(!empty(Yii::$app->request->get('id'))) { | 55 | if(!empty(Yii::$app->request->get('id'))) { |
| 56 | $model = $this->findModel(Yii::$app->request->get('id')); | 56 | $model = $this->findModel(Yii::$app->request->get('id')); |
| 57 | - $model->active = 1; | 57 | + $model->status = 1; |
| 58 | $model->save(); | 58 | $model->save(); |
| 59 | return $this->redirect(['index']); | 59 | return $this->redirect(['index']); |
| 60 | } else { | 60 | } else { |
| @@ -77,7 +77,7 @@ class LanguageController extends Controller | @@ -77,7 +77,7 @@ class LanguageController extends Controller | ||
| 77 | public function actionDelete($id) | 77 | public function actionDelete($id) |
| 78 | { | 78 | { |
| 79 | $model = $this->findModel($id); | 79 | $model = $this->findModel($id); |
| 80 | - $model->active = 0; | 80 | + $model->status = 0; |
| 81 | $model->save(); | 81 | $model->save(); |
| 82 | 82 | ||
| 83 | return $this->redirect(['index']); | 83 | return $this->redirect(['index']); |
| @@ -152,18 +152,18 @@ class LanguageController extends Controller | @@ -152,18 +152,18 @@ class LanguageController extends Controller | ||
| 152 | public function actionDeleteAdress($id) | 152 | public function actionDeleteAdress($id) |
| 153 | { | 153 | { |
| 154 | $model = $this->findModelAdress($id); | 154 | $model = $this->findModelAdress($id); |
| 155 | - $children = $model->hasMany(Option::className(), ['parent_id' => 'option_id'])->all(); | 155 | + $children = $model->hasMany(Option::className(), ['option_pid' => 'option_id'])->all(); |
| 156 | $langs = array(); | 156 | $langs = array(); |
| 157 | if(!empty($children)) { | 157 | if(!empty($children)) { |
| 158 | foreach($children as $child) { | 158 | foreach($children as $child) { |
| 159 | - $langs = OptionLang::findAll(['id' => $child->option_id]); | 159 | + $langs = OptionLang::findAll(['option_language_id' => $child->option_id]); |
| 160 | foreach($langs as $lang) { | 160 | foreach($langs as $lang) { |
| 161 | $lang->delete(); | 161 | $lang->delete(); |
| 162 | } | 162 | } |
| 163 | $child->delete(); | 163 | $child->delete(); |
| 164 | } | 164 | } |
| 165 | } | 165 | } |
| 166 | - $langs = OptionLang::findAll(['id' => $id]); | 166 | + $langs = OptionLang::findAll(['option_language_id' => $id]); |
| 167 | foreach($langs as $lang) { | 167 | foreach($langs as $lang) { |
| 168 | $lang->delete(); | 168 | $lang->delete(); |
| 169 | } | 169 | } |
backend/controllers/MenuController.php
| @@ -118,4 +118,5 @@ class MenuController extends Controller | @@ -118,4 +118,5 @@ class MenuController extends Controller | ||
| 118 | throw new NotFoundHttpException('The requested page does not exist.'); | 118 | throw new NotFoundHttpException('The requested page does not exist.'); |
| 119 | } | 119 | } |
| 120 | } | 120 | } |
| 121 | + | ||
| 121 | } | 122 | } |
| 1 | +<?php | ||
| 2 | +namespace backend\controllers; | ||
| 3 | + | ||
| 4 | +use Yii; | ||
| 5 | +use yii\filters\AccessControl; | ||
| 6 | +use yii\web\Controller; | ||
| 7 | +use common\models\LoginForm; | ||
| 8 | +use yii\filters\VerbFilter; | ||
| 9 | +use backend\models\Profile; | ||
| 10 | +use common\models\User; | ||
| 11 | +use frontend\models\Option; | ||
| 12 | +use yii\data\ActiveDataProvider; | ||
| 13 | +use yii\validators\BooleanValidator; | ||
| 14 | +use yii\validators\StringValidator; | ||
| 15 | +/** | ||
| 16 | + * Site controller | ||
| 17 | + */ | ||
| 18 | +class SettingsController extends Controller | ||
| 19 | +{ | ||
| 20 | + public $layout = 'settings'; | ||
| 21 | + /** | ||
| 22 | + * @inheritdoc | ||
| 23 | + */ | ||
| 24 | + public function actions() | ||
| 25 | + { | ||
| 26 | + return [ | ||
| 27 | + 'error' => [ | ||
| 28 | + 'class' => 'yii\web\ErrorAction', | ||
| 29 | + ], | ||
| 30 | + ]; | ||
| 31 | + } | ||
| 32 | + | ||
| 33 | + public function actionIndex() | ||
| 34 | + { | ||
| 35 | + return $this->render('index'); | ||
| 36 | + } | ||
| 37 | + | ||
| 38 | +} |
backend/controllers/TerminController.php
| @@ -5,26 +5,24 @@ namespace backend\controllers; | @@ -5,26 +5,24 @@ namespace backend\controllers; | ||
| 5 | use Yii; | 5 | use Yii; |
| 6 | use backend\models\Termin; | 6 | use backend\models\Termin; |
| 7 | use backend\models\TerminSearch; | 7 | use backend\models\TerminSearch; |
| 8 | -use yii\filters\AccessControl; | ||
| 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 | use backend\models\TerminLang; | 11 | use backend\models\TerminLang; |
| 13 | use backend\models\TerminStructure; | 12 | use backend\models\TerminStructure; |
| 14 | -use common\models\Language; | ||
| 15 | -use backend\models\TerminRelation; | 13 | +use yii\filters\AccessControl; |
| 16 | 14 | ||
| 17 | /** | 15 | /** |
| 18 | * TerminController implements the CRUD actions for Termin model. | 16 | * TerminController implements the CRUD actions for Termin model. |
| 19 | */ | 17 | */ |
| 20 | class TerminController extends Controller | 18 | class TerminController extends Controller |
| 21 | { | 19 | { |
| 22 | - public function behaviors() | 20 | + public function behaviors() |
| 23 | { | 21 | { |
| 24 | return [ | 22 | return [ |
| 25 | 'access' => [ | 23 | 'access' => [ |
| 26 | 'class' => AccessControl::className(), | 24 | 'class' => AccessControl::className(), |
| 27 | - 'except' => ['login', 'error', 'index', 'create', 'update', 'view', 'form', 'delete'], | 25 | + 'except' => ['login', 'error', 'index', 'create', 'update'], |
| 28 | 'rules' => [ | 26 | 'rules' => [ |
| 29 | [ | 27 | [ |
| 30 | 'allow' => true, | 28 | 'allow' => true, |
| @@ -41,20 +39,6 @@ class TerminController extends Controller | @@ -41,20 +39,6 @@ class TerminController extends Controller | ||
| 41 | ], | 39 | ], |
| 42 | ]; | 40 | ]; |
| 43 | } | 41 | } |
| 44 | - | ||
| 45 | - // ==== AJAX ==== | ||
| 46 | - | ||
| 47 | - public function actionForm($lang_id, $widget_id) | ||
| 48 | - { | ||
| 49 | - if (! $model = Language::find()->where(['>=', 'language_id', 1])->andWhere(['active' => 1, 'language_id' => $lang_id])->one()) | ||
| 50 | - { | ||
| 51 | - throw new NotFoundHttpException('Language not found'); | ||
| 52 | - } | ||
| 53 | - | ||
| 54 | - $article_lang = new TerminLang(); | ||
| 55 | - | ||
| 56 | - return $this->renderAjax('_article_form', ['model' => $model, 'article_lang' => $article_lang, 'widget_id' => $widget_id]); | ||
| 57 | - } | ||
| 58 | 42 | ||
| 59 | /** | 43 | /** |
| 60 | * Lists all Termin models. | 44 | * Lists all Termin models. |
| @@ -90,48 +74,23 @@ class TerminController extends Controller | @@ -90,48 +74,23 @@ class TerminController extends Controller | ||
| 90 | */ | 74 | */ |
| 91 | public function actionCreate() | 75 | public function actionCreate() |
| 92 | { | 76 | { |
| 93 | - $model = new Termin(); | ||
| 94 | - $model_pid = new TerminStructure(); | 77 | + $model = new Termin(); |
| 78 | + $model_lang = new TerminLang(); | ||
| 95 | 79 | ||
| 96 | - // проверяем общие таблицы | ||
| 97 | if ($model->load(Yii::$app->request->post()) | 80 | if ($model->load(Yii::$app->request->post()) |
| 98 | - && $model_pid->load(Yii::$app->request->post()) | ||
| 99 | - ) | ||
| 100 | - { | ||
| 101 | - $model_lang = []; | ||
| 102 | - | ||
| 103 | - foreach (Yii::$app->request->post()['TerminLang'] as $index => $row) | ||
| 104 | - { | ||
| 105 | - $model_lang[$index] = new TerminLang(); | ||
| 106 | - } | ||
| 107 | - | ||
| 108 | - if (TerminLang::loadMultiple($model_lang, Yii::$app->request->post()) | ||
| 109 | - && TerminLang::validateMultiple($model_lang)) | ||
| 110 | - { | ||
| 111 | - $model->save(); | ||
| 112 | - $model_pid->termin_id = $model->termin_id; | ||
| 113 | - $model_pid->save(); | ||
| 114 | - | ||
| 115 | - foreach ($model_lang as $post) | ||
| 116 | - { | ||
| 117 | - $post->termin_id = $model->termin_id; | ||
| 118 | - $post->save(false); | ||
| 119 | - } | ||
| 120 | - } | 81 | + && $model_lang->load(Yii::$app->request->post())) |
| 82 | + { | ||
| 83 | + $model->save(); | ||
| 84 | + $model_lang->termin_id = $model->termin_id; | ||
| 85 | + $model_lang->save(); | ||
| 121 | 86 | ||
| 122 | return $this->redirect(['view', 'id' => $model->termin_id]); | 87 | return $this->redirect(['view', 'id' => $model->termin_id]); |
| 123 | } | 88 | } |
| 124 | else | 89 | else |
| 125 | - { | ||
| 126 | - $default_lang = Language::getDefaultLang(); | ||
| 127 | - | ||
| 128 | - $LANG = []; | ||
| 129 | - $LANG[$default_lang->language_id] = new TerminLang(); | ||
| 130 | - | 90 | + { |
| 131 | return $this->render('create', [ | 91 | return $this->render('create', [ |
| 132 | 'model' => $model, | 92 | 'model' => $model, |
| 133 | - 'model_lang' => $LANG, | ||
| 134 | - 'model_pid' => $model_pid, | 93 | + 'model_lang' => $model_lang, |
| 135 | ]); | 94 | ]); |
| 136 | } | 95 | } |
| 137 | } | 96 | } |
| @@ -145,49 +104,22 @@ class TerminController extends Controller | @@ -145,49 +104,22 @@ class TerminController extends Controller | ||
| 145 | public function actionUpdate($id) | 104 | public function actionUpdate($id) |
| 146 | { | 105 | { |
| 147 | $model = $this->findModel($id); | 106 | $model = $this->findModel($id); |
| 148 | - $model_lang = Termin::findOne($id)->getTerminLangs()->indexBy('lang_id')->all(); | ||
| 149 | - $model_pid = TerminStructure::findOne($id); | ||
| 150 | - | ||
| 151 | - // проверяем общие таблицы | 107 | + $model_lang = TerminLang::findOne($id); |
| 108 | + $model_pid = TerminStructure::findOne($id)->getRelation('terminPid')->one(); | ||
| 109 | + | ||
| 110 | + //var_dump(Yii::$app->request->post()); | ||
| 111 | + //var_dump($model_pid->termin->termin_id); die; | ||
| 112 | + | ||
| 152 | if ($model->load(Yii::$app->request->post()) | 113 | if ($model->load(Yii::$app->request->post()) |
| 114 | + && $model_lang->load(Yii::$app->request->post()) | ||
| 153 | && $model_pid->load(Yii::$app->request->post()) | 115 | && $model_pid->load(Yii::$app->request->post()) |
| 154 | ) | 116 | ) |
| 155 | - { | ||
| 156 | -/* | ||
| 157 | - // проверяем таблицы lang | ||
| 158 | - $post_lang = Yii::$app->request->post('TerminLang'); | ||
| 159 | - if (! empty ($post_lang)) | ||
| 160 | - { | ||
| 161 | - foreach ($post_lang as &$row) | ||
| 162 | - { | ||
| 163 | - $row += new TerminLang(); | ||
| 164 | - } | ||
| 165 | - } | ||
| 166 | - | ||
| 167 | - var_dump($post_lang); | ||
| 168 | - | ||
| 169 | - die; | ||
| 170 | -*/ | ||
| 171 | - // + появились | ||
| 172 | - | ||
| 173 | - // - удалились | ||
| 174 | - | ||
| 175 | - if (TerminLang::loadMultiple($model_lang, Yii::$app->request->post()) | ||
| 176 | - && TerminLang::validateMultiple($model_lang)) | ||
| 177 | - { | ||
| 178 | - foreach ($model_lang as $post) | ||
| 179 | - { | ||
| 180 | - $post->termin_id = $model->termin_id; | ||
| 181 | - $post->save(false); | ||
| 182 | - } | ||
| 183 | - | ||
| 184 | - $model->save(); | ||
| 185 | - $model_pid->save(); | ||
| 186 | - | ||
| 187 | - return $this->redirect(['view', 'id' => $model->termin_id]); | ||
| 188 | - } | ||
| 189 | - | ||
| 190 | - return $this->redirect('index'); | 117 | + { |
| 118 | + $model->save(); | ||
| 119 | + $model_lang->save(); | ||
| 120 | + $model_pid->termin_pid = $model_pid->termin->termin_id; | ||
| 121 | + | ||
| 122 | + return $this->redirect(['view', 'id' => $model->termin_id]); | ||
| 191 | } | 123 | } |
| 192 | else | 124 | else |
| 193 | { | 125 | { |
| 1 | +<?php | ||
| 2 | + | ||
| 3 | +namespace backend\models; | ||
| 4 | + | ||
| 5 | +use Yii; | ||
| 6 | + | ||
| 7 | +/** | ||
| 8 | + * This is the model class for table "admin_menu". | ||
| 9 | + * | ||
| 10 | + * @property integer $admin_menu_id | ||
| 11 | + * @property integer $admin_menu_pid | ||
| 12 | + * @property integer $status | ||
| 13 | + * @property integer $hide_min | ||
| 14 | + * @property integer $sort | ||
| 15 | + * @property string $name | ||
| 16 | + * @property string $path | ||
| 17 | + * @property string $param | ||
| 18 | + * | ||
| 19 | + * @property AdminMenu $parent | ||
| 20 | + * @property AdminMenu[] $adminMenus | ||
| 21 | + * @property AdminMenuAccessGroup[] $adminMenuAccessGroups | ||
| 22 | + * @property AdminMenuAccessUser[] $adminMenuAccessUsers | ||
| 23 | + */ | ||
| 24 | +class AdminMenu extends \yii\db\ActiveRecord | ||
| 25 | +{ | ||
| 26 | + | ||
| 27 | + public $parentt; | ||
| 28 | + /** | ||
| 29 | + * @inheritdoc | ||
| 30 | + */ | ||
| 31 | + public static function tableName() | ||
| 32 | + { | ||
| 33 | + return 'admin_menu'; | ||
| 34 | + } | ||
| 35 | + | ||
| 36 | + /** | ||
| 37 | + * @inheritdoc | ||
| 38 | + */ | ||
| 39 | + public function rules() | ||
| 40 | + { | ||
| 41 | + return [ | ||
| 42 | + [['admin_menu_pid', 'status', 'hide_min', 'sort'], 'integer'], | ||
| 43 | + [['name'], 'required'], | ||
| 44 | + [['name', 'path', 'param','parentt'], 'string'] | ||
| 45 | + ]; | ||
| 46 | + } | ||
| 47 | + | ||
| 48 | + /** | ||
| 49 | + * @inheritdoc | ||
| 50 | + */ | ||
| 51 | + public function attributeLabels() | ||
| 52 | + { | ||
| 53 | + return [ | ||
| 54 | + 'admin_menu_id' => Yii::t('app', 'Admin menu ID'), | ||
| 55 | + 'admin_menu_pid' => Yii::t('app', 'Admin menu parent ID'), | ||
| 56 | + 'status' => Yii::t('app', 'Status'), | ||
| 57 | + 'hide_min' => Yii::t('app', 'Hide Min'), | ||
| 58 | + 'sort' => Yii::t('app', 'Sort'), | ||
| 59 | + 'name' => Yii::t('app', 'Name'), | ||
| 60 | + 'path' => Yii::t('app', 'Path'), | ||
| 61 | + 'param' => Yii::t('app', 'Params'), | ||
| 62 | + 'parentt' => Yii::t('app', 'Parent item') | ||
| 63 | + ]; | ||
| 64 | + } | ||
| 65 | + | ||
| 66 | + /** | ||
| 67 | + * @return \yii\db\ActiveQuery | ||
| 68 | + */ | ||
| 69 | + public function getParent() | ||
| 70 | + { | ||
| 71 | + return $this->hasOne(AdminMenu::className(), ['admin_menu_id' => 'admin_menu_pid']); | ||
| 72 | + } | ||
| 73 | + | ||
| 74 | + /** | ||
| 75 | + * @return \yii\db\ActiveQuery | ||
| 76 | + */ | ||
| 77 | + public function getAdminMenus() | ||
| 78 | + { | ||
| 79 | + return $this->hasMany(AdminMenu::className(), ['admin_menu_pid' => 'admin_menu_id']); | ||
| 80 | + } | ||
| 81 | + | ||
| 82 | + /** | ||
| 83 | + * @return \yii\db\ActiveQuery | ||
| 84 | + */ | ||
| 85 | + public function getAdminMenuAccessGroups() | ||
| 86 | + { | ||
| 87 | + return $this->hasMany(AdminMenuAccessGroup::className(), ['admin_menu_id' => 'admin_menu_id']); | ||
| 88 | + } | ||
| 89 | + | ||
| 90 | + /** | ||
| 91 | + * @return \yii\db\ActiveQuery | ||
| 92 | + */ | ||
| 93 | + public function getAdminMenuAccessUsers() | ||
| 94 | + { | ||
| 95 | + return $this->hasMany(AdminMenuAccessUser::className(), ['admin_menu_id' => 'admin_menu_id']); | ||
| 96 | + } | ||
| 97 | + | ||
| 98 | + public static function buildMenu($withValues = false) | ||
| 99 | + { | ||
| 100 | + $result = []; | ||
| 101 | + $roots = self::find()->where(['admin_menu_pid' => NULL])->with(['adminMenus'])->all(); | ||
| 102 | + foreach($roots as $root) { | ||
| 103 | + if($root->adminMenus) { | ||
| 104 | + $result[] = ['label' => Yii::t('app', $root->name), 'id' => $root->admin_menu_id, 'options' => ['class' => 'header']]; | ||
| 105 | + foreach($root->adminMenus as $submenu) { | ||
| 106 | + if($submenu->adminMenus) { | ||
| 107 | + $items = []; | ||
| 108 | + foreach($submenu->adminMenus as $item) { | ||
| 109 | + $items[] = ['label' => Yii::t('app', $item->name), 'id' => $item->admin_menu_id, 'icon' => 'fa fa-circle-o', 'url' => array_merge([$item->path], \common\models\Tools::parseUrlParams($item->param))]; | ||
| 110 | + } | ||
| 111 | + $result[] = ['label' => Yii::t('app', $submenu->name), 'id' => $submenu->admin_menu_id, 'icon' => 'fa fa-circle-o', 'url' => '#', 'items' => $items]; | ||
| 112 | + unset($items); | ||
| 113 | + } else { | ||
| 114 | + $result[] = ['label' => Yii::t('app', $submenu->name), 'id' => $submenu->admin_menu_id, 'icon' => 'fa fa-circle-o', 'url' => array_merge([$submenu->path], \common\models\Tools::parseUrlParams($submenu->param))]; | ||
| 115 | + } | ||
| 116 | + } | ||
| 117 | + } | ||
| 118 | + } | ||
| 119 | + return $result; | ||
| 120 | + } | ||
| 121 | + | ||
| 122 | + public static function buildMenuSelect() | ||
| 123 | + { | ||
| 124 | + $result = []; | ||
| 125 | + $roots = self::find()->where(['admin_menu_pid' => NULL])->with(['adminMenus'])->all(); | ||
| 126 | + foreach($roots as $root) { | ||
| 127 | + if($root->adminMenus) { | ||
| 128 | + $items = []; | ||
| 129 | + foreach($root->adminMenus as $submenu) { | ||
| 130 | + $items[] = ['label' => Yii::t('app', $submenu->name), 'id' => $submenu->admin_menu_id]; | ||
| 131 | + } | ||
| 132 | + $result[] = ['label' => Yii::t('app', $root->name), 'id' => $root->admin_menu_id, 'items' => $items]; | ||
| 133 | + unset($items); | ||
| 134 | + } else { | ||
| 135 | + $result[] = ['label' => Yii::t('app', $root->name), 'id' => $root->admin_menu_id]; | ||
| 136 | + } | ||
| 137 | + } | ||
| 138 | + return $result; | ||
| 139 | + } | ||
| 140 | + | ||
| 141 | + public function beforeSave($insert) | ||
| 142 | + { | ||
| 143 | + if (parent::beforeSave($insert)) { | ||
| 144 | + if(!$this->admin_menu_pid) { | ||
| 145 | + $this->admin_menu_pid = NULL; | ||
| 146 | + } | ||
| 147 | + return true; | ||
| 148 | + } else { | ||
| 149 | + return false; | ||
| 150 | + } | ||
| 151 | + } | ||
| 152 | +} |
| 1 | +<?php | ||
| 2 | + | ||
| 3 | +namespace backend\models; | ||
| 4 | + | ||
| 5 | +use Yii; | ||
| 6 | + | ||
| 7 | +/** | ||
| 8 | + * This is the model class for table "admin_menu_access_group". | ||
| 9 | + * | ||
| 10 | + * @property integer $admin_menu_access_group_id | ||
| 11 | + * @property integer $admin_menu_id | ||
| 12 | + * @property string $group | ||
| 13 | + * | ||
| 14 | + * @property AdminMenu $menu | ||
| 15 | + * @property AuthRule $group0 | ||
| 16 | + */ | ||
| 17 | +class AdminMenuAccessGroup extends \yii\db\ActiveRecord | ||
| 18 | +{ | ||
| 19 | + /** | ||
| 20 | + * @inheritdoc | ||
| 21 | + */ | ||
| 22 | + public static function tableName() | ||
| 23 | + { | ||
| 24 | + return 'admin_menu_access_group'; | ||
| 25 | + } | ||
| 26 | + | ||
| 27 | + /** | ||
| 28 | + * @inheritdoc | ||
| 29 | + */ | ||
| 30 | + public function rules() | ||
| 31 | + { | ||
| 32 | + return [ | ||
| 33 | + [['admin_menu_id'], 'integer'], | ||
| 34 | + [['group'], 'string'] | ||
| 35 | + ]; | ||
| 36 | + } | ||
| 37 | + | ||
| 38 | + /** | ||
| 39 | + * @inheritdoc | ||
| 40 | + */ | ||
| 41 | + public function attributeLabels() | ||
| 42 | + { | ||
| 43 | + return [ | ||
| 44 | + 'admin_menu_access_group_id' => Yii::t('app', 'Admin Access Group ID'), | ||
| 45 | + 'admin_menu_id' => Yii::t('app', 'Admin Menu ID'), | ||
| 46 | + 'group' => Yii::t('app', 'Group'), | ||
| 47 | + ]; | ||
| 48 | + } | ||
| 49 | + | ||
| 50 | + /** | ||
| 51 | + * @return \yii\db\ActiveQuery | ||
| 52 | + */ | ||
| 53 | + public function getMenu() | ||
| 54 | + { | ||
| 55 | + return $this->hasOne(AdminMenu::className(), ['admin_menu_id' => 'admin_menu_id']); | ||
| 56 | + } | ||
| 57 | + | ||
| 58 | + /** | ||
| 59 | + * @return \yii\db\ActiveQuery | ||
| 60 | + */ | ||
| 61 | + public function getGroup0() | ||
| 62 | + { | ||
| 63 | + return $this->hasOne(AuthRule::className(), ['name' => 'group']); | ||
| 64 | + } | ||
| 65 | +} |
| 1 | +<?php | ||
| 2 | + | ||
| 3 | +namespace backend\models; | ||
| 4 | + | ||
| 5 | +use common\models\User; | ||
| 6 | +use Yii; | ||
| 7 | + | ||
| 8 | +/** | ||
| 9 | + * This is the model class for table "admin_menu_access_user". | ||
| 10 | + * | ||
| 11 | + * @property integer $admin_menu_id | ||
| 12 | + * @property integer $user_id | ||
| 13 | + * @property integer $admin_menu_access_user_id | ||
| 14 | + * | ||
| 15 | + * @property AdminMenu $menu | ||
| 16 | + * @property User $user | ||
| 17 | + */ | ||
| 18 | +class AdminMenuAccessUser extends \yii\db\ActiveRecord | ||
| 19 | +{ | ||
| 20 | + /** | ||
| 21 | + * @inheritdoc | ||
| 22 | + */ | ||
| 23 | + public static function tableName() | ||
| 24 | + { | ||
| 25 | + return 'admin_menu_access_user'; | ||
| 26 | + } | ||
| 27 | + | ||
| 28 | + /** | ||
| 29 | + * @inheritdoc | ||
| 30 | + */ | ||
| 31 | + public function rules() | ||
| 32 | + { | ||
| 33 | + return [ | ||
| 34 | + [['admin_menu_id', 'user_id'], 'integer'] | ||
| 35 | + ]; | ||
| 36 | + } | ||
| 37 | + | ||
| 38 | + /** | ||
| 39 | + * @inheritdoc | ||
| 40 | + */ | ||
| 41 | + public function attributeLabels() | ||
| 42 | + { | ||
| 43 | + return [ | ||
| 44 | + 'admin_menu_id' => Yii::t('app', 'Admin Menu ID'), | ||
| 45 | + 'user_id' => Yii::t('app', 'User ID'), | ||
| 46 | + 'admin_menu_access_user_id' => Yii::t('app', 'Admin Menu Access User ID'), | ||
| 47 | + ]; | ||
| 48 | + } | ||
| 49 | + | ||
| 50 | + /** | ||
| 51 | + * @return \yii\db\ActiveQuery | ||
| 52 | + */ | ||
| 53 | + public function getMenu() | ||
| 54 | + { | ||
| 55 | + return $this->hasOne(AdminMenu::className(), ['admin_menu_id' => 'admin_menu_id']); | ||
| 56 | + } | ||
| 57 | + | ||
| 58 | + /** | ||
| 59 | + * @return \yii\db\ActiveQuery | ||
| 60 | + */ | ||
| 61 | + public function getUser() | ||
| 62 | + { | ||
| 63 | + return $this->hasOne(User::className(), ['id' => 'user_id']); | ||
| 64 | + } | ||
| 65 | +} |
| 1 | +<?php | ||
| 2 | + | ||
| 3 | +namespace backend\models; | ||
| 4 | + | ||
| 5 | +use Yii; | ||
| 6 | +use yii\base\Model; | ||
| 7 | +use yii\data\ActiveDataProvider; | ||
| 8 | +use backend\models\AdminMenu; | ||
| 9 | + | ||
| 10 | +/** | ||
| 11 | + * AdminMenuSearch represents the model behind the search form about `backend\models\AdminMenu`. | ||
| 12 | + */ | ||
| 13 | +class AdminMenuSearch extends AdminMenu | ||
| 14 | +{ | ||
| 15 | + | ||
| 16 | + | ||
| 17 | + /** | ||
| 18 | + * @inheritdoc | ||
| 19 | + */ | ||
| 20 | + public function rules() | ||
| 21 | + { | ||
| 22 | + return [ | ||
| 23 | + [['admin_menu_id', 'admin_menu_pid', 'status', 'hide_min', 'sort'], 'integer'], | ||
| 24 | + [['name', 'path', 'param','parentt'], 'safe'], | ||
| 25 | + ]; | ||
| 26 | + } | ||
| 27 | + | ||
| 28 | + /** | ||
| 29 | + * @inheritdoc | ||
| 30 | + */ | ||
| 31 | + public function scenarios() | ||
| 32 | + { | ||
| 33 | + // bypass scenarios() implementation in the parent class | ||
| 34 | + return Model::scenarios(); | ||
| 35 | + } | ||
| 36 | + | ||
| 37 | + /** | ||
| 38 | + * Creates data provider instance with search query applied | ||
| 39 | + * | ||
| 40 | + * @param array $params | ||
| 41 | + * | ||
| 42 | + * @return ActiveDataProvider | ||
| 43 | + */ | ||
| 44 | + public function search($params) | ||
| 45 | + { | ||
| 46 | + $query = AdminMenu::find(); | ||
| 47 | + | ||
| 48 | + $dataProvider = new ActiveDataProvider([ | ||
| 49 | + 'query' => $query, | ||
| 50 | + 'pagination' => [ | ||
| 51 | + 'pageSize' => 5 | ||
| 52 | + ], | ||
| 53 | + 'sort' => [ | ||
| 54 | + 'attributes' => [ | ||
| 55 | + 'admin_menu_id', | ||
| 56 | + 'name', | ||
| 57 | + 'path', | ||
| 58 | + 'param', | ||
| 59 | + 'status', | ||
| 60 | + 'hide_min', | ||
| 61 | + 'parentt' => [ | ||
| 62 | + 'asc' => ['name' => SORT_ASC], | ||
| 63 | + 'desc' => ['name' => SORT_DESC], | ||
| 64 | + 'default' => SORT_DESC | ||
| 65 | + ] | ||
| 66 | + ] | ||
| 67 | + ] | ||
| 68 | + ]); | ||
| 69 | + | ||
| 70 | + $this->load($params); | ||
| 71 | + | ||
| 72 | + if (!$this->validate()) { | ||
| 73 | + // uncomment the following line if you do not want to return any records when validation fails | ||
| 74 | + // $query->where('0=1'); | ||
| 75 | + return $dataProvider; | ||
| 76 | + } | ||
| 77 | + | ||
| 78 | + $query->andFilterWhere([ | ||
| 79 | + 'admin_menu_id' => $this->admin_menu_id, | ||
| 80 | + 'admin_menu_pid' => $this->admin_menu_pid, | ||
| 81 | + 'status' => $this->status, | ||
| 82 | + 'hide_min' => $this->hide_min, | ||
| 83 | + 'sort' => $this->sort | ||
| 84 | + ]); | ||
| 85 | + | ||
| 86 | + | ||
| 87 | + $query->andFilterWhere(['like', 'name', $this->name]) | ||
| 88 | + ->andFilterWhere(['like', 'path', $this->path]) | ||
| 89 | + ->andFilterWhere(['like', 'param', $this->param]) | ||
| 90 | + ->andFilterWhere(['in', 'admin_menu_pid', $this->find()->select(['admin_menu_id'])->andFilterWhere(['like', 'name', $this->parentt])->column()]); | ||
| 91 | + | ||
| 92 | + return $dataProvider; | ||
| 93 | + } | ||
| 94 | +} |
backend/models/Import.php
| @@ -42,7 +42,7 @@ class Import extends \yii\db\ActiveRecord | @@ -42,7 +42,7 @@ class Import extends \yii\db\ActiveRecord | ||
| 42 | $termin_pid = 8; | 42 | $termin_pid = 8; |
| 43 | // $template_id шаблон каьегорий | 43 | // $template_id шаблон каьегорий |
| 44 | $template_id = 3; | 44 | $template_id = 3; |
| 45 | - $lang_id = 2; | 45 | + $language_id = 2; |
| 46 | $type = 'H'; | 46 | $type = 'H'; |
| 47 | 47 | ||
| 48 | // массив для импортп товаров | 48 | // массив для импортп товаров |
| @@ -69,7 +69,7 @@ class Import extends \yii\db\ActiveRecord | @@ -69,7 +69,7 @@ class Import extends \yii\db\ActiveRecord | ||
| 69 | // массив для поиска/добавления термина | 69 | // массив для поиска/добавления термина |
| 70 | $basic = [ | 70 | $basic = [ |
| 71 | 'type' => $type, | 71 | 'type' => $type, |
| 72 | - 'lang_id' => $lang_id, | 72 | + 'language_id' => $language_id, |
| 73 | 'template_id' => $template_id, | 73 | 'template_id' => $template_id, |
| 74 | ]; | 74 | ]; |
| 75 | 75 |
backend/models/LanguageSearch.php
| @@ -19,8 +19,8 @@ class LanguageSearch extends Language | @@ -19,8 +19,8 @@ class LanguageSearch extends Language | ||
| 19 | { | 19 | { |
| 20 | return [ | 20 | return [ |
| 21 | [['language_id'], 'integer'], | 21 | [['language_id'], 'integer'], |
| 22 | - [['lang_code', 'language_name'], 'safe'], | ||
| 23 | - [['is_default', 'active'], 'boolean'], | 22 | + [['language_code', 'language_name'], 'safe'], |
| 23 | + [['is_default', 'status'], 'boolean'], | ||
| 24 | ]; | 24 | ]; |
| 25 | } | 25 | } |
| 26 | 26 | ||
| @@ -59,12 +59,12 @@ class LanguageSearch extends Language | @@ -59,12 +59,12 @@ class LanguageSearch extends Language | ||
| 59 | $query->andFilterWhere([ | 59 | $query->andFilterWhere([ |
| 60 | 'language_id' => $this->language_id, | 60 | 'language_id' => $this->language_id, |
| 61 | 'is_default' => $this->is_default, | 61 | 'is_default' => $this->is_default, |
| 62 | - 'active' => $this->active, | 62 | + 'status' => $this->status, |
| 63 | ]); | 63 | ]); |
| 64 | 64 | ||
| 65 | - $query->andFilterWhere(['like', 'lang_code', $this->lang_code]) | 65 | + $query->andFilterWhere(['like', 'language_code', $this->language_code]) |
| 66 | ->andFilterWhere(['like', 'language_name', $this->language_name]) | 66 | ->andFilterWhere(['like', 'language_name', $this->language_name]) |
| 67 | - ->andWhere(['active' => '1']) | 67 | + ->andWhere(['status' => '1']) |
| 68 | ->andWhere(['>', 'language_id', '0']); | 68 | ->andWhere(['>', 'language_id', '0']); |
| 69 | 69 | ||
| 70 | return $dataProvider; | 70 | return $dataProvider; |
| @@ -89,12 +89,12 @@ class LanguageSearch extends Language | @@ -89,12 +89,12 @@ class LanguageSearch extends Language | ||
| 89 | $query->andFilterWhere([ | 89 | $query->andFilterWhere([ |
| 90 | 'language_id' => $this->language_id, | 90 | 'language_id' => $this->language_id, |
| 91 | 'is_default' => $this->is_default, | 91 | 'is_default' => $this->is_default, |
| 92 | - 'active' => $this->active, | 92 | + 'status' => $this->status, |
| 93 | ]); | 93 | ]); |
| 94 | 94 | ||
| 95 | - $query->andFilterWhere(['like', 'lang_code', $this->lang_code]) | 95 | + $query->andFilterWhere(['like', 'language_code', $this->language_code]) |
| 96 | ->andFilterWhere(['like', 'language_name', $this->language_name]) | 96 | ->andFilterWhere(['like', 'language_name', $this->language_name]) |
| 97 | - ->andWhere(['active' => '0']); | 97 | + ->andWhere(['status' => '0']); |
| 98 | 98 | ||
| 99 | return $dataProvider; | 99 | return $dataProvider; |
| 100 | } | 100 | } |
backend/models/Menu.php
| @@ -80,7 +80,7 @@ class Menu extends \yii\db\ActiveRecord | @@ -80,7 +80,7 @@ class Menu extends \yii\db\ActiveRecord | ||
| 80 | AND menu_location.menu_location_name = \''.$location_name.'\' | 80 | AND menu_location.menu_location_name = \''.$location_name.'\' |
| 81 | INNER JOIN termin ON termin.termin_id = menu.termin_id | 81 | INNER JOIN termin ON termin.termin_id = menu.termin_id |
| 82 | INNER JOIN termin_lang ON termin_lang.termin_id = menu.termin_id | 82 | INNER JOIN termin_lang ON termin_lang.termin_id = menu.termin_id |
| 83 | - AND termin_lang.lang_id = '.Yii::$app->params['lang_id'].' | 83 | + AND termin_lang.language_id = '.Yii::$app->params['language_id'].' |
| 84 | ORDER BY menu.level ASC, menu.sortorder ASC | 84 | ORDER BY menu.level ASC, menu.sortorder ASC |
| 85 | ')->queryAll(); | 85 | ')->queryAll(); |
| 86 | /* | 86 | /* |
| @@ -90,8 +90,13 @@ class Menu extends \yii\db\ActiveRecord | @@ -90,8 +90,13 @@ class Menu extends \yii\db\ActiveRecord | ||
| 90 | ->join( | 90 | ->join( |
| 91 | 'INNER JOIN', | 91 | 'INNER JOIN', |
| 92 | 'termin_lang.termin_id = menu.termin_id', | 92 | 'termin_lang.termin_id = menu.termin_id', |
| 93 | - ['lang_id' => yii::$app->params['lang_id']]) | 93 | + ['language_id' => yii::$app->params['language_id']]) |
| 94 | ->all(); | 94 | ->all(); |
| 95 | */ | 95 | */ |
| 96 | } | 96 | } |
| 97 | + | ||
| 98 | + public function getTerminLang() | ||
| 99 | + { | ||
| 100 | + return $this->hasOne(TerminLang::className(), ['termin_id' => 'termin_id']); | ||
| 101 | + } | ||
| 97 | } | 102 | } |
backend/models/MenuLocation.php
| @@ -59,6 +59,6 @@ class MenuLocation extends \yii\db\ActiveRecord | @@ -59,6 +59,6 @@ class MenuLocation extends \yii\db\ActiveRecord | ||
| 59 | */ | 59 | */ |
| 60 | public function getLangs() | 60 | public function getLangs() |
| 61 | { | 61 | { |
| 62 | - return $this->hasMany(Language::className(), ['language_id' => 'lang_id'])->viaTable('menu_location_lang', ['menu_location_id' => 'menu_location_id']); | 62 | + return $this->hasMany(Language::className(), ['language_id' => 'language_id'])->viaTable('menu_location_lang', ['menu_location_id' => 'menu_location_id']); |
| 63 | } | 63 | } |
| 64 | } | 64 | } |
backend/models/MenuLocationLang.php
| @@ -9,7 +9,7 @@ use Yii; | @@ -9,7 +9,7 @@ use Yii; | ||
| 9 | * | 9 | * |
| 10 | * @property integer $menu_location_id | 10 | * @property integer $menu_location_id |
| 11 | * @property string $menu_location_title | 11 | * @property string $menu_location_title |
| 12 | - * @property integer $lang_id | 12 | + * @property integer $language_id |
| 13 | * | 13 | * |
| 14 | * @property Language $lang | 14 | * @property Language $lang |
| 15 | * @property MenuLocation $menuLocation | 15 | * @property MenuLocation $menuLocation |
| @@ -30,8 +30,8 @@ class MenuLocationLang extends \yii\db\ActiveRecord | @@ -30,8 +30,8 @@ class MenuLocationLang extends \yii\db\ActiveRecord | ||
| 30 | public function rules() | 30 | public function rules() |
| 31 | { | 31 | { |
| 32 | return [ | 32 | return [ |
| 33 | - [['menu_location_id', 'menu_location_title', 'lang_id'], 'required'], | ||
| 34 | - [['menu_location_id', 'lang_id'], 'integer'], | 33 | + [['menu_location_id', 'menu_location_title', 'language_id'], 'required'], |
| 34 | + [['menu_location_id', 'language_id'], 'integer'], | ||
| 35 | [['menu_location_title'], 'string', 'max' => 250] | 35 | [['menu_location_title'], 'string', 'max' => 250] |
| 36 | ]; | 36 | ]; |
| 37 | } | 37 | } |
| @@ -44,7 +44,7 @@ class MenuLocationLang extends \yii\db\ActiveRecord | @@ -44,7 +44,7 @@ class MenuLocationLang extends \yii\db\ActiveRecord | ||
| 44 | return [ | 44 | return [ |
| 45 | 'menu_location_id' => Yii::t('app', 'Menu Location ID'), | 45 | 'menu_location_id' => Yii::t('app', 'Menu Location ID'), |
| 46 | 'menu_location_title' => Yii::t('app', 'Menu Location Title'), | 46 | 'menu_location_title' => Yii::t('app', 'Menu Location Title'), |
| 47 | - 'lang_id' => Yii::t('app', 'Lang ID'), | 47 | + 'language_id' => Yii::t('app', 'Lang ID'), |
| 48 | ]; | 48 | ]; |
| 49 | } | 49 | } |
| 50 | 50 | ||
| @@ -53,7 +53,7 @@ class MenuLocationLang extends \yii\db\ActiveRecord | @@ -53,7 +53,7 @@ class MenuLocationLang extends \yii\db\ActiveRecord | ||
| 53 | */ | 53 | */ |
| 54 | public function getLang() | 54 | public function getLang() |
| 55 | { | 55 | { |
| 56 | - return $this->hasOne(Language::className(), ['language_id' => 'lang_id']); | 56 | + return $this->hasOne(Language::className(), ['language_id' => 'language_id']); |
| 57 | } | 57 | } |
| 58 | 58 | ||
| 59 | /** | 59 | /** |
backend/models/MenuSearch.php
| @@ -49,7 +49,8 @@ class MenuSearch extends Menu | @@ -49,7 +49,8 @@ class MenuSearch extends Menu | ||
| 49 | 49 | ||
| 50 | $this->load($params); | 50 | $this->load($params); |
| 51 | 51 | ||
| 52 | - if (!$this->validate()) { | 52 | + if (! $this->validate()) |
| 53 | + { | ||
| 53 | // uncomment the following line if you do not want to return any records when validation fails | 54 | // uncomment the following line if you do not want to return any records when validation fails |
| 54 | // $query->where('0=1'); | 55 | // $query->where('0=1'); |
| 55 | return $dataProvider; | 56 | return $dataProvider; |
| @@ -67,7 +68,7 @@ class MenuSearch extends Menu | @@ -67,7 +68,7 @@ class MenuSearch extends Menu | ||
| 67 | ]); | 68 | ]); |
| 68 | 69 | ||
| 69 | $query->andFilterWhere(['like', 'name', $this->name]) | 70 | $query->andFilterWhere(['like', 'name', $this->name]) |
| 70 | - ->andFilterWhere(['like', 'url', $this->url]); | 71 | + ->andFilterWhere(['like', 'url', $this->url]); |
| 71 | 72 | ||
| 72 | return $dataProvider; | 73 | return $dataProvider; |
| 73 | } | 74 | } |
backend/models/NewOptionsLang.php
| @@ -9,7 +9,7 @@ use Yii; | @@ -9,7 +9,7 @@ use Yii; | ||
| 9 | * | 9 | * |
| 10 | * @property integer $primary | 10 | * @property integer $primary |
| 11 | * @property integer $id | 11 | * @property integer $id |
| 12 | - * @property integer $lang_id | 12 | + * @property integer $language_id |
| 13 | * @property string $value | 13 | * @property string $value |
| 14 | */ | 14 | */ |
| 15 | class NewOptionsLang extends \yii\db\ActiveRecord | 15 | class NewOptionsLang extends \yii\db\ActiveRecord |
| @@ -32,7 +32,7 @@ class NewOptionsLang extends \yii\db\ActiveRecord | @@ -32,7 +32,7 @@ class NewOptionsLang extends \yii\db\ActiveRecord | ||
| 32 | { | 32 | { |
| 33 | return [ | 33 | return [ |
| 34 | [['id', 'value'], 'required'], | 34 | [['id', 'value'], 'required'], |
| 35 | - [['id', 'lang_id'], 'integer'], | 35 | + [['id', 'language_id'], 'integer'], |
| 36 | [['value'], 'string'] | 36 | [['value'], 'string'] |
| 37 | ]; | 37 | ]; |
| 38 | } | 38 | } |
| @@ -45,7 +45,7 @@ class NewOptionsLang extends \yii\db\ActiveRecord | @@ -45,7 +45,7 @@ class NewOptionsLang extends \yii\db\ActiveRecord | ||
| 45 | return [ | 45 | return [ |
| 46 | 'primary' => Yii::t('app', 'Primary'), | 46 | 'primary' => Yii::t('app', 'Primary'), |
| 47 | 'id' => Yii::t('app', 'ID'), | 47 | 'id' => Yii::t('app', 'ID'), |
| 48 | - 'lang_id' => Yii::t('app', 'Lang ID'), | 48 | + 'language_id' => Yii::t('app', 'Lang ID'), |
| 49 | 'value' => Yii::t('app', 'Value'), | 49 | 'value' => Yii::t('app', 'Value'), |
| 50 | ]; | 50 | ]; |
| 51 | } | 51 | } |
backend/models/NewOptionsLangSearch.php
| @@ -18,7 +18,7 @@ class NewOptionsLangSearch extends NewOptionsLang | @@ -18,7 +18,7 @@ class NewOptionsLangSearch extends NewOptionsLang | ||
| 18 | public function rules() | 18 | public function rules() |
| 19 | { | 19 | { |
| 20 | return [ | 20 | return [ |
| 21 | - [['primary', 'id', 'lang_id'], 'integer'], | 21 | + [['primary', 'id', 'language_id'], 'integer'], |
| 22 | [['value'], 'safe'], | 22 | [['value'], 'safe'], |
| 23 | ]; | 23 | ]; |
| 24 | } | 24 | } |
| @@ -58,7 +58,7 @@ class NewOptionsLangSearch extends NewOptionsLang | @@ -58,7 +58,7 @@ class NewOptionsLangSearch extends NewOptionsLang | ||
| 58 | $query->andFilterWhere([ | 58 | $query->andFilterWhere([ |
| 59 | 'primary' => $this->primary, | 59 | 'primary' => $this->primary, |
| 60 | 'id' => $this->id, | 60 | 'id' => $this->id, |
| 61 | - 'lang_id' => $this->lang_id, | 61 | + 'language_id' => $this->language_id, |
| 62 | ]); | 62 | ]); |
| 63 | 63 | ||
| 64 | $query->andFilterWhere(['like', 'value', $this->value]); | 64 | $query->andFilterWhere(['like', 'value', $this->value]); |
backend/models/Termin.php
| @@ -21,7 +21,6 @@ class Termin extends \yii\db\ActiveRecord | @@ -21,7 +21,6 @@ class Termin extends \yii\db\ActiveRecord | ||
| 21 | { | 21 | { |
| 22 | var $termin_title; | 22 | var $termin_title; |
| 23 | var $termin_pid; | 23 | var $termin_pid; |
| 24 | - var $termin_parent_title; | ||
| 25 | 24 | ||
| 26 | /** | 25 | /** |
| 27 | * @inheritdoc | 26 | * @inheritdoc |
| @@ -38,9 +37,9 @@ class Termin extends \yii\db\ActiveRecord | @@ -38,9 +37,9 @@ class Termin extends \yii\db\ActiveRecord | ||
| 38 | { | 37 | { |
| 39 | return [ | 38 | return [ |
| 40 | [['is_book'], 'integer'], | 39 | [['is_book'], 'integer'], |
| 41 | - [['termin_pid', 'termin_parent_title'], 'safe'], | 40 | + [['termin_pid'], 'safe'], |
| 42 | [['termin_title'], 'string', 'max' => 250], | 41 | [['termin_title'], 'string', 'max' => 250], |
| 43 | - [['termin_name','termin_parent_title'], 'string', 'max' => 250] | 42 | + [['termin_name'], 'string', 'max' => 250] |
| 44 | ]; | 43 | ]; |
| 45 | } | 44 | } |
| 46 | 45 | ||
| @@ -52,15 +51,13 @@ class Termin extends \yii\db\ActiveRecord | @@ -52,15 +51,13 @@ class Termin extends \yii\db\ActiveRecord | ||
| 52 | return [ | 51 | return [ |
| 53 | 'termin_id' => Yii::t('app', 'termin'), | 52 | 'termin_id' => Yii::t('app', 'termin'), |
| 54 | 'termin_name' => Yii::t('app', 'name').' (SYSTEM NAME)', | 53 | 'termin_name' => Yii::t('app', 'name').' (SYSTEM NAME)', |
| 55 | - 'termin_title' => Yii::t('app', 'termin'), | ||
| 56 | - 'termin_parent_title' => Yii::t('app', 'termin').' Parent', | ||
| 57 | 'is_book' => Yii::t('app', 'book'), | 54 | 'is_book' => Yii::t('app', 'book'), |
| 58 | ]; | 55 | ]; |
| 59 | } | 56 | } |
| 60 | 57 | ||
| 61 | /** | 58 | /** |
| 62 | * Выполняет поиск по параметрам | 59 | * Выполняет поиск по параметрам |
| 63 | - * @param array $param принимает [termin_id, lang_id, return_one, return_field, show_all] | 60 | + * @param array $param принимает [termin_id, language_id, return_one, return_field, show_all] |
| 64 | * @return array one | array all | string значение масива | 61 | * @return array one | array all | string значение масива |
| 65 | */ | 62 | */ |
| 66 | public function finInfo (array $params = []) | 63 | public function finInfo (array $params = []) |
| @@ -68,12 +65,11 @@ class Termin extends \yii\db\ActiveRecord | @@ -68,12 +65,11 @@ class Termin extends \yii\db\ActiveRecord | ||
| 68 | Tools::ifNotExist ($params, array ( | 65 | Tools::ifNotExist ($params, array ( |
| 69 | 'termin_id' => false, | 66 | 'termin_id' => false, |
| 70 | 'termin_pid' => false, | 67 | 'termin_pid' => false, |
| 71 | - 'lang_id' => Yii::$app->params['lang_id'], | 68 | + 'language_id' => Yii::$app->params['language_id'], |
| 72 | 'return_one' => false, | 69 | 'return_one' => false, |
| 73 | 'return_field' => false, | 70 | 'return_field' => false, |
| 74 | 'show_all' => false, | 71 | 'show_all' => false, |
| 75 | 'to_array' => true, | 72 | 'to_array' => true, |
| 76 | - 'sql_only' => false, | ||
| 77 | 'pid_title' => false, | 73 | 'pid_title' => false, |
| 78 | )); | 74 | )); |
| 79 | 75 | ||
| @@ -96,9 +92,9 @@ class Termin extends \yii\db\ActiveRecord | @@ -96,9 +92,9 @@ class Termin extends \yii\db\ActiveRecord | ||
| 96 | 'termin.termin_id = termin_lang.termin_id' | 92 | 'termin.termin_id = termin_lang.termin_id' |
| 97 | ); | 93 | ); |
| 98 | 94 | ||
| 99 | - if ($params['lang_id']) | 95 | + if ($params['language_id']) |
| 100 | { | 96 | { |
| 101 | - $WHERE['termin_lang.lang_id'] = $params['lang_id']; | 97 | + $WHERE['termin_lang.language_id'] = $params['language_id']; |
| 102 | } | 98 | } |
| 103 | 99 | ||
| 104 | // структура | 100 | // структура |
| @@ -138,7 +134,7 @@ class Termin extends \yii\db\ActiveRecord | @@ -138,7 +134,7 @@ class Termin extends \yii\db\ActiveRecord | ||
| 138 | { | 134 | { |
| 139 | $query = $query->asArray(); | 135 | $query = $query->asArray(); |
| 140 | } | 136 | } |
| 141 | - | 137 | + |
| 142 | if ($params['return_one'] || $params['return_field']) | 138 | if ($params['return_one'] || $params['return_field']) |
| 143 | { | 139 | { |
| 144 | 140 | ||
| @@ -165,13 +161,16 @@ class Termin extends \yii\db\ActiveRecord | @@ -165,13 +161,16 @@ class Termin extends \yii\db\ActiveRecord | ||
| 165 | */ | 161 | */ |
| 166 | public function getTerminLangs() | 162 | public function getTerminLangs() |
| 167 | { | 163 | { |
| 168 | - return $this->hasOne(TerminLang::className(), ['termin_id' => 'termin_id']); | 164 | + return $this->hasMany(TerminLang::className(), ['termin_id' => 'termin_id']); |
| 169 | } | 165 | } |
| 170 | - | ||
| 171 | - public function getParent() | 166 | + |
| 167 | + /** | ||
| 168 | + * @return \yii\db\ActiveQuery | ||
| 169 | + */ | ||
| 170 | + public function getLangs() | ||
| 172 | { | 171 | { |
| 173 | - return $this->hasOne(Termin::className(),['termin_id'=>'termin_pid']) | ||
| 174 | - ->viaTable(TerminStructure::tableName(), ['termin_id'=>'termin_id']); | 172 | + return $this->hasMany(Language::className(), ['language_id' => 'language_id']) |
| 173 | + ->viaTable('termin_lang', ['termin_id' => 'termin_id']); | ||
| 175 | } | 174 | } |
| 176 | 175 | ||
| 177 | /** | 176 | /** |
backend/models/TerminLang.php
| @@ -8,7 +8,7 @@ use Yii; | @@ -8,7 +8,7 @@ use Yii; | ||
| 8 | * This is the model class for table "termin_lang". | 8 | * This is the model class for table "termin_lang". |
| 9 | * | 9 | * |
| 10 | * @property integer $termin_id | 10 | * @property integer $termin_id |
| 11 | - * @property integer $lang_id | 11 | + * @property integer $language_id |
| 12 | * @property string $termin_title | 12 | * @property string $termin_title |
| 13 | * @property string $termin_alias | 13 | * @property string $termin_alias |
| 14 | * | 14 | * |
| @@ -31,8 +31,8 @@ class TerminLang extends \yii\db\ActiveRecord | @@ -31,8 +31,8 @@ class TerminLang extends \yii\db\ActiveRecord | ||
| 31 | public function rules() | 31 | public function rules() |
| 32 | { | 32 | { |
| 33 | return [ | 33 | return [ |
| 34 | - [['lang_id'], 'required'], | ||
| 35 | - [['lang_id'], 'integer'], | 34 | + [['language_id'], 'required'], |
| 35 | + [['language_id'], 'integer'], | ||
| 36 | [['termin_title', 'termin_alias'], 'string', 'max' => 250] | 36 | [['termin_title', 'termin_alias'], 'string', 'max' => 250] |
| 37 | ]; | 37 | ]; |
| 38 | } | 38 | } |
| @@ -44,7 +44,7 @@ class TerminLang extends \yii\db\ActiveRecord | @@ -44,7 +44,7 @@ class TerminLang extends \yii\db\ActiveRecord | ||
| 44 | { | 44 | { |
| 45 | return [ | 45 | return [ |
| 46 | 'termin_id' => Yii::t('app', 'Termin ID'), | 46 | 'termin_id' => Yii::t('app', 'Termin ID'), |
| 47 | - 'lang_id' => Yii::t('app', 'Lang ID'), | 47 | + 'language_id' => Yii::t('app', 'Lang ID'), |
| 48 | 'termin_title' => Yii::t('app', 'Termin Title'), | 48 | 'termin_title' => Yii::t('app', 'Termin Title'), |
| 49 | 'termin_alias' => Yii::t('app', 'Termin Alias'), | 49 | 'termin_alias' => Yii::t('app', 'Termin Alias'), |
| 50 | ]; | 50 | ]; |
| @@ -55,7 +55,7 @@ class TerminLang extends \yii\db\ActiveRecord | @@ -55,7 +55,7 @@ class TerminLang extends \yii\db\ActiveRecord | ||
| 55 | */ | 55 | */ |
| 56 | public function getLang() | 56 | public function getLang() |
| 57 | { | 57 | { |
| 58 | - return $this->hasOne(Language::className(), ['language_id' => 'lang_id']); | 58 | + return $this->hasOne(Language::className(), ['language_id' => 'language_id']); |
| 59 | } | 59 | } |
| 60 | 60 | ||
| 61 | /** | 61 | /** |
| 1 | +<?php | ||
| 2 | + | ||
| 3 | +use backend\models\AdminMenu; | ||
| 4 | +use common\models\Tools; | ||
| 5 | +use yii\helpers\Html; | ||
| 6 | +use yii\widgets\ActiveForm; | ||
| 7 | + | ||
| 8 | +/* @var $this yii\web\View */ | ||
| 9 | +/* @var $model backend\models\AdminMenu */ | ||
| 10 | +/* @var $form yii\widgets\ActiveForm */ | ||
| 11 | +?> | ||
| 12 | + | ||
| 13 | +<div class="admin-menu-form"> | ||
| 14 | + | ||
| 15 | + <?php $form = ActiveForm::begin(); ?> | ||
| 16 | + | ||
| 17 | + <?= $form->field($model, 'name')->textInput() ?> | ||
| 18 | + | ||
| 19 | + <?= $form->field($model, 'status')->checkbox() ?> | ||
| 20 | + | ||
| 21 | + <?= $form->field($model, 'hide_min')->checkbox() ?> | ||
| 22 | + | ||
| 23 | + <?= $form->field($model, 'path')->textInput() ?> | ||
| 24 | + | ||
| 25 | + <?= $form->field($model, 'param')->textInput() ?> | ||
| 26 | + | ||
| 27 | + <div class="panel-group" id="accordion" role="tablist" aria-multiselectable="true"> | ||
| 28 | + <div class="panel panel-default"> | ||
| 29 | + <div class="panel-heading" role="tab" id="headingOne"> | ||
| 30 | + <h4 class="panel-title"> | ||
| 31 | + <a role="button" data-toggle="collapse" data-parent="#accordion" href="#collapseOne" aria-expanded="true" aria-controls="collapseOne"> | ||
| 32 | + <?= Yii::t('app', 'Parent menu item') ?> | ||
| 33 | + </a> | ||
| 34 | + </h4> | ||
| 35 | + </div> | ||
| 36 | + <div id="collapseOne" class="panel-collapse collapse" role="tabpanel" aria-labelledby="headingOne"> | ||
| 37 | + <ul class="list-group checkboxer"> | ||
| 38 | + <?php | ||
| 39 | + $roots = AdminMenu::buildMenuSelect(); | ||
| 40 | + echo $form->field($model, 'admin_menu_pid', ['options' => ['class' => 'form-group list-group-item level0 checkboxer_container', 'tag' => 'li']])->error(false)->radio(['value' => 0, 'uncheck' => null, 'label' => Yii::t('app', 'root'), 'labelOptions' => ['class' => 'checkboxer_label']]); | ||
| 41 | + foreach($roots as $root) { | ||
| 42 | + echo $form->field($model, 'admin_menu_pid', ['options' => ['class' => 'form-group list-group-item level1 checkboxer_container', 'tag' => 'li']])->error(false)->radio(['value' => $root['id'], 'uncheck' => null, 'label' => Yii::t('app', $root['label']), 'labelOptions' => ['class' => 'checkboxer_label']]); | ||
| 43 | + if($root['items']) { | ||
| 44 | + foreach($root['items'] as $submenu) { | ||
| 45 | + echo $form->field($model, 'admin_menu_pid', ['options' => ['class' => 'form-group list-group-item level2 checkboxer_container', 'tag' => 'li']])->error(false)->radio(['value' => $submenu['id'], 'uncheck' => null, 'label' => Yii::t('app', $submenu['label']), 'labelOptions' => ['class' => 'checkboxer_label']]); | ||
| 46 | + } | ||
| 47 | + } | ||
| 48 | + } | ||
| 49 | + ?> | ||
| 50 | + </ul> | ||
| 51 | + </div> | ||
| 52 | + </div> | ||
| 53 | + </div> | ||
| 54 | + | ||
| 55 | + <div class="form-group"> | ||
| 56 | + <?= Html::submitButton($model->isNewRecord ? Yii::t('app', 'Create') : Yii::t('app', 'Update'), ['class' => ($model->isNewRecord ? 'btn btn-success' : 'btn btn-primary') . ' btn-flat']) ?> | ||
| 57 | + </div> | ||
| 58 | + | ||
| 59 | + <?php ActiveForm::end(); ?> | ||
| 60 | + | ||
| 61 | +</div> |
| 1 | +<?php | ||
| 2 | + | ||
| 3 | +use yii\helpers\Html; | ||
| 4 | +use yii\widgets\ActiveForm; | ||
| 5 | + | ||
| 6 | +/* @var $this yii\web\View */ | ||
| 7 | +/* @var $model backend\models\AdminMenuSearch */ | ||
| 8 | +/* @var $form yii\widgets\ActiveForm */ | ||
| 9 | +?> | ||
| 10 | + | ||
| 11 | +<div class="admin-menu-search"> | ||
| 12 | + | ||
| 13 | + <?php $form = ActiveForm::begin([ | ||
| 14 | + 'action' => ['index'], | ||
| 15 | + 'method' => 'get', | ||
| 16 | + ]); ?> | ||
| 17 | + | ||
| 18 | + <?= $form->field($model, 'id') ?> | ||
| 19 | + | ||
| 20 | + <?= $form->field($model, 'parent_id') ?> | ||
| 21 | + | ||
| 22 | + <?= $form->field($model, 'active') ?> | ||
| 23 | + | ||
| 24 | + <?= $form->field($model, 'hide_min') ?> | ||
| 25 | + | ||
| 26 | + <?= $form->field($model, 'sort') ?> | ||
| 27 | + | ||
| 28 | + <?php // echo $form->field($model, 'name') ?> | ||
| 29 | + | ||
| 30 | + <?php // echo $form->field($model, 'path') ?> | ||
| 31 | + | ||
| 32 | + <?php // echo $form->field($model, 'params') ?> | ||
| 33 | + | ||
| 34 | + <div class="form-group"> | ||
| 35 | + <?= Html::submitButton(Yii::t('app', 'Search'), ['class' => 'btn btn-primary']) ?> | ||
| 36 | + <?= Html::resetButton(Yii::t('app', 'Reset'), ['class' => 'btn btn-default']) ?> | ||
| 37 | + </div> | ||
| 38 | + | ||
| 39 | + <?php ActiveForm::end(); ?> | ||
| 40 | + | ||
| 41 | +</div> |
| 1 | +<?php | ||
| 2 | + | ||
| 3 | +use yii\helpers\Html; | ||
| 4 | + | ||
| 5 | + | ||
| 6 | +/* @var $this yii\web\View */ | ||
| 7 | +/* @var $model backend\models\AdminMenu */ | ||
| 8 | + | ||
| 9 | +$this->title = Yii::t('app', 'Create Admin Menu'); | ||
| 10 | +$this->params['breadcrumbs'][] = ['label' => Yii::t('app', 'Admin Menus'), 'url' => ['index']]; | ||
| 11 | +$this->params['breadcrumbs'][] = $this->title; | ||
| 12 | +?> | ||
| 13 | +<div class="admin-menu-create"> | ||
| 14 | + <div class="box box-primary"> | ||
| 15 | + <div class="box-body"> | ||
| 16 | + <?= $this->render('_form', [ | ||
| 17 | + 'model' => $model, | ||
| 18 | + ]) ?> | ||
| 19 | + </div> | ||
| 20 | + </div> | ||
| 21 | + | ||
| 22 | +</div> |
| 1 | +<?php | ||
| 2 | + | ||
| 3 | +use yii\helpers\Html; | ||
| 4 | +use yii\grid\GridView; | ||
| 5 | + | ||
| 6 | +/* @var $this yii\web\View */ | ||
| 7 | +/* @var $searchModel backend\models\AdminMenuSearch */ | ||
| 8 | +/* @var $dataProvider yii\data\ActiveDataProvider */ | ||
| 9 | + | ||
| 10 | +$this->title = Yii::t('app', 'Admin Menus'); | ||
| 11 | +$this->params['breadcrumbs'][] = $this->title; | ||
| 12 | +?> | ||
| 13 | +<div class="admin-menu-index box box-primary"> | ||
| 14 | + | ||
| 15 | + <?php // echo $this->render('_search', ['model' => $searchModel]); ?> | ||
| 16 | + | ||
| 17 | + <?= GridView::widget([ | ||
| 18 | + 'dataProvider' => $dataProvider, | ||
| 19 | + 'filterModel' => $searchModel, | ||
| 20 | + 'showFooter' => true, | ||
| 21 | + 'layout' => "<div class='box-header with-border admin_grid_action'> | ||
| 22 | + <div class='action_link'>" | ||
| 23 | + .Html::a(Yii::t('app', 'Create Admin Menu'), ['create'], ['class' => 'btn btn-success btn-flat']). | ||
| 24 | + "</div> | ||
| 25 | + <div class='pull-right'> | ||
| 26 | + {pager} | ||
| 27 | + </div> | ||
| 28 | + </div> | ||
| 29 | + <div class='box-body no-padding table-responsive'> | ||
| 30 | + {items} | ||
| 31 | + </div> | ||
| 32 | + <div class='box-footer admin_grid_action'> | ||
| 33 | + <div class='action_link'>" | ||
| 34 | + .Html::a(Yii::t('app', 'Create Admin Menu'), ['create'], ['class' => 'btn btn-success btn-flat']). | ||
| 35 | + "</div> | ||
| 36 | + <div class='pull-right'> | ||
| 37 | + {pager} | ||
| 38 | + </div> | ||
| 39 | + </div>", | ||
| 40 | + 'columns' => [ | ||
| 41 | + ['class' => 'yii\grid\ActionColumn'], | ||
| 42 | + 'admin_menu_id', | ||
| 43 | + 'name', | ||
| 44 | + 'path', | ||
| 45 | + 'param', | ||
| 46 | + [ | ||
| 47 | + 'format' => 'raw', | ||
| 48 | + 'filter' => [ | ||
| 49 | + '1'=>'Отображаются', | ||
| 50 | + '0'=>'Скрытые', | ||
| 51 | + ], | ||
| 52 | + 'value' => function($data){ | ||
| 53 | + if($data->status){ | ||
| 54 | + $status_img = '<i style="color: #008000" class="glyphicon glyphicon-ok"></i>'; | ||
| 55 | + } else { | ||
| 56 | + $status_img = '<i style="color: red" class="glyphicon glyphicon-remove"></i>'; | ||
| 57 | + } | ||
| 58 | + return $status_img; | ||
| 59 | + }, | ||
| 60 | + 'attribute'=>'status', | ||
| 61 | + ], | ||
| 62 | + [ | ||
| 63 | + 'attribute' => 'parentt', | ||
| 64 | + 'content' => | ||
| 65 | + function($model, $key, $index, $column) { | ||
| 66 | + if($model->parent->admin_menu_id) { | ||
| 67 | + return $model->parent->name; | ||
| 68 | + } else { | ||
| 69 | + return '<i class="small">'.Yii::t('app', 'Корневой элемент').'</i>'; | ||
| 70 | + } | ||
| 71 | + } | ||
| 72 | + ], | ||
| 73 | + [ | ||
| 74 | + 'format' => 'raw', | ||
| 75 | + 'filter' => [ | ||
| 76 | + '1'=>'Отображаются', | ||
| 77 | + '0'=>'Скрытые', | ||
| 78 | + ], | ||
| 79 | + 'value' => function($data){ | ||
| 80 | + if($data->hide_min){ | ||
| 81 | + $status_img = '<i style="color: #008000" class="glyphicon glyphicon-ok"></i>'; | ||
| 82 | + } else { | ||
| 83 | + $status_img = '<i style="color: red" class="glyphicon glyphicon-remove"></i>'; | ||
| 84 | + } | ||
| 85 | + return $status_img; | ||
| 86 | + }, | ||
| 87 | + 'attribute'=>'hide_min', | ||
| 88 | + ], | ||
| 89 | + ], | ||
| 90 | + ]); ?> | ||
| 91 | + | ||
| 92 | +</div> |
| 1 | +<?php | ||
| 2 | + | ||
| 3 | +use yii\helpers\Html; | ||
| 4 | + | ||
| 5 | +/* @var $this yii\web\View */ | ||
| 6 | +/* @var $model backend\models\AdminMenu */ | ||
| 7 | + | ||
| 8 | +$this->title = Yii::t('app', 'Update') . ': ' . $model->name; | ||
| 9 | +$this->params['breadcrumbs'][] = ['label' => Yii::t('app', 'Admin Menus'), 'url' => ['index']]; | ||
| 10 | +$this->params['breadcrumbs'][] = ['label' => $model->name, 'url' => ['view', 'id' => $model->admin_menu_id]]; | ||
| 11 | +$this->params['breadcrumbs'][] = Yii::t('app', 'Update'); | ||
| 12 | +?> | ||
| 13 | +<div class="admin-menu-update"> | ||
| 14 | + | ||
| 15 | + <?= $this->render('_form', [ | ||
| 16 | + 'model' => $model, | ||
| 17 | + ]) ?> | ||
| 18 | + | ||
| 19 | +</div> |
| 1 | +<?php | ||
| 2 | + | ||
| 3 | +use yii\helpers\Html; | ||
| 4 | +use yii\widgets\DetailView; | ||
| 5 | + | ||
| 6 | +/* @var $this yii\web\View */ | ||
| 7 | +/* @var $model backend\models\AdminMenu */ | ||
| 8 | + | ||
| 9 | +$this->title = Yii::t('app', 'Admin Menus').': '.$model->name; | ||
| 10 | +$this->params['breadcrumbs'][] = ['label' => Yii::t('app', 'Admin Menus'), 'url' => ['index']]; | ||
| 11 | +$this->params['breadcrumbs'][] = $this->title; | ||
| 12 | +?> | ||
| 13 | + | ||
| 14 | +<div class="admin-menu-view box box-primary"> | ||
| 15 | +<?= DetailView::widget([ | ||
| 16 | + 'model' => $model, | ||
| 17 | + 'attributes' => [ | ||
| 18 | + 'admin_menu_id', | ||
| 19 | + 'admin_menu_pid', | ||
| 20 | + 'status', | ||
| 21 | + 'hide_min', | ||
| 22 | + 'sort', | ||
| 23 | + 'name', | ||
| 24 | + 'path', | ||
| 25 | + 'param', | ||
| 26 | + ], | ||
| 27 | + ]) ?> | ||
| 28 | + | ||
| 29 | + <div class="box-footer with-border"> | ||
| 30 | + <p> | ||
| 31 | + <?= Html::a(Yii::t('app', 'Update'), ['update', 'id' => $model->admin_menu_id], ['class' => 'btn btn-primary btn-flat']) ?> | ||
| 32 | + <?= Html::a(Yii::t('app', 'Delete'), ['delete', 'id' => $model->admin_menu_id], [ | ||
| 33 | + 'class' => 'btn btn-danger btn-flat', | ||
| 34 | + 'data' => [ | ||
| 35 | + 'confirm' => Yii::t('app', 'Are you sure you want to delete this item?'), | ||
| 36 | + 'method' => 'post', | ||
| 37 | + ], | ||
| 38 | + ]) ?> | ||
| 39 | + <?= Html::a(Yii::t('app', 'Back'), ['index'], ['class' => 'btn btn-default btn-flat']) ?> | ||
| 40 | + </p> | ||
| 41 | + </div> | ||
| 42 | + | ||
| 43 | +</div> | ||
| 0 | \ No newline at end of file | 44 | \ No newline at end of file |
backend/views/blog/articles.php
| @@ -21,7 +21,7 @@ echo GridView::widget([ | @@ -21,7 +21,7 @@ echo GridView::widget([ | ||
| 21 | 'class' => Column::className(), | 21 | 'class' => Column::className(), |
| 22 | 'header' => Yii::t('app', 'Name'), | 22 | 'header' => Yii::t('app', 'Name'), |
| 23 | 'content' => function($model, $key, $index, $column) { | 23 | 'content' => function($model, $key, $index, $column) { |
| 24 | - return $model->getArticleLangs()->where(['lang_id' => Language::getDefaultLang()->language_id])->one()->name; | 24 | + return $model->getArticleLangs()->where(['language_id' => Language::getDefaultLang()->language_id])->one()->name; |
| 25 | } | 25 | } |
| 26 | ], | 26 | ], |
| 27 | [ | 27 | [ |
backend/views/language/_form_adress_edit.php
| @@ -21,7 +21,7 @@ use yii\widgets\ActiveForm; | @@ -21,7 +21,7 @@ use yii\widgets\ActiveForm; | ||
| 21 | <?php if($row->hasErrors()) { ?><div class="help-block"><?php echo $modellang[$id][0]->getFirstError('value');?></div> <?php } ?> | 21 | <?php if($row->hasErrors()) { ?><div class="help-block"><?php echo $modellang[$id][0]->getFirstError('value');?></div> <?php } ?> |
| 22 | <?php | 22 | <?php |
| 23 | if($row->translate) { | 23 | if($row->translate) { |
| 24 | - foreach($row->getLangs() as $lang_id => $lang) { | 24 | + foreach($row->getLangs() as $language_id => $lang) { |
| 25 | ?> | 25 | ?> |
| 26 | <div class="form-group"> | 26 | <div class="form-group"> |
| 27 | <div class="col-xs-1"><?=$lang['lang_code']?></div> | 27 | <div class="col-xs-1"><?=$lang['lang_code']?></div> |
backend/views/language/index.php
| @@ -28,7 +28,7 @@ echo $this->render('layout'); | @@ -28,7 +28,7 @@ echo $this->render('layout'); | ||
| 28 | } | 28 | } |
| 29 | ], | 29 | ], |
| 30 | 'language_name', | 30 | 'language_name', |
| 31 | - 'lang_code', | 31 | + 'language_code', |
| 32 | 'is_default:boolean', | 32 | 'is_default:boolean', |
| 33 | [ | 33 | [ |
| 34 | 'class' => 'yii\grid\ActionColumn', | 34 | 'class' => 'yii\grid\ActionColumn', |
backend/views/language/view_adress.php
| @@ -24,7 +24,7 @@ echo $this->render('layout'); | @@ -24,7 +24,7 @@ echo $this->render('layout'); | ||
| 24 | [ | 24 | [ |
| 25 | 'class' => 'yii\grid\Column', | 25 | 'class' => 'yii\grid\Column', |
| 26 | 'content' => function($model, $key, $index, $column) { | 26 | 'content' => function($model, $key, $index, $column) { |
| 27 | - return OptionLang::find()->select('value')->where(['lang_id' => 0, 'id' => $model->option_id])->scalar(); | 27 | + return OptionLang::find()->select('value')->where(['language_id' => 0, 'id' => $model->option_id])->scalar(); |
| 28 | }, | 28 | }, |
| 29 | 'header' => Yii::t('app', 'adress_name') | 29 | 'header' => Yii::t('app', 'adress_name') |
| 30 | ], | 30 | ], |
backend/views/layouts/header.php
| @@ -23,6 +23,19 @@ $username = Yii::$app->user->identity->firstname.' '.Yii::$app->user->identity-> | @@ -23,6 +23,19 @@ $username = Yii::$app->user->identity->firstname.' '.Yii::$app->user->identity-> | ||
| 23 | 23 | ||
| 24 | <ul class="nav navbar-nav"> | 24 | <ul class="nav navbar-nav"> |
| 25 | 25 | ||
| 26 | + <!-- search form --> | ||
| 27 | + <li class="header-search"> | ||
| 28 | + <form action="#" method="get" class="sidebar-form"> | ||
| 29 | + <div class="input-group"> | ||
| 30 | + <input type="text" name="q" class="form-control" placeholder="Search..."/> | ||
| 31 | + <span class="input-group-btn"> | ||
| 32 | + <button type='submit' name='search' id='search-btn' class="btn btn-flat"><i class="fa fa-search"></i> | ||
| 33 | + </button> | ||
| 34 | + </span> | ||
| 35 | + </div> | ||
| 36 | + </form> | ||
| 37 | + </li> | ||
| 38 | + <!-- /.search form --> | ||
| 26 | <!-- Messages: style can be found in dropdown.less--> | 39 | <!-- Messages: style can be found in dropdown.less--> |
| 27 | <li class="dropdown messages-menu"> | 40 | <li class="dropdown messages-menu"> |
| 28 | <a href="#" class="dropdown-toggle" data-toggle="dropdown"> | 41 | <a href="#" class="dropdown-toggle" data-toggle="dropdown"> |
backend/views/layouts/left.php
| @@ -14,79 +14,15 @@ | @@ -14,79 +14,15 @@ | ||
| 14 | </div> | 14 | </div> |
| 15 | </div> | 15 | </div> |
| 16 | 16 | ||
| 17 | - <!-- search form --> | ||
| 18 | - <form action="#" method="get" class="sidebar-form"> | ||
| 19 | - <div class="input-group"> | ||
| 20 | - <input type="text" name="q" class="form-control" placeholder="Search..."/> | ||
| 21 | - <span class="input-group-btn"> | ||
| 22 | - <button type='submit' name='search' id='search-btn' class="btn btn-flat"><i class="fa fa-search"></i> | ||
| 23 | - </button> | ||
| 24 | - </span> | ||
| 25 | - </div> | ||
| 26 | - </form> | ||
| 27 | - <!-- /.search form --> | ||
| 28 | - | ||
| 29 | - <?= dmstr\widgets\Menu::widget( | ||
| 30 | - [ | ||
| 31 | - 'options' => ['class' => 'sidebar-menu'], | ||
| 32 | - 'items' => [ | ||
| 33 | - ['label' => 'Термины', 'icon' => 'fa fa-file-code-o', 'url' => ['/termin/']], | ||
| 34 | - //['label' => Yii::t('app', 'Pages'), 'icon' => 'fa fa-file-code-o', 'url' => ['/page/']], | ||
| 35 | - //['label' => 'Каталог', 'icon' => 'fa fa-file-code-o', 'url' => ['/catalog/']], | ||
| 36 | - ['label' => 'Меню', 'icon' => 'fa fa-file-code-o', 'url' => ['/menu/']], | ||
| 37 | - ['label' => 'Заявки', 'icon' => 'fa fa-file-code-o', 'url' => ['/site/requests/']], | ||
| 38 | - ['label' => 'Gii', 'icon' => 'fa fa-file-code-o', 'url' => ['/gii']], | ||
| 39 | - ['label' => 'Debug', 'icon' => 'fa fa-dashboard', 'url' => ['/debug']], | ||
| 40 | - ['label' => 'Login', 'url' => ['site/login'], 'visible' => Yii::$app->user->isGuest], | ||
| 41 | - ['label' => 'Пользователи', 'icon' => 'fa fa-file-code-o', 'url' => ['/user/']], | ||
| 42 | - [ | ||
| 43 | - 'label' => Yii::t('app', 'Blog'), | ||
| 44 | - 'icon' => 'fa fa-share', | ||
| 45 | - 'url' => '#', | ||
| 46 | - 'items' => [ | ||
| 47 | - ['label' => Yii::t('app', 'Static pages'), 'icon' => 'fa fa-file-code-o', 'url' => ['blog/articles', 'category_id' => '63'],], | ||
| 48 | - ['label' => Yii::t('app', 'Categories'), 'icon' => 'fa fa-dashboard', 'url' => ['blog/categories'],], | ||
| 49 | - ['label' => Yii::t('app', 'Articles'), 'icon' => 'fa fa-dashboard', 'url' => ['blog/articles'],], | ||
| 50 | - ], | ||
| 51 | - ], | ||
| 52 | - [ | ||
| 53 | - 'label' => 'Роли', | ||
| 54 | - 'icon' => 'fa fa-share', | ||
| 55 | - 'url' => '#', | ||
| 56 | - 'items' => [ | ||
| 57 | - ['label' => 'Управление ролями', 'icon' => 'fa fa-file-code-o', 'url' => ['/permit/access/role'],], | ||
| 58 | - ['label' => 'Управление правами доступа', 'icon' => 'fa fa-dashboard', 'url' => ['/permit/access/permission'],], | ||
| 59 | - ], | ||
| 60 | - ], | ||
| 61 | - [ | ||
| 62 | - 'label' => 'Same tools', | ||
| 63 | - 'icon' => 'fa fa-share', | ||
| 64 | - 'url' => '#', | ||
| 65 | - 'items' => [ | ||
| 66 | - ['label' => 'Gii', 'icon' => 'fa fa-file-code-o', 'url' => ['/gii'],], | ||
| 67 | - ['label' => 'Debug', 'icon' => 'fa fa-dashboard', 'url' => ['/debug'],], | ||
| 68 | - [ | ||
| 69 | - 'label' => 'Level One', | ||
| 70 | - 'icon' => 'fa fa-circle-o', | ||
| 71 | - 'url' => '#', | ||
| 72 | - 'items' => [ | ||
| 73 | - ['label' => 'Level Two', 'icon' => 'fa fa-circle-o', 'url' => '#',], | ||
| 74 | - [ | ||
| 75 | - 'label' => 'Level Two', | ||
| 76 | - 'icon' => 'fa fa-circle-o', | ||
| 77 | - 'url' => '#', | ||
| 78 | - 'items' => [ | ||
| 79 | - ['label' => 'Level Three', 'icon' => 'fa fa-circle-o', 'url' => '#',], | ||
| 80 | - ['label' => 'Level Three', 'icon' => 'fa fa-circle-o', 'url' => '#',], | ||
| 81 | - ], | ||
| 82 | - ], | ||
| 83 | - ], | ||
| 84 | - ], | ||
| 85 | - ], | ||
| 86 | - ], | ||
| 87 | - ], | ||
| 88 | - ] | ||
| 89 | - ) ?> | 17 | + <?= dmstr\widgets\Menu::widget([ |
| 18 | + 'options' => ['class' => 'sidebar-menu'], | ||
| 19 | + 'items' => array_merge( | ||
| 20 | + \backend\models\AdminMenu::buildMenu(), | ||
| 21 | + [ | ||
| 22 | + ['label' => Yii::t('app', 'Settings'), 'url' => ['/settings/index'], 'icon' => 'fa fa-gear'] | ||
| 23 | + ] | ||
| 24 | + ), | ||
| 25 | + ]) ?> | ||
| 90 | 26 | ||
| 91 | </section> | 27 | </section> |
| 92 | 28 |
| 1 | +<?php | ||
| 2 | + | ||
| 3 | +use dmstr\widgets\Menu; | ||
| 4 | +use yii\widgets\Breadcrumbs; | ||
| 5 | +use yii\helpers\Html; | ||
| 6 | + | ||
| 7 | +/* @var $content string */ | ||
| 8 | +$this->beginContent('@app/views/layouts/main.php'); | ||
| 9 | +?> | ||
| 10 | + <div class="row"> | ||
| 11 | + <div class="col-md-3"> | ||
| 12 | + <div class="box box-solid"> | ||
| 13 | + <div class="box-header with-border"> | ||
| 14 | + <h3 class="box-title"><?=Yii::t('app', 'Settings categories')?></h3> | ||
| 15 | + <div class="box-tools"> | ||
| 16 | + <button type="button" class="btn btn-box-tool" data-widget="collapse"> | ||
| 17 | + <i class="fa fa-minus"></i> | ||
| 18 | + </button> | ||
| 19 | + </div> | ||
| 20 | + </div> | ||
| 21 | + <div class="box-body no-padding"> | ||
| 22 | + <?php | ||
| 23 | + echo Menu::widget([ | ||
| 24 | + 'options' => [ | ||
| 25 | + 'class' => 'nav nav-pills nav-stacked' | ||
| 26 | + ], | ||
| 27 | + 'items' => [ | ||
| 28 | + ['label' => Yii::t('app', 'Admin Menus'), 'url' => ['/admin-menu/index'], 'icon' => 'fa fa-navicon'], | ||
| 29 | + ['label' => Yii::t('app', 'Next menu item'), 'url' => ['#'], 'icon' => 'fa fa-arrow-circle-o-right'], | ||
| 30 | + ], | ||
| 31 | + ]); | ||
| 32 | + ?> | ||
| 33 | + </div> | ||
| 34 | + </div> | ||
| 35 | + </div> | ||
| 36 | + <div class="col-md-9"> | ||
| 37 | + <?= $content ?> | ||
| 38 | + </div> | ||
| 39 | + </div> | ||
| 40 | +<?php $this->endContent() ?> | ||
| 0 | \ No newline at end of file | 41 | \ No newline at end of file |
backend/views/menu/index.php
| @@ -28,8 +28,9 @@ $this->params['breadcrumbs'][] = $this->title; | @@ -28,8 +28,9 @@ $this->params['breadcrumbs'][] = $this->title; | ||
| 28 | /* | 28 | /* |
| 29 | [ | 29 | [ |
| 30 | 'attribute' => Yii::t('app', 'termin'), | 30 | 'attribute' => Yii::t('app', 'termin'), |
| 31 | - 'value' => function ($model) { | ||
| 32 | - return empty($model->termin_id) ? '-' : $model->termin_lang->termin_title; | 31 | + 'value' => function ($model) |
| 32 | + { | ||
| 33 | + return empty ($model->termin_id) ? '-' : $model->terminLang->termin_title; | ||
| 33 | }, | 34 | }, |
| 34 | ], | 35 | ], |
| 35 | */ | 36 | */ |
backend/views/new-options-lang/_form.php
| @@ -14,7 +14,7 @@ use yii\widgets\ActiveForm; | @@ -14,7 +14,7 @@ use yii\widgets\ActiveForm; | ||
| 14 | 14 | ||
| 15 | <?= $form->field($model, 'id')->textInput() ?> | 15 | <?= $form->field($model, 'id')->textInput() ?> |
| 16 | 16 | ||
| 17 | - <?= $form->field($model, 'lang_id')->textInput() ?> | 17 | + <?= $form->field($model, 'language_id')->textInput() ?> |
| 18 | 18 | ||
| 19 | <?= $form->field($model, 'value')->textarea(['rows' => 6]) ?> | 19 | <?= $form->field($model, 'value')->textarea(['rows' => 6]) ?> |
| 20 | 20 |
backend/views/new-options-lang/_search.php
| @@ -19,7 +19,7 @@ use yii\widgets\ActiveForm; | @@ -19,7 +19,7 @@ use yii\widgets\ActiveForm; | ||
| 19 | 19 | ||
| 20 | <?= $form->field($model, 'id') ?> | 20 | <?= $form->field($model, 'id') ?> |
| 21 | 21 | ||
| 22 | - <?= $form->field($model, 'lang_id') ?> | 22 | + <?= $form->field($model, 'language_id') ?> |
| 23 | 23 | ||
| 24 | <?= $form->field($model, 'value') ?> | 24 | <?= $form->field($model, 'value') ?> |
| 25 | 25 |
backend/views/new-options-lang/index.php
| @@ -27,7 +27,7 @@ $this->params['breadcrumbs'][] = $this->title; | @@ -27,7 +27,7 @@ $this->params['breadcrumbs'][] = $this->title; | ||
| 27 | 27 | ||
| 28 | 'primary', | 28 | 'primary', |
| 29 | 'id', | 29 | 'id', |
| 30 | - 'lang_id', | 30 | + 'language_id', |
| 31 | 'value:ntext', | 31 | 'value:ntext', |
| 32 | 32 | ||
| 33 | ['class' => 'yii\grid\ActionColumn'], | 33 | ['class' => 'yii\grid\ActionColumn'], |
backend/views/new-options-lang/view.php
| @@ -30,7 +30,7 @@ $this->params['breadcrumbs'][] = $this->title; | @@ -30,7 +30,7 @@ $this->params['breadcrumbs'][] = $this->title; | ||
| 30 | 'attributes' => [ | 30 | 'attributes' => [ |
| 31 | 'primary', | 31 | 'primary', |
| 32 | 'id', | 32 | 'id', |
| 33 | - 'lang_id', | 33 | + 'language_id', |
| 34 | 'value:ntext', | 34 | 'value:ntext', |
| 35 | ], | 35 | ], |
| 36 | ]) ?> | 36 | ]) ?> |
backend/views/option/_form_edit.php
| @@ -21,7 +21,7 @@ use yii\widgets\ActiveForm; | @@ -21,7 +21,7 @@ use yii\widgets\ActiveForm; | ||
| 21 | <?php if($row->hasErrors()) { ?><div class="help-block"><?php echo $modellang[$id][0]->getFirstError('value');?></div> <?php } ?> | 21 | <?php if($row->hasErrors()) { ?><div class="help-block"><?php echo $modellang[$id][0]->getFirstError('value');?></div> <?php } ?> |
| 22 | <?php | 22 | <?php |
| 23 | if($row->translate) { | 23 | if($row->translate) { |
| 24 | - foreach($row->getLangs() as $lang_id => $lang) { | 24 | + foreach($row->getLangs() as $language_id => $lang) { |
| 25 | ?> | 25 | ?> |
| 26 | <div class="form-group"> | 26 | <div class="form-group"> |
| 27 | <div class="col-xs-1"><?=$lang['lang_code']?></div> | 27 | <div class="col-xs-1"><?=$lang['lang_code']?></div> |
backend/views/site/index.php
| @@ -2,6 +2,9 @@ | @@ -2,6 +2,9 @@ | ||
| 2 | 2 | ||
| 3 | /* @var $this yii\web\View */ | 3 | /* @var $this yii\web\View */ |
| 4 | 4 | ||
| 5 | +use backend\models\AdminMenu; | ||
| 6 | +use yii\helpers\Url; | ||
| 7 | + | ||
| 5 | $this->title = 'My Yii Application'; | 8 | $this->title = 'My Yii Application'; |
| 6 | ?> | 9 | ?> |
| 7 | <div class="site-index"> | 10 | <div class="site-index"> |
backend/views/termin/_form.php
| @@ -5,34 +5,21 @@ use yii\widgets\ActiveForm; | @@ -5,34 +5,21 @@ use yii\widgets\ActiveForm; | ||
| 5 | use backend\models\Termin; | 5 | use backend\models\Termin; |
| 6 | use kartik\select2\Select2; | 6 | use kartik\select2\Select2; |
| 7 | use yii\helpers\ArrayHelper; | 7 | use yii\helpers\ArrayHelper; |
| 8 | -use common\widgets\Multilang; | ||
| 9 | -use yii\helpers\Url; | ||
| 10 | 8 | ||
| 11 | /* @var $this yii\web\View */ | 9 | /* @var $this yii\web\View */ |
| 12 | /* @var $model backend\models\Termin */ | 10 | /* @var $model backend\models\Termin */ |
| 13 | /* @var $form yii\widgets\ActiveForm */ | 11 | /* @var $form yii\widgets\ActiveForm */ |
| 14 | 12 | ||
| 15 | -echo '<div class="termin-form">'; | 13 | +?> |
| 16 | 14 | ||
| 17 | -$form = ActiveForm::begin(); | 15 | +<div class="termin-form"> |
| 18 | 16 | ||
| 19 | - // ================ | ||
| 20 | - // ==== COMMON ==== | ||
| 21 | - // ================ | ||
| 22 | - | ||
| 23 | - echo $form->field($model_pid, 'termin_pid')->widget( | ||
| 24 | - Select2::classname(), | 17 | + <?php $form = ActiveForm::begin(); ?> |
| 18 | + | ||
| 19 | + <?= $form->field($model_pid->termin, 'termin_pid')->widget(Select2::classname(), | ||
| 25 | [ | 20 | [ |
| 26 | - 'data' => ArrayHelper::map( | ||
| 27 | - [ | ||
| 28 | - [ | ||
| 29 | - 'termin_id' => 0, | ||
| 30 | - 'termin_title' => 'NONE', | ||
| 31 | - ] | ||
| 32 | - ] + | ||
| 33 | - (new Termin)->finInfo([ | 21 | + 'data' => ArrayHelper::map((new Termin)->finInfo([ |
| 34 | 'show_all' => true, | 22 | 'show_all' => true, |
| 35 | - 'to_array' => true, | ||
| 36 | ]), | 23 | ]), |
| 37 | 'termin_id', | 24 | 'termin_id', |
| 38 | 'termin_title' | 25 | 'termin_title' |
| @@ -41,53 +28,23 @@ $form = ActiveForm::begin(); | @@ -41,53 +28,23 @@ $form = ActiveForm::begin(); | ||
| 41 | 'pluginOptions' => [ | 28 | 'pluginOptions' => [ |
| 42 | 'allowClear' => true | 29 | 'allowClear' => true |
| 43 | ], | 30 | ], |
| 44 | - ] | ||
| 45 | - ); | 31 | + ]); |
| 32 | + ?> | ||
| 46 | 33 | ||
| 47 | - echo $form->field($model, 'termin_name')->textInput(['maxlength' => true]); | ||
| 48 | - | ||
| 49 | - // ============== | ||
| 50 | - // ==== LANG ==== | ||
| 51 | - // ============== | ||
| 52 | - | ||
| 53 | - $multilang = Multilang::begin(['ajaxpath' => Url::to(['termin/form']), 'form' => $form, 'data_langs' => $model_lang]); | ||
| 54 | - | ||
| 55 | - $first = 1; | ||
| 56 | - | ||
| 57 | - foreach ($model_lang as $index => $data) | ||
| 58 | - { | ||
| 59 | - echo ' | ||
| 60 | - <div role="" class="tab-pane '.($first ? 'active main-tab' : '') .'" id="'.$multilang->id.'-'.$index.'"> | ||
| 61 | - | ||
| 62 | - '.$form->field($model_lang[$index], '['.$index.']lang_id')->label(false)->hiddenInput(['value' => $index]).' | ||
| 63 | - | ||
| 64 | - '.$form->field($model_lang[$index], '['.$index.']termin_title')->textInput().' | ||
| 65 | - | ||
| 66 | - '.$form->field($model_lang[$index], '['.$index.']termin_alias')->textInput().' | 34 | + <?= $form->field($model, 'termin_name')->textInput(['maxlength' => true]) ?> |
| 35 | + | ||
| 36 | + <?= $form->field($model_lang, 'termin_title')->textInput() ?> | ||
| 37 | + | ||
| 38 | + <?= $form->field($model_lang, 'termin_alias')->textInput() ?> | ||
| 39 | + | ||
| 40 | + <?= Html::activeHiddenInput ($model_lang, 'language_id', [ | ||
| 41 | + 'value' => ($model_lang->language_id != 0 ? $model_lang->language_id : Yii::$app->params['language_id']), | ||
| 42 | + ]) ?> | ||
| 67 | 43 | ||
| 68 | - </div>'; | ||
| 69 | - | ||
| 70 | - $first = 0; | ||
| 71 | - } | ||
| 72 | - | ||
| 73 | - $multilang->end(); | ||
| 74 | -/* | ||
| 75 | - echo Html::activeHiddenInput ($model_lang, 'lang_id', [ | ||
| 76 | - 'value' => ($model_lang->lang_id != 0 ? $model_lang->lang_id : Yii::$app->params['lang_id']), | ||
| 77 | - ]); | ||
| 78 | -*/ | ||
| 79 | - // ==== BUTTON ==== | ||
| 80 | - | ||
| 81 | - echo ' | ||
| 82 | <div class="form-group"> | 44 | <div class="form-group"> |
| 83 | - '.Html::submitButton($model->isNewRecord ? Yii::t('app', 'Create') : Yii::t('app', 'Update'), ['class' => $model->isNewRecord ? 'btn btn-success' : 'btn btn-primary']).' | ||
| 84 | - </div>'; | ||
| 85 | - | ||
| 86 | -ActiveForm::end(); | 45 | + <?= Html::submitButton($model->isNewRecord ? Yii::t('app', 'Create') : Yii::t('app', 'Update'), ['class' => $model->isNewRecord ? 'btn btn-success' : 'btn btn-primary']) ?> |
| 46 | + </div> | ||
| 87 | 47 | ||
| 88 | -echo '</div>'; | 48 | + <?php ActiveForm::end(); ?> |
| 89 | 49 | ||
| 90 | -echo ' | ||
| 91 | -<script> | ||
| 92 | - var confirm_message = "'.\Yii::t('app', 'Remove image?').'" | ||
| 93 | -</script>'; | 50 | +</div> |
backend/web/css/site.css
| @@ -89,3 +89,47 @@ a.desc:after { | @@ -89,3 +89,47 @@ a.desc:after { | ||
| 89 | padding: 10px 20px; | 89 | padding: 10px 20px; |
| 90 | margin: 0 0 15px 0; | 90 | margin: 0 0 15px 0; |
| 91 | } | 91 | } |
| 92 | +.header-search { | ||
| 93 | + width: 200px; | ||
| 94 | +} | ||
| 95 | +.skin-blue .sidebar-form { | ||
| 96 | + margin: 5px !important; | ||
| 97 | +} | ||
| 98 | +.checkboxer .list-group-item { | ||
| 99 | + padding: 0; | ||
| 100 | +} | ||
| 101 | +.checkboxer .list-group-item:hover { | ||
| 102 | + background: #ddd; | ||
| 103 | +} | ||
| 104 | +.checkboxer .list-group-item.active, .checkboxer .list-group-item.active:hover { | ||
| 105 | + background: #00a65a; | ||
| 106 | +} | ||
| 107 | +.checkboxer .list-group-item.active label, .checkboxer .list-group-item.active:hover label { | ||
| 108 | + color: white; | ||
| 109 | +} | ||
| 110 | +.checkboxer .list-group-item.level0 { | ||
| 111 | + padding-left: 15px; | ||
| 112 | +} | ||
| 113 | +.checkboxer .list-group-item.level1 { | ||
| 114 | + padding-left: 45px; | ||
| 115 | +} | ||
| 116 | +.checkboxer .list-group-item.level2 { | ||
| 117 | + padding-left: 75px; | ||
| 118 | +} | ||
| 119 | +.checkboxer .checkboxer_label { | ||
| 120 | + padding: 10px 0; | ||
| 121 | + display: block; | ||
| 122 | +} | ||
| 123 | +.checkboxer .checkboxer_label input[type=radio] { | ||
| 124 | + position: absolute; | ||
| 125 | + clip: rect(0,0,0,0); | ||
| 126 | +} | ||
| 127 | +.action_link { | ||
| 128 | + float: left; | ||
| 129 | +} | ||
| 130 | +.admin_grid_action { | ||
| 131 | + padding: 0 20px; | ||
| 132 | +} | ||
| 133 | +.admin_grid_action .pagination { | ||
| 134 | + margin: 0; | ||
| 135 | +} |
backend/web/js/option.js
| @@ -12,6 +12,11 @@ function readURL(input) { | @@ -12,6 +12,11 @@ function readURL(input) { | ||
| 12 | } | 12 | } |
| 13 | return urls; | 13 | return urls; |
| 14 | } | 14 | } |
| 15 | +function checkboxerInit() { | ||
| 16 | + $.each($('.checkboxer input[type=radio]:checked'), function(index, value) { | ||
| 17 | + $(value).trigger('change'); | ||
| 18 | + }); | ||
| 19 | +} | ||
| 15 | $(function() { | 20 | $(function() { |
| 16 | var counter = 0; | 21 | var counter = 0; |
| 17 | $(document).on('click', '.add_row', function() { | 22 | $(document).on('click', '.add_row', function() { |
| @@ -58,12 +63,36 @@ $(function() { | @@ -58,12 +63,36 @@ $(function() { | ||
| 58 | $(value).find('li').append('<span class="glyphicon glyphicon-remove-circle remove-lang"></span>'); | 63 | $(value).find('li').append('<span class="glyphicon glyphicon-remove-circle remove-lang"></span>'); |
| 59 | } | 64 | } |
| 60 | }); | 65 | }); |
| 61 | - $(document).on('click', '.dropdown-menu.f32 li a[data-lang]', function() { | 66 | + $(document).on('click', '.dropdown-menu.f32:not(.old) li a[data-lang]', function() { |
| 62 | var lang = $(this).data('lang'); | 67 | var lang = $(this).data('lang'); |
| 63 | var flag = $(this).find('span').first().clone(); | 68 | var flag = $(this).find('span').first().clone(); |
| 64 | var el = $(this); | 69 | var el = $(this); |
| 65 | var id = $(this).attr('href').substr(1); | 70 | var id = $(this).attr('href').substr(1); |
| 66 | - $.get(form[id], { lang_id: lang, widget_id: id }, function(data) { | 71 | + var path = form[id].handler; |
| 72 | + var view = form[id].view; | ||
| 73 | + var model = form[id].model; | ||
| 74 | + $.get(path, { language_id: lang, widget_id: id, ajaxView: view, model: model }, function(data) { | ||
| 75 | + $('#'+id+'-tabs li').removeClass('active'); | ||
| 76 | + $('#'+id+'-tabs').append('<li role="lang_inputs" class="active" data-lang="'+lang+'"><a href="#'+id+'-'+lang+'" aria-controls="'+id+'-'+lang+'" role="tab" data-toggle="tab">'+$('<p>').append($(flag)).html()+'</a></li>'); | ||
| 77 | + $('#tab-content-'+id+' .tab-pane.active').removeClass('active'); | ||
| 78 | + $('#tab-content-'+id).append($(data).find('.ajax-loaded').first()); | ||
| 79 | + $('body').append($(data).filter('script')); | ||
| 80 | + $(el).parent().remove(); | ||
| 81 | + if(!$('#lang-'+id+' li').length) { | ||
| 82 | + $('#'+id+'Lang').addClass('disabled'); | ||
| 83 | + } | ||
| 84 | + if($('#'+id+'-tabs li').length > 1) { | ||
| 85 | + $('#'+id+'-tabs li').append('<span class="glyphicon glyphicon-remove-circle remove-lang"></span>') | ||
| 86 | + } | ||
| 87 | + }); | ||
| 88 | + }); | ||
| 89 | + $(document).on('click', '.dropdown-menu.f32.old li a[data-lang]', function(e) { | ||
| 90 | + e.preventDefault(); | ||
| 91 | + var lang = $(this).data('lang'); | ||
| 92 | + var flag = $(this).find('span').first().clone(); | ||
| 93 | + var el = $(this); | ||
| 94 | + var id = $(this).attr('href').substr(1); | ||
| 95 | + $.get(form[id], { language_id: lang, widget_id: id }, function(data) { | ||
| 67 | $('#'+id+'-tabs li').removeClass('active'); | 96 | $('#'+id+'-tabs li').removeClass('active'); |
| 68 | $('#'+id+'-tabs').append('<li role="lang_inputs" class="active" data-lang="'+lang+'"><a href="#'+id+'-'+lang+'" aria-controls="'+id+'-'+lang+'" role="tab" data-toggle="tab">'+$('<p>').append($(flag)).html()+'</a></li>'); | 97 | $('#'+id+'-tabs').append('<li role="lang_inputs" class="active" data-lang="'+lang+'"><a href="#'+id+'-'+lang+'" aria-controls="'+id+'-'+lang+'" role="tab" data-toggle="tab">'+$('<p>').append($(flag)).html()+'</a></li>'); |
| 69 | $('#tab-content-'+id+' .tab-pane.active').removeClass('active'); | 98 | $('#tab-content-'+id+' .tab-pane.active').removeClass('active'); |
| @@ -93,4 +122,12 @@ $(function() { | @@ -93,4 +122,12 @@ $(function() { | ||
| 93 | $('#'+id+'-tabs>li').first().find('a').tab('show'); | 122 | $('#'+id+'-tabs>li').first().find('a').tab('show'); |
| 94 | } | 123 | } |
| 95 | }); | 124 | }); |
| 125 | + $(document).on('change', '.checkboxer .checkboxer_label input[type=radio]', function() { | ||
| 126 | + $(this).parents('.checkboxer').find('.checkboxer_container').removeClass('active'); | ||
| 127 | + $(this).parents('.checkboxer_container').addClass('active'); | ||
| 128 | + }); | ||
| 129 | + $.each($('.f32'), function(i, val) { | ||
| 130 | + $(val).find('a[role=tab]').first().trigger('click'); | ||
| 131 | + }); | ||
| 132 | + checkboxerInit(); | ||
| 96 | }); | 133 | }); |
| 97 | \ No newline at end of file | 134 | \ No newline at end of file |
common/components/LangRequest.php
| @@ -3,6 +3,7 @@ | @@ -3,6 +3,7 @@ | ||
| 3 | namespace common\components; | 3 | namespace common\components; |
| 4 | 4 | ||
| 5 | use Yii; | 5 | use Yii; |
| 6 | +use yii\base\InvalidConfigException; | ||
| 6 | use yii\web\Request; | 7 | use yii\web\Request; |
| 7 | use common\models\Language; | 8 | use common\models\Language; |
| 8 | use common\models\Page; | 9 | use common\models\Page; |
| @@ -29,10 +30,10 @@ class LangRequest extends Request | @@ -29,10 +30,10 @@ class LangRequest extends Request | ||
| 29 | 30 | ||
| 30 | Language::setCurrent($lang_url); | 31 | Language::setCurrent($lang_url); |
| 31 | 32 | ||
| 32 | - if ($lang_url !== null && $lang_url === Language::getCurrent()->lang_code | ||
| 33 | - && strpos($this->_lang_url, Language::getCurrent()->lang_code) === 1) | 33 | + if ($lang_url !== null && $lang_url === Language::getCurrent()->language_code |
| 34 | + && strpos($this->_lang_url, Language::getCurrent()->language_code) === 1) | ||
| 34 | { | 35 | { |
| 35 | - $this->_lang_url = substr ($this->_lang_url, strlen (Language::getCurrent()->lang_code) + 1); | 36 | + $this->_lang_url = substr ($this->_lang_url, strlen (Language::getCurrent()->language_code) + 1); |
| 36 | } | 37 | } |
| 37 | } | 38 | } |
| 38 | 39 |
common/components/LangUrlManager.php
| @@ -9,16 +9,16 @@ class LangUrlManager extends UrlManager | @@ -9,16 +9,16 @@ class LangUrlManager extends UrlManager | ||
| 9 | { | 9 | { |
| 10 | public function createUrl ($params) | 10 | public function createUrl ($params) |
| 11 | { | 11 | { |
| 12 | - if (isset ($params['lang_id'])) | 12 | + if (isset ($params['language_id'])) |
| 13 | { | 13 | { |
| 14 | //Если указан идентификатор языка, то делаем попытку найти язык в БД, | 14 | //Если указан идентификатор языка, то делаем попытку найти язык в БД, |
| 15 | //иначе работаем с языком по умолчанию | 15 | //иначе работаем с языком по умолчанию |
| 16 | - if (($lang_code = Language::findOne($params['lang_id'])) === null) | 16 | + if (($lang_code = Language::findOne($params['language_id'])) === null) |
| 17 | { | 17 | { |
| 18 | $lang_code = Language::getDefaultLang(); | 18 | $lang_code = Language::getDefaultLang(); |
| 19 | } | 19 | } |
| 20 | 20 | ||
| 21 | - unset ($params['lang_id']); | 21 | + unset ($params['language_id']); |
| 22 | 22 | ||
| 23 | } | 23 | } |
| 24 | else | 24 | else |
common/config/main.php
| @@ -8,6 +8,9 @@ return [ | @@ -8,6 +8,9 @@ return [ | ||
| 8 | 'userClass' => 'common\models\User' | 8 | 'userClass' => 'common\models\User' |
| 9 | ] | 9 | ] |
| 10 | ], | 10 | ], |
| 11 | + 'blog' => [ | ||
| 12 | + 'class' => 'common\modules\blog\Module', | ||
| 13 | + ], | ||
| 11 | ], | 14 | ], |
| 12 | 'components' => [ | 15 | 'components' => [ |
| 13 | 'cache' => [ | 16 | 'cache' => [ |
common/models/Catalog.php
| @@ -23,21 +23,21 @@ class Catalog extends Model | @@ -23,21 +23,21 @@ class Catalog extends Model | ||
| 23 | termin_lang.termin_title | 23 | termin_lang.termin_title |
| 24 | FROM termin_structure | 24 | FROM termin_structure |
| 25 | INNER JOIN termin_lang ON termin_lang.termin_id = termin_structure.termin_id | 25 | INNER JOIN termin_lang ON termin_lang.termin_id = termin_structure.termin_id |
| 26 | - AND termin_lang.lang_id = '.Yii::$app->params['lang_id'].' | 26 | + AND termin_lang.language_id = '.Yii::$app->params['language_id'].' |
| 27 | ORDER BY termin_structure.termin_id ASC, termin_structure.termin_pid ASC | 27 | ORDER BY termin_structure.termin_id ASC, termin_structure.termin_pid ASC |
| 28 | ')->queryAll(); | 28 | ')->queryAll(); |
| 29 | } | 29 | } |
| 30 | 30 | ||
| 31 | /** | 31 | /** |
| 32 | * Выполняет поиск по параметрам | 32 | * Выполняет поиск по параметрам |
| 33 | - * @param array $param принимает [catalog_id, lang_id, return_one, return_field, show_all] | 33 | + * @param array $param принимает [catalog_id, language_id, return_one, return_field, show_all] |
| 34 | * @return array one | array all | string значение масива | 34 | * @return array one | array all | string значение масива |
| 35 | */ | 35 | */ |
| 36 | public function finInfo (array $params = []) | 36 | public function finInfo (array $params = []) |
| 37 | { | 37 | { |
| 38 | Tools::ifNotExist ($params, array ( | 38 | Tools::ifNotExist ($params, array ( |
| 39 | 'catalog_id' => false, | 39 | 'catalog_id' => false, |
| 40 | - 'lang_id' => false, | 40 | + 'language_id' => false, |
| 41 | 'return_one' => false, | 41 | 'return_one' => false, |
| 42 | 'return_field' => false, | 42 | 'return_field' => false, |
| 43 | 'show_all' => false, | 43 | 'show_all' => false, |
| @@ -57,9 +57,9 @@ class Catalog extends Model | @@ -57,9 +57,9 @@ class Catalog extends Model | ||
| 57 | $WHERE['catalog.catalog_id'] = $params['catalog_id']; | 57 | $WHERE['catalog.catalog_id'] = $params['catalog_id']; |
| 58 | } | 58 | } |
| 59 | 59 | ||
| 60 | - if ($params['lang_id']) | 60 | + if ($params['language_id']) |
| 61 | { | 61 | { |
| 62 | - $WHERE['catalog_i18n.lang_id'] = $params['lang_id']; | 62 | + $WHERE['catalog_i18n.language_id'] = $params['language_id']; |
| 63 | } | 63 | } |
| 64 | 64 | ||
| 65 | if (! empty ($WHERE)) | 65 | if (! empty ($WHERE)) |
| @@ -144,7 +144,7 @@ class Catalog extends Model | @@ -144,7 +144,7 @@ class Catalog extends Model | ||
| 144 | */ | 144 | */ |
| 145 | public function getRelationCatalogLangPlus() | 145 | public function getRelationCatalogLangPlus() |
| 146 | { | 146 | { |
| 147 | - return $this->getRelationCatalogLang()->where(['lang_id' => yii::$app->params['lang_id']]); | 147 | + return $this->getRelationCatalogLang()->where(['language_id' => yii::$app->params['language_id']]); |
| 148 | } | 148 | } |
| 149 | 149 | ||
| 150 | /** | 150 | /** |
common/models/Language.php
| @@ -8,7 +8,11 @@ use Yii; | @@ -8,7 +8,11 @@ use Yii; | ||
| 8 | * This is the model class for table "language". | 8 | * This is the model class for table "language". |
| 9 | * | 9 | * |
| 10 | * @property integer $language_id | 10 | * @property integer $language_id |
| 11 | - * @property string $lang_code | 11 | + * @property string $language_code |
| 12 | + * @property string $is_default | ||
| 13 | + * @property string $language_name | ||
| 14 | + * @property string $status | ||
| 15 | + * @property string $country_code | ||
| 12 | */ | 16 | */ |
| 13 | class Language extends \yii\db\ActiveRecord | 17 | class Language extends \yii\db\ActiveRecord |
| 14 | { | 18 | { |
| @@ -32,8 +36,8 @@ class Language extends \yii\db\ActiveRecord | @@ -32,8 +36,8 @@ class Language extends \yii\db\ActiveRecord | ||
| 32 | $language = self::getLangByUrl($lang_code); | 36 | $language = self::getLangByUrl($lang_code); |
| 33 | self::$current = ($language === null) ? self::getDefaultLang() : $language; | 37 | self::$current = ($language === null) ? self::getDefaultLang() : $language; |
| 34 | // задаем | 38 | // задаем |
| 35 | - Yii::$app->language = self::$current->lang_code; | ||
| 36 | - Yii::$app->params['lang_id'] = self::$current->language_id; | 39 | + Yii::$app->language = self::$current->language_code; |
| 40 | + Yii::$app->params['language_id'] = self::$current->language_id; | ||
| 37 | } | 41 | } |
| 38 | 42 | ||
| 39 | //Получения объекта языка по умолчанию | 43 | //Получения объекта языка по умолчанию |
| @@ -48,7 +52,7 @@ class Language extends \yii\db\ActiveRecord | @@ -48,7 +52,7 @@ class Language extends \yii\db\ActiveRecord | ||
| 48 | if ($lang_code === null) { | 52 | if ($lang_code === null) { |
| 49 | return null; | 53 | return null; |
| 50 | } else { | 54 | } else { |
| 51 | - $language = Language::find()->where('lang_code = :what', [':what' => $lang_code])->one(); | 55 | + $language = Language::find()->where('language_code = :what', [':what' => $lang_code])->one(); |
| 52 | return $language === null ? null : $language; | 56 | return $language === null ? null : $language; |
| 53 | } | 57 | } |
| 54 | } | 58 | } |
| @@ -67,8 +71,8 @@ class Language extends \yii\db\ActiveRecord | @@ -67,8 +71,8 @@ class Language extends \yii\db\ActiveRecord | ||
| 67 | public function rules() | 71 | public function rules() |
| 68 | { | 72 | { |
| 69 | return [ | 73 | return [ |
| 70 | - [['lang_code'], 'required'], | ||
| 71 | - [['lang_code'], 'string', 'max' => 4] | 74 | + [['language_code', 'language_name', 'country_code'], 'required'], |
| 75 | + [['language_code', 'country_code'], 'string', 'max' => 4] | ||
| 72 | ]; | 76 | ]; |
| 73 | } | 77 | } |
| 74 | 78 | ||
| @@ -79,13 +83,17 @@ class Language extends \yii\db\ActiveRecord | @@ -79,13 +83,17 @@ class Language extends \yii\db\ActiveRecord | ||
| 79 | { | 83 | { |
| 80 | return [ | 84 | return [ |
| 81 | 'language_id' => Yii::t('app/Lang', 'Language ID'), | 85 | 'language_id' => Yii::t('app/Lang', 'Language ID'), |
| 82 | - 'lang_code' => Yii::t('app/Lang', 'Lang Code'), | 86 | + 'language_code' => Yii::t('app/Lang', 'Lang Code'), |
| 87 | + 'is_default' => Yii::t('app/Lang', 'Default lang'), | ||
| 88 | + 'language_name' => Yii::t('app/Lang', 'Language Name'), | ||
| 89 | + 'status' => Yii::t('app/Lang', 'Language Status'), | ||
| 90 | + 'country_code' => Yii::t('app/Lang', 'Country Code'), | ||
| 83 | ]; | 91 | ]; |
| 84 | } | 92 | } |
| 85 | 93 | ||
| 86 | public static function getActiveLanguages() | 94 | public static function getActiveLanguages() |
| 87 | { | 95 | { |
| 88 | - return Language::find()->where(['>=', 'language_id', 1])->andWhere(['active' => 1])->orderBy('is_default DESC')->indexBy('language_id')->all(); | 96 | + return Language::find()->where(['>=', 'language_id', 1])->andWhere(['status' => 1])->orderBy('is_default DESC')->indexBy('language_id')->all(); |
| 89 | } | 97 | } |
| 90 | 98 | ||
| 91 | } | 99 | } |
common/models/Media.php
| @@ -12,8 +12,9 @@ use yii\web\UploadedFile; | @@ -12,8 +12,9 @@ use yii\web\UploadedFile; | ||
| 12 | /** | 12 | /** |
| 13 | * This is the model class for table "media". | 13 | * This is the model class for table "media". |
| 14 | * | 14 | * |
| 15 | - * @property integer $id | 15 | + * @property integer $media_id |
| 16 | * @property string $hash | 16 | * @property string $hash |
| 17 | + * @property string $extension | ||
| 17 | * | 18 | * |
| 18 | * @property ArticleCategoryMedia[] $articleCategoryMedia | 19 | * @property ArticleCategoryMedia[] $articleCategoryMedia |
| 19 | * @property ArticleMedia[] $articleMedia | 20 | * @property ArticleMedia[] $articleMedia |
| @@ -39,8 +40,8 @@ class Media extends ActiveRecord | @@ -39,8 +40,8 @@ class Media extends ActiveRecord | ||
| 39 | public function rules() | 40 | public function rules() |
| 40 | { | 41 | { |
| 41 | return [ | 42 | return [ |
| 42 | - [['id'], 'integer'], | ||
| 43 | - [['hash'], 'string'], | 43 | + [['media_id'], 'integer'], |
| 44 | + [['hash', 'extension'], 'string'], | ||
| 44 | [['imageFile'], 'file', 'extensions' => 'png, gif, jpeg, jpg', 'skipOnEmpty' => true], | 45 | [['imageFile'], 'file', 'extensions' => 'png, gif, jpeg, jpg', 'skipOnEmpty' => true], |
| 45 | ]; | 46 | ]; |
| 46 | } | 47 | } |
| @@ -51,8 +52,9 @@ class Media extends ActiveRecord | @@ -51,8 +52,9 @@ class Media extends ActiveRecord | ||
| 51 | public function attributeLabels() | 52 | public function attributeLabels() |
| 52 | { | 53 | { |
| 53 | return [ | 54 | return [ |
| 54 | - 'id' => Yii::t('app', 'ID'), | 55 | + 'media_id' => Yii::t('app', 'ID'), |
| 55 | 'hash' => Yii::t('app', 'Hash'), | 56 | 'hash' => Yii::t('app', 'Hash'), |
| 57 | + 'extension' => Yii::t('app', 'Extension'), | ||
| 56 | ]; | 58 | ]; |
| 57 | } | 59 | } |
| 58 | 60 | ||
| @@ -61,7 +63,7 @@ class Media extends ActiveRecord | @@ -61,7 +63,7 @@ class Media extends ActiveRecord | ||
| 61 | */ | 63 | */ |
| 62 | public function getArticleCategoryMedia() | 64 | public function getArticleCategoryMedia() |
| 63 | { | 65 | { |
| 64 | - return $this->hasMany(ArticleCategoryMedia::className(), ['media_id' => 'id']); | 66 | + return $this->hasMany(ArticleCategoryMedia::className(), ['media_id' => 'media_id']); |
| 65 | } | 67 | } |
| 66 | 68 | ||
| 67 | /** | 69 | /** |
| @@ -69,12 +71,12 @@ class Media extends ActiveRecord | @@ -69,12 +71,12 @@ class Media extends ActiveRecord | ||
| 69 | */ | 71 | */ |
| 70 | public function getArticleMedia() | 72 | public function getArticleMedia() |
| 71 | { | 73 | { |
| 72 | - return $this->hasMany(ArticleMedia::className(), ['media_id' => 'id']); | 74 | + return $this->hasMany(ArticleMedia::className(), ['media_id' => 'media_id']); |
| 73 | } | 75 | } |
| 74 | 76 | ||
| 75 | public function getArticle() | 77 | public function getArticle() |
| 76 | { | 78 | { |
| 77 | - return $this->hasMany(Article::className(), ['id' => 'article_id'])->via('articleMedia'); | 79 | + return $this->hasMany(Article::className(), ['article_id' => 'article_id'])->via('articleMedia'); |
| 78 | } | 80 | } |
| 79 | 81 | ||
| 80 | public function upload() | 82 | public function upload() |
common/models/Tools.php
| @@ -98,4 +98,19 @@ class Tools | @@ -98,4 +98,19 @@ class Tools | ||
| 98 | 98 | ||
| 99 | return $url; | 99 | return $url; |
| 100 | } | 100 | } |
| 101 | + | ||
| 102 | + static function parseUrlParams($params) | ||
| 103 | + { | ||
| 104 | + $params = preg_split('/,\s*/', $params, -1, PREG_SPLIT_NO_EMPTY); | ||
| 105 | + $result = []; | ||
| 106 | + if($params) { | ||
| 107 | + foreach($params as $param) { | ||
| 108 | + $param = preg_split('/\s*=\s*/', $param); | ||
| 109 | + if(!empty($param[0]) && !empty($param[1])) { | ||
| 110 | + $result[$param[0]] = $param[1]; | ||
| 111 | + } | ||
| 112 | + } | ||
| 113 | + } | ||
| 114 | + return $result; | ||
| 115 | + } | ||
| 101 | } | 116 | } |
| 102 | \ No newline at end of file | 117 | \ No newline at end of file |
common/modules/blog/controllers/AjaxController.php
| @@ -7,6 +7,7 @@ use common\modules\blog\models\ArticleCategoryLang; | @@ -7,6 +7,7 @@ use common\modules\blog\models\ArticleCategoryLang; | ||
| 7 | use common\modules\blog\models\ArticleCategoryMedia; | 7 | use common\modules\blog\models\ArticleCategoryMedia; |
| 8 | use common\modules\blog\models\ArticleLang; | 8 | use common\modules\blog\models\ArticleLang; |
| 9 | use common\modules\blog\models\ArticleMedia; | 9 | use common\modules\blog\models\ArticleMedia; |
| 10 | +use yii\base\InvalidParamException; | ||
| 10 | use yii\web\Controller; | 11 | use yii\web\Controller; |
| 11 | use yii\web\ForbiddenHttpException; | 12 | use yii\web\ForbiddenHttpException; |
| 12 | use yii\web\NotFoundHttpException; | 13 | use yii\web\NotFoundHttpException; |
| @@ -26,9 +27,9 @@ class AjaxController extends Controller | @@ -26,9 +27,9 @@ class AjaxController extends Controller | ||
| 26 | return true; | 27 | return true; |
| 27 | } | 28 | } |
| 28 | 29 | ||
| 29 | - public function actionCategoryForm($lang_id, $widget_id) | 30 | + public function actionCategoryForm($language_id, $widget_id) |
| 30 | { | 31 | { |
| 31 | - $model = Language::find()->where(['>=', 'language_id', 1])->andWhere(['active' => 1, 'language_id' => $lang_id])->one(); | 32 | + $model = Language::find()->where(['>=', 'language_id', 1])->andWhere(['status' => 1, 'language_id' => $language_id])->one(); |
| 32 | if(!$model) { | 33 | if(!$model) { |
| 33 | throw new NotFoundHttpException('Language not found'); | 34 | throw new NotFoundHttpException('Language not found'); |
| 34 | } | 35 | } |
| @@ -36,9 +37,9 @@ class AjaxController extends Controller | @@ -36,9 +37,9 @@ class AjaxController extends Controller | ||
| 36 | return $this->renderAjax('_category_form', ['model' => $model, 'category_lang' => $category_lang, 'widget_id' => $widget_id]); | 37 | return $this->renderAjax('_category_form', ['model' => $model, 'category_lang' => $category_lang, 'widget_id' => $widget_id]); |
| 37 | } | 38 | } |
| 38 | 39 | ||
| 39 | - public function actionArticleForm($lang_id, $widget_id) | 40 | + public function actionArticleForm($language_id, $widget_id) |
| 40 | { | 41 | { |
| 41 | - $model = Language::find()->where(['>=', 'language_id', 1])->andWhere(['active' => 1, 'language_id' => $lang_id])->one(); | 42 | + $model = Language::find()->where(['>=', 'language_id', 1])->andWhere(['status' => 1, 'language_id' => $language_id])->one(); |
| 42 | if(!$model) { | 43 | if(!$model) { |
| 43 | throw new NotFoundHttpException('Language not found'); | 44 | throw new NotFoundHttpException('Language not found'); |
| 44 | } | 45 | } |
| @@ -46,6 +47,32 @@ class AjaxController extends Controller | @@ -46,6 +47,32 @@ class AjaxController extends Controller | ||
| 46 | return $this->renderAjax('_article_form', ['model' => $model, 'article_lang' => $article_lang, 'widget_id' => $widget_id]); | 47 | return $this->renderAjax('_article_form', ['model' => $model, 'article_lang' => $article_lang, 'widget_id' => $widget_id]); |
| 47 | } | 48 | } |
| 48 | 49 | ||
| 50 | + public function actionArticleMediaForm($language_id, $widget_id, $type) | ||
| 51 | + { | ||
| 52 | + $model = Language::find()->where(['>=', 'language_id', 1])->andWhere(['status' => 1, 'language_id' => $language_id])->one(); | ||
| 53 | + if(!$model) { | ||
| 54 | + throw new NotFoundHttpException('Language not found'); | ||
| 55 | + } | ||
| 56 | + if(!in_array($type, ['full', 'preview'])) { | ||
| 57 | + throw new InvalidParamException('Type must only be full/preview'); | ||
| 58 | + } | ||
| 59 | + $article_lang = new ArticleMedia(); | ||
| 60 | + return $this->renderAjax('_article_media_form', ['model' => $model, 'article_lang' => $article_lang, 'widget_id' => $widget_id, 'type' => $type]); | ||
| 61 | + } | ||
| 62 | + | ||
| 63 | + public function actionArticleCategoryMediaForm($language_id, $widget_id, $type) | ||
| 64 | + { | ||
| 65 | + $model = Language::find()->where(['>=', 'language_id', 1])->andWhere(['status' => 1, 'language_id' => $language_id])->one(); | ||
| 66 | + if(!$model) { | ||
| 67 | + throw new NotFoundHttpException('Language not found'); | ||
| 68 | + } | ||
| 69 | + if(!in_array($type, ['full', 'preview'])) { | ||
| 70 | + throw new InvalidParamException('Type must only be full/preview'); | ||
| 71 | + } | ||
| 72 | + $article_lang = new ArticleCategoryMedia(); | ||
| 73 | + return $this->renderAjax('_article_media_form', ['model' => $model, 'article_lang' => $article_lang, 'widget_id' => $widget_id, 'type' => $type]); | ||
| 74 | + } | ||
| 75 | + | ||
| 49 | public function actionRemoveImage() | 76 | public function actionRemoveImage() |
| 50 | { | 77 | { |
| 51 | $post = \Yii::$app->request->post(); | 78 | $post = \Yii::$app->request->post(); |
| @@ -63,6 +90,23 @@ class AjaxController extends Controller | @@ -63,6 +90,23 @@ class AjaxController extends Controller | ||
| 63 | } | 90 | } |
| 64 | } | 91 | } |
| 65 | 92 | ||
| 93 | + public function actionRemoveCategoryImage() | ||
| 94 | + { | ||
| 95 | + $post = \Yii::$app->request->post(); | ||
| 96 | + if(!empty($post['category_media_id'])) { | ||
| 97 | + $category_media = ArticleCategoryMedia::findOne($post['category_media_id']); | ||
| 98 | + if($post['remove_media']) { | ||
| 99 | + $media = $category_media->media->delete(); | ||
| 100 | + } | ||
| 101 | + if(!empty($category_media)) { | ||
| 102 | + $category_media->delete(); | ||
| 103 | + } | ||
| 104 | + return true; | ||
| 105 | + } else { | ||
| 106 | + return false; | ||
| 107 | + } | ||
| 108 | + } | ||
| 109 | + | ||
| 66 | public function actionRemoveImageCategory() | 110 | public function actionRemoveImageCategory() |
| 67 | { | 111 | { |
| 68 | $post = \Yii::$app->request->post(); | 112 | $post = \Yii::$app->request->post(); |
| @@ -79,4 +123,10 @@ class AjaxController extends Controller | @@ -79,4 +123,10 @@ class AjaxController extends Controller | ||
| 79 | return false; | 123 | return false; |
| 80 | } | 124 | } |
| 81 | } | 125 | } |
| 126 | + | ||
| 127 | + public function actionMultilangForm($model, $ajaxView, $widget_id, $language_id = NULL) | ||
| 128 | + { | ||
| 129 | + $model = new $model(['language_id' => $language_id]); | ||
| 130 | + return $this->renderAjax($ajaxView, ['model' => $model, 'widget_id' => $widget_id]); | ||
| 131 | + } | ||
| 82 | } | 132 | } |
common/modules/blog/controllers/ArticleController.php
| @@ -28,28 +28,31 @@ class ArticleController extends Controller | @@ -28,28 +28,31 @@ class ArticleController extends Controller | ||
| 28 | { | 28 | { |
| 29 | $article_langs = array(); | 29 | $article_langs = array(); |
| 30 | $article = new Article(); | 30 | $article = new Article(); |
| 31 | + $default_lang = Language::getDefaultLang(); | ||
| 31 | $images = array(); | 32 | $images = array(); |
| 32 | - $images['full'] = new ArticleMedia(['scenario' => ArticleMedia::SCENARIO_FULL]); | ||
| 33 | - $images['preview'] = new ArticleMedia(['scenario' => ArticleMedia::SCENARIO_PREVIEW]); | ||
| 34 | - $images['additional'] = new ArticleMedia(['scenario' => ArticleMedia::SCENARIO_ADDITIONAL]); | 33 | + $images[$default_lang->language_id]['full'] = new ArticleMedia(['scenario' => ArticleMedia::SCENARIO_FULL]); |
| 34 | + $images[$default_lang->language_id]['preview'] = new ArticleMedia(['scenario' => ArticleMedia::SCENARIO_PREVIEW]); | ||
| 35 | + $images[0]['additional'] = new ArticleMedia(['scenario' => ArticleMedia::SCENARIO_ADDITIONAL]); | ||
| 35 | $article->loadDefaultValues(); | 36 | $article->loadDefaultValues(); |
| 36 | $langs = Language::getActiveLanguages(); | 37 | $langs = Language::getActiveLanguages(); |
| 37 | - $default_lang = Language::getDefaultLang(); | ||
| 38 | $isValid = false; | 38 | $isValid = false; |
| 39 | if(!empty(\Yii::$app->request->post())) { | 39 | if(!empty(\Yii::$app->request->post())) { |
| 40 | $isValid = true; | 40 | $isValid = true; |
| 41 | $article->load(\Yii::$app->request->post()); | 41 | $article->load(\Yii::$app->request->post()); |
| 42 | - $article->author = \Yii::$app->user->getId(); | 42 | + $article->user_id = \Yii::$app->user->getId(); |
| 43 | $isValid = $article->validate(); | 43 | $isValid = $article->validate(); |
| 44 | - foreach($images as $index => $value) { | ||
| 45 | - $images[$index]->type = $index; | ||
| 46 | - if($index == 'additional') { | ||
| 47 | - $images[$index]->imageFile = UploadedFile::getInstances($images[$index], "[{$index}]imageFile"); | ||
| 48 | - } else { | ||
| 49 | - $images[$index]->imageFile = UploadedFile::getInstance($images[$index], "[{$index}]imageFile"); | 44 | + foreach(\Yii::$app->request->post()['ArticleMedia'] as $lang => $value) { |
| 45 | + foreach($value as $type => $fields) { | ||
| 46 | + $images[$lang][$type] = new ArticleMedia(['scenario' => $type]); | ||
| 47 | + $images[$lang][$type]->type = $type; | ||
| 48 | + $images[$lang][$type]->language_id = $lang; | ||
| 49 | + $images[$lang][$type]->imageFile = UploadedFile::getInstance($images[$lang][$type], "[{$lang}][{$type}]imageFile"); | ||
| 50 | + $isValid = $images[$lang][$type]->validate(['imageFile']) && $isValid; | ||
| 50 | } | 51 | } |
| 51 | - $isValid = $images[$index]->validate(['imageFile']) && $isValid; | ||
| 52 | } | 52 | } |
| 53 | + $images[0]['additional']->language_id = 0; | ||
| 54 | + $images[0]['additional']->type = 'additional'; | ||
| 55 | + $images[0]['additional']->imageFile = UploadedFile::getInstances($images[0]['additional'], "[0][additional]imageFile"); | ||
| 53 | if(empty(\Yii::$app->request->post()['ArticleLang'])) { | 56 | if(empty(\Yii::$app->request->post()['ArticleLang'])) { |
| 54 | $article_langs[$default_lang->language_id] = new ArticleLang(); | 57 | $article_langs[$default_lang->language_id] = new ArticleLang(); |
| 55 | $isValid = ArticleLang::validateMultiple($article_langs) && $isValid; | 58 | $isValid = ArticleLang::validateMultiple($article_langs) && $isValid; |
| @@ -69,18 +72,30 @@ class ArticleController extends Controller | @@ -69,18 +72,30 @@ class ArticleController extends Controller | ||
| 69 | if(!empty($article_categories)) { | 72 | if(!empty($article_categories)) { |
| 70 | foreach($article_categories as $article_category) { | 73 | foreach($article_categories as $article_category) { |
| 71 | $articletocategory[$article_category] = new ArticleToCategory(); | 74 | $articletocategory[$article_category] = new ArticleToCategory(); |
| 72 | - $articletocategory[$article_category]->category_id = $article_category; | 75 | + $articletocategory[$article_category]->article_category_id = $article_category; |
| 73 | $articletocategory[$article_category]->link('article', $article); | 76 | $articletocategory[$article_category]->link('article', $article); |
| 74 | } | 77 | } |
| 75 | } | 78 | } |
| 76 | $first = 1; | 79 | $first = 1; |
| 77 | - foreach($images as $index => $image) { | ||
| 78 | - $images[$index]->upload($article->id); | 80 | + foreach($images as $lang => $value) { |
| 81 | + foreach($value as $type => $fields) { | ||
| 82 | + $images[$lang][$type]->upload($article->article_id); | ||
| 83 | + if($first && $type != 'additional') { | ||
| 84 | + $media_clone = clone $images[$lang][$type]; | ||
| 85 | + $media_clone->setIsNewRecord(true); | ||
| 86 | + unset($media_clone->article_media_id); | ||
| 87 | + $media_clone->language_id = 0; | ||
| 88 | + $media_clone->upload($article->article_id); | ||
| 89 | + unset($media_clone); | ||
| 90 | + $first = 0; | ||
| 91 | + } | ||
| 92 | + } | ||
| 79 | } | 93 | } |
| 94 | + $first = 1; | ||
| 80 | foreach($article_langs as $article_lang) { | 95 | foreach($article_langs as $article_lang) { |
| 81 | if($first) { | 96 | if($first) { |
| 82 | $article_lang_clone = clone $article_lang; | 97 | $article_lang_clone = clone $article_lang; |
| 83 | - $article_lang_clone->lang_id = 0; | 98 | + $article_lang_clone->language_id = 0; |
| 84 | $article_lang_clone->link('article', $article); | 99 | $article_lang_clone->link('article', $article); |
| 85 | unset($article_lang_clone); | 100 | unset($article_lang_clone); |
| 86 | } | 101 | } |
| @@ -102,49 +117,52 @@ class ArticleController extends Controller | @@ -102,49 +117,52 @@ class ArticleController extends Controller | ||
| 102 | public function actionUpdate($id) | 117 | public function actionUpdate($id) |
| 103 | { | 118 | { |
| 104 | $article = Article::findOne($id); | 119 | $article = Article::findOne($id); |
| 105 | - $images = $article->getArticleMedia()->indexBy('type')->all(); | ||
| 106 | - if(!array_key_exists('full', $images)) { | ||
| 107 | - $images['full'] = new ArticleMedia(); | ||
| 108 | - } | ||
| 109 | - if(!array_key_exists('preview', $images)) { | ||
| 110 | - $images['preview'] = new ArticleMedia(); | ||
| 111 | - } | ||
| 112 | - foreach($images as $index => $image) { | ||
| 113 | - $images[$index]->scenario = $index; | 120 | + $imagestack = $article->getArticleMedia()->all(); |
| 121 | + $images = []; | ||
| 122 | + $images[0]['additional'][0] = new ArticleMedia(['scenario' => ArticleMedia::SCENARIO_ADDITIONAL]); | ||
| 123 | + $images[0]['additional'][0]->type = 'additional'; | ||
| 124 | + $images[0]['additional'][0]->language_id = 0; | ||
| 125 | + foreach($imagestack as $image) { | ||
| 126 | + if(in_array($image->type, ['full', 'preview'])) { | ||
| 127 | + $images[$image->language_id][$image->type] = $image; | ||
| 128 | + $images[$image->language_id][$image->type]->scenario = $image->type; | ||
| 129 | + } else { | ||
| 130 | + $images[$image->language_id][$image->type][$image->article_media_id] = $image; | ||
| 131 | + $images[$image->language_id][$image->type][$image->article_media_id]->scenario = $image->type; | ||
| 132 | + } | ||
| 114 | } | 133 | } |
| 115 | - $images['additional'] = array( | ||
| 116 | - 0 => new ArticleMedia(['scenario' => ArticleMedia::SCENARIO_ADDITIONAL]) | ||
| 117 | - ); | ||
| 118 | - $images['additional'] = array_merge($images['additional'], $article->getArticleMedia()->andWhere(['type' => 'additional'])->indexBy('id')->all()); | ||
| 119 | - foreach($images['additional'] as $index => $image) { | ||
| 120 | - $images['additional'][$index]->scenario = 'additional'; | 134 | + foreach($images as $lang => $value) { |
| 135 | + $images[$lang]['additional'][0] = new ArticleMedia(['scenario' => ArticleMedia::SCENARIO_ADDITIONAL]); | ||
| 121 | } | 136 | } |
| 122 | - $article_langs = $article->getArticleLangs()->where(['>=', 'lang_id', '1'])->indexBy('lang_id')->all(); | 137 | + $article_langs = $article->getArticleLangs()->where(['>=', 'language_id', '1'])->indexBy('language_id')->all(); |
| 123 | $langs = Language::getActiveLanguages(); | 138 | $langs = Language::getActiveLanguages(); |
| 124 | $default_lang = Language::getDefaultLang(); | 139 | $default_lang = Language::getDefaultLang(); |
| 125 | $isValid = false; | 140 | $isValid = false; |
| 126 | if(!empty(\Yii::$app->request->post())) { | 141 | if(!empty(\Yii::$app->request->post())) { |
| 127 | $isValid = true; | 142 | $isValid = true; |
| 128 | $article->load(\Yii::$app->request->post()); | 143 | $article->load(\Yii::$app->request->post()); |
| 129 | - ArticleToCategory::deleteAll(['article_id' => $article->id]); | 144 | + ArticleToCategory::deleteAll(['article_id' => $article->article_id]); |
| 130 | $article_categories = \Yii::$app->request->post('Article')['articleCategoriesArray']; | 145 | $article_categories = \Yii::$app->request->post('Article')['articleCategoriesArray']; |
| 131 | if(!empty($article_categories)) { | 146 | if(!empty($article_categories)) { |
| 132 | foreach($article_categories as $article_category) { | 147 | foreach($article_categories as $article_category) { |
| 133 | $articletocategory[$article_category] = new ArticleToCategory(); | 148 | $articletocategory[$article_category] = new ArticleToCategory(); |
| 134 | - $articletocategory[$article_category]->category_id = $article_category; | 149 | + $articletocategory[$article_category]->article_category_id = $article_category; |
| 135 | $articletocategory[$article_category]->link('article', $article); | 150 | $articletocategory[$article_category]->link('article', $article); |
| 136 | } | 151 | } |
| 137 | } | 152 | } |
| 138 | $isValid = $article->validate(); | 153 | $isValid = $article->validate(); |
| 139 | - foreach($images as $index => $value) { | ||
| 140 | - if($index == 'additional') { | ||
| 141 | - $images[$index][0]->type = $index; | ||
| 142 | - $images[$index][0]->imageFile = UploadedFile::getInstances($images[$index][0], "[{$index}]imageFile"); | ||
| 143 | - $isValid = $images[$index][0]->validate(['imageFile']) && $isValid; | ||
| 144 | - } else { | ||
| 145 | - $images[$index]->type = $index; | ||
| 146 | - $images[$index]->imageFile = UploadedFile::getInstance($images[$index], "[{$index}]imageFile"); | ||
| 147 | - $isValid = $images[$index]->validate(['imageFile']) && $isValid; | 154 | + $images[0]['additional'][0]->type = 'additional'; |
| 155 | + $images[0]['additional'][0]->language_id = 0; | ||
| 156 | + $images[0]['additional'][0]->imageFile = UploadedFile::getInstances($images[0]['additional'][0], "[0][additional]imageFile"); | ||
| 157 | + $isValid = $images[0]['additional'][0]->validate(['imageFile']) && $isValid; | ||
| 158 | + foreach(\Yii::$app->request->post()['ArticleMedia'] as $lang => $value) { | ||
| 159 | + foreach($value as $type => $fields) { | ||
| 160 | + if(!in_array($type, ['full', 'preview'])) continue; | ||
| 161 | + $images[$lang][$type] = new ArticleMedia(['scenario' => $type]); | ||
| 162 | + $images[$lang][$type]->language_id = $lang; | ||
| 163 | + $images[$lang][$type]->type = $type; | ||
| 164 | + $images[$lang][$type]->imageFile = UploadedFile::getInstance($images[$lang][$type], "[{$lang}][{$type}]imageFile"); | ||
| 165 | + $isValid = $images[$lang][$type]->validate(['imageFile']) && $isValid; | ||
| 148 | } | 166 | } |
| 149 | } | 167 | } |
| 150 | if(empty(\Yii::$app->request->post()['ArticleLang'])) { | 168 | if(empty(\Yii::$app->request->post()['ArticleLang'])) { |
| @@ -153,7 +171,7 @@ class ArticleController extends Controller | @@ -153,7 +171,7 @@ class ArticleController extends Controller | ||
| 153 | foreach(\Yii::$app->request->post()['ArticleLang'] as $index => $article_lang) { | 171 | foreach(\Yii::$app->request->post()['ArticleLang'] as $index => $article_lang) { |
| 154 | if (!array_key_exists($index, $article_langs)) { | 172 | if (!array_key_exists($index, $article_langs)) { |
| 155 | $article_langs[$index] = new ArticleLang(); | 173 | $article_langs[$index] = new ArticleLang(); |
| 156 | - $article_langs[$index]->article_id = $article->id; | 174 | + $article_langs[$index]->article_id = $article->article_id; |
| 157 | } | 175 | } |
| 158 | } | 176 | } |
| 159 | ArticleLang::loadMultiple($article_langs, \Yii::$app->request->post()); | 177 | ArticleLang::loadMultiple($article_langs, \Yii::$app->request->post()); |
| @@ -162,12 +180,14 @@ class ArticleController extends Controller | @@ -162,12 +180,14 @@ class ArticleController extends Controller | ||
| 162 | } | 180 | } |
| 163 | if($isValid) { | 181 | if($isValid) { |
| 164 | $article->save(false); | 182 | $article->save(false); |
| 165 | - foreach($images as $index => $image) { | ||
| 166 | - if($index == 'additional') { | ||
| 167 | - $images[$index][0]->upload($article->id); | ||
| 168 | - } else { | ||
| 169 | - if(!empty($images[$index]->imageFile)) { | ||
| 170 | - $images[$index]->replace($article->id, true); | 183 | + foreach($images as $lang => $value) { |
| 184 | + foreach($value as $type => $fields) { | ||
| 185 | + if($type == 'additional') { | ||
| 186 | + $images[$lang][$type][0]->upload($article->id); | ||
| 187 | + } else { | ||
| 188 | + if(!empty($images[$lang][$type]->imageFile)) { | ||
| 189 | + $images[$lang][$type]->replace($article->article_id); | ||
| 190 | + } | ||
| 171 | } | 191 | } |
| 172 | } | 192 | } |
| 173 | } | 193 | } |
common/modules/blog/controllers/CategoryController.php
| @@ -42,27 +42,30 @@ class CategoryController extends Controller | @@ -42,27 +42,30 @@ class CategoryController extends Controller | ||
| 42 | { | 42 | { |
| 43 | $category_langs = array(); | 43 | $category_langs = array(); |
| 44 | $category = new ArticleCategory(); | 44 | $category = new ArticleCategory(); |
| 45 | + $default_lang = Language::getDefaultLang(); | ||
| 45 | $images = array(); | 46 | $images = array(); |
| 46 | - $images['full'] = new ArticleCategoryMedia(['scenario' => ArticleCategoryMedia::SCENARIO_FULL]); | ||
| 47 | - $images['preview'] = new ArticleCategoryMedia(['scenario' => ArticleCategoryMedia::SCENARIO_PREVIEW]); | ||
| 48 | - $images['additional'] = new ArticleCategoryMedia(['scenario' => ArticleCategoryMedia::SCENARIO_ADDITIONAL]); | 47 | + $images[$default_lang->language_id]['full'] = new ArticleCategoryMedia(['scenario' => ArticleCategoryMedia::SCENARIO_FULL]); |
| 48 | + $images[$default_lang->language_id]['preview'] = new ArticleCategoryMedia(['scenario' => ArticleCategoryMedia::SCENARIO_PREVIEW]); | ||
| 49 | + $images[0]['additional'] = new ArticleCategoryMedia(['scenario' => ArticleCategoryMedia::SCENARIO_ADDITIONAL]); | ||
| 49 | $category->loadDefaultValues(); | 50 | $category->loadDefaultValues(); |
| 50 | $langs = Language::getActiveLanguages(); | 51 | $langs = Language::getActiveLanguages(); |
| 51 | - $default_lang = Language::getDefaultLang(); | ||
| 52 | $isValid = false; | 52 | $isValid = false; |
| 53 | - foreach($images as $index => $value) { | ||
| 54 | - $images[$index]->type = $index; | ||
| 55 | - if($index == 'additional') { | ||
| 56 | - $images[$index]->imageFile = UploadedFile::getInstances($images[$index], "[{$index}]imageFile"); | ||
| 57 | - } else { | ||
| 58 | - $images[$index]->imageFile = UploadedFile::getInstance($images[$index], "[{$index}]imageFile"); | ||
| 59 | - } | ||
| 60 | - $isValid = $images[$index]->validate(['imageFile']) && $isValid; | ||
| 61 | - } | ||
| 62 | if(!empty(\Yii::$app->request->post())) { | 53 | if(!empty(\Yii::$app->request->post())) { |
| 63 | $isValid = true; | 54 | $isValid = true; |
| 64 | $category->load(\Yii::$app->request->post()); | 55 | $category->load(\Yii::$app->request->post()); |
| 65 | $isValid = $category->validate(); | 56 | $isValid = $category->validate(); |
| 57 | + foreach(\Yii::$app->request->post()['ArticleCategoryMedia'] as $lang => $value) { | ||
| 58 | + foreach($value as $type => $fields) { | ||
| 59 | + $images[$lang][$type] = new ArticleCategoryMedia(['scenario' => $type]); | ||
| 60 | + $images[$lang][$type]->type = $type; | ||
| 61 | + $images[$lang][$type]->language_id = $lang; | ||
| 62 | + $images[$lang][$type]->imageFile = UploadedFile::getInstance($images[$lang][$type], "[{$lang}][{$type}]imageFile"); | ||
| 63 | + $isValid = $images[$lang][$type]->validate(['imageFile']) && $isValid; | ||
| 64 | + } | ||
| 65 | + } | ||
| 66 | + $images[0]['additional']->language_id = 0; | ||
| 67 | + $images[0]['additional']->type = 'additional'; | ||
| 68 | + $images[0]['additional']->imageFile = UploadedFile::getInstances($images[0]['additional'], "[0][additional]imageFile"); | ||
| 66 | if(empty(\Yii::$app->request->post()['ArticleCategoryLang'])) { | 69 | if(empty(\Yii::$app->request->post()['ArticleCategoryLang'])) { |
| 67 | $category_langs[$default_lang->language_id] = new ArticleCategoryLang(); | 70 | $category_langs[$default_lang->language_id] = new ArticleCategoryLang(); |
| 68 | $isValid = ArticleCategoryLang::validateMultiple($category_langs) && $isValid; | 71 | $isValid = ArticleCategoryLang::validateMultiple($category_langs) && $isValid; |
| @@ -79,13 +82,25 @@ class CategoryController extends Controller | @@ -79,13 +82,25 @@ class CategoryController extends Controller | ||
| 79 | if($isValid) { | 82 | if($isValid) { |
| 80 | $category->save(false); | 83 | $category->save(false); |
| 81 | $first = 1; | 84 | $first = 1; |
| 82 | - foreach($images as $index => $image) { | ||
| 83 | - $images[$index]->upload($category->id); | 85 | + foreach($images as $lang => $value) { |
| 86 | + foreach($value as $type => $fields) { | ||
| 87 | + $images[$lang][$type]->upload($category->article_category_id); | ||
| 88 | + if($first && $type != 'additional') { | ||
| 89 | + $media_clone = clone $images[$lang][$type]; | ||
| 90 | + $media_clone->setIsNewRecord(true); | ||
| 91 | + unset($media_clone->article_category_media_id); | ||
| 92 | + $media_clone->language_id = 0; | ||
| 93 | + $media_clone->upload($category->article_category_id); | ||
| 94 | + unset($media_clone); | ||
| 95 | + $first = 0; | ||
| 96 | + } | ||
| 97 | + } | ||
| 84 | } | 98 | } |
| 99 | + $first = 1; | ||
| 85 | foreach($category_langs as $category_lang) { | 100 | foreach($category_langs as $category_lang) { |
| 86 | if($first) { | 101 | if($first) { |
| 87 | $category_lang_clone = clone $category_lang; | 102 | $category_lang_clone = clone $category_lang; |
| 88 | - $category_lang_clone->lang_id = 0; | 103 | + $category_lang_clone->language_id = 0; |
| 89 | $category_lang_clone->link('category', $category); | 104 | $category_lang_clone->link('category', $category); |
| 90 | unset($category_lang_clone); | 105 | unset($category_lang_clone); |
| 91 | } | 106 | } |
| @@ -107,24 +122,24 @@ class CategoryController extends Controller | @@ -107,24 +122,24 @@ class CategoryController extends Controller | ||
| 107 | public function actionUpdate($id) | 122 | public function actionUpdate($id) |
| 108 | { | 123 | { |
| 109 | $category = ArticleCategory::findOne($id); | 124 | $category = ArticleCategory::findOne($id); |
| 110 | - $images = $category->getArticleCategoryMedia()->indexBy('type')->all(); | ||
| 111 | - if(!array_key_exists('full', $images)) { | ||
| 112 | - $images['full'] = new ArticleCategoryMedia(); | ||
| 113 | - } | ||
| 114 | - if(!array_key_exists('preview', $images)) { | ||
| 115 | - $images['preview'] = new ArticleCategoryMedia(); | ||
| 116 | - } | ||
| 117 | - foreach($images as $index => $image) { | ||
| 118 | - $images[$index]->scenario = $index; | 125 | + $imagestack = $category->getArticleCategoryMedia()->all(); |
| 126 | + $images = []; | ||
| 127 | + $images[0]['additional'][0] = new ArticleCategoryMedia(['scenario' => ArticleCategoryMedia::SCENARIO_ADDITIONAL]); | ||
| 128 | + $images[0]['additional'][0]->type = 'additional'; | ||
| 129 | + $images[0]['additional'][0]->language_id = 0; | ||
| 130 | + foreach($imagestack as $image) { | ||
| 131 | + if(in_array($image->type, ['full', 'preview'])) { | ||
| 132 | + $images[$image->language_id][$image->type] = $image; | ||
| 133 | + $images[$image->language_id][$image->type]->scenario = $image->type; | ||
| 134 | + } else { | ||
| 135 | + $images[$image->language_id][$image->type][$image->article_category_media_id] = $image; | ||
| 136 | + $images[$image->language_id][$image->type][$image->article_category_media_id]->scenario = $image->type; | ||
| 137 | + } | ||
| 119 | } | 138 | } |
| 120 | - $images['additional'] = array( | ||
| 121 | - 0 => new ArticleCategoryMedia(['scenario' => ArticleCategoryMedia::SCENARIO_ADDITIONAL]) | ||
| 122 | - ); | ||
| 123 | - $images['additional'] = array_merge($images['additional'], $category->getArticleCategoryMedia()->andWhere(['type' => 'additional'])->indexBy('id')->all()); | ||
| 124 | - foreach($images['additional'] as $index => $image) { | ||
| 125 | - $images['additional'][$index]->scenario = 'additional'; | 139 | + foreach($images as $lang => $value) { |
| 140 | + $images[$lang]['additional'][0] = new ArticleCategoryMedia(['scenario' => ArticleCategoryMedia::SCENARIO_ADDITIONAL]); | ||
| 126 | } | 141 | } |
| 127 | - $category_langs = $category->getArticleCategoryLangs()->where(['>=', 'lang_id', '1'])->indexBy('lang_id')->all(); | 142 | + $category_langs = $category->getArticleCategoryLangs()->where(['>=', 'language_id', '1'])->indexBy('language_id')->all(); |
| 128 | $langs = Language::getActiveLanguages(); | 143 | $langs = Language::getActiveLanguages(); |
| 129 | $default_lang = Language::getDefaultLang(); | 144 | $default_lang = Language::getDefaultLang(); |
| 130 | $isValid = false; | 145 | $isValid = false; |
| @@ -132,15 +147,18 @@ class CategoryController extends Controller | @@ -132,15 +147,18 @@ class CategoryController extends Controller | ||
| 132 | $isValid = true; | 147 | $isValid = true; |
| 133 | $category->load(\Yii::$app->request->post()); | 148 | $category->load(\Yii::$app->request->post()); |
| 134 | $isValid = $category->validate(); | 149 | $isValid = $category->validate(); |
| 135 | - foreach($images as $index => $value) { | ||
| 136 | - if($index == 'additional') { | ||
| 137 | - $images[$index][0]->type = $index; | ||
| 138 | - $images[$index][0]->imageFile = UploadedFile::getInstances($images[$index][0], "[{$index}]imageFile"); | ||
| 139 | - $isValid = $images[$index][0]->validate(['imageFile']) && $isValid; | ||
| 140 | - } else { | ||
| 141 | - $images[$index]->type = $index; | ||
| 142 | - $images[$index]->imageFile = UploadedFile::getInstance($images[$index], "[{$index}]imageFile"); | ||
| 143 | - $isValid = $images[$index]->validate(['imageFile']) && $isValid; | 150 | + $images[0]['additional'][0]->type = 'additional'; |
| 151 | + $images[0]['additional'][0]->language_id = 0; | ||
| 152 | + $images[0]['additional'][0]->imageFile = UploadedFile::getInstances($images[0]['additional'][0], "[0][additional]imageFile"); | ||
| 153 | + $isValid = $images[0]['additional'][0]->validate(['imageFile']) && $isValid; | ||
| 154 | + foreach(\Yii::$app->request->post()['ArticleCategoryMedia'] as $lang => $value) { | ||
| 155 | + foreach($value as $type => $fields) { | ||
| 156 | + if(!in_array($type, ['full', 'preview'])) continue; | ||
| 157 | + $images[$lang][$type] = new ArticleCategoryMedia(['scenario' => $type]); | ||
| 158 | + $images[$lang][$type]->language_id = $lang; | ||
| 159 | + $images[$lang][$type]->type = $type; | ||
| 160 | + $images[$lang][$type]->imageFile = UploadedFile::getInstance($images[$lang][$type], "[{$lang}][{$type}]imageFile"); | ||
| 161 | + $isValid = $images[$lang][$type]->validate(['imageFile']) && $isValid; | ||
| 144 | } | 162 | } |
| 145 | } | 163 | } |
| 146 | if(empty(\Yii::$app->request->post()['ArticleCategoryLang'])) { | 164 | if(empty(\Yii::$app->request->post()['ArticleCategoryLang'])) { |
| @@ -149,7 +167,7 @@ class CategoryController extends Controller | @@ -149,7 +167,7 @@ class CategoryController extends Controller | ||
| 149 | foreach(\Yii::$app->request->post()['ArticleCategoryLang'] as $index => $category_lang) { | 167 | foreach(\Yii::$app->request->post()['ArticleCategoryLang'] as $index => $category_lang) { |
| 150 | if(!array_key_exists($index, $category_langs)) { | 168 | if(!array_key_exists($index, $category_langs)) { |
| 151 | $category_langs[$index] = new ArticleCategoryLang(); | 169 | $category_langs[$index] = new ArticleCategoryLang(); |
| 152 | - $category_langs[$index]->category_id = $category->id; | 170 | + $category_langs[$index]->article_category_id = $category->article_category_id; |
| 153 | } | 171 | } |
| 154 | } | 172 | } |
| 155 | ArticleCategoryLang::loadMultiple($category_langs, \Yii::$app->request->post()); | 173 | ArticleCategoryLang::loadMultiple($category_langs, \Yii::$app->request->post()); |
| @@ -158,12 +176,14 @@ class CategoryController extends Controller | @@ -158,12 +176,14 @@ class CategoryController extends Controller | ||
| 158 | } | 176 | } |
| 159 | if($isValid) { | 177 | if($isValid) { |
| 160 | $category->save(false); | 178 | $category->save(false); |
| 161 | - foreach($images as $index => $image) { | ||
| 162 | - if($index == 'additional') { | ||
| 163 | - $images[$index][0]->upload($category->id); | ||
| 164 | - } else { | ||
| 165 | - if(!empty($images[$index]->imageFile)) { | ||
| 166 | - $images[$index]->replace($category->id, true); | 179 | + foreach($images as $lang => $value) { |
| 180 | + foreach($value as $type => $fields) { | ||
| 181 | + if($type == 'additional') { | ||
| 182 | + $images[$lang][$type][0]->upload($category->article_category_id); | ||
| 183 | + } else { | ||
| 184 | + if(!empty($images[$lang][$type]->imageFile)) { | ||
| 185 | + $images[$lang][$type]->replace($category->article_category_id); | ||
| 186 | + } | ||
| 167 | } | 187 | } |
| 168 | } | 188 | } |
| 169 | } | 189 | } |
common/modules/blog/models/Article.php
| @@ -11,21 +11,21 @@ use yii\db\Query; | @@ -11,21 +11,21 @@ use yii\db\Query; | ||
| 11 | /** | 11 | /** |
| 12 | * This is the model class for table "article". | 12 | * This is the model class for table "article". |
| 13 | * | 13 | * |
| 14 | - * @property integer $id | 14 | + * @property integer $article_id |
| 15 | * @property integer $sort | 15 | * @property integer $sort |
| 16 | - * @property string $create_at | ||
| 17 | - * @property string $update_at | 16 | + * @property string $date_add |
| 17 | + * @property string $date_update | ||
| 18 | * @property string $code | 18 | * @property string $code |
| 19 | - * @property integer $author | ||
| 20 | - * @property string $tags | ||
| 21 | - * @property integer $parent_id | ||
| 22 | - * @property integer $active | ||
| 23 | - * @property integer $comments | ||
| 24 | - * @property integer $voting | 19 | + * @property integer $user_id |
| 20 | + * @property string $tag | ||
| 21 | + * @property integer $article_pid | ||
| 22 | + * @property integer $status | ||
| 23 | + * @property integer $comment | ||
| 24 | + * @property integer $vote | ||
| 25 | * | 25 | * |
| 26 | * @property Article $parent | 26 | * @property Article $parent |
| 27 | * @property Article[] $articles | 27 | * @property Article[] $articles |
| 28 | - * @property User $author0 | 28 | + * @property User $user |
| 29 | * @property ArticleLang[] $articleLangs | 29 | * @property ArticleLang[] $articleLangs |
| 30 | * @property ArticleMedia[] $articleMedia | 30 | * @property ArticleMedia[] $articleMedia |
| 31 | * @property ArticleToCategory[] $articleToCategories | 31 | * @property ArticleToCategory[] $articleToCategories |
| @@ -58,10 +58,10 @@ class Article extends \yii\db\ActiveRecord | @@ -58,10 +58,10 @@ class Article extends \yii\db\ActiveRecord | ||
| 58 | public function rules() | 58 | public function rules() |
| 59 | { | 59 | { |
| 60 | return [ | 60 | return [ |
| 61 | - [['sort', 'parent_id', 'active', 'comments', 'voting'], 'integer'], | ||
| 62 | - [['create_at', 'update_at'], 'safe'], | 61 | + [['sort', 'article_pid', 'status', 'comment', 'vote'], 'integer'], |
| 62 | + [['date_add', 'date_update'], 'safe'], | ||
| 63 | [['code'], 'required'], | 63 | [['code'], 'required'], |
| 64 | - [['code', 'tags'], 'string'] | 64 | + [['code', 'tag'], 'string'] |
| 65 | ]; | 65 | ]; |
| 66 | } | 66 | } |
| 67 | 67 | ||
| @@ -71,17 +71,17 @@ class Article extends \yii\db\ActiveRecord | @@ -71,17 +71,17 @@ class Article extends \yii\db\ActiveRecord | ||
| 71 | public function attributeLabels() | 71 | public function attributeLabels() |
| 72 | { | 72 | { |
| 73 | return [ | 73 | return [ |
| 74 | - 'id' => Yii::t('app', 'ID'), | 74 | + 'article_id' => Yii::t('app', 'ID'), |
| 75 | 'sort' => Yii::t('app', 'Sort'), | 75 | 'sort' => Yii::t('app', 'Sort'), |
| 76 | - 'create_at' => Yii::t('app', 'Create At'), | ||
| 77 | - 'update_at' => Yii::t('app', 'Update At'), | 76 | + 'date_add' => Yii::t('app', 'Create At'), |
| 77 | + 'date_update' => Yii::t('app', 'Update At'), | ||
| 78 | 'code' => Yii::t('app', 'Code'), | 78 | 'code' => Yii::t('app', 'Code'), |
| 79 | - 'author' => Yii::t('app', 'Author'), | ||
| 80 | - 'tags' => Yii::t('app', 'Tags'), | ||
| 81 | - 'parent_id' => Yii::t('app', 'Parent ID'), | ||
| 82 | - 'active' => Yii::t('app', 'Active'), | ||
| 83 | - 'comments' => Yii::t('app', 'Comments'), | ||
| 84 | - 'voting' => Yii::t('app', 'Voting'), | 79 | + 'user_id' => Yii::t('app', 'Author'), |
| 80 | + 'tag' => Yii::t('app', 'Tags'), | ||
| 81 | + 'article_pid' => Yii::t('app', 'Parent ID'), | ||
| 82 | + 'status' => Yii::t('app', 'Active'), | ||
| 83 | + 'comment' => Yii::t('app', 'Comments'), | ||
| 84 | + 'vote' => Yii::t('app', 'Voting'), | ||
| 85 | ]; | 85 | ]; |
| 86 | } | 86 | } |
| 87 | 87 | ||
| @@ -90,7 +90,7 @@ class Article extends \yii\db\ActiveRecord | @@ -90,7 +90,7 @@ class Article extends \yii\db\ActiveRecord | ||
| 90 | */ | 90 | */ |
| 91 | public function getParent() | 91 | public function getParent() |
| 92 | { | 92 | { |
| 93 | - return $this->hasOne(Article::className(), ['id' => 'parent_id']); | 93 | + return $this->hasOne(Article::className(), ['article_id' => 'article_pid']); |
| 94 | } | 94 | } |
| 95 | 95 | ||
| 96 | /** | 96 | /** |
| @@ -98,15 +98,15 @@ class Article extends \yii\db\ActiveRecord | @@ -98,15 +98,15 @@ class Article extends \yii\db\ActiveRecord | ||
| 98 | */ | 98 | */ |
| 99 | public function getArticles() | 99 | public function getArticles() |
| 100 | { | 100 | { |
| 101 | - return $this->hasMany(Article::className(), ['parent_id' => 'id']); | 101 | + return $this->hasMany(Article::className(), ['article_pid' => 'article_id']); |
| 102 | } | 102 | } |
| 103 | 103 | ||
| 104 | /** | 104 | /** |
| 105 | * @return \yii\db\ActiveQuery | 105 | * @return \yii\db\ActiveQuery |
| 106 | */ | 106 | */ |
| 107 | - public function getAuthor0() | 107 | + public function getUser() |
| 108 | { | 108 | { |
| 109 | - return $this->hasOne(User::className(), ['id' => 'author']); | 109 | + return $this->hasOne(User::className(), ['id' => 'user_id']); |
| 110 | } | 110 | } |
| 111 | 111 | ||
| 112 | /** | 112 | /** |
| @@ -114,7 +114,7 @@ class Article extends \yii\db\ActiveRecord | @@ -114,7 +114,7 @@ class Article extends \yii\db\ActiveRecord | ||
| 114 | */ | 114 | */ |
| 115 | public function getArticleLangs() | 115 | public function getArticleLangs() |
| 116 | { | 116 | { |
| 117 | - return $this->hasMany(ArticleLang::className(), ['article_id' => 'id']); | 117 | + return $this->hasMany(ArticleLang::className(), ['article_id' => 'article_id']); |
| 118 | } | 118 | } |
| 119 | 119 | ||
| 120 | /** | 120 | /** |
| @@ -122,40 +122,40 @@ class Article extends \yii\db\ActiveRecord | @@ -122,40 +122,40 @@ class Article extends \yii\db\ActiveRecord | ||
| 122 | */ | 122 | */ |
| 123 | public function getArticleMedia() | 123 | public function getArticleMedia() |
| 124 | { | 124 | { |
| 125 | - return $this->hasMany(ArticleMedia::className(), ['article_id' => 'id']); | 125 | + return $this->hasMany(ArticleMedia::className(), ['article_id' => 'article_id']); |
| 126 | } | 126 | } |
| 127 | 127 | ||
| 128 | public function getMedia() | 128 | public function getMedia() |
| 129 | { | 129 | { |
| 130 | - return $this->hasMany(Media::className(), ['id' => 'media_id'])->via('articleMedia'); | 130 | + return $this->hasMany(Media::className(), ['article_id' => 'media_id'])->via('articleMedia'); |
| 131 | } | 131 | } |
| 132 | /** | 132 | /** |
| 133 | * @return \yii\db\ActiveQuery | 133 | * @return \yii\db\ActiveQuery |
| 134 | */ | 134 | */ |
| 135 | public function getArticleToCategories() | 135 | public function getArticleToCategories() |
| 136 | { | 136 | { |
| 137 | - return $this->hasMany(ArticleToCategory::className(), ['article_id' => 'id']); | 137 | + return $this->hasMany(ArticleToCategory::className(), ['article_id' => 'article_id']); |
| 138 | } | 138 | } |
| 139 | 139 | ||
| 140 | public function getArticleCategories() | 140 | public function getArticleCategories() |
| 141 | { | 141 | { |
| 142 | - return $this->hasMany(ArticleCategory::className(), ['id' => 'category_id'])->viaTable('article_to_category', ['article_id' => 'id']); | 142 | + return $this->hasMany(ArticleCategory::className(), ['article_category_id' => 'article_category_id'])->viaTable('article_to_category', ['article_id' => 'article_category_id']); |
| 143 | } | 143 | } |
| 144 | 144 | ||
| 145 | public static function findArticleDropdown($id) | 145 | public static function findArticleDropdown($id) |
| 146 | { | 146 | { |
| 147 | $query = new Query(); | 147 | $query = new Query(); |
| 148 | - return $query->select(['l.name', 'a.id']) | 148 | + return $query->select(['l.name', 'a.article_id']) |
| 149 | ->from(['article a']) | 149 | ->from(['article a']) |
| 150 | - ->leftJoin(['article_lang l'], 'a.id = l.article_id') | ||
| 151 | - ->where(['l.lang_id' => 0, 'a.active' => 1]) | ||
| 152 | - ->andWhere(['not', ['a.id' => $id]]) | ||
| 153 | - ->indexBy('a.id') | 150 | + ->leftJoin(['article_lang l'], 'a.article_id = l.article_id') |
| 151 | + ->where(['l.language_id' => 0, 'a.status' => 1]) | ||
| 152 | + ->andWhere(['not', ['a.article_id' => $id]]) | ||
| 153 | + ->indexBy('article_id') | ||
| 154 | ->column(); | 154 | ->column(); |
| 155 | } | 155 | } |
| 156 | 156 | ||
| 157 | public function getArticleCategoriesArray() | 157 | public function getArticleCategoriesArray() |
| 158 | { | 158 | { |
| 159 | - return $this->getArticleToCategories()->select('category_id')->column(); | 159 | + return $this->getArticleToCategories()->select('article_category_id')->column(); |
| 160 | } | 160 | } |
| 161 | } | 161 | } |
common/modules/blog/models/ArticleCategory.php
| @@ -11,14 +11,14 @@ use yii\db\Query; | @@ -11,14 +11,14 @@ use yii\db\Query; | ||
| 11 | /** | 11 | /** |
| 12 | * This is the model class for table "article_category". | 12 | * This is the model class for table "article_category". |
| 13 | * | 13 | * |
| 14 | - * @property integer $id | ||
| 15 | - * @property integer $active | 14 | + * @property integer $article_category_id |
| 15 | + * @property integer $status | ||
| 16 | * @property integer $sort | 16 | * @property integer $sort |
| 17 | * @property string $code | 17 | * @property string $code |
| 18 | - * @property string $created_at | ||
| 19 | - * @property string $updated_at | ||
| 20 | - * @property string $tags | ||
| 21 | - * @property integer $parent_id | 18 | + * @property string $date_add |
| 19 | + * @property string $date_update | ||
| 20 | + * @property string $tag | ||
| 21 | + * @property integer $artucle_category_pid | ||
| 22 | * | 22 | * |
| 23 | * @property Article[] $articles | 23 | * @property Article[] $articles |
| 24 | * @property ArticleCategory $parent | 24 | * @property ArticleCategory $parent |
| @@ -53,11 +53,11 @@ class ArticleCategory extends ActiveRecord | @@ -53,11 +53,11 @@ class ArticleCategory extends ActiveRecord | ||
| 53 | public function rules() | 53 | public function rules() |
| 54 | { | 54 | { |
| 55 | return [ | 55 | return [ |
| 56 | - [['active', 'sort', 'parent_id'], 'integer'], | 56 | + [['status', 'sort', 'article_category_pid'], 'integer'], |
| 57 | [['code'], 'required'], | 57 | [['code'], 'required'], |
| 58 | - [['code', 'tags'], 'string'], | ||
| 59 | - [['created_at', 'updated_at'], 'safe'], | ||
| 60 | - [['active'], 'boolean'], | 58 | + [['code', 'tag'], 'string'], |
| 59 | + [['date_add', 'date_update'], 'safe'], | ||
| 60 | + [['status'], 'boolean'], | ||
| 61 | ]; | 61 | ]; |
| 62 | } | 62 | } |
| 63 | 63 | ||
| @@ -67,14 +67,14 @@ class ArticleCategory extends ActiveRecord | @@ -67,14 +67,14 @@ class ArticleCategory extends ActiveRecord | ||
| 67 | public function attributeLabels() | 67 | public function attributeLabels() |
| 68 | { | 68 | { |
| 69 | return [ | 69 | return [ |
| 70 | - 'id' => Yii::t('app', 'ID'), | ||
| 71 | - 'active' => Yii::t('app', 'Active'), | 70 | + 'article_category_id' => Yii::t('app', 'ID'), |
| 71 | + 'status' => Yii::t('app', 'Active'), | ||
| 72 | 'sort' => Yii::t('app', 'Sort'), | 72 | 'sort' => Yii::t('app', 'Sort'), |
| 73 | 'code' => Yii::t('app', 'Code'), | 73 | 'code' => Yii::t('app', 'Code'), |
| 74 | - 'created_at' => Yii::t('app', 'Created At'), | ||
| 75 | - 'updated_at' => Yii::t('app', 'Updated At'), | ||
| 76 | - 'tags' => Yii::t('app', 'Tags'), | ||
| 77 | - 'parent_id' => Yii::t('app', 'Parent ID'), | 74 | + 'date_add' => Yii::t('app', 'Created At'), |
| 75 | + 'date_update' => Yii::t('app', 'Updated At'), | ||
| 76 | + 'tag' => Yii::t('app', 'Tags'), | ||
| 77 | + 'article_category_pid' => Yii::t('app', 'Parent ID'), | ||
| 78 | ]; | 78 | ]; |
| 79 | } | 79 | } |
| 80 | 80 | ||
| @@ -83,7 +83,7 @@ class ArticleCategory extends ActiveRecord | @@ -83,7 +83,7 @@ class ArticleCategory extends ActiveRecord | ||
| 83 | */ | 83 | */ |
| 84 | public function getArticles() | 84 | public function getArticles() |
| 85 | { | 85 | { |
| 86 | - return $this->hasMany(Article::className(), ['category_id' => 'id']); | 86 | + return $this->hasMany(Article::className(), ['article_id' => 'article_id'])->viaTable('article_to_category', ['article_category_id' => 'article_category_id']) ; |
| 87 | } | 87 | } |
| 88 | 88 | ||
| 89 | /** | 89 | /** |
| @@ -91,7 +91,7 @@ class ArticleCategory extends ActiveRecord | @@ -91,7 +91,7 @@ class ArticleCategory extends ActiveRecord | ||
| 91 | */ | 91 | */ |
| 92 | public function getParent() | 92 | public function getParent() |
| 93 | { | 93 | { |
| 94 | - return $this->hasOne(ArticleCategory::className(), ['id' => 'parent_id']); | 94 | + return $this->hasOne(ArticleCategory::className(), ['article_category_id' => 'article_category_pid']); |
| 95 | } | 95 | } |
| 96 | 96 | ||
| 97 | /** | 97 | /** |
| @@ -99,7 +99,7 @@ class ArticleCategory extends ActiveRecord | @@ -99,7 +99,7 @@ class ArticleCategory extends ActiveRecord | ||
| 99 | */ | 99 | */ |
| 100 | public function getArticleCategories() | 100 | public function getArticleCategories() |
| 101 | { | 101 | { |
| 102 | - return $this->hasMany(ArticleCategory::className(), ['parent_id' => 'id']); | 102 | + return $this->hasMany(ArticleCategory::className(), ['article_category_pid' => 'article_category_id']); |
| 103 | } | 103 | } |
| 104 | 104 | ||
| 105 | /** | 105 | /** |
| @@ -107,7 +107,7 @@ class ArticleCategory extends ActiveRecord | @@ -107,7 +107,7 @@ class ArticleCategory extends ActiveRecord | ||
| 107 | */ | 107 | */ |
| 108 | public function getArticleCategoryLangs() | 108 | public function getArticleCategoryLangs() |
| 109 | { | 109 | { |
| 110 | - return $this->hasMany(ArticleCategoryLang::className(), ['category_id' => 'id']); | 110 | + return $this->hasMany(ArticleCategoryLang::className(), ['article_category_id' => 'article_category_id']); |
| 111 | } | 111 | } |
| 112 | 112 | ||
| 113 | /** | 113 | /** |
| @@ -115,18 +115,18 @@ class ArticleCategory extends ActiveRecord | @@ -115,18 +115,18 @@ class ArticleCategory extends ActiveRecord | ||
| 115 | */ | 115 | */ |
| 116 | public function getArticleCategoryMedia() | 116 | public function getArticleCategoryMedia() |
| 117 | { | 117 | { |
| 118 | - return $this->hasMany(ArticleCategoryMedia::className(), ['category_id' => 'id']); | 118 | + return $this->hasMany(ArticleCategoryMedia::className(), ['article_category_id' => 'article_category_id']); |
| 119 | } | 119 | } |
| 120 | 120 | ||
| 121 | public static function findArticleCategoryDropdown($id) | 121 | public static function findArticleCategoryDropdown($id) |
| 122 | { | 122 | { |
| 123 | $query = new Query(); | 123 | $query = new Query(); |
| 124 | - return $query->select(['l.name', 'c.id']) | 124 | + return $query->select(['l.name', 'c.article_category_id']) |
| 125 | ->from(['article_category c']) | 125 | ->from(['article_category c']) |
| 126 | - ->leftJoin(['article_category_lang l'], 'c.id = l.category_id') | ||
| 127 | - ->where(['l.lang_id' => 0, 'c.active' => 1]) | ||
| 128 | - ->andWhere(['not', ['c.id' => $id]]) | ||
| 129 | - ->indexBy('id') | 126 | + ->leftJoin(['article_category_lang l'], 'c.article_category_id = l.article_category_id') |
| 127 | + ->where(['l.language_id' => 0, 'c.status' => 1]) | ||
| 128 | + ->andWhere(['not', ['c.article_category_id' => $id]]) | ||
| 129 | + ->indexBy('article_category_id') | ||
| 130 | ->column(); | 130 | ->column(); |
| 131 | } | 131 | } |
| 132 | 132 |
common/modules/blog/models/ArticleCategoryLang.php
| @@ -8,18 +8,18 @@ use Yii; | @@ -8,18 +8,18 @@ use Yii; | ||
| 8 | /** | 8 | /** |
| 9 | * This is the model class for table "article_category_lang". | 9 | * This is the model class for table "article_category_lang". |
| 10 | * | 10 | * |
| 11 | - * @property integer $id | ||
| 12 | - * @property integer $lang_id | ||
| 13 | - * @property integer $category_id | 11 | + * @property integer $article_category_language_id |
| 12 | + * @property integer $language_id | ||
| 13 | + * @property integer $article_category_id | ||
| 14 | * @property string $text | 14 | * @property string $text |
| 15 | * @property string $preview | 15 | * @property string $preview |
| 16 | * @property string $seo_url | 16 | * @property string $seo_url |
| 17 | * @property string $name | 17 | * @property string $name |
| 18 | * @property string $meta_title | 18 | * @property string $meta_title |
| 19 | * @property string $meta_descr | 19 | * @property string $meta_descr |
| 20 | - * @property string $meta_keywords | 20 | + * @property string $meta_keyword |
| 21 | * @property string $h1_tag | 21 | * @property string $h1_tag |
| 22 | - * @property string $tags | 22 | + * @property string $tag |
| 23 | * | 23 | * |
| 24 | * @property ArticleCategory $category | 24 | * @property ArticleCategory $category |
| 25 | * @property Language $lang | 25 | * @property Language $lang |
| @@ -51,9 +51,9 @@ class ArticleCategoryLang extends \yii\db\ActiveRecord | @@ -51,9 +51,9 @@ class ArticleCategoryLang extends \yii\db\ActiveRecord | ||
| 51 | public function rules() | 51 | public function rules() |
| 52 | { | 52 | { |
| 53 | return [ | 53 | return [ |
| 54 | - [['lang_id', 'category_id'], 'integer'], | 54 | + [['language_id', 'article_category_id'], 'integer'], |
| 55 | [['text', 'name'], 'required'], | 55 | [['text', 'name'], 'required'], |
| 56 | - [['text', 'preview', 'seo_url', 'name', 'meta_title', 'meta_descr', 'meta_keywords', 'h1_tag', 'tags'], 'string'], | 56 | + [['text', 'preview', 'seo_url', 'name', 'meta_title', 'meta_descr', 'meta_keyword', 'h1_tag', 'tag'], 'string'], |
| 57 | ['seo_url', function($attribute, $params) { | 57 | ['seo_url', function($attribute, $params) { |
| 58 | $pattern = "/^[a-zA-Z\d_-]+$/"; | 58 | $pattern = "/^[a-zA-Z\d_-]+$/"; |
| 59 | if(!preg_match($pattern, $this->$attribute)) { | 59 | if(!preg_match($pattern, $this->$attribute)) { |
| @@ -69,18 +69,18 @@ class ArticleCategoryLang extends \yii\db\ActiveRecord | @@ -69,18 +69,18 @@ class ArticleCategoryLang extends \yii\db\ActiveRecord | ||
| 69 | public function attributeLabels() | 69 | public function attributeLabels() |
| 70 | { | 70 | { |
| 71 | return [ | 71 | return [ |
| 72 | - 'id' => Yii::t('app', 'ID'), | ||
| 73 | - 'lang_id' => Yii::t('app', 'Lang ID'), | ||
| 74 | - 'category_id' => Yii::t('app', 'Category ID'), | 72 | + 'article_category_language_id' => Yii::t('app', 'ID'), |
| 73 | + 'language_id' => Yii::t('app', 'Lang ID'), | ||
| 74 | + 'article_category_id' => Yii::t('app', 'Category ID'), | ||
| 75 | 'text' => Yii::t('app', 'Text'), | 75 | 'text' => Yii::t('app', 'Text'), |
| 76 | 'preview' => Yii::t('app', 'Preview'), | 76 | 'preview' => Yii::t('app', 'Preview'), |
| 77 | 'seo_url' => Yii::t('app', 'Seo Url'), | 77 | 'seo_url' => Yii::t('app', 'Seo Url'), |
| 78 | 'name' => Yii::t('app', 'Name'), | 78 | 'name' => Yii::t('app', 'Name'), |
| 79 | 'meta_title' => Yii::t('app', 'Meta Title'), | 79 | 'meta_title' => Yii::t('app', 'Meta Title'), |
| 80 | 'meta_descr' => Yii::t('app', 'Meta Descr'), | 80 | 'meta_descr' => Yii::t('app', 'Meta Descr'), |
| 81 | - 'meta_keywords' => Yii::t('app', 'Meta Keywords'), | 81 | + 'meta_keyword' => Yii::t('app', 'Meta Keywords'), |
| 82 | 'h1_tag' => Yii::t('app', 'H1 Tag'), | 82 | 'h1_tag' => Yii::t('app', 'H1 Tag'), |
| 83 | - 'tags' => Yii::t('app', 'Tags'), | 83 | + 'tag' => Yii::t('app', 'Tags'), |
| 84 | ]; | 84 | ]; |
| 85 | } | 85 | } |
| 86 | 86 | ||
| @@ -89,7 +89,7 @@ class ArticleCategoryLang extends \yii\db\ActiveRecord | @@ -89,7 +89,7 @@ class ArticleCategoryLang extends \yii\db\ActiveRecord | ||
| 89 | */ | 89 | */ |
| 90 | public function getCategory() | 90 | public function getCategory() |
| 91 | { | 91 | { |
| 92 | - return $this->hasOne(ArticleCategory::className(), ['id' => 'category_id']); | 92 | + return $this->hasOne(ArticleCategory::className(), ['article_category_id' => 'article_category_id']); |
| 93 | } | 93 | } |
| 94 | 94 | ||
| 95 | /** | 95 | /** |
| @@ -97,6 +97,6 @@ class ArticleCategoryLang extends \yii\db\ActiveRecord | @@ -97,6 +97,6 @@ class ArticleCategoryLang extends \yii\db\ActiveRecord | ||
| 97 | */ | 97 | */ |
| 98 | public function getLang() | 98 | public function getLang() |
| 99 | { | 99 | { |
| 100 | - return $this->hasOne(Language::className(), ['language_id' => 'lang_id']); | 100 | + return $this->hasOne(Language::className(), ['language_id' => 'language_id']); |
| 101 | } | 101 | } |
| 102 | } | 102 | } |
common/modules/blog/models/ArticleCategoryMedia.php
| @@ -8,16 +8,18 @@ use Yii; | @@ -8,16 +8,18 @@ use Yii; | ||
| 8 | /** | 8 | /** |
| 9 | * This is the model class for table "article_category_media". | 9 | * This is the model class for table "article_category_media". |
| 10 | * | 10 | * |
| 11 | - * @property integer $id | ||
| 12 | - * @property integer $category_id | 11 | + * @property integer $article_category_media_id |
| 12 | + * @property integer $article_category_id | ||
| 13 | * @property integer $media_id | 13 | * @property integer $media_id |
| 14 | * @property string $media_alt | 14 | * @property string $media_alt |
| 15 | * @property string $media_title | 15 | * @property string $media_title |
| 16 | * @property string $media_caption | 16 | * @property string $media_caption |
| 17 | * @property string $type | 17 | * @property string $type |
| 18 | + * @property string $language_id | ||
| 18 | * | 19 | * |
| 19 | * @property ArticleCategory $category | 20 | * @property ArticleCategory $category |
| 20 | * @property Media $media | 21 | * @property Media $media |
| 22 | + * @property Language $lang | ||
| 21 | */ | 23 | */ |
| 22 | class ArticleCategoryMedia extends \yii\db\ActiveRecord | 24 | class ArticleCategoryMedia extends \yii\db\ActiveRecord |
| 23 | { | 25 | { |
| @@ -36,9 +38,9 @@ class ArticleCategoryMedia extends \yii\db\ActiveRecord | @@ -36,9 +38,9 @@ class ArticleCategoryMedia extends \yii\db\ActiveRecord | ||
| 36 | public function scenarios() | 38 | public function scenarios() |
| 37 | { | 39 | { |
| 38 | $scenarios = parent::scenarios(); | 40 | $scenarios = parent::scenarios(); |
| 39 | - $scenarios[self::SCENARIO_FULL] = ['id', 'category_id', 'media_id', 'type', 'media_alt', 'media_title', 'media_caption', 'imageFile']; | ||
| 40 | - $scenarios[self::SCENARIO_PREVIEW] = ['id', 'category_id', 'media_id', 'type', 'media_alt', 'media_title', 'media_caption', 'imageFile']; | ||
| 41 | - $scenarios[self::SCENARIO_ADDITIONAL] = ['id', 'category_id', 'media_id', 'type', 'imageFile']; | 41 | + $scenarios[self::SCENARIO_FULL] = ['article_category_media_id', 'article_category_id', 'media_id', 'type', 'media_alt', 'media_title', 'media_caption', 'imageFile']; |
| 42 | + $scenarios[self::SCENARIO_PREVIEW] = ['article_category_media_id', 'article_category_id', 'media_id', 'type', 'media_alt', 'media_title', 'media_caption', 'imageFile']; | ||
| 43 | + $scenarios[self::SCENARIO_ADDITIONAL] = ['article_category_media_id', 'article_category_id', 'media_id', 'type', 'imageFile']; | ||
| 42 | return $scenarios; | 44 | return $scenarios; |
| 43 | } | 45 | } |
| 44 | 46 | ||
| @@ -48,8 +50,8 @@ class ArticleCategoryMedia extends \yii\db\ActiveRecord | @@ -48,8 +50,8 @@ class ArticleCategoryMedia extends \yii\db\ActiveRecord | ||
| 48 | public function rules() | 50 | public function rules() |
| 49 | { | 51 | { |
| 50 | return [ | 52 | return [ |
| 51 | - [['category_id', 'media_id'], 'required'], | ||
| 52 | - [['category_id', 'media_id'], 'integer'], | 53 | + [['article_category_id', 'media_id'], 'required'], |
| 54 | + [['article_category_id', 'media_id'], 'integer'], | ||
| 53 | [['media_alt', 'media_title', 'media_caption'], 'string'], | 55 | [['media_alt', 'media_title', 'media_caption'], 'string'], |
| 54 | [['type'], 'string', 'max' => 10], | 56 | [['type'], 'string', 'max' => 10], |
| 55 | [['imageFile'], 'file', 'extensions' => 'png, gif, jpg, jpeg', 'skipOnEmpty' => true, 'on' => self::SCENARIO_FULL], | 57 | [['imageFile'], 'file', 'extensions' => 'png, gif, jpg, jpeg', 'skipOnEmpty' => true, 'on' => self::SCENARIO_FULL], |
| @@ -64,14 +66,15 @@ class ArticleCategoryMedia extends \yii\db\ActiveRecord | @@ -64,14 +66,15 @@ class ArticleCategoryMedia extends \yii\db\ActiveRecord | ||
| 64 | public function attributeLabels() | 66 | public function attributeLabels() |
| 65 | { | 67 | { |
| 66 | return [ | 68 | return [ |
| 67 | - 'id' => Yii::t('app', 'ID'), | ||
| 68 | - 'category_id' => Yii::t('app', 'Category ID'), | 69 | + 'article_category_media_id' => Yii::t('app', 'ID'), |
| 70 | + 'article_category_id' => Yii::t('app', 'Category ID'), | ||
| 69 | 'media_id' => Yii::t('app', 'Media ID'), | 71 | 'media_id' => Yii::t('app', 'Media ID'), |
| 70 | 'media_alt' => Yii::t('app', 'Media Alt'), | 72 | 'media_alt' => Yii::t('app', 'Media Alt'), |
| 71 | 'media_title' => Yii::t('app', 'Media Title'), | 73 | 'media_title' => Yii::t('app', 'Media Title'), |
| 72 | 'media_caption' => Yii::t('app', 'Media Caption'), | 74 | 'media_caption' => Yii::t('app', 'Media Caption'), |
| 73 | 'type' => Yii::t('app', 'Type'), | 75 | 'type' => Yii::t('app', 'Type'), |
| 74 | 'imageFile' => Yii::t('app', 'Image File'), | 76 | 'imageFile' => Yii::t('app', 'Image File'), |
| 77 | + 'language_id' => Yii::t('app', 'Language ID'), | ||
| 75 | ]; | 78 | ]; |
| 76 | } | 79 | } |
| 77 | 80 | ||
| @@ -80,7 +83,7 @@ class ArticleCategoryMedia extends \yii\db\ActiveRecord | @@ -80,7 +83,7 @@ class ArticleCategoryMedia extends \yii\db\ActiveRecord | ||
| 80 | */ | 83 | */ |
| 81 | public function getCategory() | 84 | public function getCategory() |
| 82 | { | 85 | { |
| 83 | - return $this->hasOne(ArticleCategory::className(), ['id' => 'category_id']); | 86 | + return $this->hasOne(ArticleCategory::className(), ['article_category_id' => 'article_category_id']); |
| 84 | } | 87 | } |
| 85 | 88 | ||
| 86 | /** | 89 | /** |
| @@ -88,12 +91,12 @@ class ArticleCategoryMedia extends \yii\db\ActiveRecord | @@ -88,12 +91,12 @@ class ArticleCategoryMedia extends \yii\db\ActiveRecord | ||
| 88 | */ | 91 | */ |
| 89 | public function getMedia() | 92 | public function getMedia() |
| 90 | { | 93 | { |
| 91 | - return $this->hasOne(Media::className(), ['id' => 'media_id']); | 94 | + return $this->hasOne(Media::className(), ['media_id' => 'media_id']); |
| 92 | } | 95 | } |
| 93 | 96 | ||
| 94 | public function upload($category_id) | 97 | public function upload($category_id) |
| 95 | { | 98 | { |
| 96 | - $this->category_id = $category_id; | 99 | + $this->article_category_id = $category_id; |
| 97 | if(is_array($this->imageFile)) { | 100 | if(is_array($this->imageFile)) { |
| 98 | $ok = true; | 101 | $ok = true; |
| 99 | foreach($this->imageFile as $image) { | 102 | foreach($this->imageFile as $image) { |
| @@ -101,7 +104,7 @@ class ArticleCategoryMedia extends \yii\db\ActiveRecord | @@ -101,7 +104,7 @@ class ArticleCategoryMedia extends \yii\db\ActiveRecord | ||
| 101 | $media = new Media(); | 104 | $media = new Media(); |
| 102 | $media->imageFile = $image; | 105 | $media->imageFile = $image; |
| 103 | $media->upload(); | 106 | $media->upload(); |
| 104 | - $media_category->media_id = $media->id; | 107 | + $media_category->media_id = $media->media_id; |
| 105 | $ok = $media_category->save() && $ok; | 108 | $ok = $media_category->save() && $ok; |
| 106 | unset($media_category); | 109 | unset($media_category); |
| 107 | } | 110 | } |
| @@ -110,19 +113,19 @@ class ArticleCategoryMedia extends \yii\db\ActiveRecord | @@ -110,19 +113,19 @@ class ArticleCategoryMedia extends \yii\db\ActiveRecord | ||
| 110 | $media = new Media(); | 113 | $media = new Media(); |
| 111 | $media->imageFile = $this->imageFile; | 114 | $media->imageFile = $this->imageFile; |
| 112 | $media->upload(); | 115 | $media->upload(); |
| 113 | - $this->media_id = $media->id; | 116 | + $this->media_id = $media->media_id; |
| 114 | return $this->save(); | 117 | return $this->save(); |
| 115 | } | 118 | } |
| 116 | } | 119 | } |
| 117 | 120 | ||
| 118 | public function replace($category_id, $removeMedia = false) | 121 | public function replace($category_id, $removeMedia = false) |
| 119 | { | 122 | { |
| 120 | - $this->category_id = $category_id; | 123 | + $this->article_category_id = $category_id; |
| 121 | if($removeMedia) { | 124 | if($removeMedia) { |
| 122 | - $category_media = ArticleCategoryMedia::find()->select('media_id')->where(['category_id' => $this->category_id, 'type' => $this->type])->column(); | 125 | + $category_media = ArticleCategoryMedia::find()->select('media_id')->where(['article_category_id' => $this->article_category_id, 'type' => $this->type])->column(); |
| 123 | $media = array(); | 126 | $media = array(); |
| 124 | foreach($category_media as $media_id) { | 127 | foreach($category_media as $media_id) { |
| 125 | - $media[] = Media::findOne(['id' => $media_id]); | 128 | + $media[] = Media::findOne(['media_id' => $media_id]); |
| 126 | } | 129 | } |
| 127 | $media = array_unique($media); | 130 | $media = array_unique($media); |
| 128 | foreach($media as $one_media) { | 131 | foreach($media as $one_media) { |
| @@ -140,17 +143,17 @@ class ArticleCategoryMedia extends \yii\db\ActiveRecord | @@ -140,17 +143,17 @@ class ArticleCategoryMedia extends \yii\db\ActiveRecord | ||
| 140 | $media = new Media(); | 143 | $media = new Media(); |
| 141 | $media->imageFile = $image; | 144 | $media->imageFile = $image; |
| 142 | $media->upload(); | 145 | $media->upload(); |
| 143 | - $media_category->media_id = $media->id; | 146 | + $media_category->media_id = $media->media_id; |
| 144 | $ok = $media_category->save() && $ok; | 147 | $ok = $media_category->save() && $ok; |
| 145 | unset($media_category); | 148 | unset($media_category); |
| 146 | } | 149 | } |
| 147 | return $ok; | 150 | return $ok; |
| 148 | } elseif(!empty($this->imageFile)) { | 151 | } elseif(!empty($this->imageFile)) { |
| 149 | - ArticleCategoryMedia::deleteAll(['category_id' => $this->category_id, 'type' => $this->type]); | 152 | + ArticleCategoryMedia::deleteAll(['category_id' => $this->article_category_id, 'type' => $this->type]); |
| 150 | $media = new Media(); | 153 | $media = new Media(); |
| 151 | $media->imageFile = $this->imageFile; | 154 | $media->imageFile = $this->imageFile; |
| 152 | $media->upload(); | 155 | $media->upload(); |
| 153 | - $this->media_id = $media->id; | 156 | + $this->media_id = $media->media_id; |
| 154 | $this->setIsNewRecord(true); | 157 | $this->setIsNewRecord(true); |
| 155 | return $this->save(); | 158 | return $this->save(); |
| 156 | } | 159 | } |
common/modules/blog/models/ArticleLang.php
| @@ -8,8 +8,8 @@ use common\models\Language; | @@ -8,8 +8,8 @@ use common\models\Language; | ||
| 8 | /** | 8 | /** |
| 9 | * This is the model class for table "article_lang". | 9 | * This is the model class for table "article_lang". |
| 10 | * | 10 | * |
| 11 | - * @property integer $id | ||
| 12 | - * @property integer $lang_id | 11 | + * @property integer $article_language_id |
| 12 | + * @property integer $language_id | ||
| 13 | * @property integer $article_id | 13 | * @property integer $article_id |
| 14 | * @property string $text | 14 | * @property string $text |
| 15 | * @property string $seo_url | 15 | * @property string $seo_url |
| @@ -17,9 +17,9 @@ use common\models\Language; | @@ -17,9 +17,9 @@ use common\models\Language; | ||
| 17 | * @property string $preview | 17 | * @property string $preview |
| 18 | * @property string $meta_title | 18 | * @property string $meta_title |
| 19 | * @property string $meta_descr | 19 | * @property string $meta_descr |
| 20 | - * @property string $meta_keywords | 20 | + * @property string $meta_keyword |
| 21 | * @property string $h1_tag | 21 | * @property string $h1_tag |
| 22 | - * @property string $tags | 22 | + * @property string $tag |
| 23 | * | 23 | * |
| 24 | * @property Article $article | 24 | * @property Article $article |
| 25 | * @property Language $lang | 25 | * @property Language $lang |
| @@ -40,9 +40,9 @@ class ArticleLang extends \yii\db\ActiveRecord | @@ -40,9 +40,9 @@ class ArticleLang extends \yii\db\ActiveRecord | ||
| 40 | public function rules() | 40 | public function rules() |
| 41 | { | 41 | { |
| 42 | return [ | 42 | return [ |
| 43 | - [['lang_id', 'text', 'name'], 'required'], | ||
| 44 | - [['lang_id', 'article_id'], 'integer'], | ||
| 45 | - [['text', 'seo_url', 'name', 'preview', 'meta_title', 'meta_descr', 'meta_keywords', 'h1_tag', 'tags'], 'string'] | 43 | + [['language_id', 'text', 'name'], 'required'], |
| 44 | + [['language_id', 'article_id'], 'integer'], | ||
| 45 | + [['text', 'seo_url', 'name', 'preview', 'meta_title', 'meta_descr', 'meta_keyword', 'h1_tag', 'tag'], 'string'] | ||
| 46 | ]; | 46 | ]; |
| 47 | } | 47 | } |
| 48 | 48 | ||
| @@ -52,8 +52,8 @@ class ArticleLang extends \yii\db\ActiveRecord | @@ -52,8 +52,8 @@ class ArticleLang extends \yii\db\ActiveRecord | ||
| 52 | public function attributeLabels() | 52 | public function attributeLabels() |
| 53 | { | 53 | { |
| 54 | return [ | 54 | return [ |
| 55 | - 'id' => Yii::t('app', 'ID'), | ||
| 56 | - 'lang_id' => Yii::t('app', 'Lang ID'), | 55 | + 'article_language_id' => Yii::t('app', 'ID'), |
| 56 | + 'language_id' => Yii::t('app', 'Lang ID'), | ||
| 57 | 'article_id' => Yii::t('app', 'Article ID'), | 57 | 'article_id' => Yii::t('app', 'Article ID'), |
| 58 | 'text' => Yii::t('app', 'Text'), | 58 | 'text' => Yii::t('app', 'Text'), |
| 59 | 'seo_url' => Yii::t('app', 'Seo Url'), | 59 | 'seo_url' => Yii::t('app', 'Seo Url'), |
| @@ -61,9 +61,9 @@ class ArticleLang extends \yii\db\ActiveRecord | @@ -61,9 +61,9 @@ class ArticleLang extends \yii\db\ActiveRecord | ||
| 61 | 'preview' => Yii::t('app', 'Preview'), | 61 | 'preview' => Yii::t('app', 'Preview'), |
| 62 | 'meta_title' => Yii::t('app', 'Meta Title'), | 62 | 'meta_title' => Yii::t('app', 'Meta Title'), |
| 63 | 'meta_descr' => Yii::t('app', 'Meta Descr'), | 63 | 'meta_descr' => Yii::t('app', 'Meta Descr'), |
| 64 | - 'meta_keywords' => Yii::t('app', 'Meta Keywords'), | 64 | + 'meta_keyword' => Yii::t('app', 'Meta Keywords'), |
| 65 | 'h1_tag' => Yii::t('app', 'H1 Tag'), | 65 | 'h1_tag' => Yii::t('app', 'H1 Tag'), |
| 66 | - 'tags' => Yii::t('app', 'Tags'), | 66 | + 'tag' => Yii::t('app', 'Tags'), |
| 67 | ]; | 67 | ]; |
| 68 | } | 68 | } |
| 69 | 69 | ||
| @@ -72,7 +72,7 @@ class ArticleLang extends \yii\db\ActiveRecord | @@ -72,7 +72,7 @@ class ArticleLang extends \yii\db\ActiveRecord | ||
| 72 | */ | 72 | */ |
| 73 | public function getArticle() | 73 | public function getArticle() |
| 74 | { | 74 | { |
| 75 | - return $this->hasOne(Article::className(), ['id' => 'article_id']); | 75 | + return $this->hasOne(Article::className(), ['article_id' => 'article_id']); |
| 76 | } | 76 | } |
| 77 | 77 | ||
| 78 | /** | 78 | /** |
| @@ -80,6 +80,6 @@ class ArticleLang extends \yii\db\ActiveRecord | @@ -80,6 +80,6 @@ class ArticleLang extends \yii\db\ActiveRecord | ||
| 80 | */ | 80 | */ |
| 81 | public function getLang() | 81 | public function getLang() |
| 82 | { | 82 | { |
| 83 | - return $this->hasOne(Language::className(), ['language_id' => 'lang_id']); | 83 | + return $this->hasOne(Language::className(), ['language_id' => 'language_id']); |
| 84 | } | 84 | } |
| 85 | } | 85 | } |
common/modules/blog/models/ArticleMedia.php
| @@ -9,13 +9,14 @@ use yii\web\UploadedFile; | @@ -9,13 +9,14 @@ use yii\web\UploadedFile; | ||
| 9 | /** | 9 | /** |
| 10 | * This is the model class for table "article_media". | 10 | * This is the model class for table "article_media". |
| 11 | * | 11 | * |
| 12 | - * @property integer $id | 12 | + * @property integer $article_media_id |
| 13 | * @property integer $article_id | 13 | * @property integer $article_id |
| 14 | * @property integer $media_id | 14 | * @property integer $media_id |
| 15 | * @property string $type | 15 | * @property string $type |
| 16 | * @property string $media_alt | 16 | * @property string $media_alt |
| 17 | * @property string $media_title | 17 | * @property string $media_title |
| 18 | * @property string $media_caption | 18 | * @property string $media_caption |
| 19 | + * @property integer $language_id | ||
| 19 | * | 20 | * |
| 20 | * @property Article $article | 21 | * @property Article $article |
| 21 | * @property Media $media | 22 | * @property Media $media |
| @@ -37,9 +38,9 @@ class ArticleMedia extends \yii\db\ActiveRecord | @@ -37,9 +38,9 @@ class ArticleMedia extends \yii\db\ActiveRecord | ||
| 37 | public function scenarios() | 38 | public function scenarios() |
| 38 | { | 39 | { |
| 39 | $scenarios = parent::scenarios(); | 40 | $scenarios = parent::scenarios(); |
| 40 | - $scenarios[self::SCENARIO_FULL] = ['id', 'article_id', 'media_id', 'type', 'media_alt', 'media_title', 'media_caption', 'imageFile']; | ||
| 41 | - $scenarios[self::SCENARIO_PREVIEW] = ['id', 'article_id', 'media_id', 'type', 'media_alt', 'media_title', 'media_caption', 'imageFile']; | ||
| 42 | - $scenarios[self::SCENARIO_ADDITIONAL] = ['id', 'article_id', 'media_id', 'type', 'imageFile']; | 41 | + $scenarios[self::SCENARIO_FULL] = ['article_media_id', 'article_id', 'media_id', 'type', 'media_alt', 'media_title', 'media_caption', 'imageFile', 'language_id']; |
| 42 | + $scenarios[self::SCENARIO_PREVIEW] = ['article_media_id', 'article_id', 'media_id', 'type', 'media_alt', 'media_title', 'media_caption', 'imageFile', 'language_id']; | ||
| 43 | + $scenarios[self::SCENARIO_ADDITIONAL] = ['article_media_id', 'article_id', 'media_id', 'type', 'imageFile', 'language_id']; | ||
| 43 | return $scenarios; | 44 | return $scenarios; |
| 44 | } | 45 | } |
| 45 | 46 | ||
| @@ -50,7 +51,7 @@ class ArticleMedia extends \yii\db\ActiveRecord | @@ -50,7 +51,7 @@ class ArticleMedia extends \yii\db\ActiveRecord | ||
| 50 | { | 51 | { |
| 51 | return [ | 52 | return [ |
| 52 | [['article_id', 'media_id'], 'required'], | 53 | [['article_id', 'media_id'], 'required'], |
| 53 | - [['article_id', 'media_id'], 'integer'], | 54 | + [['article_id', 'media_id', 'language_id'], 'integer'], |
| 54 | [['media_alt', 'media_title', 'media_caption'], 'string'], | 55 | [['media_alt', 'media_title', 'media_caption'], 'string'], |
| 55 | [['type'], 'string', 'max' => 10], | 56 | [['type'], 'string', 'max' => 10], |
| 56 | [['imageFile'], 'file', 'extensions' => 'png, gif, jpg, jpeg', 'skipOnEmpty' => true, 'on' => self::SCENARIO_FULL], | 57 | [['imageFile'], 'file', 'extensions' => 'png, gif, jpg, jpeg', 'skipOnEmpty' => true, 'on' => self::SCENARIO_FULL], |
| @@ -65,7 +66,7 @@ class ArticleMedia extends \yii\db\ActiveRecord | @@ -65,7 +66,7 @@ class ArticleMedia extends \yii\db\ActiveRecord | ||
| 65 | public function attributeLabels() | 66 | public function attributeLabels() |
| 66 | { | 67 | { |
| 67 | return [ | 68 | return [ |
| 68 | - 'id' => Yii::t('app', 'ID'), | 69 | + 'article_media_id' => Yii::t('app', 'ID'), |
| 69 | 'article_id' => Yii::t('app', 'Article ID'), | 70 | 'article_id' => Yii::t('app', 'Article ID'), |
| 70 | 'media_id' => Yii::t('app', 'Media ID'), | 71 | 'media_id' => Yii::t('app', 'Media ID'), |
| 71 | 'type' => Yii::t('app', 'Type'), | 72 | 'type' => Yii::t('app', 'Type'), |
| @@ -81,7 +82,7 @@ class ArticleMedia extends \yii\db\ActiveRecord | @@ -81,7 +82,7 @@ class ArticleMedia extends \yii\db\ActiveRecord | ||
| 81 | */ | 82 | */ |
| 82 | public function getArticle() | 83 | public function getArticle() |
| 83 | { | 84 | { |
| 84 | - return $this->hasOne(Article::className(), ['id' => 'article_id']); | 85 | + return $this->hasOne(Article::className(), ['article_id' => 'article_id']); |
| 85 | } | 86 | } |
| 86 | 87 | ||
| 87 | /** | 88 | /** |
| @@ -89,7 +90,7 @@ class ArticleMedia extends \yii\db\ActiveRecord | @@ -89,7 +90,7 @@ class ArticleMedia extends \yii\db\ActiveRecord | ||
| 89 | */ | 90 | */ |
| 90 | public function getMedia() | 91 | public function getMedia() |
| 91 | { | 92 | { |
| 92 | - return $this->hasOne(Media::className(), ['id' => 'media_id']); | 93 | + return $this->hasOne(Media::className(), ['media_id' => 'media_id']); |
| 93 | } | 94 | } |
| 94 | 95 | ||
| 95 | public function upload($article_id) | 96 | public function upload($article_id) |
| @@ -102,7 +103,7 @@ class ArticleMedia extends \yii\db\ActiveRecord | @@ -102,7 +103,7 @@ class ArticleMedia extends \yii\db\ActiveRecord | ||
| 102 | $media = new Media(); | 103 | $media = new Media(); |
| 103 | $media->imageFile = $image; | 104 | $media->imageFile = $image; |
| 104 | $media->upload(); | 105 | $media->upload(); |
| 105 | - $media_article->media_id = $media->id; | 106 | + $media_article->media_id = $media->media_id; |
| 106 | $ok = $media_article->save() && $ok; | 107 | $ok = $media_article->save() && $ok; |
| 107 | unset($media_article); | 108 | unset($media_article); |
| 108 | } | 109 | } |
| @@ -111,7 +112,7 @@ class ArticleMedia extends \yii\db\ActiveRecord | @@ -111,7 +112,7 @@ class ArticleMedia extends \yii\db\ActiveRecord | ||
| 111 | $media = new Media(); | 112 | $media = new Media(); |
| 112 | $media->imageFile = $this->imageFile; | 113 | $media->imageFile = $this->imageFile; |
| 113 | $media->upload(); | 114 | $media->upload(); |
| 114 | - $this->media_id = $media->id; | 115 | + $this->media_id = $media->media_id; |
| 115 | return $this->save(); | 116 | return $this->save(); |
| 116 | } | 117 | } |
| 117 | } | 118 | } |
| @@ -119,11 +120,11 @@ class ArticleMedia extends \yii\db\ActiveRecord | @@ -119,11 +120,11 @@ class ArticleMedia extends \yii\db\ActiveRecord | ||
| 119 | public function replace($article_id, $removeMedia = false) | 120 | public function replace($article_id, $removeMedia = false) |
| 120 | { | 121 | { |
| 121 | $this->article_id = $article_id; | 122 | $this->article_id = $article_id; |
| 122 | - if($removeMedia) { | ||
| 123 | - $article_media = ArticleMedia::find()->select('media_id')->where(['article_id' => $this->article_id, 'type' => $this->type])->column(); | 123 | + if($removeMedia && !$this->getIsNewRecord()) { |
| 124 | + $article_media = ArticleMedia::find()->select('media_id')->where(['article_id' => $this->article_id, 'type' => $this->type, 'language_id' => $this->language_id])->column(); | ||
| 124 | $media = array(); | 125 | $media = array(); |
| 125 | foreach($article_media as $media_id) { | 126 | foreach($article_media as $media_id) { |
| 126 | - $media[] = Media::findOne(['id' => $media_id]); | 127 | + $media[] = Media::findOne(['media_id' => $media_id]); |
| 127 | } | 128 | } |
| 128 | $media = array_unique($media); | 129 | $media = array_unique($media); |
| 129 | foreach($media as $one_media) { | 130 | foreach($media as $one_media) { |
| @@ -141,17 +142,17 @@ class ArticleMedia extends \yii\db\ActiveRecord | @@ -141,17 +142,17 @@ class ArticleMedia extends \yii\db\ActiveRecord | ||
| 141 | $media = new Media(); | 142 | $media = new Media(); |
| 142 | $media->imageFile = $image; | 143 | $media->imageFile = $image; |
| 143 | $media->upload(); | 144 | $media->upload(); |
| 144 | - $media_article->media_id = $media->id; | 145 | + $media_article->media_id = $media->media_id; |
| 145 | $ok = $media_article->save() && $ok; | 146 | $ok = $media_article->save() && $ok; |
| 146 | unset($media_article); | 147 | unset($media_article); |
| 147 | } | 148 | } |
| 148 | return $ok; | 149 | return $ok; |
| 149 | } elseif(!empty($this->imageFile)) { | 150 | } elseif(!empty($this->imageFile)) { |
| 150 | - ArticleMedia::deleteAll(['article_id' => $this->article_id, 'type' => $this->type]); | 151 | + ArticleMedia::deleteAll(['article_id' => $this->article_id, 'type' => $this->type, 'language_id' => $this->language_id]); |
| 151 | $media = new Media(); | 152 | $media = new Media(); |
| 152 | $media->imageFile = $this->imageFile; | 153 | $media->imageFile = $this->imageFile; |
| 153 | $media->upload(); | 154 | $media->upload(); |
| 154 | - $this->media_id = $media->id; | 155 | + $this->media_id = $media->media_id; |
| 155 | $this->setIsNewRecord(true); | 156 | $this->setIsNewRecord(true); |
| 156 | return $this->save(); | 157 | return $this->save(); |
| 157 | } | 158 | } |
common/modules/blog/models/ArticleToCategory.php
| @@ -8,7 +8,7 @@ use Yii; | @@ -8,7 +8,7 @@ use Yii; | ||
| 8 | * This is the model class for table "article_to_category". | 8 | * This is the model class for table "article_to_category". |
| 9 | * | 9 | * |
| 10 | * @property integer $article_id | 10 | * @property integer $article_id |
| 11 | - * @property integer $category_id | 11 | + * @property integer $article_category_id |
| 12 | * | 12 | * |
| 13 | * @property Article $article | 13 | * @property Article $article |
| 14 | * @property ArticleCategory $category | 14 | * @property ArticleCategory $category |
| @@ -29,7 +29,7 @@ class ArticleToCategory extends \yii\db\ActiveRecord | @@ -29,7 +29,7 @@ class ArticleToCategory extends \yii\db\ActiveRecord | ||
| 29 | public function rules() | 29 | public function rules() |
| 30 | { | 30 | { |
| 31 | return [ | 31 | return [ |
| 32 | - [['article_id', 'category_id'], 'integer'] | 32 | + [['article_id', 'article_category_id'], 'integer'] |
| 33 | ]; | 33 | ]; |
| 34 | } | 34 | } |
| 35 | 35 | ||
| @@ -40,7 +40,7 @@ class ArticleToCategory extends \yii\db\ActiveRecord | @@ -40,7 +40,7 @@ class ArticleToCategory extends \yii\db\ActiveRecord | ||
| 40 | { | 40 | { |
| 41 | return [ | 41 | return [ |
| 42 | 'article_id' => Yii::t('app', 'Article ID'), | 42 | 'article_id' => Yii::t('app', 'Article ID'), |
| 43 | - 'category_id' => Yii::t('app', 'Category ID'), | 43 | + 'article_category_id' => Yii::t('app', 'Category ID'), |
| 44 | ]; | 44 | ]; |
| 45 | } | 45 | } |
| 46 | 46 | ||
| @@ -49,7 +49,7 @@ class ArticleToCategory extends \yii\db\ActiveRecord | @@ -49,7 +49,7 @@ class ArticleToCategory extends \yii\db\ActiveRecord | ||
| 49 | */ | 49 | */ |
| 50 | public function getArticle() | 50 | public function getArticle() |
| 51 | { | 51 | { |
| 52 | - return $this->hasOne(Article::className(), ['id' => 'article_id']); | 52 | + return $this->hasOne(Article::className(), ['article_id' => 'article_id']); |
| 53 | } | 53 | } |
| 54 | 54 | ||
| 55 | /** | 55 | /** |
| @@ -57,6 +57,6 @@ class ArticleToCategory extends \yii\db\ActiveRecord | @@ -57,6 +57,6 @@ class ArticleToCategory extends \yii\db\ActiveRecord | ||
| 57 | */ | 57 | */ |
| 58 | public function getCategory() | 58 | public function getCategory() |
| 59 | { | 59 | { |
| 60 | - return $this->hasOne(ArticleCategory::className(), ['id' => 'category_id']); | 60 | + return $this->hasOne(ArticleCategory::className(), ['article_category_id' => 'article_category_id']); |
| 61 | } | 61 | } |
| 62 | } | 62 | } |
common/modules/blog/views/ajax/_article_form.php
| @@ -3,31 +3,36 @@ | @@ -3,31 +3,36 @@ | ||
| 3 | use yii\bootstrap\ActiveField; | 3 | use yii\bootstrap\ActiveField; |
| 4 | use mihaildev\ckeditor\CKEditor; | 4 | use mihaildev\ckeditor\CKEditor; |
| 5 | 5 | ||
| 6 | -$form = \yii\bootstrap\ActiveForm::begin(); | 6 | +if(empty($form)) { |
| 7 | + $new_form = true; | ||
| 8 | + $form = \yii\bootstrap\ActiveForm::begin(); | ||
| 9 | +} | ||
| 7 | ?> | 10 | ?> |
| 8 | <div role="" class="tab-pane active ajax-loaded" id="<?=$widget_id?>-<?=$model->language_id?>"> | 11 | <div role="" class="tab-pane active ajax-loaded" id="<?=$widget_id?>-<?=$model->language_id?>"> |
| 9 | 12 | ||
| 10 | - <?= (new ActiveField(['model' => $article_lang, 'attribute' => "[$model->language_id]lang_id"]))->label(false)->hiddenInput(['value' => $model->language_id]) ?> | 13 | + <?= (new ActiveField(['model' => $model, 'attribute' => "[$model->language_id]language_id"]))->label(false)->hiddenInput(['value' => $model->language_id]) ?> |
| 11 | 14 | ||
| 12 | - <?= (new ActiveField(['model' => $article_lang, 'attribute' => "[$model->language_id]text", 'form' => $form]))->widget(CKEditor::className(),['editorOptions' => [ 'preset' => 'full', 'inline' => false, ]]); ?> | 15 | + <?= (new ActiveField(['model' => $model, 'attribute' => "[$model->language_id]text", 'form' => $form]))->widget(CKEditor::className(),['editorOptions' => [ 'preset' => 'full', 'inline' => false, ]]); ?> |
| 13 | 16 | ||
| 14 | - <?= (new ActiveField(['model' => $article_lang, 'attribute' => "[$model->language_id]preview", 'form' => $form]))->widget(CKEditor::className(),['editorOptions' => [ 'preset' => 'full', 'inline' => false, ]]); ?> | 17 | + <?= (new ActiveField(['model' => $model, 'attribute' => "[$model->language_id]preview", 'form' => $form]))->widget(CKEditor::className(),['editorOptions' => [ 'preset' => 'full', 'inline' => false, ]]); ?> |
| 15 | 18 | ||
| 16 | - <?= (new ActiveField(['model' => $article_lang, 'attribute' => "[$model->language_id]seo_url"]))->textInput() ?> | 19 | + <?= (new ActiveField(['model' => $model, 'attribute' => "[$model->language_id]seo_url"]))->textInput() ?> |
| 17 | 20 | ||
| 18 | - <?= (new ActiveField(['model' => $article_lang, 'attribute' => "[$model->language_id]name"]))->textInput() ?> | 21 | + <?= (new ActiveField(['model' => $model, 'attribute' => "[$model->language_id]name"]))->textInput() ?> |
| 19 | 22 | ||
| 20 | - <?= (new ActiveField(['model' => $article_lang, 'attribute' => "[$model->language_id]meta_title"]))->textInput() ?> | 23 | + <?= (new ActiveField(['model' => $model, 'attribute' => "[$model->language_id]meta_title"]))->textInput() ?> |
| 21 | 24 | ||
| 22 | - <?= (new ActiveField(['model' => $article_lang, 'attribute' => "[$model->language_id]meta_descr"]))->textarea() ?> | 25 | + <?= (new ActiveField(['model' => $model, 'attribute' => "[$model->language_id]meta_descr"]))->textarea() ?> |
| 23 | 26 | ||
| 24 | - <?= (new ActiveField(['model' => $article_lang, 'attribute' => "[$model->language_id]meta_keywords"]))->textInput() ?> | 27 | + <?= (new ActiveField(['model' => $model, 'attribute' => "[$model->language_id]meta_keyword"]))->textInput() ?> |
| 25 | 28 | ||
| 26 | - <?= (new ActiveField(['model' => $article_lang, 'attribute' => "[$model->language_id]h1_tag"]))->textInput() ?> | 29 | + <?= (new ActiveField(['model' => $model, 'attribute' => "[$model->language_id]h1_tag"]))->textInput() ?> |
| 27 | 30 | ||
| 28 | - <?= (new ActiveField(['model' => $article_lang, 'attribute' => "[$model->language_id]tags"]))->textInput() ?> | 31 | + <?= (new ActiveField(['model' => $model, 'attribute' => "[$model->language_id]tag"]))->textInput() ?> |
| 29 | 32 | ||
| 30 | </div> | 33 | </div> |
| 31 | <?php | 34 | <?php |
| 32 | -$form->end(); | 35 | + if($new_form) { |
| 36 | + $form->end(); | ||
| 37 | + } | ||
| 33 | ?> | 38 | ?> |
common/modules/blog/views/ajax/_article_media_form.php
0 → 100644
| 1 | +<?php | ||
| 2 | + | ||
| 3 | +use yii\bootstrap\ActiveField; | ||
| 4 | +use mihaildev\ckeditor\CKEditor; | ||
| 5 | + | ||
| 6 | +$form = \yii\bootstrap\ActiveForm::begin(); | ||
| 7 | +?> | ||
| 8 | +<div role="" class="tab-pane active ajax-loaded" id="<?=$widget_id?>-<?=$model->language_id?>"> | ||
| 9 | + | ||
| 10 | + <?= (new ActiveField(['model' => $article_lang, 'attribute' => "[$model->language_id][$type]language_id"]))->label(false)->hiddenInput(['value' => $model->language_id]) ?> | ||
| 11 | + | ||
| 12 | + <?= (new ActiveField(['model' => $article_lang, 'attribute' => "[$model->language_id][$type]imageFile"]))->fileInput(['class' => 'image_inputs_field']) ?> | ||
| 13 | + | ||
| 14 | +</div> | ||
| 15 | +<?php | ||
| 16 | +$form->end(); | ||
| 17 | +?> |
common/modules/blog/views/ajax/_category_form.php
| @@ -7,7 +7,7 @@ $form = \yii\bootstrap\ActiveForm::begin(); | @@ -7,7 +7,7 @@ $form = \yii\bootstrap\ActiveForm::begin(); | ||
| 7 | ?> | 7 | ?> |
| 8 | <div role="" class="tab-pane active ajax-loaded" id="<?=$widget_id?>-<?=$model->language_id?>"> | 8 | <div role="" class="tab-pane active ajax-loaded" id="<?=$widget_id?>-<?=$model->language_id?>"> |
| 9 | 9 | ||
| 10 | - <?= (new ActiveField(['model' => $category_lang, 'attribute' => "[$model->language_id]lang_id"]))->label(false)->hiddenInput(['value' => $model->language_id]) ?> | 10 | + <?= (new ActiveField(['model' => $category_lang, 'attribute' => "[$model->language_id]language_id"]))->label(false)->hiddenInput(['value' => $model->language_id]) ?> |
| 11 | 11 | ||
| 12 | <?= (new ActiveField(['model' => $category_lang, 'attribute' => "[$model->language_id]text", 'form' => $form]))->widget(CKEditor::className(),['editorOptions' => [ 'preset' => 'full', 'inline' => false, ]]); ?> | 12 | <?= (new ActiveField(['model' => $category_lang, 'attribute' => "[$model->language_id]text", 'form' => $form]))->widget(CKEditor::className(),['editorOptions' => [ 'preset' => 'full', 'inline' => false, ]]); ?> |
| 13 | 13 | ||
| @@ -21,11 +21,11 @@ $form = \yii\bootstrap\ActiveForm::begin(); | @@ -21,11 +21,11 @@ $form = \yii\bootstrap\ActiveForm::begin(); | ||
| 21 | 21 | ||
| 22 | <?= (new ActiveField(['model' => $category_lang, 'attribute' => "[$model->language_id]meta_descr"]))->textarea() ?> | 22 | <?= (new ActiveField(['model' => $category_lang, 'attribute' => "[$model->language_id]meta_descr"]))->textarea() ?> |
| 23 | 23 | ||
| 24 | - <?= (new ActiveField(['model' => $category_lang, 'attribute' => "[$model->language_id]meta_keywords"]))->textInput() ?> | 24 | + <?= (new ActiveField(['model' => $category_lang, 'attribute' => "[$model->language_id]meta_keyword"]))->textInput() ?> |
| 25 | 25 | ||
| 26 | <?= (new ActiveField(['model' => $category_lang, 'attribute' => "[$model->language_id]h1_tag"]))->textInput() ?> | 26 | <?= (new ActiveField(['model' => $category_lang, 'attribute' => "[$model->language_id]h1_tag"]))->textInput() ?> |
| 27 | 27 | ||
| 28 | - <?= (new ActiveField(['model' => $category_lang, 'attribute' => "[$model->language_id]tags"]))->textInput() ?> | 28 | + <?= (new ActiveField(['model' => $category_lang, 'attribute' => "[$model->language_id]tag"]))->textInput() ?> |
| 29 | 29 | ||
| 30 | </div> | 30 | </div> |
| 31 | <?php | 31 | <?php |
common/modules/blog/views/article/_form.php
| 1 | <?php | 1 | <?php |
| 2 | use common\modules\blog\models\ArticleCategory; | 2 | use common\modules\blog\models\ArticleCategory; |
| 3 | +use common\modules\blog\models\ArticleMedia; | ||
| 3 | use common\widgets\Multilang; | 4 | use common\widgets\Multilang; |
| 4 | -use yii\bootstrap\ActiveForm; | 5 | + use common\widgets\Multilanguage; |
| 6 | + use yii\bootstrap\ActiveForm; | ||
| 5 | use common\modules\blog\models\Article; | 7 | use common\modules\blog\models\Article; |
| 6 | use yii\bootstrap\Html; | 8 | use yii\bootstrap\Html; |
| 7 | use mihaildev\ckeditor\CKEditor; | 9 | use mihaildev\ckeditor\CKEditor; |
| @@ -18,70 +20,108 @@ $uploaddir = \Yii::getAlias('@saveImageDir'); | @@ -18,70 +20,108 @@ $uploaddir = \Yii::getAlias('@saveImageDir'); | ||
| 18 | 20 | ||
| 19 | <?= $form->field($article, 'code')->hint(Yii::t('app', 'Insensitive latin non-space'))->textInput() ?> | 21 | <?= $form->field($article, 'code')->hint(Yii::t('app', 'Insensitive latin non-space'))->textInput() ?> |
| 20 | 22 | ||
| 21 | - <?= $form->field($article, 'tags')->hint(Yii::t('app', 'Comma-separated'))->textInput() ?> | 23 | + <?= $form->field($article, 'tag')->hint(Yii::t('app', 'Comma-separated'))->textInput() ?> |
| 22 | 24 | ||
| 23 | <?= $form->field($article, 'sort')->input('number') ?> | 25 | <?= $form->field($article, 'sort')->input('number') ?> |
| 24 | 26 | ||
| 25 | - <?= $form->field($article, 'parent_id') | ||
| 26 | - ->dropDownList(Article::findArticleDropdown($article->id), ['prompt' => Yii::t('app', 'Select parent')]) ?> | 27 | + <?= $form->field($article, 'article_pid') |
| 28 | + ->dropDownList(Article::findArticleDropdown($article->article_id), ['prompt' => Yii::t('app', 'Select parent')]) ?> | ||
| 27 | 29 | ||
| 28 | <?= $form->field($article, 'articleCategoriesArray') | 30 | <?= $form->field($article, 'articleCategoriesArray') |
| 29 | ->dropDownList(ArticleCategory::findArticleCategoryDropdown(NULL), ['multiple' => 'multiple'])->label(\Yii::t('app', 'Article Categories Array')); ?> | 31 | ->dropDownList(ArticleCategory::findArticleCategoryDropdown(NULL), ['multiple' => 'multiple'])->label(\Yii::t('app', 'Article Categories Array')); ?> |
| 30 | 32 | ||
| 31 | - <?= $form->field($article, 'active')->checkbox() ?> | 33 | + <?= $form->field($article, 'status')->checkbox() ?> |
| 32 | 34 | ||
| 33 | <ul class="nav nav-tabs" id="image-tabs" role="tablist"> | 35 | <ul class="nav nav-tabs" id="image-tabs" role="tablist"> |
| 34 | - <?php | ||
| 35 | - $first = 1; | ||
| 36 | - foreach($images as $index => $image) { | ||
| 37 | - ?> | ||
| 38 | - <li role="image_inputs" class="<?php if($first) { echo 'active'; }?>" data-type="<?=$index?>"><a href="#image-<?=$index?>" aria-controls="image-<?=$index?>" role="tab" data-toggle="tab"><span><?= \Yii::t('app', $index)?></span></a></li> | ||
| 39 | - <?php | ||
| 40 | - $first = 0; | ||
| 41 | - } | ||
| 42 | - ?> | 36 | + <li role="image_inputs" class="active" data-type="full"><a href="#image-full" aria-controls="image-full" role="tab" data-toggle="tab"><span><?= \Yii::t('app', 'full')?></span></a></li> |
| 37 | + <li role="image_inputs" class="" data-type="preview"><a href="#image-preview" aria-controls="image-preview" role="tab" data-toggle="tab"><span><?= \Yii::t('app', 'preview')?></span></a></li> | ||
| 38 | + <li role="image_inputs" class="" data-type="additional"><a href="#image-additional" aria-controls="image-additional" role="tab" data-toggle="tab"><span><?= \Yii::t('app', 'additional')?></span></a></li> | ||
| 43 | </ul> | 39 | </ul> |
| 44 | <div class="tab-content image-tab-content"> | 40 | <div class="tab-content image-tab-content"> |
| 45 | - <?php | ||
| 46 | - $first = 1; | ||
| 47 | - foreach($images as $index => $image) { | 41 | + <div role="" class="tab-pane active main-tab" id="image-full"> |
| 42 | + <?php | ||
| 43 | + $imagelang = Multilang::begin([ | ||
| 44 | + 'ajaxpath' => Url::to(['/blog/ajax/article-media-form?type=full']), | ||
| 45 | + 'form' => $form, | ||
| 46 | + 'data_langs' => $article->getIsNewRecord()?$images:ArticleMedia::find()->where(['article_id' => $article->article_id, 'type' => 'full'])->indexBy('language_id')->all() | ||
| 47 | + ]); | ||
| 48 | + $first = 1; | ||
| 49 | + foreach($images as $lang => $value) { | ||
| 50 | + if(!array_key_exists('full', $value)) continue; | ||
| 51 | + ?> | ||
| 52 | + <div role="" class="tab-pane <?php if($first) { echo 'active main-tab'; } ?>" id="<?=$imagelang->id?>-<?=$lang?>"> | ||
| 53 | + <?php | ||
| 54 | + echo $form->field($images[$lang]['full'], "[{$lang}][full]language_id")->label(false)->hiddenInput(['value' => $lang]); | ||
| 55 | + echo $form->field($images[$lang]['full'], "[{$lang}][full]imageFile")->fileInput(['class' => 'image_inputs_field']); | ||
| 56 | + if(!empty($images[$lang]['full']->article_media_id)) { | ||
| 57 | + echo "<img src='/images/upload/{$images[$lang]['full']->media->hash}/original.{$images[$lang]['full']->media->extension}' width='100' class='image_inputs_prev'>"; | ||
| 58 | + } | ||
| 59 | + ?> | ||
| 60 | + </div> | ||
| 61 | + <?php | ||
| 62 | + $first = 0; | ||
| 63 | + } | ||
| 64 | + $imagelang->end(); | ||
| 48 | ?> | 65 | ?> |
| 49 | - <div role="" class="tab-pane <?php if($first) { echo 'active main-tab'; } ?>" id="image-<?=$index?>"> | ||
| 50 | - <?php if($index == 'additional') { | ||
| 51 | - echo $form->field(is_array($image)?$images[$index][0]:$images[$index], "[{$index}]imageFile[]")->fileInput(['multiple' => 'multiple', 'class' => 'image_inputs_field']); | ||
| 52 | - if(is_array($image) && count($image) > 1) { | ||
| 53 | - foreach($image as $oneindex => $oneimage) { | ||
| 54 | - if($oneindex) { | ||
| 55 | - ?> | ||
| 56 | - <div class="additional_image_container"> | ||
| 57 | - <img src='/images/upload/<?= $oneimage->media->hash ?>/original.<?= $oneimage->media->extension ?>' width='100'> | ||
| 58 | - <a | ||
| 59 | - href="<?= Url::to(['ajax/remove-image']) ?>" | ||
| 60 | - class="remove_image glyphicon glyphicon-remove-circle" | ||
| 61 | - data-params='<?= Json::encode(['article_media_id' => $oneimage->id, 'remove_media' => true]) ?>', | ||
| 62 | - ></a> | ||
| 63 | - </div> | ||
| 64 | - <?php | ||
| 65 | - } | ||
| 66 | - } | 66 | + </div> |
| 67 | + <div role="" class="tab-pane" id="image-preview"> | ||
| 68 | + <?php | ||
| 69 | + $imagelang = Multilang::begin([ | ||
| 70 | + 'ajaxpath' => Url::to(['/blog/ajax/article-media-form?type=preview']), | ||
| 71 | + 'form' => $form, | ||
| 72 | + 'data_langs' => $article->getIsNewRecord()?$images:ArticleMedia::find()->where(['article_id' => $article->article_id, 'type' => 'preview'])->indexBy('language_id')->all() | ||
| 73 | + ]); | ||
| 74 | + $first = 1; | ||
| 75 | + foreach($images as $lang => $value) { | ||
| 76 | + if(!array_key_exists('preview', $value)) continue; | ||
| 77 | + ?> | ||
| 78 | + <div role="" class="tab-pane <?php if($first) { echo 'active main-tab'; } ?>" id="<?=$imagelang->id?>-<?=$lang?>"> | ||
| 79 | + <?php | ||
| 80 | + echo $form->field($images[$lang]['preview'], "[{$lang}][preview]language_id")->label(false)->hiddenInput(['value' => $lang]); | ||
| 81 | + echo $form->field($images[$lang]['preview'], "[{$lang}][preview]imageFile")->fileInput(['class' => 'image_inputs_field']); | ||
| 82 | + if(!empty($images[$lang]['preview']->article_media_id)) { | ||
| 83 | + echo "<img src='/images/upload/{$images[$lang]['preview']->media->hash}/original.{$images[$lang]['preview']->media->extension}' width='100' class='image_inputs_prev'>"; | ||
| 67 | } | 84 | } |
| 68 | - } else { | ||
| 69 | - echo $form->field($images[$index], "[{$index}]imageFile")->fileInput(['class' => 'image_inputs_field']); | ||
| 70 | - if(!empty($image->id)) { | ||
| 71 | - echo "<img src='/images/upload/{$image->media->hash}/original.{$image->media->extension}' width='100' class='image_inputs_prev'>"; | 85 | + ?> |
| 86 | + </div> | ||
| 87 | + <?php | ||
| 88 | + $first = 0; | ||
| 89 | + } | ||
| 90 | + $imagelang->end(); | ||
| 91 | + ?> | ||
| 92 | + </div> | ||
| 93 | + <div role="" class="tab-pane" id="image-additional"> | ||
| 94 | + <?php | ||
| 95 | + echo $form->field(is_array($images[0]['additional'])?$images[0]['additional'][0]:$images[0]['additional'], "[0][additional]imageFile[]")->fileInput(['multiple' => 'multiple', 'class' => 'image_inputs_field']); | ||
| 96 | + if(is_array($images[0]['additional']) && count($images[0]['additional']) > 1) { | ||
| 97 | + foreach($images[0]['additional'] as $onefield => $oneimage) { | ||
| 98 | + if($onefield) { | ||
| 99 | + ?> | ||
| 100 | + <div class="additional_image_container"> | ||
| 101 | + <img src='/images/upload/<?= $oneimage->media->hash ?>/original.<?= $oneimage->media->extension ?>' width='100'> | ||
| 102 | + <a | ||
| 103 | + href="<?= Url::to(['ajax/remove-image']) ?>" | ||
| 104 | + class="remove_image glyphicon glyphicon-remove-circle" | ||
| 105 | + data-params='<?= Json::encode(['article_media_id' => $oneimage->article_media_id, 'remove_media' => true]) ?>', | ||
| 106 | + ></a> | ||
| 107 | + </div> | ||
| 108 | + <?php | ||
| 72 | } | 109 | } |
| 73 | } | 110 | } |
| 74 | - ?> | ||
| 75 | - </div> | ||
| 76 | - <?php | ||
| 77 | - $first = 0; | ||
| 78 | - } | ||
| 79 | - ?> | 111 | + } |
| 112 | + ?> | ||
| 113 | + </div> | ||
| 80 | </div> | 114 | </div> |
| 81 | 115 | ||
| 82 | <hr> | 116 | <hr> |
| 83 | 117 | ||
| 84 | <?php | 118 | <?php |
| 119 | + echo Multilanguage::widget([ | ||
| 120 | + 'data' => $article_langs, | ||
| 121 | + 'form' => $form, | ||
| 122 | + 'ajaxView' => '@common/modules/blog/views/ajax/_article_form', | ||
| 123 | + ]); | ||
| 124 | + /* | ||
| 85 | $multilang = Multilang::begin(['ajaxpath' => Url::to(['/blog/ajax/article-form']), 'form' => $form, 'data_langs' => $article_langs]); | 125 | $multilang = Multilang::begin(['ajaxpath' => Url::to(['/blog/ajax/article-form']), 'form' => $form, 'data_langs' => $article_langs]); |
| 86 | ?> | 126 | ?> |
| 87 | <?php | 127 | <?php |
| @@ -90,7 +130,7 @@ $uploaddir = \Yii::getAlias('@saveImageDir'); | @@ -90,7 +130,7 @@ $uploaddir = \Yii::getAlias('@saveImageDir'); | ||
| 90 | ?> | 130 | ?> |
| 91 | <div role="" class="tab-pane <?php if($first) { echo 'active main-tab'; } ?>" id="<?=$multilang->id?>-<?=$index?>"> | 131 | <div role="" class="tab-pane <?php if($first) { echo 'active main-tab'; } ?>" id="<?=$multilang->id?>-<?=$index?>"> |
| 92 | 132 | ||
| 93 | - <?= $form->field($article_langs[$index], "[$index]lang_id")->label(false)->hiddenInput(['value' => $index]) ?> | 133 | + <?= $form->field($article_langs[$index], "[$index]language_id")->label(false)->hiddenInput(['value' => $index]) ?> |
| 94 | 134 | ||
| 95 | <?= $form->field($article_langs[$index], "[$index]text")->widget(CKEditor::className(),['editorOptions' => [ 'preset' => 'full', 'inline' => false, ], ]); ?> | 135 | <?= $form->field($article_langs[$index], "[$index]text")->widget(CKEditor::className(),['editorOptions' => [ 'preset' => 'full', 'inline' => false, ], ]); ?> |
| 96 | 136 | ||
| @@ -117,6 +157,7 @@ $uploaddir = \Yii::getAlias('@saveImageDir'); | @@ -117,6 +157,7 @@ $uploaddir = \Yii::getAlias('@saveImageDir'); | ||
| 117 | ?> | 157 | ?> |
| 118 | <?php | 158 | <?php |
| 119 | $multilang->end(); | 159 | $multilang->end(); |
| 160 | + */ | ||
| 120 | ?> | 161 | ?> |
| 121 | 162 | ||
| 122 | <div class="form-group"> | 163 | <div class="form-group"> |
common/modules/blog/views/article/index.php
| @@ -8,12 +8,12 @@ use common\models\Language; | @@ -8,12 +8,12 @@ use common\models\Language; | ||
| 8 | echo GridView::widget([ | 8 | echo GridView::widget([ |
| 9 | 'dataProvider' => $dataProvider, | 9 | 'dataProvider' => $dataProvider, |
| 10 | 'columns' => [ | 10 | 'columns' => [ |
| 11 | - 'id', | 11 | + 'article_id', |
| 12 | 'code', | 12 | 'code', |
| 13 | - 'create_at', | 13 | + 'date_add', |
| 14 | [ | 14 | [ |
| 15 | 'value' => function($data) { | 15 | 'value' => function($data) { |
| 16 | - return $data->author0->firstname.' '.$data->author0->lastname; | 16 | + return $data->user->firstname.' '.$data->user->lastname; |
| 17 | }, | 17 | }, |
| 18 | 'header' => Yii::t('app', 'Author') | 18 | 'header' => Yii::t('app', 'Author') |
| 19 | ], | 19 | ], |
| @@ -21,7 +21,7 @@ echo GridView::widget([ | @@ -21,7 +21,7 @@ echo GridView::widget([ | ||
| 21 | 'class' => Column::className(), | 21 | 'class' => Column::className(), |
| 22 | 'header' => Yii::t('app', 'Name'), | 22 | 'header' => Yii::t('app', 'Name'), |
| 23 | 'content' => function($model, $key, $index, $column) { | 23 | 'content' => function($model, $key, $index, $column) { |
| 24 | - return $model->getArticleLangs()->where(['lang_id' => Language::getDefaultLang()->language_id])->one()->name; | 24 | + return $model->getArticleLangs()->where(['language_id' => Language::getDefaultLang()->language_id])->one()->name; |
| 25 | } | 25 | } |
| 26 | ], | 26 | ], |
| 27 | [ | 27 | [ |
common/modules/blog/views/category/_form.php
| 1 | <?php | 1 | <?php |
| 2 | +use common\modules\blog\models\ArticleCategoryMedia; | ||
| 2 | use common\widgets\Multilang; | 3 | use common\widgets\Multilang; |
| 3 | use yii\bootstrap\ActiveForm; | 4 | use yii\bootstrap\ActiveForm; |
| 4 | use common\modules\blog\models\ArticleCategory; | 5 | use common\modules\blog\models\ArticleCategory; |
| @@ -16,62 +17,94 @@ $uploaddir = \Yii::getAlias('@saveImageDir'); | @@ -16,62 +17,94 @@ $uploaddir = \Yii::getAlias('@saveImageDir'); | ||
| 16 | 17 | ||
| 17 | <?= $form->field($category, 'code')->hint(Yii::t('app', 'Insensitive latin non-space'))->textInput() ?> | 18 | <?= $form->field($category, 'code')->hint(Yii::t('app', 'Insensitive latin non-space'))->textInput() ?> |
| 18 | 19 | ||
| 19 | - <?= $form->field($category, 'tags')->hint(Yii::t('app', 'Comma-separated'))->textInput() ?> | 20 | + <?= $form->field($category, 'tag')->hint(Yii::t('app', 'Comma-separated'))->textInput() ?> |
| 20 | 21 | ||
| 21 | <?= $form->field($category, 'sort')->input('number') ?> | 22 | <?= $form->field($category, 'sort')->input('number') ?> |
| 22 | 23 | ||
| 23 | - <?= $form->field($category, 'parent_id') | ||
| 24 | - ->dropDownList(ArticleCategory::findArticleCategoryDropdown($category->id), ['prompt' => Yii::t('app', 'Select parent')]) ?> | 24 | + <?= $form->field($category, 'article_category_pid') |
| 25 | + ->dropDownList(ArticleCategory::findArticleCategoryDropdown($category->article_category_id), ['prompt' => Yii::t('app', 'Select parent')]) ?> | ||
| 25 | 26 | ||
| 26 | - <?= $form->field($category, 'active')->checkbox() ?> | 27 | + <?= $form->field($category, 'status')->checkbox() ?> |
| 27 | 28 | ||
| 28 | <ul class="nav nav-tabs" id="image-tabs" role="tablist"> | 29 | <ul class="nav nav-tabs" id="image-tabs" role="tablist"> |
| 29 | - <?php | ||
| 30 | - $first = 1; | ||
| 31 | - foreach($images as $index => $image) { | ||
| 32 | - ?> | ||
| 33 | - <li role="image_inputs" class="<?php if($first) { echo 'active'; }?>" data-type="<?=$index?>"><a href="#image-<?=$index?>" aria-controls="image-<?=$index?>" role="tab" data-toggle="tab"><span><?= \Yii::t('app', $index)?></span></a></li> | ||
| 34 | - <?php | ||
| 35 | - $first = 0; | ||
| 36 | - } | ||
| 37 | - ?> | 30 | + <li role="image_inputs" class="active" data-type="full"><a href="#image-full" aria-controls="image-full" role="tab" data-toggle="tab"><span><?= \Yii::t('app', 'full')?></span></a></li> |
| 31 | + <li role="image_inputs" class="" data-type="preview"><a href="#image-preview" aria-controls="image-preview" role="tab" data-toggle="tab"><span><?= \Yii::t('app', 'preview')?></span></a></li> | ||
| 32 | + <li role="image_inputs" class="" data-type="additional"><a href="#image-additional" aria-controls="image-additional" role="tab" data-toggle="tab"><span><?= \Yii::t('app', 'additional')?></span></a></li> | ||
| 38 | </ul> | 33 | </ul> |
| 39 | <div class="tab-content image-tab-content"> | 34 | <div class="tab-content image-tab-content"> |
| 40 | - <?php | ||
| 41 | - $first = 1; | ||
| 42 | - foreach($images as $index => $image) { | 35 | + <div role="" class="tab-pane active main-tab" id="image-full"> |
| 36 | + <?php | ||
| 37 | + $imagelang = Multilang::begin([ | ||
| 38 | + 'ajaxpath' => Url::to(['/blog/ajax/article-category-media-form?type=full']), | ||
| 39 | + 'form' => $form, | ||
| 40 | + 'data_langs' => $category->getIsNewRecord()?$images:ArticleCategoryMedia::find()->where(['article_category_id' => $category->article_category_id, 'type' => 'full'])->indexBy('language_id')->all() | ||
| 41 | + ]); | ||
| 42 | + $first = 1; | ||
| 43 | + foreach($images as $lang => $value) { | ||
| 44 | + if(!array_key_exists('full', $value)) continue; | ||
| 45 | + ?> | ||
| 46 | + <div role="" class="tab-pane <?php if($first) { echo 'active main-tab'; } ?>" id="<?=$imagelang->id?>-<?=$lang?>"> | ||
| 47 | + <?php | ||
| 48 | + echo $form->field($images[$lang]['full'], "[{$lang}][full]language_id")->label(false)->hiddenInput(['value' => $lang]); | ||
| 49 | + echo $form->field($images[$lang]['full'], "[{$lang}][full]imageFile")->fileInput(['class' => 'image_inputs_field']); | ||
| 50 | + if(!empty($images[$lang]['full']->article_category_media_id)) { | ||
| 51 | + echo "<img src='/images/upload/{$images[$lang]['full']->media->hash}/original.{$images[$lang]['full']->media->extension}' width='100' class='image_inputs_prev'>"; | ||
| 52 | + } | ||
| 53 | + ?> | ||
| 54 | + </div> | ||
| 55 | + <?php | ||
| 56 | + $first = 0; | ||
| 57 | + } | ||
| 58 | + $imagelang->end(); | ||
| 43 | ?> | 59 | ?> |
| 44 | - <div role="" class="tab-pane <?php if($first) { echo 'active main-tab'; } ?>" id="image-<?=$index?>"> | ||
| 45 | - <?php if($index == 'additional') { | ||
| 46 | - echo $form->field(is_array($image)?$images[$index][0]:$images[$index], "[{$index}]imageFile[]")->fileInput(['multiple' => 'multiple', 'class' => 'image_inputs_field']); | ||
| 47 | - if(is_array($image) && count($image) > 1) { | ||
| 48 | - foreach($image as $oneindex => $oneimage) { | ||
| 49 | - if($oneindex) { | ||
| 50 | - ?> | ||
| 51 | - <div class="additional_image_container"> | ||
| 52 | - <img src='/images/upload/<?= $oneimage->media->hash ?>/original.<?= $oneimage->media->extension ?>' width='100'> | ||
| 53 | - <a | ||
| 54 | - href="<?= Url::to(['ajax/remove-image-category']) ?>" | ||
| 55 | - class="remove_image glyphicon glyphicon-remove-circle" | ||
| 56 | - data-params='<?= Json::encode(['category_media_id' => $oneimage->id, 'remove_media' => true]) ?>', | ||
| 57 | - ></a> | ||
| 58 | - </div> | ||
| 59 | - <?php | ||
| 60 | - } | ||
| 61 | - } | 60 | + </div> |
| 61 | + <div role="" class="tab-pane" id="image-preview"> | ||
| 62 | + <?php | ||
| 63 | + $imagelang = Multilang::begin([ | ||
| 64 | + 'ajaxpath' => Url::to(['/blog/ajax/article-category-media-form?type=preview']), | ||
| 65 | + 'form' => $form, | ||
| 66 | + 'data_langs' => $category->getIsNewRecord()?$images:ArticleCategoryMedia::find()->where(['article_category_id' => $category->article_category_id, 'type' => 'preview'])->indexBy('language_id')->all() | ||
| 67 | + ]); | ||
| 68 | + $first = 1; | ||
| 69 | + foreach($images as $lang => $value) { | ||
| 70 | + if(!array_key_exists('preview', $value)) continue; | ||
| 71 | + ?> | ||
| 72 | + <div role="" class="tab-pane <?php if($first) { echo 'active main-tab'; } ?>" id="<?=$imagelang->id?>-<?=$lang?>"> | ||
| 73 | + <?php | ||
| 74 | + echo $form->field($images[$lang]['preview'], "[{$lang}][preview]language_id")->label(false)->hiddenInput(['value' => $lang]); | ||
| 75 | + echo $form->field($images[$lang]['preview'], "[{$lang}][preview]imageFile")->fileInput(['class' => 'image_inputs_field']); | ||
| 76 | + if(!empty($images[$lang]['preview']->article_category_media_id)) { | ||
| 77 | + echo "<img src='/images/upload/{$images[$lang]['preview']->media->hash}/original.{$images[$lang]['preview']->media->extension}' width='100' class='image_inputs_prev'>"; | ||
| 62 | } | 78 | } |
| 63 | - } else { | ||
| 64 | - echo $form->field($images[$index], "[{$index}]imageFile")->fileInput(['class' => 'image_inputs_field']); | ||
| 65 | - if(!empty($image->id)) { | ||
| 66 | - echo "<img src='/images/upload/{$image->media->hash}/original.{$image->media->extension}' width='100' class='image_inputs_prev'>"; | 79 | + ?> |
| 80 | + </div> | ||
| 81 | + <?php | ||
| 82 | + $first = 0; | ||
| 83 | + } | ||
| 84 | + $imagelang->end(); | ||
| 85 | + ?> | ||
| 86 | + </div> | ||
| 87 | + <div role="" class="tab-pane" id="image-additional"> | ||
| 88 | + <?php | ||
| 89 | + echo $form->field(is_array($images[0]['additional'])?$images[0]['additional'][0]:$images[0]['additional'], "[0][additional]imageFile[]")->fileInput(['multiple' => 'multiple', 'class' => 'image_inputs_field']); | ||
| 90 | + if(is_array($images[0]['additional']) && count($images[0]['additional']) > 1) { | ||
| 91 | + foreach($images[0]['additional'] as $onefield => $oneimage) { | ||
| 92 | + if($onefield) { | ||
| 93 | + ?> | ||
| 94 | + <div class="additional_image_container"> | ||
| 95 | + <img src='/images/upload/<?= $oneimage->media->hash ?>/original.<?= $oneimage->media->extension ?>' width='100'> | ||
| 96 | + <a | ||
| 97 | + href="<?= Url::to(['ajax/remove-image']) ?>" | ||
| 98 | + class="remove_image glyphicon glyphicon-remove-circle" | ||
| 99 | + data-params='<?= Json::encode(['article_category_media_id' => $oneimage->article_category_media_id, 'remove_media' => true]) ?>', | ||
| 100 | + ></a> | ||
| 101 | + </div> | ||
| 102 | + <?php | ||
| 67 | } | 103 | } |
| 68 | } | 104 | } |
| 69 | - ?> | ||
| 70 | - </div> | ||
| 71 | - <?php | ||
| 72 | - $first = 0; | ||
| 73 | - } | ||
| 74 | - ?> | 105 | + } |
| 106 | + ?> | ||
| 107 | + </div> | ||
| 75 | </div> | 108 | </div> |
| 76 | 109 | ||
| 77 | <hr> | 110 | <hr> |
| @@ -84,7 +117,7 @@ $uploaddir = \Yii::getAlias('@saveImageDir'); | @@ -84,7 +117,7 @@ $uploaddir = \Yii::getAlias('@saveImageDir'); | ||
| 84 | foreach($category_langs as $index => $category_lang) { | 117 | foreach($category_langs as $index => $category_lang) { |
| 85 | ?> | 118 | ?> |
| 86 | <div role="" class="tab-pane <?php if($first) { echo 'active main-tab'; } ?>" id="lang-<?=$index?>"> | 119 | <div role="" class="tab-pane <?php if($first) { echo 'active main-tab'; } ?>" id="lang-<?=$index?>"> |
| 87 | - <?= $form->field($category_langs[$index], "[$index]lang_id")->label(false)->hiddenInput(['value' => $index]) ?> | 120 | + <?= $form->field($category_langs[$index], "[$index]language_id")->label(false)->hiddenInput(['value' => $index]) ?> |
| 88 | 121 | ||
| 89 | <?= $form->field($category_langs[$index], "[$index]text")->widget(CKEditor::className(),['editorOptions' => [ 'preset' => 'full', 'inline' => false, ], ]); ?> | 122 | <?= $form->field($category_langs[$index], "[$index]text")->widget(CKEditor::className(),['editorOptions' => [ 'preset' => 'full', 'inline' => false, ], ]); ?> |
| 90 | 123 | ||
| @@ -98,11 +131,11 @@ $uploaddir = \Yii::getAlias('@saveImageDir'); | @@ -98,11 +131,11 @@ $uploaddir = \Yii::getAlias('@saveImageDir'); | ||
| 98 | 131 | ||
| 99 | <?= $form->field($category_langs[$index], "[$index]meta_descr")->textarea(); ?> | 132 | <?= $form->field($category_langs[$index], "[$index]meta_descr")->textarea(); ?> |
| 100 | 133 | ||
| 101 | - <?= $form->field($category_langs[$index], "[$index]meta_keywords")->textInput() ?> | 134 | + <?= $form->field($category_langs[$index], "[$index]meta_keyword")->textInput() ?> |
| 102 | 135 | ||
| 103 | <?= $form->field($category_langs[$index], "[$index]h1_tag")->textInput() ?> | 136 | <?= $form->field($category_langs[$index], "[$index]h1_tag")->textInput() ?> |
| 104 | 137 | ||
| 105 | - <?= $form->field($category_langs[$index], "[$index]tags")->textInput() ?> | 138 | + <?= $form->field($category_langs[$index], "[$index]tag")->textInput() ?> |
| 106 | 139 | ||
| 107 | </div> | 140 | </div> |
| 108 | <?php | 141 | <?php |
common/modules/blog/views/category/index.php
| @@ -7,15 +7,15 @@ use common\models\Language; | @@ -7,15 +7,15 @@ use common\models\Language; | ||
| 7 | echo GridView::widget([ | 7 | echo GridView::widget([ |
| 8 | 'dataProvider' => $dataProvider, | 8 | 'dataProvider' => $dataProvider, |
| 9 | 'columns' => [ | 9 | 'columns' => [ |
| 10 | - 'id', | 10 | + 'article_category_id', |
| 11 | 'code', | 11 | 'code', |
| 12 | - 'created_at', | ||
| 13 | - 'updated_at', | 12 | + 'date_add', |
| 13 | + 'date_update', | ||
| 14 | [ | 14 | [ |
| 15 | 'class' => Column::className(), | 15 | 'class' => Column::className(), |
| 16 | 'header' => Yii::t('app', 'Name'), | 16 | 'header' => Yii::t('app', 'Name'), |
| 17 | 'content' => function($model, $key, $index, $column) { | 17 | 'content' => function($model, $key, $index, $column) { |
| 18 | - return $model->getArticleCategoryLangs()->where(['lang_id' => Language::getDefaultLang()->language_id])->one()->name; | 18 | + return $model->getArticleCategoryLangs()->where(['language_id' => Language::getDefaultLang()->language_id])->one()->name; |
| 19 | } | 19 | } |
| 20 | ], | 20 | ], |
| 21 | [ | 21 | [ |
common/modules/blog/views/default/index.php
common/translation/ru/app.php
| @@ -58,9 +58,23 @@ return [ | @@ -58,9 +58,23 @@ return [ | ||
| 58 | 'Category update' => 'Редактирование категории', | 58 | 'Category update' => 'Редактирование категории', |
| 59 | 'Article create' => 'Создание статьи', | 59 | 'Article create' => 'Создание статьи', |
| 60 | 'Update category' => 'Редактирование категории', | 60 | 'Update category' => 'Редактирование категории', |
| 61 | - 'Select parent' => 'Выберать родителя', | 61 | + 'Select parent' => 'Выбрать родителя', |
| 62 | 'Blog' => 'Блог', | 62 | 'Blog' => 'Блог', |
| 63 | 'Static pages' => 'Статические страницы', | 63 | 'Static pages' => 'Статические страницы', |
| 64 | + 'Create Admin Menu' => 'Создать элемент меню', | ||
| 65 | + 'Admin Menus' => 'Административное меню', | ||
| 66 | + 'Hide Min' => 'Спрятать в свернутом', | ||
| 67 | + 'Path' => 'Путь', | ||
| 68 | + 'Params' => 'Параметры', | ||
| 69 | + 'Parent item' => 'Родительский элемент', | ||
| 70 | + 'Active Menu' => 'Активный', | ||
| 71 | + 'Not Active Menu' => 'Неактивный', | ||
| 72 | + 'Show Menu Min' => 'Отобразить', | ||
| 73 | + 'Hide Menu Min' => 'Спрятать', | ||
| 74 | + 'Update' => 'Редактировать', | ||
| 75 | + 'Delete' => 'Удалить', | ||
| 76 | + 'Settings categories' => 'Разделы настроек', | ||
| 77 | + 'Back' => 'Назад', | ||
| 64 | 78 | ||
| 65 | // Вова | 79 | // Вова |
| 66 | 'page' => 'Страница', | 80 | 'page' => 'Страница', |
| @@ -72,7 +86,7 @@ return [ | @@ -72,7 +86,7 @@ return [ | ||
| 72 | 'meta_description' => 'Meta Description', | 86 | 'meta_description' => 'Meta Description', |
| 73 | 'text' => 'Текст', | 87 | 'text' => 'Текст', |
| 74 | 'page_alias' => 'alias', | 88 | 'page_alias' => 'alias', |
| 75 | - 'lang_id' => 'ID языка', | 89 | + 'language_id' => 'ID языка', |
| 76 | 'common' => 'Общее', | 90 | 'common' => 'Общее', |
| 77 | 'lang' => 'Языковые переменные', | 91 | 'lang' => 'Языковые переменные', |
| 78 | 'termin' => 'Термин', | 92 | 'termin' => 'Термин', |
common/translation/uk/app.php
| @@ -14,7 +14,7 @@ return [ | @@ -14,7 +14,7 @@ return [ | ||
| 14 | 'meta_description' => 'Meta Description', | 14 | 'meta_description' => 'Meta Description', |
| 15 | 'text' => 'Текст', | 15 | 'text' => 'Текст', |
| 16 | 'page_alias' => 'alias', | 16 | 'page_alias' => 'alias', |
| 17 | - 'lang_id' => 'ID мови', | 17 | + 'language_id' => 'ID мови', |
| 18 | 'common' => 'Загальне', | 18 | 'common' => 'Загальне', |
| 19 | 'lang' => 'Мовні змінні', | 19 | 'lang' => 'Мовні змінні', |
| 20 | 'termin' => 'Термін', | 20 | 'termin' => 'Термін', |
| 1 | +<?php | ||
| 2 | +namespace common\widgets; | ||
| 3 | +use common\models\Language; | ||
| 4 | +use common\modules\blog\controllers\AjaxController; | ||
| 5 | +use yii\base\InvalidParamException; | ||
| 6 | +use yii\base\Widget; | ||
| 7 | +use yii\bootstrap\ActiveForm; | ||
| 8 | + | ||
| 9 | +class Multilanguage extends Widget | ||
| 10 | +{ | ||
| 11 | + public $id; | ||
| 12 | + | ||
| 13 | + public $model_name; | ||
| 14 | + | ||
| 15 | + public $table_name; | ||
| 16 | + | ||
| 17 | + public $langs; | ||
| 18 | + | ||
| 19 | + public $default_lang; | ||
| 20 | + | ||
| 21 | + public $data; | ||
| 22 | + | ||
| 23 | + public $handler = '/blog/ajax/multilang-form'; | ||
| 24 | + | ||
| 25 | + public $form; | ||
| 26 | + | ||
| 27 | + public $ajaxView; | ||
| 28 | + | ||
| 29 | + public function init() | ||
| 30 | + { | ||
| 31 | + parent::init(); | ||
| 32 | + $this->default_lang = Language::getDefaultLang(); | ||
| 33 | + if(empty($this->langs)) { | ||
| 34 | + $this->langs = Language::getActiveLanguages(); | ||
| 35 | + } | ||
| 36 | + if(empty($this->form)) { | ||
| 37 | + throw new InvalidParamException('Form must be set'); | ||
| 38 | + } | ||
| 39 | + if(empty($this->ajaxView)) { | ||
| 40 | + throw new InvalidParamException('Ajaxview must be set'); | ||
| 41 | + } | ||
| 42 | + if(empty($this->data) || !is_array($this->data)) { | ||
| 43 | + throw new InvalidParamException('Data must be set and be array'); | ||
| 44 | + } else { | ||
| 45 | + $first = 1; | ||
| 46 | + foreach ($this->data as $lang => $item) { | ||
| 47 | + if ($first) { | ||
| 48 | + $this->model_name = $item->className(); | ||
| 49 | + $this->table_name = $item->tableName(); | ||
| 50 | + $first = 0; | ||
| 51 | + } else { | ||
| 52 | + if($item->className() !== $this->model_name || $item->tableName() !== $this->table_name) { | ||
| 53 | + throw new InvalidParamException('Every data element must have the same class and table'); | ||
| 54 | + } | ||
| 55 | + } | ||
| 56 | + } | ||
| 57 | + } | ||
| 58 | + } | ||
| 59 | + | ||
| 60 | + public function run() | ||
| 61 | + { | ||
| 62 | + echo $this->render('multilanguage-begin', [ | ||
| 63 | + 'id' => $this->id, | ||
| 64 | + 'model_name' => $this->model_name, | ||
| 65 | + 'table_name' => $this->table_name, | ||
| 66 | + 'data' => $this->data, | ||
| 67 | + 'langs' => $this->langs, | ||
| 68 | + 'handler' => $this->handler, | ||
| 69 | + 'default_lang' => $this->default_lang, | ||
| 70 | + 'ajaxView' => $this->ajaxView, | ||
| 71 | + ]); | ||
| 72 | + foreach($this->data as $lang => $item) { | ||
| 73 | + $item->language_id = $lang; | ||
| 74 | + echo $this->render($this->ajaxView, ['model' => $item, 'form' => $this->form, 'widget_id' => $this->id]); | ||
| 75 | + } | ||
| 76 | + echo $this->render('multilanguage-end', [ | ||
| 77 | + 'id' => $this->id, | ||
| 78 | + 'model_name' => $this->model_name, | ||
| 79 | + 'table_name' => $this->table_name, | ||
| 80 | + 'data' => $this->data, | ||
| 81 | + 'langs' => $this->langs, | ||
| 82 | + 'handler' => $this->handler, | ||
| 83 | + 'default_lang' => $this->default_lang, | ||
| 84 | + 'ajaxView' => $this->ajaxView, | ||
| 85 | + ]); | ||
| 86 | + } | ||
| 87 | +} | ||
| 0 | \ No newline at end of file | 88 | \ No newline at end of file |
common/widgets/views/multilang-begin.php
| @@ -6,7 +6,7 @@ use yii\helpers\Url; | @@ -6,7 +6,7 @@ use yii\helpers\Url; | ||
| 6 | <?= Yii::t('app', 'Add language') ?> | 6 | <?= Yii::t('app', 'Add language') ?> |
| 7 | <span class="caret"></span> | 7 | <span class="caret"></span> |
| 8 | </button> | 8 | </button> |
| 9 | - <ul class="dropdown-menu f32" id="lang-<?=$id?>" aria-labelledby="<?=$id?>Menu"> | 9 | + <ul class="dropdown-menu f32 old" id="lang-<?=$id?>" aria-labelledby="<?=$id?>Menu"> |
| 10 | <?php foreach($langs as $index => $lang) { | 10 | <?php foreach($langs as $index => $lang) { |
| 11 | if(in_array($index, array_keys($data_langs))) continue; | 11 | if(in_array($index, array_keys($data_langs))) continue; |
| 12 | ?> | 12 | ?> |
| @@ -18,6 +18,7 @@ use yii\helpers\Url; | @@ -18,6 +18,7 @@ use yii\helpers\Url; | ||
| 18 | <?php | 18 | <?php |
| 19 | $first = 1; | 19 | $first = 1; |
| 20 | foreach($data_langs as $index => $data_lang) { | 20 | foreach($data_langs as $index => $data_lang) { |
| 21 | + if(!$index) continue; | ||
| 21 | ?> | 22 | ?> |
| 22 | <li role="lang_inputs" class="<?php if($first) { echo 'active'; }?>" data-lang="<?=$index?>"><a href="#<?=$id?>-<?=$index?>" aria-controls="<?=$id?>-<?=$index?>" role="tab" data-toggle="tab"><span class="flag <?=$langs[$index]->country_code?>"></span></a></li> | 23 | <li role="lang_inputs" class="<?php if($first) { echo 'active'; }?>" data-lang="<?=$index?>"><a href="#<?=$id?>-<?=$index?>" aria-controls="<?=$id?>-<?=$index?>" role="tab" data-toggle="tab"><span class="flag <?=$langs[$index]->country_code?>"></span></a></li> |
| 23 | <?php | 24 | <?php |
| 1 | +<?php | ||
| 2 | +use yii\helpers\Url; | ||
| 3 | +?> | ||
| 4 | +<div class="dropdown pull-right"> | ||
| 5 | + <button class="btn btn-default dropdown-toggle" type="button" id="<?=$id?>Lang" data-toggle="dropdown" aria-haspopup="true" aria-expanded="true"> | ||
| 6 | + <?= Yii::t('app', 'Add language') ?> | ||
| 7 | + <span class="caret"></span> | ||
| 8 | + </button> | ||
| 9 | + <ul class="dropdown-menu f32" id="lang-<?=$id?>" aria-labelledby="<?=$id?>Menu"> | ||
| 10 | + <?php foreach($langs as $index => $lang) { | ||
| 11 | + if(in_array($index, array_keys($data))) continue; | ||
| 12 | + ?> | ||
| 13 | + <li><a href="#<?=$id?>" data-lang="<?=$lang->language_id?>"><span class="flag <?=$lang->country_code?>"></span></a></li> | ||
| 14 | + <?php } ?> | ||
| 15 | + </ul> | ||
| 16 | +</div> | ||
| 17 | +<ul class="nav nav-tabs f32" id="<?=$id?>-tabs" role="tablist"> | ||
| 18 | + <?php | ||
| 19 | + foreach($data as $index => $data_lang) { | ||
| 20 | + if(!$index) continue; | ||
| 21 | + ?> | ||
| 22 | + <li role="lang_inputs" data-lang="<?=$index?>"><a href="#<?=$id?>-<?=$index?>" aria-controls="<?=$id?>-<?=$index?>" role="tab" data-toggle="tab"><span class="flag <?=$langs[$index]->country_code?>"></span></a></li> | ||
| 23 | + <?php | ||
| 24 | + } | ||
| 25 | + ?> | ||
| 26 | +</ul> | ||
| 27 | +<div class="tab-content lang-tab-content" id="tab-content-<?=$id?>"> | ||
| 28 | + |
| 1 | +<?php | ||
| 2 | +use yii\helpers\Url; | ||
| 3 | +?> | ||
| 4 | +</div> | ||
| 5 | +<script> | ||
| 6 | + if(typeof form === 'undefined') { | ||
| 7 | + var form = []; | ||
| 8 | + } | ||
| 9 | + form['<?=$id?>'] = {handler:'<?=$handler?>', view:'<?=$ajaxView?>', model: '<?=str_replace("\\", "\\\\", $model_name)?>'}; | ||
| 10 | +</script> | ||
| 0 | \ No newline at end of file | 11 | \ No newline at end of file |
db-migration/artbox_db.backup deleted
No preview for this file type
db-migration/yarik/db.zip deleted
No preview for this file type
No preview for this file type
No preview for this file type
db-migration/yarik/public.backup
No preview for this file type
frontend/config/main.php
| @@ -16,9 +16,7 @@ return [ | @@ -16,9 +16,7 @@ return [ | ||
| 16 | 'bootstrap' => ['log'], | 16 | 'bootstrap' => ['log'], |
| 17 | 'controllerNamespace' => 'frontend\controllers', | 17 | 'controllerNamespace' => 'frontend\controllers', |
| 18 | 'modules' => [ | 18 | 'modules' => [ |
| 19 | - 'blog' => [ | ||
| 20 | - 'class' => 'common\modules\blog\Module', | ||
| 21 | - ], | 19 | + |
| 22 | ], | 20 | ], |
| 23 | 'components' => [ | 21 | 'components' => [ |
| 24 | //'PageController'=>[ | 22 | //'PageController'=>[ |
frontend/controllers/OptionValuesController.php
| @@ -68,7 +68,7 @@ class OptionValuesController extends Controller | @@ -68,7 +68,7 @@ class OptionValuesController extends Controller | ||
| 68 | foreach($post['OptionValues']['option_value_text'] as $lang => $value) { | 68 | foreach($post['OptionValues']['option_value_text'] as $lang => $value) { |
| 69 | $models[$lang] = new OptionValues(); | 69 | $models[$lang] = new OptionValues(); |
| 70 | $models[$lang]->load(Yii::$app->request->post()); | 70 | $models[$lang]->load(Yii::$app->request->post()); |
| 71 | - $models[$lang]->option_lang_id = $lang; | 71 | + $models[$lang]->option_language_id = $lang; |
| 72 | $models[$lang]->option_value_text = $value; | 72 | $models[$lang]->option_value_text = $value; |
| 73 | if($first && $id) { | 73 | if($first && $id) { |
| 74 | $models[$lang]->option_value_parent = $id; | 74 | $models[$lang]->option_value_parent = $id; |
frontend/controllers/SiteController.php
| @@ -36,7 +36,7 @@ class SiteController extends Controller | @@ -36,7 +36,7 @@ class SiteController extends Controller | ||
| 36 | return [ | 36 | return [ |
| 37 | 'access' => [ | 37 | 'access' => [ |
| 38 | 'class' => AccessControl::className(), | 38 | 'class' => AccessControl::className(), |
| 39 | - 'only' => ['logout', 'signup'], | 39 | + 'only' => ['logout', 'signup', 'index'], |
| 40 | 'rules' => [ | 40 | 'rules' => [ |
| 41 | [ | 41 | [ |
| 42 | 'actions' => ['signup'], | 42 | 'actions' => ['signup'], |
| @@ -48,6 +48,11 @@ class SiteController extends Controller | @@ -48,6 +48,11 @@ class SiteController extends Controller | ||
| 48 | 'allow' => true, | 48 | 'allow' => true, |
| 49 | 'roles' => ['@'], | 49 | 'roles' => ['@'], |
| 50 | ], | 50 | ], |
| 51 | + [ | ||
| 52 | + 'actions' => ['index'], | ||
| 53 | + 'allow' => true, | ||
| 54 | + 'roles' => ['@'], | ||
| 55 | + ] | ||
| 51 | ], | 56 | ], |
| 52 | ], | 57 | ], |
| 53 | 'verbs' => [ | 58 | 'verbs' => [ |
| @@ -298,10 +303,10 @@ class SiteController extends Controller | @@ -298,10 +303,10 @@ class SiteController extends Controller | ||
| 298 | $option_values[$key] = new OptionValues(); | 303 | $option_values[$key] = new OptionValues(); |
| 299 | $option_values[$key]['option_value_id'] = $options_to_values[$key]->getAttribute('option_value_id'); | 304 | $option_values[$key]['option_value_id'] = $options_to_values[$key]->getAttribute('option_value_id'); |
| 300 | $option_values[$key]['option_value_text'] = $val['option_value']; | 305 | $option_values[$key]['option_value_text'] = $val['option_value']; |
| 301 | - if($options_to_values[$key]->option->getAttribute('option_translatable') == 0 || empty($val['option_lang_id'])) { | ||
| 302 | - $option_values[$key]['option_lang_id'] = 0; | 306 | + if($options_to_values[$key]->option->getAttribute('option_translatable') == 0 || empty($val['option_language_id'])) { |
| 307 | + $option_values[$key]['option_language_id'] = 0; | ||
| 303 | } else { | 308 | } else { |
| 304 | - $option_values[$key]['option_lang_id'] = $val['option_lang_id']; | 309 | + $option_values[$key]['option_language_id'] = $val['option_language_id']; |
| 305 | } | 310 | } |
| 306 | if(!$option_values[$key]->save()) { | 311 | if(!$option_values[$key]->save()) { |
| 307 | $options_to_values[$key]->delete(); | 312 | $options_to_values[$key]->delete(); |
frontend/models/Language.php
| @@ -61,6 +61,6 @@ class Language extends \yii\db\ActiveRecord | @@ -61,6 +61,6 @@ class Language extends \yii\db\ActiveRecord | ||
| 61 | */ | 61 | */ |
| 62 | public function getOptionValues() | 62 | public function getOptionValues() |
| 63 | { | 63 | { |
| 64 | - return $this->hasMany(OptionValues::className(), ['option_lang_id' => 'language_id']); | 64 | + return $this->hasMany(OptionValues::className(), ['option_language_id' => 'language_id']); |
| 65 | } | 65 | } |
| 66 | } | 66 | } |
frontend/models/LanguageLang.php
| @@ -9,7 +9,7 @@ use Yii; | @@ -9,7 +9,7 @@ use Yii; | ||
| 9 | * | 9 | * |
| 10 | * @property integer $language_id | 10 | * @property integer $language_id |
| 11 | * @property string $lang_title | 11 | * @property string $lang_title |
| 12 | - * @property integer $lang_id | 12 | + * @property integer $language_id |
| 13 | * | 13 | * |
| 14 | * @property Language $language | 14 | * @property Language $language |
| 15 | */ | 15 | */ |
| @@ -43,7 +43,7 @@ class LanguageLang extends \yii\db\ActiveRecord | @@ -43,7 +43,7 @@ class LanguageLang extends \yii\db\ActiveRecord | ||
| 43 | return [ | 43 | return [ |
| 44 | 'language_id' => Yii::t('app', 'Language ID'), | 44 | 'language_id' => Yii::t('app', 'Language ID'), |
| 45 | 'lang_title' => Yii::t('app', 'Lang Title'), | 45 | 'lang_title' => Yii::t('app', 'Lang Title'), |
| 46 | - 'lang_id' => Yii::t('app', 'Lang ID'), | 46 | + 'language_id' => Yii::t('app', 'Lang ID'), |
| 47 | ]; | 47 | ]; |
| 48 | } | 48 | } |
| 49 | 49 |
frontend/models/Option.php
| @@ -31,7 +31,7 @@ class Option extends \yii\db\ActiveRecord | @@ -31,7 +31,7 @@ class Option extends \yii\db\ActiveRecord | ||
| 31 | { | 31 | { |
| 32 | return [ | 32 | return [ |
| 33 | [['model', 'model_id', 'name', 'template'], 'required'], | 33 | [['model', 'model_id', 'name', 'template'], 'required'], |
| 34 | - [['model_id', 'parent_id'], 'integer'], | 34 | + [['model_id', 'option_pid'], 'integer'], |
| 35 | [['model', 'name', 'template'], 'string', 'max' => 200] | 35 | [['model', 'name', 'template'], 'string', 'max' => 200] |
| 36 | ]; | 36 | ]; |
| 37 | } | 37 | } |
| @@ -47,29 +47,30 @@ class Option extends \yii\db\ActiveRecord | @@ -47,29 +47,30 @@ class Option extends \yii\db\ActiveRecord | ||
| 47 | 'model_id' => Yii::t('app', 'Model ID'), | 47 | 'model_id' => Yii::t('app', 'Model ID'), |
| 48 | 'name' => Yii::t('app', 'Name'), | 48 | 'name' => Yii::t('app', 'Name'), |
| 49 | 'template' => Yii::t('app', 'Template'), | 49 | 'template' => Yii::t('app', 'Template'), |
| 50 | - 'parent_id' => Yii::t('app', 'Parent ID'), | ||
| 51 | - 'created_at' => Yii::t('app', 'Date created'), | 50 | + 'option_pid' => Yii::t('app', 'Parent ID'), |
| 51 | + 'date_add' => Yii::t('app', 'Date created'), | ||
| 52 | + 'translate' => Yii::t('app', 'Translatable'), | ||
| 52 | ]; | 53 | ]; |
| 53 | } | 54 | } |
| 54 | 55 | ||
| 55 | public function getLangs() { | 56 | public function getLangs() { |
| 56 | - return (new Language())->find()->where(['>', 'language_id', 0])->andWhere(['active' => 1])->asArray()->all(); | 57 | + return (new Language())->find()->where(['>', 'language_id', 0])->andWhere(['status' => 1])->asArray()->all(); |
| 57 | } | 58 | } |
| 58 | 59 | ||
| 59 | public static function change($id, $post, $modeldb, $model_id) { | 60 | public static function change($id, $post, $modeldb, $model_id) { |
| 60 | $models[$id] = Option::findOne($id); | 61 | $models[$id] = Option::findOne($id); |
| 61 | $modellang[$id] = array(); | 62 | $modellang[$id] = array(); |
| 62 | - $langs = OptionLang::findAll(['id' => $id]); | 63 | + $langs = OptionLang::findAll(['option_language_id' => $id]); |
| 63 | foreach($langs as $lang) { | 64 | foreach($langs as $lang) { |
| 64 | - $modellang[$id][$lang->lang_id] = $lang; | 65 | + $modellang[$id][$lang->language_id] = $lang; |
| 65 | } | 66 | } |
| 66 | - $children = (new Option())->find()->where(['parent_id' => $id])->all(); | 67 | + $children = (new Option())->find()->where(['option_pid' => $id])->all(); |
| 67 | foreach($children as $child) { | 68 | foreach($children as $child) { |
| 68 | $models[$child->option_id] = $child; | 69 | $models[$child->option_id] = $child; |
| 69 | $modellang[$child->option_id] = array(); | 70 | $modellang[$child->option_id] = array(); |
| 70 | - $langs = OptionLang::findAll(['id' =>$child->option_id]); | 71 | + $langs = OptionLang::findAll(['option_id' =>$child->option_id]); |
| 71 | foreach($langs as $lang) { | 72 | foreach($langs as $lang) { |
| 72 | - $modellang[$child->option_id][$lang->lang_id] = $lang; | 73 | + $modellang[$child->option_id][$lang->language_id] = $lang; |
| 73 | } | 74 | } |
| 74 | } | 75 | } |
| 75 | $ok = 1; | 76 | $ok = 1; |
| @@ -77,7 +78,7 @@ class Option extends \yii\db\ActiveRecord | @@ -77,7 +78,7 @@ class Option extends \yii\db\ActiveRecord | ||
| 77 | foreach($post['Option'] as $key => $option) { | 78 | foreach($post['Option'] as $key => $option) { |
| 78 | if(in_array($key, array('model', 'model_id'))) { continue; } | 79 | if(in_array($key, array('model', 'model_id'))) { continue; } |
| 79 | if(empty($option['value'][$models[$key]->name]) && !empty($option['lang'])) { | 80 | if(empty($option['value'][$models[$key]->name]) && !empty($option['lang'])) { |
| 80 | - foreach($option['lang'] as $lang_id => $lang) { | 81 | + foreach($option['lang'] as $language_id => $lang) { |
| 81 | if(!empty($lang)) { | 82 | if(!empty($lang)) { |
| 82 | $option['value'][$models[$key]->name] = $lang; | 83 | $option['value'][$models[$key]->name] = $lang; |
| 83 | break; | 84 | break; |
| @@ -91,16 +92,16 @@ class Option extends \yii\db\ActiveRecord | @@ -91,16 +92,16 @@ class Option extends \yii\db\ActiveRecord | ||
| 91 | $modellang[$key][0]->addError('value', 'Value must be set'); | 92 | $modellang[$key][0]->addError('value', 'Value must be set'); |
| 92 | } | 93 | } |
| 93 | if(!empty($option['lang'])) { | 94 | if(!empty($option['lang'])) { |
| 94 | - foreach($option['lang'] as $lang_id => $lang) { | ||
| 95 | - if(empty($modellang[$key][$lang_id])) { | ||
| 96 | - $modellang[$key][$lang_id] = new OptionLang(); | ||
| 97 | - $modellang[$key][$lang_id]->id = $models[$key]->option_id; | ||
| 98 | - $modellang[$key][$lang_id]->lang_id = $lang_id; | ||
| 99 | - $modellang[$key][$lang_id]->value = $lang; | 95 | + foreach($option['lang'] as $language_id => $lang) { |
| 96 | + if(empty($modellang[$key][$language_id])) { | ||
| 97 | + $modellang[$key][$language_id] = new OptionLang(); | ||
| 98 | + $modellang[$key][$language_id]->option_id = $models[$key]->option_id; | ||
| 99 | + $modellang[$key][$language_id]->language_id = $language_id; | ||
| 100 | + $modellang[$key][$language_id]->value = $lang; | ||
| 100 | } else { | 101 | } else { |
| 101 | - $modellang[$key][$lang_id]->value = $lang; | 102 | + $modellang[$key][$language_id]->value = $lang; |
| 102 | } | 103 | } |
| 103 | - if(!$modellang[$key][$lang_id]->save()) { | 104 | + if(!$modellang[$key][$language_id]->save()) { |
| 104 | $ok = 0; | 105 | $ok = 0; |
| 105 | } | 106 | } |
| 106 | } | 107 | } |
| @@ -146,7 +147,7 @@ class Option extends \yii\db\ActiveRecord | @@ -146,7 +147,7 @@ class Option extends \yii\db\ActiveRecord | ||
| 146 | $models[$index][$key]->translate = $option[$key]['translate']?1:0; | 147 | $models[$index][$key]->translate = $option[$key]['translate']?1:0; |
| 147 | $models[$index][$key]->name = $key; | 148 | $models[$index][$key]->name = $key; |
| 148 | if(!$first) { | 149 | if(!$first) { |
| 149 | - $models[$index][$key]->parent_id = $parentid; | 150 | + $models[$index][$key]->option_pid = $parentid; |
| 150 | } | 151 | } |
| 151 | $modelslang[$index][$key][0] = new OptionLang(); | 152 | $modelslang[$index][$key][0] = new OptionLang(); |
| 152 | if(!empty($option['lang'][$key])) { | 153 | if(!empty($option['lang'][$key])) { |
| @@ -161,16 +162,16 @@ class Option extends \yii\db\ActiveRecord | @@ -161,16 +162,16 @@ class Option extends \yii\db\ActiveRecord | ||
| 161 | if($first) { | 162 | if($first) { |
| 162 | $parentid = $models[$index][$key]->option_id; | 163 | $parentid = $models[$index][$key]->option_id; |
| 163 | } | 164 | } |
| 164 | - $modelslang[$index][$key][0]->id = $models[$index][$key]->option_id; | ||
| 165 | - $modelslang[$index][$key][0]->lang_id = 0; | 165 | + $modelslang[$index][$key][0]->option_id = $models[$index][$key]->option_id; |
| 166 | + $modelslang[$index][$key][0]->language_id = 0; | ||
| 166 | $modelslang[$index][$key][0]->value = $value; | 167 | $modelslang[$index][$key][0]->value = $value; |
| 167 | if($modelslang[$index][$key][0]->save()) { | 168 | if($modelslang[$index][$key][0]->save()) { |
| 168 | if(!empty($option['lang'][$key])) { | 169 | if(!empty($option['lang'][$key])) { |
| 169 | foreach($option['lang'][$key] as $code => $lang) { | 170 | foreach($option['lang'][$key] as $code => $lang) { |
| 170 | if(!empty($lang)) { | 171 | if(!empty($lang)) { |
| 171 | $modelslang[$index][$key][$code] = new OptionLang(); | 172 | $modelslang[$index][$key][$code] = new OptionLang(); |
| 172 | - $modelslang[$index][$key][$code]->id = $models[$index][$key]->option_id; | ||
| 173 | - $modelslang[$index][$key][$code]->lang_id = $code; | 173 | + $modelslang[$index][$key][$code]->option_id = $models[$index][$key]->option_id; |
| 174 | + $modelslang[$index][$key][$code]->language_id = $code; | ||
| 174 | $modelslang[$index][$key][$code]->value = $lang; | 175 | $modelslang[$index][$key][$code]->value = $lang; |
| 175 | if(!$modelslang[$index][$key][$code]->save()) { | 176 | if(!$modelslang[$index][$key][$code]->save()) { |
| 176 | $ok = 0; | 177 | $ok = 0; |
| @@ -187,8 +188,8 @@ class Option extends \yii\db\ActiveRecord | @@ -187,8 +188,8 @@ class Option extends \yii\db\ActiveRecord | ||
| 187 | foreach($option['lang'][$key] as $code => $lang) { | 188 | foreach($option['lang'][$key] as $code => $lang) { |
| 188 | if(!empty($lang)) { | 189 | if(!empty($lang)) { |
| 189 | $modelslang[$index][$key][$code] = new OptionLang(); | 190 | $modelslang[$index][$key][$code] = new OptionLang(); |
| 190 | - $modelslang[$index][$key][$code]->id = $models[$index][$key]->option_id; | ||
| 191 | - $modelslang[$index][$key][$code]->lang_id = $code; | 191 | + $modelslang[$index][$key][$code]->option_id = $models[$index][$key]->option_id; |
| 192 | + $modelslang[$index][$key][$code]->language_id = $code; | ||
| 192 | $modelslang[$index][$key][$code]->value = $lang; | 193 | $modelslang[$index][$key][$code]->value = $lang; |
| 193 | } | 194 | } |
| 194 | } | 195 | } |
| @@ -205,12 +206,12 @@ class Option extends \yii\db\ActiveRecord | @@ -205,12 +206,12 @@ class Option extends \yii\db\ActiveRecord | ||
| 205 | $newflag->model_id = $model_id; | 206 | $newflag->model_id = $model_id; |
| 206 | $newflag->name = 'is_new'; | 207 | $newflag->name = 'is_new'; |
| 207 | $newflag->template = 'checkbox'; | 208 | $newflag->template = 'checkbox'; |
| 208 | - $newflag->parent_id = $parentid; | 209 | + $newflag->option_pid = $parentid; |
| 209 | $newflag->translate = 0; | 210 | $newflag->translate = 0; |
| 210 | if($newflag->save()) { | 211 | if($newflag->save()) { |
| 211 | $newflaglang = new OptionLang(); | 212 | $newflaglang = new OptionLang(); |
| 212 | - $newflaglang->id = $newflag->option_id; | ||
| 213 | - $newflaglang->lang_id = 0; | 213 | + $newflaglang->option_id = $newflag->option_id; |
| 214 | + $newflaglang->language_id = 0; | ||
| 214 | $newflaglang->value = '1'; | 215 | $newflaglang->value = '1'; |
| 215 | if(!$newflaglang->save()) { | 216 | if(!$newflaglang->save()) { |
| 216 | $newflag->delete(); | 217 | $newflag->delete(); |
| @@ -242,19 +243,19 @@ class Option extends \yii\db\ActiveRecord | @@ -242,19 +243,19 @@ class Option extends \yii\db\ActiveRecord | ||
| 242 | } | 243 | } |
| 243 | 244 | ||
| 244 | public function getOptions() { | 245 | public function getOptions() { |
| 245 | - return $this->hasMany(Option::className(), ['parent_id' => 'option_id'])->indexBy('name'); | 246 | + return $this->hasMany(Option::className(), ['option_pid' => 'option_id'])->indexBy('name'); |
| 246 | } | 247 | } |
| 247 | 248 | ||
| 248 | public function getOption() { | 249 | public function getOption() { |
| 249 | - return $this->hasOne(Option::className(), ['option_id' => 'parent_id']); | 250 | + return $this->hasOne(Option::className(), ['option_id' => 'option_pid']); |
| 250 | } | 251 | } |
| 251 | 252 | ||
| 252 | public function getOptionLangs() { | 253 | public function getOptionLangs() { |
| 253 | - return $this->hasMany(OptionLang::className(), ['id' => 'option_id']); | 254 | + return $this->hasMany(OptionLang::className(), ['option_id' => 'option_id']); |
| 254 | } | 255 | } |
| 255 | 256 | ||
| 256 | public function getOptionDefaultLang($array = false) { | 257 | public function getOptionDefaultLang($array = false) { |
| 257 | - $query = $this->getOptionLangs()->where(['lang_id' => 0]); | 258 | + $query = $this->getOptionLangs()->where(['language_id' => 0]); |
| 258 | if($array) { | 259 | if($array) { |
| 259 | $query->asArray(); | 260 | $query->asArray(); |
| 260 | } | 261 | } |
frontend/models/OptionLang.php
| @@ -8,7 +8,7 @@ use Yii; | @@ -8,7 +8,7 @@ use Yii; | ||
| 8 | * This is the model class for table "option_lang". | 8 | * This is the model class for table "option_lang". |
| 9 | * | 9 | * |
| 10 | * @property integer $id | 10 | * @property integer $id |
| 11 | - * @property integer $lang_id | 11 | + * @property integer $language_id |
| 12 | * @property string $value | 12 | * @property string $value |
| 13 | */ | 13 | */ |
| 14 | class OptionLang extends \yii\db\ActiveRecord | 14 | class OptionLang extends \yii\db\ActiveRecord |
| @@ -27,8 +27,8 @@ class OptionLang extends \yii\db\ActiveRecord | @@ -27,8 +27,8 @@ class OptionLang extends \yii\db\ActiveRecord | ||
| 27 | public function rules() | 27 | public function rules() |
| 28 | { | 28 | { |
| 29 | return [ | 29 | return [ |
| 30 | - [['id', 'lang_id'], 'required'], | ||
| 31 | - [['id', 'lang_id'], 'integer'], | 30 | + [['option_id', 'language_id'], 'required'], |
| 31 | + [['option_id', 'language_id'], 'integer'], | ||
| 32 | [['value'], 'string'] | 32 | [['value'], 'string'] |
| 33 | ]; | 33 | ]; |
| 34 | } | 34 | } |
| @@ -39,8 +39,8 @@ class OptionLang extends \yii\db\ActiveRecord | @@ -39,8 +39,8 @@ class OptionLang extends \yii\db\ActiveRecord | ||
| 39 | public function attributeLabels() | 39 | public function attributeLabels() |
| 40 | { | 40 | { |
| 41 | return [ | 41 | return [ |
| 42 | - 'id' => Yii::t('app', 'ID'), | ||
| 43 | - 'lang_id' => Yii::t('app', 'Lang ID'), | 42 | + 'option_id' => Yii::t('app', 'ID'), |
| 43 | + 'language_id' => Yii::t('app', 'Lang ID'), | ||
| 44 | 'value' => Yii::t('app', 'Value'), | 44 | 'value' => Yii::t('app', 'Value'), |
| 45 | ]; | 45 | ]; |
| 46 | } | 46 | } |
frontend/models/OptionLangSearch.php
| @@ -18,7 +18,7 @@ class OptionLangSearch extends OptionLang | @@ -18,7 +18,7 @@ class OptionLangSearch extends OptionLang | ||
| 18 | public function rules() | 18 | public function rules() |
| 19 | { | 19 | { |
| 20 | return [ | 20 | return [ |
| 21 | - [['primary', 'id', 'lang_id'], 'integer'], | 21 | + [['option_language_id', 'option_id', 'language_id'], 'integer'], |
| 22 | [['value'], 'safe'], | 22 | [['value'], 'safe'], |
| 23 | ]; | 23 | ]; |
| 24 | } | 24 | } |
| @@ -56,9 +56,9 @@ class OptionLangSearch extends OptionLang | @@ -56,9 +56,9 @@ class OptionLangSearch extends OptionLang | ||
| 56 | } | 56 | } |
| 57 | 57 | ||
| 58 | $query->andFilterWhere([ | 58 | $query->andFilterWhere([ |
| 59 | - 'primary' => $this->primary, | ||
| 60 | - 'id' => $this->id, | ||
| 61 | - 'lang_id' => $this->lang_id, | 59 | + 'option_language_id' => $this->option_language_id, |
| 60 | + 'option_id' => $this->option_id, | ||
| 61 | + 'language_id' => $this->language_id, | ||
| 62 | ]); | 62 | ]); |
| 63 | 63 | ||
| 64 | $query->andFilterWhere(['like', 'value', $this->value]); | 64 | $query->andFilterWhere(['like', 'value', $this->value]); |
frontend/models/OptionSearch.php
| @@ -18,7 +18,7 @@ class OptionSearch extends Option | @@ -18,7 +18,7 @@ class OptionSearch extends Option | ||
| 18 | public function rules() | 18 | public function rules() |
| 19 | { | 19 | { |
| 20 | return [ | 20 | return [ |
| 21 | - [['option_id', 'model_id', 'parent_id'], 'integer'], | 21 | + [['option_id', 'model_id', 'option_pid'], 'integer'], |
| 22 | [['model', 'name', 'template'], 'safe'], | 22 | [['model', 'name', 'template'], 'safe'], |
| 23 | ]; | 23 | ]; |
| 24 | } | 24 | } |
| @@ -60,12 +60,12 @@ class OptionSearch extends Option | @@ -60,12 +60,12 @@ class OptionSearch extends Option | ||
| 60 | return $dataProvider; | 60 | return $dataProvider; |
| 61 | } | 61 | } |
| 62 | 62 | ||
| 63 | - $query->andWhere(['parent_id' => null]); | 63 | + $query->andWhere(['option_pid' => null]); |
| 64 | 64 | ||
| 65 | $query->andFilterWhere([ | 65 | $query->andFilterWhere([ |
| 66 | 'option_id' => $this->option_id, | 66 | 'option_id' => $this->option_id, |
| 67 | 'model_id' => $this->model_id, | 67 | 'model_id' => $this->model_id, |
| 68 | - 'parent_id' => $this->parent_id, | 68 | + 'option_pid' => $this->option_pid, |
| 69 | ]); | 69 | ]); |
| 70 | 70 | ||
| 71 | $query->andFilterWhere(['like', 'model', $this->model]) | 71 | $query->andFilterWhere(['like', 'model', $this->model]) |
frontend/models/OptionValues.php
| @@ -10,7 +10,7 @@ use Yii; | @@ -10,7 +10,7 @@ use Yii; | ||
| 10 | * @property integer $option_value_id | 10 | * @property integer $option_value_id |
| 11 | * @property string $option_key | 11 | * @property string $option_key |
| 12 | * @property string $option_value_text | 12 | * @property string $option_value_text |
| 13 | - * @property integer $option_lang_id | 13 | + * @property integer $option_language_id |
| 14 | * @property integer $option_value_parent | 14 | * @property integer $option_value_parent |
| 15 | * @property integer $option_user | 15 | * @property integer $option_user |
| 16 | * | 16 | * |
| @@ -33,7 +33,7 @@ class OptionValues extends \yii\db\ActiveRecord | @@ -33,7 +33,7 @@ class OptionValues extends \yii\db\ActiveRecord | ||
| 33 | { | 33 | { |
| 34 | return [ | 34 | return [ |
| 35 | [['option_key', 'option_value_text'], 'required'], | 35 | [['option_key', 'option_value_text'], 'required'], |
| 36 | - [['option_lang_id', 'option_value_parent', 'option_user'], 'integer'], | 36 | + [['option_language_id', 'option_value_parent', 'option_user'], 'integer'], |
| 37 | [['option_key'], 'string', 'max' => 200] | 37 | [['option_key'], 'string', 'max' => 200] |
| 38 | ]; | 38 | ]; |
| 39 | } | 39 | } |
| @@ -47,7 +47,7 @@ class OptionValues extends \yii\db\ActiveRecord | @@ -47,7 +47,7 @@ class OptionValues extends \yii\db\ActiveRecord | ||
| 47 | 'option_value_id' => Yii::t('app', 'Option Value ID'), | 47 | 'option_value_id' => Yii::t('app', 'Option Value ID'), |
| 48 | 'option_key' => Yii::t('app', 'Option Key'), | 48 | 'option_key' => Yii::t('app', 'Option Key'), |
| 49 | 'option_value_text' => Yii::t('app', 'Option Value Text'), | 49 | 'option_value_text' => Yii::t('app', 'Option Value Text'), |
| 50 | - 'option_lang_id' => Yii::t('app', 'Option Lang ID'), | 50 | + 'option_language_id' => Yii::t('app', 'Option Lang ID'), |
| 51 | 'option_value_parent' => Yii::t('app', 'Option Value Parent'), | 51 | 'option_value_parent' => Yii::t('app', 'Option Value Parent'), |
| 52 | 'option_user' => Yii::t('app', 'Option User'), | 52 | 'option_user' => Yii::t('app', 'Option User'), |
| 53 | ]; | 53 | ]; |
| @@ -58,7 +58,7 @@ class OptionValues extends \yii\db\ActiveRecord | @@ -58,7 +58,7 @@ class OptionValues extends \yii\db\ActiveRecord | ||
| 58 | */ | 58 | */ |
| 59 | public function getOptionLang() | 59 | public function getOptionLang() |
| 60 | { | 60 | { |
| 61 | - return $this->hasOne(Language::className(), ['language_id' => 'option_lang_id']); | 61 | + return $this->hasOne(Language::className(), ['language_id' => 'option_language_id']); |
| 62 | } | 62 | } |
| 63 | public function getLanguages() { | 63 | public function getLanguages() { |
| 64 | return (new LanguageLang())->find()->orderBy('language_id ASC')->asArray()->all(); | 64 | return (new LanguageLang())->find()->orderBy('language_id ASC')->asArray()->all(); |
frontend/models/OptionValuesSearch.php
| @@ -18,7 +18,7 @@ class OptionValuesSearch extends OptionValues | @@ -18,7 +18,7 @@ class OptionValuesSearch extends OptionValues | ||
| 18 | public function rules() | 18 | public function rules() |
| 19 | { | 19 | { |
| 20 | return [ | 20 | return [ |
| 21 | - [['option_value_id', 'option_lang_id', 'option_value_parent', 'option_user'], 'integer'], | 21 | + [['option_value_id', 'option_language_id', 'option_value_parent', 'option_user'], 'integer'], |
| 22 | [['option_key', 'option_value_text'], 'safe'], | 22 | [['option_key', 'option_value_text'], 'safe'], |
| 23 | ]; | 23 | ]; |
| 24 | } | 24 | } |
| @@ -57,7 +57,7 @@ class OptionValuesSearch extends OptionValues | @@ -57,7 +57,7 @@ class OptionValuesSearch extends OptionValues | ||
| 57 | 57 | ||
| 58 | $query->andFilterWhere([ | 58 | $query->andFilterWhere([ |
| 59 | 'option_value_id' => $this->option_value_id, | 59 | 'option_value_id' => $this->option_value_id, |
| 60 | - 'option_lang_id' => $this->option_lang_id, | 60 | + 'option_language_id' => $this->option_language_id, |
| 61 | 'option_value_parent' => $this->option_value_parent, | 61 | 'option_value_parent' => $this->option_value_parent, |
| 62 | 'option_user' => $this->option_user, | 62 | 'option_user' => $this->option_user, |
| 63 | ]); | 63 | ]); |
frontend/views/option-values/_form.php
| @@ -17,7 +17,7 @@ use yii\widgets\ActiveForm; | @@ -17,7 +17,7 @@ use yii\widgets\ActiveForm; | ||
| 17 | <div class="optionvalues-option_value_text-active"> | 17 | <div class="optionvalues-option_value_text-active"> |
| 18 | <?= $form->field($model, 'option_value_text', ['enableClientValidation' => false])->label($model->getAttributeLabel('option_key').' | <span class="glyphicon glyphicon-globe add-langs"></span>')->textInput() ?> | 18 | <?= $form->field($model, 'option_value_text', ['enableClientValidation' => false])->label($model->getAttributeLabel('option_key').' | <span class="glyphicon glyphicon-globe add-langs"></span>')->textInput() ?> |
| 19 | 19 | ||
| 20 | - <?= $form->field($model, 'option_lang_id')->dropDownList($model->getDropDownArray()) ?> | 20 | + <?= $form->field($model, 'option_language_id')->dropDownList($model->getDropDownArray()) ?> |
| 21 | </div> | 21 | </div> |
| 22 | 22 | ||
| 23 | <?= $form->field($model, 'option_value_parent')->dropDownList($model->getUserOptionsArray()) ?> | 23 | <?= $form->field($model, 'option_value_parent')->dropDownList($model->getUserOptionsArray()) ?> |
| @@ -46,7 +46,7 @@ use yii\widgets\ActiveForm; | @@ -46,7 +46,7 @@ use yii\widgets\ActiveForm; | ||
| 46 | $(document).on('click', '.add-langs', function() { | 46 | $(document).on('click', '.add-langs', function() { |
| 47 | var group = $(this).parent().attr('for'); | 47 | var group = $(this).parent().attr('for'); |
| 48 | $(this).parent().parent().appendTo('.reserved_inputs'); | 48 | $(this).parent().parent().appendTo('.reserved_inputs'); |
| 49 | - $('.field-optionvalues-option_lang_id').appendTo('.reserved_inputs'); | 49 | + $('.field-optionvalues-option_language_id').appendTo('.reserved_inputs'); |
| 50 | $('.'+group+'-lang').appendTo('.'+group+'-active'); | 50 | $('.'+group+'-lang').appendTo('.'+group+'-active'); |
| 51 | }); | 51 | }); |
| 52 | $(document).on('click', '.remove-langs', function() { | 52 | $(document).on('click', '.remove-langs', function() { |
| @@ -54,7 +54,7 @@ use yii\widgets\ActiveForm; | @@ -54,7 +54,7 @@ use yii\widgets\ActiveForm; | ||
| 54 | $(this).parent().parent().appendTo('.reserved_inputs'); | 54 | $(this).parent().parent().appendTo('.reserved_inputs'); |
| 55 | console.log('field-'+group); | 55 | console.log('field-'+group); |
| 56 | $('.reserved_inputs .field-'+group).appendTo('.'+group+'-active'); | 56 | $('.reserved_inputs .field-'+group).appendTo('.'+group+'-active'); |
| 57 | - $('.field-optionvalues-option_lang_id').appendTo('.'+group+'-active'); | 57 | + $('.field-optionvalues-option_language_id').appendTo('.'+group+'-active'); |
| 58 | }); | 58 | }); |
| 59 | }); | 59 | }); |
| 60 | </script> | 60 | </script> |
| 61 | \ No newline at end of file | 61 | \ No newline at end of file |
frontend/views/option-values/_search.php
| @@ -21,7 +21,7 @@ use yii\widgets\ActiveForm; | @@ -21,7 +21,7 @@ use yii\widgets\ActiveForm; | ||
| 21 | 21 | ||
| 22 | <?= $form->field($model, 'option_value_text') ?> | 22 | <?= $form->field($model, 'option_value_text') ?> |
| 23 | 23 | ||
| 24 | - <?= $form->field($model, 'option_lang_id') ?> | 24 | + <?= $form->field($model, 'option_language_id') ?> |
| 25 | 25 | ||
| 26 | <?= $form->field($model, 'option_value_parent') ?> | 26 | <?= $form->field($model, 'option_value_parent') ?> |
| 27 | 27 |
frontend/views/option-values/index.php
| @@ -28,7 +28,7 @@ $this->params['breadcrumbs'][] = $this->title; | @@ -28,7 +28,7 @@ $this->params['breadcrumbs'][] = $this->title; | ||
| 28 | 'option_value_id', | 28 | 'option_value_id', |
| 29 | 'option_key', | 29 | 'option_key', |
| 30 | 'option_value_text:ntext', | 30 | 'option_value_text:ntext', |
| 31 | - 'option_lang_id', | 31 | + 'option_language_id', |
| 32 | 'option_value_parent', | 32 | 'option_value_parent', |
| 33 | // 'option_user', | 33 | // 'option_user', |
| 34 | 34 |
frontend/views/option-values/view.php
| @@ -31,7 +31,7 @@ $this->params['breadcrumbs'][] = $this->title; | @@ -31,7 +31,7 @@ $this->params['breadcrumbs'][] = $this->title; | ||
| 31 | 'option_value_id', | 31 | 'option_value_id', |
| 32 | 'option_key', | 32 | 'option_key', |
| 33 | 'option_value_text:ntext', | 33 | 'option_value_text:ntext', |
| 34 | - 'option_lang_id', | 34 | + 'option_language_id', |
| 35 | 'option_value_parent', | 35 | 'option_value_parent', |
| 36 | 'option_user', | 36 | 'option_user', |
| 37 | ], | 37 | ], |
frontend/views/option/_form_edit.php
| @@ -21,7 +21,7 @@ use yii\widgets\ActiveForm; | @@ -21,7 +21,7 @@ use yii\widgets\ActiveForm; | ||
| 21 | <?php if($row->hasErrors()) { ?><div class="help-block"><?php echo $modellang[$id][0]->getFirstError('value');?></div> <?php } ?> | 21 | <?php if($row->hasErrors()) { ?><div class="help-block"><?php echo $modellang[$id][0]->getFirstError('value');?></div> <?php } ?> |
| 22 | <?php | 22 | <?php |
| 23 | if($row->translate) { | 23 | if($row->translate) { |
| 24 | - foreach($row->getLangs() as $lang_id => $lang) { | 24 | + foreach($row->getLangs() as $language_id => $lang) { |
| 25 | ?> | 25 | ?> |
| 26 | <div class="form-group"> | 26 | <div class="form-group"> |
| 27 | <div class="col-xs-1"><?=$lang['lang_code']?></div> | 27 | <div class="col-xs-1"><?=$lang['lang_code']?></div> |
frontend/web/images/upload/0ba9d6a23ce996f8f6894545721a9417ZKA-O/original.jpg
0 → 100644
80.2 KB
frontend/web/images/upload/1882770d9bde9932666c75b63da8a55bA5OLs/original.jpg
0 → 100644
90 KB
frontend/web/images/upload/1882770d9bde9932666c75b63da8a55bAGkF2/original.jpg
0 → 100644
90 KB
frontend/web/images/upload/1882770d9bde9932666c75b63da8a55bNqFYc/original.jpg
0 → 100644
90 KB
frontend/web/images/upload/1882770d9bde9932666c75b63da8a55bcdvDU/original.jpg
0 → 100644
90 KB