Commit 61b7d3705258c3828a24649b6abbd3e7df311624

Authored by andryeyev
2 parents 5aa35456 0012685b

Merge remote-tracking branch 'origin/Yarik'

backend/config/main.php
... ... @@ -25,7 +25,7 @@ return [
25 25 ],
26 26 ],
27 27 'urlManager' => [
28   - 'enablePrettyUrl' => true,
  28 + 'enablePrettyUrl' => false,
29 29 'showScriptName' => false,
30 30 ],
31 31 'log' => [
... ...
common/config/main.php
... ... @@ -6,7 +6,7 @@ return [
6 6 'class' => 'yii\caching\FileCache',
7 7 ],
8 8 'urlManager' => [
9   - 'enablePrettyUrl' => true,
  9 + 'enablePrettyUrl' => false,
10 10 'showScriptName' => false,
11 11 'class'=> 'common\components\LangUrlManager',
12 12 'rules'=>[
... ...
db-migration/artbox_option.sql 0 → 100644
  1 +-- --------------------------------------------------------
  2 +-- Хост: 127.0.0.1
  3 +-- Версия сервера: 5.6.26 - MySQL Community Server (GPL)
  4 +-- ОС Сервера: Win32
  5 +-- HeidiSQL Версия: 9.3.0.4984
  6 +-- --------------------------------------------------------
  7 +
  8 +/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
  9 +/*!40101 SET NAMES utf8mb4 */;
  10 +/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
  11 +/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
  12 +
  13 +-- Дамп структуры для таблица artbox_db.option
  14 +CREATE TABLE IF NOT EXISTS `option` (
  15 + `option_id` int(11) NOT NULL AUTO_INCREMENT,
  16 + `model` varchar(200) NOT NULL,
  17 + `model_id` int(11) NOT NULL,
  18 + `name` varchar(200) NOT NULL,
  19 + `template` varchar(200) NOT NULL,
  20 + `parent_id` int(11) DEFAULT NULL,
  21 + PRIMARY KEY (`option_id`),
  22 + KEY `FK_option_option` (`parent_id`),
  23 + CONSTRAINT `FK_option_option` FOREIGN KEY (`parent_id`) REFERENCES `option` (`option_id`)
  24 +) ENGINE=InnoDB AUTO_INCREMENT=26 DEFAULT CHARSET=utf8;
  25 +
  26 +-- Дамп данных таблицы artbox_db.option: ~6 rows (приблизительно)
  27 +/*!40000 ALTER TABLE `option` DISABLE KEYS */;
  28 +INSERT INTO `option` (`option_id`, `model`, `model_id`, `name`, `template`, `parent_id`) VALUES
  29 + (20, 'user', 10, 'phone', 'input', NULL),
  30 + (21, 'user', 10, 'adres', 'input', 20),
  31 + (22, 'user', 10, 'phone', 'input', NULL),
  32 + (23, 'user', 10, 'adres', 'input', 22),
  33 + (24, 'user', 10, 'phone', 'input', NULL),
  34 + (25, 'user', 10, 'adres', 'input', 24);
  35 +/*!40000 ALTER TABLE `option` ENABLE KEYS */;
  36 +
  37 +
  38 +-- Дамп структуры для таблица artbox_db.option_lang
  39 +CREATE TABLE IF NOT EXISTS `option_lang` (
  40 + `primary` int(11) NOT NULL AUTO_INCREMENT,
  41 + `id` int(11) NOT NULL,
  42 + `lang_id` int(11) NOT NULL,
  43 + `value` text NOT NULL,
  44 + PRIMARY KEY (`primary`),
  45 + KEY `Индекс 1` (`id`),
  46 + KEY `Индекс 2` (`lang_id`)
  47 +) ENGINE=InnoDB AUTO_INCREMENT=36 DEFAULT CHARSET=utf8;
  48 +
  49 +-- Дамп данных таблицы artbox_db.option_lang: ~16 rows (приблизительно)
  50 +/*!40000 ALTER TABLE `option_lang` DISABLE KEYS */;
  51 +INSERT INTO `option_lang` (`primary`, `id`, `lang_id`, `value`) VALUES
  52 + (20, 20, 0, 'phone'),
  53 + (21, 20, 1, 'phone111ukr'),
  54 + (22, 20, 2, 'phone111ru'),
  55 + (23, 21, 0, 'adres111'),
  56 + (24, 21, 1, 'adres111'),
  57 + (25, 21, 2, 'adres222'),
  58 + (26, 22, 0, 'phone222'),
  59 + (27, 22, 1, 'phone222uk'),
  60 + (28, 23, 0, 'adres111'),
  61 + (29, 23, 1, 'adres111'),
  62 + (30, 23, 2, 'adres111'),
  63 + (31, 24, 0, 'phone333'),
  64 + (32, 24, 2, 'phone333ru'),
  65 + (33, 25, 0, 'adres111'),
  66 + (34, 25, 1, 'adres111'),
  67 + (35, 25, 2, 'adres111');
  68 +/*!40000 ALTER TABLE `option_lang` ENABLE KEYS */;
  69 +/*!40101 SET SQL_MODE=IFNULL(@OLD_SQL_MODE, '') */;
  70 +/*!40014 SET FOREIGN_KEY_CHECKS=IF(@OLD_FOREIGN_KEY_CHECKS IS NULL, 1, @OLD_FOREIGN_KEY_CHECKS) */;
  71 +/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
... ...
frontend/assets/AppAsset.php
... ... @@ -26,4 +26,7 @@ class AppAsset extends AssetBundle
26 26 'yii\web\YiiAsset',
27 27 'yii\bootstrap\BootstrapAsset',
28 28 ];
  29 + public $jsOptions = array(
  30 + 'position' => \yii\web\View::POS_HEAD
  31 + );
29 32 }
... ...
frontend/controllers/OptionController.php 0 → 100644
  1 +<?php
  2 +
  3 +namespace frontend\controllers;
  4 +
  5 +use Yii;
  6 +use frontend\models\Option;
  7 +use frontend\models\OptionSearch;
  8 +use yii\web\Controller;
  9 +use yii\web\NotFoundHttpException;
  10 +use yii\filters\VerbFilter;
  11 +use frontend\models\OptionLang;
  12 +
  13 +/**
  14 + * OptionController implements the CRUD actions for Option model.
  15 + */
  16 +class OptionController extends Controller
  17 +{
  18 + public function behaviors()
  19 + {
  20 + return [
  21 + 'verbs' => [
  22 + 'class' => VerbFilter::className(),
  23 + 'actions' => [
  24 + 'delete' => ['post'],
  25 + ],
  26 + ],
  27 + ];
  28 + }
  29 +
  30 + /**
  31 + * Lists all Option models.
  32 + * @return mixed
  33 + */
  34 + public function actionIndex()
  35 + {
  36 + $searchModel = new OptionSearch();
  37 + $dataProvider = $searchModel->search(Yii::$app->request->queryParams);
  38 +
  39 + return $this->render('index', [
  40 + 'searchModel' => $searchModel,
  41 + 'dataProvider' => $dataProvider,
  42 + ]);
  43 + }
  44 +
  45 + /**
  46 + * Displays a single Option model.
  47 + * @param integer $id
  48 + * @return mixed
  49 + */
  50 + public function actionView($id)
  51 + {
  52 + return $this->render('view', [
  53 + 'model' => $this->findModel($id),
  54 + ]);
  55 + }
  56 +
  57 + /**
  58 + * Creates a new Option model.
  59 + * If creation is successful, the browser will be redirected to the 'view' page.
  60 + * @return mixed
  61 + */
  62 + public function actionCreate()
  63 + {
  64 + $model = new Option();
  65 + $modellang = new OptionLang();
  66 + $modeldb = 'user';
  67 + $model_id = '10';
  68 + $fields = [['name' => 'phone', 'template' => 'input'], ['name' => 'adres', 'template' => 'input']];
  69 + $post = \Yii::$app->request->post();
  70 + if(!empty($post['Option'])) {
  71 + $ok = 1;
  72 + $parentid = null;
  73 + $models = array();
  74 + foreach($post['Option'] as $index => $option) {
  75 + if(in_array($index, array('model', 'model_id')) && $index !== 0) { continue; }
  76 + $first = 1;
  77 + foreach($option['value'] as $key => $value) {
  78 + $models[$index][$key] = new Option();
  79 + $models[$index][$key]->model = $post['Option']['model'];
  80 + $models[$index][$key]->model_id = $post['Option']['model_id'];
  81 + $models[$index][$key]->template = $option['template'];
  82 + $models[$index][$key]->name = $key;
  83 + if(!$first) {
  84 + $models[$index][$key]->parent_id = $parentid;
  85 + }
  86 + $modelslang[$index][$key][0] = new OptionLang();
  87 + if(!empty($value) && $models[$index][$key]->save()) {
  88 + if($first) {
  89 + $parentid = $models[$index][$key]->option_id;
  90 + }
  91 + $modelslang[$index][$key][0]->id = $models[$index][$key]->option_id;
  92 + $modelslang[$index][$key][0]->lang_id = 0;
  93 + $modelslang[$index][$key][0]->value = $value;
  94 + if($modelslang[$index][$key][0]->save()) {
  95 + if(!empty($option['lang'][$key])) {
  96 + foreach($option['lang'][$key] as $code => $lang) {
  97 + if(!empty($lang)) {
  98 + $modelslang[$index][$key][$code] = new OptionLang();
  99 + $modelslang[$index][$key][$code]->id = $models[$index][$key]->option_id;
  100 + $modelslang[$index][$key][$code]->lang_id = $code;
  101 + $modelslang[$index][$key][$code]->value = $lang;
  102 + if(!$modelslang[$index][$key][$code]->save()) {
  103 + $ok = 0;
  104 + }
  105 + }
  106 + }
  107 + }
  108 + }
  109 + } else {
  110 + $models[$index][$key]->validate();
  111 + $modelslang[$index][$key][0]->validate();
  112 + $modelslang[$index][$key][0];
  113 + if(!empty($option['lang'][$key])) {
  114 + foreach($option['lang'][$key] as $code => $lang) {
  115 + if(!empty($lang)) {
  116 + $modelslang[$index][$key][$code] = new OptionLang();
  117 + $modelslang[$index][$key][$code]->id = $models[$index][$key]->option_id;
  118 + $modelslang[$index][$key][$code]->lang_id = $code;
  119 + $modelslang[$index][$key][$code]->value = $lang;
  120 + }
  121 + }
  122 + }
  123 + $ok = 0;
  124 + }
  125 + $first = 0;
  126 + }
  127 + }
  128 + if($ok) {
  129 + return $this->redirect(['view', 'id' => $parentid]);
  130 + } else {
  131 + return $this->render('create', [
  132 + 'model' => $model,
  133 + 'models' => $models,
  134 + 'modellang' => $modelslang,
  135 + 'modeldb' => $modeldb,
  136 + 'model_id' => $model_id,
  137 + 'fields' => $fields
  138 + ]);
  139 + }
  140 + }
  141 + if ($model->load(Yii::$app->request->post()) && $model->save()) {
  142 + return $this->redirect(['view', 'id' => $model->option_id]);
  143 + } else {
  144 + return $this->render('create', [
  145 + 'model' => $model,
  146 + 'modeldb' => $modeldb,
  147 + 'model_id' => $model_id,
  148 + 'fields' => $fields
  149 + ]);
  150 + }
  151 + }
  152 +
  153 + /**
  154 + * Updates an existing Option model.
  155 + * If update is successful, the browser will be redirected to the 'view' page.
  156 + * @param integer $id
  157 + * @return mixed
  158 + */
  159 + public function actionUpdate($id)
  160 + {
  161 + $models[$id] = Option::findOne($id);
  162 + $modellang[$id] = array();
  163 + $langs = OptionLang::findAll(['id' => $id]);
  164 + foreach($langs as $lang) {
  165 + $modellang[$id][$lang->lang_id] = $lang;
  166 + }
  167 + $children = (new Option())->find()->where(['parent_id' => $id])->all();
  168 + foreach($children as $child) {
  169 + $models[$child->option_id] = $child;
  170 + $modellang[$child->option_id] = array();
  171 + $langs = OptionLang::findAll(['id' =>$child->option_id]);
  172 + foreach($langs as $lang) {
  173 + $modellang[$child->option_id][$lang->lang_id] = $lang;
  174 + }
  175 + }
  176 + $modeldb = 'user';
  177 + $model_id = '10';
  178 + $fields = [['name' => 'phone', 'template' => 'input'], ['name' => 'adres', 'template' => 'input']];
  179 + $post = \Yii::$app->request->post();
  180 + $ok = 1;
  181 + if(!empty($post)) {
  182 + foreach($post['Option'] as $key => $option) {
  183 + if(in_array($key, array('model', 'model_id'))) { continue; }
  184 + $modellang[$key][0]->value = $option['value'][$models[$key]->name];
  185 + if(!$modellang[$key][0]->save()) {
  186 + $ok = 0;
  187 + }
  188 + foreach($option['lang'] as $lang_id => $lang) {
  189 + if(empty($modellang[$key][$lang_id])) {
  190 + $modellang[$key][$lang_id] = new OptionLang();
  191 + $modellang[$key][$lang_id]->id = $models[$key]->option_id;
  192 + $modellang[$key][$lang_id]->lang_id = $lang_id;
  193 + $modellang[$key][$lang_id]->value = $lang;
  194 + } else {
  195 + $modellang[$key][$lang_id]->value = $lang;
  196 + }
  197 + if(!$modellang[$key][$lang_id]->save()) {
  198 + $ok = 0;
  199 + }
  200 + }
  201 + }
  202 + if($ok) {
  203 + return $this->redirect(['view', 'id' => $id]);
  204 + } else {
  205 + return $this->render('update', [
  206 + 'models' => $models,
  207 + 'modellang' => $modellang,
  208 + 'modeldb' => $modeldb,
  209 + 'model_id' => $model_id
  210 + ]);
  211 + }
  212 + }
  213 + return $this->render('update', [
  214 + 'models' => $models,
  215 + 'modellang' => $modellang,
  216 + 'modeldb' => $modeldb,
  217 + 'model_id' => $model_id
  218 + ]);
  219 + }
  220 +
  221 + /**
  222 + * Deletes an existing Option model.
  223 + * If deletion is successful, the browser will be redirected to the 'index' page.
  224 + * @param integer $id
  225 + * @return mixed
  226 + */
  227 + public function actionDelete($id)
  228 + {
  229 + $this->findModel($id)->delete();
  230 +
  231 + return $this->redirect(['index']);
  232 + }
  233 +
  234 + /**
  235 + * Finds the Option model based on its primary key value.
  236 + * If the model is not found, a 404 HTTP exception will be thrown.
  237 + * @param integer $id
  238 + * @return Option the loaded model
  239 + * @throws NotFoundHttpException if the model cannot be found
  240 + */
  241 + protected function findModel($id)
  242 + {
  243 + if (($model = Option::findOne($id)) !== null) {
  244 + return $model;
  245 + } else {
  246 + throw new NotFoundHttpException('The requested page does not exist.');
  247 + }
  248 + }
  249 +}
... ...
frontend/controllers/OptionValuesController.php 0 → 100644
  1 +<?php
  2 +
  3 +namespace frontend\controllers;
  4 +
  5 +use Yii;
  6 +use frontend\models\OptionValues;
  7 +use frontend\models\OptionValuesSearch;
  8 +use yii\web\Controller;
  9 +use yii\web\NotFoundHttpException;
  10 +use yii\filters\VerbFilter;
  11 +
  12 +/**
  13 + * OptionValuesController implements the CRUD actions for OptionValues model.
  14 + */
  15 +class OptionValuesController 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 OptionValues models.
  31 + * @return mixed
  32 + */
  33 + public function actionIndex()
  34 + {
  35 + $searchModel = new OptionValuesSearch();
  36 + $dataProvider = $searchModel->search(Yii::$app->request->queryParams);
  37 + return $this->render('index', [
  38 + 'searchModel' => $searchModel,
  39 + 'dataProvider' => $dataProvider,
  40 + ]);
  41 + }
  42 +
  43 + /**
  44 + * Displays a single OptionValues model.
  45 + * @param integer $id
  46 + * @return mixed
  47 + */
  48 + public function actionView($id)
  49 + {
  50 + return $this->render('view', [
  51 + 'model' => $this->findModel($id),
  52 + ]);
  53 + }
  54 +
  55 + /**
  56 + * Creates a new OptionValues model.
  57 + * If creation is successful, the browser will be redirected to the 'view' page.
  58 + * @return mixed
  59 + */
  60 + public function actionCreate()
  61 + {
  62 + $post = \Yii::$app->request->post();
  63 + if(is_array($post['OptionValues']['option_value_text'])) {
  64 + $ok = 0;
  65 + $first = 0;
  66 + $id = 0;
  67 + $models = array();
  68 + foreach($post['OptionValues']['option_value_text'] as $lang => $value) {
  69 + $models[$lang] = new OptionValues();
  70 + $models[$lang]->load(Yii::$app->request->post());
  71 + $models[$lang]->option_lang_id = $lang;
  72 + $models[$lang]->option_value_text = $value;
  73 + if($first && $id) {
  74 + $models[$lang]->option_value_parent = $id;
  75 + }
  76 + if($models[$lang]->save()) {
  77 + $ok = 1;
  78 + if(!$first) {
  79 + $first = 1;
  80 + $id = $models[$lang]->option_value_id;
  81 + }
  82 + } else {
  83 + unset($models[$lang]);
  84 + }
  85 + }
  86 + if($ok) {
  87 + return $this->redirect(['view', 'id' => $id]);
  88 + }
  89 + }
  90 + $model = new OptionValues();
  91 + if ($model->load(Yii::$app->request->post()) && $model->save()) {
  92 + return $this->redirect(['view', 'id' => $model->option_value_id]);
  93 + } else {
  94 + return $this->render('create', [
  95 + 'model' => $model,
  96 + ]);
  97 + }
  98 + }
  99 +
  100 + /**
  101 + * Updates an existing OptionValues model.
  102 + * If update is successful, the browser will be redirected to the 'view' page.
  103 + * @param integer $id
  104 + * @return mixed
  105 + */
  106 + public function actionUpdate($id)
  107 + {
  108 + $model = $this->findModel($id);
  109 +
  110 + if ($model->load(Yii::$app->request->post()) && $model->save()) {
  111 + return $this->redirect(['view', 'id' => $model->option_value_id]);
  112 + } else {
  113 + return $this->render('update', [
  114 + 'model' => $model,
  115 + ]);
  116 + }
  117 + }
  118 +
  119 + /**
  120 + * Deletes an existing OptionValues model.
  121 + * If deletion is successful, the browser will be redirected to the 'index' page.
  122 + * @param integer $id
  123 + * @return mixed
  124 + */
  125 + public function actionDelete($id)
  126 + {
  127 + $this->findModel($id)->delete();
  128 +
  129 + return $this->redirect(['index']);
  130 + }
  131 +
  132 + /**
  133 + * Finds the OptionValues model based on its primary key value.
  134 + * If the model is not found, a 404 HTTP exception will be thrown.
  135 + * @param integer $id
  136 + * @return OptionValues the loaded model
  137 + * @throws NotFoundHttpException if the model cannot be found
  138 + */
  139 + protected function findModel($id)
  140 + {
  141 + if (($model = OptionValues::findOne($id)) !== null) {
  142 + return $model;
  143 + } else {
  144 + throw new NotFoundHttpException('The requested page does not exist.');
  145 + }
  146 + }
  147 +}
