/** * @param int $id * @param string $action * * @return \Symfony\Component\HttpFoundation\RedirectResponse * @throws \ACP3\Core\Controller\Exception\ResultNotExistsException */ public function execute($id, $action) { if ($this->menuItemRepository->menuItemExists($id) === true) { $this->sortOperation->execute($id, $action); $this->menusCache->saveMenusCache(); Core\Cache\Purge::doPurge($this->appPath->getCacheDir() . 'http'); return $this->redirect()->temporary('acp/menus'); } throw new Core\Controller\Exception\ResultNotExistsException(); }
/** * @param string $menu * @param \ACP3\Modules\ACP3\Menus\Helpers\MenuConfiguration $menuConfig * * @return string */ protected function generateMenu($menu, Menus\Helpers\MenuConfiguration $menuConfig) { $items = $this->menusCache->getVisibleMenuItems($menu); $cItems = count($items); if ($cItems > 0) { $selected = $this->selectMenuItem($menu); $cacheKey = $this->buildMenuCacheKey($menu, $menuConfig); $this->menus[$cacheKey] = ''; for ($i = 0; $i < $cItems; ++$i) { if (isset($items[$i + 1]) && $items[$i + 1]['level'] > $items[$i]['level']) { $this->menus[$cacheKey] .= $this->processMenuItemWithChildren($menu, $menuConfig, $items[$i], $this->getMenuItemSelector($items[$i], $selected)); } else { $this->menus[$cacheKey] .= $this->processMenuItemWithoutChildren($menuConfig, $items[$i], $this->getMenuItemSelector($items[$i], $selected)); $this->menus[$cacheKey] .= $this->closeOpenedMenus($menuConfig, $items, $i); } } if (!empty($this->menus[$cacheKey])) { $this->menus[$cacheKey] = sprintf('<%1$s%2$s>%3$s</%1$s>', $menuConfig->getTag(), $this->prepareMenuHtmlAttributes($menu, $menuConfig), $this->menus[$cacheKey]); } else { $this->menus[$cacheKey] = ''; } return $this->menus[$cacheKey]; } return ''; }
/** * @param ModelSaveEvent $event */ public function execute(ModelSaveEvent $event) { if (!$event->isDeleteStatement()) { return; } foreach ($event->getEntryId() as $item) { if (!empty($item) && $this->menuRepository->menuExists($item) === true) { // Delete the assigned menu items and update the nested set tree $menuItems = $this->menuItemRepository->getAllItemsByBlockId($item); foreach ($menuItems as $menuItem) { $this->menuItemsModel->delete($menuItem['id']); } $menuName = $this->menuRepository->getMenuNameById($item); $this->cache->getCacheDriver()->delete(Cache::CACHE_ID_VISIBLE . $menuName); } } }
/** * List all available menu items * * @param integer $parentId * @param integer $leftId * @param integer $rightId * * @return array */ public function menuItemsList($parentId = 0, $leftId = 0, $rightId = 0) { // Menüpunkte einbinden if (empty($this->menuItems)) { $this->menuItems = $this->menusCache->getMenusCache(); } $output = []; if (count($this->menuItems) > 0) { foreach ($this->menuItems as $row) { if (!($row['left_id'] >= $leftId && $row['right_id'] <= $rightId)) { $row['selected'] = $this->formsHelper->selectEntry('parent_id', $row['id'], $parentId); $row['spaces'] = str_repeat(' ', $row['level']); // Titel für den aktuellen Block setzen $output[$row['block_name']]['title'] = $row['block_title']; $output[$row['block_name']]['menu_id'] = $row['block_id']; $output[$row['block_name']]['items'][] = $row; } } } return $output; }
public function execute() { $this->cache->saveMenusCache(); }