Updated to Drupal 8.5. Core Media not yet in use.
[yaffs-website] / web / core / modules / content_translation / src / Routing / ContentTranslationRouteSubscriber.php
index 6aae426abe31116bcf24c8aa7265178f3c3d0e92..fa1ac3bbf902a582ef2c2f40c2d3b5ef42ba3575 100644 (file)
@@ -2,6 +2,7 @@
 
 namespace Drupal\content_translation\Routing;
 
+use Drupal\content_translation\ContentTranslationManager;
 use Drupal\content_translation\ContentTranslationManagerInterface;
 use Drupal\Core\Routing\RouteSubscriberBase;
 use Drupal\Core\Routing\RoutingEvents;
@@ -55,6 +56,7 @@ class ContentTranslationRouteSubscriber extends RouteSubscriberBase {
       }
 
       $path = $base_path . '/translations';
+      $load_latest_revision = ContentTranslationManager::isPendingRevisionSupportEnabled($entity_type_id);
 
       $route = new Route(
         $path,
@@ -70,6 +72,7 @@ class ContentTranslationRouteSubscriber extends RouteSubscriberBase {
           'parameters' => [
             $entity_type_id => [
               'type' => 'entity:' . $entity_type_id,
+              'load_latest_revision' => $load_latest_revision,
             ],
           ],
           '_admin_route' => $is_admin,
@@ -102,6 +105,7 @@ class ContentTranslationRouteSubscriber extends RouteSubscriberBase {
             ],
             $entity_type_id => [
               'type' => 'entity:' . $entity_type_id,
+              'load_latest_revision' => $load_latest_revision,
             ],
           ],
           '_admin_route' => $is_admin,
@@ -127,6 +131,7 @@ class ContentTranslationRouteSubscriber extends RouteSubscriberBase {
             ],
             $entity_type_id => [
               'type' => 'entity:' . $entity_type_id,
+              'load_latest_revision' => $load_latest_revision,
             ],
           ],
           '_admin_route' => $is_admin,
@@ -152,12 +157,21 @@ class ContentTranslationRouteSubscriber extends RouteSubscriberBase {
             ],
             $entity_type_id => [
               'type' => 'entity:' . $entity_type_id,
+              'load_latest_revision' => $load_latest_revision,
             ],
           ],
           '_admin_route' => $is_admin,
         ]
       );
       $collection->add("entity.$entity_type_id.content_translation_delete", $route);
+
+      // Add our custom translation deletion access checker.
+      if ($load_latest_revision) {
+        $entity_delete_route = $collection->get("entity.$entity_type_id.delete_form");
+        if ($entity_delete_route) {
+          $entity_delete_route->addRequirements(['_access_content_translation_delete' => "$entity_type_id.delete"]);
+        }
+      }
     }
   }