... ...
frontend/controllers/OptionsController.php 0 → 100644
  1 +<?php
  2 +
  3 +namespace frontend\controllers;
  4 +
  5 +use Yii;
  6 +use frontend\models\Options;
  7 +use frontend\models\OptionsSearch;
  8 +use yii\web\Controller;
  9 +use yii\web\NotFoundHttpException;
  10 +use yii\filters\VerbFilter;
  11 +
  12 +/**
  13 + * OptionsController implements the CRUD actions for Options model.
  14 + */
  15 +class OptionsController 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 Options models.
  31 + * @return mixed
  32 + */
  33 + public function actionIndex()
  34 + {
  35 + $searchModel = new OptionsSearch();
  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 Options 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 Options 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 Options();
  64 +
  65 + if ($model->load(Yii::$app->request->post()) && $model->save()) {
  66 + return $this->redirect(['view', 'id' => $model->option_id]);
  67 + } else {
  68 + return $this->render('create', [
  69 + 'model' => $model,
  70 + ]);
  71 + }
  72 + }
  73 +
  74 + /**
  75 + * Updates an existing Options 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->option_id]);
  86 + } else {
  87 + return $this->render('update', [
  88 + 'model' => $model,
  89 + ]);
  90 + }
  91 + }
  92 +
  93 + /**
  94 + * Deletes an existing Options 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 Options 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 Options the loaded model
  111 + * @throws NotFoundHttpException if the model cannot be found
  112 + */
  113 + protected function findModel($id)
  114 + {
  115 + if (($model = Options::findOne($id)) !== null) {
  116 + return $model;
  117 + } else {
  118 + throw new NotFoundHttpException('The requested page does not exist.');
  119 + }
  120 + }
  121 +}
