Commit 406c815d authored by mxh's avatar mxh
Browse files

Issue #3325769 by mxh: Support translatability of content

parent e6305aa4
Loading
Loading
Loading
Loading
+30 −8
Original line number Diff line number Diff line
@@ -40,6 +40,7 @@ class ParametersUiController extends ControllerBase {
    $instance = parent::create($container);
    $instance->setCollectionStorage($container->get('entity_type.manager')->getStorage(ParametersCollectionInterface::ENTITY_TYPE_ID));
    $instance->setParameterManager($container->get(ParameterManager::SERVICE_NAME));
    $instance->languageManager = $container->get('language_manager');
    return $instance;
  }

@@ -62,7 +63,7 @@ class ParametersUiController extends ControllerBase {

    if (!$parameters_collection) {
      $id = $parameters_collection_id ?? $entity_type_id . '.' . $bundle;
      $parameters_collection = $this->collectionStorage->load($id);
      $parameters_collection = $this->loadCollection($id);
      if (!$parameters_collection) {
        $parameters_collection = $this->collectionStorage->create(['id' => $id]);
      }
@@ -94,7 +95,7 @@ class ParametersUiController extends ControllerBase {

    if (!$parameters_collection) {
      $id = $parameters_collection_id ?? $entity_type_id . '.' . $bundle;
      $parameters_collection = $this->collectionStorage->load($id);
      $parameters_collection = $this->loadCollection($id);
      if (!$parameters_collection) {
        $parameters_collection = $this->collectionStorage->create(['id' => $id]);
      }
@@ -118,7 +119,7 @@ class ParametersUiController extends ControllerBase {
  public function parametersCollectionDeleteForm(?ParametersCollectionInterface $parameters_collection = NULL, ?string $parameters_collection_id = NULL, ?string $entity_type_id = NULL, ?string $bundle = NULL): array {
    if (!$parameters_collection) {
      $id = $parameters_collection_id ?? $entity_type_id . '.' . $bundle;
      $parameters_collection = $this->collectionStorage->load($id);
      $parameters_collection = $this->loadCollection($id);
    }
    /** @var \Drupal\parameters\Entity\ParametersCollectionInterface $parameters_collection */
    if ($parameters_collection && !$parameters_collection->isLocked()) {
@@ -145,7 +146,7 @@ class ParametersUiController extends ControllerBase {
  public function parametersCollectionLockForm(?ParametersCollectionInterface $parameters_collection = NULL, ?string $parameters_collection_id = NULL, ?string $entity_type_id = NULL, ?string $bundle = NULL): array {
    if (!$parameters_collection) {
      $id = $parameters_collection_id ?? $entity_type_id . '.' . $bundle;
      $parameters_collection = $this->collectionStorage->load($id);
      $parameters_collection = $this->loadCollection($id);
    }
    /** @var \Drupal\parameters\Entity\ParametersCollectionInterface $parameters_collection */
    if ($parameters_collection && !$parameters_collection->isLocked()) {
@@ -172,7 +173,7 @@ class ParametersUiController extends ControllerBase {
  public function parametersCollectionUnlockForm(?ParametersCollectionInterface $parameters_collection = NULL, ?string $parameters_collection_id = NULL, ?string $entity_type_id = NULL, ?string $bundle = NULL): array {
    if (!$parameters_collection) {
      $id = $parameters_collection_id ?? $entity_type_id . '.' . $bundle;
      $parameters_collection = $this->collectionStorage->load($id);
      $parameters_collection = $this->loadCollection($id);
    }
    /** @var \Drupal\parameters\Entity\ParametersCollectionInterface $parameters_collection */
    if ($parameters_collection && $parameters_collection->isLocked()) {
@@ -207,7 +208,7 @@ class ParametersUiController extends ControllerBase {

    if (!$parameters_collection) {
      $id = $parameters_collection_id ?? $entity_type_id . '.' . $bundle;
      $parameters_collection = $this->collectionStorage->load($id);
      $parameters_collection = $this->loadCollection($id);
      if (!$parameters_collection) {
        $parameters_collection = $this->collectionStorage->create(['id' => $id]);
      }
@@ -259,7 +260,7 @@ class ParametersUiController extends ControllerBase {
    }
    if (!$parameters_collection) {
      $id = $parameters_collection_id ?? $entity_type_id . '.' . $bundle;
      $parameters_collection = $this->collectionStorage->load($id);
      $parameters_collection = $this->loadCollection($id);
      if (!$parameters_collection) {
        throw new NotFoundHttpException();
      }
@@ -299,7 +300,7 @@ class ParametersUiController extends ControllerBase {
    }
    if (!$parameters_collection) {
      $id = $parameters_collection_id ?? $entity_type_id . '.' . $bundle;
      $parameters_collection = $this->collectionStorage->load($id);
      $parameters_collection = $this->loadCollection($id);
      if (!$parameters_collection) {
        throw new NotFoundHttpException();
      }
@@ -346,4 +347,25 @@ class ParametersUiController extends ControllerBase {
    $this->parameterManager = $manager;
  }

  /**
   * Loads the collection by requested ID.
   *
   * @param string $id
   *   The entity ID.
   *
   * @return \Drupal\parameters\Entity\ParametersCollectionInterface|null
   *   The collection, or NULL if not found.
   */
  protected function loadCollection(string $id): ?ParametersCollectionInterface {
    /** @var \Drupal\parameters\Entity\ParametersCollectionInterface $collection */
    if ($collection = $this->collectionStorage->load($id)) {
      if ($collection->language()->getId() !== $this->languageManager()->getCurrentLanguage()->getId()) {
        // Currently the Parameters UI does not support translations.
        $collection = $this->collectionStorage->loadOverrideFree($id);
      }
      return $collection;
    }
    return NULL;
  }

}