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(); | |
} | |
} | |
} |