Mercurial > hg > isophonics-drupal-site
comparison core/modules/layout_builder/src/Routing/LayoutBuilderRoutesTrait.php @ 18:af1871eacc83
Update to Drupal core 8.7.1
author | Chris Cannam |
---|---|
date | Thu, 09 May 2019 15:33:08 +0100 |
parents | 129ea1e6d783 |
children |
comparison
equal
deleted
inserted
replaced
17:129ea1e6d783 | 18:af1871eacc83 |
---|---|
9 use Symfony\Component\Routing\Route; | 9 use Symfony\Component\Routing\Route; |
10 use Symfony\Component\Routing\RouteCollection; | 10 use Symfony\Component\Routing\RouteCollection; |
11 | 11 |
12 /** | 12 /** |
13 * Provides a trait for building routes for a Layout Builder UI. | 13 * Provides a trait for building routes for a Layout Builder UI. |
14 * | |
15 * @internal | |
16 * Layout Builder is currently experimental and should only be leveraged by | |
17 * experimental modules and development releases of contributed modules. | |
18 * See https://www.drupal.org/core/experimental for more information. | |
19 */ | 14 */ |
20 trait LayoutBuilderRoutesTrait { | 15 trait LayoutBuilderRoutesTrait { |
21 | 16 |
22 /** | 17 /** |
23 * Builds the layout routes for the given values. | 18 * Builds the layout routes for the given values. |
34 * (optional) An array of requirements for parameters. | 29 * (optional) An array of requirements for parameters. |
35 * @param array $options | 30 * @param array $options |
36 * (optional) An array of options. | 31 * (optional) An array of options. |
37 * @param string $route_name_prefix | 32 * @param string $route_name_prefix |
38 * (optional) The prefix to use for the route name. | 33 * (optional) The prefix to use for the route name. |
34 * @param string $entity_type_id | |
35 * (optional) The entity type ID, if available. | |
39 */ | 36 */ |
40 protected function buildLayoutRoutes(RouteCollection $collection, SectionStorageDefinition $definition, $path, array $defaults = [], array $requirements = [], array $options = [], $route_name_prefix = '') { | 37 protected function buildLayoutRoutes(RouteCollection $collection, SectionStorageDefinition $definition, $path, array $defaults = [], array $requirements = [], array $options = [], $route_name_prefix = '', $entity_type_id = '') { |
41 $type = $definition->id(); | 38 $type = $definition->id(); |
42 $defaults['section_storage_type'] = $type; | 39 $defaults['section_storage_type'] = $type; |
43 // Provide an empty value to allow the section storage to be upcast. | 40 // Provide an empty value to allow the section storage to be upcast. |
44 $defaults['section_storage'] = ''; | 41 $defaults['section_storage'] = ''; |
45 // Trigger the layout builder access check. | 42 // Trigger the layout builder access check. |
46 $requirements['_has_layout_section'] = 'true'; | |
47 $requirements['_layout_builder_access'] = 'view'; | 43 $requirements['_layout_builder_access'] = 'view'; |
48 // Trigger the layout builder RouteEnhancer. | 44 // Trigger the layout builder RouteEnhancer. |
49 $options['_layout_builder'] = TRUE; | 45 $options['_layout_builder'] = TRUE; |
50 // Trigger the layout builder param converter. | 46 // Trigger the layout builder param converter. |
51 $parameters['section_storage']['layout_builder_tempstore'] = TRUE; | 47 $parameters['section_storage']['layout_builder_tempstore'] = TRUE; |
58 else { | 54 else { |
59 $route_name_prefix = "layout_builder.$type"; | 55 $route_name_prefix = "layout_builder.$type"; |
60 } | 56 } |
61 | 57 |
62 $main_defaults = $defaults; | 58 $main_defaults = $defaults; |
63 $main_defaults['is_rebuilding'] = FALSE; | 59 $main_options = $options; |
64 $main_defaults['_controller'] = '\Drupal\layout_builder\Controller\LayoutBuilderController::layout'; | 60 if ($entity_type_id) { |
61 $main_defaults['_entity_form'] = "$entity_type_id.layout_builder"; | |
62 } | |
63 else { | |
64 $main_defaults['_controller'] = '\Drupal\layout_builder\Controller\LayoutBuilderController::layout'; | |
65 } | |
65 $main_defaults['_title_callback'] = '\Drupal\layout_builder\Controller\LayoutBuilderController::title'; | 66 $main_defaults['_title_callback'] = '\Drupal\layout_builder\Controller\LayoutBuilderController::title'; |
66 $route = (new Route($path)) | 67 $route = (new Route($path)) |
67 ->setDefaults($main_defaults) | 68 ->setDefaults($main_defaults) |
68 ->setRequirements($requirements) | 69 ->setRequirements($requirements) |
69 ->setOptions($options); | 70 ->setOptions($main_options); |
70 $collection->add("$route_name_prefix.view", $route); | 71 $collection->add("$route_name_prefix.view", $route); |
71 | 72 |
72 $save_defaults = $defaults; | 73 $discard_changes_defaults = $defaults; |
73 $save_defaults['_controller'] = '\Drupal\layout_builder\Controller\LayoutBuilderController::saveLayout'; | 74 $discard_changes_defaults['_form'] = '\Drupal\layout_builder\Form\DiscardLayoutChangesForm'; |
74 $route = (new Route("$path/save")) | 75 $route = (new Route("$path/discard-changes")) |
75 ->setDefaults($save_defaults) | 76 ->setDefaults($discard_changes_defaults) |
76 ->setRequirements($requirements) | 77 ->setRequirements($requirements) |
77 ->setOptions($options); | 78 ->setOptions($options); |
78 $collection->add("$route_name_prefix.save", $route); | 79 $collection->add("$route_name_prefix.discard_changes", $route); |
79 | |
80 $cancel_defaults = $defaults; | |
81 $cancel_defaults['_controller'] = '\Drupal\layout_builder\Controller\LayoutBuilderController::cancelLayout'; | |
82 $route = (new Route("$path/cancel")) | |
83 ->setDefaults($cancel_defaults) | |
84 ->setRequirements($requirements) | |
85 ->setOptions($options); | |
86 $collection->add("$route_name_prefix.cancel", $route); | |
87 | 80 |
88 if (is_subclass_of($definition->getClass(), OverridesSectionStorageInterface::class)) { | 81 if (is_subclass_of($definition->getClass(), OverridesSectionStorageInterface::class)) { |
89 $revert_defaults = $defaults; | 82 $revert_defaults = $defaults; |
90 $revert_defaults['_form'] = '\Drupal\layout_builder\Form\RevertOverridesForm'; | 83 $revert_defaults['_form'] = '\Drupal\layout_builder\Form\RevertOverridesForm'; |
91 $route = (new Route("$path/revert")) | 84 $route = (new Route("$path/revert")) |