... ...
frontend/controllers/SiteController.php
... ... @@ -7,11 +7,15 @@ use frontend\models\PasswordResetRequestForm;
7 7 use frontend\models\ResetPasswordForm;
8 8 use frontend\models\SignupForm;
9 9 use frontend\models\ContactForm;
  10 +use frontend\models\Options;
  11 +use frontend\models\OptionValues;
10 12 use yii\base\InvalidParamException;
11 13 use yii\web\BadRequestHttpException;
12 14 use yii\web\Controller;
13 15 use yii\filters\VerbFilter;
14 16 use yii\filters\AccessControl;
  17 +use frontend\models\OptionsToValues;
  18 +use yii\validators\EmailValidator;
15 19  
16 20 use common\models\Page;
17 21  
... ... @@ -241,4 +245,45 @@ class SiteController extends Controller
241 245 'model' => $model,
242 246 ]);
243 247 }
  248 + public function actionOptions() {
  249 + $option_model = new Options();
  250 + $option_list = $option_model->find()->where(1)->all();
  251 + $option_values = array();
  252 + $post = \Yii::$app->request->post();
  253 + if(!empty(\Yii::$app->request->post())) {
  254 + $options_to_values = array();
  255 + $hasErrors = false;
  256 + foreach($post['options'] as $key => $val) {
  257 + $options_to_values[$key] = new OptionsToValues();
  258 + $options_to_values[$key]['option_id'] = $val['option_id'];
  259 + $options_to_values[$key]->loadDefaultValues();
  260 + if($options_to_values[$key]->save()) {
  261 + $option_values[$key] = new OptionValues();
  262 + $option_values[$key]['option_value_id'] = $options_to_values[$key]->getAttribute('option_value_id');
  263 + $option_values[$key]['option_value_text'] = $val['option_value'];
  264 + if($options_to_values[$key]->option->getAttribute('option_translatable') == 0 || empty($val['option_lang_id'])) {
  265 + $option_values[$key]['option_lang_id'] = 0;
  266 + } else {
  267 + $option_values[$key]['option_lang_id'] = $val['option_lang_id'];
  268 + }
  269 + if(!$option_values[$key]->save()) {
  270 + $options_to_values[$key]->delete();
  271 + $hasErrors = true;
  272 + }
  273 + }
  274 + }
  275 + if(hasErrors) {
  276 + $data['option_values'] = $option_values;
  277 + return $this->render('options', ['options' => $data, 'post' => $post]);
  278 + } else {
  279 + var_dump($data);
  280 + }
  281 + } else {
  282 + foreach($option_list as $index => $option) {
  283 + $option_values[$option->getAttribute('option_id')] = new OptionValues();
  284 + }
  285 + $data['option_values'] = $option_values;
  286 + return $this->render('options', ['options' => $data, 'post' => $post]);
  287 + }
  288 + }
