You are here

function lang_dropdown_hideout_form_block_admin_configure_alter in Language Switcher Dropdown 7.2

Implements hook_form_alter().

File

lang_dropdown_hideout/lang_dropdown_hideout.module, line 11
LSD Hideout main module file.

Code

function lang_dropdown_hideout_form_block_admin_configure_alter(&$form, &$form_state, $form_id) {
  if ($form['module']['#value'] == 'lang_dropdown' || $form['module']['#value'] == 'locale') {
    $type = $form['delta']['#value'];
    $languages = locale_language_list('native');
    $settings = _lang_dropdown_hideout_get_settings($type);
    $form['lang_dropdown']['hideout'] = array(
      '#type' => 'fieldset',
      '#title' => t('Hide language settings'),
      '#description' => t('Select which languages you want to hide to specific roles.'),
      '#weight' => 1,
      '#tree' => TRUE,
      '#parents' => array(
        'lang_dropdown',
        'hideout',
      ),
    );

    // Retrieve role names for columns.
    $role_names = user_roles();

    // Fetch language switcher dropdown hideout settings.
    $hidden_languages = $settings['hidden_languages'];

    // Store $role_names for use when saving the data.
    $form['lang_dropdown']['hideout']['role_names'] = array(
      '#type' => 'value',
      '#value' => $role_names,
    );
    $form['lang_dropdown']['hideout']['languages'] = array(
      '#theme' => 'lang_dropdown_hideout_hiddenlanguages',
    );
    foreach ($languages as $code => $name) {
      $options[$code] = '';
      $form['lang_dropdown']['hideout']['languages']['language'][$code] = array(
        '#type' => 'item',
        '#markup' => $name,
      );
      foreach ($role_names as $rid => $name) {

        // Builds arrays for checked boxes for each role.
        if (isset($hidden_languages[$rid][$code])) {
          $status[$rid][] = $code;
        }
      }
    }

    // Have to build checkboxes here after checkbox arrays are built.
    foreach ($role_names as $rid => $name) {
      $form['lang_dropdown']['hideout']['languages']['checkboxes'][$rid] = array(
        '#type' => 'checkboxes',
        '#options' => $options,
        '#default_value' => isset($status[$rid]) ? $status[$rid] : array(),
        '#attributes' => array(
          'class' => array(
            'rid-' . $rid,
          ),
        ),
      );
      $form['lang_dropdown']['hideout']['languages']['role_names'][$rid] = array(
        '#markup' => check_plain($name),
        '#tree' => TRUE,
      );
    }
    $form['#submit'][] = 'lang_dropdown_hideout_submit';
  }
}