You are here

function draggableviews_handler_fieldapi::options_form in DraggableViews 7.2

Add field options for handler.

Overrides draggableviews_handler::options_form

File

handlers/draggableviews_handler_fieldapi.inc, line 26

Class

draggableviews_handler_fieldapi

Code

function options_form($field) {
  $form = array();
  $options = array(
    '' => t('- Select -'),
  );

  // Check all the sortings added to a view.
  // TODO: Research a better way to do this.
  $sorts = isset($field->view->display_handler->display->display_options['sorts']) ? $field->view->display_handler->display->display_options['sorts'] : array();

  // If no sorts available for current display, use sorts from default display.
  if (empty($sorts)) {
    $sorts = isset($field->view->display['default']->display_options['sorts']) ? $field->view->display['default']->display_options['sorts'] : array();
  }
  foreach ($sorts as $sort_option) {
    $field_name = $sort_option['field'];

    // Field should be like "field_name_value".
    if (strpos($field_name, 'field_') === FALSE || strpos($field_name, '_value') === FALSE) {
      continue;
    }

    // Remove "_value" from field name and try to load the field.
    $field_name = drupal_substr($field_name, 0, drupal_strlen($field_name) - 6);
    if ($field_info = field_info_field($field_name)) {
      if ($field_info['type'] == 'number_integer' || $field_info['type'] == 'list_integer') {
        $views_field_data = field_views_field_default_views_data($field_info);
        $options[$sort_option['table'] . ':' . $sort_option['field']] = filter_xss($views_field_data[$sort_option['table']][$sort_option['field']]['title']);
      }
    }
  }

  // If options are empty, show warning message.
  // Count will allows be at least 1 because we add '- Select -'.
  if (count($options) == 1) {
    $form['field_warning'] = array(
      '#markup' => '<div class="messages warning">' . t('Add weight integer field to sorts so it can be selected.') . '</div>',
    );
  }
  $form['field'] = array(
    '#type' => 'select',
    '#title' => t('Field'),
    '#options' => $options,
    '#default_value' => $field->options['draggableviews']['draggableviews_handler_fieldapi']['field'],
    '#description' => t('Please select field that contains weight. It should be integer type and already added to sorts of the view.'),
  );
  return $form;
}