244 289 }
... ...
frontend/controllers/TranslateLangController.php 0 → 100644
  1 +<?php
  2 +
  3 +namespace frontend\controllers;
  4 +
  5 +use Yii;
  6 +use frontend\models\TranslateLang;
  7 +use frontend\models\TranslateLangSearch;
  8 +use yii\web\Controller;
  9 +use yii\web\NotFoundHttpException;
  10 +use yii\filters\VerbFilter;
  11 +
  12 +/**
  13 + * TranslateLangController implements the CRUD actions for TranslateLang model.
  14 + */
  15 +class TranslateLangController 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 TranslateLang models.
  31 + * @return mixed
  32 + */
  33 + public function actionIndex()
  34 + {
  35 + $searchModel = new TranslateLangSearch();
  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 TranslateLang 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 TranslateLang 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 TranslateLang();
  64 +
  65 + if ($model->load(Yii::$app->request->post()) && $model->save()) {
  66 + return $this->redirect(['view', 'id' => $model->translate_value_id]);
  67 + } else {
  68 + return $this->render('create', [
  69 + 'model' => $model,
  70 + ]);
  71 + }
  72 + }
  73 +
  74 + /**
  75 + * Updates an existing TranslateLang 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->translate_value_id]);
  86 + } else {
  87 + return $this->render('update', [
  88 + 'model' => $model,
  89 + ]);
  90 + }
  91 + }
  92 +
  93 + /**
  94 + * Deletes an existing TranslateLang 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 TranslateLang 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 TranslateLang the loaded model
  111 + * @throws NotFoundHttpException if the model cannot be found
  112 + */
  113 + protected function findModel($id)
  114 + {
  115 + if (($model = TranslateLang::findOne($id)) !== null) {
  116 + return $model;
  117 + } else {
  118 + throw new NotFoundHttpException('The requested page does not exist.');
  119 + }
  120 + }
  121 +}
... ...
frontend/models/Language.php 0 → 100644
  1 +<?php
  2 +
  3 +namespace frontend\models;
  4 +
  5 +use Yii;
  6 +
  7 +/**
  8 + * This is the model class for table "language".
  9 + *
  10 + * @property integer $language_id
  11 + * @property string $lang_code
  12 + * @property integer $is_default
  13 + *
  14 + * @property LanguageLang[] $languageLangs
  15 + * @property OptionValues[] $optionValues
  16 + */
  17 +class Language extends \yii\db\ActiveRecord
  18 +{
  19 + /**
  20 + * @inheritdoc
  21 + */
  22 + public static function tableName()
  23 + {
  24 + return 'language';
  25 + }
  26 +
  27 + /**
  28 + * @inheritdoc
  29 + */
  30 + public function rules()
  31 + {
  32 + return [
  33 + [['lang_code', 'is_default'], 'required'],
  34 + [['is_default'], 'integer'],
  35 + [['lang_code'], 'string', 'max' => 4]
  36 + ];
  37 + }
  38 +
  39 + /**
  40 + * @inheritdoc
  41 + */
  42 + public function attributeLabels()
  43 + {
  44 + return [
  45 + 'language_id' => Yii::t('app', 'Language ID'),
  46 + 'lang_code' => Yii::t('app', 'Lang Code'),
  47 + 'is_default' => Yii::t('app', 'Is Default'),
  48 + ];
  49 + }
  50 +
  51 + /**
  52 + * @return \yii\db\ActiveQuery
  53 + */
  54 + public function getLanguageLangs()
  55 + {
  56 + return $this->hasMany(LanguageLang::className(), ['language_id' => 'language_id']);
  57 + }
  58 +
  59 + /**
  60 + * @return \yii\db\ActiveQuery
  61 + */
  62 + public function getOptionValues()
  63 + {
  64 + return $this->hasMany(OptionValues::className(), ['option_lang_id' => 'language_id']);
  65 + }
  66 +}
... ...
frontend/models/LanguageLang.php 0 → 100644
  1 +<?php
  2 +
  3 +namespace frontend\models;
  4 +
  5 +use Yii;
  6 +
  7 +/**
  8 + * This is the model class for table "language_lang".
  9 + *
  10 + * @property integer $language_id
  11 + * @property string $lang_title
  12 + * @property integer $lang_id
  13 + *
  14 + * @property Language $language
  15 + */
  16 +class LanguageLang extends \yii\db\ActiveRecord
  17 +{
  18 + /**
  19 + * @inheritdoc
  20 + */
  21 + public static function tableName()
  22 + {
  23 + return 'language_lang';
  24 + }
  25 +
  26 + /**
  27 + * @inheritdoc
  28 + */
  29 + public function rules()
  30 + {
  31 + return [
  32 + [['language_id', 'lang_title'], 'required'],
  33 + [['language_id'], 'integer'],
  34 + [['lang_title'], 'string', 'max' => 256]
  35 + ];
  36 + }
  37 +
  38 + /**
  39 + * @inheritdoc
  40 + */
  41 + public function attributeLabels()
  42 + {
  43 + return [
  44 + 'language_id' => Yii::t('app', 'Language ID'),
  45 + 'lang_title' => Yii::t('app', 'Lang Title'),
  46 + 'lang_id' => Yii::t('app', 'Lang ID'),
  47 + ];
  48 + }
  49 +
  50 + /**
  51 + * @return \yii\db\ActiveQuery
  52 + */
  53 + public function getLanguage()
  54 + {
  55 + return $this->hasOne(Language::className(), ['language_id' => 'language_id']);
  56 + }
  57 +}
