You are here

function draggableviews_view_draggabletable_form_submit in DraggableViews 6.3

Same name and namespace in other branches
  1. 6 draggableviews.inc \draggableviews_view_draggabletable_form_submit()
  2. 6.2 draggableviews.inc \draggableviews_view_draggabletable_form_submit()
  3. 7 draggableviews.module \draggableviews_view_draggabletable_form_submit()

Implementing hook_submit

1 string reference to 'draggableviews_view_draggabletable_form_submit'
draggableviews_view_draggabletable_form in ./draggableviews.module
Build the form

File

./draggableviews.module, line 364
Draggableviews module provides a style plugin for views. With this plugin rows become draggable and can be organized in complex structures.

Code

function draggableviews_view_draggabletable_form_submit($vars) {

  // Check permissions.
  if (!user_access('Allow Reordering')) {
    drupal_set_message(t('You are not allowed to reorder nodes.'), 'error');
    return;
  }

  // Gather all needed information.
  $view = $vars['#parameters'][2]->view;
  $results = $view->result;
  $input = $vars['submit']['#post'];
  $info = $view->draggableviews_info;
  if (!isset($info['order'])) {
    return;
  }

  // Check if structure is locked.
  if (!empty($info['locked'])) {
    drupal_set_message(t('The structure is locked.'), 'error');
    return;
  }

  // Loop through all resulting nodes.
  foreach ($results as $row) {

    // set order values
    if (isset($info['order']['field'])) {

      // The input array must have the same structure as the node array.
      // E.g. because of _draggableviews_get_hierarchy_depth(..).
      $info['input'][$row->{$view->base_field}]['order'][0] = $input[$info['order']['field']['field_name'] . '_' . $row->{$view->base_field}];
    }

    // Set parent values.
    if (isset($info['hierarchy'])) {
      $info['input'][$row->{$view->base_field}]['parent'] = $input[$info['hierarchy']['field']['field_name'] . '_' . $row->{$view->base_field}];
    }
  }
  _draggableviews_build_hierarchy($info);
  _draggableviews_save_hierarchy($info);
  if (isset($info['hierarchy'])) {

    // save expanded/collapsed states.
    global $user;
    $uid = $info['expand_links']['by_uid'] ? $user->uid : 0;
    foreach ($vars['submit']['#post'] as $key => $val) {
      if (strpos('draggableviews_collapsed_', $key) !== FALSE) {
        $parent_nid = drupal_substr($key, 25);
        db_query("DELETE FROM {draggableviews_collapsed}\n                  WHERE uid=%d AND parent_nid=%d AND view_name='%s'", $uid, $parent_nid, $view->name);
        db_query("INSERT INTO {draggableviews_collapsed}\n                  (uid, view_name, parent_nid, collapsed) VALUES (%d, '%s', %d, %d)", $uid, $view->name, $parent_nid, $val);
      }
    }
  }
}