Mercurial > hg > isophonics-drupal-site
diff core/modules/layout_builder/src/SectionStorageInterface.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 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/core/modules/layout_builder/src/SectionStorageInterface.php Mon Apr 23 09:46:53 2018 +0100 @@ -0,0 +1,141 @@ +<?php + +namespace Drupal\layout_builder; + +use Drupal\Component\Plugin\PluginInspectionInterface; +use Symfony\Component\Routing\RouteCollection; + +/** + * Defines an interface for Section Storage type plugins. + * + * @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. + */ +interface SectionStorageInterface extends SectionListInterface, PluginInspectionInterface { + + /** + * Returns an identifier for this storage. + * + * @return string + * The unique identifier for this storage. + */ + public function getStorageId(); + + /** + * Returns the type of this storage. + * + * Used in conjunction with the storage ID. + * + * @return string + * The type of storage. + */ + public function getStorageType(); + + /** + * Sets the section list on the storage. + * + * @param \Drupal\layout_builder\SectionListInterface $section_list + * The section list. + * + * @return $this + * + * @internal + * This should only be called during section storage instantiation. + */ + public function setSectionList(SectionListInterface $section_list); + + /** + * Derives the section list from the storage ID. + * + * @param string $id + * The storage ID, see ::getStorageId(). + * + * @return \Drupal\layout_builder\SectionListInterface + * The section list. + * + * @throws \InvalidArgumentException + * Thrown if the ID is invalid. + * + * @internal + * This should only be called during section storage instantiation. + */ + public function getSectionListFromId($id); + + /** + * Provides the routes needed for Layout Builder UI. + * + * Allows the plugin to add or alter routes during the route building process. + * \Drupal\layout_builder\Routing\LayoutBuilderRoutesTrait is provided for the + * typical use case of building a standard Layout Builder UI. + * + * @param \Symfony\Component\Routing\RouteCollection $collection + * The route collection. + * + * @see \Drupal\Core\Routing\RoutingEvents::ALTER + */ + public function buildRoutes(RouteCollection $collection); + + /** + * Gets the URL used when redirecting away from the Layout Builder UI. + * + * @return \Drupal\Core\Url + * The URL object. + */ + public function getRedirectUrl(); + + /** + * Gets the URL used to display the Layout Builder UI. + * + * @return \Drupal\Core\Url + * The URL object. + */ + public function getLayoutBuilderUrl(); + + /** + * Configures the plugin based on route values. + * + * @param mixed $value + * The raw value. + * @param mixed $definition + * The parameter definition provided in the route options. + * @param string $name + * The name of the parameter. + * @param array $defaults + * The route defaults array. + * + * @return string|null + * The section storage ID if it could be extracted, NULL otherwise. + * + * @internal + * This should only be called during section storage instantiation. + */ + public function extractIdFromRoute($value, $definition, $name, array $defaults); + + /** + * Provides any available contexts for the object using the sections. + * + * @return \Drupal\Core\Plugin\Context\ContextInterface[] + * The array of context objects. + */ + public function getContexts(); + + /** + * Gets the label for the object using the sections. + * + * @return string + * The label, or NULL if there is no label defined. + */ + public function label(); + + /** + * Saves the sections. + * + * @return int + * SAVED_NEW or SAVED_UPDATED is returned depending on the operation + * performed. + */ + public function save(); + +}