Commit b15a9aec1ba6d11d08fd3f46908f0aab7aa20475
1 parent
1fd2bdb4
Добавил языки, адреса, заявки.
Showing
46 changed files
with
2058 additions
and
94 deletions
Show diff stats
backend/assets/AppAsset.php
@@ -22,9 +22,11 @@ class AppAsset extends AssetBundle | @@ -22,9 +22,11 @@ class AppAsset extends AssetBundle | ||
22 | 'css/flags32.css' | 22 | 'css/flags32.css' |
23 | ]; | 23 | ]; |
24 | public $js = [ | 24 | public $js = [ |
25 | + 'js/option.js' | ||
25 | ]; | 26 | ]; |
26 | public $depends = [ | 27 | public $depends = [ |
27 | 'yii\web\YiiAsset', | 28 | 'yii\web\YiiAsset', |
28 | 'yii\bootstrap\BootstrapAsset', | 29 | 'yii\bootstrap\BootstrapAsset', |
30 | + 'yii\web\JqueryAsset' | ||
29 | ]; | 31 | ]; |
30 | } | 32 | } |
backend/config/main.php
@@ -27,13 +27,6 @@ return [ | @@ -27,13 +27,6 @@ return [ | ||
27 | 'identityClass' => 'common\models\User', | 27 | 'identityClass' => 'common\models\User', |
28 | 'enableAutoLogin' => true, | 28 | 'enableAutoLogin' => true, |
29 | ], | 29 | ], |
30 | - 'view' => [ | ||
31 | - 'theme' => [ | ||
32 | - 'pathMap' => [ | ||
33 | - '@app/views' => '@vendor/dmstr/yii2-adminlte-asset/example-views/yiisoft/yii2-app' | ||
34 | - ], | ||
35 | - ], | ||
36 | - ], | ||
37 | 'urlManager' => [ | 30 | 'urlManager' => [ |
38 | 'enablePrettyUrl' => false, | 31 | 'enablePrettyUrl' => false, |
39 | 'showScriptName' => false, | 32 | 'showScriptName' => false, |
backend/controllers/LanguageController.php
@@ -8,6 +8,9 @@ use backend\models\LanguageSearch; | @@ -8,6 +8,9 @@ use backend\models\LanguageSearch; | ||
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; |
11 | +use frontend\models\Option; | ||
12 | +use frontend\models\OptionSearch; | ||
13 | +use frontend\models\OptionLang; | ||
11 | 14 | ||
12 | /** | 15 | /** |
13 | * LanguageController implements the CRUD actions for Language model. | 16 | * LanguageController implements the CRUD actions for Language model. |
@@ -107,4 +110,81 @@ class LanguageController extends Controller | @@ -107,4 +110,81 @@ class LanguageController extends Controller | ||
107 | throw new NotFoundHttpException('The requested page does not exist.'); | 110 | throw new NotFoundHttpException('The requested page does not exist.'); |
108 | } | 111 | } |
109 | } | 112 | } |
113 | + | ||
114 | + public function actionCreateAdress() | ||
115 | + { | ||
116 | + $form[0] = Option::create(\Yii::$app->request->post(), 'Main', 1, [['name' => 'adres', 'template' => 'text', 'translate' => true], ['name' => 'x', 'template' => 'number', 'translate' => false], ['name' => 'y', 'template' => 'number', 'translate' => false], ['name' => 'phone', 'template' => 'text', 'translate' => false], ['name' => 'name', 'template' => 'text', 'translate' => true]], true); | ||
117 | + if($form[0]['success'] == false) { | ||
118 | + return $this->render('create_adress', ['forms' => $form]); | ||
119 | + } else { | ||
120 | + return $this->redirect(['view-adress']); | ||
121 | + } | ||
122 | + } | ||
123 | + | ||
124 | + public function actionUpdateAdress($id) | ||
125 | + { | ||
126 | + $form[0] = Option::change($id, \Yii::$app->request->post(), 'Main', 1); | ||
127 | + if($form[0]['success'] == false) { | ||
128 | + return $this->render('update_adress', ['forms' => $form]); | ||
129 | + } else { | ||
130 | + return $this->redirect(['view-adress']); | ||
131 | + } | ||
132 | + } | ||
133 | + | ||
134 | + public function actionViewAdress() | ||
135 | + { | ||
136 | + $searchModel = new OptionSearch(); | ||
137 | + | ||
138 | + $dataProvider = $searchModel->search(array_merge(Yii::$app->request->queryParams, ['OptionSearch' => ['model' => 'Main', 'name' => 'adres']])); | ||
139 | + | ||
140 | + return $this->render('view_adress', [ | ||
141 | + 'searchModel' => $searchModel, | ||
142 | + 'dataProvider' => $dataProvider, | ||
143 | + ]); | ||
144 | + } | ||
145 | + | ||
146 | + /** | ||
147 | + * Deletes an existing Option model. | ||
148 | + * If deletion is successful, the browser will be redirected to the 'index' page. | ||
149 | + * @param integer $id | ||
150 | + * @return mixed | ||
151 | + */ | ||
152 | + public function actionDeleteAdress($id) | ||
153 | + { | ||
154 | + $model = $this->findModelAdress($id); | ||
155 | + $children = $model->hasMany(Option::className(), ['parent_id' => 'option_id'])->all(); | ||
156 | + $langs = array(); | ||
157 | + if(!empty($children)) { | ||
158 | + foreach($children as $child) { | ||
159 | + $langs = OptionLang::findAll(['id' => $child->option_id]); | ||
160 | + foreach($langs as $lang) { | ||
161 | + $lang->delete(); | ||
162 | + } | ||
163 | + $child->delete(); | ||
164 | + } | ||
165 | + } | ||
166 | + $langs = OptionLang::findAll(['id' => $id]); | ||
167 | + foreach($langs as $lang) { | ||
168 | + $lang->delete(); | ||
169 | + } | ||
170 | + $model->delete(); | ||
171 | + | ||
172 | + return $this->redirect(['view-adress']); | ||
173 | + } | ||
174 | + | ||
175 | + /** | ||
176 | + * Finds the Option model based on its primary key value. | ||
177 | + * If the model is not found, a 404 HTTP exception will be thrown. | ||
178 | + * @param integer $id | ||
179 | + * @return Option the loaded model | ||
180 | + * @throws NotFoundHttpException if the model cannot be found | ||
181 | + */ | ||
182 | + protected function findModelAdress($id) | ||
183 | + { | ||
184 | + if (($model = Option::findOne($id)) !== null) { | ||
185 | + return $model; | ||
186 | + } else { | ||
187 | + throw new NotFoundHttpException('The requested page does not exist.'); | ||
188 | + } | ||
189 | + } | ||
110 | } | 190 | } |
1 | +<?php | ||
2 | + | ||
3 | +namespace backend\controllers; | ||
4 | + | ||
5 | +use Yii; | ||
6 | +use backend\models\NewOptionsLang; | ||
7 | +use backend\models\NewOptionsLangSearch; | ||
8 | +use yii\web\Controller; | ||
9 | +use yii\web\NotFoundHttpException; | ||
10 | +use yii\filters\VerbFilter; | ||
11 | + | ||
12 | +/** | ||
13 | + * NewOptionsLangController implements the CRUD actions for NewOptionsLang model. | ||
14 | + */ | ||
15 | +class NewOptionsLangController extends Controller | ||
16 | +{ | ||
17 | + public function behaviors() | ||
18 | + { | ||
19 | + return [ | ||
20 | + 'verbs' => [ | ||
21 | + 'class' => VerbFilter::className(), | ||
22 | + 'actions' => [ | ||
23 | + 'delete' => ['post'], | ||
24 | + ], | ||
25 | + ], | ||
26 | + ]; | ||
27 | + } | ||
28 | + | ||
29 | + /** | ||
30 | + * Lists all NewOptionsLang models. | ||
31 | + * @return mixed | ||
32 | + */ | ||
33 | + public function actionIndex() | ||
34 | + { | ||
35 | + $searchModel = new NewOptionsLangSearch(); | ||
36 | + $dataProvider = $searchModel->search(Yii::$app->request->queryParams); | ||
37 | + | ||
38 | + return $this->render('index', [ | ||
39 | + 'searchModel' => $searchModel, | ||
40 | + 'dataProvider' => $dataProvider, | ||
41 | + ]); | ||
42 | + } | ||
43 | + | ||
44 | + /** | ||
45 | + * Displays a single NewOptionsLang model. | ||
46 | + * @param integer $id | ||
47 | + * @return mixed | ||
48 | + */ | ||
49 | + public function actionView($id) | ||
50 | + { | ||
51 | + return $this->render('view', [ | ||
52 | + 'model' => $this->findModel($id), | ||
53 | + ]); | ||
54 | + } | ||
55 | + | ||
56 | + /** | ||
57 | + * Creates a new NewOptionsLang model. | ||
58 | + * If creation is successful, the browser will be redirected to the 'view' page. | ||
59 | + * @return mixed | ||
60 | + */ | ||
61 | + public function actionCreate() | ||
62 | + { | ||
63 | + $model = new NewOptionsLang(); | ||
64 | + | ||
65 | + if ($model->load(Yii::$app->request->post()) && $model->save()) { | ||
66 | + return $this->redirect(['view', 'id' => $model->primary]); | ||
67 | + } else { | ||
68 | + return $this->render('create', [ | ||
69 | + 'model' => $model, | ||
70 | + ]); | ||
71 | + } | ||
72 | + } | ||
73 | + | ||
74 | + /** | ||
75 | + * Updates an existing NewOptionsLang model. | ||
76 | + * If update is successful, the browser will be redirected to the 'view' page. | ||
77 | + * @param integer $id | ||
78 | + * @return mixed | ||
79 | + */ | ||
80 | + public function actionUpdate($id) | ||
81 | + { | ||
82 | + $model = $this->findModel($id); | ||
83 | + | ||
84 | + if ($model->load(Yii::$app->request->post()) && $model->save()) { | ||
85 | + return $this->redirect(['view', 'id' => $model->primary]); | ||
86 | + } else { | ||
87 | + return $this->render('update', [ | ||
88 | + 'model' => $model, | ||
89 | + ]); | ||
90 | + } | ||
91 | + } | ||
92 | + | ||
93 | + /** | ||
94 | + * Deletes an existing NewOptionsLang model. | ||
95 | + * If deletion is successful, the browser will be redirected to the 'index' page. | ||
96 | + * @param integer $id | ||
97 | + * @return mixed | ||
98 | + */ | ||
99 | + public function actionDelete($id) | ||
100 | + { | ||
101 | + $this->findModel($id)->delete(); | ||
102 | + | ||
103 | + return $this->redirect(['index']); | ||
104 | + } | ||
105 | + | ||
106 | + /** | ||
107 | + * Finds the NewOptionsLang model based on its primary key value. | ||
108 | + * If the model is not found, a 404 HTTP exception will be thrown. | ||
109 | + * @param integer $id | ||
110 | + * @return NewOptionsLang the loaded model | ||
111 | + * @throws NotFoundHttpException if the model cannot be found | ||
112 | + */ | ||
113 | + protected function findModel($id) | ||
114 | + { | ||
115 | + if (($model = NewOptionsLang::findOne($id)) !== null) { | ||
116 | + return $model; | ||
117 | + } else { | ||
118 | + throw new NotFoundHttpException('The requested page does not exist.'); | ||
119 | + } | ||
120 | + } | ||
121 | +} |
backend/controllers/SiteController.php
@@ -8,6 +8,10 @@ use common\models\LoginForm; | @@ -8,6 +8,10 @@ use common\models\LoginForm; | ||
8 | use yii\filters\VerbFilter; | 8 | use yii\filters\VerbFilter; |
9 | use backend\models\Profile; | 9 | use backend\models\Profile; |
10 | use common\models\User; | 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; | ||
11 | /** | 15 | /** |
12 | * Site controller | 16 | * Site controller |
13 | */ | 17 | */ |
@@ -21,32 +25,19 @@ class SiteController extends Controller | @@ -21,32 +25,19 @@ class SiteController extends Controller | ||
21 | return [ | 25 | return [ |
22 | 'access' => [ | 26 | 'access' => [ |
23 | 'class' => AccessControl::className(), | 27 | 'class' => AccessControl::className(), |
28 | + 'except' => ['login', 'error'], | ||
24 | 'rules' => [ | 29 | 'rules' => [ |
25 | [ | 30 | [ |
26 | - 'actions' => ['login', 'error'], | ||
27 | 'allow' => true, | 31 | 'allow' => true, |
32 | + 'roles' => ['@'] | ||
28 | ], | 33 | ], |
29 | - [ | ||
30 | - 'actions' => ['logout', 'index'], | ||
31 | - 'allow' => true, | ||
32 | - 'roles' => ['@'], | ||
33 | - ], | ||
34 | - [ | ||
35 | - 'actions' => ['profile', 'profile'], | ||
36 | - 'allow' => true, | ||
37 | - 'roles' => ['@'], | ||
38 | - ], | ||
39 | - [ | ||
40 | - 'actions' => ['profileSave', 'profile'], | ||
41 | - 'allow' => true, | ||
42 | - 'roles' => ['@'], | ||
43 | - ], | ||
44 | ], | 34 | ], |
45 | ], | 35 | ], |
46 | 'verbs' => [ | 36 | 'verbs' => [ |
47 | 'class' => VerbFilter::className(), | 37 | 'class' => VerbFilter::className(), |
48 | 'actions' => [ | 38 | 'actions' => [ |
49 | 'logout' => ['post'], | 39 | 'logout' => ['post'], |
40 | + 'delete-req' => ['post'] | ||
50 | ], | 41 | ], |
51 | ], | 42 | ], |
52 | ]; | 43 | ]; |
@@ -66,7 +57,7 @@ class SiteController extends Controller | @@ -66,7 +57,7 @@ class SiteController extends Controller | ||
66 | 57 | ||
67 | public function actionIndex() | 58 | public function actionIndex() |
68 | { | 59 | { |
69 | - return $this->render('index'); | 60 | + return $this->render('index'); |
70 | } | 61 | } |
71 | 62 | ||
72 | public function actionLogin() | 63 | public function actionLogin() |
@@ -109,4 +100,37 @@ class SiteController extends Controller | @@ -109,4 +100,37 @@ class SiteController extends Controller | ||
109 | ]); | 100 | ]); |
110 | } | 101 | } |
111 | 102 | ||
103 | + public function actionRequests($id = 0) { | ||
104 | + if($id != 0) { | ||
105 | + Option::markOld($id); | ||
106 | + $this->redirect(['site/requests']); | ||
107 | + } | ||
108 | + $query = Option::find()->where(['model' => 'Feedback', 'model_id' => 1, 'parent_id' => null]); | ||
109 | + $provider = new ActiveDataProvider([ | ||
110 | + 'query' => $query, | ||
111 | + 'pagination' => [ | ||
112 | + 'pageSize' => 2, | ||
113 | + ], | ||
114 | + 'sort' => [ | ||
115 | + 'defaultOrder' => [ | ||
116 | + 'created_at' => SORT_DESC | ||
117 | + ] | ||
118 | + ] | ||
119 | + ]); | ||
120 | + $data = $provider->getModels(); | ||
121 | + return $this->render('requests', [ | ||
122 | + 'dataProvider' => $provider | ||
123 | + ]); | ||
124 | + } | ||
125 | + | ||
126 | + public function actionDeleteReq($id) { | ||
127 | + $model = Option::findOne($id); | ||
128 | + if(!is_null($model) && $model->delete()) { | ||
129 | + return $this->redirect(['site/requests']); | ||
130 | + } else{ | ||
131 | + Yii::$app->session->setFlash('post_error', $model->getFirstErrors()); | ||
132 | + return $this->redirect('[site/requests]'); | ||
133 | + } | ||
134 | + } | ||
135 | + | ||
112 | } | 136 | } |
backend/models/LanguageSearch.php
@@ -64,7 +64,8 @@ class LanguageSearch extends Language | @@ -64,7 +64,8 @@ class LanguageSearch extends Language | ||
64 | 64 | ||
65 | $query->andFilterWhere(['like', 'lang_code', $this->lang_code]) | 65 | $query->andFilterWhere(['like', 'lang_code', $this->lang_code]) |
66 | ->andFilterWhere(['like', 'language_name', $this->language_name]) | 66 | ->andFilterWhere(['like', 'language_name', $this->language_name]) |
67 | - ->andWhere(['active' => '1']); | 67 | + ->andWhere(['active' => '1']) |
68 | + ->andWhere(['>', 'language_id', '0']); | ||
68 | 69 | ||
69 | return $dataProvider; | 70 | return $dataProvider; |
70 | } | 71 | } |
1 | +<?php | ||
2 | + | ||
3 | +namespace backend\models; | ||
4 | + | ||
5 | +use Yii; | ||
6 | + | ||
7 | +/** | ||
8 | + * This is the model class for table "new_options". | ||
9 | + * | ||
10 | + * @property integer $id | ||
11 | + * @property string $model | ||
12 | + * @property integer $model_id | ||
13 | + * @property string $name | ||
14 | + * @property string $template | ||
15 | + * @property integer $parent_id | ||
16 | + */ | ||
17 | +class NewOptions extends \yii\db\ActiveRecord | ||
18 | +{ | ||
19 | + /** | ||
20 | + * @inheritdoc | ||
21 | + */ | ||
22 | + public static function tableName() | ||
23 | + { | ||
24 | + return 'new_options'; | ||
25 | + } | ||
26 | + | ||
27 | + /** | ||
28 | + * @inheritdoc | ||
29 | + */ | ||
30 | + public function rules() | ||
31 | + { | ||
32 | + return [ | ||
33 | + [['model_id', 'parent_id'], 'integer'], | ||
34 | + [['name', 'template'], 'required'], | ||
35 | + [['model', 'name', 'template'], 'string', 'max' => 255] | ||
36 | + ]; | ||
37 | + } | ||
38 | + | ||
39 | + /** | ||
40 | + * @inheritdoc | ||
41 | + */ | ||
42 | + public function attributeLabels() | ||
43 | + { | ||
44 | + return [ | ||
45 | + 'id' => Yii::t('app', 'ID'), | ||
46 | + 'model' => Yii::t('app', 'Model'), | ||
47 | + 'model_id' => Yii::t('app', 'Model ID'), | ||
48 | + 'name' => Yii::t('app', 'Name'), | ||
49 | + 'template' => Yii::t('app', 'Template'), | ||
50 | + 'parent_id' => Yii::t('app', 'Parent ID'), | ||
51 | + ]; | ||
52 | + } | ||
53 | +} |
1 | +<?php | ||
2 | + | ||
3 | +namespace backend\models; | ||
4 | + | ||
5 | +use Yii; | ||
6 | + | ||
7 | +/** | ||
8 | + * This is the model class for table "new_options_lang". | ||
9 | + * | ||
10 | + * @property integer $primary | ||
11 | + * @property integer $id | ||
12 | + * @property integer $lang_id | ||
13 | + * @property string $value | ||
14 | + */ | ||
15 | +class NewOptionsLang extends \yii\db\ActiveRecord | ||
16 | +{ | ||
17 | + const SCENARIO_ADD = 'add'; | ||
18 | + const SCENARIO_UPDATE = 'update'; | ||
19 | + | ||
20 | + /** | ||
21 | + * @inheritdoc | ||
22 | + */ | ||
23 | + public static function tableName() | ||
24 | + { | ||
25 | + return 'new_options_lang'; | ||
26 | + } | ||
27 | + | ||
28 | + /** | ||
29 | + * @inheritdoc | ||
30 | + */ | ||
31 | + public function rules() | ||
32 | + { | ||
33 | + return [ | ||
34 | + [['id', 'value'], 'required'], | ||
35 | + [['id', 'lang_id'], 'integer'], | ||
36 | + [['value'], 'string'] | ||
37 | + ]; | ||
38 | + } | ||
39 | + | ||
40 | + /** | ||
41 | + * @inheritdoc | ||
42 | + */ | ||
43 | + public function attributeLabels() | ||
44 | + { | ||
45 | + return [ | ||
46 | + 'primary' => Yii::t('app', 'Primary'), | ||
47 | + 'id' => Yii::t('app', 'ID'), | ||
48 | + 'lang_id' => Yii::t('app', 'Lang ID'), | ||
49 | + 'value' => Yii::t('app', 'Value'), | ||
50 | + ]; | ||
51 | + } | ||
52 | +} |
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\NewOptionsLang; | ||
9 | + | ||
10 | +/** | ||
11 | + * NewOptionsLangSearch represents the model behind the search form about `backend\models\NewOptionsLang`. | ||
12 | + */ | ||
13 | +class NewOptionsLangSearch extends NewOptionsLang | ||
14 | +{ | ||
15 | + /** | ||
16 | + * @inheritdoc | ||
17 | + */ | ||
18 | + public function rules() | ||
19 | + { | ||
20 | + return [ | ||
21 | + [['primary', 'id', 'lang_id'], 'integer'], | ||
22 | + [['value'], 'safe'], | ||
23 | + ]; | ||
24 | + } | ||
25 | + | ||
26 | + /** | ||
27 | + * @inheritdoc | ||
28 | + */ | ||
29 | + public function scenarios() | ||
30 | + { | ||
31 | + // bypass scenarios() implementation in the parent class | ||
32 | + return Model::scenarios(); | ||
33 | + } | ||
34 | + | ||
35 | + /** | ||
36 | + * Creates data provider instance with search query applied | ||
37 | + * | ||
38 | + * @param array $params | ||
39 | + * | ||
40 | + * @return ActiveDataProvider | ||
41 | + */ | ||
42 | + public function search($params) | ||
43 | + { | ||
44 | + $query = NewOptionsLang::find(); | ||
45 | + | ||
46 | + $dataProvider = new ActiveDataProvider([ | ||
47 | + 'query' => $query, | ||
48 | + ]); | ||
49 | + | ||
50 | + $this->load($params); | ||
51 | + | ||
52 | + if (!$this->validate()) { | ||
53 | + // uncomment the following line if you do not want to return any records when validation fails | ||
54 | + // $query->where('0=1'); | ||
55 | + return $dataProvider; | ||
56 | + } | ||
57 | + | ||
58 | + $query->andFilterWhere([ | ||
59 | + 'primary' => $this->primary, | ||
60 | + 'id' => $this->id, | ||
61 | + 'lang_id' => $this->lang_id, | ||
62 | + ]); | ||
63 | + | ||
64 | + $query->andFilterWhere(['like', 'value', $this->value]); | ||
65 | + | ||
66 | + return $dataProvider; | ||
67 | + } | ||
68 | +} |
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\Language */ | ||
8 | +/* @var $form yii\widgets\ActiveForm */ | ||
9 | +?> | ||
10 | + | ||
11 | +<div class="language-form"> | ||
12 | + | ||
13 | + <?php $form = ActiveForm::begin(); ?> | ||
14 | + <?php /*?> | ||
15 | + <?= $form->field($model[0], 'lang_code')->textInput(['maxlength' => true]) ?> | ||
16 | + | ||
17 | + <?= $form->field($model[0], 'is_default')->checkBox() ?> | ||
18 | + | ||
19 | + <?= $form->field($model[1], 'lang_title')->textInput(['maxlength' => true])?> | ||
20 | + | ||
21 | + <div class="form-group"> | ||
22 | + <?= Html::submitButton($model[0]->isNewRecord ? Yii::t('app', 'Create', array('name' => 'Имя')) : Yii::t('app', 'Update'), ['class' => $model[0]->isNewRecord ? 'btn btn-success' : 'btn btn-primary']) ?> | ||
23 | + </div> | ||
24 | + */ ?> | ||
25 | + <?php ActiveForm::end(); ?> | ||
26 | + | ||
27 | +</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\LanguageSearch */ | ||
8 | +/* @var $form yii\widgets\ActiveForm */ | ||
9 | +?> | ||
10 | + | ||
11 | +<div class="language-search"> | ||
12 | + | ||
13 | + <?php $form = ActiveForm::begin([ | ||
14 | + 'action' => ['index'], | ||
15 | + 'method' => 'get', | ||
16 | + ]); ?> | ||
17 | + | ||
18 | + <?= $form->field($model, 'language_id') ?> | ||
19 | + | ||
20 | + <?= $form->field($model, 'lang_code') ?> | ||
21 | + | ||
22 | + <?= $form->field($model, 'is_default') ?> | ||
23 | + | ||
24 | + <div class="form-group"> | ||
25 | + <?= Html::submitButton(Yii::t('app', 'Search'), ['class' => 'btn btn-primary']) ?> | ||
26 | + <?= Html::resetButton(Yii::t('app', 'Reset'), ['class' => 'btn btn-default']) ?> | ||
27 | + </div> | ||
28 | + | ||
29 | + <?php ActiveForm::end(); ?> | ||
30 | + | ||
31 | +</div> |
1 | +<?php | ||
2 | + | ||
3 | +use yii\helpers\Html; | ||
4 | + | ||
5 | + | ||
6 | +/* @var $this yii\web\View */ | ||
7 | +/* @var $model backend\models\Language */ | ||
8 | + | ||
9 | +/*$this->title = Yii::t('app', 'Create Language'); | ||
10 | +$this->params['breadcrumbs'][] = ['label' => Yii::t('app', 'Languages'), 'url' => ['index']]; | ||
11 | +$this->params['breadcrumbs'][] = $this->title;*/ | ||
12 | +echo $this->render('index', $layoutdata); | ||
13 | +?> | ||
14 | +<div class="lang-column-2"> | ||
15 | + | ||
16 | + <?= $this->render('_form', [ | ||
17 | + 'model' => $model | ||
18 | + ]) ?> | ||
19 | +</div> | ||
0 | \ No newline at end of file | 20 | \ No newline at end of file |
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\LanguageSearch */ | ||
8 | +/* @var $dataProvider yii\data\ActiveDataProvider */ | ||
9 | +$this->registerCssFile('/backend/web/css/language.css'); | ||
10 | +$this->registerJsFile('/backend/web/js/language.js', ['depends' => ['yii\web\JqueryAsset'], 'position' => $this::POS_END]); | ||
11 | +$this->title = Yii::t('app', 'Settings'); | ||
12 | +$this->params['breadcrumbs'][] = $this->title; | ||
13 | +?> | ||
14 | + <?php // echo $this->render('_search', ['model' => $searchModel]); ?> | ||
15 | + <div class="lang-column-1"> | ||
16 | + <h1><?= Html::encode($this->title) ?></h1> | ||
17 | + <ul class="settings_menu sidebar-menu"> | ||
18 | + <li> | ||
19 | + <a href="#collapseLanguages" data-toggle="collapse" aria-expanded="false" aria-controls="collapseLanguages"><?php echo \Yii::t('app', 'languages');?></a> | ||
20 | + <ul class="collapse settings_menu_inner" id="collapseLanguages"> | ||
21 | + <li> | ||
22 | + <a href="#collapseLanguagesList" data-toggle="collapse" aria-expanded="false" aria-controls="collapseLanguagesList"><?php echo \Yii::t('app', 'languages_list');?></a> | ||
23 | + <?= Html::a('', ['create'], ['class' => 'glyphicon glyphicon-plus']) ?> | ||
24 | + <div class="collapse" id="collapseLanguagesList"> | ||
25 | + <?= GridView::widget([ | ||
26 | + 'dataProvider' => $dataProvider, | ||
27 | + 'filterModel' => $searchModel, | ||
28 | + 'columns' => [ | ||
29 | + ['class' => 'yii\grid\SerialColumn'], | ||
30 | + | ||
31 | + 'language_id', | ||
32 | + 'lang_code', | ||
33 | + 'is_default', | ||
34 | + | ||
35 | + ['class' => 'yii\grid\ActionColumn'], | ||
36 | + ], | ||
37 | + ]); ?> | ||
38 | + </div> | ||
39 | + </li> | ||
40 | + <li> | ||
41 | + <a href="#collapseLanguagesStaticFront" data-toggle="collapse" aria-expanded="false" aria-controls="collapseLanguagesStaticFront"><?php echo \Yii::t('app', 'languages_static_front');?></a> | ||
42 | + <div class="collapse" id="collapseLanguagesStaticFront"> | ||
43 | + <?= GridView::widget([ | ||
44 | + 'dataProvider' => $dataProvider, | ||
45 | + 'filterModel' => $searchModel, | ||
46 | + 'columns' => [ | ||
47 | + ['class' => 'yii\grid\SerialColumn'], | ||
48 | + | ||
49 | + 'language_id', | ||
50 | + 'lang_code', | ||
51 | + 'is_default', | ||
52 | + | ||
53 | + ['class' => 'yii\grid\ActionColumn'], | ||
54 | + ], | ||
55 | + ]); ?> | ||
56 | + </div> | ||
57 | + </li> | ||
58 | + <li> | ||
59 | + <a href="#collapseLanguagesStaticAdmin" data-toggle="collapse" aria-expanded="false" aria-controls="collapseLanguagesStaticAdmin"><?php echo \Yii::t('app', 'languages_static_admin');?></a> | ||
60 | + <div class="collapse" id="collapseLanguagesStaticAdmin"> | ||
61 | + <?= GridView::widget([ | ||
62 | + 'dataProvider' => $dataProvider, | ||
63 | + 'filterModel' => $searchModel, | ||
64 | + 'columns' => [ | ||
65 | + ['class' => 'yii\grid\SerialColumn'], | ||
66 | + | ||
67 | + 'language_id', | ||
68 | + 'lang_code', | ||
69 | + 'is_default', | ||
70 | + | ||
71 | + ['class' => 'yii\grid\ActionColumn'], | ||
72 | + ], | ||
73 | + ]); ?> | ||
74 | + </div> | ||
75 | + </li> | ||
76 | + </ul> | ||
77 | + </li> | ||
78 | + <li> | ||
79 | + <a href="#collapseRoles" data-toggle="collapse" aria-expanded="false" aria-controls="collapseRoles"><?php echo \Yii::t('app', 'roles');?></a> | ||
80 | + <ul class="collapse settings_menu_inner" id="collapseRoles"> | ||
81 | + <li>Ipsum IpsumIpsum IpsumIpsum IpsumIpsum IpsumIpsum IpsumIpsum IpsumIpsum IpsumIpsum IpsumIpsum IpsumIpsum IpsumIpsum IpsumIpsum Ipsum</li> | ||
82 | + <li>Ipsum IpsumIpsum IpsumIpsum IpsumIpsum IpsumIpsum IpsumIpsum IpsumIpsum IpsumIpsum IpsumIpsum IpsumIpsum IpsumIpsum IpsumIpsum Ipsum</li> | ||
83 | + </ul> | ||
84 | + </li> | ||
85 | + </ul> | ||
86 | + </div> |
1 | +<?php | ||
2 | + | ||
3 | +use yii\helpers\Html; | ||
4 | + | ||
5 | +/* @var $this yii\web\View */ | ||
6 | +/* @var $model backend\models\Language */ | ||
7 | + | ||
8 | +/*$this->title = Yii::t('app', 'Update {modelClass}: ', [ | ||
9 | + 'modelClass' => 'Language', | ||
10 | +]) . ' ' . $model->language_id; | ||
11 | +$this->params['breadcrumbs'][] = ['label' => Yii::t('app', 'Languages'), 'url' => ['index']]; | ||
12 | +$this->params['breadcrumbs'][] = ['label' => $model->language_id, 'url' => ['view', 'id' => $model->language_id]]; | ||
13 | +$this->params['breadcrumbs'][] = Yii::t('app', 'Update');*/ | ||
14 | +echo $this->render('index', $layoutdata); | ||
15 | +?> | ||
16 | +<div class="lang-column-2"> | ||
17 | + | ||
18 | + <?= $this->render('_form', [ | ||
19 | + 'model' => $model, | ||
20 | + ]) ?> | ||
21 | + | ||
22 | +</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\Language */ | ||
8 | + | ||
9 | +/*$this->title = $model->language_id; | ||
10 | +$this->params['breadcrumbs'][] = ['label' => Yii::t('app', 'Languages'), 'url' => ['index']]; | ||
11 | +$this->params['breadcrumbs'][] = $this->title;*/ | ||
12 | +echo $this->render('index', $layoutdata); | ||
13 | +?> | ||
14 | +<div class="lang-column-2"> | ||
15 | + <?= DetailView::widget([ | ||
16 | + 'model' => $model, | ||
17 | + 'attributes' => [ | ||
18 | + 'language_id', | ||
19 | + 'lang_code', | ||
20 | + 'is_default', | ||
21 | + ], | ||
22 | + ]) ?> | ||
23 | + <p> | ||
24 | + <?= Html::a(Yii::t('app', 'Update'), ['update', 'id' => $model->language_id], ['class' => 'btn btn-primary']) ?> | ||
25 | + <?= Html::a(Yii::t('app', 'Delete'), ['delete', 'id' => $model->language_id], [ | ||
26 | + 'class' => 'btn btn-danger', | ||
27 | + 'data' => [ | ||
28 | + 'confirm' => Yii::t('app', 'Are you sure you want to delete this item?'), | ||
29 | + 'method' => 'post', | ||
30 | + ], | ||
31 | + ]) ?> | ||
32 | + </p> | ||
33 | +</div> | ||
0 | \ No newline at end of file | 34 | \ No newline at end of file |
1 | +<?php | ||
2 | + | ||
3 | +use yii\helpers\Html; | ||
4 | +use yii\widgets\ActiveForm; | ||
5 | + | ||
6 | +/* @var $this yii\web\View */ | ||
7 | +/* @var $model frontend\models\Option */ | ||
8 | +/* @var $form yii\widgets\ActiveForm */ | ||
9 | +?> | ||
10 | + | ||
11 | +<div class="option-form"> | ||
12 | + <?php $form = ActiveForm::begin(); ?> | ||
13 | + <input type="hidden" name="Option[model]" value="<?=$modeldb?>"/> | ||
14 | + <input type="hidden" name="Option[model_id]" value="<?=$model_id?>"/> | ||
15 | + <?php if($multiple) {?><p class="text-right"><span class="glyphicon glyphicon-plus add_row"></span></p><?php }?> | ||
16 | + <?php if(empty($models)) { | ||
17 | + ?> | ||
18 | + <div class="form-group" id="main_row"> | ||
19 | + <div class="form-wrapper"> | ||
20 | + <?php foreach($fields as $index => $field) { | ||
21 | + ?> | ||
22 | + <div class="fields_block"> | ||
23 | + <label for="Option[0][value][<?=$field['name']?>]" class="pull-left"><?php echo Yii::t('app', $field['name']); ?></label> | ||
24 | + <?php | ||
25 | + if($field['translate']) { ?><p class="text-right"><span class="glyphicon glyphicon-globe add_lang pull-right"></span></p><?php } | ||
26 | + ?> | ||
27 | + <div class="clearfix"></div> | ||
28 | + <input type="hidden" name="Option[0][<?=$field['name']?>][template]" value="<?=$field['template']?>"/> | ||
29 | + <input type="hidden" name="Option[0][<?=$field['name']?>][translate]" value="<?=$field['translate']?>"/> | ||
30 | + <input type="<?=$field['template']?>" name="Option[0][value][<?=$field['name']?>]" class="form-control required main_input" required/> | ||
31 | + <?php | ||
32 | + if($field['translate']) { | ||
33 | + ?> | ||
34 | + <div class="lang_inputs" style="display: none"> | ||
35 | + <?php | ||
36 | + foreach($model->getLangs() as $lang) { | ||
37 | + ?> | ||
38 | + <div class="form-group"> | ||
39 | + <div class="col-xs-1"><?=$lang['lang_code']?></div> | ||
40 | + <div class="col-xs-11"><input type="<?=$field['template']?>" name="Option[0][lang][<?=$field['name']?>][<?=$lang['language_id']?>]" class="form-control" /></div> | ||
41 | + <div class="clearfix"></div> | ||
42 | + </div> | ||
43 | + <?php | ||
44 | + } | ||
45 | + ?> | ||
46 | + </div> | ||
47 | + <?php | ||
48 | + } | ||
49 | + ?> | ||
50 | + </div> | ||
51 | + <?php | ||
52 | + }?> | ||
53 | + <p class="text-right"><span class="glyphicon glyphicon-minus remove_lang pull-right"></span></p> | ||
54 | + <hr /> | ||
55 | + </div> | ||
56 | + </div> | ||
57 | + <?php | ||
58 | + } else { | ||
59 | + $first = 1; | ||
60 | + foreach($models as $index => $row) { | ||
61 | + foreach($row as $key => $value) { | ||
62 | + if(!$modellang[$index][$key][0]->hasErrors('value')) { | ||
63 | + continue; | ||
64 | + } | ||
65 | + if($first) { | ||
66 | + ?> | ||
67 | + <div class="form-group" id="main_row"> | ||
68 | + <?php | ||
69 | + } | ||
70 | + ?> | ||
71 | + <div class="form-wrapper"> | ||
72 | + <div class="fields_block"> | ||
73 | + <label for="Option[0][<?=$key?>]"><?php echo Yii::t('app', $key); ?></label> | ||
74 | + <input type="hidden" name="Option[0][template]" value="<?=$value->template?>"/> | ||
75 | + <input type="<?=$value->template?>" name="Option[0][value][<?=$key?>]" class="form-control required main_input" required value="<?=$modellang[$index][$key][0]->value?>"/> | ||
76 | + <div class="help-block"><?=$modellang[$index][$key][0]->getFirstError('value')?></div> | ||
77 | + <?php | ||
78 | + if($field['translate']) { | ||
79 | + ?> | ||
80 | + <div class="lang_inputs"> | ||
81 | + <?php | ||
82 | + foreach($value->getLangs() as $lang) { | ||
83 | + ?> | ||
84 | + <div class="form-group"> | ||
85 | + <div class="col-xs-1"><?=$lang['lang_code']?></div> | ||
86 | + <div class="col-xs-11"><input type="<?=$value->template?>" name="Option[0][lang][<?=$key?>][<?=$lang['language_id']?>]" class="form-control" value="<?=$modellang[$index][$key][$lang['language_id']]->value?>"/></div> | ||
87 | + </div> | ||
88 | + <?php | ||
89 | + } | ||
90 | + ?> | ||
91 | + </div> | ||
92 | + <?php | ||
93 | + } ?> | ||
94 | + </div> | ||
95 | + <?php | ||
96 | + if($first) { | ||
97 | + ?> | ||
98 | + <p class="text-right"><span class="glyphicon glyphicon-minus remove_lang pull-right"></span></p> | ||
99 | + <hr /> | ||
100 | + </div> | ||
101 | + </div> | ||
102 | + <?php | ||
103 | + $first = 0; | ||
104 | + } | ||
105 | + ?> | ||
106 | + <?php | ||
107 | + } | ||
108 | + } | ||
109 | + }?> | ||
110 | + | ||
111 | + <div class="form-group"> | ||
112 | + <?= Html::submitButton($model->isNewRecord ? Yii::t('app', 'Create') : Yii::t('app', 'Update'), ['class' => $model->isNewRecord ? 'btn btn-success' : 'btn btn-primary']) ?> | ||
113 | + </div> | ||
114 | + | ||
115 | + <?php ActiveForm::end(); ?> | ||
116 | + <script> | ||
117 | + var form = '<?= $form->getId()?>'; | ||
118 | + </script> | ||
119 | +</div> |
1 | +<?php | ||
2 | + | ||
3 | +use yii\helpers\Html; | ||
4 | +use yii\widgets\ActiveForm; | ||
5 | + | ||
6 | +/* @var $this yii\web\View */ | ||
7 | +/* @var $model frontend\models\Option */ | ||
8 | +/* @var $form yii\widgets\ActiveForm */ | ||
9 | +?> | ||
10 | + | ||
11 | +<div class="option-form"> | ||
12 | + <?php $form = ActiveForm::begin(); ?> | ||
13 | + <input type="hidden" name="Option[model]" value="<?=$modeldb?>"/> | ||
14 | + <input type="hidden" name="Option[model_id]" value="<?=$model_id?>"/> | ||
15 | + <?php foreach($models as $id => $row) { | ||
16 | + ?> | ||
17 | + <label for="Option[<?=$id?>][<?=$key?>]"><?php echo Yii::t('app', $row->name); ?></label> | ||
18 | + <input type="hidden" name="Option[<?=$id?>][id]" value="<?=$id?>" /> | ||
19 | + <input type="hidden" name="Option[<?=$id?>][template]" value="<?=$row->template?>"/> | ||
20 | + <input type="<?=$row->template?>" name="Option[<?=$id?>][value][<?=$row->name?>]" class="form-control required" required value="<?=$modellang[$id][0]->value?>"/> | ||
21 | + <?php if($row->hasErrors()) { ?><div class="help-block"><?php echo $modellang[$id][0]->getFirstError('value');?></div> <?php } ?> | ||
22 | + <?php | ||
23 | + if($row->translate) { | ||
24 | + foreach($row->getLangs() as $lang_id => $lang) { | ||
25 | + ?> | ||
26 | + <div class="form-group"> | ||
27 | + <div class="col-xs-1"><?=$lang['lang_code']?></div> | ||
28 | + <div class="col-xs-11"><input type="<?=$row->template?>" name="Option[<?=$id?>][lang][<?=$lang['language_id']?>]" class="form-control" value="<?=$modellang[$id][$lang['language_id']]->value?>"/></div> | ||
29 | + </div> | ||
30 | + <?php | ||
31 | + } | ||
32 | + } | ||
33 | + | ||
34 | + }?> | ||
35 | + | ||
36 | + <div class="form-group"> | ||
37 | + <?= Html::submitButton($model->isNewRecord ? Yii::t('app', 'Create') : Yii::t('app', 'Update'), ['class' => $model->isNewRecord ? 'btn btn-success' : 'btn btn-primary']) ?> | ||
38 | + </div> | ||
39 | + | ||
40 | + <?php ActiveForm::end(); ?> | ||
41 | +</div> |
backend/views/language/create.php
@@ -24,7 +24,11 @@ echo $this->render('layout'); | @@ -24,7 +24,11 @@ echo $this->render('layout'); | ||
24 | [ | 24 | [ |
25 | 'class' => Column::className(), | 25 | 'class' => Column::className(), |
26 | 'content' => function($model, $key, $index, $column) { | 26 | 'content' => function($model, $key, $index, $column) { |
27 | +<<<<<<< 1fd2bdb43fc5cfdcf100cac8b72e67fd81e7f0fa | ||
27 | return '<span class="f32"><span class="flag '.$model->lang_code.'"></span></span>'; | 28 | return '<span class="f32"><span class="flag '.$model->lang_code.'"></span></span>'; |
29 | +======= | ||
30 | + return '<span class="f32"><span class="flag '.$model->country_code.'"></span></span>'; | ||
31 | +>>>>>>> 0e0edb85a79343e4d020ff05378179e2323b21bd | ||
28 | } | 32 | } |
29 | ], | 33 | ], |
30 | 'language_name', | 34 | 'language_name', |
1 | +<?php | ||
2 | + | ||
3 | +use yii\helpers\Html; | ||
4 | + | ||
5 | + | ||
6 | +/* @var $this yii\web\View */ | ||
7 | +/* @var $model frontend\models\Option */ | ||
8 | + | ||
9 | +$this->title = Yii::t('app', 'Create Option'); | ||
10 | +$this->params['breadcrumbs'][] = ['label' => Yii::t('app', 'Options'), 'url' => ['index']]; | ||
11 | +$this->params['breadcrumbs'][] = $this->title; | ||
12 | +echo $this->render('layout'); | ||
13 | +?> | ||
14 | +<div class="lang-column-2"> | ||
15 | + <?php foreach($forms as $oneform) { | ||
16 | + echo $this->render('_form_adress', $oneform); | ||
17 | + }?> | ||
18 | + | ||
19 | +</div> |
backend/views/language/index.php
@@ -24,7 +24,11 @@ echo $this->render('layout'); | @@ -24,7 +24,11 @@ echo $this->render('layout'); | ||
24 | [ | 24 | [ |
25 | 'class' => Column::className(), | 25 | 'class' => Column::className(), |
26 | 'content' => function($model, $key, $index, $column) { | 26 | 'content' => function($model, $key, $index, $column) { |
27 | +<<<<<<< 1fd2bdb43fc5cfdcf100cac8b72e67fd81e7f0fa | ||
27 | return '<span class="f32"><span class="flag '.$model->lang_code.'"></span></span>'; | 28 | return '<span class="f32"><span class="flag '.$model->lang_code.'"></span></span>'; |
29 | +======= | ||
30 | + return '<span class="f32"><span class="flag '.$model->country_code.'"></span></span>'; | ||
31 | +>>>>>>> 0e0edb85a79343e4d020ff05378179e2323b21bd | ||
28 | } | 32 | } |
29 | ], | 33 | ], |
30 | 'language_name', | 34 | 'language_name', |
backend/views/language/layout.php
@@ -36,5 +36,8 @@ $this->params['breadcrumbs'][] = $this->title; | @@ -36,5 +36,8 @@ $this->params['breadcrumbs'][] = $this->title; | ||
36 | <li>Ipsum IpsumIpsum IpsumIpsum IpsumIpsum IpsumIpsum IpsumIpsum IpsumIpsum IpsumIpsum IpsumIpsum IpsumIpsum IpsumIpsum IpsumIpsum Ipsum</li> | 36 | <li>Ipsum IpsumIpsum IpsumIpsum IpsumIpsum IpsumIpsum IpsumIpsum IpsumIpsum IpsumIpsum IpsumIpsum IpsumIpsum IpsumIpsum IpsumIpsum Ipsum</li> |
37 | </ul> | 37 | </ul> |
38 | </li> | 38 | </li> |
39 | + <li> | ||
40 | + <?= Html::a(Yii::t('app', 'adress'), ['view-adress'])?> | ||
41 | + </li> | ||
39 | </ul> | 42 | </ul> |
40 | </div> | 43 | </div> |
1 | +<?php | ||
2 | + | ||
3 | +use yii\helpers\Html; | ||
4 | + | ||
5 | +/* @var $this yii\web\View */ | ||
6 | +/* @var $model frontend\models\Option */ | ||
7 | + | ||
8 | +$this->title = Yii::t('app', 'Update {modelClass}: ', [ | ||
9 | + 'modelClass' => 'Option', | ||
10 | +]) . ' ' . $forms[0]['models'][\Yii::$app->request->get('id')]->name; | ||
11 | +$this->params['breadcrumbs'][] = ['label' => Yii::t('app', 'Options'), 'url' => ['index']]; | ||
12 | +$this->params['breadcrumbs'][] = ['label' => $forms[0]['models'][\Yii::$app->request->get('id')]->name, 'url' => ['view', 'id' => $forms[0]['models'][\Yii::$app->request->get('id')]->option_id]]; | ||
13 | +$this->params['breadcrumbs'][] = Yii::t('app', 'Update'); | ||
14 | +echo $this->render('layout'); | ||
15 | +?> | ||
16 | +<div class="lang-column-2"> | ||
17 | + <?php foreach($forms as $oneform) { | ||
18 | + echo $this->render('_form_adress_edit', $oneform); | ||
19 | + }?> | ||
20 | + | ||
21 | +</div> |
1 | +<?php | ||
2 | + | ||
3 | +use yii\helpers\Html; | ||
4 | +use yii\grid\GridView; | ||
5 | +use yii\grid\Column; | ||
6 | +use frontend\models\OptionLang; | ||
7 | + | ||
8 | +/* @var $this yii\web\View */ | ||
9 | +/* @var $searchModel backend\models\LanguageSearch */ | ||
10 | +/* @var $dataProvider yii\data\ActiveDataProvider */ | ||
11 | + | ||
12 | +$this->title = Yii::t('app', 'Languages'); | ||
13 | +$this->params['breadcrumbs'][] = $this->title; | ||
14 | +echo $this->render('layout'); | ||
15 | +?> | ||
16 | +<div class="lang-column-2"> | ||
17 | + | ||
18 | + <?php // echo $this->render('_search', ['model' => $searchModel]); ?> | ||
19 | + | ||
20 | + <?= GridView::widget([ | ||
21 | + 'dataProvider' => $dataProvider, | ||
22 | + 'layout' => "{items}", | ||
23 | + 'columns' => [ | ||
24 | + [ | ||
25 | + 'class' => 'yii\grid\Column', | ||
26 | + 'content' => function($model, $key, $index, $column) { | ||
27 | + return OptionLang::find()->select('value')->where(['lang_id' => 0, 'id' => $model->option_id])->scalar(); | ||
28 | + }, | ||
29 | + 'header' => Yii::t('app', 'adress_name') | ||
30 | + ], | ||
31 | + [ | ||
32 | + 'class' => 'yii\grid\ActionColumn', | ||
33 | + 'template' => '{update-adress} {delete-adress}', | ||
34 | + 'buttons' => [ | ||
35 | + 'update-adress' => function ($url, $model, $key) { | ||
36 | + return Html::a('', $url, ['class' => 'glyphicon glyphicon-pencil', 'title' => Yii::t('app', 'Change')]); | ||
37 | + }, | ||
38 | + 'delete-adress' => function ($url, $model, $key) { | ||
39 | + return Html::a('', $url, ['class' => 'glyphicon glyphicon-trash', 'title' => Yii::t('app', 'Delete')]); | ||
40 | + }, | ||
41 | + ], | ||
42 | + ] | ||
43 | + ] | ||
44 | + ]); ?> | ||
45 | + | ||
46 | + <p class="text-right"> | ||
47 | + <?= Html::a(Yii::t('app', 'Create adress'), ['create-adress'], ['class' => 'btn btn-success']) ?> | ||
48 | + </p> | ||
49 | + | ||
50 | +</div> |
1 | +<?php | ||
2 | +use yii\widgets\Breadcrumbs; | ||
3 | +use dmstr\widgets\Alert; | ||
4 | +use yii\helpers\Html; | ||
5 | + | ||
6 | +?> | ||
7 | +<div class="content-wrapper"> | ||
8 | + <section class="content-header"> | ||
9 | + <?php if (isset($this->blocks['content-header'])) { ?> | ||
10 | + <h1><?= $this->blocks['content-header'] ?></h1> | ||
11 | + <?php } else { ?> | ||
12 | + <h1> | ||
13 | + <?php | ||
14 | + if ($this->title !== null) { | ||
15 | + echo \yii\helpers\Html::encode($this->title); | ||
16 | + } else { | ||
17 | + echo \yii\helpers\Inflector::camel2words( | ||
18 | + \yii\helpers\Inflector::id2camel($this->context->module->id) | ||
19 | + ); | ||
20 | + echo ($this->context->module->id !== \Yii::$app->id) ? '<small>Module</small>' : ''; | ||
21 | + } ?> | ||
22 | + </h1> | ||
23 | + <?php } ?> | ||
24 | + | ||
25 | + <?= | ||
26 | + Breadcrumbs::widget( | ||
27 | + [ | ||
28 | + 'links' => isset($this->params['breadcrumbs']) ? $this->params['breadcrumbs'] : [], | ||
29 | + ] | ||
30 | + ) ?> | ||
31 | + </section> | ||
32 | + | ||
33 | + <section class="content"> | ||
34 | + <?= Alert::widget() ?> | ||
35 | + <?= $content ?> | ||
36 | + </section> | ||
37 | +</div> | ||
38 | + | ||
39 | +<footer class="main-footer"> | ||
40 | + <div class="pull-right hidden-xs"> | ||
41 | + <b>Version</b> 2.0 | ||
42 | + </div> | ||
43 | + <strong>Copyright © 2014-2015 <a href="http://almsaeedstudio.com">Almsaeed Studio</a>.</strong> All rights | ||
44 | + reserved. | ||
45 | +</footer> | ||
46 | + | ||
47 | +<!-- Control Sidebar --> | ||
48 | +<aside class="control-sidebar control-sidebar-dark"> | ||
49 | + <!-- Create the tabs --> | ||
50 | + <ul class="nav nav-tabs nav-justified control-sidebar-tabs"> | ||
51 | + <li><a href="#control-sidebar-home-tab" data-toggle="tab"><i class="fa fa-home"></i></a></li> | ||
52 | + <li><a href="#control-sidebar-settings-tab" data-toggle="tab"><i class="fa fa-gears"></i></a></li> | ||
53 | + </ul> | ||
54 | + <!-- Tab panes --> | ||
55 | + <div class="tab-content"> | ||
56 | + <!-- Home tab content --> | ||
57 | + <div class="tab-pane" id="control-sidebar-home-tab"> | ||
58 | + <h3 class="control-sidebar-heading">Recent Activity</h3> | ||
59 | + <ul class='control-sidebar-menu'> | ||
60 | + <li> | ||
61 | + <a href='javascript::;'> | ||
62 | + <i class="menu-icon fa fa-birthday-cake bg-red"></i> | ||
63 | + | ||
64 | + <div class="menu-info"> | ||
65 | + <h4 class="control-sidebar-subheading">Langdon's Birthday</h4> | ||
66 | + | ||
67 | + <p>Will be 23 on April 24th</p> | ||
68 | + </div> | ||
69 | + </a> | ||
70 | + </li> | ||
71 | + <li> | ||
72 | + <a href='javascript::;'> | ||
73 | + <i class="menu-icon fa fa-user bg-yellow"></i> | ||
74 | + | ||
75 | + <div class="menu-info"> | ||
76 | + <h4 class="control-sidebar-subheading">Frodo Updated His Profile</h4> | ||
77 | + | ||
78 | + <p>New phone +1(800)555-1234</p> | ||
79 | + </div> | ||
80 | + </a> | ||
81 | + </li> | ||
82 | + <li> | ||
83 | + <a href='javascript::;'> | ||
84 | + <i class="menu-icon fa fa-envelope-o bg-light-blue"></i> | ||
85 | + | ||
86 | + <div class="menu-info"> | ||
87 | + <h4 class="control-sidebar-subheading">Nora Joined Mailing List</h4> | ||
88 | + | ||
89 | + <p>nora@example.com</p> | ||
90 | + </div> | ||
91 | + </a> | ||
92 | + </li> | ||
93 | + <li> | ||
94 | + <a href='javascript::;'> | ||
95 | + <i class="menu-icon fa fa-file-code-o bg-green"></i> | ||
96 | + | ||
97 | + <div class="menu-info"> | ||
98 | + <h4 class="control-sidebar-subheading">Cron Job 254 Executed</h4> | ||
99 | + | ||
100 | + <p>Execution time 5 seconds</p> | ||
101 | + </div> | ||
102 | + </a> | ||
103 | + </li> | ||
104 | + </ul> | ||
105 | + <!-- /.control-sidebar-menu --> | ||
106 | + | ||
107 | + <h3 class="control-sidebar-heading">Tasks Progress</h3> | ||
108 | + <ul class='control-sidebar-menu'> | ||
109 | + <li> | ||
110 | + <a href='javascript::;'> | ||
111 | + <h4 class="control-sidebar-subheading"> | ||
112 | + Custom Template Design | ||
113 | + <span class="label label-danger pull-right">70%</span> | ||
114 | + </h4> | ||
115 | + | ||
116 | + <div class="progress progress-xxs"> | ||
117 | + <div class="progress-bar progress-bar-danger" style="width: 70%"></div> | ||
118 | + </div> | ||
119 | + </a> | ||
120 | + </li> | ||
121 | + <li> | ||
122 | + <a href='javascript::;'> | ||
123 | + <h4 class="control-sidebar-subheading"> | ||
124 | + Update Resume | ||
125 | + <span class="label label-success pull-right">95%</span> | ||
126 | + </h4> | ||
127 | + | ||
128 | + <div class="progress progress-xxs"> | ||
129 | + <div class="progress-bar progress-bar-success" style="width: 95%"></div> | ||
130 | + </div> | ||
131 | + </a> | ||
132 | + </li> | ||
133 | + <li> | ||
134 | + <a href='javascript::;'> | ||
135 | + <h4 class="control-sidebar-subheading"> | ||
136 | + Laravel Integration | ||
137 | + <span class="label label-waring pull-right">50%</span> | ||
138 | + </h4> | ||
139 | + | ||
140 | + <div class="progress progress-xxs"> | ||
141 | + <div class="progress-bar progress-bar-warning" style="width: 50%"></div> | ||
142 | + </div> | ||
143 | + </a> | ||
144 | + </li> | ||
145 | + <li> | ||
146 | + <a href='javascript::;'> | ||
147 | + <h4 class="control-sidebar-subheading"> | ||
148 | + Back End Framework | ||
149 | + <span class="label label-primary pull-right">68%</span> | ||
150 | + </h4> | ||
151 | + | ||
152 | + <div class="progress progress-xxs"> | ||
153 | + <div class="progress-bar progress-bar-primary" style="width: 68%"></div> | ||
154 | + </div> | ||
155 | + </a> | ||
156 | + </li> | ||
157 | + </ul> | ||
158 | + <!-- /.control-sidebar-menu --> | ||
159 | + | ||
160 | + </div> | ||
161 | + <!-- /.tab-pane --> | ||
162 | + | ||
163 | + <!-- Settings tab content --> | ||
164 | + <div class="tab-pane" id="control-sidebar-settings-tab"> | ||
165 | + <form method="post"> | ||
166 | + <h3 class="control-sidebar-heading">General Settings</h3> | ||
167 | + | ||
168 | + <div class="form-group"> | ||
169 | + <label class="control-sidebar-subheading"> | ||
170 | + Report panel usage | ||
171 | + <input type="checkbox" class="pull-right" checked/> | ||
172 | + </label> | ||
173 | + | ||
174 | + <p> | ||
175 | + Some information about this general settings option | ||
176 | + </p> | ||
177 | + </div> | ||
178 | + <!-- /.form-group --> | ||
179 | + | ||
180 | + <div class="form-group"> | ||
181 | + <label class="control-sidebar-subheading"> | ||
182 | + Allow mail redirect | ||
183 | + <input type="checkbox" class="pull-right" checked/> | ||
184 | + </label> | ||
185 | + | ||
186 | + <p> | ||
187 | + Other sets of options are available | ||
188 | + </p> | ||
189 | + </div> | ||
190 | + <!-- /.form-group --> | ||
191 | + | ||
192 | + <div class="form-group"> | ||
193 | + <label class="control-sidebar-subheading"> | ||
194 | + Expose author name in posts | ||
195 | + <input type="checkbox" class="pull-right" checked/> | ||
196 | + </label> | ||
197 | + | ||
198 | + <p> | ||
199 | + Allow the user to show his name in blog posts | ||
200 | + </p> | ||
201 | + </div> | ||
202 | + <!-- /.form-group --> | ||
203 | + | ||
204 | + <h3 class="control-sidebar-heading">Chat Settings</h3> | ||
205 | + | ||
206 | + <div class="form-group"> | ||
207 | + <label class="control-sidebar-subheading"> | ||
208 | + Show me as online | ||
209 | + <input type="checkbox" class="pull-right" checked/> | ||
210 | + </label> | ||
211 | + </div> | ||
212 | + <!-- /.form-group --> | ||
213 | + | ||
214 | + <div class="form-group"> | ||
215 | + <label class="control-sidebar-subheading"> | ||
216 | + Turn off notifications | ||
217 | + <input type="checkbox" class="pull-right"/> | ||
218 | + </label> | ||
219 | + </div> | ||
220 | + <!-- /.form-group --> | ||
221 | + | ||
222 | + <div class="form-group"> | ||
223 | + <label class="control-sidebar-subheading"> | ||
224 | + Delete chat history | ||
225 | + <a href="javascript::;" class="text-red pull-right"><i class="fa fa-trash-o"></i></a> | ||
226 | + </label> | ||
227 | + </div> | ||
228 | + <!-- /.form-group --> | ||
229 | + </form> | ||
230 | + <?=Html::a( | ||
231 | + \Yii::t('app', 'settings'), | ||
232 | + ['/language'], | ||
233 | + ['data-method' => 'post', 'class' => 'btn btn-default btn-flat'] | ||
234 | + )?> | ||
235 | + </div> | ||
236 | + <!-- /.tab-pane --> | ||
237 | + </div> | ||
238 | +</aside><!-- /.control-sidebar --> | ||
239 | +<!-- Add the sidebar's background. This div must be placed | ||
240 | + immediately after the control sidebar --> | ||
241 | +<div class='control-sidebar-bg'></div> | ||
0 | \ No newline at end of file | 242 | \ No newline at end of file |
1 | +<?php | ||
2 | + | ||
3 | +use yii\helpers\Html; | ||
4 | +use yii\helpers\Url; | ||
5 | + | ||
6 | +$username = Yii::$app->user->identity->firstname.' '.Yii::$app->user->identity->lastname; | ||
7 | + | ||
8 | +/* @var $this \yii\web\View */ | ||
9 | +/* @var $content string */ | ||
10 | +?> | ||
11 | + | ||
12 | +<header class="main-header"> | ||
13 | + | ||
14 | + <?= Html::a('<span class="logo-mini">APP</span><span class="logo-lg">' . Yii::$app->name . '</span>', Yii::$app->homeUrl, ['class' => 'logo']) ?> | ||
15 | + | ||
16 | + <nav class="navbar navbar-static-top" role="navigation"> | ||
17 | + | ||
18 | + <a href="#" class="sidebar-toggle" data-toggle="offcanvas" role="button"> | ||
19 | + <span class="sr-only">Toggle navigation</span> | ||
20 | + </a> | ||
21 | + | ||
22 | + <div class="navbar-custom-menu"> | ||
23 | + | ||
24 | + <ul class="nav navbar-nav"> | ||
25 | + | ||
26 | + <!-- Messages: style can be found in dropdown.less--> | ||
27 | + <li class="dropdown messages-menu"> | ||
28 | + <a href="#" class="dropdown-toggle" data-toggle="dropdown"> | ||
29 | + <i class="fa fa-envelope-o"></i> | ||
30 | + <span class="label label-success">4</span> | ||
31 | + </a> | ||
32 | + <ul class="dropdown-menu"> | ||
33 | + <li class="header">You have 4 messages</li> | ||
34 | + <li> | ||
35 | + <!-- inner menu: contains the actual data --> | ||
36 | + <ul class="menu"> | ||
37 | + <li><!-- start message --> | ||
38 | + <a href="#"> | ||
39 | + <div class="pull-left"> | ||
40 | + <img src="<?= $directoryAsset ?>/img/user2-160x160.jpg" class="img-circle" | ||
41 | + alt="User Image"/> | ||
42 | + </div> | ||
43 | + <h4> | ||
44 | + Support Team | ||
45 | + <small><i class="fa fa-clock-o"></i> 5 mins</small> | ||
46 | + </h4> | ||
47 | + <p>Why not buy a new awesome theme?</p> | ||
48 | + </a> | ||
49 | + </li> | ||
50 | + <!-- end message --> | ||
51 | + <li> | ||
52 | + <a href="#"> | ||
53 | + <div class="pull-left"> | ||
54 | + <img src="<?= $directoryAsset ?>/img/user3-128x128.jpg" class="img-circle" | ||
55 | + alt="user image"/> | ||
56 | + </div> | ||
57 | + <h4> | ||
58 | + AdminLTE Design Team | ||
59 | + <small><i class="fa fa-clock-o"></i> 2 hours</small> | ||
60 | + </h4> | ||
61 | + <p>Why not buy a new awesome theme?</p> | ||
62 | + </a> | ||
63 | + </li> | ||
64 | + <li> | ||
65 | + <a href="#"> | ||
66 | + <div class="pull-left"> | ||
67 | + <img src="<?= $directoryAsset ?>/img/user4-128x128.jpg" class="img-circle" | ||
68 | + alt="user image"/> | ||
69 | + </div> | ||
70 | + <h4> | ||
71 | + Developers | ||
72 | + <small><i class="fa fa-clock-o"></i> Today</small> | ||
73 | + </h4> | ||
74 | + <p>Why not buy a new awesome theme?</p> | ||
75 | + </a> | ||
76 | + </li> | ||
77 | + <li> | ||
78 | + <a href="#"> | ||
79 | + <div class="pull-left"> | ||
80 | + <img src="<?= $directoryAsset ?>/img/user3-128x128.jpg" class="img-circle" | ||
81 | + alt="user image"/> | ||
82 | + </div> | ||
83 | + <h4> | ||
84 | + Sales Department | ||
85 | + <small><i class="fa fa-clock-o"></i> Yesterday</small> | ||
86 | + </h4> | ||
87 | + <p>Why not buy a new awesome theme?</p> | ||
88 | + </a> | ||
89 | + </li> | ||
90 | + <li> | ||
91 | + <a href="#"> | ||
92 | + <div class="pull-left"> | ||
93 | + <img src="<?= $directoryAsset ?>/img/user4-128x128.jpg" class="img-circle" | ||
94 | + alt="user image"/> | ||
95 | + </div> | ||
96 | + <h4> | ||
97 | + Reviewers | ||
98 | + <small><i class="fa fa-clock-o"></i> 2 days</small> | ||
99 | + </h4> | ||
100 | + <p>Why not buy a new awesome theme?</p> | ||
101 | + </a> | ||
102 | + </li> | ||
103 | + </ul> | ||
104 | + </li> | ||
105 | + <li class="footer"><a href="#">See All Messages</a></li> | ||
106 | + </ul> | ||
107 | + </li> | ||
108 | + <li class="dropdown notifications-menu"> | ||
109 | + <a href="#" class="dropdown-toggle" data-toggle="dropdown"> | ||
110 | + <i class="fa fa-bell-o"></i> | ||
111 | + <span class="label label-warning">10</span> | ||
112 | + </a> | ||
113 | + <ul class="dropdown-menu"> | ||
114 | + <li class="header">You have 10 notifications</li> | ||
115 | + <li> | ||
116 | + <!-- inner menu: contains the actual data --> | ||
117 | + <ul class="menu"> | ||
118 | + <li> | ||
119 | + <a href="#"> | ||
120 | + <i class="fa fa-users text-aqua"></i> 5 new members joined today | ||
121 | + </a> | ||
122 | + </li> | ||
123 | + <li> | ||
124 | + <a href="#"> | ||
125 | + <i class="fa fa-warning text-yellow"></i> Very long description here that may | ||
126 | + not fit into the page and may cause design problems | ||
127 | + </a> | ||
128 | + </li> | ||
129 | + <li> | ||
130 | + <a href="#"> | ||
131 | + <i class="fa fa-users text-red"></i> 5 new members joined | ||
132 | + </a> | ||
133 | + </li> | ||
134 | + | ||
135 | + <li> | ||
136 | + <a href="#"> | ||
137 | + <i class="fa fa-shopping-cart text-green"></i> 25 sales made | ||
138 | + </a> | ||
139 | + </li> | ||
140 | + <li> | ||
141 | + <a href="#"> | ||
142 | + <i class="fa fa-user text-red"></i> You changed your username | ||
143 | + </a> | ||
144 | + </li> | ||
145 | + </ul> | ||
146 | + </li> | ||
147 | + <li class="footer"><a href="#">View all</a></li> | ||
148 | + </ul> | ||
149 | + </li> | ||
150 | + <!-- Tasks: style can be found in dropdown.less --> | ||
151 | + <li class="dropdown tasks-menu"> | ||
152 | + <a href="#" class="dropdown-toggle" data-toggle="dropdown"> | ||
153 | + <i class="fa fa-flag-o"></i> | ||
154 | + <span class="label label-danger">9</span> | ||
155 | + </a> | ||
156 | + <ul class="dropdown-menu"> | ||
157 | + <li class="header">You have 9 tasks</li> | ||
158 | + <li> | ||
159 | + <!-- inner menu: contains the actual data --> | ||
160 | + <ul class="menu"> | ||
161 | + <li><!-- Task item --> | ||
162 | + <a href="#"> | ||
163 | + <h3> | ||
164 | + Design some buttons | ||
165 | + <small class="pull-right">20%</small> | ||
166 | + </h3> | ||
167 | + <div class="progress xs"> | ||
168 | + <div class="progress-bar progress-bar-aqua" style="width: 20%" | ||
169 | + role="progressbar" aria-valuenow="20" aria-valuemin="0" | ||
170 | + aria-valuemax="100"> | ||
171 | + <span class="sr-only">20% Complete</span> | ||
172 | + </div> | ||
173 | + </div> | ||
174 | + </a> | ||
175 | + </li> | ||
176 | + <!-- end task item --> | ||
177 | + <li><!-- Task item --> | ||
178 | + <a href="#"> | ||
179 | + <h3> | ||
180 | + Create a nice theme | ||
181 | + <small class="pull-right">40%</small> | ||
182 | + </h3> | ||
183 | + <div class="progress xs"> | ||
184 | + <div class="progress-bar progress-bar-green" style="width: 40%" | ||
185 | + role="progressbar" aria-valuenow="20" aria-valuemin="0" | ||
186 | + aria-valuemax="100"> | ||
187 | + <span class="sr-only">40% Complete</span> | ||
188 | + </div> | ||
189 | + </div> | ||
190 | + </a> | ||
191 | + </li> | ||
192 | + <!-- end task item --> | ||
193 | + <li><!-- Task item --> | ||
194 | + <a href="#"> | ||
195 | + <h3> | ||
196 | + Some task I need to do | ||
197 | + <small class="pull-right">60%</small> | ||
198 | + </h3> | ||
199 | + <div class="progress xs"> | ||
200 | + <div class="progress-bar progress-bar-red" style="width: 60%" | ||
201 | + role="progressbar" aria-valuenow="20" aria-valuemin="0" | ||
202 | + aria-valuemax="100"> | ||
203 | + <span class="sr-only">60% Complete</span> | ||
204 | + </div> | ||
205 | + </div> | ||
206 | + </a> | ||
207 | + </li> | ||
208 | + <!-- end task item --> | ||
209 | + <li><!-- Task item --> | ||
210 | + <a href="#"> | ||
211 | + <h3> | ||
212 | + Make beautiful transitions | ||
213 | + <small class="pull-right">80%</small> | ||
214 | + </h3> | ||
215 | + <div class="progress xs"> | ||
216 | + <div class="progress-bar progress-bar-yellow" style="width: 80%" | ||
217 | + role="progressbar" aria-valuenow="20" aria-valuemin="0" | ||
218 | + aria-valuemax="100"> | ||
219 | + <span class="sr-only">80% Complete</span> | ||
220 | + </div> | ||
221 | + </div> | ||
222 | + </a> | ||
223 | + </li> | ||
224 | + <!-- end task item --> | ||
225 | + </ul> | ||
226 | + </li> | ||
227 | + <li class="footer"> | ||
228 | + <a href="#">View all tasks</a> | ||
229 | + </li> | ||
230 | + </ul> | ||
231 | + </li> | ||
232 | + <!-- User Account: style can be found in dropdown.less --> | ||
233 | + | ||
234 | + <li class="dropdown user user-menu"> | ||
235 | + <a href="#" class="dropdown-toggle" data-toggle="dropdown"> | ||
236 | + <img src="<?= $directoryAsset ?>/img/user2-160x160.jpg" class="user-image" alt="User Image"/> | ||
237 | + <span class="hidden-xs"><?=$username; ?></span> | ||
238 | + </a> | ||
239 | + <ul class="dropdown-menu"> | ||
240 | + <!-- User image --> | ||
241 | + <li class="user-header"> | ||
242 | + <img src="<?= $directoryAsset ?>/img/user2-160x160.jpg" class="img-circle" | ||
243 | + alt="User Image"/> | ||
244 | + | ||
245 | + <p> | ||
246 | + <?=$username; ?> - Web Developer | ||
247 | + <small>Member since Nov. 2012</small> | ||
248 | + </p> | ||
249 | + </li> | ||
250 | + <!-- | ||
251 | + Menu Body | ||
252 | + <li class="user-body"> | ||
253 | + <div class="col-xs-4 text-center"> | ||
254 | + <a href="#">Followers</a> | ||
255 | + </div> | ||
256 | + <div class="col-xs-4 text-center"> | ||
257 | + <a href="#">Sales</a> | ||
258 | + </div> | ||
259 | + <div class="col-xs-4 text-center"> | ||
260 | + <a href="#">Friends</a> | ||
261 | + </div> | ||
262 | + </li> | ||
263 | + --> | ||
264 | + <!-- Menu Footer--> | ||
265 | + <li class="user-footer"> | ||
266 | + <div class="pull-left"> | ||
267 | + <a href="<?=Url::toRoute('site/profile'); ?>" class="btn btn-default btn-flat">Profile</a> | ||
268 | + </div> | ||
269 | + <div class="pull-right"> | ||
270 | + <?= Html::a( | ||
271 | + 'Sign out', | ||
272 | + ['/site/logout'], | ||
273 | + ['data-method' => 'post', 'class' => 'btn btn-default btn-flat'] | ||
274 | + ) ?> | ||
275 | + </div> | ||
276 | + </li> | ||
277 | + </ul> | ||
278 | + </li> | ||
279 | + | ||
280 | + <!-- User Account: style can be found in dropdown.less --> | ||
281 | + <li> | ||
282 | + <a href="#" data-toggle="control-sidebar"><i class="fa fa-gears"></i></a> | ||
283 | + </li> | ||
284 | + </ul> | ||
285 | + </div> | ||
286 | + </nav> | ||
287 | +</header> |
1 | +<aside class="main-sidebar"> | ||
2 | + | ||
3 | + <section class="sidebar"> | ||
4 | + | ||
5 | + <!-- Sidebar user panel --> | ||
6 | + <div class="user-panel"> | ||
7 | + <div class="pull-left image"> | ||
8 | + <img src="<?= $directoryAsset ?>/img/user2-160x160.jpg" class="img-circle" alt="User Image"/> | ||
9 | + </div> | ||
10 | + <div class="pull-left info"> | ||
11 | + <p>Alexander Pierce</p> | ||
12 | + | ||
13 | + <a href="#"><i class="fa fa-circle text-success"></i> Online</a> | ||
14 | + </div> | ||
15 | + </div> | ||
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' => ['/page/']], | ||
34 | + ['label' => 'Термин', 'icon' => 'fa fa-file-code-o', 'url' => ['/termin_lang/']], | ||
35 | + ['label' => 'Меню', 'icon' => 'fa fa-file-code-o', 'url' => ['/menu/']], | ||
36 | + ['label' => 'Заявки', 'icon' => 'fa fa-file-code-o', 'url' => ['/site/requests/']], | ||
37 | + ['label' => 'Gii', 'icon' => 'fa fa-file-code-o', 'url' => ['/gii']], | ||
38 | + ['label' => 'Debug', 'icon' => 'fa fa-dashboard', 'url' => ['/debug']], | ||
39 | + ['label' => 'Login', 'url' => ['site/login'], 'visible' => Yii::$app->user->isGuest], | ||
40 | + ['label' => 'Пользователи', 'icon' => 'fa fa-file-code-o', 'url' => ['/user/']], | ||
41 | + [ | ||
42 | + 'label' => 'Роли', | ||
43 | + 'icon' => 'fa fa-share', | ||
44 | + 'url' => '#', | ||
45 | + 'items' => [ | ||
46 | + ['label' => 'Управление ролями', 'icon' => 'fa fa-file-code-o', 'url' => ['/permit/access/role'],], | ||
47 | + ['label' => 'Управление правами доступа', 'icon' => 'fa fa-dashboard', 'url' => ['/permit/access/permission'],], | ||
48 | + ], | ||
49 | + ], | ||
50 | + [ | ||
51 | + 'label' => 'Same tools', | ||
52 | + 'icon' => 'fa fa-share', | ||
53 | + 'url' => '#', | ||
54 | + 'items' => [ | ||
55 | + ['label' => 'Gii', 'icon' => 'fa fa-file-code-o', 'url' => ['/gii'],], | ||
56 | + ['label' => 'Debug', 'icon' => 'fa fa-dashboard', 'url' => ['/debug'],], | ||
57 | + [ | ||
58 | + 'label' => 'Level One', | ||
59 | + 'icon' => 'fa fa-circle-o', | ||
60 | + 'url' => '#', | ||
61 | + 'items' => [ | ||
62 | + ['label' => 'Level Two', 'icon' => 'fa fa-circle-o', 'url' => '#',], | ||
63 | + [ | ||
64 | + 'label' => 'Level Two', | ||
65 | + 'icon' => 'fa fa-circle-o', | ||
66 | + 'url' => '#', | ||
67 | + 'items' => [ | ||
68 | + ['label' => 'Level Three', 'icon' => 'fa fa-circle-o', 'url' => '#',], | ||
69 | + ['label' => 'Level Three', 'icon' => 'fa fa-circle-o', 'url' => '#',], | ||
70 | + ], | ||
71 | + ], | ||
72 | + ], | ||
73 | + ], | ||
74 | + ], | ||
75 | + ], | ||
76 | + ], | ||
77 | + ] | ||
78 | + ) ?> | ||
79 | + | ||
80 | + </section> | ||
81 | + | ||
82 | +</aside> |
1 | +<?php | ||
2 | +use backend\assets\AppAsset; | ||
3 | +use yii\helpers\Html; | ||
4 | + | ||
5 | +/* @var $this \yii\web\View */ | ||
6 | +/* @var $content string */ | ||
7 | + | ||
8 | +dmstr\web\AdminLteAsset::register($this); | ||
9 | +?> | ||
10 | +<?php $this->beginPage() ?> | ||
11 | +<!DOCTYPE html> | ||
12 | +<html lang="<?= Yii::$app->language ?>"> | ||
13 | +<head> | ||
14 | + <meta charset="<?= Yii::$app->charset ?>"/> | ||
15 | + <meta name="viewport" content="width=device-width, initial-scale=1"> | ||
16 | + <?= Html::csrfMetaTags() ?> | ||
17 | + <title><?= Html::encode($this->title) ?></title> | ||
18 | + <?php $this->head() ?> | ||
19 | +</head> | ||
20 | +<body class="login-page"> | ||
21 | + | ||
22 | +<?php $this->beginBody() ?> | ||
23 | + | ||
24 | + <?= $content ?> | ||
25 | + | ||
26 | +<?php $this->endBody() ?> | ||
27 | +</body> | ||
28 | +</html> | ||
29 | +<?php $this->endPage() ?> |
backend/views/layouts/main.php
1 | <?php | 1 | <?php |
2 | +use yii\helpers\Html; | ||
2 | 3 | ||
3 | /* @var $this \yii\web\View */ | 4 | /* @var $this \yii\web\View */ |
4 | /* @var $content string */ | 5 | /* @var $content string */ |
5 | 6 | ||
6 | -use backend\assets\AppAsset; | ||
7 | -use yii\helpers\Html; | ||
8 | -use yii\bootstrap\Nav; | ||
9 | -use yii\bootstrap\NavBar; | ||
10 | -use yii\widgets\Breadcrumbs; | ||
11 | -use common\widgets\Alert; | ||
12 | 7 | ||
13 | -AppAsset::register($this); | ||
14 | -?> | ||
15 | -<?php $this->beginPage() ?> | ||
16 | -<!DOCTYPE html> | ||
17 | -<html lang="<?= Yii::$app->language ?>"> | ||
18 | -<head> | ||
19 | - <meta charset="<?= Yii::$app->charset ?>"> | ||
20 | - <meta name="viewport" content="width=device-width, initial-scale=1"> | ||
21 | - <?= Html::csrfMetaTags() ?> | ||
22 | - <title><?= Html::encode($this->title) ?></title> | ||
23 | - <?php $this->head() ?> | ||
24 | -</head> | ||
25 | -<body> | ||
26 | -<?php $this->beginBody() ?> | 8 | +if (Yii::$app->controller->action->id === 'login') { |
9 | +/** | ||
10 | + * Do not use this code in your template. Remove it. | ||
11 | + * Instead, use the code $this->layout = '//main-login'; in your controller. | ||
12 | + */ | ||
13 | + echo $this->render( | ||
14 | + 'main-login', | ||
15 | + ['content' => $content] | ||
16 | + ); | ||
17 | +} else { | ||
27 | 18 | ||
28 | -<div class="wrap"> | ||
29 | - <?php | ||
30 | - NavBar::begin([ | ||
31 | - 'brandLabel' => 'My Company', | ||
32 | - 'brandUrl' => Yii::$app->homeUrl, | ||
33 | - 'options' => [ | ||
34 | - 'class' => 'navbar-inverse navbar-fixed-top', | ||
35 | - ], | ||
36 | - ]); | ||
37 | - $menuItems = [ | ||
38 | - ['label' => 'Home', 'url' => ['/site/index']], | ||
39 | - ]; | ||
40 | - if (Yii::$app->user->isGuest) { | ||
41 | - $menuItems[] = ['label' => 'Login', 'url' => ['/site/login']]; | 19 | + if (class_exists('backend\assets\AppAsset')) { |
20 | + backend\assets\AppAsset::register($this); | ||
42 | } else { | 21 | } else { |
43 | - $menuItems[] = [ | ||
44 | - 'label' => 'Logout (' . Yii::$app->user->identity->username . ')', | ||
45 | - 'url' => ['/site/logout'], | ||
46 | - 'linkOptions' => ['data-method' => 'post'] | ||
47 | - ]; | 22 | + app\assets\AppAsset::register($this); |
48 | } | 23 | } |
49 | - echo Nav::widget([ | ||
50 | - 'options' => ['class' => 'navbar-nav navbar-right'], | ||
51 | - 'items' => $menuItems, | ||
52 | - ]); | ||
53 | - NavBar::end(); | 24 | + |
25 | + dmstr\web\AdminLteAsset::register($this); | ||
26 | + | ||
27 | + $directoryAsset = Yii::$app->assetManager->getPublishedUrl('@vendor/almasaeed2010/adminlte/dist'); | ||
54 | ?> | 28 | ?> |
29 | + <?php $this->beginPage() ?> | ||
30 | + <!DOCTYPE html> | ||
31 | + <html lang="<?= Yii::$app->language ?>"> | ||
32 | + <head> | ||
33 | + <meta charset="<?= Yii::$app->charset ?>"/> | ||
34 | + <meta name="viewport" content="width=device-width, initial-scale=1"> | ||
35 | + <?= Html::csrfMetaTags() ?> | ||
36 | + <title><?= Html::encode($this->title) ?></title> | ||
37 | + <?php $this->head() ?> | ||
38 | + </head> | ||
39 | + <body class="skin-blue sidebar-mini"> | ||
40 | + <?php $this->beginBody() ?> | ||
41 | + <div class="wrapper"> | ||
55 | 42 | ||
56 | - <div class="container"> | ||
57 | - <?= Breadcrumbs::widget([ | ||
58 | - 'links' => isset($this->params['breadcrumbs']) ? $this->params['breadcrumbs'] : [], | ||
59 | - ]) ?> | ||
60 | - <?= Alert::widget() ?> | ||
61 | - <?= $content ?> | ||
62 | - </div> | ||
63 | -</div> | 43 | + <?= $this->render( |
44 | + 'header.php', | ||
45 | + ['directoryAsset' => $directoryAsset] | ||
46 | + ) ?> | ||
47 | + | ||
48 | + <?= $this->render( | ||
49 | + 'left.php', | ||
50 | + ['directoryAsset' => $directoryAsset] | ||
51 | + ) | ||
52 | + ?> | ||
64 | 53 | ||
65 | -<footer class="footer"> | ||
66 | - <div class="container"> | ||
67 | - <p class="pull-left">© My Company <?= date('Y') ?></p> | 54 | + <?= $this->render( |
55 | + 'content.php', | ||
56 | + ['content' => $content, 'directoryAsset' => $directoryAsset] | ||
57 | + ) ?> | ||
68 | 58 | ||
69 | - <p class="pull-right"><?= Yii::powered() ?></p> | ||
70 | </div> | 59 | </div> |
71 | -</footer> | ||
72 | 60 | ||
73 | -<?php $this->endBody() ?> | ||
74 | -</body> | ||
75 | -</html> | ||
76 | -<?php $this->endPage() ?> | 61 | + <?php $this->endBody() ?> |
62 | + </body> | ||
63 | + </html> | ||
64 | + <?php $this->endPage() ?> | ||
65 | +<?php } ?> |
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\NewOptionsLang */ | ||
8 | +/* @var $form yii\widgets\ActiveForm */ | ||
9 | +?> | ||
10 | + | ||
11 | +<div class="new-options-lang-form"> | ||
12 | + | ||
13 | + <?php $form = ActiveForm::begin(); ?> | ||
14 | + | ||
15 | + <?= $form->field($model, 'id')->textInput() ?> | ||
16 | + | ||
17 | + <?= $form->field($model, 'lang_id')->textInput() ?> | ||
18 | + | ||
19 | + <?= $form->field($model, 'value')->textarea(['rows' => 6]) ?> | ||
20 | + | ||
21 | + <div class="form-group"> | ||
22 | + <?= Html::submitButton($model->isNewRecord ? Yii::t('app', 'Create') : Yii::t('app', 'Update'), ['class' => $model->isNewRecord ? 'btn btn-success' : 'btn btn-primary']) ?> | ||
23 | + </div> | ||
24 | + | ||
25 | + <?php ActiveForm::end(); ?> | ||
26 | + | ||
27 | +</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\NewOptionsLangSearch */ | ||
8 | +/* @var $form yii\widgets\ActiveForm */ | ||
9 | +?> | ||
10 | + | ||
11 | +<div class="new-options-lang-search"> | ||
12 | + | ||
13 | + <?php $form = ActiveForm::begin([ | ||
14 | + 'action' => ['index'], | ||
15 | + 'method' => 'get', | ||
16 | + ]); ?> | ||
17 | + | ||
18 | + <?= $form->field($model, 'primary') ?> | ||
19 | + | ||
20 | + <?= $form->field($model, 'id') ?> | ||
21 | + | ||
22 | + <?= $form->field($model, 'lang_id') ?> | ||
23 | + | ||
24 | + <?= $form->field($model, 'value') ?> | ||
25 | + | ||
26 | + <div class="form-group"> | ||
27 | + <?= Html::submitButton(Yii::t('app', 'Search'), ['class' => 'btn btn-primary']) ?> | ||
28 | + <?= Html::resetButton(Yii::t('app', 'Reset'), ['class' => 'btn btn-default']) ?> | ||
29 | + </div> | ||
30 | + | ||
31 | + <?php ActiveForm::end(); ?> | ||
32 | + | ||
33 | +</div> |
1 | +<?php | ||
2 | + | ||
3 | +use yii\helpers\Html; | ||
4 | + | ||
5 | + | ||
6 | +/* @var $this yii\web\View */ | ||
7 | +/* @var $model backend\models\NewOptionsLang */ | ||
8 | + | ||
9 | +$this->title = Yii::t('app', 'Create New Options Lang'); | ||
10 | +$this->params['breadcrumbs'][] = ['label' => Yii::t('app', 'New Options Langs'), 'url' => ['index']]; | ||
11 | +$this->params['breadcrumbs'][] = $this->title; | ||
12 | +?> | ||
13 | +<div class="new-options-lang-create"> | ||
14 | + | ||
15 | + <h1><?= Html::encode($this->title) ?></h1> | ||
16 | + | ||
17 | + <?= $this->render('_form', [ | ||
18 | + 'model' => $model, | ||
19 | + ]) ?> | ||
20 | + | ||
21 | +</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\NewOptionsLangSearch */ | ||
8 | +/* @var $dataProvider yii\data\ActiveDataProvider */ | ||
9 | + | ||
10 | +$this->title = Yii::t('app', 'New Options Langs'); | ||
11 | +$this->params['breadcrumbs'][] = $this->title; | ||
12 | +?> | ||
13 | +<div class="new-options-lang-index"> | ||
14 | + | ||
15 | + <h1><?= Html::encode($this->title) ?></h1> | ||
16 | + <?php // echo $this->render('_search', ['model' => $searchModel]); ?> | ||
17 | + | ||
18 | + <p> | ||
19 | + <?= Html::a(Yii::t('app', 'Create New Options Lang'), ['create'], ['class' => 'btn btn-success']) ?> | ||
20 | + </p> | ||
21 | + | ||
22 | + <?= GridView::widget([ | ||
23 | + 'dataProvider' => $dataProvider, | ||
24 | + 'filterModel' => $searchModel, | ||
25 | + 'columns' => [ | ||
26 | + ['class' => 'yii\grid\SerialColumn'], | ||
27 | + | ||
28 | + 'primary', | ||
29 | + 'id', | ||
30 | + 'lang_id', | ||
31 | + 'value:ntext', | ||
32 | + | ||
33 | + ['class' => 'yii\grid\ActionColumn'], | ||
34 | + ], | ||
35 | + ]); ?> | ||
36 | + | ||
37 | +</div> |
1 | +<?php | ||
2 | + | ||
3 | +use yii\helpers\Html; | ||
4 | + | ||
5 | +/* @var $this yii\web\View */ | ||
6 | +/* @var $model backend\models\NewOptionsLang */ | ||
7 | + | ||
8 | +$this->title = Yii::t('app', 'Update {modelClass}: ', [ | ||
9 | + 'modelClass' => 'New Options Lang', | ||
10 | +]) . ' ' . $model->primary; | ||
11 | +$this->params['breadcrumbs'][] = ['label' => Yii::t('app', 'New Options Langs'), 'url' => ['index']]; | ||
12 | +$this->params['breadcrumbs'][] = ['label' => $model->primary, 'url' => ['view', 'id' => $model->primary]]; | ||
13 | +$this->params['breadcrumbs'][] = Yii::t('app', 'Update'); | ||
14 | +?> | ||
15 | +<div class="new-options-lang-update"> | ||
16 | + | ||
17 | + <h1><?= Html::encode($this->title) ?></h1> | ||
18 | + | ||
19 | + <?= $this->render('_form', [ | ||
20 | + 'model' => $model, | ||
21 | + ]) ?> | ||
22 | + | ||
23 | +</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\NewOptionsLang */ | ||
8 | + | ||
9 | +$this->title = $model->primary; | ||
10 | +$this->params['breadcrumbs'][] = ['label' => Yii::t('app', 'New Options Langs'), 'url' => ['index']]; | ||
11 | +$this->params['breadcrumbs'][] = $this->title; | ||
12 | +?> | ||
13 | +<div class="new-options-lang-view"> | ||
14 | + | ||
15 | + <h1><?= Html::encode($this->title) ?></h1> | ||
16 | + | ||
17 | + <p> | ||
18 | + <?= Html::a(Yii::t('app', 'Update'), ['update', 'id' => $model->primary], ['class' => 'btn btn-primary']) ?> | ||
19 | + <?= Html::a(Yii::t('app', 'Delete'), ['delete', 'id' => $model->primary], [ | ||
20 | + 'class' => 'btn btn-danger', | ||
21 | + 'data' => [ | ||
22 | + 'confirm' => Yii::t('app', 'Are you sure you want to delete this item?'), | ||
23 | + 'method' => 'post', | ||
24 | + ], | ||
25 | + ]) ?> | ||
26 | + </p> | ||
27 | + | ||
28 | + <?= DetailView::widget([ | ||
29 | + 'model' => $model, | ||
30 | + 'attributes' => [ | ||
31 | + 'primary', | ||
32 | + 'id', | ||
33 | + 'lang_id', | ||
34 | + 'value:ntext', | ||
35 | + ], | ||
36 | + ]) ?> | ||
37 | + | ||
38 | +</div> |
1 | +<?php | ||
2 | +use yii\grid\GridView; | ||
3 | +use yii\grid\SerialColumn; | ||
4 | +use yii\helpers\VarDumper; | ||
5 | +use yii\grid\ActionColumn; | ||
6 | +use yii\helpers\Html; | ||
7 | +use yii\widgets\Pjax; | ||
8 | +$this->title = Yii::t('app', 'Requests'); | ||
9 | +?> | ||
10 | +<div class="site-requests"> | ||
11 | + <?php | ||
12 | + echo GridView::widget([ | ||
13 | + 'dataProvider' => $dataProvider, | ||
14 | + 'columns' => [ | ||
15 | + [ | ||
16 | + 'class' => 'yii\grid\SerialColumn' | ||
17 | + ], | ||
18 | + [ | ||
19 | + 'attribute' => 'created_at', | ||
20 | + ], | ||
21 | + [ | ||
22 | + 'header' => Yii::t('app', 'values'), | ||
23 | + 'content' => function($model, $key, $index, $column) { | ||
24 | + $value = ''; | ||
25 | + $langs = $model->options; | ||
26 | + $lang = $model->getOptionDefaultLang(true); | ||
27 | + $value .= "<b>{$model->name}</b>:{$lang['value']}"; | ||
28 | + foreach($langs as $onemodel) { | ||
29 | + $lang = $onemodel->getOptionDefaultLang(true); | ||
30 | + $value .= "<br><b>{$onemodel->name}</b>:{$lang['value']}"; | ||
31 | + } | ||
32 | + return $value; | ||
33 | + } | ||
34 | + ], | ||
35 | + [ | ||
36 | + 'class' => 'yii\grid\ActionColumn', | ||
37 | + 'template' => '{requests} {delete-req}', | ||
38 | + 'buttons' => [ | ||
39 | + 'requests' => function($url, $model, $key) { | ||
40 | + return Html::a( | ||
41 | + '', | ||
42 | + $model->options['is_new']->getOptionDefaultLang()->value?$url:'#', | ||
43 | + [ | ||
44 | + 'class' => $model->options['is_new']->getOptionDefaultLang()->value?'glyphicon glyphicon-eye-open':'glyphicon glyphicon-eye-close', | ||
45 | + 'title' => Yii::t('app', 'Make already read') | ||
46 | + ] | ||
47 | + ); | ||
48 | + }, | ||
49 | + 'delete-req' => function($url, $model, $key) { | ||
50 | + return Html::a( | ||
51 | + '', | ||
52 | + $url, | ||
53 | + [ | ||
54 | + 'class' => 'glyphicon glyphicon-trash', | ||
55 | + 'title' => Yii::t('app', 'Delete'), | ||
56 | + 'data' => [ | ||
57 | + 'label' => Yii::t('app', 'Delete'), | ||
58 | + 'confirm' => Yii::t('app', 'Are you sure you want delete this element?'), | ||
59 | + 'method' => 'post', | ||
60 | + 'pjax' => 0 | ||
61 | + ] | ||
62 | + ] | ||
63 | + ); | ||
64 | + } | ||
65 | + ] | ||
66 | + ] | ||
67 | + ], | ||
68 | + ]); | ||
69 | + ?> | ||
70 | +</div> |
backend/web/css/flags32.css
@@ -246,4 +246,8 @@ | @@ -246,4 +246,8 @@ | ||
246 | .f32 .sx{background-position:0 -7808px;} | 246 | .f32 .sx{background-position:0 -7808px;} |
247 | .f32 .cw{background-position:0 -7840px;} | 247 | .f32 .cw{background-position:0 -7840px;} |
248 | .f32 .ss{background-position:0 -7872px;} | 248 | .f32 .ss{background-position:0 -7872px;} |
249 | +<<<<<<< 1fd2bdb43fc5cfdcf100cac8b72e67fd81e7f0fa | ||
249 | .f32 .nu{background-position:0 -7904px;} | 250 | .f32 .nu{background-position:0 -7904px;} |
251 | +======= | ||
252 | +.f32 .nu{background-position:0 -7904px;} | ||
253 | +>>>>>>> 0e0edb85a79343e4d020ff05378179e2323b21bd |
1 | +$(function() { | ||
2 | + var counter = 0; | ||
3 | + $(document).on('click', '.add_row', function() { | ||
4 | + counter++; | ||
5 | + var clone = $('#main_row').clone().html().replace(new RegExp("Option\\[0\\]", 'g'), "Option["+counter+"]"); | ||
6 | + console.log(form); | ||
7 | + $(clone).appendTo('#'+form); | ||
8 | + $('#'+form+' button[type=submit]').parent().appendTo('#'+form); | ||
9 | + }); | ||
10 | + $(document).on('click', '.add_lang', function() { | ||
11 | + var field_block = $(this).parent().parent(); | ||
12 | + if($(this).hasClass('active')) { | ||
13 | + $(field_block).find('.main_input').attr('required', '').show(); | ||
14 | + $(field_block).find('.lang_inputs').hide(); | ||
15 | + $(this).removeClass('active'); | ||
16 | + } else { | ||
17 | + $(field_block).find('.main_input').removeAttr('required').hide(); | ||
18 | + $(field_block).find('.lang_inputs').show(); | ||
19 | + $(this).addClass('active'); | ||
20 | + } | ||
21 | + }); | ||
22 | + $(document).on('click', '.remove_lang', function() { | ||
23 | + $(this).parents('.form-wrapper').remove(); | ||
24 | + }); | ||
25 | + }); | ||
0 | \ No newline at end of file | 26 | \ No newline at end of file |
common/models/Language.php
@@ -40,7 +40,7 @@ class Language extends \yii\db\ActiveRecord | @@ -40,7 +40,7 @@ class Language extends \yii\db\ActiveRecord | ||
40 | //Получения объекта языка по умолчанию | 40 | //Получения объекта языка по умолчанию |
41 | static function getDefaultLang() | 41 | static function getDefaultLang() |
42 | { | 42 | { |
43 | - return Language::find()->where('`is_default` = :default', [':default' => 1])->one(); | 43 | + return Language::find()->where('is_default = :default', [':default' => 1])->one(); |
44 | } | 44 | } |
45 | 45 | ||
46 | //Получения объекта языка по буквенному идентификатору | 46 | //Получения объекта языка по буквенному идентификатору |
common/translation/ru/app.php
@@ -11,5 +11,20 @@ return [ | @@ -11,5 +11,20 @@ return [ | ||
11 | 'Make default' => 'Установить по умолчанию', | 11 | 'Make default' => 'Установить по умолчанию', |
12 | 'Language Name' => 'Название языка', | 12 | 'Language Name' => 'Название языка', |
13 | 'Lang Code' => 'Код языка', | 13 | 'Lang Code' => 'Код языка', |
14 | +<<<<<<< 1fd2bdb43fc5cfdcf100cac8b72e67fd81e7f0fa | ||
14 | 'Is Default' => 'По умолчанию' | 15 | 'Is Default' => 'По умолчанию' |
16 | +======= | ||
17 | + 'Is Default' => 'По умолчанию', | ||
18 | + 'adress' => 'Адрес', | ||
19 | + 'adress_name' => 'Адрес', | ||
20 | + 'Create adress' => 'Добавить адрес', | ||
21 | + 'adres' => 'Адрес', | ||
22 | + 'x' => 'Координата x', | ||
23 | + 'y' => 'Координата y', | ||
24 | + 'phone' => 'Телефон', | ||
25 | + 'name' => 'Название', | ||
26 | + 'one_name' => 'Имя', | ||
27 | + 'message' => 'Сообщение', | ||
28 | + 'Feedback' => 'Обратная связь' | ||
29 | +>>>>>>> 0e0edb85a79343e4d020ff05378179e2323b21bd | ||
15 | ]; | 30 | ]; |
16 | \ No newline at end of file | 31 | \ No newline at end of file |
frontend/controllers/SiteController.php
@@ -19,6 +19,7 @@ use yii\validators\EmailValidator; | @@ -19,6 +19,7 @@ use yii\validators\EmailValidator; | ||
19 | use common\models\User; | 19 | use common\models\User; |
20 | use yii\helpers\VarDumper; | 20 | use yii\helpers\VarDumper; |
21 | use common\models\Page; | 21 | use common\models\Page; |
22 | +use frontend\models\Option; | ||
22 | 23 | ||
23 | /** | 24 | /** |
24 | * Site controller | 25 | * Site controller |
@@ -260,6 +261,7 @@ class SiteController extends Controller | @@ -260,6 +261,7 @@ class SiteController extends Controller | ||
260 | 'model' => $model, | 261 | 'model' => $model, |
261 | ]); | 262 | ]); |
262 | } | 263 | } |
264 | +<<<<<<< 1fd2bdb43fc5cfdcf100cac8b72e67fd81e7f0fa | ||
263 | public function actionOptions() { | 265 | public function actionOptions() { |
264 | $option_model = new Options(); | 266 | $option_model = new Options(); |
265 | $option_list = $option_model->find()->where(1)->all(); | 267 | $option_list = $option_model->find()->where(1)->all(); |
@@ -301,5 +303,15 @@ class SiteController extends Controller | @@ -301,5 +303,15 @@ class SiteController extends Controller | ||
301 | $data['option_values'] = $option_values; | 303 | $data['option_values'] = $option_values; |
302 | return $this->render('options', ['options' => $data, 'post' => $post]); | 304 | return $this->render('options', ['options' => $data, 'post' => $post]); |
303 | } | 305 | } |
306 | +======= | ||
307 | + | ||
308 | + public function actionFeedback() { | ||
309 | + $form[0] = Option::create(\Yii::$app->request->post(), 'Feedback', 1, [['name' => 'one_name', 'template' => 'text', 'translate' => false], ['name' => 'phone', 'template' => 'text', 'translate' => false], ['name' => 'message', 'template' => 'text', 'translate' => false]], false); | ||
310 | + if($form[0]['success'] == false) { | ||
311 | + return $this->render('feedback', ['forms' => $form]); | ||
312 | + } else { | ||
313 | + return $this->render('index'); | ||
314 | + } | ||
315 | +>>>>>>> 0e0edb85a79343e4d020ff05378179e2323b21bd | ||
304 | } | 316 | } |
305 | } | 317 | } |
frontend/models/Option.php
@@ -48,11 +48,12 @@ class Option extends \yii\db\ActiveRecord | @@ -48,11 +48,12 @@ class Option extends \yii\db\ActiveRecord | ||
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'), | 50 | 'parent_id' => Yii::t('app', 'Parent ID'), |
51 | + 'created_at' => Yii::t('app', 'Date created'), | ||
51 | ]; | 52 | ]; |
52 | } | 53 | } |
53 | 54 | ||
54 | public function getLangs() { | 55 | public function getLangs() { |
55 | - return (new Language())->find()->where(['>', 'language_id', 0])->asArray()->all(); | 56 | + return (new Language())->find()->where(['>', 'language_id', 0])->andWhere(['active' => 1])->asArray()->all(); |
56 | } | 57 | } |
57 | 58 | ||
58 | public static function change($id, $post, $modeldb, $model_id) { | 59 | public static function change($id, $post, $modeldb, $model_id) { |
@@ -126,7 +127,12 @@ class Option extends \yii\db\ActiveRecord | @@ -126,7 +127,12 @@ class Option extends \yii\db\ActiveRecord | ||
126 | ); | 127 | ); |
127 | } | 128 | } |
128 | 129 | ||
130 | +<<<<<<< 1fd2bdb43fc5cfdcf100cac8b72e67fd81e7f0fa | ||
129 | public static function create($post, $modeldb, $model_id, $fields) { | 131 | public static function create($post, $modeldb, $model_id, $fields) { |
132 | +======= | ||
133 | + public static function create($post, $modeldb, $model_id, $fields, $multiple) { | ||
134 | + $multiple = boolval($multiple); | ||
135 | +>>>>>>> 0e0edb85a79343e4d020ff05378179e2323b21bd | ||
130 | $model = new Option(); | 136 | $model = new Option(); |
131 | $modellang = new OptionLang(); | 137 | $modellang = new OptionLang(); |
132 | if(!empty($post['Option'])) { | 138 | if(!empty($post['Option'])) { |
@@ -197,6 +203,24 @@ class Option extends \yii\db\ActiveRecord | @@ -197,6 +203,24 @@ class Option extends \yii\db\ActiveRecord | ||
197 | } | 203 | } |
198 | } | 204 | } |
199 | if($ok) { | 205 | if($ok) { |
206 | + if($modeldb == 'Feedback') { | ||
207 | + $newflag = new Option(); | ||
208 | + $newflag->model = $modeldb; | ||
209 | + $newflag->model_id = $model_id; | ||
210 | + $newflag->name = 'is_new'; | ||
211 | + $newflag->template = 'checkbox'; | ||
212 | + $newflag->parent_id = $parentid; | ||
213 | + $newflag->translate = 0; | ||
214 | + if($newflag->save()) { | ||
215 | + $newflaglang = new OptionLang(); | ||
216 | + $newflaglang->id = $newflag->option_id; | ||
217 | + $newflaglang->lang_id = 0; | ||
218 | + $newflaglang->value = '1'; | ||
219 | + if(!$newflaglang->save()) { | ||
220 | + $newflag->delete(); | ||
221 | + } | ||
222 | + } | ||
223 | + } | ||
200 | return array('models' => $models, 'modelslang' => $modelslang, 'success' => true); | 224 | return array('models' => $models, 'modelslang' => $modelslang, 'success' => true); |
201 | } else { | 225 | } else { |
202 | return array( | 226 | return array( |
@@ -205,7 +229,8 @@ class Option extends \yii\db\ActiveRecord | @@ -205,7 +229,8 @@ class Option extends \yii\db\ActiveRecord | ||
205 | 'modeldb' => $modeldb, | 229 | 'modeldb' => $modeldb, |
206 | 'model_id' => $model_id, | 230 | 'model_id' => $model_id, |
207 | 'fields' => $fields, | 231 | 'fields' => $fields, |
208 | - 'success' => false | 232 | + 'success' => false, |
233 | + 'multiple' => $multiple | ||
209 | ); | 234 | ); |
210 | } | 235 | } |
211 | } else { | 236 | } else { |
@@ -214,8 +239,43 @@ class Option extends \yii\db\ActiveRecord | @@ -214,8 +239,43 @@ class Option extends \yii\db\ActiveRecord | ||
214 | 'modeldb' => $modeldb, | 239 | 'modeldb' => $modeldb, |
215 | 'model_id' => $model_id, | 240 | 'model_id' => $model_id, |
216 | 'fields' => $fields, | 241 | 'fields' => $fields, |
217 | - 'success' => false | 242 | + 'success' => false, |
243 | + 'multiple' => $multiple | ||
218 | ); | 244 | ); |
219 | } | 245 | } |
220 | } | 246 | } |
247 | + | ||
248 | + public function getOptions() { | ||
249 | + return $this->hasMany(Option::className(), ['parent_id' => 'option_id'])->indexBy('name'); | ||
250 | + } | ||
251 | + | ||
252 | + public function getOption() { | ||
253 | + return $this->hasOne(Option::className(), ['option_id' => 'parent_id']); | ||
254 | + } | ||
255 | + | ||
256 | + public function getOptionLangs() { | ||
257 | + return $this->hasMany(OptionLang::className(), ['id' => 'option_id']); | ||
258 | + } | ||
259 | + | ||
260 | + public function getOptionDefaultLang($array = false) { | ||
261 | + $query = $this->getOptionLangs()->where(['lang_id' => 0]); | ||
262 | + if($array) { | ||
263 | + $query->asArray(); | ||
264 | + } | ||
265 | + return $query->one(); | ||
266 | + } | ||
267 | + | ||
268 | + public static function markOld($id) { | ||
269 | + $model = Option::findOne($id); | ||
270 | + $is_new = $model->getOptions()->where(['name' => 'is_new'])->one(); | ||
271 | + if(empty($is_new)) return false; | ||
272 | + $is_newlang = $is_new->getOptionDefaultLang(); | ||
273 | + $is_newlang->value = '0'; | ||
274 | + if($is_newlang->save()) { | ||
275 | + return true; | ||
276 | + } else { | ||
277 | + return false; | ||
278 | + } | ||
279 | + } | ||
280 | + | ||
221 | } | 281 | } |
1 | +<?php | ||
2 | + | ||
3 | +namespace frontend\models; | ||
4 | + | ||
5 | +use Yii; | ||
6 | +use yii\base\Model; | ||
7 | +use yii\data\ActiveDataProvider; | ||
8 | +use frontend\models\OptionLang; | ||
9 | + | ||
10 | +/** | ||
11 | + * OptionLangSearch represents the model behind the search form about `frontend\models\OptionLang`. | ||
12 | + */ | ||
13 | +class OptionLangSearch extends OptionLang | ||
14 | +{ | ||
15 | + /** | ||
16 | + * @inheritdoc | ||
17 | + */ | ||
18 | + public function rules() | ||
19 | + { | ||
20 | + return [ | ||
21 | + [['primary', 'id', 'lang_id'], 'integer'], | ||
22 | + [['value'], 'safe'], | ||
23 | + ]; | ||
24 | + } | ||
25 | + | ||
26 | + /** | ||
27 | + * @inheritdoc | ||
28 | + */ | ||
29 | + public function scenarios() | ||
30 | + { | ||
31 | + // bypass scenarios() implementation in the parent class | ||
32 | + return Model::scenarios(); | ||
33 | + } | ||
34 | + | ||
35 | + /** | ||
36 | + * Creates data provider instance with search query applied | ||
37 | + * | ||
38 | + * @param array $params | ||
39 | + * | ||
40 | + * @return ActiveDataProvider | ||
41 | + */ | ||
42 | + public function search($params) | ||
43 | + { | ||
44 | + $query = OptionLang::find(); | ||
45 | + | ||
46 | + $dataProvider = new ActiveDataProvider([ | ||
47 | + 'query' => $query, | ||
48 | + ]); | ||
49 | + | ||
50 | + $this->load($params); | ||
51 | + | ||
52 | + if (!$this->validate()) { | ||
53 | + // uncomment the following line if you do not want to return any records when validation fails | ||
54 | + // $query->where('0=1'); | ||
55 | + return $dataProvider; | ||
56 | + } | ||
57 | + | ||
58 | + $query->andFilterWhere([ | ||
59 | + 'primary' => $this->primary, | ||
60 | + 'id' => $this->id, | ||
61 | + 'lang_id' => $this->lang_id, | ||
62 | + ]); | ||
63 | + | ||
64 | + $query->andFilterWhere(['like', 'value', $this->value]); | ||
65 | + | ||
66 | + return $dataProvider; | ||
67 | + } | ||
68 | +} |
frontend/models/OptionSearch.php
@@ -46,7 +46,12 @@ class OptionSearch extends Option | @@ -46,7 +46,12 @@ class OptionSearch extends Option | ||
46 | $dataProvider = new ActiveDataProvider([ | 46 | $dataProvider = new ActiveDataProvider([ |
47 | 'query' => $query, | 47 | 'query' => $query, |
48 | ]); | 48 | ]); |
49 | - | 49 | + $data = [ |
50 | + 'OptionSearch' => [ | ||
51 | + 'model' => 'Main' | ||
52 | + ] | ||
53 | + ]; | ||
54 | + | ||
50 | $this->load($params); | 55 | $this->load($params); |
51 | 56 | ||
52 | if (!$this->validate()) { | 57 | if (!$this->validate()) { |
@@ -54,16 +59,19 @@ class OptionSearch extends Option | @@ -54,16 +59,19 @@ class OptionSearch extends Option | ||
54 | // $query->where('0=1'); | 59 | // $query->where('0=1'); |
55 | return $dataProvider; | 60 | return $dataProvider; |
56 | } | 61 | } |
57 | - | 62 | + |
63 | + $query->andWhere(['parent_id' => null]); | ||
64 | + | ||
58 | $query->andFilterWhere([ | 65 | $query->andFilterWhere([ |
59 | 'option_id' => $this->option_id, | 66 | 'option_id' => $this->option_id, |
60 | 'model_id' => $this->model_id, | 67 | 'model_id' => $this->model_id, |
61 | 'parent_id' => $this->parent_id, | 68 | 'parent_id' => $this->parent_id, |
62 | ]); | 69 | ]); |
63 | - | 70 | + |
64 | $query->andFilterWhere(['like', 'model', $this->model]) | 71 | $query->andFilterWhere(['like', 'model', $this->model]) |
65 | ->andFilterWhere(['like', 'name', $this->name]) | 72 | ->andFilterWhere(['like', 'name', $this->name]) |
66 | ->andFilterWhere(['like', 'template', $this->template]); | 73 | ->andFilterWhere(['like', 'template', $this->template]); |
74 | + | ||
67 | 75 | ||
68 | return $dataProvider; | 76 | return $dataProvider; |
69 | } | 77 | } |
frontend/views/option/_form.php
@@ -12,7 +12,7 @@ use yii\widgets\ActiveForm; | @@ -12,7 +12,7 @@ use yii\widgets\ActiveForm; | ||
12 | <?php $form = ActiveForm::begin(); ?> | 12 | <?php $form = ActiveForm::begin(); ?> |
13 | <input type="hidden" name="Option[model]" value="<?=$modeldb?>"/> | 13 | <input type="hidden" name="Option[model]" value="<?=$modeldb?>"/> |
14 | <input type="hidden" name="Option[model_id]" value="<?=$model_id?>"/> | 14 | <input type="hidden" name="Option[model_id]" value="<?=$model_id?>"/> |
15 | - <p class="text-right"><span class="glyphicon glyphicon-plus add_row"></span></p> | 15 | + <?php if($multiple) { ?><p class="text-right"><span class="glyphicon glyphicon-plus add_row"></span></p><?php }?> |
16 | <?php if(empty($models)) { | 16 | <?php if(empty($models)) { |
17 | ?> | 17 | ?> |
18 | <div class="form-group" id="main_row"> | 18 | <div class="form-group" id="main_row"> |
1 | +<?php | ||
2 | + | ||
3 | +/* @var $this yii\web\View */ | ||
4 | +/* @var $form yii\bootstrap\ActiveForm */ | ||
5 | +/* @var $model \frontend\models\ContactForm */ | ||
6 | + | ||
7 | +use yii\helpers\Html; | ||
8 | +use yii\bootstrap\ActiveForm; | ||
9 | +use yii\captcha\Captcha; | ||
10 | + | ||
11 | +$this->title = Yii::t('app', 'Feedback'); | ||
12 | +$this->params['breadcrumbs'][] = $this->title; | ||
13 | +?> | ||
14 | +<div class="site-contact"> | ||
15 | + <h1><?= Html::encode($this->title) ?></h1> | ||
16 | + <?php foreach($forms as $oneform) { | ||
17 | + echo $this->render('/option/_form', $oneform); | ||
18 | + }?> | ||
19 | +</div> |