Beispiel #1
0
 public function beforeDelete()
 {
     $items = MenuItem::findAll(['root_id' => $this->id, 'menu_id' => $this->menu_id]);
     foreach ($items as $item) {
         $item->delete();
     }
     return parent::beforeDelete();
 }
Beispiel #2
0
 public function getItemsFlat($root = -1, $level = 0)
 {
     $result = [];
     $items = MenuItem::find()->where(['root_id' => $root, 'menu_id' => $this->id])->orderBy('order')->all();
     foreach ($items as $item) {
         $result[$item->id] = str_repeat('-', $level) . ' ' . $item->title;
         $result += $this->getItemsFlat($item->id, $level + 1);
     }
     return $result;
 }
Beispiel #3
0
 private function generateTree($root = -1)
 {
     $result = [];
     $items = MenuItem::find()->where(['root_id' => $root, 'menu_id' => $this->menu->id, 'source_id' => -1])->orderBy('order')->all();
     foreach ($items as $item) {
         $item = $item->getTranslation(Language::getCurrentLangID(), false);
         $id = $item->id;
         if ($item->source_id != -1) {
             $id = $item->source_id;
         }
         $result[] = ['label' => $item->title, 'url' => $item->link == '' ? '#' : $item->link, 'items' => $this->generateTree($id)];
     }
     return $result;
 }
 /**
  * @inheritdoc
  */
 public function down()
 {
     $this->dropColumn(MenuItem::tableName(), 'source_id');
     $this->dropColumn(MenuItem::tableName(), 'lang_id');
 }
 public function down()
 {
     $this->dropTable(MenuItem::tableName());
 }
Beispiel #6
0
 /**
  * Generates tree for menu with links
  * @param integer $menu_id
  * @return array
  */
 private function generateItemsTree($menu_id, $root = -1)
 {
     $result = [];
     $items = MenuItem::find()->where(['root_id' => $root, 'menu_id' => $menu_id, 'source_id' => -1])->orderBy('order')->all();
     foreach ($items as $item) {
         $result[] = ['label' => $item->title . ' ' . Html::a('<i class="fa fa-pencil"></i>', ['update-item', 'id' => $item->id]) . ' ' . Html::a('<i class="fa fa-trash"></i>', ['delete-item', 'id' => $item->id]), 'url' => ['update-item', 'id' => $item->id], 'items' => $this->generateItemsTree($menu_id, $item->id)];
     }
     return $result;
 }