You are here

final class OverridesSectionStorage in Layout Builder Symmetric Translations 8

Hierarchy

Expanded class hierarchy of OverridesSectionStorage

7 files declare their use of OverridesSectionStorage
LayoutBuilderEntityViewDisplay.php in src/Entity/LayoutBuilderEntityViewDisplay.php
LayoutBuilderEntityViewDisplayResourceTestBase.php in tests/src/Functional/Rest/LayoutBuilderEntityViewDisplayResourceTestBase.php
LayoutBuilderEntityViewDisplayTest.php in tests/src/Functional/Jsonapi/LayoutBuilderEntityViewDisplayTest.php
LayoutBuilderWidget.php in src/Plugin/Field/FieldWidget/LayoutBuilderWidget.php
layout_builder_st.install in ./layout_builder_st.install

... See full list

File

src/Plugin/SectionStorage/OverridesSectionStorage.php, line 11

Namespace

Drupal\layout_builder_st\Plugin\SectionStorage
View source
final class OverridesSectionStorage extends CoreOverridesSectionStorage implements TranslatableSectionStorageInterface {

  /**
   * The field name for translated configuration used by this storage.
   *
   * @var string
   */
  const TRANSLATED_CONFIGURATION_FIELD_NAME = 'layout_builder__translation';

  /**
   * {@inheritdoc}
   */
  protected function handleTranslationAccess(AccessResult $result, $operation, AccountInterface $account) {
    $entity = $this
      ->getEntity();
    $field_config = $entity
      ->getFieldDefinition(static::FIELD_NAME)
      ->getConfig($entity
      ->bundle());

    // Access is allow if one of the following conditions is true:
    // 1. This is the default translation.
    // 2. The entity is translatable and the layout is overridden and the layout
    //    field is not translatable.
    return $result
      ->andIf(AccessResult::allowedIf($this
      ->isDefaultTranslation() || $entity instanceof TranslatableInterface && $this
      ->isOverridden() && !$field_config
      ->isTranslatable()))
      ->addCacheableDependency($entity)
      ->addCacheableDependency($field_config);
  }

  /**
   * Indicates if the layout is translatable.
   *
   * @return bool
   *   TRUE if the layout is translatable, otherwise FALSE.
   */
  protected function isTranslatable() {
    $entity = $this
      ->getEntity();
    if ($entity instanceof TranslatableInterface) {
      return $entity
        ->isTranslatable();
    }
    return FALSE;
  }

  /**
   * {@inheritdoc}
   */
  public function isDefaultTranslation() {
    if ($this
      ->isTranslatable()) {

      /** @var \Drupal\Core\Entity\TranslatableInterface $entity */
      $entity = $this
        ->getEntity();
      return $entity
        ->isDefaultTranslation();
    }
    return TRUE;
  }

  /**
   * {@inheritdoc}
   */
  public function setTranslatedComponentConfiguration($uuid, array $configuration) {
    if (!$this
      ->getEntity()
      ->get(OverridesSectionStorage::TRANSLATED_CONFIGURATION_FIELD_NAME)
      ->isEmpty()) {
      $translation_settings = $this
        ->getEntity()
        ->get(OverridesSectionStorage::TRANSLATED_CONFIGURATION_FIELD_NAME)
        ->getValue()[0];
    }
    $translation_settings['value']['components'][$uuid] = $configuration;
    $this
      ->getEntity()
      ->set(OverridesSectionStorage::TRANSLATED_CONFIGURATION_FIELD_NAME, [
      $translation_settings,
    ]);
  }

  /**
   * {@inheritdoc}
   */
  public function getTranslatedComponentConfiguration($uuid) {
    if ($this
      ->getEntity()
      ->get(OverridesSectionStorage::TRANSLATED_CONFIGURATION_FIELD_NAME)
      ->isEmpty()) {
      return [];
    }
    $translation_settings = $this
      ->getEntity()
      ->get(OverridesSectionStorage::TRANSLATED_CONFIGURATION_FIELD_NAME)
      ->getValue()[0];
    return isset($translation_settings['value']['components'][$uuid]) ? $translation_settings['value']['components'][$uuid] : [];
  }

