You are here

function _sliderfield_process in SliderField 7

Helper function to add jQuery.UI Sliderfield widget to textfield.

1 string reference to '_sliderfield_process'
sliderfield_field_widget_form in ./sliderfield.module
Implements hook_field_widget_form().

File

./sliderfield.module, line 65
Defines a Slider widget for use with decimal, number, and float fields.

Code

function _sliderfield_process($element, &$form_state, $form) {
  $instance = field_widget_instance($element, $form_state);
  $widget_settings = $instance['widget']['settings'];
  $settings = array();
  switch ($instance['widget']['type']) {
    case 'sliderfield_adjust':
      $settings += array(
        'adjust' => isset($widget_settings['sliderfield_adjust_field']) ? drupal_clean_css_identifier($widget_settings['sliderfield_adjust_field']) : '',
      );

    // DELIBERATE fall-through: From here on the sliderfield_adjust widget is
    // exactly the same as sliderfield_basic.
    case 'sliderfield_basic':
      $element['#suffix'] = '<div class="sliderfield-slider"></div>';
      $element['#attributes']['class'][] = "edit-sliderfield-slider";

      // Add supporting javascript library.
      $element['#attached']['library'] = array(
        array(
          'system',
          'ui.slider',
        ),
      );

      // Add javascript to trigger the slider.
      $element['#attached']['js'][] = drupal_get_path('module', 'sliderfield') . '/sliderfield.js';

      // Add basic javascript settings.
      $settings += array(
        'step' => $widget_settings['step'] ? $widget_settings['step'] : 1,
        'min' => $instance['settings']['min'],
        'max' => $instance['settings']['max'],
        'val' => $element['#value'] ? $element['#value'] : $instance['settings']['min'],
      );

      // Add the complete set of javascript settings
      $settings = array(
        $element['#id'] => $settings,
      );
      $element['#attached']['js'][] = array(
        'data' => array(
          'sliderfield' => $settings,
        ),
        'type' => 'setting',
        'scope' => 'header',
      );
      break;
  }
  return $element;
}