Example #1
0
 /**
  * Edit a role
  */
 public function edit()
 {
     $param = array('id' => 'edit-role-form', 'model' => 'Role', 'reference' => array('id' => $this->roleId), 'fieldsets' => array('form' => array('nofieldset' => true, new HiddenInput(array('field' => 'removable', 'default' => 1, 'readonly' => true)), new TextInput(array('field' => 'name', 'maxlength' => 32, 'label' => Lang::get('roles.form-name-label'), 'required' => true)), new ColorInput(array('field' => 'color', 'label' => Lang::get('roles.form-color-label'), 'default' => '#000'))), '_submits' => array(new SubmitInput(array('name' => 'valid', 'value' => Lang::get('main.valid-button'))), new DeleteInput(array('name' => 'delete', 'value' => Lang::get('main.delete-button'), 'notDisplayed' => $this->roleId == -1)), new ButtonInput(array('name' => 'cancel', 'value' => Lang::get('main.cancel-button'), 'onclick' => 'app.dialog("close")')))), 'onsuccess' => 'app.dialog("close"); app.load(app.getUri("list-roles"), {selector : "#admin-roles-tab"});');
     foreach (Language::getAll() as $language) {
         $param['fieldsets']['form'][] = new TextInput(array('name' => "translation[{$language->tag}]", "independant" => true, 'required' => $language->tag == LANGUAGE, "label" => Lang::get("roles.role-label-label", array('lang' => $language->tag)), "default" => Lang::exists("roles.role-" . $this->roleId . "-label") ? Lang::get("roles.role-" . $this->roleId . "-label", array(), 0, $language->tag) : ''));
     }
     $form = new Form($param);
     if (!$form->submitted()) {
         return View::make(Theme::getSelected()->getView("dialogbox.tpl"), array('icon' => 'user', 'title' => Lang::get('roles.form-title'), 'page' => $form));
     } else {
         if ($form->submitted() == "delete") {
             $form->delete(Form::NO_EXIT);
             if ($key) {
                 $key->delete();
             }
             return $form->response(Form::STATUS_SUCCESS);
         } else {
             if ($form->check()) {
                 try {
                     $roleId = $form->register(Form::NO_EXIT);
                     // Create the language key for the translations of the role name
                     foreach (App::request()->getBody('translation') as $tag => $translation) {
                         Language::getByTag($tag)->saveTranslations(array('roles' => array("role-{$roleId}-label" => $translation)));
                     }
                     return $form->response(Form::STATUS_SUCCESS);
                 } catch (Exception $e) {
                     return $form->response(Form::STATUS_ERROR, DEBUG_MODE ? $e->getMessage() : "");
                 }
             }
         }
     }
 }
 /**
  * This method adds alternate meta tags for associated menu items
  *
  * @return	nothing
  * @since	1.7
  */
 public function onAfterDispatch()
 {
     if (App::isSite() && $this->params->get('alternate_meta') && Document::getType() == 'html') {
         // Get active menu item
         $active = App::get('menu')->getActive();
         if (!$active) {
             return;
         }
         // Get menu item link
         if (Config::get('sef')) {
             $active_link = Route::url('index.php?Itemid=' . $active->id, false);
         } else {
             $active_link = Route::url($active->link . '&Itemid=' . $active->id, false);
         }
         if ($active_link == JUri::base(true) . '/') {
             $active_link .= 'index.php';
         }
         // Get current link
         $current_link = Request::getUri();
         if ($current_link == Request::base(true) . '/') {
             $current_link .= 'index.php';
         }
         // Check the exact menu item's URL
         if ($active_link == $current_link) {
             // Get menu item associations
             JLoader::register('MenusHelper', PATH_CORE . '/components/com_menus/admin/helpers/menus.php');
             $associations = MenusHelper::getAssociations($active->id);
             // Remove current menu item
             unset($associations[$active->language]);
             // Associated menu items in other languages
             if ($associations && $this->params->get('menu_associations')) {
                 $menu = App::get('menu');
                 $server = JURI::getInstance()->toString(array('scheme', 'host', 'port'));
                 foreach (JLanguageHelper::getLanguages() as $language) {
                     if (isset($associations[$language->lang_code])) {
                         $item = $menu->getItem($associations[$language->lang_code]);
                         if ($item && Lang::exists($language->lang_code)) {
                             if (Config::get('sef')) {
                                 $link = Route::url('index.php?Itemid=' . $associations[$language->lang_code] . '&lang=' . $language->sef);
                             } else {
                                 $link = Route::url($item->link . '&Itemid=' . $associations[$language->lang_code] . '&lang=' . $language->sef);
                             }
                             // Check if language is the default site language and remove url language code is on
                             if ($language->sef == self::$default_sef && $this->params->get('remove_default_prefix') == '1') {
                                 $relLink = preg_replace('|/' . $language->sef . '/|', '/', $link, 1);
                                 Document::addHeadLink($server . $relLink, 'alternate', 'rel', array('hreflang' => $language->lang_code));
                             } else {
                                 Document::addHeadLink($server . $link, 'alternate', 'rel', array('hreflang' => $language->lang_code));
                             }
                         }
                     }
                 }
             } elseif ($active->home) {
                 $menu = App::get('menu');
                 $server = JURI::getInstance()->toString(array('scheme', 'host', 'port'));
                 foreach (JLanguageHelper::getLanguages() as $language) {
                     $item = $menu->getDefault($language->lang_code);
                     if ($item && $item->language != $active->language && $item->language != '*' && JLanguage::exists($language->lang_code)) {
                         if (Config::get('sef')) {
                             $link = Route::url('index.php?Itemid=' . $item->id . '&lang=' . $language->sef);
                         } else {
                             $link = Route::url($item->link . '&Itemid=' . $item->id . '&lang=' . $language->sef);
                         }
                         // Check if language is the default site language and remove url language code is on
                         if ($language->sef == self::$default_sef && $this->params->get('remove_default_prefix') == '1') {
                             $relLink = preg_replace('|/' . $language->sef . '/|', '/', $link, 1);
                             Document::addHeadLink($server . $relLink, 'alternate', 'rel', array('hreflang' => $language->lang_code));
                         } else {
                             Document::addHeadLink($server . $link, 'alternate', 'rel', array('hreflang' => $language->lang_code));
                         }
                     }
                 }
             }
         }
     }
 }
