You are here

function views_slideshow_pager_views_slideshow_widget_form_options in Views Slideshow 8.3

Same name and namespace in other branches
  1. 6.3 views_slideshow.module \views_slideshow_pager_views_slideshow_widget_form_options()
  2. 7.3 views_slideshow.module \views_slideshow_pager_views_slideshow_widget_form_options()

Implements [widget]_views_slideshow_widget_form_options().

File

./views_slideshow.module, line 200
Provides Slideshow style options for Views.

Code

function views_slideshow_pager_views_slideshow_widget_form_options(&$form, &$form_state, &$view, $defaults, $dependency) {

  // Get all the pager info from other modules.
  $pagers = \Drupal::moduleHandler()
    ->invokeAll('views_slideshow_widget_pager_info', array(
    $view,
  ));
  if (!empty($pagers)) {
    $pager_options = array();
    foreach ($pagers as $pager_id => $pager_info) {
      $pager_options[$pager_id] = $pager_info['name'];
    }
    asort($pager_options);

    // Need to wrap this so it indents correctly.
    $form['views_slideshow_pager_wrapper'] = array(
      '#markup' => '<div class="vs-dependent">',
    );

    // Add field to see if they would like to hide pager if there is only one
    // slide.
    $form['hide_on_single_slide'] = array(
      '#type' => 'checkbox',
      '#title' => t('Hide pager if there is only one slide'),
      '#default_value' => $defaults['hide_on_single_slide'],
      '#description' => t('Should the pager be hidden if there is only one slide.'),
      '#states' => array(
        'visible' => array(
          ':input[name="' . $dependency . '[enable]"]' => array(
            'checked' => TRUE,
          ),
        ),
      ),
    );

    // Create the widget type field.
    $form['type'] = array(
      '#type' => 'select',
      '#title' => t('Pager Type'),
      '#description' => t('Style of the pager'),
      '#default_value' => $defaults['type'],
      '#options' => $pager_options,
      '#states' => array(
        'visible' => array(
          ':input[name="' . $dependency . '[enable]"]' => array(
            'checked' => TRUE,
          ),
        ),
      ),
    );

    // Add any additional form elements.
    // Build our arguments to pass to
    // [pager-type]_views_slideshow_widget_pager_form_options().
    $arguments = array(
      &$form,
      &$form_state,
      &$view,
      $defaults,
      $dependency,
    );
    foreach ($pagers as $pager_key => $pager_info) {
      $function = $pager_key . '_views_slideshow_widget_pager_form_options';
      if (function_exists($function)) {
        call_user_func_array($function, $arguments);
      }
    }
    $form['views_slideshow_pager_wrapper_close'] = array(
      '#markup' => '</div>',
    );
  }
  else {
    $form['enable_pager'] = array(
      '#markup' => 'There are no pagers available.',
    );
  }
}