Commit 5dfa349e16b8a477b395aeaa43b4ed90add9c5ac
1 parent
14adae3b
Коммит последний день 2015
Showing
19 changed files
with
348 additions
and
205 deletions
Show diff stats
backend/controllers/AdminMenuController.php
| ... | ... | @@ -14,6 +14,8 @@ use yii\filters\VerbFilter; |
| 14 | 14 | */ |
| 15 | 15 | class AdminMenuController extends Controller |
| 16 | 16 | { |
| 17 | + public $layout = 'settings'; | |
| 18 | + | |
| 17 | 19 | public function behaviors() |
| 18 | 20 | { |
| 19 | 21 | return [ |
| ... | ... | @@ -117,4 +119,5 @@ class AdminMenuController extends Controller |
| 117 | 119 | throw new NotFoundHttpException('The requested page does not exist.'); |
| 118 | 120 | } |
| 119 | 121 | } |
| 122 | + | |
| 120 | 123 | } | ... | ... |
| 1 | +<?php | |
| 2 | +namespace backend\controllers; | |
| 3 | + | |
| 4 | +use Yii; | |
| 5 | +use yii\filters\AccessControl; | |
| 6 | +use yii\web\Controller; | |
| 7 | +use common\models\LoginForm; | |
| 8 | +use yii\filters\VerbFilter; | |
| 9 | +use backend\models\Profile; | |
| 10 | +use common\models\User; | |
| 11 | +use frontend\models\Option; | |
| 12 | +use yii\data\ActiveDataProvider; | |
| 13 | +use yii\validators\BooleanValidator; | |
| 14 | +use yii\validators\StringValidator; | |
| 15 | +/** | |
| 16 | + * Site controller | |
| 17 | + */ | |
| 18 | +class SettingsController extends Controller | |
| 19 | +{ | |
| 20 | + public $layout = 'settings'; | |
| 21 | + /** | |
| 22 | + * @inheritdoc | |
| 23 | + */ | |
| 24 | + public function actions() | |
| 25 | + { | |
| 26 | + return [ | |
| 27 | + 'error' => [ | |
| 28 | + 'class' => 'yii\web\ErrorAction', | |
| 29 | + ], | |
| 30 | + ]; | |
| 31 | + } | |
| 32 | + | |
| 33 | + public function actionIndex() | |
| 34 | + { | |
| 35 | + return $this->render('index'); | |
| 36 | + } | |
| 37 | + | |
| 38 | +} | ... | ... |
backend/models/AdminMenu.php
| ... | ... | @@ -23,6 +23,8 @@ use Yii; |
| 23 | 23 | */ |
| 24 | 24 | class AdminMenu extends \yii\db\ActiveRecord |
| 25 | 25 | { |
| 26 | + | |
| 27 | + public $parentt; | |
| 26 | 28 | /** |
| 27 | 29 | * @inheritdoc |
| 28 | 30 | */ |
| ... | ... | @@ -39,7 +41,7 @@ class AdminMenu extends \yii\db\ActiveRecord |
| 39 | 41 | return [ |
| 40 | 42 | [['parent_id', 'active', 'hide_min', 'sort'], 'integer'], |
| 41 | 43 | [['name'], 'required'], |
| 42 | - [['name', 'path', 'params'], 'string'] | |
| 44 | + [['name', 'path', 'params','parentt'], 'string'] | |
| 43 | 45 | ]; |
| 44 | 46 | } |
| 45 | 47 | |
| ... | ... | @@ -57,6 +59,7 @@ class AdminMenu extends \yii\db\ActiveRecord |
| 57 | 59 | 'name' => Yii::t('app', 'Name'), |
| 58 | 60 | 'path' => Yii::t('app', 'Path'), |
| 59 | 61 | 'params' => Yii::t('app', 'Params'), |
| 62 | + 'parentt' => Yii::t('app', 'Parent item') | |
| 60 | 63 | ]; |
| 61 | 64 | } |
| 62 | 65 | |
| ... | ... | @@ -98,17 +101,17 @@ class AdminMenu extends \yii\db\ActiveRecord |
| 98 | 101 | $roots = self::find()->where(['parent_id' => NULL])->with(['adminMenus'])->all(); |
| 99 | 102 | foreach($roots as $root) { |
| 100 | 103 | if($root->adminMenus) { |
| 101 | - $result[] = ['label' => $root->name, 'id' => $root->id, 'options' => ['class' => 'header']]; | |
| 104 | + $result[] = ['label' => Yii::t('app', $root->name), 'id' => $root->id, 'options' => ['class' => 'header']]; | |
| 102 | 105 | foreach($root->adminMenus as $submenu) { |
| 103 | 106 | if($submenu->adminMenus) { |
| 104 | 107 | $items = []; |
| 105 | 108 | foreach($submenu->adminMenus as $item) { |
| 106 | - $items[] = ['label' => $item->name, 'id' => $item->id, 'icon' => 'fa fa-circle-o', 'url' => array_merge([$item->path], \common\models\Tools::parseUrlParams($item->params))]; | |
| 109 | + $items[] = ['label' => Yii::t('app', $item->name), 'id' => $item->id, 'icon' => 'fa fa-circle-o', 'url' => array_merge([$item->path], \common\models\Tools::parseUrlParams($item->params))]; | |
| 107 | 110 | } |
| 108 | - $result[] = ['label' => $submenu->name, 'id' => $submenu->id, 'icon' => 'fa fa-circle-o', 'url' => '#', 'items' => $items]; | |
| 111 | + $result[] = ['label' => Yii::t('app', $submenu->name), 'id' => $submenu->id, 'icon' => 'fa fa-circle-o', 'url' => '#', 'items' => $items]; | |
| 109 | 112 | unset($items); |
| 110 | 113 | } else { |
| 111 | - $result[] = ['label' => $submenu->name, 'id' => $submenu->id, 'icon' => 'fa fa-circle-o', 'url' => array_merge([$submenu->path], \common\models\Tools::parseUrlParams($submenu->params))]; | |
| 114 | + $result[] = ['label' => Yii::t('app', $submenu->name), 'id' => $submenu->id, 'icon' => 'fa fa-circle-o', 'url' => array_merge([$submenu->path], \common\models\Tools::parseUrlParams($submenu->params))]; | |
| 112 | 115 | } |
| 113 | 116 | } |
| 114 | 117 | } |
| ... | ... | @@ -124,14 +127,26 @@ class AdminMenu extends \yii\db\ActiveRecord |
| 124 | 127 | if($root->adminMenus) { |
| 125 | 128 | $items = []; |
| 126 | 129 | foreach($root->adminMenus as $submenu) { |
| 127 | - $items[] = ['label' => $submenu->name, 'id' => $submenu->id]; | |
| 130 | + $items[] = ['label' => Yii::t('app', $submenu->name), 'id' => $submenu->id]; | |
| 128 | 131 | } |
| 129 | - $result[] = ['label' => $root->name, 'id' => $root->id, 'items' => $items]; | |
| 132 | + $result[] = ['label' => Yii::t('app', $root->name), 'id' => $root->id, 'items' => $items]; | |
| 130 | 133 | unset($items); |
| 131 | 134 | } else { |
| 132 | - $result[] = ['label' => $root->name, 'id' => $root->id]; | |
| 135 | + $result[] = ['label' => Yii::t('app', $root->name), 'id' => $root->id]; | |
| 133 | 136 | } |
| 134 | 137 | } |
| 135 | 138 | return $result; |
| 136 | 139 | } |
| 140 | + | |
| 141 | + public function beforeSave($insert) | |
| 142 | + { | |
| 143 | + if (parent::beforeSave($insert)) { | |
| 144 | + if(!$this->parent_id) { | |
| 145 | + $this->parent_id = NULL; | |
| 146 | + } | |
| 147 | + return true; | |
| 148 | + } else { | |
| 149 | + return false; | |
| 150 | + } | |
| 151 | + } | |
| 137 | 152 | } | ... | ... |
backend/models/AdminMenuSearch.php
| ... | ... | @@ -12,6 +12,8 @@ use backend\models\AdminMenu; |
| 12 | 12 | */ |
| 13 | 13 | class AdminMenuSearch extends AdminMenu |
| 14 | 14 | { |
| 15 | + | |
| 16 | + | |
| 15 | 17 | /** |
| 16 | 18 | * @inheritdoc |
| 17 | 19 | */ |
| ... | ... | @@ -19,7 +21,7 @@ class AdminMenuSearch extends AdminMenu |
| 19 | 21 | { |
| 20 | 22 | return [ |
| 21 | 23 | [['id', 'parent_id', 'active', 'hide_min', 'sort'], 'integer'], |
| 22 | - [['name', 'path', 'params'], 'safe'], | |
| 24 | + [['name', 'path', 'params','parentt'], 'safe'], | |
| 23 | 25 | ]; |
| 24 | 26 | } |
| 25 | 27 | |
| ... | ... | @@ -45,6 +47,24 @@ class AdminMenuSearch extends AdminMenu |
| 45 | 47 | |
| 46 | 48 | $dataProvider = new ActiveDataProvider([ |
| 47 | 49 | 'query' => $query, |
| 50 | + 'pagination' => [ | |
| 51 | + 'pageSize' => 5 | |
| 52 | + ], | |
| 53 | + 'sort' => [ | |
| 54 | + 'attributes' => [ | |
| 55 | + 'id', | |
| 56 | + 'name', | |
| 57 | + 'path', | |
| 58 | + 'params', | |
| 59 | + 'active', | |
| 60 | + 'hide_min', | |
| 61 | + 'parentt' => [ | |
| 62 | + 'asc' => ['name' => SORT_ASC], | |
| 63 | + 'desc' => ['name' => SORT_DESC], | |
| 64 | + 'default' => SORT_DESC | |
| 65 | + ] | |
| 66 | + ] | |
| 67 | + ] | |
| 48 | 68 | ]); |
| 49 | 69 | |
| 50 | 70 | $this->load($params); |
| ... | ... | @@ -60,12 +80,14 @@ class AdminMenuSearch extends AdminMenu |
| 60 | 80 | 'parent_id' => $this->parent_id, |
| 61 | 81 | 'active' => $this->active, |
| 62 | 82 | 'hide_min' => $this->hide_min, |
| 63 | - 'sort' => $this->sort, | |
| 83 | + 'sort' => $this->sort | |
| 64 | 84 | ]); |
| 65 | 85 | |
| 86 | + | |
| 66 | 87 | $query->andFilterWhere(['like', 'name', $this->name]) |
| 67 | 88 | ->andFilterWhere(['like', 'path', $this->path]) |
| 68 | - ->andFilterWhere(['like', 'params', $this->params]); | |
| 89 | + ->andFilterWhere(['like', 'params', $this->params]) | |
| 90 | + ->andFilterWhere(['in', 'parent_id', $this->find()->select(['id'])->andFilterWhere(['like', 'name', $this->parentt])->column()]); | |
| 69 | 91 | |
| 70 | 92 | return $dataProvider; |
| 71 | 93 | } | ... | ... |
backend/views/admin-menu/_form.php
| ... | ... | @@ -16,22 +16,6 @@ use yii\widgets\ActiveForm; |
| 16 | 16 | |
| 17 | 17 | <?= $form->field($model, 'name')->textInput() ?> |
| 18 | 18 | |
| 19 | - <p><strong><?= Yii::t('app', 'parent_id') ?></strong></p> | |
| 20 | - <ul class="list-group checkboxer"> | |
| 21 | - <?php | |
| 22 | - $roots = AdminMenu::buildMenuSelect(); | |
| 23 | - echo $form->field($model, 'parent_id', ['options' => ['class' => 'form-group list-group-item level0 checkboxer_container', 'tag' => 'li']])->error(false)->radio(['value' => 0, 'uncheck' => null, 'label' => Yii::t('app', 'root'), 'labelOptions' => ['class' => 'checkboxer_label']]); | |
| 24 | - foreach($roots as $root) { | |
| 25 | - echo $form->field($model, 'parent_id', ['options' => ['class' => 'form-group list-group-item level1 checkboxer_container', 'tag' => 'li']])->error(false)->radio(['value' => $root['id'], 'uncheck' => null, 'label' => Yii::t('app', $root['label']), 'labelOptions' => ['class' => 'checkboxer_label']]); | |
| 26 | - if($root['items']) { | |
| 27 | - foreach($root['items'] as $submenu) { | |
| 28 | - echo $form->field($model, 'parent_id', ['options' => ['class' => 'form-group list-group-item level2 checkboxer_container', 'tag' => 'li']])->error(false)->radio(['value' => $submenu['id'], 'uncheck' => null, 'label' => Yii::t('app', $submenu['label']), 'labelOptions' => ['class' => 'checkboxer_label']]); | |
| 29 | - } | |
| 30 | - } | |
| 31 | - } | |
| 32 | - ?> | |
| 33 | - </ul> | |
| 34 | - | |
| 35 | 19 | <?= $form->field($model, 'active')->checkbox() ?> |
| 36 | 20 | |
| 37 | 21 | <?= $form->field($model, 'hide_min')->checkbox() ?> |
| ... | ... | @@ -40,8 +24,36 @@ use yii\widgets\ActiveForm; |
| 40 | 24 | |
| 41 | 25 | <?= $form->field($model, 'params')->textInput() ?> |
| 42 | 26 | |
| 27 | + <div class="panel-group" id="accordion" role="tablist" aria-multiselectable="true"> | |
| 28 | + <div class="panel panel-default"> | |
| 29 | + <div class="panel-heading" role="tab" id="headingOne"> | |
| 30 | + <h4 class="panel-title"> | |
| 31 | + <a role="button" data-toggle="collapse" data-parent="#accordion" href="#collapseOne" aria-expanded="true" aria-controls="collapseOne"> | |
| 32 | + <?= Yii::t('app', 'Parent menu item') ?> | |
| 33 | + </a> | |
| 34 | + </h4> | |
| 35 | + </div> | |
| 36 | + <div id="collapseOne" class="panel-collapse collapse" role="tabpanel" aria-labelledby="headingOne"> | |
| 37 | + <ul class="list-group checkboxer"> | |
| 38 | + <?php | |
| 39 | + $roots = AdminMenu::buildMenuSelect(); | |
| 40 | + echo $form->field($model, 'parent_id', ['options' => ['class' => 'form-group list-group-item level0 checkboxer_container', 'tag' => 'li']])->error(false)->radio(['value' => 0, 'uncheck' => null, 'label' => Yii::t('app', 'root'), 'labelOptions' => ['class' => 'checkboxer_label']]); | |
| 41 | + foreach($roots as $root) { | |
| 42 | + echo $form->field($model, 'parent_id', ['options' => ['class' => 'form-group list-group-item level1 checkboxer_container', 'tag' => 'li']])->error(false)->radio(['value' => $root['id'], 'uncheck' => null, 'label' => Yii::t('app', $root['label']), 'labelOptions' => ['class' => 'checkboxer_label']]); | |
| 43 | + if($root['items']) { | |
| 44 | + foreach($root['items'] as $submenu) { | |
| 45 | + echo $form->field($model, 'parent_id', ['options' => ['class' => 'form-group list-group-item level2 checkboxer_container', 'tag' => 'li']])->error(false)->radio(['value' => $submenu['id'], 'uncheck' => null, 'label' => Yii::t('app', $submenu['label']), 'labelOptions' => ['class' => 'checkboxer_label']]); | |
| 46 | + } | |
| 47 | + } | |
| 48 | + } | |
| 49 | + ?> | |
| 50 | + </ul> | |
| 51 | + </div> | |
| 52 | + </div> | |
| 53 | + </div> | |
| 54 | + | |
| 43 | 55 | <div class="form-group"> |
| 44 | - <?= Html::submitButton($model->isNewRecord ? Yii::t('app', 'Create') : Yii::t('app', 'Update'), ['class' => $model->isNewRecord ? 'btn btn-success' : 'btn btn-primary']) ?> | |
| 56 | + <?= Html::submitButton($model->isNewRecord ? Yii::t('app', 'Create') : Yii::t('app', 'Update'), ['class' => ($model->isNewRecord ? 'btn btn-success' : 'btn btn-primary') . ' btn-flat']) ?> | |
| 45 | 57 | </div> |
| 46 | 58 | |
| 47 | 59 | <?php ActiveForm::end(); ?> | ... | ... |
backend/views/admin-menu/create.php
| ... | ... | @@ -11,11 +11,12 @@ $this->params['breadcrumbs'][] = ['label' => Yii::t('app', 'Admin Menus'), 'url' |
| 11 | 11 | $this->params['breadcrumbs'][] = $this->title; |
| 12 | 12 | ?> |
| 13 | 13 | <div class="admin-menu-create"> |
| 14 | - | |
| 15 | - <h1><?= Html::encode($this->title) ?></h1> | |
| 16 | - | |
| 17 | - <?= $this->render('_form', [ | |
| 18 | - 'model' => $model, | |
| 19 | - ]) ?> | |
| 14 | + <div class="box box-primary"> | |
| 15 | + <div class="box-body"> | |
| 16 | + <?= $this->render('_form', [ | |
| 17 | + 'model' => $model, | |
| 18 | + ]) ?> | |
| 19 | + </div> | |
| 20 | + </div> | |
| 20 | 21 | |
| 21 | 22 | </div> | ... | ... |
backend/views/admin-menu/index.php
| ... | ... | @@ -10,31 +10,82 @@ use yii\grid\GridView; |
| 10 | 10 | $this->title = Yii::t('app', 'Admin Menus'); |
| 11 | 11 | $this->params['breadcrumbs'][] = $this->title; |
| 12 | 12 | ?> |
| 13 | -<div class="admin-menu-index"> | |
| 13 | +<div class="admin-menu-index box box-primary"> | |
| 14 | 14 | |
| 15 | - <h1><?= Html::encode($this->title) ?></h1> | |
| 16 | 15 | <?php // echo $this->render('_search', ['model' => $searchModel]); ?> |
| 17 | 16 | |
| 18 | - <p> | |
| 19 | - <?= Html::a(Yii::t('app', 'Create Admin Menu'), ['create'], ['class' => 'btn btn-success']) ?> | |
| 20 | - </p> | |
| 21 | - | |
| 22 | 17 | <?= GridView::widget([ |
| 23 | 18 | 'dataProvider' => $dataProvider, |
| 24 | 19 | 'filterModel' => $searchModel, |
| 20 | + 'showFooter' => true, | |
| 21 | + 'layout' => "<div class='box-header with-border admin_grid_action'> | |
| 22 | + <div class='action_link'>" | |
| 23 | + .Html::a(Yii::t('app', 'Create Admin Menu'), ['create'], ['class' => 'btn btn-success btn-flat']). | |
| 24 | + "</div> | |
| 25 | + <div class='pull-right'> | |
| 26 | + {pager} | |
| 27 | + </div> | |
| 28 | + </div> | |
| 29 | + <div class='box-body no-padding table-responsive'> | |
| 30 | + {items} | |
| 31 | + </div> | |
| 32 | + <div class='box-footer admin_grid_action'> | |
| 33 | + <div class='action_link'>" | |
| 34 | + .Html::a(Yii::t('app', 'Create Admin Menu'), ['create'], ['class' => 'btn btn-success btn-flat']). | |
| 35 | + "</div> | |
| 36 | + <div class='pull-right'> | |
| 37 | + {pager} | |
| 38 | + </div> | |
| 39 | + </div>", | |
| 25 | 40 | 'columns' => [ |
| 26 | - ['class' => 'yii\grid\SerialColumn'], | |
| 27 | - | |
| 28 | - 'id', | |
| 29 | - 'parent_id', | |
| 30 | - 'active', | |
| 31 | - 'hide_min', | |
| 32 | - 'sort', | |
| 33 | - // 'name', | |
| 34 | - // 'path', | |
| 35 | - // 'params', | |
| 36 | - | |
| 37 | 41 | ['class' => 'yii\grid\ActionColumn'], |
| 42 | + 'id', | |
| 43 | + 'name', | |
| 44 | + 'path', | |
| 45 | + 'params', | |
| 46 | + [ | |
| 47 | + 'format' => 'raw', | |
| 48 | + 'filter' => [ | |
| 49 | + '1'=>'Отображаются', | |
| 50 | + '0'=>'Скрытые', | |
| 51 | + ], | |
| 52 | + 'value' => function($data){ | |
| 53 | + if($data->active){ | |
| 54 | + $status_img = '<i style="color: #008000" class="glyphicon glyphicon-ok"></i>'; | |
| 55 | + } else { | |
| 56 | + $status_img = '<i style="color: red" class="glyphicon glyphicon-remove"></i>'; | |
| 57 | + } | |
| 58 | + return $status_img; | |
| 59 | + }, | |
| 60 | + 'attribute'=>'active', | |
| 61 | + ], | |
| 62 | + [ | |
| 63 | + 'attribute' => 'parentt', | |
| 64 | + 'content' => | |
| 65 | + function($model, $key, $index, $column) { | |
| 66 | + if($model->parent->id) { | |
| 67 | + return $model->parent->name; | |
| 68 | + } else { | |
| 69 | + return '<i class="small">'.Yii::t('app', 'Корневой элемент').'</i>'; | |
| 70 | + } | |
| 71 | + } | |
| 72 | + ], | |
| 73 | + [ | |
| 74 | + 'format' => 'raw', | |
| 75 | + 'filter' => [ | |
| 76 | + '1'=>'Отображаются', | |
| 77 | + '0'=>'Скрытые', | |
| 78 | + ], | |
| 79 | + 'value' => function($data){ | |
| 80 | + if($data->hide_min){ | |
| 81 | + $status_img = '<i style="color: #008000" class="glyphicon glyphicon-ok"></i>'; | |
| 82 | + } else { | |
| 83 | + $status_img = '<i style="color: red" class="glyphicon glyphicon-remove"></i>'; | |
| 84 | + } | |
| 85 | + return $status_img; | |
| 86 | + }, | |
| 87 | + 'attribute'=>'hide_min', | |
| 88 | + ], | |
| 38 | 89 | ], |
| 39 | 90 | ]); ?> |
| 40 | 91 | ... | ... |
backend/views/admin-menu/update.php
| ... | ... | @@ -5,17 +5,13 @@ use yii\helpers\Html; |
| 5 | 5 | /* @var $this yii\web\View */ |
| 6 | 6 | /* @var $model backend\models\AdminMenu */ |
| 7 | 7 | |
| 8 | -$this->title = Yii::t('app', 'Update {modelClass}: ', [ | |
| 9 | - 'modelClass' => 'Admin Menu', | |
| 10 | -]) . ' ' . $model->name; | |
| 8 | +$this->title = Yii::t('app', 'Update') . ': ' . $model->name; | |
| 11 | 9 | $this->params['breadcrumbs'][] = ['label' => Yii::t('app', 'Admin Menus'), 'url' => ['index']]; |
| 12 | 10 | $this->params['breadcrumbs'][] = ['label' => $model->name, 'url' => ['view', 'id' => $model->id]]; |
| 13 | 11 | $this->params['breadcrumbs'][] = Yii::t('app', 'Update'); |
| 14 | 12 | ?> |
| 15 | 13 | <div class="admin-menu-update"> |
| 16 | 14 | |
| 17 | - <h1><?= Html::encode($this->title) ?></h1> | |
| 18 | - | |
| 19 | 15 | <?= $this->render('_form', [ |
| 20 | 16 | 'model' => $model, |
| 21 | 17 | ]) ?> | ... | ... |
backend/views/admin-menu/view.php
| ... | ... | @@ -6,24 +6,11 @@ use yii\widgets\DetailView; |
| 6 | 6 | /* @var $this yii\web\View */ |
| 7 | 7 | /* @var $model backend\models\AdminMenu */ |
| 8 | 8 | |
| 9 | -$this->title = $model->name; | |
| 9 | +$this->title = Yii::t('app', 'Admin Menus').': '.$model->name; | |
| 10 | 10 | $this->params['breadcrumbs'][] = ['label' => Yii::t('app', 'Admin Menus'), 'url' => ['index']]; |
| 11 | 11 | $this->params['breadcrumbs'][] = $this->title; |
| 12 | 12 | ?> |
| 13 | -<div class="admin-menu-view"> | |
| 14 | - | |
| 15 | - <h1><?= Html::encode($this->title) ?></h1> | |
| 16 | - | |
| 17 | - <p> | |
| 18 | - <?= Html::a(Yii::t('app', 'Update'), ['update', 'id' => $model->id], ['class' => 'btn btn-primary']) ?> | |
| 19 | - <?= Html::a(Yii::t('app', 'Delete'), ['delete', 'id' => $model->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> | |
| 13 | +<div class="admin-menu-view box box-primary"> | |
| 27 | 14 | |
| 28 | 15 | <?= DetailView::widget([ |
| 29 | 16 | 'model' => $model, |
| ... | ... | @@ -39,4 +26,18 @@ $this->params['breadcrumbs'][] = $this->title; |
| 39 | 26 | ], |
| 40 | 27 | ]) ?> |
| 41 | 28 | |
| 29 | + <div class="box-footer with-border"> | |
| 30 | + <p> | |
| 31 | + <?= Html::a(Yii::t('app', 'Update'), ['update', 'id' => $model->id], ['class' => 'btn btn-primary btn-flat']) ?> | |
| 32 | + <?= Html::a(Yii::t('app', 'Delete'), ['delete', 'id' => $model->id], [ | |
| 33 | + 'class' => 'btn btn-danger btn-flat', | |
| 34 | + 'data' => [ | |
| 35 | + 'confirm' => Yii::t('app', 'Are you sure you want to delete this item?'), | |
| 36 | + 'method' => 'post', | |
| 37 | + ], | |
| 38 | + ]) ?> | |
| 39 | + <?= Html::a(Yii::t('app', 'Back'), ['index'], ['class' => 'btn btn-default btn-flat']) ?> | |
| 40 | + </p> | |
| 41 | + </div> | |
| 42 | + | |
| 42 | 43 | </div> | ... | ... |
backend/views/layouts/left.php
| ... | ... | @@ -13,103 +13,16 @@ |
| 13 | 13 | <a href="#"><i class="fa fa-circle text-success"></i> Online</a> |
| 14 | 14 | </div> |
| 15 | 15 | </div> |
| 16 | - <?php | |
| 17 | - /* | |
| 18 | - <ul class="sidebar-menu"> | |
| 19 | - <?php | |
| 20 | - $roots = \backend\models\AdminMenu::find()->where(['parent_id' => NULL])->all(); | |
| 21 | - foreach($roots as $root) { | |
| 22 | - if($root->adminMenus) { | |
| 23 | - echo "<li class='header'>{$root->name}</li>"; | |
| 24 | - echo "<li class='treeview'>"; | |
| 25 | - foreach($root->adminMenus as $submenu) { | |
| 26 | - if($submenu->adminMenus) { | |
| 27 | - echo \yii\helpers\Html::a("<i class='fa fa-circle-o'></i><span>".\yii\helpers\Html::encode($submenu->name)."</span><i class='fa fa-angle-left pull-right'></i>"); | |
| 28 | - echo "<ul class='treeview-menu' style='display:none'>"; | |
| 29 | - foreach($submenu->adminMenus as $item) { | |
| 30 | - echo "<li>".\yii\helpers\Html::a("<i class='fa fa-circle-o'></i><span>".\yii\helpers\Html::encode($item->name)."</span>", array_merge([$item->path], \common\models\Tools::parseUrlParams($item->params)))."</li>"; | |
| 31 | - } | |
| 32 | - echo "</ul>"; | |
| 33 | - } else { | |
| 34 | - echo \yii\helpers\Html::a("<i class='fa fa-circle-o'></i><span>".\yii\helpers\Html::encode($submenu->name)."</span>", array_merge([$submenu->path], \common\models\Tools::parseUrlParams($submenu->params))); | |
| 35 | - } | |
| 36 | - } | |
| 37 | - echo "</li>"; | |
| 38 | - } | |
| 39 | - } | |
| 40 | - ?> | |
| 41 | - </ul> | |
| 42 | - */ ?> | |
| 43 | 16 | |
| 44 | 17 | <?= dmstr\widgets\Menu::widget([ |
| 45 | 18 | 'options' => ['class' => 'sidebar-menu'], |
| 46 | - 'items' => \backend\models\AdminMenu::buildMenu(), | |
| 19 | + 'items' => array_merge( | |
| 20 | + \backend\models\AdminMenu::buildMenu(), | |
| 21 | + [ | |
| 22 | + ['label' => Yii::t('app', 'Settings'), 'url' => ['/settings/index'], 'icon' => 'fa fa-gear'] | |
| 23 | + ] | |
| 24 | + ), | |
| 47 | 25 | ]) ?> |
| 48 | - <?php | |
| 49 | - /* | |
| 50 | - <?= dmstr\widgets\Menu::widget( | |
| 51 | - [ | |
| 52 | - 'options' => ['class' => 'sidebar-menu'], | |
| 53 | - 'items' => [ | |
| 54 | - ['label' => 'Термины', 'icon' => 'fa fa-file-code-o', 'url' => ['/termin/']], | |
| 55 | - //['label' => Yii::t('app', 'Pages'), 'icon' => 'fa fa-file-code-o', 'url' => ['/page/']], | |
| 56 | - //['label' => 'Каталог', 'icon' => 'fa fa-file-code-o', 'url' => ['/catalog/']], | |
| 57 | - ['label' => 'Меню', 'icon' => 'fa fa-file-code-o', 'url' => ['/menu/']], | |
| 58 | - ['label' => 'Заявки', 'icon' => 'fa fa-file-code-o', 'url' => ['/site/requests/']], | |
| 59 | - ['label' => 'Gii', 'icon' => 'fa fa-file-code-o', 'url' => ['/gii']], | |
| 60 | - ['label' => 'Debug', 'icon' => 'fa fa-dashboard', 'url' => ['/debug']], | |
| 61 | - ['label' => 'Login', 'url' => ['site/login'], 'visible' => Yii::$app->user->isGuest], | |
| 62 | - ['label' => 'Пользователи', 'icon' => 'fa fa-file-code-o', 'url' => ['/user/']], | |
| 63 | - [ | |
| 64 | - 'label' => Yii::t('app', 'Blog'), | |
| 65 | - 'icon' => 'fa fa-share', | |
| 66 | - 'url' => '#', | |
| 67 | - 'items' => [ | |
| 68 | - ['label' => Yii::t('app', 'Static pages'), 'icon' => 'fa fa-file-code-o', 'url' => ['blog/articles', 'category_id' => '63'],], | |
| 69 | - ['label' => Yii::t('app', 'Categories'), 'icon' => 'fa fa-dashboard', 'url' => ['blog/categories'],], | |
| 70 | - ['label' => Yii::t('app', 'Articles'), 'icon' => 'fa fa-dashboard', 'url' => ['blog/articles'],], | |
| 71 | - ], | |
| 72 | - ], | |
| 73 | - [ | |
| 74 | - 'label' => 'Роли', | |
| 75 | - 'icon' => 'fa fa-share', | |
| 76 | - 'url' => '#', | |
| 77 | - 'items' => [ | |
| 78 | - ['label' => 'Управление ролями', 'icon' => 'fa fa-file-code-o', 'url' => ['/permit/access/role'],], | |
| 79 | - ['label' => 'Управление правами доступа', 'icon' => 'fa fa-dashboard', 'url' => ['/permit/access/permission'],], | |
| 80 | - ], | |
| 81 | - ], | |
| 82 | - [ | |
| 83 | - 'label' => 'Same tools', | |
| 84 | - 'icon' => 'fa fa-share', | |
| 85 | - 'url' => '#', | |
| 86 | - 'items' => [ | |
| 87 | - ['label' => 'Gii', 'icon' => 'fa fa-file-code-o', 'url' => ['/gii'],], | |
| 88 | - ['label' => 'Debug', 'icon' => 'fa fa-dashboard', 'url' => ['/debug'],], | |
| 89 | - [ | |
| 90 | - 'label' => 'Level One', | |
| 91 | - 'icon' => 'fa fa-circle-o', | |
| 92 | - 'url' => '#', | |
| 93 | - 'items' => [ | |
| 94 | - ['label' => 'Level Two', 'icon' => 'fa fa-circle-o', 'url' => '#',], | |
| 95 | - [ | |
| 96 | - 'label' => 'Level Two', | |
| 97 | - 'icon' => 'fa fa-circle-o', | |
| 98 | - 'url' => '#', | |
| 99 | - 'items' => [ | |
| 100 | - ['label' => 'Level Three', 'icon' => 'fa fa-circle-o', 'url' => '#',], | |
| 101 | - ['label' => 'Level Three', 'icon' => 'fa fa-circle-o', 'url' => '#',], | |
| 102 | - ], | |
| 103 | - ], | |
| 104 | - ], | |
| 105 | - ], | |
| 106 | - ], | |
| 107 | - ], | |
| 108 | - ], | |
| 109 | - ] | |
| 110 | - ) ?> | |
| 111 | - */ | |
| 112 | - ?> | |
| 113 | 26 | |
| 114 | 27 | </section> |
| 115 | 28 | ... | ... |
| 1 | +<?php | |
| 2 | + | |
| 3 | +use dmstr\widgets\Menu; | |
| 4 | +use yii\widgets\Breadcrumbs; | |
| 5 | +use yii\helpers\Html; | |
| 6 | + | |
| 7 | +/* @var $content string */ | |
| 8 | +$this->beginContent('@app/views/layouts/main.php'); | |
| 9 | +?> | |
| 10 | + <div class="row"> | |
| 11 | + <div class="col-md-3"> | |
| 12 | + <div class="box box-solid"> | |
| 13 | + <div class="box-header with-border"> | |
| 14 | + <h3 class="box-title"><?=Yii::t('app', 'Settings categories')?></h3> | |
| 15 | + <div class="box-tools"> | |
| 16 | + <button type="button" class="btn btn-box-tool" data-widget="collapse"> | |
| 17 | + <i class="fa fa-minus"></i> | |
| 18 | + </button> | |
| 19 | + </div> | |
| 20 | + </div> | |
| 21 | + <div class="box-body no-padding"> | |
| 22 | + <?php | |
| 23 | + echo Menu::widget([ | |
| 24 | + 'options' => [ | |
| 25 | + 'class' => 'nav nav-pills nav-stacked' | |
| 26 | + ], | |
| 27 | + 'items' => [ | |
| 28 | + ['label' => Yii::t('app', 'Admin Menus'), 'url' => ['/admin-menu/index'], 'icon' => 'fa fa-navicon'], | |
| 29 | + ['label' => Yii::t('app', 'Next menu item'), 'url' => ['#'], 'icon' => 'fa fa-arrow-circle-o-right'], | |
| 30 | + ], | |
| 31 | + ]); | |
| 32 | + ?> | |
| 33 | + </div> | |
| 34 | + </div> | |
| 35 | + </div> | |
| 36 | + <div class="col-md-9"> | |
| 37 | + <?= $content ?> | |
| 38 | + </div> | |
| 39 | + </div> | |
| 40 | +<?php $this->endContent() ?> | |
| 0 | 41 | \ No newline at end of file | ... | ... |
backend/web/css/site.css
| ... | ... | @@ -123,4 +123,13 @@ a.desc:after { |
| 123 | 123 | .checkboxer .checkboxer_label input[type=radio] { |
| 124 | 124 | position: absolute; |
| 125 | 125 | clip: rect(0,0,0,0); |
| 126 | -} | |
| 127 | 126 | \ No newline at end of file |
| 127 | +} | |
| 128 | +.action_link { | |
| 129 | + float: left; | |
| 130 | +} | |
| 131 | +.admin_grid_action { | |
| 132 | + padding: 0 20px; | |
| 133 | +} | |
| 134 | +.admin_grid_action .pagination { | |
| 135 | + margin: 0; | |
| 136 | +} | ... | ... |
backend/web/js/option.js
| ... | ... | @@ -12,6 +12,12 @@ function readURL(input) { |
| 12 | 12 | } |
| 13 | 13 | return urls; |
| 14 | 14 | } |
| 15 | +function checkboxerInit() { | |
| 16 | + $.each($('.checkboxer input[type=radio]:checked'), function(index, value) { | |
| 17 | + console.log(value); | |
| 18 | + $(value).trigger('change'); | |
| 19 | + }); | |
| 20 | +} | |
| 15 | 21 | $(function() { |
| 16 | 22 | var counter = 0; |
| 17 | 23 | $(document).on('click', '.add_row', function() { |
| ... | ... | @@ -36,42 +42,6 @@ $(function() { |
| 36 | 42 | $(document).on('click', '.remove_lang', function() { |
| 37 | 43 | $(this).parents('.form-wrapper').remove(); |
| 38 | 44 | }); |
| 39 | - if($('#lang-tabs li').length > 1) { | |
| 40 | - $('#lang-tabs li').append('<span class="glyphicon glyphicon-remove-circle remove-lang"></span>') | |
| 41 | - } | |
| 42 | - $(document).on('click', '#lang-dropdown li a[data-lang]', function() { | |
| 43 | - var lang = $(this).data('lang'); | |
| 44 | - var flag = $(this).find('span').first().clone(); | |
| 45 | - var el = $(this); | |
| 46 | - $.get('/blog/ajax/category-form', { lang_id: lang }, function(data) { | |
| 47 | - $('#lang-tabs li').removeClass('active'); | |
| 48 | - $('#lang-tabs').append('<li role="lang_inputs" class="active" data-lang="'+lang+'"><a href="#lang-'+lang+'" aria-controls="lang-'+lang+'" role="tab" data-toggle="tab">'+$('<p>').append($(flag)).html()+'</a></li>'); | |
| 49 | - $('.lang-tab-content .tab-pane.active').removeClass('active'); | |
| 50 | - $('.lang-tab-content').append($(data).find('.ajax-loaded').first()); | |
| 51 | - $('body').append($(data).filter('script')); | |
| 52 | - $(el).parent().remove(); | |
| 53 | - if(!$('#lang-dropdown li').length) { | |
| 54 | - $('#dropdownLang').addClass('disabled'); | |
| 55 | - } | |
| 56 | - if($('#lang-tabs li').length > 1) { | |
| 57 | - $('#lang-tabs li').append('<span class="glyphicon glyphicon-remove-circle remove-lang"></span>') | |
| 58 | - } | |
| 59 | - }); | |
| 60 | - }); | |
| 61 | - $(document).on('click', '.remove-lang', function() { | |
| 62 | - var lang = $(this).parent().data('lang'); | |
| 63 | - var flag = $(this).parent().find('span.flag').first().clone(); | |
| 64 | - $('#lang-'+lang).remove(); | |
| 65 | - $('#lang-dropdown').append('<li><a href="#lang-tabs" data-lang="'+lang+'">'+$('<p>').append($(flag)).html()+'</a></li>'); | |
| 66 | - $('#dropdownLang').removeClass('disabled'); | |
| 67 | - $(this).parent().remove(); | |
| 68 | - if($('#lang-tabs li').length <= 1) { | |
| 69 | - $('#lang-tabs li').find('.remove-lang').remove(); | |
| 70 | - } | |
| 71 | - if(!$('#lang-tabs>li.active').length) { | |
| 72 | - $('#lang-tabs>li').first().find('a').tab('show'); | |
| 73 | - } | |
| 74 | - }); | |
| 75 | 45 | $(document).on('change', '.image_inputs_field', function() { |
| 76 | 46 | readURL(this); |
| 77 | 47 | }); |
| ... | ... | @@ -89,9 +59,50 @@ $(function() { |
| 89 | 59 | } |
| 90 | 60 | return false; |
| 91 | 61 | }); |
| 62 | + $.each($('.nav-tabs.f32'), function(key, value) { | |
| 63 | + if($(value).find('li').length > 1) { | |
| 64 | + $(value).find('li').append('<span class="glyphicon glyphicon-remove-circle remove-lang"></span>'); | |
| 65 | + } | |
| 66 | + }); | |
| 67 | + $(document).on('click', '.dropdown-menu.f32 li a[data-lang]', function() { | |
| 68 | + var lang = $(this).data('lang'); | |
| 69 | + var flag = $(this).find('span').first().clone(); | |
| 70 | + var el = $(this); | |
| 71 | + var id = $(this).attr('href').substr(1); | |
| 72 | + $.get(form[id], { lang_id: lang, widget_id: id }, function(data) { | |
| 73 | + $('#'+id+'-tabs li').removeClass('active'); | |
| 74 | + $('#'+id+'-tabs').append('<li role="lang_inputs" class="active" data-lang="'+lang+'"><a href="#'+id+'-'+lang+'" aria-controls="'+id+'-'+lang+'" role="tab" data-toggle="tab">'+$('<p>').append($(flag)).html()+'</a></li>'); | |
| 75 | + $('#tab-content-'+id+' .tab-pane.active').removeClass('active'); | |
| 76 | + $('#tab-content-'+id).append($(data).find('.ajax-loaded').first()); | |
| 77 | + $('body').append($(data).filter('script')); | |
| 78 | + $(el).parent().remove(); | |
| 79 | + if(!$('#lang-'+id+' li').length) { | |
| 80 | + $('#'+id+'Lang').addClass('disabled'); | |
| 81 | + } | |
| 82 | + if($('#'+id+'-tabs li').length > 1) { | |
| 83 | + $('#'+id+'-tabs li').append('<span class="glyphicon glyphicon-remove-circle remove-lang"></span>') | |
| 84 | + } | |
| 85 | + }); | |
| 86 | + }); | |
| 87 | + $(document).on('click', '.remove-lang', function() { | |
| 88 | + var lang = $(this).parent().data('lang'); | |
| 89 | + var flag = $(this).parent().find('span.flag').first().clone(); | |
| 90 | + var id = $(this).parent().find('a[aria-controls]').first().attr('aria-controls').substr(0,8); | |
| 91 | + $('#'+id+'-'+lang).remove(); | |
| 92 | + $('#lang-'+id).append('<li><a href="#'+id+'" data-lang="'+lang+'">'+$('<p>').append($(flag)).html()+'</a></li>'); | |
| 93 | + $('#'+id+'Lang').removeClass('disabled'); | |
| 94 | + $(this).parent().remove(); | |
| 95 | + if($('#'+id+'-tabs li').length <= 1) { | |
| 96 | + $('#'+id+'-tabs li').find('.remove-lang').remove(); | |
| 97 | + } | |
| 98 | + if(!$('#'+id+'-tabs>li.active').length) { | |
| 99 | + $('#'+id+'-tabs>li').first().find('a').tab('show'); | |
| 100 | + } | |
| 101 | + }); | |
| 92 | 102 | $(document).on('change', '.checkboxer .checkboxer_label input[type=radio]', function() { |
| 93 | 103 | console.log($(this).val()); |
| 94 | 104 | $(this).parents('.checkboxer').find('.checkboxer_container').removeClass('active'); |
| 95 | 105 | $(this).parents('.checkboxer_container').addClass('active'); |
| 96 | 106 | }); |
| 107 | + checkboxerInit(); | |
| 97 | 108 | }); |
| 98 | 109 | \ No newline at end of file | ... | ... |
common/config/main.php
common/translation/ru/app.php
| ... | ... | @@ -58,9 +58,23 @@ return [ |
| 58 | 58 | 'Category update' => 'Редактирование категории', |
| 59 | 59 | 'Article create' => 'Создание статьи', |
| 60 | 60 | 'Update category' => 'Редактирование категории', |
| 61 | - 'Select parent' => 'Выберать родителя', | |
| 61 | + 'Select parent' => 'Выбрать родителя', | |
| 62 | 62 | 'Blog' => 'Блог', |
| 63 | 63 | 'Static pages' => 'Статические страницы', |
| 64 | + 'Create Admin Menu' => 'Создать элемент меню', | |
| 65 | + 'Admin Menus' => 'Административное меню', | |
| 66 | + 'Hide Min' => 'Спрятать в свернутом', | |
| 67 | + 'Path' => 'Путь', | |
| 68 | + 'Params' => 'Параметры', | |
| 69 | + 'Parent item' => 'Родительский элемент', | |
| 70 | + 'Active Menu' => 'Активный', | |
| 71 | + 'Not Active Menu' => 'Неактивный', | |
| 72 | + 'Show Menu Min' => 'Отобразить', | |
| 73 | + 'Hide Menu Min' => 'Спрятать', | |
| 74 | + 'Update' => 'Редактировать', | |
| 75 | + 'Delete' => 'Удалить', | |
| 76 | + 'Settings categories' => 'Разделы настроек', | |
| 77 | + 'Back' => 'Назад', | |
| 64 | 78 | |
| 65 | 79 | // Вова |
| 66 | 80 | 'page' => 'Страница', | ... | ... |
db-migration/yarik/public.backup
No preview for this file type
frontend/config/main.php
frontend/web/js/option.js
| ... | ... | @@ -93,4 +93,9 @@ $(function() { |
| 93 | 93 | $('#'+id+'-tabs>li').first().find('a').tab('show'); |
| 94 | 94 | } |
| 95 | 95 | }); |
| 96 | + $(document).on('change', '.checkboxer .checkboxer_label input[type=radio]', function() { | |
| 97 | + console.log($(this).val()); | |
| 98 | + $(this).parents('.checkboxer').find('.checkboxer_container').removeClass('active'); | |
| 99 | + $(this).parents('.checkboxer_container').addClass('active'); | |
| 100 | + }); | |
| 96 | 101 | }); |
| 97 | 102 | \ No newline at end of file | ... | ... |