You are here

protected function LingotekRouteSubscriber::alterRoutes in Lingotek Translation 8

Same name and namespace in other branches
  1. 8.2 src/Routing/LingotekRouteSubscriber.php \Drupal\lingotek\Routing\LingotekRouteSubscriber::alterRoutes()
  2. 4.0.x src/Routing/LingotekRouteSubscriber.php \Drupal\lingotek\Routing\LingotekRouteSubscriber::alterRoutes()
  3. 3.0.x src/Routing/LingotekRouteSubscriber.php \Drupal\lingotek\Routing\LingotekRouteSubscriber::alterRoutes()
  4. 3.1.x src/Routing/LingotekRouteSubscriber.php \Drupal\lingotek\Routing\LingotekRouteSubscriber::alterRoutes()
  5. 3.2.x src/Routing/LingotekRouteSubscriber.php \Drupal\lingotek\Routing\LingotekRouteSubscriber::alterRoutes()
  6. 3.3.x src/Routing/LingotekRouteSubscriber.php \Drupal\lingotek\Routing\LingotekRouteSubscriber::alterRoutes()
  7. 3.4.x src/Routing/LingotekRouteSubscriber.php \Drupal\lingotek\Routing\LingotekRouteSubscriber::alterRoutes()
  8. 3.5.x src/Routing/LingotekRouteSubscriber.php \Drupal\lingotek\Routing\LingotekRouteSubscriber::alterRoutes()
  9. 3.6.x src/Routing/LingotekRouteSubscriber.php \Drupal\lingotek\Routing\LingotekRouteSubscriber::alterRoutes()
  10. 3.7.x src/Routing/LingotekRouteSubscriber.php \Drupal\lingotek\Routing\LingotekRouteSubscriber::alterRoutes()
  11. 3.8.x src/Routing/LingotekRouteSubscriber.php \Drupal\lingotek\Routing\LingotekRouteSubscriber::alterRoutes()

Alters existing routes for a specific collection.

Parameters

\Symfony\Component\Routing\RouteCollection $collection: The route collection for adding routes.

Overrides RouteSubscriberBase::alterRoutes

File

src/Routing/LingotekRouteSubscriber.php, line 42
Contains \Drupal\lingotek\Routing\LingotekRouteSubscriber.

Class

LingotekRouteSubscriber
Subscriber to add lingotek controller and generate bulk administration routes for content entity translation.

Namespace

Drupal\lingotek\Routing

Code

protected function alterRoutes(RouteCollection $collection) {

  // Use instead of ContentTranslationController.
  foreach ($collection as $route) {
    if ($route
      ->getDefault('_controller') == '\\Drupal\\content_translation\\Controller\\ContentTranslationController::overview') {
      $route
        ->setDefault('_controller', '\\Drupal\\lingotek\\Controller\\LingotekContentTranslationController::overview');
    }
    if ($route
      ->getDefault('_controller') == '\\Drupal\\config_translation\\Controller\\ConfigTranslationController::itemPage') {
      $route
        ->setDefault('_controller', '\\Drupal\\lingotek\\Controller\\LingotekConfigTranslationController::itemPage');
    }
  }
  $debug_enabled = \Drupal::state()
    ->get('lingotek.enable_debug_utilities', FALSE);
  foreach ($this->entityManager
    ->getDefinitions() as $entity_type_id => $entity_type) {
    if ($entity_type
      ->isTranslatable() && \Drupal::config('lingotek.settings')
      ->get('translate.entity.' . $entity_type_id)) {

      // Add a route for bulk translation management.
      $path = "admin/lingotek/manage/{$entity_type_id}";
      $options = array(
        '_admin_route' => TRUE,
      );
      $defaults = array(
        'entity_type_id' => $entity_type_id,
      );
      $route = new Route($path, array(
        '_form' => 'Drupal\\lingotek\\Form\\LingotekManagementForm',
        '_title' => 'Manage Translations',
      ) + $defaults, array(
        '_permission' => 'administer lingotek',
      ), $options);
      $collection
        ->add("lingotek.manage.{$entity_type_id}", $route);

      // Add a route for view metadata.
      if ($debug_enabled) {
        $path = ($entity_type
          ->hasLinkTemplate('canonical') ? $entity_type
          ->getLinkTemplate('canonical') : $entity_type
          ->getLinkTemplate('edit_form')) . '/metadata';
        $defaults = [
          'entity_type_id' => $entity_type_id,
        ];
        $options = [
          'parameters' => [
            $entity_type_id => [
              'type' => 'entity:' . $entity_type_id,
            ],
          ],
        ];
        $route = new Route($path, [
          '_form' => 'Drupal\\lingotek\\Form\\LingotekMetadataEditForm',
          '_title' => 'Edit translation metadata',
        ] + $defaults, [
          '_permission' => 'administer lingotek',
        ], $options);
        $collection
          ->add("lingotek.metadata.{$entity_type_id}", $route);
      }
    }
  }
}