  /**
   * {@inheritdoc}
   */
  public function getTranslatedConfiguration() {
    if ($this
      ->getEntity()
      ->get(OverridesSectionStorage::TRANSLATED_CONFIGURATION_FIELD_NAME)
      ->isEmpty()) {
      return [];
    }
    return $this
      ->getEntity()
      ->get(OverridesSectionStorage::TRANSLATED_CONFIGURATION_FIELD_NAME)
      ->getValue()[0];
  }

  /**
   * {@inheritdoc}
   */
  public function getTranslationLanguage() {
    if (!$this
      ->isDefaultTranslation()) {
      return $this
        ->getEntity()
        ->language();
    }
    return NULL;
  }

  /**
   * {@inheritdoc}
   */
  public function getSourceLanguage() {
    if (!$this
      ->isDefaultTranslation()) {

      /** @var \Drupal\Core\Entity\TranslatableInterface $entity */
      $entity = $this
        ->getEntity();
      return $entity
        ->getUntranslated()
        ->language();
    }
    return NULL;
  }

}

Members

Namesort descending Modifiers Type Description Overrides
ContextAwarePluginBase::$context protected property The data objects representing the context of this plugin.
ContextAwarePluginBase::$contexts Deprecated private property Data objects representing the contexts passed in the plugin configuration.
ContextAwarePluginBase::contextHandler protected function Wraps the context handler.
ContextAwarePluginBase::createContextFromConfiguration protected function Overrides ContextAwarePluginBase::createContextFromConfiguration
ContextAwarePluginBase::getCacheContexts public function The cache contexts associated with this object. Overrides CacheableDependencyInterface::getCacheContexts 9
ContextAwarePluginBase::getCacheMaxAge public function The maximum age for which this object may be cached. Overrides CacheableDependencyInterface::getCacheMaxAge 7
ContextAwarePluginBase::getCacheTags public function The cache tags associated with this object. Overrides CacheableDependencyInterface::getCacheTags 4
ContextAwarePluginBase::getContext public function This code is identical to the Component in order to pick up a different Context class. Overrides ContextAwarePluginBase::getContext
ContextAwarePluginBase::getContextDefinition public function Overrides ContextAwarePluginBase::getContextDefinition
ContextAwarePluginBase::getContextDefinitions public function Overrides ContextAwarePluginBase::getContextDefinitions
ContextAwarePluginBase::getContextMapping public function Gets a mapping of the expected assignment names to their context names. Overrides ContextAwarePluginInterface::getContextMapping
ContextAwarePluginBase::getContexts public function Gets the defined contexts. Overrides ContextAwarePluginInterface::getContexts
ContextAwarePluginBase::getContextValue public function Gets the value for a defined context. Overrides ContextAwarePluginInterface::getContextValue
ContextAwarePluginBase::getContextValues public function Gets the values for all defined contexts. Overrides ContextAwarePluginInterface::getContextValues
ContextAwarePluginBase::setContext public function Set a context on this plugin. Overrides ContextAwarePluginBase::setContext
ContextAwarePluginBase::setContextMapping public function Sets a mapping of the expected assignment names to their context names. Overrides ContextAwarePluginInterface::setContextMapping
ContextAwarePluginBase::setContextValue public function Sets the value for a defined context. Overrides ContextAwarePluginBase::setContextValue
ContextAwarePluginBase::validateContexts public function Validates the set values for the defined contexts. Overrides ContextAwarePluginInterface::validateContexts
ContextAwarePluginBase::__get public function Implements magic __get() method.
DependencySerializationTrait::$_entityStorages protected property An array of entity type IDs keyed by the property name of their storages.
DependencySerializationTrait::$_serviceIds protected property An array of service IDs keyed by property name used for serialization.
DependencySerializationTrait::__sleep public function 1
DependencySerializationTrait::__wakeup public function 2
LayoutBuilderRoutesTrait::buildLayoutRoutes protected function Builds the layout routes for the given values.
OverridesSectionStorage::$currentUser protected property The current user.
OverridesSectionStorage::$entityFieldManager protected property The entity field manager.
OverridesSectionStorage::$entityRepository protected property The entity repository.
OverridesSectionStorage::$entityTypeManager protected property The entity type manager.
OverridesSectionStorage::$sectionStorageManager protected property The section storage manager.
OverridesSectionStorage::access public function Overrides \Drupal\Core\Access\AccessibleInterface::access(). Overrides SectionStorageInterface::access
OverridesSectionStorage::buildLocalTasks public function Provides the local tasks dynamically for Layout Builder plugins. Overrides SectionStorageLocalTaskProviderInterface::buildLocalTasks
OverridesSectionStorage::buildRoutes public function Provides the routes needed for Layout Builder UI. Overrides SectionStorageInterface::buildRoutes
OverridesSectionStorage::create public static function Creates an instance of the plugin. Overrides ContainerFactoryPluginInterface::create
OverridesSectionStorage::deriveContextsFromRoute public function Derives the available plugin contexts from route values. Overrides SectionStorageInterface::deriveContextsFromRoute
OverridesSectionStorage::extractEntityFromRoute private function Extracts an entity from the route values.
OverridesSectionStorage::extractIdFromRoute public function Configures the plugin based on route values. Overrides SectionStorageInterface::extractIdFromRoute
OverridesSectionStorage::FIELD_NAME constant The field name used by this storage.
OverridesSectionStorage::getContextsDuringPreview public function Gets contexts for use during preview. Overrides SectionStorageBase::getContextsDuringPreview
OverridesSectionStorage::getDefaultSectionStorage public function Returns the corresponding defaults section storage for this override. Overrides OverridesSectionStorageInterface::getDefaultSectionStorage
OverridesSectionStorage::getEntity protected function Gets the entity storing the overrides.
OverridesSectionStorage::getEntityTypes protected function Returns an array of relevant entity types.
OverridesSectionStorage::getLayoutBuilderUrl public function Gets the URL used to display the Layout Builder UI. Overrides SectionStorageInterface::getLayoutBuilderUrl
OverridesSectionStorage::getRedirectUrl public function Gets the URL used when redirecting away from the Layout Builder UI. Overrides SectionStorageInterface::getRedirectUrl
OverridesSectionStorage::getSectionList protected function Gets the section list. Overrides SectionStorageBase::getSectionList
OverridesSectionStorage::getSectionListFromId public function Derives the section list from the storage ID. Overrides SectionStorageInterface::getSectionListFromId
OverridesSectionStorage::getSourceLanguage public function Gets the source language of the translation if any. Overrides TranslatableSectionStorageInterface::getSourceLanguage
OverridesSectionStorage::getStorageId public function Returns an identifier for this storage. Overrides SectionStorageInterface::getStorageId
OverridesSectionStorage::getTempstoreKey public function Gets a string suitable for use as a tempstore key. Overrides SectionStorageBase::getTempstoreKey
OverridesSectionStorage::getTranslatedComponentConfiguration public function Gets the translated component configuration. Overrides TranslatableSectionStorageInterface::getTranslatedComponentConfiguration
OverridesSectionStorage::getTranslatedConfiguration public function Gets the translated configuration for the layout. Overrides TranslatableSectionStorageInterface::getTranslatedConfiguration
OverridesSectionStorage::getTranslationLanguage public function Gets the language of the translation if any. Overrides TranslatableSectionStorageInterface::getTranslationLanguage
OverridesSectionStorage::handleTranslationAccess protected function Handles access checks related to translations. Overrides OverridesSectionStorage::handleTranslationAccess
OverridesSectionStorage::hasIntegerId protected function Determines if this entity type's ID is stored as an integer.
OverridesSectionStorage::isApplicable public function Determines if this section storage is applicable for the current contexts. Overrides SectionStorageInterface::isApplicable
OverridesSectionStorage::isDefaultTranslation public function Indicates if the layout is default translation layout. Overrides TranslatableSectionStorageInterface::isDefaultTranslation
OverridesSectionStorage::isOverridden public function Indicates if overrides are in use. Overrides OverridesSectionStorageInterface::isOverridden
OverridesSectionStorage::isTranslatable protected function Indicates if the layout is translatable.
OverridesSectionStorage::label public function Gets the label for the object using the sections. Overrides SectionStorageInterface::label
OverridesSectionStorage::save public function Saves the sections. Overrides SectionStorageInterface::save
OverridesSectionStorage::setTranslatedComponentConfiguration public function Sets the translated component configuration. Overrides TranslatableSectionStorageInterface::setTranslatedComponentConfiguration
OverridesSectionStorage::TRANSLATED_CONFIGURATION_FIELD_NAME constant The field name for translated configuration used by this storage.
OverridesSectionStorage::__construct public function Overrides \Drupal\Component\Plugin\PluginBase::__construct(). Overrides ContextAwarePluginBase::__construct
PluginBase::$configuration protected property Configuration information passed into the plugin. 1
PluginBase::$pluginDefinition protected property The plugin implementation definition. 1
PluginBase::$pluginId protected property The plugin_id.
PluginBase::DERIVATIVE_SEPARATOR constant A string which is used to separate base plugin IDs from the derivative ID.
PluginBase::getBaseId public function Gets the base_plugin_id of the plugin instance. Overrides DerivativeInspectionInterface::getBaseId
PluginBase::getDerivativeId public function Gets the derivative_id of the plugin instance. Overrides DerivativeInspectionInterface::getDerivativeId
PluginBase::getPluginDefinition public function Gets the definition of the plugin implementation. Overrides PluginInspectionInterface::getPluginDefinition 3
PluginBase::getPluginId public function Gets the plugin_id of the plugin instance. Overrides PluginInspectionInterface::getPluginId
PluginBase::isConfigurable public function Determines if the plugin is configurable.
SectionStorageBase::appendSection public function Appends a new section to the end of the list. Overrides SectionListInterface::appendSection
SectionStorageBase::count public function
SectionStorageBase::getSection public function Gets a domain object for the layout section. Overrides SectionListInterface::getSection
SectionStorageBase::getSections public function Gets the layout sections. Overrides SectionListInterface::getSections 1
SectionStorageBase::getStorageType public function Returns the type of this storage. Overrides SectionStorageInterface::getStorageType
SectionStorageBase::insertSection public function Inserts a new section at a given delta. Overrides SectionListInterface::insertSection
SectionStorageBase::removeAllSections public function Removes all of the sections. Overrides SectionListInterface::removeAllSections
SectionStorageBase::removeSection public function Removes the section at the given delta. Overrides SectionListInterface::removeSection
SectionStorageBase::setSectionList Deprecated public function Sets the section list on the storage.
StringTranslationTrait::$stringTranslation protected property The string translation service. 1
StringTranslationTrait::formatPlural protected function Formats a string containing a count of items.
StringTranslationTrait::getNumberOfPlurals protected function Returns the number of plurals supported by a given language.
StringTranslationTrait::getStringTranslation protected function Gets the string translation service.
StringTranslationTrait::setStringTranslation public function Sets the string translation service to use. 2
StringTranslationTrait::t protected function Translates a string to the current language or to a given language.
TypedDataTrait::$typedDataManager protected property The typed data manager used for creating the data types.
TypedDataTrait::getTypedDataManager public function Gets the typed data manager. 2
TypedDataTrait::setTypedDataManager public function Sets the typed data manager. 2