Esempio n. 1
0
 /**
  * provide an HTML FORM containing the known languages for this application, preselected on the current language, with the language names translated in the current language.
  * @param string $current_language the language preselection for this form
  * @param string $form_id the id of the form (default is set to "language_form")
  * @param string $selector_id the id of the SELECT element (default is set to "language_selector")
  * @param string $submit_method the method chosen for submitting the form (default is set to POST)
  * @param string $submit_action the action to be performed on submit (empty by default, the form is submitted to the current page)
  * @param string $form_css_class the cssclass for this form (default is set to "language_selector";
  * @param string $current_page the page loading the selector (in order to load the same page after submitting the form to the relevant controller (leave blank if you just need the controller to render the default view) 
  * @return string the full form
  */
 public static function getLanguageHTMLForm($current_language = '', $form_id = "language_form", $selector_id = "language_selector", $submit_method = "POST", $submit_action = "", $form_css_class = "language_selector", $current_page = "")
 {
     //$_SESSION['feedback_positive'][]="Build Language Selector for language: ".$current_language;
     //echo "<br/> Build Language Selector for language: ".$current_language;
     if (!isset(Lang::$_languages_config['accepted_languages']) || !isset($_SESSION['ArFramework_lang'])) {
         //echo "<br/> but first have to init language";
         Lang::initLanguage();
     }
     $option_selected = false;
     $selector = "<form id='{$form_id}' class='{$form_css_class}' method='{$submit_method}' action='{$submit_action}'>";
     $selector .= "<label style='padding-right:10px'>" . Lang::__("choose.another.language") . "</label>";
     $selector .= "<select id='{$selector_id}' name='{$selector_id}'>";
     if (isset(Lang::$_languages_config['accepted_languages']['language'])) {
         if (isset(Lang::$_languages_config['accepted_languages']['language']['@multiple']) && Lang::$_languages_config['accepted_languages']['language']['@multiple'] == '1') {
             foreach (Lang::$_languages_config['accepted_languages']['language'] as $index => $lang) {
                 if ($index != '0' && ($index == '@attributes' || $index == '@multiple')) {
                     continue;
                 }
                 $lang_id = isset($lang['@attributes']['id']) ? $lang['@attributes']['id'] : '';
                 $lang_aliasid = isset($lang['@attributes']['is_alias']) && $lang['@attributes']['is_alias'] == 'true' && isset($lang['@attributes']['alias_idref']) ? $lang['@attributes']['alias_idref'] : $lang_id;
                 //we only provide linguistic choice for the 'non aliased' languages
                 if ($lang_aliasid == $lang_id) {
                     $selector .= "<option value='{$lang_id}'";
                     if ($current_language == $lang_id) {
                         $option_selected = true;
                         $selector .= " selected>";
                     } else {
                         $selector .= ">";
                     }
                     //now look for a language name
                     $lang_name = '';
                     if (isset($lang['translation'])) {
                         if (isset($lang['translation']['@multiple']) && $lang['translation']['@multiple'] == '1') {
                             foreach ($lang['translation'] as $trindex => $trans) {
                                 if ($trindex != '0' && ($trindex == '@attributes' || $trindex == '@multiple')) {
                                     continue;
                                 }
                                 if (isset($trans['@attributes']['translated_idref']) && $trans['@attributes']['translated_idref'] == $current_language) {
                                     $lang_name = isset($trans['@attributes']['translation']) ? $trans['@attributes']['translation'] : '';
                                     break;
                                     //we found a translation for the current language, now jump to the next language option
                                 }
                             }
                         } else {
                             if (isset($lang['translation']['@attributes']['translated_idref']) && $lang['translation']['@attributes']['translated_idref'] == $current_language) {
                                 $lang_name = isset($lang['translation']['@attributes']['translation']) ? $lang['translation']['@attributes']['translation'] : '';
                             }
                         }
                     }
                     //end if there are translations for the language name
                     if ($lang_name == '') {
                         $lang_name = $lang_id;
                     }
                     //just in case we wouldn't fine the proper translation
                     //$selector.=utf8_encode($lang_name)."</option>";
                     $selector .= $lang_name . "</option>";
                 }
                 //end if the language is not an alias
             }
             //end 'foreach' language
         } else {
             //it seems weird to handle a single language descriptor for a multilingue application .. but why not
             $lang = Lang::$_languages_config['accepted_languages']['language'];
             $lang_id = isset($lang['@attributes']['id']) ? $lang['@attributes']['id'] : '';
             $lang_aliasid = isset($lang['@attributes']['is_alias']) && $lang['@attributes']['is_alias'] == 'true' && isset($lang['@attributes']['alias_idref']) ? $lang['@attributes']['alias_idref'] : $lang_id;
             //we only provide linguistic choice for the 'non aliased' languages
             if ($lang_aliasid == $lang_id) {
                 $selector .= "<option value='{$lang_id}'";
                 if ($current_language == $lang_id) {
                     $option_selected = true;
                     $selector .= " selected>";
                 } else {
                     $selector .= ">";
                 }
                 //now look for a language name
                 $lang_name = '';
                 if (isset($lang['translation'])) {
                     if (isset($lang['translation']['@multiple']) && $lang['translation']['@multiple'] == '1') {
                         foreach ($lang['translation'] as $trindex => $trans) {
                             if ($trindex != '0' && ($trindex == '@attributes' || $trindex == '@multiple')) {
                                 continue;
                             }
                             if (isset($trans['@attributes']['translated_idref']) && $trans['@attributes']['translated_idref'] == $current_language) {
                                 $lang_name = isset($trans['@attributes']['translation']) ? $trans['@attributes']['translation'] : '';
                                 break;
                                 //we found a translation for the current language, now jump to the next language option
                             }
                         }
                     } else {
                         if (isset($lang['translation']['@attributes']['translated_idref']) && $lang['translation']['@attributes']['translated_idref'] == $current_language) {
                             $lang_name = isset($lang['translation']['@attributes']['translation']) ? $lang['translation']['@attributes']['translation'] : '';
                         }
                     }
                 }
                 if ($lang_name == '') {
                     $lang_name = $lang_id;
                 }
                 //just in case we wouldn't fine the proper translation
                 $selector .= $lang_name . "</option>";
             }
             //end if the language is not an alias
         }
         //end if there is a single language
     }
     //end if there are languages
     $selector .= "</select>";
     if ($current_page != "") {
         $selector .= "<input type='hidden' name='current_page' value='{$current_page}'/>";
     }
     $selector .= "</form>";
     return $selector;
 }