Exemplo n.º 1
0
 /**
  * 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);
 }
Exemplo n.º 2
0
 /**
  * Get language options.
  *
  * @return array
  */
 protected function _getLanguageOptions()
 {
     $languages = ['auto' => 'Auto detect'];
     foreach (Language::find() as $language) {
         $languages[$language->language] = $language->name;
     }
     return $languages;
 }
Exemplo n.º 3
0
 /**
  * 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);
 }
Exemplo n.º 4
0
 /**
  * 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()]);
 }
Exemplo n.º 5
0
 /**
  * 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']);
 }
Exemplo n.º 6
0
    /**
     * 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;
    }