You are here

function views_fieldsets_rearrange_form_submit in Views fieldsets 7.2

Same name and namespace in other branches
  1. 7 views_fieldsets.module \views_fieldsets_rearrange_form_submit()

Submit handler for views_ui_rearrange_form().

1 string reference to 'views_fieldsets_rearrange_form_submit'
views_fieldsets_form_views_ui_rearrange_form_alter in ./views_fieldsets.module
Implements hook_form_FORM_ID_alter() for views_ui_rearrange_form().

File

./views_fieldsets.module, line 567
Hooks, helpers and theming for the Views Fieldsets module.

Code

function views_fieldsets_rearrange_form_submit($form, &$form_state) {
  $values =& $form_state['values'];
  $view = $form_state['view'];
  $display_handler = $view->display_handler;
  $fields = $display_handler
    ->get_option('fields');

  // Sort input by (hierarchical) weight.
  uasort($values, 'drupal_sort_weight');

  // Create simple hierarchy (field => parent) from sorted input.
  $fieldsets = array();
  foreach ($values as $field_name => $stuff) {
    if (isset($fields[$field_name])) {
      $fieldsets[$field_name] = $stuff['hierarchy'];
    }
  }

  // Create advanced hierarchy from sorted simple hierarchy.
  $fieldsets = views_fieldsets_hierarchy_info($display_handler, $fieldsets);

  // Sort fields the Views way (no indentations/parents/relationships).
  // Why? For Views' actual submit handler (which is the one after this one).
  foreach ($fieldsets['total_weights'] as $weight => $field_name) {
    $values[$field_name]['weight'] = $weight;
  }

  // Create simple hierarchy from new sort (sorted the Views way, with parents).
  foreach ($fieldsets['fields'] as $field_name => $field) {

    // $hierarchy[$field_name] = $fields[$field_name]['views_fieldsets_parent'] = $field->info->parent;
    // And create hierarchy per Views Fieldset field.
    if (views_fieldsets_field_is_fieldset($field_name, $display_handler)) {
      $fields[$field_name]['children'] = !empty($field->children) ? array_keys($field->children) : array();
    }
  }
  $display_handler
    ->set_option('fields', $fields);
}