Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
| Total | |
0.00% |
0 / 1 |
|
0.00% |
0 / 6 |
CRAP | |
0.00% |
0 / 48 |
| MenuLinkContentForm | |
0.00% |
0 / 1 |
|
0.00% |
0 / 6 |
72 | |
0.00% |
0 / 48 |
| __construct | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 4 |
|||
| create | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 7 |
|||
| form | |
0.00% |
0 / 1 |
6 | |
0.00% |
0 / 10 |
|||
| actions | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 5 |
|||
| buildEntity | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 8 |
|||
| save | |
0.00% |
0 / 1 |
6 | |
0.00% |
0 / 14 |
|||
| <?php | |
| /** | |
| * @file | |
| * Contains \Drupal\menu_link_content\Form\MenuLinkContentForm. | |
| */ | |
| namespace Drupal\menu_link_content\Form; | |
| use Drupal\Core\Entity\ContentEntityForm; | |
| use Drupal\Core\Entity\EntityManagerInterface; | |
| use Drupal\Core\Form\FormStateInterface; | |
| use Drupal\Core\Language\LanguageManagerInterface; | |
| use Drupal\Core\Menu\MenuParentFormSelectorInterface; | |
| use Drupal\Core\Path\PathValidatorInterface; | |
| use Symfony\Component\DependencyInjection\ContainerInterface; | |
| /** | |
| * Provides a form to add/update content menu links. | |
| */ | |
| class MenuLinkContentForm extends ContentEntityForm { | |
| /** | |
| * The content menu link. | |
| * | |
| * @var \Drupal\menu_link_content\MenuLinkContentInterface | |
| */ | |
| protected $entity; | |
| /** | |
| * The parent form selector service. | |
| * | |
| * @var \Drupal\Core\Menu\MenuParentFormSelectorInterface | |
| */ | |
| protected $menuParentSelector; | |
| /** | |
| * The path validator. | |
| * | |
| * @var \Drupal\Core\Path\PathValidatorInterface | |
| */ | |
| protected $pathValidator; | |
| /** | |
| * Constructs a MenuLinkContentForm object. | |
| * | |
| * @param \Drupal\Core\Entity\EntityManagerInterface $entity_manager | |
| * The entity manager. | |
| * @param \Drupal\Core\Menu\MenuParentFormSelectorInterface $menu_parent_selector | |
| * The menu parent form selector service. | |
| * @param \Drupal\Core\Language\LanguageManagerInterface $language_manager | |
| * The language manager. | |
| * @param \Drupal\Core\Path\PathValidatorInterface $path_validator | |
| * The path validator. | |
| */ | |
| public function __construct(EntityManagerInterface $entity_manager, MenuParentFormSelectorInterface $menu_parent_selector, LanguageManagerInterface $language_manager, PathValidatorInterface $path_validator) { | |
| parent::__construct($entity_manager, $language_manager); | |
| $this->menuParentSelector = $menu_parent_selector; | |
| $this->pathValidator = $path_validator; | |
| } | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public static function create(ContainerInterface $container) { | |
| return new static( | |
| $container->get('entity.manager'), | |
| $container->get('menu.parent_form_selector'), | |
| $container->get('language_manager'), | |
| $container->get('path.validator') | |
| ); | |
| } | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public function form(array $form, FormStateInterface $form_state) { | |
| $form = parent::form($form, $form_state); | |
| $default = $this->entity->getMenuName() . ':' . $this->entity->getParentId(); | |
| $id = $this->entity->isNew() ? '' : $this->entity->getPluginId(); | |
| $form['menu_parent'] = $this->menuParentSelector->parentSelectElement($default, $id); | |
| $form['menu_parent']['#weight'] = 10; | |
| $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'; | |
| return $form; | |
| } | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| protected function actions(array $form, FormStateInterface $form_state) { | |
| $element = parent::actions($form, $form_state); | |
| $element['submit']['#button_type'] = 'primary'; | |
| $element['delete']['#access'] = $this->entity->access('delete'); | |
| return $element; | |
| } | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public function buildEntity(array $form, FormStateInterface $form_state) { | |
| /** @var \Drupal\menu_link_content\MenuLinkContentInterface $entity */ | |
| $entity = parent::buildEntity($form, $form_state); | |
| list($menu_name, $parent) = explode(':', $form_state->getValue('menu_parent'), 2); | |
| $entity->parent->value = $parent; | |
| $entity->menu_name->value = $menu_name; | |
| $entity->enabled->value = (!$form_state->isValueEmpty(array('enabled', 'value'))); | |
| $entity->expanded->value = (!$form_state->isValueEmpty(array('expanded', 'value'))); | |
| return $entity; | |
| } | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public function save(array $form, FormStateInterface $form_state) { | |
| // The entity is rebuilt in parent::submit(). | |
| $menu_link = $this->entity; | |
| $saved = $menu_link->save(); | |
| if ($saved) { | |
| drupal_set_message($this->t('The menu link has been saved.')); | |
| $form_state->setRedirect( | |
| 'entity.menu_link_content.canonical', | |
| array('menu_link_content' => $menu_link->id()) | |
| ); | |
| } | |
| else { | |
| drupal_set_message($this->t('There was an error saving the menu link.'), 'error'); | |
| $form_state->setRebuild(); | |
| } | |
| } | |
| } |