Same name and namespace in other branches
  1. 7.x-3.x views_slideshow.module \views_slideshow_pager_views_slideshow_widget_form_options() 1 comment

Implements [widget]_views_slideshow_widget_form_options().

File

./views_slideshow.module, line 200

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.',
        );
    }
}