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"))