public function process($params) { $service = BOL_NavigationService::getInstance(); /* @var $service BOL_NavigationService */ $menuItem = new BOL_MenuItem(); $doc_key = UTIL_HtmlTag::generateAutoId('page'); $menuItem->setDocumentKey($doc_key); $menuItem->setPrefix('base'); $menuItem->setKey($doc_key); $menuItem->setType($params['type']); $order = $service->findMaxSortOrderForMenuType($params['type']); $order; $menuItem->setOrder($order); $visibleFor = 0; $arr = !empty($_POST['visible-for']) ? $_POST['visible-for'] : array(); foreach ($arr as $val) { $visibleFor += $val; } //hotfix if ($visibleFor === 0) { $visibleFor = 3; } $menuItem->setVisibleFor($visibleFor); $url = ''; $languageService = BOL_LanguageService::getInstance(); $prefixDto = $languageService->findPrefix($menuItem->getPrefix()); switch ($_POST['type']) { case 'local': $service->saveMenuItem($menuItem); $document = new BOL_Document(); $document->setIsStatic(true); $document->setKey($menuItem->getKey()); $url = str_replace(UTIL_String::removeFirstAndLastSlashes(OW::getRouter()->getBaseUrl()), '', UTIL_String::removeFirstAndLastSlashes($_POST['local-url'])); $document->setUri(UTIL_String::removeFirstAndLastSlashes($url)); $service->saveDocument($document); //- name $currentLanguageId = $languageService->getCurrent()->getId(); $keyDto = $languageService->addKey($prefixDto->getId(), $menuItem->getKey()); $menuName = $_POST['name']; $languageService->addValue($currentLanguageId, $menuItem->getPrefix(), $keyDto->getKey(), $menuName); //- title $keyDto = $languageService->addKey($prefixDto->getId(), 'local_page_title_' . $menuItem->getKey()); $title = empty($_POST['title']) ? '' : $_POST['title']; $languageService->addValue($currentLanguageId, $menuItem->getPrefix(), $keyDto->getKey(), $title); //- meta tags $keyDto = $languageService->addKey($prefixDto->getId(), 'local_page_meta_tags_' . $menuItem->getKey()); $metaTagsStr = empty($_POST['meta-tags']) ? '' : $_POST['meta-tags']; $languageService->addValue($currentLanguageId, $menuItem->getPrefix(), $keyDto->getKey(), $metaTagsStr); //- content $keyDto = $languageService->addKey($prefixDto->getId(), 'local_page_content_' . $menuItem->getKey()); $contentStr = empty($_POST['content']) ? '' : $_POST['content']; $languageService->addValue($currentLanguageId, $menuItem->getPrefix(), $keyDto->getKey(), $contentStr); //~ $languageService->generateCache($currentLanguageId); break; case 'external': $menuItem->setExternalUrl($_POST['external-url']); $menuItem->setNewWindow(!empty($_POST['ext-open-in-new-window']) && $_POST['ext-open-in-new-window'] == 'on' ? true : false); $service->saveMenuItem($menuItem); $keyDto = $languageService->addKey($prefixDto->getId(), $menuItem->getKey()); $languageService->addValue($languageService->getCurrent()->getId(), $menuItem->getPrefix(), $keyDto->getKey(), $_POST['name']); $languageService->generateCache($languageService->getCurrent()->getId()); break; } header('location: ' . OW::getRouter()->urlForRoute('admin_pages_main')); exit; }
/** * * @param string $menu * @param int $order * @return BOL_MenuItem */ public function createEmptyItem($menu, $order) { $menuItem = new BOL_MenuItem(); $documentKey = UTIL_HtmlTag::generateAutoId('mobile_page'); $menuItem->setDocumentKey($documentKey); $menuItem->setPrefix(self::MENU_PREFIX); $menuItem->setKey($documentKey); $menuItem->setType($menu); $menuItem->setOrder($order); $this->navigationService->saveMenuItem($menuItem); $document = new BOL_Document(); $document->isStatic = true; $document->isMobile = true; $document->setKey($menuItem->getKey()); $document->setUri($menuItem->getKey()); $this->navigationService->saveDocument($document); $document->setUri("cp-" . $document->getId()); $this->navigationService->saveDocument($document); $this->editItem($menuItem, array(self::SETTING_LABEL => OW::getLanguage()->text("mobile", "admin_nav_default_menu_name"), self::SETTING_TITLE => OW::getLanguage()->text("mobile", "admin_nav_default_page_title"), self::SETTING_CONTENT => OW::getLanguage()->text("mobile", "admin_nav_default_page_content"), self::SETTING_VISIBLE_FOR => 3, self::SETTING_TYPE => "local", self::SETTING_URL => null)); return $menuItem; }
public function index($params) { $id = (int) $params['id']; $this->assign('id', $id); $menu = BOL_NavigationService::getInstance()->findMenuItemById($id); if ($menu === null) { throw new Redirect404Exception(); } $navigationService = BOL_NavigationService::getInstance(); $document = $navigationService->findDocumentByKey($menu->getDocumentKey()); if ($document === null) { $document = new BOL_Document(); $document->setKey($menu->getDocumentKey()); $document->setIsStatic(true); } $service = BOL_NavigationService::getInstance(); $form = new EditLocalPageForm('edit-form', $menu); if (OW::getRequest()->isPost() && $form->isValid($_POST)) { $data = $form->getValues(); //-- $visibleFor = 0; $arr = !empty($data['visible-for']) ? $data['visible-for'] : array(); foreach ($arr as $val) { $visibleFor += $val; } $service->saveMenuItem($menu->setVisibleFor($visibleFor)); $uri = str_replace(UTIL_String::removeFirstAndLastSlashes(OW::getRouter()->getBaseUrl()), '', UTIL_String::removeFirstAndLastSlashes($data['url'])); $document->setUri(UTIL_String::removeFirstAndLastSlashes($uri)); $navigationService->saveDocument($document); $languageService = BOL_LanguageService::getInstance(); $plugin = OW::getPluginManager()->getPlugin('base'); //- name $langKey = $languageService->findKey($plugin->getKey(), $menu->getKey()); if (!empty($langKey)) { $langValue = $languageService->findValue($languageService->getCurrent()->getId(), $langKey->getId()); if ($langValue === null) { $langValue = new BOL_LanguageValue(); $langValue->setKeyId($langKey->getId()); $langValue->setLanguageId($languageService->getCurrent()->getId()); } $languageService->saveValue($langValue->setValue($data['name'])); } //- title $langKey = $languageService->findKey($plugin->getKey(), 'local_page_title_' . $menu->getKey()); if (!empty($langKey)) { $langValue = $languageService->findValue($languageService->getCurrent()->getId(), $langKey->getId()); if ($langValue === null) { $langValue = new BOL_LanguageValue(); $langValue->setKeyId($langKey->getId()); $langValue->setLanguageId($languageService->getCurrent()->getId()); } $languageService->saveValue($langValue->setValue($data['title'])); } //- meta tags $langKey = $languageService->findKey($plugin->getKey(), 'local_page_meta_tags_' . $menu->getKey()); if (empty($langKey)) { $langKey = new BOL_LanguageKey(); $langKey->setKey('local_page_meta_tags_' . $menu->getKey()); $langKey->setPrefixId($languageService->findPrefixId($plugin->getKey())); $languageService->saveKey($langKey); } $langValue = $languageService->findValue($languageService->getCurrent()->getId(), $langKey->getId()); if ($langValue === null) { $langValue = new BOL_LanguageValue(); $langValue->setKeyId($langKey->getId()); $langValue->setLanguageId($languageService->getCurrent()->getId()); } $languageService->saveValue($langValue->setValue($data['meta-tags'])); //- content $langKey = $languageService->findKey($plugin->getKey(), 'local_page_content_' . $menu->getKey()); if (!empty($langKey)) { $langValue = $languageService->findValue($languageService->getCurrent()->getId(), $langKey->getId()); if ($langValue === null) { $langValue = new BOL_LanguageValue(); $langValue->setKeyId($langKey->getId()); $langValue->setLanguageId($languageService->getCurrent()->getId()); } $languageService->saveValue($langValue->setValue($data['content'])); } //~ $languageService->generateCache($languageService->getCurrent()->getId()); $adminPlugin = OW::getPluginManager()->getPlugin('admin'); OW::getFeedback()->info(OW::getLanguage()->text($adminPlugin->getKey(), 'updated_msg')); $this->redirect(); //-- } $this->addForm($form, $menu); }