Mercurial > hg > isophonics-drupal-site
comparison core/modules/layout_builder/src/Controller/AddSectionController.php @ 14:1fec387a4317
Update Drupal core to 8.5.2 via Composer
author | Chris Cannam |
---|---|
date | Mon, 23 Apr 2018 09:46:53 +0100 |
parents | |
children | 129ea1e6d783 |
comparison
equal
deleted
inserted
replaced
13:5fb285c0d0e3 | 14:1fec387a4317 |
---|---|
1 <?php | |
2 | |
3 namespace Drupal\layout_builder\Controller; | |
4 | |
5 use Drupal\Core\DependencyInjection\ClassResolverInterface; | |
6 use Drupal\Core\DependencyInjection\ContainerInjectionInterface; | |
7 use Drupal\layout_builder\LayoutTempstoreRepositoryInterface; | |
8 use Drupal\layout_builder\Section; | |
9 use Drupal\layout_builder\SectionStorageInterface; | |
10 use Symfony\Component\DependencyInjection\ContainerInterface; | |
11 use Symfony\Component\HttpFoundation\RedirectResponse; | |
12 | |
13 /** | |
14 * Defines a controller to add a new section. | |
15 * | |
16 * @internal | |
17 */ | |
18 class AddSectionController implements ContainerInjectionInterface { | |
19 | |
20 use AjaxHelperTrait; | |
21 use LayoutRebuildTrait; | |
22 | |
23 /** | |
24 * The layout tempstore repository. | |
25 * | |
26 * @var \Drupal\layout_builder\LayoutTempstoreRepositoryInterface | |
27 */ | |
28 protected $layoutTempstoreRepository; | |
29 | |
30 /** | |
31 * AddSectionController constructor. | |
32 * | |
33 * @param \Drupal\layout_builder\LayoutTempstoreRepositoryInterface $layout_tempstore_repository | |
34 * The layout tempstore repository. | |
35 * @param \Drupal\Core\DependencyInjection\ClassResolverInterface $class_resolver | |
36 * The class resolver. | |
37 */ | |
38 public function __construct(LayoutTempstoreRepositoryInterface $layout_tempstore_repository, ClassResolverInterface $class_resolver) { | |
39 $this->layoutTempstoreRepository = $layout_tempstore_repository; | |
40 $this->classResolver = $class_resolver; | |
41 } | |
42 | |
43 /** | |
44 * {@inheritdoc} | |
45 */ | |
46 public static function create(ContainerInterface $container) { | |
47 return new static( | |
48 $container->get('layout_builder.tempstore_repository'), | |
49 $container->get('class_resolver') | |
50 ); | |
51 } | |
52 | |
53 /** | |
54 * Adds the new section. | |
55 * | |
56 * @param \Drupal\layout_builder\SectionStorageInterface $section_storage | |
57 * The section storage. | |
58 * @param int $delta | |
59 * The delta of the section to splice. | |
60 * @param string $plugin_id | |
61 * The plugin ID of the layout to add. | |
62 * | |
63 * @return \Symfony\Component\HttpFoundation\Response | |
64 * The controller response. | |
65 */ | |
66 public function build(SectionStorageInterface $section_storage, $delta, $plugin_id) { | |
67 $section_storage->insertSection($delta, new Section($plugin_id)); | |
68 | |
69 $this->layoutTempstoreRepository->set($section_storage); | |
70 | |
71 if ($this->isAjax()) { | |
72 return $this->rebuildAndClose($section_storage); | |
73 } | |
74 else { | |
75 $url = $section_storage->getLayoutBuilderUrl(); | |
76 return new RedirectResponse($url->setAbsolute()->toString()); | |
77 } | |
78 } | |
79 | |
80 } |