... ...
frontend/models/Option.php 0 → 100644
  1 +<?php
  2 +
  3 +namespace frontend\models;
  4 +
  5 +use Yii;
  6 +
  7 +/**
  8 + * This is the model class for table "option".
  9 + *
  10 + * @property integer $option_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 Option extends \yii\db\ActiveRecord
  18 +{
  19 + /**
  20 + * @inheritdoc
  21 + */
  22 + public static function tableName()
  23 + {
  24 + return 'option';
  25 + }
  26 +
  27 + /**
  28 + * @inheritdoc
  29 + */
  30 + public function rules()
  31 + {
  32 + return [
  33 + [['model', 'model_id', 'name', 'template'], 'required'],
  34 + [['model_id', 'parent_id'], 'integer'],
  35 + [['model', 'name', 'template'], 'string', 'max' => 200]
  36 + ];
  37 + }
  38 +
  39 + /**
  40 + * @inheritdoc
  41 + */
  42 + public function attributeLabels()
  43 + {
  44 + return [
  45 + 'option_id' => Yii::t('app', 'Option 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 + public function getLangs() {
  54 + return (new Language())->find()->where(['>', 'language_id', 0])->asArray()->all();
  55 + }
  56 +}
... ...
frontend/models/OptionLang.php 0 → 100644
  1 +<?php
  2 +
  3 +namespace frontend\models;
  4 +
  5 +use Yii;
  6 +
  7 +/**
  8 + * This is the model class for table "option_lang".
  9 + *
  10 + * @property integer $id
  11 + * @property integer $lang_id
  12 + * @property string $value
  13 + */
  14 +class OptionLang extends \yii\db\ActiveRecord
  15 +{
  16 + /**
  17 + * @inheritdoc
  18 + */
  19 + public static function tableName()
  20 + {
  21 + return 'option_lang';
  22 + }
  23 +
  24 + /**
  25 + * @inheritdoc
  26 + */
  27 + public function rules()
  28 + {
  29 + return [
  30 + [['id', 'lang_id'], 'required'],
  31 + [['id', 'lang_id'], 'integer'],
  32 + [['value'], 'string']
  33 + ];
  34 + }
  35 +
  36 + /**
  37 + * @inheritdoc
  38 + */
  39 + public function attributeLabels()
  40 + {
  41 + return [
  42 + 'id' => Yii::t('app', 'ID'),
  43 + 'lang_id' => Yii::t('app', 'Lang ID'),
  44 + 'value' => Yii::t('app', 'Value'),
  45 + ];
  46 + }
  47 +}
... ...
frontend/models/OptionSearch.php 0 → 100644
  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\Option;
  9 +
  10 +/**
  11 + * OptionSearch represents the model behind the search form about `frontend\models\Option`.
  12 + */
  13 +class OptionSearch extends Option
  14 +{
  15 + /**
  16 + * @inheritdoc
  17 + */
  18 + public function rules()
  19 + {
  20 + return [
  21 + [['option_id', 'model_id', 'parent_id'], 'integer'],
  22 + [['model', 'name', 'template'], '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 = Option::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 + 'option_id' => $this->option_id,
  60 + 'model_id' => $this->model_id,
  61 + 'parent_id' => $this->parent_id,
  62 + ]);
  63 +
  64 + $query->andFilterWhere(['like', 'model', $this->model])
  65 + ->andFilterWhere(['like', 'name', $this->name])
  66 + ->andFilterWhere(['like', 'template', $this->template]);
  67 +
  68 + return $dataProvider;
  69 + }
  70 +}
... ...
frontend/models/OptionValues.php 0 → 100644
  1 +<?php
  2 +
  3 +namespace frontend\models;
  4 +
  5 +use Yii;
  6 +
  7 +/**
  8 + * This is the model class for table "option_values".
  9 + *
  10 + * @property integer $option_value_id
  11 + * @property string $option_key
  12 + * @property string $option_value_text
  13 + * @property integer $option_lang_id
  14 + * @property integer $option_value_parent
  15 + * @property integer $option_user
  16 + *
  17 + * @property Language $optionLang
  18 + */
  19 +class OptionValues extends \yii\db\ActiveRecord
  20 +{
  21 + /**
  22 + * @inheritdoc
  23 + */
  24 + public static function tableName()
  25 + {
  26 + return 'option_values';
  27 + }
  28 +
  29 + /**
  30 + * @inheritdoc
  31 + */
  32 + public function rules()
  33 + {
  34 + return [
  35 + [['option_key', 'option_value_text'], 'required'],
  36 + [['option_lang_id', 'option_value_parent', 'option_user'], 'integer'],
  37 + [['option_key'], 'string', 'max' => 200]
  38 + ];
  39 + }
  40 +
  41 + /**
  42 + * @inheritdoc
  43 + */
  44 + public function attributeLabels()
  45 + {
  46 + return [
  47 + 'option_value_id' => Yii::t('app', 'Option Value ID'),
  48 + 'option_key' => Yii::t('app', 'Option Key'),
  49 + 'option_value_text' => Yii::t('app', 'Option Value Text'),
  50 + 'option_lang_id' => Yii::t('app', 'Option Lang ID'),
  51 + 'option_value_parent' => Yii::t('app', 'Option Value Parent'),
  52 + 'option_user' => Yii::t('app', 'Option User'),
  53 + ];
  54 + }
  55 +
  56 + /**
  57 + * @return \yii\db\ActiveQuery
  58 + */
  59 + public function getOptionLang()
  60 + {
  61 + return $this->hasOne(Language::className(), ['language_id' => 'option_lang_id']);
  62 + }
  63 + public function getLanguages() {
  64 + return (new LanguageLang())->find()->orderBy('language_id ASC')->asArray()->all();
  65 + }
  66 + public function getLanguagesCodes() {
  67 + return (new Language())->find()->orderBy('language_id ASC')->asArray()->all();
  68 + }
  69 + public function getDropDownArray() {
  70 + $langs = array();
  71 + foreach($this->getLanguages() as $lang) {
  72 + $langs[$lang['language_id']] = $lang['lang_title'];
  73 + }
  74 + return $langs;
  75 + }
  76 + public function beforeSave($insert) {
  77 + if (parent::beforeSave($insert)) {
  78 + $this->option_user = \Yii::$app->user->getId();
  79 + if($this->option_value_parent == 0) {
  80 + unset($this->option_value_parent);
  81 + }
  82 + return true;
  83 + } else {
  84 + return false;
  85 + }
  86 + }
  87 + public function getUserOptions() {
  88 + return (new OptionValues())->find()->where('option_user=:user')->addParams([':user' => \Yii::$app->user->getID()])->andWhere(['not', ['option_user' => null]])->asArray()->all();
  89 + }
  90 + public function getUserOptionsArray() {
  91 + $options = array('0' => Yii::t('app', 'Default Parent'));
  92 + foreach($this->getUserOptions() as $option) {
  93 + $options[$option['option_value_id']] = $option['option_key'].' - '.$option['option_value_text'];
  94 + }
  95 + return $options;
  96 + }
  97 +}
... ...
frontend/models/OptionValuesSearch.php 0 → 100644
  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\OptionValues;
  9 +
  10 +/**
  11 + * OptionValuesSearch represents the model behind the search form about `frontend\models\OptionValues`.
  12 + */
  13 +class OptionValuesSearch extends OptionValues
  14 +{
  15 + /**
  16 + * @inheritdoc
  17 + */
  18 + public function rules()
  19 + {
  20 + return [
  21 + [['option_value_id', 'option_lang_id', 'option_value_parent', 'option_user'], 'integer'],
  22 + [['option_key', 'option_value_text'], '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 = OptionValues::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 + 'option_value_id' => $this->option_value_id,
  60 + 'option_lang_id' => $this->option_lang_id,
  61 + 'option_value_parent' => $this->option_value_parent,
  62 + 'option_user' => $this->option_user,
  63 + ]);
  64 +
  65 + $query->andFilterWhere(['like', 'option_key', $this->option_key])
  66 + ->andFilterWhere(['like', 'option_value_text', $this->option_value_text]);
  67 +
  68 + return $dataProvider;
  69 + }
  70 +}
... ...
frontend/models/Options.php 0 → 100644
  1 +<?php
  2 +
  3 +namespace frontend\models;
  4 +
  5 +use Yii;
  6 +
  7 +/**
  8 + * This is the model class for table "options".
  9 + *
  10 + * @property integer $option_id
  11 + * @property string $option_key
  12 + * @property integer $option_parent
  13 + * @property integer $option_translatable
  14 + * @property string $option_format
  15 + *
  16 + * @property OptionValues[] $optionValues
  17 + * @property Options $optionParent
  18 + * @property Options[] $options
  19 + */
  20 +class Options extends \yii\db\ActiveRecord
  21 +{
  22 + /**
  23 + * @inheritdoc
  24 + */
  25 + public static function tableName()
  26 + {
  27 + return 'options';
  28 + }
  29 +
  30 + /**
  31 + * @inheritdoc
  32 + */
  33 + public function rules()
  34 + {
  35 + return [
  36 + [['option_key'], 'required'],
  37 + [['option_parent', 'option_translatable'], 'integer'],
  38 + [['option_key', 'option_format'], 'string', 'max' => 200]
  39 + ];
  40 + }
  41 +
  42 + /**
  43 + * @inheritdoc
  44 + */
  45 + public function attributeLabels()
  46 + {
  47 + return [
  48 + 'option_id' => Yii::t('app', 'Option ID'),
  49 + 'option_key' => Yii::t('app', 'Option Key'),
  50 + 'option_parent' => Yii::t('app', 'Option Parent'),
  51 + 'option_translatable' => Yii::t('app', 'Option Translatable'),
  52 + 'option_format' => Yii::t('app', 'Option Format'),
  53 + ];
  54 + }
  55 +
  56 + /**
  57 + * @return \yii\db\ActiveQuery
  58 + */
  59 + public function getOptionValues()
  60 + {
  61 + return $this->hasMany(OptionValues::className(), ['option_id' => 'option_id']);
  62 + }
  63 +
  64 + /**
  65 + * @return \yii\db\ActiveQuery
  66 + */
  67 + public function getOptionParent()
  68 + {
  69 + return $this->hasOne(Options::className(), ['option_id' => 'option_parent']);
  70 + }
  71 +
  72 + /**
  73 + * @return \yii\db\ActiveQuery
  74 + */
  75 + public function getOptions()
  76 + {
  77 + return $this->hasMany(Options::className(), ['option_parent' => 'option_id']);
  78 + }
  79 +}
... ...
frontend/models/OptionsSearch.php 0 → 100644
  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\Options;
  9 +
  10 +/**
  11 + * OptionsSearch represents the model behind the search form about `frontend\models\Options`.
  12 + */
  13 +class OptionsSearch extends Options
  14 +{
  15 + /**
  16 + * @inheritdoc
  17 + */
  18 + public function rules()
  19 + {
  20 + return [
  21 + [['option_id', 'option_parent', 'option_translatable'], 'integer'],
  22 + [['option_key', 'option_format'], '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 = Options::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 + 'option_id' => $this->option_id,
  60 + 'option_parent' => $this->option_parent,
  61 + 'option_translatable' => $this->option_translatable,
  62 + ]);
  63 +
  64 + $query->andFilterWhere(['like', 'option_key', $this->option_key])
  65 + ->andFilterWhere(['like', 'option_format', $this->option_format]);
  66 +
  67 + return $dataProvider;
  68 + }
  69 +}
... ...
frontend/views/option-values/_form.php 0 → 100644
  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\OptionValues */
  8 +/* @var $form yii\widgets\ActiveForm */
  9 +?>
  10 +
  11 +<div class="option-values-form">
  12 +
  13 + <?php $form = ActiveForm::begin(); ?>
  14 +
  15 + <?= $form->field($model, 'option_key')->textInput(['maxlength' => true]) ?>
  16 +
  17 + <div class="optionvalues-option_value_text-active">
  18 + <?= $form->field($model, 'option_value_text', ['enableClientValidation' => false])->label($model->getAttributeLabel('option_key').' | <span class="glyphicon glyphicon-globe add-langs"></span>')->textInput() ?>
  19 +
  20 + <?= $form->field($model, 'option_lang_id')->dropDownList($model->getDropDownArray()) ?>
  21 + </div>
  22 +
  23 + <?= $form->field($model, 'option_value_parent')->dropDownList($model->getUserOptionsArray()) ?>
  24 +
  25 + <div class="form-group">
  26 + <?= Html::submitButton($model->isNewRecord ? Yii::t('app', 'Create') : Yii::t('app', 'Update'), ['class' => $model->isNewRecord ? 'btn btn-success' : 'btn btn-primary']) ?>
  27 + </div>
  28 +
  29 + <?php ActiveForm::end(); ?>
  30 +
  31 +</div>
  32 +<div class="reserved_inputs">
  33 + <div class="lang-inputs form-group optionvalues-option_value_text-lang">
  34 + <label for="OptionValues[option_value_text][0]" class="col-xs-12 optionvalues-option_value_text" data-group="optionvalues-option_value_text"><?php echo $model->getAttributeLabel('option_key'); ?> | <span class="glyphicon glyphicon-globe remove-langs"></span></label>
  35 + <?php foreach($model->getLanguagesCodes() as $lang) {
  36 + ?>
  37 + <div class="col-xs-1 text-right"><span><?=$lang['lang_code']?></span></div>
  38 + <div class="col-xs-11"><input type="text" id="optionvalues-<?=$lang['lang_code']?>-option_value_text" class="form-control" name="OptionValues[option_value_text][<?=$lang['language_id']?>]" /></div>
  39 + <?php
  40 + }?>
  41 + <div class="clearfix"></div>
  42 + </div>
  43 +</div>
  44 +<script>
  45 + $(function() {
  46 + $(document).on('click', '.add-langs', function() {
  47 + var group = $(this).parent().attr('for');
  48 + $(this).parent().parent().appendTo('.reserved_inputs');
  49 + $('.field-optionvalues-option_lang_id').appendTo('.reserved_inputs');
  50 + $('.'+group+'-lang').appendTo('.'+group+'-active');
  51 + });
  52 + $(document).on('click', '.remove-langs', function() {
  53 + var group = $(this).parent().data('group');
  54 + $(this).parent().parent().appendTo('.reserved_inputs');
  55 + console.log('field-'+group);
  56 + $('.reserved_inputs .field-'+group).appendTo('.'+group+'-active');
  57 + $('.field-optionvalues-option_lang_id').appendTo('.'+group+'-active');
  58 + });
  59 + });
  60 +</script>
0 61 \ No newline at end of file
... ...
frontend/views/option-values/_search.php 0 → 100644
  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\OptionValuesSearch */
  8 +/* @var $form yii\widgets\ActiveForm */
  9 +?>
  10 +
  11 +<div class="option-values-search">
  12 +
  13 + <?php $form = ActiveForm::begin([
  14 + 'action' => ['index'],
  15 + 'method' => 'get',
  16 + ]); ?>
  17 +
  18 + <?= $form->field($model, 'option_value_id') ?>
  19 +
  20 + <?= $form->field($model, 'option_key') ?>
  21 +
  22 + <?= $form->field($model, 'option_value_text') ?>
  23 +
  24 + <?= $form->field($model, 'option_lang_id') ?>
  25 +
  26 + <?= $form->field($model, 'option_value_parent') ?>
  27 +
  28 + <?php // echo $form->field($model, 'option_user') ?>
  29 +
  30 + <div class="form-group">
  31 + <?= Html::submitButton(Yii::t('app', 'Search'), ['class' => 'btn btn-primary']) ?>
  32 + <?= Html::resetButton(Yii::t('app', 'Reset'), ['class' => 'btn btn-default']) ?>
  33 + </div>
  34 +
  35 + <?php ActiveForm::end(); ?>
  36 +
  37 +</div>
... ...
frontend/views/option-values/create.php 0 → 100644
  1 +<?php
  2 +
  3 +use yii\helpers\Html;
  4 +
  5 +
  6 +/* @var $this yii\web\View */
  7 +/* @var $model frontend\models\OptionValues */
  8 +
  9 +$this->title = Yii::t('app', 'Create Option Values');
  10 +$this->params['breadcrumbs'][] = ['label' => Yii::t('app', 'Option Values'), 'url' => ['index']];
  11 +$this->params['breadcrumbs'][] = $this->title;
  12 +?>
  13 +<div class="option-values-create">
  14 +
  15 + <h1><?= Html::encode($this->title) ?></h1>
  16 +
  17 + <?= $this->render('_form', [
  18 + 'model' => $model,
  19 + ]) ?>
  20 +
  21 +</div>
... ...
frontend/views/option-values/index.php 0 → 100644
  1 +<?php
  2 +
  3 +use yii\helpers\Html;
  4 +use yii\grid\GridView;
  5 +
  6 +/* @var $this yii\web\View */
  7 +/* @var $searchModel frontend\models\OptionValuesSearch */
  8 +/* @var $dataProvider yii\data\ActiveDataProvider */
  9 +
  10 +$this->title = Yii::t('app', 'Option Values');
  11 +$this->params['breadcrumbs'][] = $this->title;
  12 +?>
  13 +<div class="option-values-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 Option Values'), ['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 + 'option_value_id',
  29 + 'option_key',
  30 + 'option_value_text:ntext',
  31 + 'option_lang_id',
  32 + 'option_value_parent',
  33 + // 'option_user',
  34 +
  35 + ['class' => 'yii\grid\ActionColumn'],
  36 + ],
  37 + ]); ?>
  38 +
  39 +</div>
