You are here

function _slick_slideshow_settings_generate in Slick Slideshow Lite 7

Generate settings array.

Parameters

array $settings (optional): Pass existing settings into the array.

2 calls to _slick_slideshow_settings_generate()
slick_slideshow_field_formatter_info in ./slick_slideshow.module
Implements hook_field_formatter_info().
slick_slideshow_field_formatter_settings_form in ./slick_slideshow.module
Implements hook_field_formatter_settings_form().

File

./slick_slideshow.module, line 282
Defines a system for adding the Slick responsive slideshow library to Drupal.

Code

function _slick_slideshow_settings_generate($settings = array()) {
  $image_styles = function_exists('image_style_options') ? image_style_options(FALSE, PASS_THROUGH) : array();
  $form_settings = array(
    'slickField' => array(
      '#title' => t('Field Settings'),
      '#type' => 'fieldset',
      'image_style' => array(
        '#title' => t('Image style'),
        '#type' => 'select',
        '#empty_option' => t('None (original image)'),
        '#options' => $image_styles,
      ),
      'captions' => array(
        '#title' => t('Enable captions'),
        '#description' => t('If enabled, a caption will appear on the slides based on the image\'s title field.'),
        '#type' => 'checkbox',
      ),
    ),
    'slickSettings' => array(
      '#title' => t('Slick Slideshow Settings'),
      '#type' => 'fieldset',
      'slidesToShow' => array(
        '#title' => t('Slides displayed'),
        '#type' => 'textfield',
        '#element_validate' => array(
          'element_validate_integer_positive',
        ),
        '#required' => TRUE,
      ),
      'slidesToScroll' => array(
        '#title' => t('Slides scrolled on change'),
        '#type' => 'textfield',
        '#element_validate' => array(
          'element_validate_integer_positive',
        ),
        '#required' => TRUE,
      ),
      'infinite' => array(
        '#title' => t('Enable infinite scrolling'),
        '#type' => 'checkbox',
      ),
      'dots' => array(
        '#title' => t('Enable dots navigation'),
        '#type' => 'checkbox',
      ),
      'fade' => array(
        '#title' => t('Enable fade transition'),
        '#type' => 'checkbox',
      ),
      'autoplay' => array(
        '#title' => t('Enable autoplay'),
        '#type' => 'checkbox',
      ),
      'autoplaySpeed' => array(
        '#title' => t('Auto play change interval'),
        '#description' => t('Enter interal value in ms. Default is 3000 (3 seconds).'),
        '#type' => 'textfield',
        '#element_validate' => array(
          'element_validate_integer_positive',
        ),
      ),
      'pauseOnHover' => array(
        '#title' => t('Enable pause on hover'),
        '#type' => 'checkbox',
      ),
    ),
  );
  if (!empty($settings)) {
    foreach ($form_settings as $fkey => $fieldset) {
      foreach ($fieldset as $skey => $setting) {
        if (is_array($form_settings[$fkey][$skey])) {
          $form_settings[$fkey][$skey]['#default_value'] = isset($settings[$fkey][$skey]) ? $settings[$fkey][$skey] : null;
        }
      }
    }
  }

  // Set numeric default values if null
  $numeric_settings = array(
    'slidesToShow',
    'slidesToScroll',
  );
  foreach ($numeric_settings as $num_setting) {
    if (empty($form_settings['slickSettings'][$num_setting]['#default_value'])) {
      $form_settings['slickSettings'][$num_setting]['#default_value'] = 1;
    }
  }
  return $form_settings;
}