function lang_dropdown_form in Language Switcher Dropdown 6
Same name and namespace in other branches
- 7.2 lang_dropdown.module \lang_dropdown_form()
- 7 lang_dropdown.module \lang_dropdown_form()
Builds the select widget form
1 string reference to 'lang_dropdown_form'
- lang_dropdown_block in ./
lang_dropdown.module - Implements hook_block().
File
- ./
lang_dropdown.module, line 65
Code
function lang_dropdown_form() {
global $language;
if (module_exists('languageicons')) {
variable_set('languageicons_show_block', 0);
}
$module_path = drupal_get_path('module', 'lang_dropdown');
$path = drupal_is_front_page() ? '<front>' : $_GET['q'];
$settings = _lang_dropdown_get_settings();
$languages = language_list('enabled');
$options = $select_options = $js_settings = array();
$selected_option_language_icon = '';
foreach ($languages[1] as $lang_item) {
$options[$lang_item->language] = array(
'href' => $path,
'title' => $lang_item->native,
'language' => $lang_item,
);
}
// All languages
$all_languages = $options;
// Only languages for which there is a translation
drupal_alter('translation_link', $options, $path);
// If show all languages is configured we have
// to take into account languages with no translation
// linking them to homepage <front>
if ($settings['showall'] && count($all_languages) != count($options)) {
foreach ($all_languages as $key => $value) {
if (!array_key_exists($key, $options)) {
$all_languages[$key]['href'] = '<front>';
}
else {
$all_languages[$key] = $options[$key];
}
}
$options = $all_languages;
}
drupal_add_js($module_path . '/lang_dropdown.js');
drupal_add_css($module_path . '/lang_dropdown.css');
foreach ($options as $lang_option) {
$path = check_url(url($lang_option['href'], array(
'language' => $lang_option['language'],
'query' => drupal_query_string_encode($_GET, array(
'q',
)),
)));
$select_options += array(
$path => $lang_option['language']->native,
);
// Set the selected option
if ($language->language == $lang_option['language']->language) {
$selected_option = $path;
if (module_exists('languageicons')) {
$selected_option_language_icon = theme('languageicons_icon', $lang_option['language']);
}
}
// Handle flags with Language icons module using JS widget
if (module_exists('languageicons') && $settings['js_widget']) {
$selected_option_language_icon = '';
$icons_path = variable_get('languageicons_path', drupal_get_path('module', 'languageicons') . '/flags/*.png');
$js_settings['languageicons'][$path] = base_path() . str_replace('*', $lang_option['language']->language, $icons_path);
}
}
// Add required files and settings for JS widget
if ($settings['js_widget']) {
drupal_add_js($module_path . '/msdropdown/jquery.dd.js');
$js_settings += array(
'visibleRows' => $settings['js_widget_settings']['visible_rows'],
'rowHeight' => $settings['js_widget_settings']['row_height'],
'animStyle' => $settings['js_widget_settings']['animation'],
);
if ($settings['languageicons']['flag_position']) {
drupal_add_css($module_path . '/msdropdown/dd_after.css');
$js_settings += array(
'mainCSS' => 'dd_after',
);
}
else {
drupal_add_css($module_path . '/msdropdown/dd.css');
$js_settings += array(
'mainCSS' => 'dd',
);
}
drupal_add_js(array(
'langDropdown' => array(
'jsWidget' => $js_settings,
),
), 'setting');
}
$settings['languageicons']['flag_position'] ? $flag_position = '#suffix' : ($flag_position = '#prefix');
$form['lang_dropdown_select'] = array(
'#type' => 'select',
'#default_value' => isset($selected_option) ? $selected_option : key($select_options),
'#options' => $select_options,
'#attributes' => array(
'style' => 'width:' . $settings['js_widget_settings']['width'] . 'px',
),
);
if (module_exists('languageicons') && !$settings['js_widget']) {
$form['lang_dropdown_select'][$flag_position] = $selected_option_language_icon;
}
$form['submit'] = array(
'#type' => 'submit',
'#value' => t('Go'),
// The below prefix & suffix for gracefull fallback if JavaScript was disabled
'#prefix' => "<noscript><div>\n",
'#suffix' => "\n</div></noscript>",
);
return $form;
}