/** * storeItem * * @param MenuRetrieveHandler $menuHandler to get menu has item * @param MenuAlterHandler $menuChanger store item handler * @param MenuConfigHandler $configHandler store item config handler * @param MenuPermissionHandler $permissionHandler store item permission handler * @param string $menuId where to store * * @return $this|RedirectResponse * @throws Exception */ public function storeItem(MenuRetrieveHandler $menuHandler, MenuAlterHandler $menuChanger, MenuConfigHandler $configHandler, MenuPermissionHandler $permissionHandler, $menuId) { XeDB::beginTransaction(); $menu = $menuHandler->getMenu($menuId); try { $inputs = Request::except(['_token', 'theme_desktop', 'theme_mobile']); $parentThemeMode = Request::get('parentTheme', false); if ($parentThemeMode === false) { $desktopTheme = Request::get('theme_desktop'); $mobileTheme = Request::get('theme_mobile'); } else { $desktopTheme = null; $mobileTheme = null; } $item = $menuChanger->addItem($menu, $inputs); $configHandler->setMenuItemTheme($item, $desktopTheme, $mobileTheme); $permissionHandler->registerItemPermission($item, new Grant()); } catch (Exception $e) { XeDB::rollback(); Request::flash(); return Redirect::back()->with('alert', ['type' => 'danger', 'message' => $e->getMessage()]); } XeDB::commit(); return Redirect::route('settings.menu.index'); }
/** * testUpdateMenuItemTheme * * @return void */ public function testUpdateMenuItemTheme() { //MenuItem $item, $theme $configManager = $this->configManager; $themeHandler = $this->themeHandler; $configManager->shouldReceive('add')->andReturn(); $dummyItem = new MenuItem(['id' => 'testMenu']); $dummyItem->setBreadCrumbs(['basic', 'notice']); $menuConfigHandler = new MenuConfigHandler($configManager, $themeHandler); $menuConfigHandler->setMenuItemTheme($dummyItem, 'blueTheme', 'mobileTheme'); }