You are here

function mefibs_form_views_ui_edit_display_form_alter in MEFIBS - More exposed forms in blocks 8

Same name and namespace in other branches
  1. 7 mefibs.module \mefibs_form_views_ui_edit_display_form_alter()

Implements hook_form_FORM_ID_alter().

File

./mefibs.module, line 31
Primarily Drupal hooks and global API functions to manipulate views and to provide an additional block with an exposed filter form.

Code

function mefibs_form_views_ui_edit_display_form_alter(&$form, $form_state) {
  if (!in_array($form_state['section'], array(
    'pager_options',
    'exposed_form_options',
  ))) {
    return;
  }
  $view = $form_state['view'];
  $display_id = $form_state['display_id'];
  $display = $view
    ->getExecutable()->displayHandlers
    ->get($display_id);
  if (!$display
    ->getOption('exposed_block')) {
    return;
  }
  if (!mefibs_display_is_mefibs_enabled($display)) {
    return;
  }
  $mefibs_options = $display
    ->getOption('mefibs');
  $blocks = $display->extender['mefibs']
    ->getEnabledBlocks();

  // Add block selector for exposed items_per_page options
  if ($form_state['section'] == 'pager_options') {
    $form['options']['pager_options']['expose']['items_per_page']['#weight'] = -1;
    $form['options']['pager_options']['expose']['items_per_page_label']['#weight'] = -1;
    $form['options']['pager_options']['expose']['items_per_page_options']['#weight'] = -1;
    $form['options']['pager_options']['expose']['mefibs_block_items_per_page'] = array(
      '#type' => 'select',
      '#title' => t('Show in block'),
      '#options' => array(
        '' => 'default',
      ) + $blocks,
      '#default_value' => isset($mefibs_options[$display_id]['other']['items_per_page']) ? $mefibs_options[$display_id]['other']['items_per_page'] : '',
      '#states' => array(
        'invisible' => array(
          'input[name="pager_options[expose][items_per_page]"]' => array(
            'checked' => FALSE,
          ),
        ),
      ),
      '#weight' => 0,
    );
    $form['options']['pager_options']['expose']['mefibs_block_offset'] = array(
      '#type' => 'select',
      '#title' => t('Show in block'),
      '#options' => array(
        '' => 'default',
      ) + $blocks,
      '#default_value' => isset($mefibs_options[$display_id]['other']['offset']) ? $mefibs_options[$display_id]['other']['offset'] : '',
      '#states' => array(
        'invisible' => array(
          'input[name="pager_options[expose][offset]"]' => array(
            'checked' => FALSE,
          ),
        ),
      ),
      '#weight' => 1,
    );
  }

  // Add blockselector for exposed form plugin settings.
  if ($form_state['section'] == 'exposed_form_options') {
    $form['options']['mefibs_block_sort'] = array(
      '#type' => 'select',
      '#title' => t('Show in block'),
      '#description' => t('Set where exposed sort items will be displayed.'),
      '#options' => array(
        '' => 'default',
      ) + $blocks,
      '#default_value' => isset($mefibs_options[$display_id]['sort_block']) ? $mefibs_options[$display_id]['sort_block'] : '',
    );
  }
  array_unshift($form['actions']['submit']['#submit'], 'mefibs_form_views_ui_edit_display_form_submit');
}