Example #3
0
 /**
  * Check the submitted value of the input
  *
  * @param Form $form The form the input is associated with
  *
  * @return bool True if the submitted value is valid, else false
  */
 public function check(&$form = null)
 {
     if (empty($this->errorAt)) {
         $this->errorAt = $this->name;
     }
     // Check, if the field is required, that a value was submitted
     if (!empty($this->required) && ((string) $this->value == '' || $this->emptyValue && $this->value === $this->emptyValue)) {
         // The field is required but not filled
         $form && $form->error($this->errorAt, Lang::get('form.required-field'));
         return false;
     }
     // Check the format of the field is correct
     if (!empty($this->value) && !empty($this->pattern)) {
         // test the format of the field
         if (!preg_match($this->pattern, $this->value)) {
             // the format of the field value is not correct
             if ($form) {
                 $message = '';
                 if (isset($this->errorMessage)) {
                     $message = $this->errorMessage;
                 } elseif (Lang::exists('form.' . static::TYPE . "-format")) {
                     $message = Lang::get('form.' . static::TYPE . "-format");
                 } else {
                     $message = Lang::get('form.field-format');
                 }
                 $form->error($this->errorAt, $message);
             }
             return false;
         }
     }
     // If the value of this field must be unique in the database, check this unicity is not compromised
     if (!empty($this->value) && $this->unique && $form) {
         $example = array(array($this->name => $this->dbvalue()));
         if ($form->object) {
             $example['$not'] = $form->reference;
         }
         $example = new DBExample($example);
         $model = $form->model;
         if ($model::getByExample($example)) {
             // The field must be unique but is not
             $form->error($this->errorAt, Lang::get('form.unique-field'));
             return false;
         }
     }
     // Check custom validators
     if (!empty($this->validators)) {
         foreach ($this->validators as $validator) {
             $error = '';
             if (is_callable($validator) && !$validator($this, $error)) {
                 $form->error($this->errorAt, $error);
                 return false;
             }
         }
     }
     // The field is correctly filled (for the common checks)
     return true;
 }
Example #4
0
 /**
  * Add a new language key
  */
 public function addKey()
 {
     $form = $this->keyForm();
     if ($form->check()) {
         try {
             $key = self::DEFAULT_KEY_PLUGIN . '.' . $form->getData('key');
             if (Lang::exists($key)) {
                 $form->error('key', Lang::get('language.key-already-exists'));
                 return $form->response(Form::STATUS_CHECK_ERROR);
             }
             foreach (Language::getAll() as $language) {
                 $translation = $form->getData("translation[{$language->tag}]");
                 if ($translation) {
                     $language->saveTranslations(array(self::DEFAULT_KEY_PLUGIN => array($form->getData('key') => $translation)));
                 }
             }
             App::logger()->info('A new language key has been added');
             return $form->response(Form::STATUS_SUCCESS);
         } catch (Exception $e) {
             App::logger()->error('An error occured while adding a language key : ' . $e->getMessage());
             return $form->response(Form::STATUS_ERROR);
         }
     }
 }