123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191 |
- <?php
- namespace Drupal\Core\Menu;
- use Drupal\Component\Plugin\Exception\PluginException;
- use Drupal\Core\Cache\Cache;
- use Drupal\Core\Plugin\PluginBase;
- use Drupal\Core\Url;
- /**
- * Defines a base menu link class.
- */
- abstract class MenuLinkBase extends PluginBase implements MenuLinkInterface {
- /**
- * The list of definition values where an override is allowed.
- *
- * The keys are definition names. The values are ignored.
- *
- * @var array
- */
- protected $overrideAllowed = [];
- /**
- * {@inheritdoc}
- */
- public function getWeight() {
- // By default the weight is 0.
- if (!isset($this->pluginDefinition['weight'])) {
- $this->pluginDefinition['weight'] = 0;
- }
- return $this->pluginDefinition['weight'];
- }
- /**
- * {@inheritdoc}
- */
- public function getMenuName() {
- return $this->pluginDefinition['menu_name'];
- }
- /**
- * {@inheritdoc}
- */
- public function getProvider() {
- return $this->pluginDefinition['provider'];
- }
- /**
- * {@inheritdoc}
- */
- public function getParent() {
- return $this->pluginDefinition['parent'];
- }
- /**
- * {@inheritdoc}
- */
- public function isEnabled() {
- return (bool) $this->pluginDefinition['enabled'];
- }
- /**
- * {@inheritdoc}
- */
- public function isExpanded() {
- return (bool) $this->pluginDefinition['expanded'];
- }
- /**
- * {@inheritdoc}
- */
- public function isResettable() {
- return FALSE;
- }
- /**
- * {@inheritdoc}
- */
- public function isTranslatable() {
- return (bool) $this->getTranslateRoute();
- }
- /**
- * {@inheritdoc}
- */
- public function isDeletable() {
- return (bool) $this->getDeleteRoute();
- }
- /**
- * {@inheritdoc}
- */
- public function getOptions() {
- return $this->pluginDefinition['options'] ?: [];
- }
- /**
- * {@inheritdoc}
- */
- public function getMetaData() {
- return $this->pluginDefinition['metadata'] ?: [];
- }
- /**
- * {@inheritdoc}
- */
- public function getRouteName() {
- return isset($this->pluginDefinition['route_name']) ? $this->pluginDefinition['route_name'] : '';
- }
- /**
- * {@inheritdoc}
- */
- public function getRouteParameters() {
- return isset($this->pluginDefinition['route_parameters']) ? $this->pluginDefinition['route_parameters'] : [];
- }
- /**
- * {@inheritdoc}
- */
- public function getUrlObject($title_attribute = TRUE) {
- $options = $this->getOptions();
- if ($title_attribute && $description = $this->getDescription()) {
- $options['attributes']['title'] = $description;
- }
- if (empty($this->pluginDefinition['url'])) {
- return new Url($this->getRouteName(), $this->getRouteParameters(), $options);
- }
- else {
- return Url::fromUri($this->pluginDefinition['url'], $options);
- }
- }
- /**
- * {@inheritdoc}
- */
- public function getFormClass() {
- return $this->pluginDefinition['form_class'];
- }
- /**
- * {@inheritdoc}
- */
- public function getDeleteRoute() {
- return NULL;
- }
- /**
- * {@inheritdoc}
- */
- public function getEditRoute() {
- return NULL;
- }
- /**
- * {@inheritdoc}
- */
- public function getTranslateRoute() {
- return NULL;
- }
- /**
- * {@inheritdoc}
- */
- public function deleteLink() {
- throw new PluginException("Menu link plugin with ID '{$this->getPluginId()}' does not support deletion");
- }
- /**
- * {@inheritdoc}
- */
- public function getCacheMaxAge() {
- return Cache::PERMANENT;
- }
- /**
- * {@inheritdoc}
- */
- public function getCacheContexts() {
- return [];
- }
- /**
- * {@inheritdoc}
- */
- public function getCacheTags() {
- return [];
- }
- }
|