content_entity_base-8.x-1.x-dev/src/Entity/Routing/RevisionHtmlRouteProvider.php
src/Entity/Routing/RevisionHtmlRouteProvider.php
<?php namespace Drupal\content_entity_base\Entity\Routing; use Drupal\Core\Entity\EntityTypeInterface; use Drupal\Core\Entity\Routing\EntityRouteProviderInterface; use Symfony\Component\Routing\Route; use Symfony\Component\Routing\RouteCollection; class RevisionHtmlRouteProvider implements EntityRouteProviderInterface { public function getRoutes(EntityTypeInterface $entity_type) { $collection = new RouteCollection(); $route = $this->revisionHistoryRoute($entity_type); $collection->add('entity.' . $entity_type->id() . '.version_history', $route); $route = $this->revisionViewRoute($entity_type); $collection->add('entity.' . $entity_type->id() . '.revision', $route); $route = $this->revisionRevertRoute($entity_type); $collection->add('entity.' . $entity_type->id() . '.revision_revert', $route); $route = $this->revisionDeleteRoute($entity_type); $collection->add('entity.' . $entity_type->id() . '.revision_delete', $route); return $collection; } protected function revisionHistoryRoute(EntityTypeInterface $entity_type) { $route = new Route($entity_type->getLinkTemplate('version-history')); $route->setDefault('_title', 'Revisions'); $route->setDefault('_controller', '\Drupal\content_entity_base\Entity\Controller\RevisionController::revisionOverviewController'); $route->setRequirement('_entity_access_revision', $entity_type->id() . '.list'); $route->setOption('parameters', [ $entity_type->id() => [ 'type' => 'entity:' . $entity_type->id(), 'force_entity_enhancing' => TRUE, ], ]); return $route; } protected function revisionViewRoute(EntityTypeInterface $entity_type) { $route = new Route($entity_type->getLinkTemplate('revision')); $route->setDefault('_title_callback', '\Drupal\content_entity_base\Entity\Controller\RevisionController::revisionTitle'); $route->setDefault('_controller', '\Drupal\content_entity_base\Entity\Controller\RevisionController::showRevision'); $route->setRequirement('_entity_access_revision', $entity_type->id() . '.view'); $route->setOption('parameters', [ $entity_type->id() => [ 'type' => 'entity:' . $entity_type->id(), ], $entity_type->id() . '_revision' => [ 'type' => 'entity_revision:' . $entity_type->id(), ], ]); return $route; } protected function revisionRevertRoute(EntityTypeInterface $entity_type) { $route = new Route($entity_type->getLinkTemplate('revision-revert')); $route->setDefault('_form', 'Drupal\content_entity_base\Entity\Form\EntityRevisionRevertForm'); $route->setDefault('_title', 'Revert to earlier revision'); $route->setRequirement('_entity_access_revision', $entity_type->id() . '.update'); $route->setOption('parameters', [ $entity_type->id() => [ 'type' => 'entity:' . $entity_type->id(), ], $entity_type->id() . '_revision' => [ 'type' => 'entity_revision:' . $entity_type->id(), ], ]); return $route; } protected function revisionDeleteRoute(EntityTypeInterface $entity_type) { $route = new Route($entity_type->getLinkTemplate('revision-delete')); $route->setDefault('_form', 'Drupal\content_entity_base\Entity\Form\EntityRevisionDeleteForm'); $route->setDefault('_title', 'Delete earlier revision'); $route->setRequirement('_entity_access_revision', $entity_type->id() . '.delete'); $route->setOption('parameters', [ $entity_type->id() => [ 'type' => 'entity:' . $entity_type->id(), ], $entity_type->id() . '_revision' => [ 'type' => 'entity_revision:' . $entity_type->id(), ], ]); return $route; } }