/** * Creates data provider instance with search query applied * * @param array $params * * @return ActiveDataProvider */ public function search($params) { $query = MenuType::find(); $dataProvider = new ActiveDataProvider(['query' => $query]); if (!($this->load($params) && $this->validate())) { return $dataProvider; } $query->andFilterWhere(['id' => $this->id, 'created_at' => $this->created_at, 'updated_at' => $this->updated_at, 'created_by' => $this->created_by, 'updated_by' => $this->updated_by, 'lock' => $this->lock]); $query->andFilterWhere(['like', 'title', $this->title])->andFilterWhere(['like', 'alias', $this->alias])->andFilterWhere(['like', 'note', $this->note]); return $dataProvider; }
use yii\bootstrap\NavBar; use yii\bootstrap\Nav; use yii\helpers\Html; $this->registerAssetBundle(\gromver\platform\basic\modules\main\widgets\assets\PlatformAsset::className()); $navBar = NavBar::begin(\yii\helpers\ArrayHelper::merge(['brandLabel' => Yii::$app->grom->siteName, 'brandUrl' => ['/grom/backend/default/index'], 'options' => ['class' => 'navbar-inverse navbar-fixed-top platform-panel']], $widget->options)); ?> <?php echo \gromver\platform\basic\modules\search\widgets\SearchFormBackend::widget(['id' => 'bPanelForm', 'options' => ['class' => 'navbar-form'], 'wrapperOptions' => ['class' => 'navbar-left'], 'query' => '']); ?> <?php $menuItems = [['label' => Yii::t('gromver.platform', 'System'), 'items' => [['label' => Yii::t('gromver.platform', 'Control Panel'), 'url' => ['/grom/backend/default/index']], '<li class="divider"></li>', ['label' => Yii::t('gromver.platform', 'Configuration'), 'url' => ['/grom/backend/default/params']], '<li class="divider"></li>', ['label' => Yii::t('gromver.platform', 'Users'), 'url' => ['/grom/user/backend/default/index']], '<li class="divider"></li>', ['label' => Yii::t('gromver.platform', 'Flush Cache'), 'url' => ['/grom/backend/default/flush-cache']]]], ['label' => Yii::t('gromver.platform', 'Menu'), 'items' => array_merge([['label' => Yii::t('gromver.platform', 'Menu Types'), 'url' => ['/grom/menu/backend/type/index']], ['label' => Yii::t('gromver.platform', 'Menu Items'), 'url' => ['/grom/menu/backend/item/index']], '<li class="divider"></li>'], array_map(function ($value) { /** @var $value \gromver\platform\basic\modules\menu\models\MenuType */ return ['label' => $value->title, 'url' => ['/grom/menu/backend/item/index', 'MenuItemSearch' => ['menu_type_id' => $value->id]]]; }, \gromver\platform\basic\modules\menu\models\MenuType::find()->all()))], ['label' => Yii::t('gromver.platform', 'Content'), 'items' => [['label' => Yii::t('gromver.platform', 'Pages'), 'url' => ['/grom/page/backend/default/index']], '<li class="divider"></li>', ['label' => Yii::t('gromver.platform', 'Categories'), 'url' => ['/grom/news/backend/category/index']], ['label' => Yii::t('gromver.platform', 'Posts'), 'url' => ['/grom/news/backend/post/index']], '<li class="divider"></li>', ['label' => Yii::t('gromver.platform', 'Tags'), 'url' => ['/grom/tag/backend/default/index']], '<li class="divider"></li>', ['label' => Yii::t('gromver.platform', 'Media Manager'), 'url' => ['/grom/media/backend/default/index']]]]]; if (Yii::$app->user->isGuest) { $menuItems[] = ['label' => Yii::t('gromver.platform', 'Login'), 'url' => Yii::$app->user->loginUrl]; } else { $menuItems[] = ['label' => '<i class="glyphicon glyphicon-user"></i> ' . Yii::$app->user->identity->username, 'items' => [['label' => '<i class="glyphicon glyphicon-home"></i> ' . Yii::t('gromver.platform', 'Home'), 'url' => Yii::$app->homeUrl], ['label' => '<i class="glyphicon glyphicon-envelope"></i> ' . Yii::t('gromver.platform', 'Contact'), 'url' => ['/grom/backend/default/contact']], '<li class="divider"></li>', ['label' => '<i class="glyphicon glyphicon-cog"></i> ' . Yii::t('gromver.platform', 'Account'), 'url' => ['/grom/user/backend/account/index']], ['label' => '<i class="glyphicon glyphicon-log-out"></i> ' . Yii::t('gromver.platform', 'Logout'), 'url' => ['/grom/auth/default/logout']]]]; } ?> <div class="navbar-right"> <?php echo Nav::widget(['options' => ['class' => 'navbar-nav navbar-left'], 'items' => $menuItems, 'encodeLabels' => false]); ?> <div class="input-group navbar-left"> <?php echo Html::tag('span', Yii::t('gromver.platform', 'Language'), ['class' => 'navbar-text']) . ' ';
<?php /*<p> <?= Html::a(Yii::t('gromver.platform', 'Create {modelClass}', [ 'modelClass' => 'Menu', ]), ['create'], ['class' => 'btn btn-success']) ?> </p>*/ ?> <?php echo GridView::widget(['id' => 'table-grid', 'dataProvider' => $dataProvider, 'filterModel' => $searchModel, 'pjax' => true, 'pjaxSettings' => ['neverTimeout' => true], 'columns' => [['class' => '\\kartik\\grid\\CheckboxColumn'], ['attribute' => 'id', 'hAlign' => GridView::ALIGN_CENTER, 'vAlign' => GridView::ALIGN_MIDDLE, 'width' => '60px'], ['attribute' => 'language', 'hAlign' => GridView::ALIGN_CENTER, 'vAlign' => GridView::ALIGN_MIDDLE, 'width' => '80px', 'value' => function ($model) { /** @var $model \gromver\platform\basic\modules\menu\models\MenuItem */ return \gromver\platform\basic\modules\main\widgets\TranslationsBackend::widget(['model' => $model]); }, 'format' => 'raw', 'filter' => Yii::$app->getAcceptedLanguagesList()], ['attribute' => 'menu_type_id', 'vAlign' => GridView::ALIGN_MIDDLE, 'width' => '100px', 'value' => function ($model) { /** @var $model \gromver\platform\basic\modules\menu\models\MenuItem */ return $model->menuType->title; }, 'filter' => \yii\helpers\ArrayHelper::map(\gromver\platform\basic\modules\menu\models\MenuType::find()->all(), 'id', 'title')], ['attribute' => 'title', 'vAlign' => GridView::ALIGN_MIDDLE, 'value' => function ($model) { /** @var $model \gromver\platform\basic\modules\menu\models\MenuItem */ return str_repeat(" • ", max($model->level - 2, 0)) . $model->title . '<br/>' . Html::tag('small', $model->path); }, 'format' => 'html'], ['attribute' => 'link', 'vAlign' => GridView::ALIGN_MIDDLE], ['attribute' => 'status', 'hAlign' => GridView::ALIGN_CENTER, 'vAlign' => GridView::ALIGN_MIDDLE, 'value' => function ($model) { /** @var $model \gromver\platform\basic\modules\menu\models\MenuItem */ return Html::beginTag('div', ['class' => 'btn-group']) . Html::a('<i class="glyphicon glyphicon-star"></i>', \yii\helpers\Url::to(['status', 'id' => $model->id, 'status' => $model::STATUS_MAIN_PAGE]), ['class' => 'btn btn-xs' . ($model::STATUS_MAIN_PAGE == $model->status ? ' btn-success active' : ' btn-default'), 'data-pjax' => 0, 'data-method' => 'post']) . Html::a('<i class="glyphicon glyphicon-ok-circle"></i>', \yii\helpers\Url::to(['status', 'id' => $model->id, 'status' => $model::STATUS_PUBLISHED]), ['class' => 'btn btn-xs' . ($model::STATUS_PUBLISHED == $model->status ? ' btn-primary active' : ' btn-default'), 'data-pjax' => 0, 'data-method' => 'post']) . Html::a('<i class="glyphicon glyphicon-remove-circle"></i>', \yii\helpers\Url::to(['status', 'id' => $model->id, 'status' => $model::STATUS_UNPUBLISHED]), ['class' => 'btn btn-xs' . ($model::STATUS_UNPUBLISHED == $model->status ? ' btn-default active' : ' btn-default'), 'data-pjax' => 0, 'data-method' => 'post']) . Html::endTag('div'); }, 'filter' => \gromver\platform\basic\modules\menu\models\MenuItem::statusLabels(), 'width' => '100px', 'format' => 'raw'], ['attribute' => 'ordering', 'vAlign' => GridView::ALIGN_MIDDLE, 'value' => function ($model) { /** @var $model \gromver\platform\basic\modules\menu\models\MenuItem */ return Html::input('text', 'order', $model->ordering, ['class' => 'form-control']); }, 'format' => 'raw', 'width' => '50px'], ['class' => 'kartik\\grid\\ActionColumn', 'deleteOptions' => ['data-method' => 'delete']]], 'responsive' => true, 'hover' => true, 'condensed' => true, 'floatHeader' => true, 'bordered' => false, 'panel' => ['heading' => '<h3 class="panel-title"><i class="glyphicon glyphicon-th-list"></i> ' . Html::encode($this->title) . ' </h3>', 'type' => 'info', 'before' => Html::a('<i class="glyphicon glyphicon-plus"></i> ' . Yii::t('gromver.platform', 'Add'), ['create', 'menuTypeId' => $searchModel->menu_type_id], ['class' => 'btn btn-success', 'data-pjax' => '0']), 'after' => Html::a('<i class="glyphicon glyphicon-sort-by-attributes"></i> ' . Yii::t('gromver.platform', 'Ordering'), ['ordering'], ['class' => 'btn btn-default', 'data-pjax' => '0', 'onclick' => 'processOrdering(this); return false']) . ' ' . Html::a('<i class="glyphicon glyphicon-trash"></i> ' . Yii::t('gromver.platform', 'Delete'), ['bulk-delete'], ['class' => 'btn btn-danger', 'data-pjax' => '0', 'onclick' => 'processAction(this); return false']) . ' ' . Html::a('<i class="glyphicon glyphicon-repeat"></i> ' . Yii::t('gromver.platform', 'Reset List'), ['index'], ['class' => 'btn btn-info']), 'showFooter' => false]]); ?> </div> <script> function processOrdering(el) {
<div class="col-sm-6"> <?php echo $form->field($model, 'language', ['horizontalCssClasses' => ['wrapper' => 'col-xs-8 col-sm-4', 'label' => 'col-xs-4 col-sm-3']])->dropDownList(Yii::$app->getAcceptedLanguagesList(), ['prompt' => Yii::t('gromver.platform', 'Select ...')]); ?> </div> <div class="col-sm-6"> <?php echo $form->field($model, 'note', ['wrapperOptions' => ['class' => 'col-sm-9']])->textInput(['maxlength' => 255]); ?> </div> </div> <div class="row"> <div class="col-sm-6"> <?php echo $form->field($model, 'menu_type_id', ['wrapperOptions' => ['class' => 'col-sm-9']])->dropDownList(['' => Yii::t('gromver.platform', 'Select ...')] + \yii\helpers\ArrayHelper::map(\gromver\platform\basic\modules\menu\models\MenuType::find()->all(), 'id', 'title')); ?> </div> <div class="col-sm-6"> <?php $idLanguage = Html::getInputId($model, 'language'); $idMenu_type_id = Html::getInputId($model, 'menu_type_id'); $idParent_id = Html::getInputId($model, 'parent_id'); echo $form->field($model, 'parent_id', ['wrapperOptions' => ['class' => 'col-sm-9'], 'inputTemplate' => '<div class="input-group select2-bootstrap-append">{input}' . \gromver\widgets\ModalIFrame::widget(['options' => ['class' => 'input-group-addon', 'title' => \Yii::t('gromver.platform', 'Select Category')], 'label' => '<i class="glyphicon glyphicon-folder-open"></i>', 'url' => ['select', 'modal' => true, 'MenuItemSearch[excludeItem]' => $model->isNewRecord ? null : $model->id], 'handler' => <<<JS function(data) { \$("#{$idParent_id}").html('<option value="' + data.id + '">' + data.title + '</option>').val(data.id).trigger('change'); } JS , 'actionHandler' => 'function(url) {return (new URI(url)).addSearch("MenuItemSearch[language]", $("#' . $idLanguage . '").val()).addSearch("MenuItemSearch[menu_type_id]", $("#' . $idMenu_type_id . '").val())}']) . '</div>'])->widget(\kartik\select2\Select2::className(), ['initValueText' => $model->parent ? $model->parent->isRoot() ? Yii::t('gromver.platform', 'Top Level') : $model->parent->title : null, 'theme' => \kartik\select2\Select2::THEME_BOOTSTRAP, 'pluginOptions' => ['allowClear' => true, 'placeholder' => Yii::t('gromver.platform', 'Top Level'), 'ajax' => ['url' => \yii\helpers\Url::to(['item-list', 'exclude' => $model->isNewRecord ? null : $model->id]), 'data' => new \yii\web\JsExpression('function(params) { return {q:params.term, language:$("#' . $idLanguage . '").val(), menu_type_id:$("#' . $idMenu_type_id . '").val()}; }')]]]); ?>
/** * @return \yii\db\ActiveQuery */ public function getMenuType() { return $this->hasOne(MenuType::className(), ['id' => 'menu_type_id']); }
/** * Finds the Menu model based on its primary key value. * If the model is not found, a 404 HTTP exception will be thrown. * @param integer $id * @return MenuType the loaded model * @throws NotFoundHttpException if the model cannot be found */ protected function findModel($id) { if (($model = MenuType::findOne($id)) !== null) { return $model; } else { throw new NotFoundHttpException(Yii::t('gromver.platform', 'The requested page does not exist.')); } }