From 13e93a9e9f62a20e1f11bd8e452045f1fc07ba28 Mon Sep 17 00:00:00 2001
From: Alex Pott <alex.a.pott@googlemail.com>
Date: Tue, 18 Aug 2015 13:21:49 +0100
Subject: [PATCH] Issue #2551429 by Wim Leers, stefan.r, jibran, larowlan:
 FieldUI should accommodate route options in RouteSubscriber

---
 core/modules/field_ui/src/Routing/RouteSubscriber.php    | 2 +-
 core/modules/field_ui/src/Tests/FieldUIRouteTest.php     | 9 +++++++++
 .../modules/entity_test/src/Routing/EntityTestRoutes.php | 3 ++-
 3 files changed, 12 insertions(+), 2 deletions(-)

diff --git a/core/modules/field_ui/src/Routing/RouteSubscriber.php b/core/modules/field_ui/src/Routing/RouteSubscriber.php
index f31ff2b6bbc7..8f1b8f1fced5 100644
--- a/core/modules/field_ui/src/Routing/RouteSubscriber.php
+++ b/core/modules/field_ui/src/Routing/RouteSubscriber.php
@@ -47,7 +47,7 @@ protected function alterRoutes(RouteCollection $collection) {
         }
         $path = $entity_route->getPath();
 
-        $options = array();
+        $options = $entity_route->getOptions();
         if ($bundle_entity_type = $entity_type->getBundleEntityType()) {
           $options['parameters'][$bundle_entity_type] = array(
             'type' => 'entity:' . $bundle_entity_type,
diff --git a/core/modules/field_ui/src/Tests/FieldUIRouteTest.php b/core/modules/field_ui/src/Tests/FieldUIRouteTest.php
index 332a87d86c03..6b680430e508 100644
--- a/core/modules/field_ui/src/Tests/FieldUIRouteTest.php
+++ b/core/modules/field_ui/src/Tests/FieldUIRouteTest.php
@@ -112,4 +112,13 @@ public function assertLocalTasks() {
     $this->assertLink('Manage form display');
   }
 
+  /**
+   * Asserts that admin routes are correctly marked as such.
+   */
+  public function testAdminRoute() {
+    $route = \Drupal::service('router.route_provider')->getRouteByName('entity.entity_test.field_ui_fields');
+    $is_admin = \Drupal::service('router.admin_context')->isAdminRoute($route);
+    $this->assertTrue($is_admin, 'Admin route correctly marked for "Manage fields" page.');
+  }
+
 }
diff --git a/core/modules/system/tests/modules/entity_test/src/Routing/EntityTestRoutes.php b/core/modules/system/tests/modules/entity_test/src/Routing/EntityTestRoutes.php
index 3a5bbe95b02b..09d677f1864e 100644
--- a/core/modules/system/tests/modules/entity_test/src/Routing/EntityTestRoutes.php
+++ b/core/modules/system/tests/modules/entity_test/src/Routing/EntityTestRoutes.php
@@ -60,7 +60,8 @@ public function routes() {
       $routes["entity.$entity_type_id.admin_form"] = new Route(
         "$entity_type_id/structure/{bundle}",
         array('_controller' => '\Drupal\entity_test\Controller\EntityTestController::testAdmin'),
-        array('_permission' => 'administer entity_test content')
+        array('_permission' => 'administer entity_test content'),
+        array('_admin_route' => TRUE)
       );
     }
     return $routes;
-- 
GitLab