/** * storeItem * * @param MenuHandler $handler menu handler * @param string $menuId where to store * * @return $this|RedirectResponse * @throws Exception */ public function storeItem(MenuHandler $handler, $menuId) { XeDB::beginTransaction(); $menu = $handler->get($menuId); try { $inputs = Input::except(['_token', 'theme_desktop', 'theme_mobile']); $parentThemeMode = Input::get('parentTheme', false); if ($parentThemeMode === false) { $desktopTheme = Input::get('theme_desktop'); $mobileTheme = Input::get('theme_mobile'); } else { $desktopTheme = null; $mobileTheme = null; } list($itemInput, $menuTypeInput) = $this->inputClassify($inputs); $itemInput['parent'] = $itemInput['parent'] === $menu->getKey() ? null : $itemInput['parent']; $item = $handler->createItem($menu, ['title' => $itemInput['itemTitle'], 'url' => $itemInput['itemUrl'], 'description' => $itemInput['itemDescription'], 'target' => $itemInput['itemTarget'], 'type' => $itemInput['selectedType'], 'ordering' => $itemInput['itemOrdering'], 'activated' => isset($itemInput['itemActivated']) ? $itemInput['itemActivated'] : 0, 'parentId' => $itemInput['parent']], $menuTypeInput); // link image 등록 $this->registerItemImage($item, 'basicImage'); $this->registerItemImage($item, 'hoverImage'); $this->registerItemImage($item, 'selectedImage'); $this->registerItemImage($item, 'mBasicImage'); $this->registerItemImage($item, 'mHoverImage'); $this->registerItemImage($item, 'mSelectedImage'); $handler->putItem($item, $menuTypeInput); $handler->setMenuItemTheme($item, $desktopTheme, $mobileTheme); $this->permissionRegisterGrant($handler->permKeyString($item), null, $menu->siteKey); } catch (Exception $e) { XeDB::rollback(); Input::flash(); return Redirect::back()->with('alert', ['type' => 'danger', 'message' => $e->getMessage()]); } XeDB::commit(); return Redirect::route('settings.menu.index'); }