ViewUI::addFormToStack

public ViewUI::addFormToStack($key, $display_id, $type, $id = NULL, $top = FALSE, $rebuild_keys = FALSE)

Add another form to the stack; clicking 'apply' will go to this form rather than closing the ajax popup.

File

core/modules/views_ui/src/ViewUI.php, line 379

Class

ViewUI
Stores UI related temporary settings.

Namespace

Drupal\views_ui

Code

public function addFormToStack($key, $display_id, $type, $id = NULL, $top = FALSE, $rebuild_keys = FALSE) {
  // Reset the cache of IDs. Drupal rather aggressively prevents ID
  // duplication but this causes it to remember IDs that are no longer even
  // being used.
  Html::resetSeenIds();

  if (empty($this->stack)) {
    $this->stack = array();
  }

  $stack = array(implode('-', array_filter(array($key, $this->id(), $display_id, $type, $id))), $key, $display_id, $type, $id);
  // If we're being asked to add this form to the bottom of the stack, no
  // special logic is required. Our work is equally easy if we were asked to add
  // to the top of the stack, but there's nothing in it yet.
  if (!$top || empty($this->stack)) {
    $this->stack[] = $stack;
  }
  // If we're adding to the top of an existing stack, we have to maintain the
  // existing integer keys, so they can be used for the "2 of 3" progress
  // indicator (which will now read "2 of 4").
  else {
    $keys = array_keys($this->stack);
    $first = current($keys);
    $last = end($keys);
    for ($i = $last; $i >= $first; $i--) {
      if (!isset($this->stack[$i])) {
        continue;
      }
      // Move form number $i to the next position in the stack.
      $this->stack[$i + 1] = $this->stack[$i];
      unset($this->stack[$i]);
    }
    // Now that the previously $first slot is free, move the new form into it.
    $this->stack[$first] = $stack;
    ksort($this->stack);

    // Start the keys from 0 again, if requested.
    if ($rebuild_keys) {
      $this->stack = array_values($this->stack);
    }
  }
}
doc_Drupal
2016-10-29 09:55:52
Comments
Leave a Comment

Please login to continue.