You are here

protected function views_merge_rows_plugin_display_extender::views_merge_rows_options_form in Views Merge Rows 7

Provide a form to edit options for this plugin.

1 call to views_merge_rows_plugin_display_extender::views_merge_rows_options_form()
views_merge_rows_plugin_display_extender::options_form in ./views_merge_rows_plugin_display_extender.inc
Provide the form to set the rows merge options.

File

./views_merge_rows_plugin_display_extender.inc, line 65
Contains the class to extend views display with rows merge functionality.

Class

views_merge_rows_plugin_display_extender
The plugin that merges rows with the same content in the specified fields.

Code

protected function views_merge_rows_options_form(&$form, &$form_state) {
  $options = $this
    ->get_options();
  if ($this->display->display->handler
    ->use_pager()) {
    $form['warning_markup'] = array(
      '#markup' => '<div class="warning messages">' . t('It is highly recommended to disable pager if you merge rows.') . '</div>',
    );
  }
  $form['#tree'] = TRUE;
  $form['#theme'] = 'views_merge_rows_display_extender_plugin_table';
  $form['#title'] .= t('Merge rows with the same content.');
  $form['merge_rows'] = array(
    '#type' => 'checkbox',
    '#title' => t('Merge rows with the same content in the specified fields'),
    '#default_value' => $options['merge_rows'],
  );

  // Create an array of allowed columns from the data we know:
  $field_names = $this->display->display->handler
    ->get_field_labels();
  foreach ($field_names as $field => $name) {
    $safe = str_replace(array(
      '][',
      '_',
      ' ',
    ), '-', $field);

    // Markup for the field name.
    $form['field_config'][$field]['name'] = array(
      '#markup' => $name,
    );

    // Select for merge options.
    $form['field_config'][$field]['merge_option'] = array(
      '#type' => 'select',
      '#options' => array(
        'merge_unique' => t('Merge unique values of this field'),
        'merge' => t('Merge values of this field'),
        'filter' => t('Use values of this field as a filter'),
        'first_value' => t('Use the first value of this field'),
        'count' => t('Count merged values of this field'),
        'count_unique' => t('Count merged unique values of this field'),
      ),
      '#default_value' => $options['field_config'][$field]['merge_option'],
    );
    $form['field_config'][$field]['separator'] = array(
      '#id' => 'views-merge-rows-separator',
      '#title' => t('Separator:'),
      '#type' => 'textfield',
      '#size' => 10,
      '#default_value' => $options['field_config'][$field]['separator'],
      '#dependency' => array(
        'edit-options-field-config-' . $safe . '-merge-option' => array(
          'merge',
          'merge_unique',
        ),
      ),
    );
  }
}