/** * updateItem * 메뉴 아이템 수정 처리 메소드 * * @param MenuRetrieveHandler $menuHandler menu handler * @param MenuAlterHandler $menuChanger menu change handler * @param MenuConfigHandler $configHandler menu config handler * @param string $menuId menu id * @param string $itemId item id * * @return RedirectResponse * @throws Exception */ public function updateItem(MenuRetrieveHandler $menuHandler, MenuAlterHandler $menuChanger, MenuConfigHandler $configHandler, $menuId, $itemId) { XeDB::beginTransaction(); try { $inputs = Request::except(['_token', 'theme_desktop', 'theme_mobile']); $menu = $menuHandler->getMenu($menuId); $item = $menu->getItem($itemId); $parentThemeMode = Request::get('parentTheme', false); if ($parentThemeMode === false) { $desktopTheme = Request::get('theme_desktop'); $mobileTheme = Request::get('theme_mobile'); } else { $desktopTheme = null; $mobileTheme = null; } $menuChanger->putItem($item, $inputs); $configHandler->updateMenuItemTheme($item, $desktopTheme, $mobileTheme); } 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'); }
/** * testUpdateMenuItemThemeWithEmpty * * @return void */ public function testUpdateMenuItemThemeWithEmpty() { $configManager = $this->configManager; $themeHandler = $this->themeHandler; $dummyConfigEntity = m::mock('Xpressengine\\Config\\ConfigEntity'); $dummyConfigEntity->shouldReceive('set')->andReturn(); $configManager->shouldReceive('get')->andReturn($dummyConfigEntity); $configManager->shouldReceive('modify')->andReturn(); $dummyItem = new MenuItem(['id' => 'testMenu']); $dummyItem->setBreadCrumbs(['basic', 'notice']); $menuConfigHandler = new MenuConfigHandler($configManager, $themeHandler); $menuConfigHandler->updateMenuItemTheme($dummyItem, 'desktopTheme', 'mobileTheme'); }