Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
Total | |
0.00% |
0 / 1 |
|
0.00% |
0 / 3 |
CRAP | |
0.00% |
0 / 25 |
ShortcutSetController | |
0.00% |
0 / 1 |
|
0.00% |
0 / 3 |
42 | |
0.00% |
0 / 25 |
__construct | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 2 |
|||
create | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 2 |
|||
addShortcutLinkInline | |
0.00% |
0 / 1 |
20 | |
0.00% |
0 / 21 |
<?php | |
/** | |
* @file | |
* Contains \Drupal\shortcut\Controller\ShortcutSetController. | |
*/ | |
namespace Drupal\shortcut\Controller; | |
use Drupal\Core\Controller\ControllerBase; | |
use Drupal\Core\Path\PathValidatorInterface; | |
use Drupal\shortcut\ShortcutSetInterface; | |
use Symfony\Component\DependencyInjection\ContainerInterface; | |
use Symfony\Component\HttpFoundation\Request; | |
use Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException; | |
/** | |
* Builds the page for administering shortcut sets. | |
*/ | |
class ShortcutSetController extends ControllerBase { | |
/** | |
* The path validator. | |
* | |
* @var \Drupal\Core\Path\PathValidatorInterface | |
*/ | |
protected $pathValidator; | |
/** | |
* Creates a new ShortcutSetController instance. | |
* | |
* @param \Drupal\Core\Path\PathValidatorInterface $path_validator | |
* The path validator. | |
*/ | |
public function __construct(PathValidatorInterface $path_validator) { | |
$this->pathValidator = $path_validator; | |
} | |
/** | |
* {@inheritdoc} | |
*/ | |
public static function create(ContainerInterface $container) { | |
return new static($container->get('path.validator')); | |
} | |
/** | |
* Creates a new link in the provided shortcut set. | |
* | |
* @param \Drupal\shortcut\ShortcutSetInterface $shortcut_set | |
* The shortcut set to add a link to. | |
* @param \Symfony\Component\HttpFoundation\Request $request | |
* The request object. | |
* | |
* @return \Symfony\Component\HttpFoundation\RedirectResponse | |
* A redirect response to the front page, or the previous location. | |
* | |
* @throws \Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException | |
*/ | |
public function addShortcutLinkInline(ShortcutSetInterface $shortcut_set, Request $request) { | |
$link = $request->query->get('link'); | |
$name = $request->query->get('name'); | |
if (parse_url($link, PHP_URL_SCHEME) === NULL && $this->pathValidator->isValid($link)) { | |
$shortcut = $this->entityManager()->getStorage('shortcut')->create(array( | |
'title' => $name, | |
'shortcut_set' => $shortcut_set->id(), | |
'link' => array( | |
'uri' => 'internal:/' . $link, | |
), | |
)); | |
try { | |
$shortcut->save(); | |
drupal_set_message($this->t('Added a shortcut for %title.', array('%title' => $shortcut->label()))); | |
} | |
catch (\Exception $e) { | |
drupal_set_message($this->t('Unable to add a shortcut for %title.', array('%title' => $shortcut->label())), 'error'); | |
} | |
return $this->redirect('<front>'); | |
} | |
throw new AccessDeniedHttpException(); | |
} | |
} |