You are here

function lang_dropdown_block_configure in Language Switcher Dropdown 7.2

Same name and namespace in other branches
  1. 7 lang_dropdown.module \lang_dropdown_block_configure()

Implements hook_block_configure().

File

./lang_dropdown.module, line 92
Language dropdown select module main file.

Code

function lang_dropdown_block_configure($delta = '') {
  $settings = _lang_dropdown_get_settings($delta);
  $form = array();
  $form['lang_dropdown'] = array(
    '#type' => 'fieldset',
    '#title' => t('Language switcher dropdown settings'),
    '#weight' => 0,
    '#tree' => TRUE,
  );
  $form['lang_dropdown']['showall'] = array(
    '#type' => 'checkbox',
    '#title' => t('Show all enabled languages'),
    '#description' => t('Show all languages in the switcher no matter if there is a translation for the node or not. For languages without translation the switcher will redirect to homepage.'),
    '#default_value' => $settings['showall'],
  );
  $form['lang_dropdown']['tohome'] = array(
    '#type' => 'checkbox',
    '#title' => t('Redirect to home on switch'),
    '#description' => t('When you change language the switcher will redirect to homepage.'),
    '#default_value' => $settings['tohome'],
  );
  $form['lang_dropdown']['width'] = array(
    '#type' => 'textfield',
    '#title' => t('Width of dropdown element'),
    '#size' => 8,
    '#maxlength' => 3,
    '#required' => TRUE,
    '#field_suffix' => 'px',
    '#default_value' => $settings['width'],
  );
  $form['lang_dropdown']['display'] = array(
    '#type' => 'select',
    '#title' => t('Display format'),
    '#options' => array(
      LANG_DROPDOWN_DISPLAY_TRANSLATED => t('Translated into Current Language'),
      LANG_DROPDOWN_DISPLAY_NATIVE => t('Native Name'),
      LANG_DROPDOWN_DISPLAY_LANGCODE => t('Language Code'),
    ),
    '#default_value' => $settings['display'],
  );
  $form['lang_dropdown']['widget'] = array(
    '#type' => 'select',
    '#title' => t('Output type'),
    '#options' => array(
      LANG_DROPDOWN_SIMPLE_SELECT => t('Simple HTML select'),
      LANG_DROPDOWN_MSDROPDOWN => t('Marghoob Suleman Dropdown jquery library'),
      LANG_DROPDOWN_CHOSEN => t('Chosen jquery library'),
      LANG_DROPDOWN_DDSLICK => t('ddSlick library'),
    ),
    '#default_value' => $settings['widget'],
    '#element_validate' => array(
      '_lang_dropdown_validate_output_value',
    ),
  );
  $form['lang_dropdown']['msdropdown'] = array(
    '#type' => 'fieldset',
    '#title' => t('Marghoob Suleman Dropdown Settings'),
    '#weight' => 1,
    '#states' => array(
      'visible' => array(
        ':input[name="lang_dropdown[widget]"]' => array(
          'value' => LANG_DROPDOWN_MSDROPDOWN,
        ),
      ),
    ),
  );
  if (!module_exists('languageicons')) {
    $form['lang_dropdown']['msdropdown']['#description'] = t('This looks better with !languageicons module.', array(
      '!languageicons' => l(t('language icons'), LANG_DROPDOWN_LANGUAGEICONS_MOD_URL),
    ));
  }
  if (_lang_dropdown_get_msdropdown_path()) {
    $num_rows = array(
      2,
      3,
      4,
      5,
      6,
      7,
      8,
      9,
      10,
      11,
      12,
      13,
      14,
      15,
      16,
      17,
      18,
      19,
      20,
    );
    $form['lang_dropdown']['msdropdown']['visible_rows'] = array(
      '#type' => 'select',
      '#title' => t('Maximum number of visible rows'),
      '#options' => array_combine($num_rows, $num_rows),
      '#default_value' => $settings['msdropdown']['visible_rows'],
    );
    $form['lang_dropdown']['msdropdown']['rounded'] = array(
      '#type' => 'checkbox',
      '#title' => t('Rounded corners.'),
      '#default_value' => $settings['msdropdown']['rounded'],
    );
    $form['lang_dropdown']['msdropdown']['animation'] = array(
      '#type' => 'select',
      '#title' => t('Animation style for dropdown'),
      '#options' => array(
        'slideDown' => t('Slide down'),
        'fadeIn' => t('Fade in'),
        'show' => t('Show'),
      ),
      '#default_value' => $settings['msdropdown']['animation'],
    );
    $form['lang_dropdown']['msdropdown']['event'] = array(
      '#type' => 'select',
      '#title' => t('Event that opens the menu'),
      '#options' => array(
        'click' => t('Click'),
        'mouseover' => t('Mouse Over'),
      ),
      '#default_value' => $settings['msdropdown']['event'],
    );
    $msdSkinOptions = array();
    foreach (_lang_dropdown_get_msdropdown_skins() as $key => $value) {
      $msdSkinOptions[$key] = $value['text'];
    }
    $form['lang_dropdown']['msdropdown']['skin'] = array(
      '#type' => 'select',
      '#title' => t('Skin'),
      '#options' => $msdSkinOptions,
      '#default_value' => $settings['msdropdown']['skin'],
    );
    $form['lang_dropdown']['msdropdown']['custom_skin'] = array(
      '#type' => 'textfield',
      '#title' => t('Custom skin name'),
      '#size' => 80,
      '#maxlength' => 55,
      '#default_value' => $settings['msdropdown']['custom_skin'],
      '#states' => array(
        'visible' => array(
          ':input[name="lang_dropdown[msdropdown][skin]"]' => array(
            'value' => 'custom',
          ),
        ),
      ),
    );
  }
  else {
    $form['lang_dropdown']['msdropdown']['#description'] = t('You need to download the !msdropdown and extract the entire contents of the archive into the %path directory on your server.', array(
      '!msdropdown' => l(t('Marghoob Suleman Dropdown JavaScript library'), LANG_DROPDOWN_MSDROPDOWN_URL),
      '%path' => 'sites/all/libraries',
    ));
  }
  $form['lang_dropdown']['languageicons'] = array(
    '#type' => 'fieldset',
    '#title' => t('Language icons settings'),
    '#weight' => 1,
    '#states' => array(
      'visible' => array(
        ':input[name="lang_dropdown[widget]"]' => array(
          'OR',
          array(
            'value' => LANG_DROPDOWN_SIMPLE_SELECT,
          ),
          array(
            'value' => LANG_DROPDOWN_CHOSEN,
          ),
          array(
            'value' => LANG_DROPDOWN_MSDROPDOWN,
          ),
        ),
      ),
    ),
  );
  $form['lang_dropdown']['languageicons']['enable_icons'] = array(
    '#type' => 'checkbox',
    '#title' => t('Enable language icons'),
    '#default_value' => module_exists('languageicons') && !empty($settings['languageicons']['enable_icons']),
    '#disabled' => !module_exists('languageicons'),
    '#description' => !module_exists('languageicons') ? t('Enable !languageicons module to get opportunity show a flag of the selected language before or after the select box.', array(
      '!languageicons' => l(t('language icons'), LANG_DROPDOWN_LANGUAGEICONS_MOD_URL),
    )) : '',
  );
  if (module_exists('languageicons')) {
    $form['lang_dropdown']['languageicons']['flag_position'] = array(
      '#type' => 'select',
      '#title' => t('Position of the flag when the dropdown is show just as a select'),
      '#options' => array(
        LANG_DROPDOWN_FLAG_POSITION_BEFORE => t('Before'),
        LANG_DROPDOWN_FLAG_POSITION_AFTER => t('After'),
      ),
      '#default_value' => $settings['languageicons']['flag_position'],
      '#states' => array(
        'visible' => array(
          ':input[name="lang_dropdown[languageicons][enable_icons]"]' => array(
            'checked' => TRUE,
          ),
          ':input[name="lang_dropdown[widget]"]' => array(
            'OR',
            array(
              'value' => LANG_DROPDOWN_SIMPLE_SELECT,
            ),
            array(
              'value' => LANG_DROPDOWN_CHOSEN,
            ),
          ),
        ),
      ),
    );
  }
  $form['lang_dropdown']['chosen'] = array(
    '#type' => 'fieldset',
    '#title' => t('Chosen settings'),
    '#weight' => 1,
    '#states' => array(
      'visible' => array(
        ':input[name="lang_dropdown[widget]"]' => array(
          'value' => LANG_DROPDOWN_CHOSEN,
        ),
      ),
    ),
  );
  if (module_exists('chosen')) {
    $form['lang_dropdown']['chosen']['#description'] = t('If you are already using the !chosenmod you must just choose to output language dropdown as a simple HTML select and allow !chosenmod to turn it into a chosen style select.', array(
      '!chosenmod' => l(t('Chosen module'), LANG_DROPDOWN_CHOSEN_MOD_URL),
    ));
  }
  elseif (_lang_dropdown_get_chosen_path()) {
    $form['lang_dropdown']['chosen']['disable_search'] = array(
      '#type' => 'checkbox',
      '#title' => t('Disable search box'),
      '#default_value' => $settings['chosen']['disable_search'],
    );
    $form['lang_dropdown']['chosen']['no_results_text'] = array(
      '#type' => 'textfield',
      '#title' => t('No Result Text'),
      '#description' => t('Text to show when no result is found on search.'),
      '#default_value' => $settings['chosen']['no_results_text'],
      '#states' => array(
        'visible' => array(
          ':input[name="lang_dropdown[chosen][disable_search]"]' => array(
            'checked' => FALSE,
          ),
        ),
      ),
    );
  }
  else {
    $form['lang_dropdown']['chosen']['#description'] = t('You need to download the !chosen and extract the entire contents of the archive into the %path directory on your server.', array(
      '!chosen' => l(t('Chosen library'), LANG_DROPDOWN_CHOSEN_WEB_URL),
      '%path' => 'sites/all/libraries',
    ));
  }
  $form['lang_dropdown']['ddslick'] = array(
    '#type' => 'fieldset',
    '#title' => t('ddSlick settings'),
    '#weight' => 1,
    '#states' => array(
      'visible' => array(
        ':input[name="lang_dropdown[widget]"]' => array(
          'value' => LANG_DROPDOWN_DDSLICK,
        ),
      ),
    ),
  );
  if (_lang_dropdown_get_ddslick_path()) {
    $form['lang_dropdown']['ddslick']['ddslick_height'] = array(
      '#type' => 'textfield',
      '#title' => t('Height'),
      '#description' => t('Height in px for the drop down options i.e. 300. The scroller will automatically be added if options overflows the height. Use 0 for full height.'),
      '#default_value' => $settings['ddslick']['ddslick_height'],
      '#size' => 8,
      '#maxlength' => 3,
      '#field_suffix' => 'px',
    );
    if (module_exists('languageicons')) {
      $form['lang_dropdown']['ddslick']['showSelectedHTML'] = array(
        '#type' => 'checkbox',
        '#title' => t('Show Flag'),
        '#default_value' => $settings['ddslick']['showSelectedHTML'],
      );
      $form['lang_dropdown']['ddslick']['imagePosition'] = array(
        '#type' => 'select',
        '#title' => t('Flag Position'),
        '#options' => array(
          LANG_DROPDOWN_DDSLICK_LEFT => t('left'),
          LANG_DROPDOWN_DDSLICK_RIGHT => t('right'),
        ),
        '#default_value' => $settings['ddslick']['imagePosition'],
        '#states' => array(
          'visible' => array(
            ':input[name="lang_dropdown[ddslick][showSelectedHTML]"]' => array(
              'checked' => TRUE,
            ),
          ),
        ),
      );
    }
    else {
      $form['lang_dropdown']['ddslick']['#description'] = t('This looks better with !languageicons module.', array(
        '!languageicons' => l(t('language icons'), LANG_DROPDOWN_LANGUAGEICONS_MOD_URL),
      ));
    }
    $ddsSkinOptions = array();
    foreach (_lang_dropdown_get_ddslick_skins() as $key => $value) {
      $ddsSkinOptions[$key] = $value['text'];
    }
    $form['lang_dropdown']['ddslick']['skin'] = array(
      '#type' => 'select',
      '#title' => t('Skin'),
      '#options' => $ddsSkinOptions,
      '#default_value' => $settings['ddslick']['skin'],
    );
    $form['lang_dropdown']['ddslick']['custom_skin'] = array(
      '#type' => 'textfield',
      '#title' => t('Custom skin name'),
      '#size' => 80,
      '#maxlength' => 55,
      '#default_value' => $settings['ddslick']['custom_skin'],
      '#states' => array(
        'visible' => array(
          ':input[name="lang_dropdown[ddslick][skin]"]' => array(
            'value' => 'custom',
          ),
        ),
      ),
    );
  }
  else {
    $form['lang_dropdown']['ddslick']['#description'] = t('You need to download the !ddslick and extract the entire contents of the archive into the %path directory on your server.', array(
      '!ddslick' => l(t('ddSlick library'), LANG_DROPDOWN_DDSLICK_WEB_URL),
      '%path' => 'sites/all/libraries/ddslick',
    ));
  }
  return $form;
}