Mercurial > hg > isophonics-drupal-site
diff 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 |
line wrap: on
line diff
--- a/core/modules/layout_builder/src/Routing/LayoutBuilderRoutesTrait.php Thu Feb 28 13:21:36 2019 +0000 +++ b/core/modules/layout_builder/src/Routing/LayoutBuilderRoutesTrait.php Thu May 09 15:33:08 2019 +0100 @@ -11,11 +11,6 @@ /** * Provides a trait for building routes for a Layout Builder UI. - * - * @internal - * Layout Builder is currently experimental and should only be leveraged by - * experimental modules and development releases of contributed modules. - * See https://www.drupal.org/core/experimental for more information. */ trait LayoutBuilderRoutesTrait { @@ -36,14 +31,15 @@ * (optional) An array of options. * @param string $route_name_prefix * (optional) The prefix to use for the route name. + * @param string $entity_type_id + * (optional) The entity type ID, if available. */ - protected function buildLayoutRoutes(RouteCollection $collection, SectionStorageDefinition $definition, $path, array $defaults = [], array $requirements = [], array $options = [], $route_name_prefix = '') { + protected function buildLayoutRoutes(RouteCollection $collection, SectionStorageDefinition $definition, $path, array $defaults = [], array $requirements = [], array $options = [], $route_name_prefix = '', $entity_type_id = '') { $type = $definition->id(); $defaults['section_storage_type'] = $type; // Provide an empty value to allow the section storage to be upcast. $defaults['section_storage'] = ''; // Trigger the layout builder access check. - $requirements['_has_layout_section'] = 'true'; $requirements['_layout_builder_access'] = 'view'; // Trigger the layout builder RouteEnhancer. $options['_layout_builder'] = TRUE; @@ -60,30 +56,27 @@ } $main_defaults = $defaults; - $main_defaults['is_rebuilding'] = FALSE; - $main_defaults['_controller'] = '\Drupal\layout_builder\Controller\LayoutBuilderController::layout'; + $main_options = $options; + if ($entity_type_id) { + $main_defaults['_entity_form'] = "$entity_type_id.layout_builder"; + } + else { + $main_defaults['_controller'] = '\Drupal\layout_builder\Controller\LayoutBuilderController::layout'; + } $main_defaults['_title_callback'] = '\Drupal\layout_builder\Controller\LayoutBuilderController::title'; $route = (new Route($path)) ->setDefaults($main_defaults) ->setRequirements($requirements) - ->setOptions($options); + ->setOptions($main_options); $collection->add("$route_name_prefix.view", $route); - $save_defaults = $defaults; - $save_defaults['_controller'] = '\Drupal\layout_builder\Controller\LayoutBuilderController::saveLayout'; - $route = (new Route("$path/save")) - ->setDefaults($save_defaults) + $discard_changes_defaults = $defaults; + $discard_changes_defaults['_form'] = '\Drupal\layout_builder\Form\DiscardLayoutChangesForm'; + $route = (new Route("$path/discard-changes")) + ->setDefaults($discard_changes_defaults) ->setRequirements($requirements) ->setOptions($options); - $collection->add("$route_name_prefix.save", $route); - - $cancel_defaults = $defaults; - $cancel_defaults['_controller'] = '\Drupal\layout_builder\Controller\LayoutBuilderController::cancelLayout'; - $route = (new Route("$path/cancel")) - ->setDefaults($cancel_defaults) - ->setRequirements($requirements) - ->setOptions($options); - $collection->add("$route_name_prefix.cancel", $route); + $collection->add("$route_name_prefix.discard_changes", $route); if (is_subclass_of($definition->getClass(), OverridesSectionStorageInterface::class)) { $revert_defaults = $defaults;