Chris@0: storage->get('display')); Chris@0: Chris@0: $this->view = $view; Chris@0: $this->initializePlugin('default'); Chris@0: } Chris@0: Chris@0: /** Chris@0: * Destructs a DisplayPluginCollection object. Chris@0: */ Chris@0: public function __destruct() { Chris@0: $this->clear(); Chris@0: } Chris@0: Chris@0: /** Chris@0: * {@inheritdoc} Chris@0: * Chris@0: * @return \Drupal\views\Plugin\views\display\DisplayPluginBase Chris@0: */ Chris@0: public function &get($instance_id) { Chris@0: return parent::get($instance_id); Chris@0: } Chris@0: Chris@0: /** Chris@0: * {@inheritdoc} Chris@0: */ Chris@0: public function clear() { Chris@0: foreach (array_filter($this->pluginInstances) as $display) { Chris@0: $display->destroy(); Chris@0: } Chris@0: Chris@0: parent::clear(); Chris@0: } Chris@0: Chris@0: /** Chris@0: * {@inheritdoc} Chris@0: */ Chris@0: protected function initializePlugin($display_id) { Chris@0: // Retrieve and initialize the new display handler with data. Chris@0: $display = &$this->view->storage->getDisplay($display_id); Chris@0: Chris@0: try { Chris@0: $this->configurations[$display_id] = $display; Chris@0: parent::initializePlugin($display_id); Chris@0: } Chris@0: // Catch any plugin exceptions that are thrown. So we can fail nicely if a Chris@0: // display plugin isn't found. Chris@0: catch (PluginException $e) { Chris@0: $message = $e->getMessage(); Chris@17: \Drupal::messenger()->addWarning(t('@message', ['@message' => $message])); Chris@0: } Chris@0: Chris@0: // If no plugin instance has been created, return NULL. Chris@0: if (empty($this->pluginInstances[$display_id])) { Chris@0: return NULL; Chris@0: } Chris@0: Chris@0: $this->pluginInstances[$display_id]->initDisplay($this->view, $display); Chris@0: // If this is not the default display handler, let it know which is since Chris@0: // it may well use some data from the default. Chris@0: if ($display_id != 'default') { Chris@0: $this->pluginInstances[$display_id]->default_display = $this->pluginInstances['default']; Chris@0: } Chris@0: } Chris@0: Chris@0: /** Chris@0: * {@inheritdoc} Chris@0: */ Chris@0: public function remove($instance_id) { Chris@0: $this->get($instance_id)->remove(); Chris@0: Chris@0: parent::remove($instance_id); Chris@0: } Chris@0: Chris@0: }