/** * {@inheritdoc} */ protected function alterRoutes(RouteCollection $collection) { foreach ($this->contentTranslationManager->getSupportedEntityTypes() as $entity_type_id => $entity_type) { // Try to get the route from the current collection. $link_template = $entity_type->getLinkTemplate('canonical'); if (strpos($link_template, '/') !== FALSE) { $base_path = '/' . $link_template; } else { if (!($entity_route = $collection->get("entity.{$entity_type_id}.canonical"))) { continue; } $base_path = $entity_route->getPath(); } // Inherit admin route status from edit route, if exists. $is_admin = FALSE; $route_name = "entity.{$entity_type_id}.edit_form"; if ($edit_route = $collection->get($route_name)) { $is_admin = (bool) $edit_route->getOption('_admin_route'); } $path = $base_path . '/translations'; $route = new Route($path, array('_controller' => '\\Drupal\\content_translation\\Controller\\ContentTranslationController::overview', 'entity_type_id' => $entity_type_id), array('_entity_access' => $entity_type_id . '.view', '_access_content_translation_overview' => $entity_type_id), array('parameters' => array($entity_type_id => array('type' => 'entity:' . $entity_type_id)), '_admin_route' => $is_admin)); $route_name = "entity.{$entity_type_id}.content_translation_overview"; $collection->add($route_name, $route); $route = new Route($path . '/add/{source}/{target}', array('_controller' => '\\Drupal\\content_translation\\Controller\\ContentTranslationController::add', 'source' => NULL, 'target' => NULL, '_title' => 'Add', 'entity_type_id' => $entity_type_id), array('_entity_access' => $entity_type_id . '.view', '_access_content_translation_manage' => 'create'), array('parameters' => array('source' => array('type' => 'language'), 'target' => array('type' => 'language'), $entity_type_id => array('type' => 'entity:' . $entity_type_id)), '_admin_route' => $is_admin)); $collection->add("entity.{$entity_type_id}.content_translation_add", $route); $route = new Route($path . '/edit/{language}', array('_controller' => '\\Drupal\\content_translation\\Controller\\ContentTranslationController::edit', 'language' => NULL, '_title' => 'Edit', 'entity_type_id' => $entity_type_id), array('_access_content_translation_manage' => 'update'), array('parameters' => array('language' => array('type' => 'language'), $entity_type_id => array('type' => 'entity:' . $entity_type_id)), '_admin_route' => $is_admin)); $collection->add("entity.{$entity_type_id}.content_translation_edit", $route); $route = new Route($path . '/delete/{language}', array('_entity_form' => $entity_type_id . '.content_translation_deletion', 'language' => NULL, '_title' => 'Delete', 'entity_type_id' => $entity_type_id), array('_access_content_translation_manage' => 'delete'), array('parameters' => array('language' => array('type' => 'language'), $entity_type_id => array('type' => 'entity:' . $entity_type_id)), '_admin_route' => $is_admin)); $collection->add("entity.{$entity_type_id}.content_translation_delete", $route); } }
/** * {@inheritdoc} */ public function getDerivativeDefinitions($base_plugin_definition) { // Create contextual links for translatable entity types. foreach ($this->contentTranslationManager->getSupportedEntityTypes() as $entity_type_id => $entity_type) { $this->derivatives[$entity_type_id]['title'] = t('Translate'); $this->derivatives[$entity_type_id]['route_name'] = "entity.{$entity_type_id}.content_translation_overview"; $this->derivatives[$entity_type_id]['group'] = $entity_type_id; } return parent::getDerivativeDefinitions($base_plugin_definition); }
/** * {@inheritdoc} */ public function getDerivativeDefinitions($base_plugin_definition) { // Create tabs for all possible entity types. foreach ($this->contentTranslationManager->getSupportedEntityTypes() as $entity_type_id => $entity_type) { // Find the route name for the translation overview. $translation_route_name = $entity_type->getLinkTemplate('drupal:content-translation-overview'); $this->derivatives[$translation_route_name] = array('entity_type' => $entity_type_id, 'title' => 'Translate', 'route_name' => $translation_route_name, 'base_route' => $entity_type->getLinkTemplate('canonical')) + $base_plugin_definition; } return parent::getDerivativeDefinitions($base_plugin_definition); }
/** * {@inheritdoc} */ public function getDerivativeDefinitions($base_plugin_definition) { // Create tabs for all possible entity types. foreach ($this->contentTranslationManager->getSupportedEntityTypes() as $entity_type_id => $entity_type) { // Find the route name for the translation overview. $translation_route_name = "entity.{$entity_type_id}.content_translation_overview"; $base_route_name = "entity.{$entity_type_id}.canonical"; $this->derivatives[$translation_route_name] = array('entity_type' => $entity_type_id, 'title' => $this->t('Translate'), 'route_name' => $translation_route_name, 'base_route' => $base_route_name) + $base_plugin_definition; } return parent::getDerivativeDefinitions($base_plugin_definition); }
/** * {@inheritdoc} */ protected function alterRoutes(RouteCollection $collection) { foreach ($this->contentTranslationManager->getSupportedEntityTypes() as $entity_type_id => $entity_type) { // Try to get the route from the current collection. if (!($entity_route = $collection->get($entity_type->getLinkTemplate('canonical')))) { continue; } $path = $entity_route->getPath() . '/translations'; // Inherit admin route status from edit route, if exists. $is_admin = FALSE; if ($edit_route = $collection->get($entity_type->getLinkTemplate('edit-form'))) { $is_admin = (bool) $edit_route->getOption('_admin_route'); } $route = new Route($path, array('_content' => '\\Drupal\\content_translation\\Controller\\ContentTranslationController::overview', '_entity_type_id' => $entity_type_id), array('_access_content_translation_overview' => $entity_type_id, '_permission' => 'translate any entity'), array('_access_mode' => 'ANY', 'parameters' => array('entity' => array('type' => 'entity:' . $entity_type_id), $entity_type_id => array('type' => 'entity:' . $entity_type_id)), '_admin_route' => $is_admin)); $collection->add($entity_type->getLinkTemplate('drupal:content-translation-overview'), $route); $route = new Route($path . '/add/{source}/{target}', array('_content' => '\\Drupal\\content_translation\\Controller\\ContentTranslationController::add', 'source' => NULL, 'target' => NULL, '_title' => 'Add', '_entity_type_id' => $entity_type_id), array('_permission' => 'translate any entity', '_access_content_translation_manage' => 'create'), array('_access_mode' => 'ANY', 'parameters' => array('entity' => array('type' => 'entity:' . $entity_type_id), $entity_type_id => array('type' => 'entity:' . $entity_type_id)), '_admin_route' => $is_admin)); $collection->add("content_translation.translation_add_{$entity_type_id}", $route); $route = new Route($path . '/edit/{language}', array('_content' => '\\Drupal\\content_translation\\Controller\\ContentTranslationController::edit', 'language' => NULL, '_title' => 'Edit', '_entity_type_id' => $entity_type_id), array('_permission' => 'translate any entity', '_access_content_translation_manage' => 'update'), array('_access_mode' => 'ANY', 'parameters' => array('entity' => array('type' => 'entity:' . $entity_type_id), $entity_type_id => array('type' => 'entity:' . $entity_type_id)), '_admin_route' => $is_admin)); $collection->add("content_translation.translation_edit_{$entity_type_id}", $route); $route = new Route($path . '/delete/{language}', array('_form' => '\\Drupal\\content_translation\\Form\\ContentTranslationDeleteForm', 'language' => NULL, '_title' => 'Delete', '_entity_type_id' => $entity_type_id), array('_permission' => 'translate any entity', '_access_content_translation_manage' => 'delete'), array('parameters' => array('entity' => array('type' => 'entity:' . $entity_type_id), $entity_type_id => array('type' => 'entity:' . $entity_type_id)), '_access_mode' => 'ANY', '_admin_route' => $is_admin)); $collection->add("content_translation.delete_{$entity_type_id}", $route); } }