Newer
Older
<?php
namespace Drupal\menu_ui\Form;
catch
committed
use Drupal\Core\Access\AccessResult;
Dries Buytaert
committed
use Drupal\Core\Form\FormStateInterface;
Angie Byron
committed
use Drupal\Core\Url;
use Drupal\Core\Form\ConfirmFormBase;
use Drupal\Core\Menu\MenuLinkManagerInterface;
use Drupal\Core\Menu\MenuLinkInterface;
use Symfony\Component\DependencyInjection\ContainerInterface;
/**
* Defines a confirmation form for resetting a single modified menu link.
*
* @internal
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
class MenuLinkResetForm extends ConfirmFormBase {
/**
* The menu link manager.
*
* @var \Drupal\Core\Menu\MenuLinkManagerInterface
*/
protected $menuLinkManager;
/**
* The menu link.
*
* @var \Drupal\Core\Menu\MenuLinkInterface
*/
protected $link;
/**
* Constructs a MenuLinkResetForm object.
*
* @param \Drupal\Core\Menu\MenuLinkManagerInterface $menu_link_manager
* The menu link manager.
*/
public function __construct(MenuLinkManagerInterface $menu_link_manager) {
$this->menuLinkManager = $menu_link_manager;
}
/**
* {@inheritdoc}
*/
public static function create(ContainerInterface $container) {
return new static(
$container->get('plugin.manager.menu.link')
);
}
/**
* {@inheritdoc}
*/
public function getFormId() {
return 'menu_link_reset_confirm';
}
/**
* {@inheritdoc}
*/
public function getQuestion() {
return $this->t('Are you sure you want to reset the link %item to its default values?', ['%item' => $this->link->getTitle()]);
}
/**
* {@inheritdoc}
*/
public function getCancelUrl() {
return new Url('entity.menu.edit_form', [
'menu' => $this->link->getMenuName(),
]);
}
/**
* {@inheritdoc}
*/
public function getDescription() {
return $this->t('Any customizations will be lost. This action cannot be undone.');
}
/**
* {@inheritdoc}
*/
public function getConfirmText() {
return $this->t('Reset');
}
/**
* {@inheritdoc}
*/
Dries Buytaert
committed
public function buildForm(array $form, FormStateInterface $form_state, MenuLinkInterface $menu_link_plugin = NULL) {
$this->link = $menu_link_plugin;
$form = parent::buildForm($form, $form_state);
return $form;
}
/**
* {@inheritdoc}
*/
Dries Buytaert
committed
public function submitForm(array &$form, FormStateInterface $form_state) {
$this->link = $this->menuLinkManager->resetLink($this->link->getPluginId());
drupal_set_message($this->t('The menu link was reset to its default settings.'));
Alex Pott
committed
$form_state->setRedirectUrl($this->getCancelUrl());
/**
* Checks access based on whether the link can be reset.
*
* @param \Drupal\Core\Menu\MenuLinkInterface $menu_link_plugin
* The menu link plugin being checked.
*
catch
committed
* @return \Drupal\Core\Access\AccessResultInterface
* The access result.
*/
public function linkIsResettable(MenuLinkInterface $menu_link_plugin) {
Alex Pott
committed
return AccessResult::allowedIf($menu_link_plugin->isResettable())->setCacheMaxAge(0);
}