Chris@0: 1, Chris@0: 'parent' => 1, Chris@0: 'weight' => 1, Chris@0: 'expanded' => 1, Chris@0: 'enabled' => 1, Chris@0: ]; Chris@0: Chris@0: /** Chris@0: * The static menu link service used to store updates to weight/parent etc. Chris@0: * Chris@0: * @var \Drupal\Core\Menu\StaticMenuLinkOverridesInterface Chris@0: */ Chris@0: protected $staticOverride; Chris@0: Chris@0: /** Chris@0: * Constructs a new MenuLinkDefault. Chris@0: * Chris@0: * @param array $configuration Chris@0: * A configuration array containing information about the plugin instance. Chris@0: * @param string $plugin_id Chris@0: * The plugin_id for the plugin instance. Chris@0: * @param mixed $plugin_definition Chris@0: * The plugin implementation definition. Chris@0: * @param \Drupal\Core\Menu\StaticMenuLinkOverridesInterface $static_override Chris@0: * The static override storage. Chris@0: */ Chris@0: public function __construct(array $configuration, $plugin_id, $plugin_definition, StaticMenuLinkOverridesInterface $static_override) { Chris@0: parent::__construct($configuration, $plugin_id, $plugin_definition); Chris@0: Chris@0: $this->staticOverride = $static_override; Chris@0: } Chris@0: Chris@0: /** Chris@0: * {@inheritdoc} Chris@0: */ Chris@0: public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition) { Chris@0: return new static( Chris@0: $configuration, Chris@0: $plugin_id, Chris@0: $plugin_definition, Chris@0: $container->get('menu_link.static.overrides') Chris@0: ); Chris@0: } Chris@0: Chris@0: /** Chris@0: * {@inheritdoc} Chris@0: */ Chris@0: public function getTitle() { Chris@0: return (string) $this->pluginDefinition['title']; Chris@0: } Chris@0: Chris@0: /** Chris@0: * {@inheritdoc} Chris@0: */ Chris@0: public function getDescription() { Chris@0: return (string) $this->pluginDefinition['description']; Chris@0: } Chris@0: Chris@0: /** Chris@0: * {@inheritdoc} Chris@0: */ Chris@0: public function isResettable() { Chris@0: // The link can be reset if it has an override. Chris@0: return (bool) $this->staticOverride->loadOverride($this->getPluginId()); Chris@0: } Chris@0: Chris@0: /** Chris@0: * {@inheritdoc} Chris@0: */ Chris@0: public function updateLink(array $new_definition_values, $persist) { Chris@0: // Filter the list of updates to only those that are allowed. Chris@0: $overrides = array_intersect_key($new_definition_values, $this->overrideAllowed); Chris@0: // Update the definition. Chris@0: $this->pluginDefinition = $overrides + $this->getPluginDefinition(); Chris@0: if ($persist) { Chris@0: // Always save the menu name as an override to avoid defaulting to tools. Chris@0: $overrides['menu_name'] = $this->pluginDefinition['menu_name']; Chris@0: $this->staticOverride->saveOverride($this->getPluginId(), $this->pluginDefinition); Chris@0: } Chris@0: return $this->pluginDefinition; Chris@0: } Chris@0: Chris@0: }