/** * moveItem * * @param MenuRetrieveHandler $menuRetrieveHandler menu handler * @param MenuAlterHandler $menuChanger menu alter handler * @param MenuConfigHandler $configHandler menu config handler * @param MenuPermissionHandler $permissionHandler menu permission handler * * @return RendererInterface * @throws Exception */ public function moveItem(MenuRetrieveHandler $menuRetrieveHandler, MenuAlterHandler $menuChanger, MenuConfigHandler $configHandler, MenuPermissionHandler $permissionHandler) { $ordering = Request::get('ordering'); $itemId = Request::get('itemId'); $parentId = Request::get('parent'); XeDB::beginTransaction(); try { $item = $menuRetrieveHandler->getItem($itemId); $movedItem = $menuChanger->moveItem($item, $parentId); $menuChanger->setOrder($item, $ordering); $configHandler->moveItemConfig($item, $movedItem); $permissionHandler->moveItemPermission($item, $movedItem); } catch (\Exception $e) { XeDB::rollback(); throw $e; } XeDB::commit(); return Presenter::makeApi(\Request::all()); }
/** * testMoveItemConfig * * @return void */ public function testMoveItemConfig() { // MenuItem $item, MenuItem $movedItem $configManager = $this->configManager; $themeHandler = $this->themeHandler; $dummyConfigEntity = m::mock('Xpressengine\\Config\\ConfigEntity'); $configManager->shouldReceive('get')->andReturn($dummyConfigEntity); $configManager->shouldReceive('move')->andReturn($dummyConfigEntity); $dummyItem = new MenuItem(['id' => 'testMenu']); $dummyItem->setBreadCrumbs(['basic', 'board']); $dummyMovedItem = new MenuItem(['id' => 'movedTestMenu']); $dummyMovedItem->setBreadCrumbs(['basic', 'notice']); $menuConfigHandler = new MenuConfigHandler($configManager, $themeHandler); $menuConfigHandler->moveItemConfig($dummyItem, $dummyMovedItem); }