/**
  * {@inheritdoc}
  */
 public function buildConfigurationForm(array $form, FormStateInterface $form_state)
 {
     $form['#title'] = $this->t('Edit menu link %title', array('%title' => $this->menuLink->getTitle()));
     $provider = $this->menuLink->getProvider();
     $form['info'] = array('#type' => 'item', '#title' => $this->t('This link is provided by the @name module. The title and path cannot be edited.', array('@name' => $this->moduleHandler->getName($provider))));
     $link = array('#type' => 'link', '#title' => $this->menuLink->getTitle(), '#url' => $this->menuLink->getUrlObject());
     $form['path'] = array('link' => $link, '#type' => 'item', '#title' => $this->t('Link'));
     $form['enabled'] = array('#type' => 'checkbox', '#title' => $this->t('Enable menu link'), '#description' => $this->t('Menu links that are not enabled will not be listed in any menu.'), '#default_value' => $this->menuLink->isEnabled());
     $form['expanded'] = array('#type' => 'checkbox', '#title' => t('Show as expanded'), '#description' => $this->t('If selected and this menu link has children, the menu will always appear expanded.'), '#default_value' => $this->menuLink->isExpanded());
     $menu_parent = $this->menuLink->getMenuName() . ':' . $this->menuLink->getParent();
     $form['menu_parent'] = $this->menuParentSelector->parentSelectElement($menu_parent, $this->menuLink->getPluginId());
     $form['menu_parent']['#title'] = $this->t('Parent link');
     $form['menu_parent']['#description'] = $this->t('The maximum depth for a link and all its children is fixed. Some menu links may not be available as parents if selecting them would exceed this limit.');
     $form['menu_parent']['#attributes']['class'][] = 'menu-title-select';
     $delta = max(abs($this->menuLink->getWeight()), 50);
     $form['weight'] = array('#type' => 'number', '#min' => -$delta, '#max' => $delta, '#default_value' => $this->menuLink->getWeight(), '#title' => $this->t('Weight'), '#description' => $this->t('Link weight among links in the same menu at the same depth. In the menu, the links with high weight will sink and links with a low weight will be positioned nearer the top.'));
     return $form;
 }
 /**
  * Checks access for one menu link instance.
  *
  * @param \Drupal\Core\Menu\MenuLinkInterface $instance
  *   The menu link instance.
  *
  * @return \Drupal\Core\Access\AccessResultInterface
  *   The access result.
  */
 protected function menuLinkCheckAccess(MenuLinkInterface $instance)
 {
     $access_result = NULL;
     if ($this->account->hasPermission('link to any page')) {
         $access_result = AccessResult::allowed();
     } else {
         $url = $instance->getUrlObject();
         // When no route name is specified, this must be an external link.
         if (!$url->isRouted()) {
             $access_result = AccessResult::allowed();
         } else {
             $access_result = $this->accessManager->checkNamedRoute($url->getRouteName(), $url->getRouteParameters(), $this->account, TRUE);
         }
     }
     return $access_result->cachePerPermissions();
 }