Ejemplo n.º 1
0
 /**
  * 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');
 }
 /**
  * testPutItem
  *
  * @return void
  */
 public function testPutItem()
 {
     $menuRepo = $this->menuRepository;
     $typeHandler = $this->typeHandler;
     $routeHandler = $this->routeHandler;
     $cacheHandler = $this->cacheHandler;
     $instanceRouteMock = m::mock('Xpressengine\\Routing\\InstanceRoute');
     $instanceRouteMock->shouldReceive('setUrl')->andReturn();
     $menuRepo->shouldReceive('updateItem')->andReturn(1);
     $routeHandler->shouldReceive('getByInstanceId')->andReturn($instanceRouteMock);
     $routeHandler->shouldReceive('put')->andReturn();
     $menuHandler = new MenuAlterHandler($menuRepo, $typeHandler, $routeHandler, $cacheHandler);
     $dummyMenuType = m::mock('alias:Theme', 'Xpressengine\\Menu\\MenuType\\MenuTypeInterface', ['isRouteAble' => true]);
     $dummyMenuType->shouldReceive('updateMenu')->andReturn();
     $typeHandler->shouldReceive('getModuleObject')->andReturn($dummyMenuType);
     $typeHandler->shouldReceive('updateMenu')->andReturn(1);
     $menuItem = new MenuItem(['id' => 'qna', 'parentId' => 'main', 'ordering' => 1, 'activated' => 1, 'type' => 'pluginA@board', 'title' => 'Q & A', 'description' => '질답 게시판입니다.', 'url' => 'qna']);
     $inputs = ['itemTitle' => 'newTitle', 'itemUrl' => 'newUrl', 'itemDescription' => 'newDescription', 'itemTarget' => 'newTarget', 'itemOrdering' => 3, 'itemActivated' => false];
     $updatedItem = $menuHandler->putItem($menuItem, $inputs);
     $this->assertEquals('qna', $updatedItem->id);
     $this->assertEquals('newTitle', $updatedItem->title);
     $this->assertEquals('newUrl', $updatedItem->url);
     $this->assertEquals('newDescription', $updatedItem->description);
     $this->assertEquals('newTarget', $updatedItem->target);
     $this->assertEquals(3, $updatedItem->ordering);
     $this->assertEquals(false, $updatedItem->activated);
 }