You are here

function theme_date_facets_tabledrag_form in Date Facets 7

Add a tabledrag table for date ranges on the given date facet.

File

./date_facets.module, line 146
Provides date range facets that are similar to implementations in major search engines.

Code

function theme_date_facets_tabledrag_form($variables) {
  $form = $variables['form'];
  if (is_array($form['widget']['widget_settings']['ranges'])) {
    $header = array(
      array(
        'data' => t('Name !required', array(
          '!required' => '<span class="form-required" title="' . t('This field is required.') . '">*</span>',
        )),
      ),
      array(
        'data' => t('Date Range !required', array(
          '!required' => '<span class="form-required" title="' . t('This field is required.') . '">*</span>',
        )),
        'colspan' => 2,
      ),
      array(
        'data' => t('Weight'),
      ),
      array(
        'data' => t('Delete'),
      ),
    );
    drupal_add_tabledrag('facetapi-date-range-query-date-ranges', 'order', 'self', 'date-range-weight');
    $rows = array();
    foreach (element_children($form['widget']['widget_settings']['ranges']) as $range_key) {
      $row = array();

      // We remove the #titles from each of the fields because the titles are
      // already in the table's header row.
      unset($form['widget']['widget_settings']['ranges'][$range_key]['label']['#title']);

      // We want the label and machine name fields in the same cell.
      $row[] = drupal_render($form['widget']['widget_settings']['ranges'][$range_key]['label']) . drupal_render($form['widget']['widget_settings']['ranges'][$range_key]['machine_name']);
      foreach (array(
        'date_range_start',
        'date_range_end',
      ) as $element) {
        $temp_row = '';

        // We want the op, amount, and unit fields in the same cell for both
        // start and end date ranges.
        foreach (array(
          'op',
          'amount',
          'unit',
        ) as $item) {
          unset($form['widget']['widget_settings']['ranges'][$range_key][$element . '_' . $item]['#title']);
          $temp_row .= drupal_render($form['widget']['widget_settings']['ranges'][$range_key][$element . '_' . $item]);
        }
        $row[] = $temp_row;
      }

      // Add the weight and delete checkbox fields.
      foreach (array(
        'weight',
        'delete',
      ) as $element) {
        unset($form['widget']['widget_settings']['ranges'][$range_key][$element]['#title']);
        $row[] = drupal_render($form['widget']['widget_settings']['ranges'][$range_key][$element]);
      }
      $rows[] = array(
        'data' => $row,
        'class' => array(
          'draggable',
        ),
      );
    }
    $output = theme('table', array(
      'header' => $header,
      'rows' => $rows,
      'attributes' => array(
        'id' => 'facetapi-date-range-query-date-ranges',
      ),
    ));
    $form['widget']['widget_settings']['date_ranges']['ranges'] = array(
      '#type' => 'markup',
      '#markup' => $output,
      '#weight' => 0,
    );
  }
  return drupal_render_children($form);
}