... ...
frontend/views/option-values/update.php 0 → 100644
  1 +<?php
  2 +
  3 +use yii\helpers\Html;
  4 +
  5 +/* @var $this yii\web\View */
  6 +/* @var $model frontend\models\OptionValues */
  7 +
  8 +$this->title = Yii::t('app', 'Update {modelClass}: ', [
  9 + 'modelClass' => 'Option Values',
  10 +]) . ' ' . $model->option_value_id;
  11 +$this->params['breadcrumbs'][] = ['label' => Yii::t('app', 'Option Values'), 'url' => ['index']];
  12 +$this->params['breadcrumbs'][] = ['label' => $model->option_value_id, 'url' => ['view', 'id' => $model->option_value_id]];
  13 +$this->params['breadcrumbs'][] = Yii::t('app', 'Update');
  14 +?>
  15 +<div class="option-values-update">
  16 +
  17 + <h1><?= Html::encode($this->title) ?></h1>
  18 +
  19 + <?= $this->render('_form', [
  20 + 'model' => $model,
  21 + ]) ?>
  22 +
  23 +</div>
... ...
frontend/views/option-values/view.php 0 → 100644
  1 +<?php
  2 +
  3 +use yii\helpers\Html;
  4 +use yii\widgets\DetailView;
  5 +
  6 +/* @var $this yii\web\View */
  7 +/* @var $model frontend\models\OptionValues */
  8 +
  9 +$this->title = $model->option_value_id;
  10 +$this->params['breadcrumbs'][] = ['label' => Yii::t('app', 'Option Values'), 'url' => ['index']];
  11 +$this->params['breadcrumbs'][] = $this->title;
  12 +?>
  13 +<div class="option-values-view">
  14 +
  15 + <h1><?= Html::encode($this->title) ?></h1>
  16 +
  17 + <p>
  18 + <?= Html::a(Yii::t('app', 'Update'), ['update', 'id' => $model->option_value_id], ['class' => 'btn btn-primary']) ?>
  19 + <?= Html::a(Yii::t('app', 'Delete'), ['delete', 'id' => $model->option_value_id], [
  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 + 'option_value_id',
  32 + 'option_key',
  33 + 'option_value_text:ntext',
  34 + 'option_lang_id',
  35 + 'option_value_parent',
  36 + 'option_user',
  37 + ],
  38 + ]) ?>
  39 +
  40 +</div>
