/**
  * Prepares the data provider that should return the requested collection of the models.
  * @param string $id the primary key of the model.
  * @return ActiveDataProvider
  */
 protected function prepareDataProvider($id)
 {
     if ($this->prepareDataProvider !== null) {
         return call_user_func($this->prepareDataProvider, $this);
     }
     return new ActiveDataProvider(['query' => $this->level && $this->level !== 1 ? MenuItem::find()->where(['menu_id' => $id])->andWhere(['<', 'depth', $this->level]) : MenuItem::find()->where(['menu_id' => $id])->roots()]);
 }
Exemple #2
0
 public static function setMenuItemOptions(MenuItem $item, MenuItem $parent = null)
 {
     $itemOptions = ['tag' => 'li'];
     $linkOptions = [];
     if ($parent && $parent->items_display == MenuItem::DISPLAY_GRID) {
         $itemOptions['tag'] = 'div';
         $itemOptions['class'] = $parent->items_css_classes;
     }
     $itemOptions = array_merge_recursive($itemOptions, $item->getHtmlAttributes());
     $children = $item->children;
     if ($children) {
         switch ($item->items_display) {
             case MenuItem::DISPLAY_DROPDOWN:
                 Html::addCssClass($itemOptions, 'dropdown');
                 //$linkOptions['data-toggle'] = 'dropdown';
                 $linkOptions['aria-haspopup'] = "true";
                 $linkOptions['aria-expanded'] = "false";
                 Html::addCssClass($linkOptions, 'dropdown-toggle');
                 $item->label .= ' <span class="caret"></span>';
                 break;
             case MenuItem::DISPLAY_FULL_WIDTH_DROPDOWN:
                 Html::addCssClass($itemOptions, 'dropdown dropdown-full-width');
                 //$linkOptions['data-toggle'] = 'dropdown';
                 $linkOptions['aria-haspopup'] = "true";
                 $linkOptions['aria-expanded'] = "false";
                 Html::addCssClass($linkOptions, 'dropdown-toggle');
                 $item->label .= ' <span class="caret"></span>';
                 break;
             case MenuItem::DISPLAY_GRID:
                 Html::addCssClass($itemOptions, 'dropdown dropdown-full-width');
                 //$linkOptions['data-toggle'] = 'dropdown';
                 $linkOptions['aria-haspopup'] = "true";
                 $linkOptions['aria-expanded'] = "false";
                 Html::addCssClass($linkOptions, 'dropdown-toggle');
                 $item->label .= ' <span class="caret"></span>';
                 break;
         }
     }
     $item->setHtmlAttributes($itemOptions);
     $item->setLinkHtmlAttributes($linkOptions);
 }
 /**
  * Prepares the data provider that should return the requested collection of the models.
  * @param string $id the primary key of the model.
  * @return ActiveDataProvider
  */
 protected function prepareDataProvider($id)
 {
     if ($this->prepareDataProvider !== null) {
         return call_user_func($this->prepareDataProvider, $this);
     }
     $query = MenuItem::find()->where(['menu_id' => $id]);
     $data = \Yii::$app->getRequest()->getBodyParams();
     $string = isset($data['string']) ? $data['string'] : '';
     if ($this->searchableAttributes) {
         $condition = ['or'];
         foreach ($this->searchableAttributes as $attribute) {
             $condition[] = ['like', $attribute, $string];
         }
         $query->andWhere($condition);
         /** @var $models MenuItem[] */
         $models = $query->all();
         foreach ($models as $model) {
             $query->union($model->parents());
         }
     }
     return new ActiveDataProvider(['query' => $query]);
 }
 /**
  * @inheritdoc
  */
 protected function getModelClass()
 {
     return MenuItem::className();
 }
 /**
  * @inheritdoc
  */
 public function actions()
 {
     return array_merge(parent::actions(), ['roots' => ['class' => 'im\\cms\\rest\\controllers\\MenuItemsAction', 'modelClass' => MenuItem::className()], 'search' => ['class' => 'im\\cms\\rest\\controllers\\MenuItemsSearchAction', 'modelClass' => $this->modelClass]]);
 }
Exemple #6
0
 /**
  * @inheritdoc
  */
 public function run()
 {
     $items = MenuItem::find()->where(['menu_id' => 1, 'status' => MenuItem::STATUS_ACTIVE])->all();
     $items = TreeHelper::buildNodesTree($items);
     return $this->render('menu/menu', ['widget' => $this, 'items' => $items, 'level' => 1]);
 }
Exemple #7
0
 /**
  * @return \yii\db\ActiveQuery
  */
 public function getItems()
 {
     return $this->hasMany(MenuItem::className(), ['menu_id' => 'id']);
 }