You are here

function _sliderfield_element_sliderfield_structure in SliderField 7.2

Processes transfer slider: add textfields

Parameters

unknown_type $element:

2 calls to _sliderfield_element_sliderfield_structure()
theme_sliderfield_sliderfield in ./sliderfield_element_sliderfield.inc
Theme output of sliderfield
_sliderfield_sliderfield_process in ./sliderfield_element_sliderfield.inc
Processes transfer slider: add textfields

File

./sliderfield_element_sliderfield.inc, line 199

Code

function _sliderfield_element_sliderfield_structure($element, &$form_state) {
  $element['#tree'] = TRUE;

  /*
  $values = NULL;
  $input = NULL;
  if (isset($form_state['values'])) {
    $values = drupal_array_get_nested_value($form_state['values'], $element['#parents']);
    $input = drupal_array_get_nested_value($form_state['input'], $element['#parents']);
  }
  */
  if (is_array($element['#value'])) {
    $value = isset($element['#value']['value']) ? $element['#value']['value'] : NULL;
    $value2 = isset($element['#value']['value2']) ? $element['#value']['value2'] : NULL;
  }
  else {
    $value = $element['#value'];
    $value2 = NULL;
  }
  if ($element['#display_inside_fieldset']) {
    $element['slider'] = array(
      '#type' => 'fieldset',
      '#title' => $element['#title'],
    );
  }
  elseif ($element['#title']) {
    $element['slider'] = array(
      '#type' => 'container',
    );

    /*
    $element['slider']['title'] = array(
      '#type'             => 'item',
      '#markup'    => '<label>' . $element['#title'] . '</label>'
    );
    */
  }
  if (!is_null($value) && $value !== '') {
    if ($value < $element['#min']) {
      $value = $element['#min'];
    }
    if ($value > $element['#max']) {
      $value = $element['#max'];
    }
  }
  $values = array();
  $values[] = $value;
  $group_css = '';
  if ($element['#group']) {
    $group_css = 'sliderfield-group-' . $element['#group'];
    if ($element['#group_master']) {
      $group_css .= ' sliderfield-group-master';
    }
  }
  if ($element['#display_ignore_button'] && !$element['#display_inputs']) {
    $element['ignore'] = array(
      '#type' => 'checkbox',
      '#title' => t('Not Selected (Uncheck to select a value)'),
      '#value' => is_null($value) || $value === '',
      '#disabled' => $element['#disabled'],
      '#attributes' => array(
        'class' => array(
          'sliderfield-ignore',
        ),
      ),
    );
  }

  // Generate input for slider
  $element['value'] = array(
    '#tree' => TRUE,
    '#prefix' => '<div id="' . $element['#id'] . '" class="sliderfield ' . $group_css . '">' . '<div class="sliderfield-event-field-container">',
    '#suffix' => '</div>',
    '#type' => 'textfield',
    '#required' => $element['#required'],
    '#element_validate' => array(
      'sliderfield_validate_number',
    ),
    '#title' => $element['#input_title'],
    '#default_value' => $value,
    '#disabled' => $element['#disabled'],
    '#size' => $element['#size'],
    '#attributes' => array(
      'class' => array(
        'sliderfield-value-field',
      ),
    ),
  );

  //Only show title for input fields when there is more than one value
  if (is_null($value2)) {
    $element['value']['#title'] = NULL;
  }

  #--(Begin)--> For Ajax compatibility
  if (isset($element['#ajax'])) {
    $ajax = @$element['#ajax'];
    if (!isset($ajax['trigger_as']) && isset($element['#name'])) {
      $value = NULL;
      $ajax['trigger_as'] = array(
        'name' => $element['#name'],
        'value' => $value,
      );
    }
    if (!isset($ajax['event'])) {
      $ajax['event'] = 'change';
    }

    // Generate input for slider
    $element['value']['#ajax'] = $ajax;
  }

  #--(End)--> For Ajax compatibility
  if (!is_null($value2)) {
    if (!is_null($value2) && $value2 !== '') {
      if ($value2 < $element['#min']) {
        $value2 = $element['#min'];
      }
      if ($value2 > $element['#max']) {
        $value2 = $element['#max'];
      }
    }
    if ($value2 < $value) {
      $value2 = $value;
    }
    $values[] = $value2;
    $element['value2'] = array(
      '#type' => 'textfield',
      '#default_value' => $value2,
      '#required' => $element['#required'],
      '#title' => $element['#input2_title'],
      '#element_validate' => array(
        'sliderfield_validate_number',
      ),
      '#disabled' => $element['#disabled'],
      '#size' => $element['#size'],
      '#attributes' => array(
        'class' => array(
          'sliderfield-value2-field',
        ),
      ),
    );
  }
  if ($element['#range'] === TRUE && (!isset($value2) || is_null($value2))) {
    $element['#range'] = FALSE;
  }
  if ($element['#display_values']) {
    foreach ($values as $key => $value) {
      $values[$key] = str_replace('%{value}%', $value, $element['#display_values_format']);
    }
    $element['values_text'] = array(
      '#markup' => '<div class="sliderfield-display-values-field">' . htmlentities(implode(' - ', $values)) . '</div>',
    );
  }
  $style = NULL;
  if (!is_null($element['#slider_length'])) {
    if ($element['#orientation'] == 'horizontal') {
      $style = "width : {$element['#slider_length']}";
    }
    else {
      $style = "height : {$element['#slider_length']}";
    }
  }
  if ($element['#hide_slider_handle_when_no_value'] && !empty($element['#no_value_text'])) {
    $element['note'] = array(
      '#type' => 'markup',
      '#markup' => '<div class="sliderfield-selectvalue-description">' . t($element['#no_value_text']) . '</div>',
    );
  }
  $_attributes_new = array(
    'class' => array(
      'sliderfield-container',
      $element['#slider_style'],
    ),
    'style' => $style,
  );
  if (isset($element['#attributes']) && is_array($element['#attributes'])) {
    $_attributes_new = drupal_array_merge_deep($_attributes_new, $element['#attributes']);
  }

  // Create markup for slider container
  $element['container'] = array(
    '#type' => 'container',
    '#attributes' => $_attributes_new,
    '#attached' => array(
      'library' => array(
        array(
          'system',
          'ui.slider',
        ),
      ),
      'js' => array(
        drupal_get_path('module', 'sliderfield') . '/sliderfield_element_sliderfield.js',
        array(
          'data' => array(
            'sliderfield_' . $element['#id'] => array(
              'animate' => $element['#animate'],
              'adjust_field_min_css_selector' => $element['#adjust_field_min'],
              'adjust_field_max_css_selector' => $element['#adjust_field_max'],
              'disabled' => $element['#disabled'],
              'max' => $element['#max'] * 1,
              'min' => $element['#min'] * 1,
              'orientation' => $element['#orientation'],
              'range' => $element['#range'],
              'step' => $element['#step'] * 1,
              'display_inputs' => $element['#display_inputs'],
              'display_values_format' => $element['#display_values_format'],
              'display_bubble' => $element['#display_bubble'],
              'display_bubble' => $element['#display_bubble'],
              'display_bubble_format' => $element['#display_bubble_format'],
              'display_values' => $element['#display_values'],
              'group' => $element['#group'],
              'group_type' => $element['#group_type'],
              'group_master' => $element['#group_master'],
              'fields_to_sync_css_selector' => $element['#fields_to_sync_css_selector'],
              'display_ignore_button' => $element['#display_ignore_button'],
              'hide_slider_handle_when_no_value' => $element['#hide_slider_handle_when_no_value'],
              'no_value_text_auto_hide' => $element['#no_value_text_auto_hide'],
              'no_value_first_select_slider_effect' => $element['#no_value_first_select_slider_effect'],
              'no_value_text' => $element['#no_value_text'],
            ),
          ),
          'type' => 'setting',
        ),
      ),
      'css' => array(
        array(
          'data' => drupal_get_path('module', 'sliderfield') . '/sliderfield_element_sliderfield.css',
          'type' => 'file',
          //'group' => CSS_SYSTEM,
          'weight' => 2000,
        ),
      ),
    ),
    '#markup' => '',
    '#suffix' => '</div>',
  );
  if ($element['#title2']) {
    $element['title2'] = array(
      '#type' => 'item',
      '#markup' => '<label>' . $element['#title2'] . '</label>',
    );
  }

  // Generate input for sliders with adjustable min/max
  if (!empty($element['#adjust_field_min'])) {
    $element['container']['min_value'] = array(
      '#tree' => TRUE,
      '#type' => 'hidden',
      '#default_value' => $element['#min'],
      '#attributes' => array(
        'class' => array(
          'sliderfield-min-value-field',
        ),
      ),
    );
  }
  if (!empty($element['#adjust_field_max'])) {
    $element['container']['max_value'] = array(
      '#tree' => TRUE,
      '#type' => 'hidden',
      '#default_value' => $element['#max'],
      '#attributes' => array(
        'class' => array(
          'sliderfield-max-value-field',
        ),
      ),
    );
  }

  //$element = ajax_pre_render_element($element);

  //dpm($element);
  return $element;
}