... ...
frontend/views/option/_form.php 0 → 100644
  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 + <p class="text-right"><span class="glyphicon glyphicon-plus add_row"></span></p>
  16 + <?php if(empty($models)) {
  17 + ?>
  18 + <div class="form-group" id="main_row">
  19 + <?php foreach($fields as $field) {
  20 + ?>
  21 + <label for="Option[0][<?=$field['name']?>]"><?php echo Yii::t('app', $field['name']); ?></label>
  22 + <input type="hidden" name="Option[0][template]" value="<?=$field['template']?>"/>
  23 + <input type="<?=$field['template']?>" name="Option[0][value][<?=$field['name']?>]" class="form-control required" required/>
  24 + <?php
  25 + foreach($model->getLangs() as $lang) {
  26 + ?>
  27 + <div class="form-group">
  28 + <div class="col-xs-1"><?=$lang['lang_code']?></div>
  29 + <div class="col-xs-11"><input type="<?=$field['template']?>" name="Option[0][lang][<?=$field['name']?>][<?=$lang['language_id']?>]" class="form-control" /></div>
  30 + </div>
  31 + <?php
  32 + }
  33 + }?>
  34 + </div>
  35 + <?php
  36 + } else {
  37 + $first = 1;
  38 + foreach($models as $index => $row) {
  39 + foreach($row as $key => $value) {
  40 + if(!$modellang[$index][$key][0]->hasErrors('value')) {
  41 + continue;
  42 + }
  43 + if($first) {
  44 + ?>
  45 + <div class="form-group" id="main_row">
  46 + <?php
  47 + }
  48 + ?>
  49 + <label for="Option[0][<?=$key?>]"><?php echo Yii::t('app', $key); ?></label>
  50 + <input type="hidden" name="Option[0][template]" value="<?=$value->template?>"/>
  51 + <input type="<?=$value->template?>" name="Option[0][value][<?=$key?>]" class="form-control required" required value="<?=$modellang[$index][$key][0]->value?>"/>
  52 + <div class="help-block"><?=$modellang[$index][$key][0]->getFirstError('value')?></div>
  53 + <?php
  54 + foreach($value->getLangs() as $lang) {
  55 + ?>
  56 + <div class="form-group">
  57 + <div class="col-xs-1"><?=$lang['lang_code']?></div>
  58 + <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>
  59 + </div>
  60 + <?php
  61 + }
  62 + if($first) {
  63 + ?>
  64 + </div>
  65 + <?php
  66 + $first = 0;
  67 + }
  68 + }
  69 + }
  70 + }?>
  71 +
  72 + <div class="form-group">
  73 + <?= Html::submitButton($model->isNewRecord ? Yii::t('app', 'Create') : Yii::t('app', 'Update'), ['class' => $model->isNewRecord ? 'btn btn-success' : 'btn btn-primary']) ?>
  74 + </div>
  75 +
  76 + <?php ActiveForm::end(); ?>
  77 + <script>
  78 + $(function() {
  79 + var counter = 0;
  80 + $(document).on('click', '.add_row', function() {
  81 + counter++;
  82 + var clone = $('#main_row').clone().html().replace(new RegExp("Option\\[0\\]", 'g'), "Option["+counter+"]");
  83 + $(clone).appendTo('#<?=$form->getId()?>');
  84 + $('#<?=$form->getId()?> button[type=submit]').parent().appendTo('#<?=$form->getId()?>');
  85 + });
  86 + });
  87 + </script>
  88 +</div>
... ...
frontend/views/option/_form_edit.php 0 → 100644
  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', $key); ?></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 + foreach($row->getLangs() as $lang_id => $lang) {
  24 + ?>
  25 + <div class="form-group">
  26 + <div class="col-xs-1"><?=$lang['lang_code']?></div>
  27 + <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>
  28 + </div>
  29 + <?php
  30 + }
  31 + }?>
  32 +
  33 + <div class="form-group">
  34 + <?= Html::submitButton($model->isNewRecord ? Yii::t('app', 'Create') : Yii::t('app', 'Update'), ['class' => $model->isNewRecord ? 'btn btn-success' : 'btn btn-primary']) ?>
  35 + </div>
  36 +
  37 + <?php ActiveForm::end(); ?>
  38 +</div>
... ...
frontend/views/option/_search.php 0 → 100644
  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\OptionSearch */
  8 +/* @var $form yii\widgets\ActiveForm */
  9 +?>
  10 +
  11 +<div class="option-search">
  12 +
  13 + <?php $form = ActiveForm::begin([
  14 + 'action' => ['index'],
  15 + 'method' => 'get',
  16 + ]); ?>
  17 +
  18 + <?= $form->field($model, 'option_id') ?>
  19 +
  20 + <?= $form->field($model, 'model') ?>
  21 +
  22 + <?= $form->field($model, 'model_id') ?>
  23 +
  24 + <?= $form->field($model, 'name') ?>
  25 +
  26 + <?= $form->field($model, 'template') ?>
  27 +
  28 + <?php // echo $form->field($model, 'parent_id') ?>
  29 +
  30 + <div class="form-group">
  31 + <?= Html::submitButton(Yii::t('app', 'Search'), ['class' => 'btn btn-primary']) ?>
  32 + <?= Html::resetButton(Yii::t('app', 'Reset'), ['class' => 'btn btn-default']) ?>
  33 + </div>
  34 +
  35 + <?php ActiveForm::end(); ?>
  36 +
  37 +</div>
... ...
frontend/views/option/create.php 0 → 100644
  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 +?>
  13 +<div class="option-create">
  14 +
  15 + <h1><?= Html::encode($this->title) ?></h1>
  16 +
  17 + <?= $this->render('_form', [
  18 + 'model' => $model,
  19 + 'models' => $models,
  20 + 'modellang' => $modellang,
  21 + 'modeldb' => $modeldb,
  22 + 'model_id' => $model_id,
  23 + 'fields' => $fields
  24 + ]) ?>
  25 +
  26 +</div>
... ...
frontend/views/option/index.php 0 → 100644
  1 +<?php
  2 +
  3 +use yii\helpers\Html;
  4 +use yii\grid\GridView;
  5 +
  6 +/* @var $this yii\web\View */
  7 +/* @var $searchModel frontend\models\OptionSearch */
  8 +/* @var $dataProvider yii\data\ActiveDataProvider */
  9 +
  10 +$this->title = Yii::t('app', 'Options');
  11 +$this->params['breadcrumbs'][] = $this->title;
  12 +?>
  13 +<div class="option-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 Option'), ['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 + 'option_id',
  29 + 'model',
  30 + 'model_id',
  31 + 'name',
  32 + 'template',
  33 + // 'parent_id',
  34 +
  35 + ['class' => 'yii\grid\ActionColumn'],
  36 + ],
  37 + ]); ?>
  38 +
  39 +</div>
... ...
frontend/views/option/update.php 0 → 100644
  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 +]) . ' ' . $models[\Yii::$app->request->get('id')]->name;
  11 +$this->params['breadcrumbs'][] = ['label' => Yii::t('app', 'Options'), 'url' => ['index']];
  12 +$this->params['breadcrumbs'][] = ['label' => $models[\Yii::$app->request->get('id')]->name, 'url' => ['view', 'id' => $models[\Yii::$app->request->get('id')]->option_id]];
  13 +$this->params['breadcrumbs'][] = Yii::t('app', 'Update');
  14 +?>
  15 +<div class="option-update">
  16 +
  17 + <h1><?= Html::encode($this->title) ?></h1>
  18 +
  19 + <?= $this->render('_form_edit', [
  20 + 'models' => $models,
  21 + 'modellang' => $modellang,
  22 + 'modeldb' => $modeldb,
  23 + 'model_id' => $model_id
  24 + ]) ?>
  25 +
  26 +</div>
