setConfiguration($configuration); $this->eventDispatcher = $event_dispatcher; $this->uuidGenerator = $uuid_generator; $this->selectionStorage = $selection_storage; } /** * {@inheritdoc} */ public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition) { return new static( $configuration, $plugin_id, $plugin_definition, $container->get('event_dispatcher'), $container->get('uuid'), $container->get('entity_browser.selection_storage') ); } /** * {@inheritdoc} */ public function defaultConfiguration() { return []; } /** * {@inheritdoc} */ public function getConfiguration() { return array_diff_key( $this->configuration, ['entity_browser_id' => 0] ); } /** * {@inheritdoc} */ public function setConfiguration(array $configuration) { $this->configuration = NestedArray::mergeDeep( $this->defaultConfiguration(), $configuration ); } /** * {@inheritdoc} */ public function calculateDependencies() { return []; } /** * {@inheritdoc} */ public function label() { return $this->label; } /** * {@inheritdoc} */ public function getUuid() { if (empty($this->uuid)) { $this->uuid = $this->uuidGenerator->generate(); } return $this->uuid; } /** * {@inheritdoc} */ public function setUuid($uuid) { $this->uuid = $uuid; } /** * {@inheritdoc} */ public function displayEntityBrowser(array $element, FormStateInterface $form_state, array &$complete_form, array $persistent_data = []) { // Store persistent data so that after being rendered widgets can still // have access to contextual information. $this->selectionStorage->setWithExpire( $this->getUuid(), $persistent_data, Settings::get('entity_browser_expire', 21600) ); } /** * {@inheritdoc} */ public function selectionCompleted(array $entities) { $this->entities = $entities; $this->eventDispatcher->addListener(KernelEvents::RESPONSE, [$this, 'propagateSelection']); } }