Mercurial > hg > isophonics-drupal-site
comparison core/modules/contextual/src/ContextualController.php @ 0:4c8ae668cc8c
Initial import (non-working)
author | Chris Cannam |
---|---|
date | Wed, 29 Nov 2017 16:09:58 +0000 |
parents | |
children | 129ea1e6d783 |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:4c8ae668cc8c |
---|---|
1 <?php | |
2 | |
3 namespace Drupal\contextual; | |
4 | |
5 use Drupal\Core\DependencyInjection\ContainerInjectionInterface; | |
6 use Drupal\Core\Render\RendererInterface; | |
7 use Symfony\Component\DependencyInjection\ContainerInterface; | |
8 use Symfony\Component\HttpFoundation\JsonResponse; | |
9 use Symfony\Component\HttpFoundation\Request; | |
10 use Symfony\Component\HttpKernel\Exception\BadRequestHttpException; | |
11 | |
12 /** | |
13 * Returns responses for Contextual module routes. | |
14 */ | |
15 class ContextualController implements ContainerInjectionInterface { | |
16 | |
17 /** | |
18 * The renderer. | |
19 * @var \Drupal\Core\Render\RendererInterface | |
20 */ | |
21 protected $render; | |
22 | |
23 /** | |
24 * Constructors a new ContextualController | |
25 * | |
26 * @param \Drupal\Core\Render\RendererInterface $renderer | |
27 * The renderer. | |
28 */ | |
29 public function __construct(RendererInterface $renderer) { | |
30 $this->renderer = $renderer; | |
31 } | |
32 | |
33 /** | |
34 * {@inheritdoc} | |
35 */ | |
36 public static function create(ContainerInterface $container) { | |
37 return new static( | |
38 $container->get('renderer') | |
39 ); | |
40 } | |
41 | |
42 /** | |
43 * Returns the requested rendered contextual links. | |
44 * | |
45 * Given a list of contextual links IDs, render them. Hence this must be | |
46 * robust to handle arbitrary input. | |
47 * | |
48 * @see contextual_preprocess() | |
49 * | |
50 * @return \Symfony\Component\HttpFoundation\JsonResponse | |
51 * The JSON response. | |
52 */ | |
53 public function render(Request $request) { | |
54 $ids = $request->request->get('ids'); | |
55 if (!isset($ids)) { | |
56 throw new BadRequestHttpException(t('No contextual ids specified.')); | |
57 } | |
58 | |
59 $rendered = []; | |
60 foreach ($ids as $id) { | |
61 $element = [ | |
62 '#type' => 'contextual_links', | |
63 '#contextual_links' => _contextual_id_to_links($id), | |
64 ]; | |
65 $rendered[$id] = $this->renderer->renderRoot($element); | |
66 } | |
67 | |
68 return new JsonResponse($rendered); | |
69 } | |
70 | |
71 } |