... ...
frontend/views/option/view.php 0 → 100644
  1 +<?php
  2 +
  3 +use yii\helpers\Html;
  4 +use yii\widgets\DetailView;
  5 +
  6 +/* @var $this yii\web\View */
  7 +/* @var $model frontend\models\Option */
  8 +
  9 +$this->title = $model->name;
  10 +$this->params['breadcrumbs'][] = ['label' => Yii::t('app', 'Options'), 'url' => ['index']];
  11 +$this->params['breadcrumbs'][] = $this->title;
  12 +?>
  13 +<div class="option-view">
  14 +
  15 + <h1><?= Html::encode($this->title) ?></h1>
  16 +
  17 + <p>
  18 + <?= Html::a(Yii::t('app', 'Update'), ['update', 'id' => $model->option_id], ['class' => 'btn btn-primary']) ?>
  19 + <?= Html::a(Yii::t('app', 'Delete'), ['delete', 'id' => $model->option_id], [
  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 + 'option_id',
  32 + 'model',
  33 + 'model_id',
  34 + 'name',
  35 + 'template',
  36 + 'parent_id',
  37 + ],
  38 + ]) ?>
  39 +
  40 +</div>
... ...
frontend/views/options/_form.php 0 → 100644
  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\Options */
  8 +/* @var $form yii\widgets\ActiveForm */
  9 +?>
  10 +
  11 +<div class="options-form">
  12 +
  13 + <?php $form = ActiveForm::begin(); ?>
  14 +
  15 + <?= $form->field($model, 'option_key')->textInput(['maxlength' => true]) ?>
  16 +
  17 + <?= $form->field($model, 'option_parent')->textInput() ?>
  18 +
  19 + <?= $form->field($model, 'option_translatable')->textInput() ?>
  20 +
  21 + <?= $form->field($model, 'option_format')->textInput(['maxlength' => true]) ?>
  22 +
  23 + <div class="form-group">
  24 + <?= Html::submitButton($model->isNewRecord ? Yii::t('app', 'Create') : Yii::t('app', 'Update'), ['class' => $model->isNewRecord ? 'btn btn-success' : 'btn btn-primary']) ?>
  25 + </div>
  26 +
  27 + <?php ActiveForm::end(); ?>
  28 +
  29 +</div>
... ...
frontend/views/options/_search.php 0 → 100644
  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\OptionsSearch */
  8 +/* @var $form yii\widgets\ActiveForm */
  9 +?>
  10 +
  11 +<div class="options-search">
  12 +
  13 + <?php $form = ActiveForm::begin([
  14 + 'action' => ['index'],
  15 + 'method' => 'get',
  16 + ]); ?>
  17 +
  18 + <?= $form->field($model, 'option_id') ?>
  19 +
  20 + <?= $form->field($model, 'option_key') ?>
  21 +
  22 + <?= $form->field($model, 'option_parent') ?>
  23 +
  24 + <?= $form->field($model, 'option_translatable') ?>
  25 +
  26 + <?= $form->field($model, 'option_format') ?>
  27 +
  28 + <div class="form-group">
  29 + <?= Html::submitButton(Yii::t('app', 'Search'), ['class' => 'btn btn-primary']) ?>
  30 + <?= Html::resetButton(Yii::t('app', 'Reset'), ['class' => 'btn btn-default']) ?>
  31 + </div>
  32 +
  33 + <?php ActiveForm::end(); ?>
  34 +
  35 +</div>
... ...
frontend/views/options/create.php 0 → 100644
  1 +<?php
  2 +
  3 +use yii\helpers\Html;
  4 +
  5 +
  6 +/* @var $this yii\web\View */
  7 +/* @var $model frontend\models\Options */
  8 +
  9 +$this->title = Yii::t('app', 'Create Options');
  10 +$this->params['breadcrumbs'][] = ['label' => Yii::t('app', 'Options'), 'url' => ['index']];
  11 +$this->params['breadcrumbs'][] = $this->title;
  12 +?>
  13 +<div class="options-create">
  14 +
  15 + <h1><?= Html::encode($this->title) ?></h1>
  16 +
  17 + <?= $this->render('_form', [
  18 + 'model' => $model,
  19 + ]) ?>
  20 +
  21 +</div>
... ...
frontend/views/options/index.php 0 → 100644
  1 +<?php
  2 +
  3 +use yii\helpers\Html;
  4 +use yii\grid\GridView;
  5 +
  6 +/* @var $this yii\web\View */
  7 +/* @var $searchModel frontend\models\OptionsSearch */
  8 +/* @var $dataProvider yii\data\ActiveDataProvider */
  9 +
  10 +$this->title = Yii::t('app', 'Options');
  11 +$this->params['breadcrumbs'][] = $this->title;
  12 +?>
  13 +<div class="options-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 Options'), ['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 + 'option_id',
  29 + 'option_key',
  30 + 'option_parent',
  31 + 'option_translatable',
  32 + 'option_format',
  33 +
  34 + ['class' => 'yii\grid\ActionColumn'],
  35 + ],
  36 + ]); ?>
  37 +
  38 +</div>
... ...
frontend/views/options/update.php 0 → 100644
  1 +<?php
  2 +
  3 +use yii\helpers\Html;
  4 +
  5 +/* @var $this yii\web\View */
  6 +/* @var $model frontend\models\Options */
  7 +
  8 +$this->title = Yii::t('app', 'Update {modelClass}: ', [
  9 + 'modelClass' => 'Options',
  10 +]) . ' ' . $model->option_id;
  11 +$this->params['breadcrumbs'][] = ['label' => Yii::t('app', 'Options'), 'url' => ['index']];
  12 +$this->params['breadcrumbs'][] = ['label' => $model->option_id, 'url' => ['view', 'id' => $model->option_id]];
  13 +$this->params['breadcrumbs'][] = Yii::t('app', 'Update');
  14 +?>
  15 +<div class="options-update">
  16 +
  17 + <h1><?= Html::encode($this->title) ?></h1>
  18 +
  19 + <?= $this->render('_form', [
  20 + 'model' => $model,
  21 + ]) ?>
  22 +
  23 +</div>
... ...
frontend/views/options/view.php 0 → 100644
  1 +<?php
  2 +
  3 +use yii\helpers\Html;
  4 +use yii\widgets\DetailView;
  5 +
  6 +/* @var $this yii\web\View */
  7 +/* @var $model frontend\models\Options */
  8 +
  9 +$this->title = $model->option_id;
  10 +$this->params['breadcrumbs'][] = ['label' => Yii::t('app', 'Options'), 'url' => ['index']];
  11 +$this->params['breadcrumbs'][] = $this->title;
  12 +?>
  13 +<div class="options-view">
  14 +
  15 + <h1><?= Html::encode($this->title) ?></h1>
  16 +
  17 + <p>
  18 + <?= Html::a(Yii::t('app', 'Update'), ['update', 'id' => $model->option_id], ['class' => 'btn btn-primary']) ?>
  19 + <?= Html::a(Yii::t('app', 'Delete'), ['delete', 'id' => $model->option_id], [
  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 + 'option_id',
  32 + 'option_key',
  33 + 'option_parent',
  34 + 'option_translatable',
  35 + 'option_format',
  36 + ],
  37 + ]) ?>
  38 +
  39 +</div>
... ...
frontend/views/site/index.php
... ... @@ -51,3 +51,4 @@ $this-&gt;title = &#39;My Yii Application&#39;;
51 51  
52 52 </div>
53 53 </div>
  54 +<iframe src="https://www.google.com/maps/embed/v1/view?key=AIzaSyCaeB8Lppsl-JqjsGWVHxxMQ3WqU8vGlOQ&center=50.4004297,30.6290586&zoom=18" frameborder="0" width="100%" height="300px"></iframe>
... ...
frontend/views/site/options.php 0 → 100644
  1 +<?php
  2 +
  3 +/* @var $this yii\web\View */
  4 +
  5 +$this->title = 'My Yii Application';
  6 +?>
  7 +<div id="content">
  8 + <form action="" method="post">
  9 + <input type="hidden" name="_csrf" value="<?=Yii::$app->request->getCsrfToken()?>" />
  10 + <?php foreach($options['option_values'] as $key => $val) {
  11 + ?>
  12 + <input type="hidden" name="options[<?=$key?>][option_id]" value="<?php
  13 + if(empty($val->optionValue)) {
  14 + echo $key;
  15 + } else {
  16 + echo $val->optionValue->option_id;
  17 + }
  18 + ?>" />
  19 + <label for="options[<?=$key?>][option_value]"><?=$key?></label>
  20 + <input type="text" name="options[<?=$key?>][option_value]" />
  21 + <?php
  22 + }?>
  23 + </form>
  24 +</div>
0 25 \ No newline at end of file
... ...