Commit eb8966763c04e26f6d0941068c6229b440046391

Authored by andryeyev
1 parent 8b201863

+ Термины и база full-backup

backend/controllers/MenuLocationController.php
@@ -4,7 +4,7 @@ namespace backend\controllers; @@ -4,7 +4,7 @@ namespace backend\controllers;
4 4
5 use Yii; 5 use Yii;
6 use backend\models\MenuLocation; 6 use backend\models\MenuLocation;
7 -use backend\models\MenuSearchLocation; 7 +use backend\models\MenuLocationSearch;
8 use yii\web\Controller; 8 use yii\web\Controller;
9 use yii\web\NotFoundHttpException; 9 use yii\web\NotFoundHttpException;
10 use yii\filters\VerbFilter; 10 use yii\filters\VerbFilter;
@@ -32,7 +32,7 @@ class MenuLocationController extends Controller @@ -32,7 +32,7 @@ class MenuLocationController extends Controller
32 */ 32 */
33 public function actionIndex() 33 public function actionIndex()
34 { 34 {
35 - $searchModel = new MenuSearchLocation(); 35 + $searchModel = new MenuLocationSearch();
36 $dataProvider = $searchModel->search(Yii::$app->request->queryParams); 36 $dataProvider = $searchModel->search(Yii::$app->request->queryParams);
37 37
38 return $this->render('index', [ 38 return $this->render('index', [
backend/controllers/SiteController.php
@@ -57,7 +57,19 @@ class SiteController extends Controller @@ -57,7 +57,19 @@ class SiteController extends Controller
57 57
58 public function actionIndex() 58 public function actionIndex()
59 { 59 {
60 - return $this->render('index'); 60 +/*
  61 + if (Yii::$app->user->can('site/index'))
  62 + {
  63 +
  64 + }
  65 + else
  66 + {
  67 + Yii::$app->getSession()->setFlash('error', 'Доступ закрыт..');
  68 +
  69 + return $this->redirect('/');
  70 + }
  71 +*/
  72 + return $this->render('index');
61 } 73 }
62 74
63 public function actionLogin() 75 public function actionLogin()
backend/controllers/TerminController.php
@@ -5,23 +5,26 @@ namespace backend\controllers; @@ -5,23 +5,26 @@ 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;
8 use yii\web\Controller; 9 use yii\web\Controller;
9 use yii\web\NotFoundHttpException; 10 use yii\web\NotFoundHttpException;
10 use yii\filters\VerbFilter; 11 use yii\filters\VerbFilter;
11 use backend\models\TerminLang; 12 use backend\models\TerminLang;
12 use backend\models\TerminStructure; 13 use backend\models\TerminStructure;
  14 +use common\models\Language;
  15 +use backend\models\TerminRelation;
13 16
14 /** 17 /**
15 * TerminController implements the CRUD actions for Termin model. 18 * TerminController implements the CRUD actions for Termin model.
16 */ 19 */
17 class TerminController extends Controller 20 class TerminController extends Controller
18 { 21 {
19 - public function behaviors() 22 + public function behaviors()
20 { 23 {
21 return [ 24 return [
22 'access' => [ 25 'access' => [
23 'class' => AccessControl::className(), 26 'class' => AccessControl::className(),
24 - 'except' => ['login', 'error', 'index', 'create', 'update'], 27 + 'except' => ['login', 'error', 'index', 'create', 'update', 'view', 'form', 'delete'],
25 'rules' => [ 28 'rules' => [
26 [ 29 [
27 'allow' => true, 30 'allow' => true,
@@ -38,6 +41,20 @@ class TerminController extends Controller @@ -38,6 +41,20 @@ class TerminController extends Controller
38 ], 41 ],
39 ]; 42 ];
40 } 43 }
  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 + }
41 58
42 /** 59 /**
43 * Lists all Termin models. 60 * Lists all Termin models.
@@ -73,23 +90,48 @@ class TerminController extends Controller @@ -73,23 +90,48 @@ class TerminController extends Controller
73 */ 90 */
74 public function actionCreate() 91 public function actionCreate()
75 { 92 {
76 - $model = new Termin();  
77 - $model_lang = new TerminLang(); 93 + $model = new Termin();
  94 + $model_pid = new TerminStructure();
78 95
  96 + // проверяем общие таблицы
79 if ($model->load(Yii::$app->request->post()) 97 if ($model->load(Yii::$app->request->post())
80 - && $model_lang->load(Yii::$app->request->post()))  
81 - {  
82 - $model->save();  
83 - $model_lang->termin_id = $model->termin_id;  
84 - $model_lang->save(); 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 + }
85 121
86 return $this->redirect(['view', 'id' => $model->termin_id]); 122 return $this->redirect(['view', 'id' => $model->termin_id]);
87 } 123 }
88 else 124 else
89 - { 125 + {
  126 + $default_lang = Language::getDefaultLang();
  127 +
  128 + $LANG = [];
  129 + $LANG[$default_lang->language_id] = new TerminLang();
  130 +
90 return $this->render('create', [ 131 return $this->render('create', [
91 'model' => $model, 132 'model' => $model,
92 - 'model_lang' => $model_lang, 133 + 'model_lang' => $LANG,
  134 + 'model_pid' => $model_pid,
93 ]); 135 ]);
94 } 136 }
95 } 137 }
@@ -103,22 +145,49 @@ class TerminController extends Controller @@ -103,22 +145,49 @@ class TerminController extends Controller
103 public function actionUpdate($id) 145 public function actionUpdate($id)
104 { 146 {
105 $model = $this->findModel($id); 147 $model = $this->findModel($id);
106 - $model_lang = TerminLang::findOne($id);  
107 - $model_pid = TerminStructure::findOne($id)->getRelation('terminPid')->one();  
108 -  
109 - //var_dump(Yii::$app->request->post());  
110 - //var_dump($model_pid->termin->termin_id); die;  
111 - 148 + $model_lang = Termin::findOne($id)->getTerminLangs()->indexBy('lang_id')->all();
  149 + $model_pid = TerminStructure::findOne($id);
  150 +
  151 + // проверяем общие таблицы
112 if ($model->load(Yii::$app->request->post()) 152 if ($model->load(Yii::$app->request->post())
113 - && $model_lang->load(Yii::$app->request->post())  
114 && $model_pid->load(Yii::$app->request->post()) 153 && $model_pid->load(Yii::$app->request->post())
115 ) 154 )
116 - {  
117 - $model->save();  
118 - $model_lang->save();  
119 - $model_pid->termin_pid = $model_pid->termin->termin_id;  
120 -  
121 - return $this->redirect(['view', 'id' => $model->termin_id]); 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');
122 } 191 }
123 else 192 else
124 { 193 {
backend/models/Termin.php
@@ -21,6 +21,7 @@ class Termin extends \yii\db\ActiveRecord @@ -21,6 +21,7 @@ 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;
24 25
25 /** 26 /**
26 * @inheritdoc 27 * @inheritdoc
@@ -37,9 +38,9 @@ class Termin extends \yii\db\ActiveRecord @@ -37,9 +38,9 @@ class Termin extends \yii\db\ActiveRecord
37 { 38 {
38 return [ 39 return [
39 [['is_book'], 'integer'], 40 [['is_book'], 'integer'],
40 - [['termin_pid'], 'safe'], 41 + [['termin_pid', 'termin_parent_title'], 'safe'],
41 [['termin_title'], 'string', 'max' => 250], 42 [['termin_title'], 'string', 'max' => 250],
42 - [['termin_name'], 'string', 'max' => 250] 43 + [['termin_name','termin_parent_title'], 'string', 'max' => 250]
43 ]; 44 ];
44 } 45 }
45 46
@@ -51,6 +52,8 @@ class Termin extends \yii\db\ActiveRecord @@ -51,6 +52,8 @@ class Termin extends \yii\db\ActiveRecord
51 return [ 52 return [
52 'termin_id' => Yii::t('app', 'termin'), 53 'termin_id' => Yii::t('app', 'termin'),
53 'termin_name' => Yii::t('app', 'name').' (SYSTEM NAME)', 54 'termin_name' => Yii::t('app', 'name').' (SYSTEM NAME)',
  55 + 'termin_title' => Yii::t('app', 'termin'),
  56 + 'termin_parent_title' => Yii::t('app', 'termin').' Parent',
54 'is_book' => Yii::t('app', 'book'), 57 'is_book' => Yii::t('app', 'book'),
55 ]; 58 ];
56 } 59 }
@@ -70,6 +73,7 @@ class Termin extends \yii\db\ActiveRecord @@ -70,6 +73,7 @@ class Termin extends \yii\db\ActiveRecord
70 'return_field' => false, 73 'return_field' => false,
71 'show_all' => false, 74 'show_all' => false,
72 'to_array' => true, 75 'to_array' => true,
  76 + 'sql_only' => false,
73 'pid_title' => false, 77 'pid_title' => false,
74 )); 78 ));
75 79
@@ -134,7 +138,7 @@ class Termin extends \yii\db\ActiveRecord @@ -134,7 +138,7 @@ class Termin extends \yii\db\ActiveRecord
134 { 138 {
135 $query = $query->asArray(); 139 $query = $query->asArray();
136 } 140 }
137 - 141 +
138 if ($params['return_one'] || $params['return_field']) 142 if ($params['return_one'] || $params['return_field'])
139 { 143 {
140 144
@@ -161,16 +165,13 @@ class Termin extends \yii\db\ActiveRecord @@ -161,16 +165,13 @@ class Termin extends \yii\db\ActiveRecord
161 */ 165 */
162 public function getTerminLangs() 166 public function getTerminLangs()
163 { 167 {
164 - return $this->hasMany(TerminLang::className(), ['termin_id' => 'termin_id']); 168 + return $this->hasOne(TerminLang::className(), ['termin_id' => 'termin_id']);
165 } 169 }
166 -  
167 - /**  
168 - * @return \yii\db\ActiveQuery  
169 - */  
170 - public function getLangs() 170 +
  171 + public function getParent()
171 { 172 {
172 - return $this->hasMany(Language::className(), ['language_id' => 'lang_id'])  
173 - ->viaTable('termin_lang', ['termin_id' => 'termin_id']); 173 + return $this->hasOne(Termin::className(),['termin_id'=>'termin_pid'])
  174 + ->viaTable(TerminStructure::tableName(), ['termin_id'=>'termin_id']);
174 } 175 }
175 176
176 /** 177 /**
backend/models/TerminSearch.php
@@ -19,7 +19,7 @@ class TerminSearch extends Termin @@ -19,7 +19,7 @@ class TerminSearch extends Termin
19 { 19 {
20 return [ 20 return [
21 [['termin_id', 'is_book'], 'integer'], 21 [['termin_id', 'is_book'], 'integer'],
22 - [['termin_name'], 'safe'], 22 + [['termin_name', 'termin_title', 'termin_parent_title'], 'safe'],
23 ]; 23 ];
24 } 24 }
25 25
@@ -42,6 +42,7 @@ class TerminSearch extends Termin @@ -42,6 +42,7 @@ class TerminSearch extends Termin
42 public function search($params) 42 public function search($params)
43 { 43 {
44 $query = Termin::find(); 44 $query = Termin::find();
  45 + $query->select('*');
45 46
46 $dataProvider = new ActiveDataProvider([ 47 $dataProvider = new ActiveDataProvider([
47 'query' => $query, 48 'query' => $query,
@@ -53,7 +54,9 @@ class TerminSearch extends Termin @@ -53,7 +54,9 @@ class TerminSearch extends Termin
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;
56 - } 57 + }
  58 +
  59 + $query->joinWith(['terminLangs', 'terminStructures']);
57 60
58 $query->andFilterWhere([ 61 $query->andFilterWhere([
59 'termin_id' => $this->termin_id, 62 'termin_id' => $this->termin_id,
@@ -61,6 +64,8 @@ class TerminSearch extends Termin @@ -61,6 +64,8 @@ class TerminSearch extends Termin
61 ]); 64 ]);
62 65
63 $query->andFilterWhere(['like', 'termin_name', $this->termin_name]); 66 $query->andFilterWhere(['like', 'termin_name', $this->termin_name]);
  67 + $query->andFilterWhere(['like', TerminLang::tableName().'.termin_title', $this->termin_title]);
  68 + //$query->andFilterWhere(['like', 'termin_title', $this->termin_title]);
64 69
65 return $dataProvider; 70 return $dataProvider;
66 } 71 }
backend/models/TerminStructure.php
@@ -51,7 +51,7 @@ class TerminStructure extends \yii\db\ActiveRecord @@ -51,7 +51,7 @@ class TerminStructure extends \yii\db\ActiveRecord
51 { 51 {
52 return $this->hasOne(Termin::className(), ['termin_id' => 'termin_id']); 52 return $this->hasOne(Termin::className(), ['termin_id' => 'termin_id']);
53 } 53 }
54 - 54 +
55 /** 55 /**
56 * @return \yii\db\ActiveQuery 56 * @return \yii\db\ActiveQuery
57 */ 57 */
backend/views/menu/index.php
@@ -25,13 +25,14 @@ $this->params['breadcrumbs'][] = $this->title; @@ -25,13 +25,14 @@ $this->params['breadcrumbs'][] = $this->title;
25 'filterModel' => $searchModel, 25 'filterModel' => $searchModel,
26 'columns' => [ 26 'columns' => [
27 ['class' => 'yii\grid\SerialColumn'], 27 ['class' => 'yii\grid\SerialColumn'],
28 - 28 +/*
29 [ 29 [
30 'attribute' => Yii::t('app', 'termin'), 30 'attribute' => Yii::t('app', 'termin'),
31 'value' => function ($model) { 31 'value' => function ($model) {
32 return empty($model->termin_id) ? '-' : $model->termin_lang->termin_title; 32 return empty($model->termin_id) ? '-' : $model->termin_lang->termin_title;
33 }, 33 },
34 - ], 34 + ],
  35 + */
35 'menu_pid', 36 'menu_pid',
36 'level', 37 'level',
37 // 'sortorder', 38 // 'sortorder',
backend/views/termin/_article_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]lang_id"]))->label(false)->hiddenInput(['value' => $model->language_id]) ?>
  11 +
  12 + <?= (new ActiveField(['model' => $article_lang, 'attribute' => "[$model->language_id]termin_title"]))->textInput() ?>
  13 +
  14 + <?= (new ActiveField(['model' => $article_lang, 'attribute' => "[$model->language_id]termin_alias"]))->textInput() ?>
  15 +
  16 +</div>
  17 +<?php
  18 +$form->end();
  19 +?>
backend/views/termin/_form.php
@@ -5,21 +5,34 @@ use yii\widgets\ActiveForm; @@ -5,21 +5,34 @@ 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;
8 10
9 /* @var $this yii\web\View */ 11 /* @var $this yii\web\View */
10 /* @var $model backend\models\Termin */ 12 /* @var $model backend\models\Termin */
11 /* @var $form yii\widgets\ActiveForm */ 13 /* @var $form yii\widgets\ActiveForm */
12 14
13 -?> 15 +echo '<div class="termin-form">';
14 16
15 -<div class="termin-form"> 17 +$form = ActiveForm::begin();
16 18
17 - <?php $form = ActiveForm::begin(); ?>  
18 -  
19 - <?= $form->field($model_pid->termin, 'termin_pid')->widget(Select2::classname(), 19 + // ================
  20 + // ==== COMMON ====
  21 + // ================
  22 +
  23 + echo $form->field($model_pid, 'termin_pid')->widget(
  24 + Select2::classname(),
20 [ 25 [
21 - 'data' => ArrayHelper::map((new Termin)->finInfo([ 26 + 'data' => ArrayHelper::map(
  27 + [
  28 + [
  29 + 'termin_id' => 0,
  30 + 'termin_title' => 'NONE',
  31 + ]
  32 + ] +
  33 + (new Termin)->finInfo([
22 'show_all' => true, 34 'show_all' => true,
  35 + 'to_array' => true,
23 ]), 36 ]),
24 'termin_id', 37 'termin_id',
25 'termin_title' 38 'termin_title'
@@ -28,23 +41,53 @@ use yii\helpers\ArrayHelper; @@ -28,23 +41,53 @@ use yii\helpers\ArrayHelper;
28 'pluginOptions' => [ 41 'pluginOptions' => [
29 'allowClear' => true 42 'allowClear' => true
30 ], 43 ],
31 - ]);  
32 - ?> 44 + ]
  45 + );
33 46
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, 'lang_id', [ 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().'
  67 +
  68 + </div>';
  69 +
  70 + $first = 0;
  71 + }
  72 +
  73 + $multilang->end();
  74 +/*
  75 + echo Html::activeHiddenInput ($model_lang, 'lang_id', [
41 'value' => ($model_lang->lang_id != 0 ? $model_lang->lang_id : Yii::$app->params['lang_id']), 76 'value' => ($model_lang->lang_id != 0 ? $model_lang->lang_id : Yii::$app->params['lang_id']),
42 - ]) ?> 77 + ]);
  78 +*/
  79 + // ==== BUTTON ====
43 80
  81 + echo '
44 <div class="form-group"> 82 <div class="form-group">
45 - <?= Html::submitButton($model->isNewRecord ? Yii::t('app', 'Create') : Yii::t('app', 'Update'), ['class' => $model->isNewRecord ? 'btn btn-success' : 'btn btn-primary']) ?>  
46 - </div> 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();
47 87
48 - <?php ActiveForm::end(); ?> 88 +echo '</div>';
49 89
50 -</div> 90 +echo '
  91 +<script>
  92 + var confirm_message = "'.\Yii::t('app', 'Remove image?').'"
  93 +</script>';
backend/views/termin/create.php
@@ -17,6 +17,7 @@ $this-&gt;params[&#39;breadcrumbs&#39;][] = $this-&gt;title; @@ -17,6 +17,7 @@ $this-&gt;params[&#39;breadcrumbs&#39;][] = $this-&gt;title;
17 <?= $this->render('_form', [ 17 <?= $this->render('_form', [
18 'model' => $model, 18 'model' => $model,
19 'model_lang' => $model_lang, 19 'model_lang' => $model_lang,
  20 + 'model_pid' => $model_pid,
20 ]) ?> 21 ]) ?>
21 22
22 </div> 23 </div>
backend/views/termin/index.php
@@ -19,17 +19,20 @@ $this-&gt;params[&#39;breadcrumbs&#39;][] = $this-&gt;title; @@ -19,17 +19,20 @@ $this-&gt;params[&#39;breadcrumbs&#39;][] = $this-&gt;title;
19 <?= Html::a(Yii::t('app', 'Create'), ['create'], ['class' => 'btn btn-success']) ?> 19 <?= Html::a(Yii::t('app', 'Create'), ['create'], ['class' => 'btn btn-success']) ?>
20 </p> 20 </p>
21 21
  22 +
22 <?= GridView::widget([ 23 <?= GridView::widget([
23 'dataProvider' => $dataProvider, 24 'dataProvider' => $dataProvider,
24 'filterModel' => $searchModel, 25 'filterModel' => $searchModel,
25 'columns' => [ 26 'columns' => [
26 ['class' => 'yii\grid\SerialColumn'], 27 ['class' => 'yii\grid\SerialColumn'],
27 [ 28 [
28 - 'attribute' => Yii::t('app', 'termin'),  
29 - 'value' => function ($model) {  
30 - return $model->terminLangs[0]->termin_title;  
31 - },  
32 - ], 29 + 'attribute' => 'termin_title',
  30 + 'value' => 'terminLangs.termin_title'
  31 + ],
  32 + [
  33 + 'attribute' => 'termin_parent_title',
  34 + 'value' => 'parent.terminLangs.termin_title'
  35 + ],
33 'termin_name', 36 'termin_name',
34 'is_book', 37 'is_book',
35 38
backend/web/js/option.js
@@ -36,42 +36,6 @@ $(function() { @@ -36,42 +36,6 @@ $(function() {
36 $(document).on('click', '.remove_lang', function() { 36 $(document).on('click', '.remove_lang', function() {
37 $(this).parents('.form-wrapper').remove(); 37 $(this).parents('.form-wrapper').remove();
38 }); 38 });
39 - if($('#lang-tabs li').length > 1) {  
40 - $('#lang-tabs li').append('<span class="glyphicon glyphicon-remove-circle remove-lang"></span>')  
41 - }  
42 - $(document).on('click', '#lang-dropdown li a[data-lang]', function() {  
43 - var lang = $(this).data('lang');  
44 - var flag = $(this).find('span').first().clone();  
45 - var el = $(this);  
46 - $.get('/blog/ajax/category-form', { lang_id: lang }, function(data) {  
47 - $('#lang-tabs li').removeClass('active');  
48 - $('#lang-tabs').append('<li role="lang_inputs" class="active" data-lang="'+lang+'"><a href="#lang-'+lang+'" aria-controls="lang-'+lang+'" role="tab" data-toggle="tab">'+$('<p>').append($(flag)).html()+'</a></li>');  
49 - $('.lang-tab-content .tab-pane.active').removeClass('active');  
50 - $('.lang-tab-content').append($(data).find('.ajax-loaded').first());  
51 - $('body').append($(data).filter('script'));  
52 - $(el).parent().remove();  
53 - if(!$('#lang-dropdown li').length) {  
54 - $('#dropdownLang').addClass('disabled');  
55 - }  
56 - if($('#lang-tabs li').length > 1) {  
57 - $('#lang-tabs li').append('<span class="glyphicon glyphicon-remove-circle remove-lang"></span>')  
58 - }  
59 - });  
60 - });  
61 - $(document).on('click', '.remove-lang', function() {  
62 - var lang = $(this).parent().data('lang');  
63 - var flag = $(this).parent().find('span.flag').first().clone();  
64 - $('#lang-'+lang).remove();  
65 - $('#lang-dropdown').append('<li><a href="#lang-tabs" data-lang="'+lang+'">'+$('<p>').append($(flag)).html()+'</a></li>');  
66 - $('#dropdownLang').removeClass('disabled');  
67 - $(this).parent().remove();  
68 - if($('#lang-tabs li').length <= 1) {  
69 - $('#lang-tabs li').find('.remove-lang').remove();  
70 - }  
71 - if(!$('#lang-tabs>li.active').length) {  
72 - $('#lang-tabs>li').first().find('a').tab('show');  
73 - }  
74 - });  
75 $(document).on('change', '.image_inputs_field', function() { 39 $(document).on('change', '.image_inputs_field', function() {
76 readURL(this); 40 readURL(this);
77 }); 41 });
@@ -89,4 +53,44 @@ $(function() { @@ -89,4 +53,44 @@ $(function() {
89 } 53 }
90 return false; 54 return false;
91 }); 55 });
  56 + $.each($('.nav-tabs.f32'), function(key, value) {
  57 + if($(value).find('li').length > 1) {
  58 + $(value).find('li').append('<span class="glyphicon glyphicon-remove-circle remove-lang"></span>');
  59 + }
  60 + });
  61 + $(document).on('click', '.dropdown-menu.f32 li a[data-lang]', function() {
  62 + var lang = $(this).data('lang');
  63 + var flag = $(this).find('span').first().clone();
  64 + var el = $(this);
  65 + var id = $(this).attr('href').substr(1);
  66 + $.get(form[id], { lang_id: lang, widget_id: id }, function(data) {
  67 + $('#'+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>');
  69 + $('#tab-content-'+id+' .tab-pane.active').removeClass('active');
  70 + $('#tab-content-'+id).append($(data).find('.ajax-loaded').first());
  71 + $('body').append($(data).filter('script'));
  72 + $(el).parent().remove();
  73 + if(!$('#lang-'+id+' li').length) {
  74 + $('#'+id+'Lang').addClass('disabled');
  75 + }
  76 + if($('#'+id+'-tabs li').length > 1) {
  77 + $('#'+id+'-tabs li').append('<span class="glyphicon glyphicon-remove-circle remove-lang"></span>')
  78 + }
  79 + });
  80 + });
  81 + $(document).on('click', '.remove-lang', function() {
  82 + var lang = $(this).parent().data('lang');
  83 + var flag = $(this).parent().find('span.flag').first().clone();
  84 + var id = $(this).parent().find('a[aria-controls]').first().attr('aria-controls').substr(0,8);
  85 + $('#'+id+'-'+lang).remove();
  86 + $('#lang-'+id).append('<li><a href="#'+id+'" data-lang="'+lang+'">'+$('<p>').append($(flag)).html()+'</a></li>');
  87 + $('#'+id+'Lang').removeClass('disabled');
  88 + $(this).parent().remove();
  89 + if($('#'+id+'-tabs li').length <= 1) {
  90 + $('#'+id+'-tabs li').find('.remove-lang').remove();
  91 + }
  92 + if(!$('#'+id+'-tabs>li.active').length) {
  93 + $('#'+id+'-tabs>li').first().find('a').tab('show');
  94 + }
  95 + });
92 }); 96 });
93 \ No newline at end of file 97 \ No newline at end of file
@@ -12,7 +12,7 @@ @@ -12,7 +12,7 @@
12 "irc": "irc://irc.freenode.net/yii", 12 "irc": "irc://irc.freenode.net/yii",
13 "source": "https://github.com/yiisoft/yii2" 13 "source": "https://github.com/yiisoft/yii2"
14 }, 14 },
15 - "minimum-stability": "stable", 15 + "minimum-stability": "dev",
16 "require": { 16 "require": {
17 "php": ">=5.4.0", 17 "php": ">=5.4.0",
18 "yiisoft/yii2": ">=2.0.6", 18 "yiisoft/yii2": ">=2.0.6",
db-migration/artbox_db.backup
No preview for this file type
db-migration/artbox_db3.backup deleted
No preview for this file type
db-migration/article_option_migration.backup deleted
No preview for this file type
db-migration/blog.zip deleted
No preview for this file type
db-migration/catalog.backup deleted
No preview for this file type
db-migration/yarik.sql deleted
1 --- --------------------------------------------------------  
2 --- Хост: 127.0.0.1  
3 --- Версия сервера: PostgreSQL 9.4.4, compiled by Visual C++ build 1800, 32-bit  
4 --- ОС Сервера:  
5 --- HeidiSQL Версия: 9.3.0.4984  
6 --- --------------------------------------------------------  
7 -  
8 -/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;  
9 -/*!40101 SET NAMES */;  
10 -/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;  
11 -/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;  
12 -  
13 --- Дамп структуры для таблица public.article  
14 -CREATE TABLE IF NOT EXISTS "article" (  
15 - "id" INTEGER NOT NULL DEFAULT nextval('article_id_seq'::regclass) COMMENT E'',  
16 - "sort" INTEGER NOT NULL DEFAULT 100 COMMENT E'',  
17 - "create_at" TIMESTAMP WITHOUT TIME ZONE NOT NULL DEFAULT now() COMMENT E'',  
18 - "update_at" TIMESTAMP WITHOUT TIME ZONE NOT NULL DEFAULT now() COMMENT E'',  
19 - "code" CHARACTER VARYING NOT NULL COMMENT E'',  
20 - "category_id" INTEGER NOT NULL DEFAULT 1 COMMENT E'',  
21 - "author" INTEGER NOT NULL COMMENT E'',  
22 - "tags" CHARACTER VARYING NULL DEFAULT NULL COMMENT E'',  
23 - "parent_id" INTEGER NULL DEFAULT NULL COMMENT E'',  
24 - "active" SMALLINT NOT NULL DEFAULT 0 COMMENT E'',  
25 - "comments" SMALLINT NOT NULL DEFAULT 0::smallint COMMENT E'',  
26 - "voting" SMALLINT NOT NULL DEFAULT 0::smallint COMMENT E'',  
27 - KEY ("author"),  
28 - PRIMARY KEY ("id"),  
29 - KEY ("parent_id"),  
30 - KEY ("category_id"),  
31 - KEY ("id")  
32 -);  
33 -  
34 --- Дамп данных таблицы public.article: 3 rows  
35 -/*!40000 ALTER TABLE "article" DISABLE KEYS */;  
36 -INSERT INTO "article" ("id", "sort", "create_at", "update_at", "code", "category_id", "author", "tags", "parent_id", "active", "comments", "voting") VALUES  
37 - (5, 100, E'2015-12-04 14:52:39.54', E'2015-12-04 14:52:39.54', E'test_article', 1, 1, E'test, tag', NULL, 1, 0, 0),  
38 - (6, 100, E'2015-12-04 14:52:52.403', E'2015-12-04 14:52:52.403', E'test_article2', 1, 1, E'test, tag', NULL, 1, 0, 0),  
39 - (12, 100, E'2015-12-04 14:52:52.403', E'2015-12-04 14:52:52.403', E'test_article3', 1, 1, E'test, tag', 5, 1, 0, 0);  
40 -/*!40000 ALTER TABLE "article" ENABLE KEYS */;  
41 -  
42 -  
43 --- Дамп структуры для таблица public.article_category  
44 -CREATE TABLE IF NOT EXISTS "article_category" (  
45 - "id" INTEGER NOT NULL DEFAULT nextval('article_category_id_seq'::regclass) COMMENT E'',  
46 - "sort" INTEGER NOT NULL DEFAULT 100 COMMENT E'',  
47 - "code" CHARACTER VARYING NOT NULL COMMENT E'',  
48 - "created_at" TIME WITHOUT TIME ZONE NOT NULL DEFAULT now() COMMENT E'',  
49 - "updated_at" TIME WITHOUT TIME ZONE NOT NULL DEFAULT now() COMMENT E'',  
50 - "tags" CHARACTER VARYING NULL DEFAULT NULL COMMENT E'',  
51 - "parent_id" INTEGER NULL DEFAULT NULL COMMENT E'',  
52 - "active" SMALLINT NOT NULL DEFAULT 0 COMMENT E'',  
53 - PRIMARY KEY ("id"),  
54 - KEY ("parent_id"),  
55 - KEY ("id")  
56 -);  
57 -  
58 --- Дамп данных таблицы public.article_category: 2 rows  
59 -/*!40000 ALTER TABLE "article_category" DISABLE KEYS */;  
60 -INSERT INTO "article_category" ("id", "sort", "code", "created_at", "updated_at", "tags", "parent_id", "active") VALUES  
61 - (1, 100, E'static_pages', E'14:08:02.74', E'14:08:02.74', NULL, NULL, 1),  
62 - (2, 100, E'qwerty', E'11:00:35.954', E'11:00:35.954', E'qwerty', NULL, 0);  
63 -/*!40000 ALTER TABLE "article_category" ENABLE KEYS */;  
64 -  
65 -  
66 --- Дамп структуры для таблица public.article_category_lang  
67 -CREATE TABLE IF NOT EXISTS "article_category_lang" (  
68 - "id" INTEGER NOT NULL DEFAULT nextval('article_category_lang_id_seq'::regclass) COMMENT E'',  
69 - "lang_id" INTEGER NOT NULL DEFAULT 0 COMMENT E'',  
70 - "category_id" INTEGER NULL DEFAULT NULL COMMENT E'',  
71 - "text" TEXT NOT NULL COMMENT E'',  
72 - "preview" TEXT NULL DEFAULT NULL COMMENT E'',  
73 - "seo_url" CHARACTER VARYING NULL DEFAULT NULL COMMENT E'',  
74 - "name" CHARACTER VARYING NOT NULL COMMENT E'',  
75 - "meta_title" CHARACTER VARYING NULL DEFAULT NULL COMMENT E'',  
76 - "meta_descr" TEXT NULL DEFAULT NULL COMMENT E'',  
77 - "meta_keywords" CHARACTER VARYING NULL DEFAULT NULL COMMENT E'',  
78 - "h1_tag" CHARACTER VARYING NULL DEFAULT NULL COMMENT E'',  
79 - "tags" CHARACTER VARYING NULL DEFAULT NULL COMMENT E'',  
80 - PRIMARY KEY ("id"),  
81 - KEY ("category_id"),  
82 - KEY ("lang_id"),  
83 - KEY ("id")  
84 -);  
85 -  
86 --- Дамп данных таблицы public.article_category_lang: 3 rows  
87 -/*!40000 ALTER TABLE "article_category_lang" DISABLE KEYS */;  
88 -INSERT INTO "article_category_lang" ("id", "lang_id", "category_id", "text", "preview", "seo_url", "name", "meta_title", "meta_descr", "meta_keywords", "h1_tag", "tags") VALUES  
89 - (1, 0, 1, E'Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem ', E'Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem Lorem ', E'lorem', E'Lorem ipsum', E'Lorem title', E'Lorem description', E'lorem, keyword', E'Lorem h1 tag', E'lorem tag'),  
90 - (2, 2, 2, E'qwerty', E'qwerty', E'qwerty', E'qwerty', E'qwerty', E'qwerty', E'qwerty', E'qwerty', E'qwerty'),  
91 - (3, 1, 2, E'йцукен', E'йцукен', E'йцукен', E'йцукен', E'йцукен', E'йцукен', E'йцукен', E'йцукен', E'йцукен');  
92 -/*!40000 ALTER TABLE "article_category_lang" ENABLE KEYS */;  
93 -  
94 -  
95 --- Дамп структуры для таблица public.article_category_media  
96 -CREATE TABLE IF NOT EXISTS "article_category_media" (  
97 - "id" INTEGER NOT NULL DEFAULT nextval('article_category_media_id_seq'::regclass) COMMENT E'',  
98 - "category_id" INTEGER NOT NULL COMMENT E'',  
99 - "media_id" INTEGER NOT NULL COMMENT E'',  
100 - "media_alt" CHARACTER VARYING NULL DEFAULT NULL COMMENT E'',  
101 - "media_title" CHARACTER VARYING NULL DEFAULT NULL COMMENT E'',  
102 - "media_caption" CHARACTER VARYING NULL DEFAULT NULL COMMENT E'',  
103 - "type" CHARACTER VARYING(10) NOT NULL DEFAULT 'additional'::character varying COMMENT E'',  
104 - PRIMARY KEY ("id"),  
105 - KEY ("media_id"),  
106 - KEY ("category_id"),  
107 - KEY ("id")  
108 -);  
109 -  
110 --- Дамп данных таблицы public.article_category_media: 0 rows  
111 -/*!40000 ALTER TABLE "article_category_media" DISABLE KEYS */;  
112 -/*!40000 ALTER TABLE "article_category_media" ENABLE KEYS */;  
113 -  
114 -  
115 --- Дамп структуры для таблица public.article_lang  
116 -CREATE TABLE IF NOT EXISTS "article_lang" (  
117 - "id" INTEGER NOT NULL DEFAULT nextval('article_lang_id_seq'::regclass) COMMENT E'',  
118 - "lang_id" INTEGER NOT NULL COMMENT E'',  
119 - "article_id" INTEGER NOT NULL COMMENT E'',  
120 - "text" TEXT NOT NULL COMMENT E'',  
121 - "seo_url" CHARACTER VARYING NULL DEFAULT NULL COMMENT E'',  
122 - "name" CHARACTER VARYING NOT NULL COMMENT E'',  
123 - "preview" TEXT NULL DEFAULT NULL COMMENT E'',  
124 - "meta_title" CHARACTER VARYING NULL DEFAULT NULL COMMENT E'',  
125 - "meta_descr" TEXT NULL DEFAULT NULL COMMENT E'',  
126 - "meta_keywords" CHARACTER VARYING NULL DEFAULT NULL COMMENT E'',  
127 - "h1_tag" CHARACTER VARYING NULL DEFAULT NULL COMMENT E'',  
128 - "tags" CHARACTER VARYING NULL DEFAULT NULL COMMENT E'',  
129 - PRIMARY KEY ("id"),  
130 - KEY ("article_id"),  
131 - KEY ("lang_id"),  
132 - KEY ("id")  
133 -);  
134 -  
135 --- Дамп данных таблицы public.article_lang: 2 rows  
136 -/*!40000 ALTER TABLE "article_lang" DISABLE KEYS */;  
137 -INSERT INTO "article_lang" ("id", "lang_id", "article_id", "text", "seo_url", "name", "preview", "meta_title", "meta_descr", "meta_keywords", "h1_tag", "tags") VALUES  
138 - (1, 0, 5, E'Lorem Lorem Lorem', E'article1', E'artivle1', E'Lorem preview', E'Lorem title', E'Lorem description', E'lorem, keyword', E'lorem h1 tag', E'tag, lorem'),  
139 - (2, 0, 12, E'Lorem Lorem Lorem', E'article3', E'artivle3\r\n', E'Lorem preview', E'Lorem title', E'Lorem description', E'lorem, keyword', E'lorem h1 tag', E'tag, lorem');  
140 -/*!40000 ALTER TABLE "article_lang" ENABLE KEYS */;  
141 -  
142 -  
143 --- Дамп структуры для таблица public.article_media  
144 -CREATE TABLE IF NOT EXISTS "article_media" (  
145 - "id" INTEGER NOT NULL DEFAULT nextval('article_media_id_seq'::regclass) COMMENT E'',  
146 - "article_id" INTEGER NOT NULL COMMENT E'',  
147 - "media_id" INTEGER NOT NULL COMMENT E'',  
148 - "type" CHARACTER VARYING(10) NOT NULL DEFAULT 'additional'::character varying COMMENT E'',  
149 - "media_alt" CHARACTER VARYING NULL DEFAULT NULL COMMENT E'',  
150 - "media_title" CHARACTER VARYING NULL DEFAULT NULL COMMENT E'',  
151 - "media_caption" CHARACTER VARYING NULL DEFAULT NULL COMMENT E'',  
152 - PRIMARY KEY ("id"),  
153 - KEY ("media_id"),  
154 - KEY ("article_id"),  
155 - KEY ("id")  
156 -);  
157 -  
158 --- Дамп данных таблицы public.article_media: 0 rows  
159 -/*!40000 ALTER TABLE "article_media" DISABLE KEYS */;  
160 -/*!40000 ALTER TABLE "article_media" ENABLE KEYS */;  
161 -  
162 -  
163 --- Дамп структуры для таблица public.media  
164 -CREATE TABLE IF NOT EXISTS "media" (  
165 - "id" INTEGER NOT NULL DEFAULT nextval('media_id_seq'::regclass) COMMENT E'',  
166 - "hash" CHARACTER VARYING NOT NULL COMMENT E'',  
167 - PRIMARY KEY ("id"),  
168 - KEY ("id")  
169 -);  
170 -  
171 --- Дамп данных таблицы public.media: 0 rows  
172 -/*!40000 ALTER TABLE "media" DISABLE KEYS */;  
173 -/*!40000 ALTER TABLE "media" ENABLE KEYS */;  
174 -  
175 -  
176 --- Дамп структуры для таблица public.option  
177 -CREATE TABLE IF NOT EXISTS "option" (  
178 - "model" CHARACTER VARYING(200) NULL DEFAULT NULL COMMENT E'',  
179 - "option_id" INTEGER NOT NULL DEFAULT nextval('option_option_id_seq'::regclass) COMMENT E'',  
180 - "model_id" INTEGER NULL DEFAULT NULL COMMENT E'',  
181 - "name" CHARACTER VARYING(200) NULL DEFAULT NULL COMMENT E'',  
182 - "template" CHARACTER VARYING(200) NULL DEFAULT NULL COMMENT E'',  
183 - "parent_id" INTEGER NULL DEFAULT NULL COMMENT E'',  
184 - "translate" BIT(1) NULL DEFAULT NULL COMMENT E'',  
185 - "created_at" TIMESTAMP WITHOUT TIME ZONE NULL DEFAULT now() COMMENT E'',  
186 - KEY ("option_id"),  
187 - KEY ("parent_id"),  
188 - PRIMARY KEY ("option_id")  
189 -);  
190 -  
191 --- Дамп данных таблицы public.option: 0 rows  
192 -/*!40000 ALTER TABLE "option" DISABLE KEYS */;  
193 -/*!40000 ALTER TABLE "option" ENABLE KEYS */;  
194 -  
195 -  
196 --- Дамп структуры для таблица public.option_lang  
197 -CREATE TABLE IF NOT EXISTS "option_lang" (  
198 - "primary" INTEGER NOT NULL DEFAULT nextval('option_lang_primary_seq'::regclass) COMMENT E'',  
199 - "id" INTEGER NULL DEFAULT NULL COMMENT E'',  
200 - "lang_id" INTEGER NULL DEFAULT NULL COMMENT E'',  
201 - "value" TEXT NULL DEFAULT NULL COMMENT E'',  
202 - KEY ("id"),  
203 - PRIMARY KEY ("primary")  
204 -);  
205 -  
206 --- Дамп данных таблицы public.option_lang: 0 rows  
207 -/*!40000 ALTER TABLE "option_lang" DISABLE KEYS */;  
208 -/*!40000 ALTER TABLE "option_lang" ENABLE KEYS */;  
209 -/*!40101 SET SQL_MODE=IFNULL(@OLD_SQL_MODE, '') */;  
210 -/*!40014 SET FOREIGN_KEY_CHECKS=IF(@OLD_FOREIGN_KEY_CHECKS IS NULL, 1, @OLD_FOREIGN_KEY_CHECKS) */;  
211 -/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;  
db-migration/yarik.zip deleted
No preview for this file type