Beispiel #1
0
 public function actionCreate()
 {
     $model = new MenuItem();
     if (isset($_POST['MenuItem'])) {
         $model->setAttributes($_POST['MenuItem']);
         if (isset($_POST['MenuItem']['menu'])) {
             $model->menu = $_POST['MenuItem']['menu'];
         }
         if (isset($_POST['MenuItem']['parent'])) {
             $model->parent = $_POST['MenuItem']['parent'];
         }
         $model->link = $_POST['MenuItem'][$_POST['MenuItem']['type']];
         if (isset($_POST['MenuItem']['role'])) {
             $model->role = implode(',', $_POST['MenuItem']['role']);
         } else {
             $model->role = '';
         }
         //pushing newly added item to last
         $maxRight = $model->getMaxRight();
         $model->lft = $maxRight + 1;
         $model->rgt = $maxRight + 2;
         try {
             if ($model->save()) {
                 $this->redirect(array('/' . $this->module->id . '/item/index', 'id' => $model->menu_id, 'activeId' => $model->id));
             }
         } catch (Exception $e) {
             $model->addError('', $e->getMessage());
         }
     } elseif (isset($_GET['MenuItem'])) {
         $model->attributes = $_GET['MenuItem'];
     }
     $this->render('create', array('model' => $model, 'menuId' => key($_GET)));
 }
 /**
  * Обновление дерева пунктов меню в завимости от родителя.
  *
  * @return void
  */
 public function actionDynamicParent()
 {
     if (Yii::app()->getRequest()->getIsAjaxRequest() && ($data = Yii::app()->getRequest()->getParam('MenuItem')) !== null) {
         $model = new MenuItem('search');
         $model->setAttributes($data);
         if ($model->menu_id) {
             if (isset($_GET['id'])) {
                 $model->id = $_GET['id'];
             }
             $data = $model->parentTree;
             foreach ($data as $value => $name) {
                 echo CHtml::tag('option', array('value' => $value), $name, true);
             }
         }
     }
     Yii::app()->end();
 }
Beispiel #3
0
 protected function createMenu($menuArr, $items)
 {
     $menu = new Menu();
     $menu->multilang();
     $attr = array('name' => $menuArr['name']);
     foreach (Yii::app()->params['languages'] as $lang => $langName) {
         $attr['name_' . $lang] = $menuArr['name_' . $lang];
     }
     $menu->setAttributes($attr);
     $menu->id = $menuArr['id'];
     $menu->save();
     $orderNum = 1;
     foreach ($items as $item) {
         $menuItem = new MenuItem();
         $menuItem->multilang();
         $attr = array('menuId' => $menuArr['id'], 'name' => $item['name'], 'link' => $item['link'], 'orderNum' => $orderNum++, 'active' => 1, 'visible' => 1);
         foreach (Yii::app()->params['languages'] as $lang => $langName) {
             $attr['name_' . $lang] = $item['name_' . $lang];
         }
         $menuItem->setAttributes($attr);
         $menuItem->save();
     }
 }
Beispiel #4
0
 /**
  * Добавляет новый пункт меню в меню
  * @param $title string - Заголовок
  * @param $href string - Ссылка
  * @param $parentId int - Родитель
  * @param bool $regularLink - Обычная ссылка
  * @return bool
  */
 public function addItem($title, $href, $parentId, $regularLink = false)
 {
     $menuItem = new MenuItem();
     $menuItem->setAttributes(['parent_id' => (int) $parentId, 'menu_id' => $this->id, 'title' => $title, 'href' => $href, 'regular_link' => $regularLink]);
     if (true === $menuItem->save()) {
         Yii::app()->getCache()->clear(['menu', $this->code]);
         return true;
     }
     return false;
 }
 /**
  * @throws CHttpException
  */
 public function actionDynamicParent()
 {
     if (!Yii::app()->getRequest()->getIsAjaxRequest()) {
         throw new CHttpException(404);
     }
     $model = new MenuItem('search');
     $model->setAttributes(Yii::app()->getRequest()->getParam('MenuItem'));
     if ($model->menu_id) {
         $model->id = Yii::app()->getRequest()->getQuery('id');
         $data = $model->getParentTree();
         foreach ($data as $value => $name) {
             echo CHtml::tag('option', ['value' => $value], $name, true);
         }
     }
     Yii::app()->end();
 }