/** * Возвращает элементы меню * * @return array */ public function getItems() { if (!($items = cache('menu.' . $this->id . '.items'))) { $handler = new Menu_Db_Item(); $handler->menu_id = $this->object()->id; $items = array(); if ($result = $handler->findAll()) { foreach ($result as $item) { $items[] = $item->object(); } } cache('menu.' . $this->id . '.items', $items); } return $items; }
/** * Управление элементами отдельного меню * * @param mixed $id */ public function items_action($menu_id, $id = NULL) { $this->theme->hookAdminMenu(); $this->hookAdminMenu(); if ($menu = menu($menu_id)) { append('content', '<div class="page-header"><h2>' . $menu->name . '</h2></div>'); } else { return event('empty'); } $pills = new Menu_Pills(array('name' => 'admin.menu.items', 'render' => FALSE, 'elements' => array(array('label' => icon('list') . ' ' . t('Список пунктов'), 'link' => l('/admin/theme/menu/' . $menu_id . '/items')), array('label' => icon('plus') . ' ' . t('Добавить'), 'link' => l('/admin/theme/menu/' . $menu_id . '/item/add'), 'class' => 'fl_r'), array('label' => icon('pencil') . ' ' . t('Редактировать'), 'link' => l('/admin/theme/menu/' . $menu_id . '/item/' . $this->router->getSegments(5)), 'access' => check_route('admin/theme/menu/\\d+/item/\\d+'), 'class' => 'fl_r')))); append('content', $pills->render()); if (NULL === $id) { $handler = new Menu_Db_Item(); $handler->menu_id = $menu->id; if ($items = $handler->findAll()) { $tree = new Db_Tree_DDList(array('items' => $items, 'saveUri' => l('/admin/theme/menu/ajax/saveItemsTree/'))); } else { return event('empty'); } } else { $form = new Form('Menu/forms/item'); $item = new Menu_Db_Item(); if ($id != 'add' && is_numeric($id)) { $item->id = $id; if ($item->find()) { $form->object($item); } else { return event('empty'); } } else { $form->remove('delete'); $item->menu_id = $menu_id; } $form->pid->setValues($item->getSelectValues('label')); if ($result = $form->result()) { if ($result->delete && $item->delete()) { flash_success(t('Элемент меню <b>«%s»</b> был удалён!', $item->label), '', 'growl'); redirect(l('admin/theme/menu/' . $menu_id . '/items')); } $item->object()->extend($result); if ($id !== 'add') { $item->branching(); } if ($item->save()) { flash_success($id == 'add' ? t('Элемент меню <b>«%s»</b> успешно создан!', $item->label) : t('Элемент меню <b>«%s»</b> успешно отредактирован!', $item->label), '', 'growl'); redirect(l('admin/theme/menu/' . $menu_id . '/items')); } } $form->show(); } }