/** * Initialize form. * * @return void */ public function initialize() { $this->setDescription('This menu item will be available under menu or parent menu item.'); $content = $this->addContentFieldSet()->addText('title')->addSelect('target', 'Target', 'Link type', [null => 'Default link', MenuItem::ITEM_TARGET_BLANK => 'Opens the linked document in a new window or tab', MenuItem::ITEM_TARGET_PARENT => 'Opens the linked document in the parent frame', MenuItem::ITEM_TARGET_TOP => 'Opens the linked document in the full body of the window'])->addRadio('url_type', 'Select url type', null, [0 => 'Url', 1 => 'System page'])->addText('url', 'Url', 'Do not type url with starting slash... Example: "somepage/url/to?param=1"')->addText('page', 'Page', 'Start typing to see pages variants.', null, [], ['data-link' => $this->getDI()->getUrl()->get('admin/pages/suggest'), 'data-target' => '#page_id', 'data-widget' => 'autocomplete', 'autocomplete' => 'off'])->addTextArea('onclick', 'OnClick', 'Type JS action that will be performed when this menu item is selected.')->addCkEditor('tooltip')->addSelect('tooltip_position', 'Tooltip position', null, [MenuItem::ITEM_TOOLTIP_POSITION_TOP => 'Top', MenuItem::ITEM_TOOLTIP_POSITION_BOTTOM => 'Bottom', MenuItem::ITEM_TOOLTIP_POSITION_LEFT => 'Left', MenuItem::ITEM_TOOLTIP_POSITION_RIGHT => 'Right'])->addRemoteFile('icon', 'Select icon')->addSelect('icon_position', 'Icon position', null, [MenuItem::ITEM_ICON_POSITION_LEFT => 'Left', MenuItem::ITEM_ICON_POSITION_RIGHT => 'Right'])->addMultiSelect('languages', 'Languages', 'Choose the language in which the menu item will be displayed. If no one selected - will be displayed at all.', Language::find(), null, ['using' => ['language', 'name']])->addMultiSelect('roles', 'Roles', 'If no value is selected, will be allowed to all (also as all selected).', Role::find(), null, ['using' => ['id', 'name']])->addCheckbox('is_enabled', 'Is enabled', null, 1, true, false)->addHidden('page_id')->addHidden('menu_id')->addHidden('parent_id'); $this->_setValidation($content); }
/** * Get language options. * * @return array */ protected function _getLanguageOptions() { $languages = ['auto' => 'Auto detect']; foreach (Language::find() as $language) { $languages[$language->language] = $language->name; } return $languages; }
/** * Return package as string, package metadata. * * @param array $params Some additional params. * * @return string */ public function toJson(array $params = []) { $data = $this->getDefaultMetadata(); // Get widgets data if this package is module. if ($this->type == Manager::PACKAGE_TYPE_MODULE) { /** * Widgets data. */ $widgets = Widget::findByModule($this->name); foreach ($widgets as $widget) { $data['widgets'][] = ['name' => $widget->name, 'module' => $this->name, 'description' => $widget->description, 'is_paginated' => $widget->is_paginated, 'is_acl_controlled' => $widget->is_acl_controlled, 'admin_form' => $widget->admin_form, 'enabled' => (bool) $widget->enabled]; } /** * Translations data. */ if (!empty($params['withTranslations'])) { foreach (Language::find() as $language) { $translations = $language->toTranslationsArray([$this->name]); if (!empty($translations['content'])) { $data['i18n'][] = $translations; } } } } else { unset($data['widgets']); } // Check widget module. $packageData = $this->getData(); if (!empty($packageData['module'])) { $data['module'] = $packageData['module']; } // Get events. if ($this->type == Manager::PACKAGE_TYPE_MODULE || $this->type == Manager::PACKAGE_TYPE_PLUGIN) { $packageData = $this->getData(); if (!empty($packageData) && !empty($packageData['events'])) { $data['events'] = $packageData['events']; } } // Check dependencies. if (!empty($this->_dependenciesData)) { $data['dependencies'] = $this->_dependenciesData; } else { unset($data['dependencies']); } return json_encode($data, JSON_PRETTY_PRINT); }
/** * Create action. * * @return void * * @Route("/create", methods={"GET", "POST"}, name="admin-category-create") */ public function createAction() { $formData = []; $message = ''; if ($this->request->hasPost('fsubmit')) { $formData = array_merge($formData, $this->request->getPost()); if ($formData['root'] > 1) { $root = Category::findFirst($formData['root']); } else { $root = self::checkRoot(); } // Create category $myCategory = new Category(); $myCategory->assign(['iconpath' => $formData['iconpath'], 'status' => $formData['status'], 'root' => $formData['root']]); // Create category languages $langPacks = []; // Create default language record when chosen language != default language. if ($formData['lcode'] != $this->config->global->defaultLanguage) { $langPacks[0] = new CategoryLang(); $langPacks[0]->name = 'n/a'; $langPacks[0]->lcode = $this->config->global->defaultLanguage; } // Create selected language $langPacks[1] = new CategoryLang(); $langPacks[1]->assign(['lcode' => $formData['lcode'], 'name' => $formData['name'], 'description' => $formData['description'], 'seokeyword' => $formData['seokeyword'], 'seodescription' => $formData['seodescription']]); // Add related language to category $myCategory->lang = $langPacks; if ($myCategory->appendTo($root)) { $formData = []; $this->flash->success(str_replace('###name###', $myCategory->getOneLangBySession()->name, $this->lang->_('message-create-category-success'))); } else { foreach ($myCategory->getMessages() as $msg) { $message .= $this->lang->_($msg->getMessage()) . '<br />'; } $this->flash->error($message); } } $this->bc->add($this->lang->_('title-index'), 'admin/category'); $this->bc->add($this->lang->_('title-create'), 'admin/category/create'); $this->view->setVars(['bc' => $this->bc->generate(), 'formData' => $formData, 'statusList' => Category::getStatusList(), 'categories' => Category::find(['order' => 'lft']), 'languages' => Language::find()]); }
/** * Compile language into native php array. * * @return ResponseInterface * * @Get("/compile", name="admin-languages-compile") */ public function compileAction() { // Prepare languages. // Dump all data from database to files with native php array. try { $languages = Language::find(); $directory = $this->config->application->languages->cacheDir; foreach ($languages as $language) { $file = $directory . '../languages/' . $language->language . '.php'; file_put_contents($file, $language->toPhp()); } $this->flashSession->success($this->i18n->_('Languages compilation finished!')); } catch (Exception $e) { $this->flashSession->error($this->i18n->_('Compilation failed, error: <br />' . $e->getMessage())); } return $this->response->redirect(['for' => 'admin-languages']); }
/** * Admin action for editing widget options through admin panel. * * @return CoreForm */ public function adminAction() { $form = new CoreForm(); $form->addText('title'); // Adding additional html for language selector support. $languageSelectorHtml = ' <style type="text/css"> form .form_elements > div{ min-height: auto !important; padding-top: 0px !important; } form .form_elements > div:nth-last-child(2){ padding-top: 10px !important; } </style> <script type="text/javascript"> var defaultLanguage = "%s"; $(document).ready(function(){ $("#html_block_language").change(function(){ $("#cke_html_"+$(this).val()).closest(".form_element_container").show(); $(".cke").not("#cke_html_"+$(this).val()).closest(".form_element_container").hide(); }); // Hide inactive. $("textarea").not("#html_"+defaultLanguage).closest(".form_element_container").hide(); setTimeout( function(){ $(".cke").not("#cke_html_"+defaultLanguage).closest(".form_element_container").hide(); }, 200); }); </script> <div class="form_element_container" style="float: left;"> <div class="form_label"> <label for="title">%s</label> </div> <div class="form_element"> <select id="html_block_language" style="width: 120px;"> %s </select> </div> </div> '; // Creating languages boxes. $languages = Language::find(); $languageHtmlItems = ''; $defaultLanguage = Settings::getSetting('system_default_language', 'en'); if ($defaultLanguage == 'auto') { $defaultLanguage = 'en'; } $elements = []; foreach ($languages as $language) { $selectedLanguage = ''; if ($language->language == $defaultLanguage) { $selectedLanguage = 'selected="selected"'; } $elementName = 'html_' . $language->language; $elements[$elementName] = 'HTML (' . strtoupper($language->language) . ')'; $languageHtmlItems .= '<option ' . $selectedLanguage . ' value=' . $language->language . '>' . $language->name . '</option>'; } $languageSelectorHtml = sprintf($languageSelectorHtml, $defaultLanguage, $this->di->get('i18n')->_('HTML block, for:'), $languageHtmlItems); // Adding created html to form. $form->addHtml('html_language', $languageSelectorHtml); foreach ($elements as $elementName => $elementTitle) { $form->addCkEditor($elementName, $elementTitle); } $form->addHtml('separator'); return $form; }