123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197 |
- <?php
- namespace Drupal\heartbeat8;
- use Drupal\Core\Entity\EntityTypeInterface;
- use Drupal\Core\Entity\Routing\AdminHtmlRouteProvider;
- use Symfony\Component\Routing\Route;
- /**
- * Provides routes for Heartbeat stream entities.
- *
- * @see Drupal\Core\Entity\Routing\AdminHtmlRouteProvider
- * @see Drupal\Core\Entity\Routing\DefaultHtmlRouteProvider
- */
- class HeartbeatStreamHtmlRouteProvider extends AdminHtmlRouteProvider {
- /**
- * {@inheritdoc}
- */
- public function getRoutes(EntityTypeInterface $entity_type) {
- $collection = parent::getRoutes($entity_type);
- $entity_type_id = $entity_type->id();
- if ($collection_route = $this->getCollectionRoute($entity_type)) {
- $collection->add("entity.{$entity_type_id}.collection", $collection_route);
- }
- if ($history_route = $this->getHistoryRoute($entity_type)) {
- $collection->add("entity.{$entity_type_id}.version_history", $history_route);
- }
- if ($revision_route = $this->getRevisionRoute($entity_type)) {
- $collection->add("entity.{$entity_type_id}.revision", $revision_route);
- }
- if ($revert_route = $this->getRevisionRevertRoute($entity_type)) {
- $collection->add("entity.{$entity_type_id}.revision_revert", $revert_route);
- }
- if ($delete_route = $this->getRevisionDeleteRoute($entity_type)) {
- $collection->add("entity.{$entity_type_id}.revision_delete", $delete_route);
- }
- if ($settings_form_route = $this->getSettingsFormRoute($entity_type)) {
- $collection->add("$entity_type_id.settings", $settings_form_route);
- }
- return $collection;
- }
- /**
- * Gets the collection route.
- *
- * @param \Drupal\Core\Entity\EntityTypeInterface $entity_type
- * The entity type.
- *
- * @return \Symfony\Component\Routing\Route|null
- * The generated route, if available.
- */
- protected function getCollectionRoute(EntityTypeInterface $entity_type) {
- if ($entity_type->hasLinkTemplate('collection') && $entity_type->hasListBuilderClass()) {
- $entity_type_id = $entity_type->id();
- $route = new Route($entity_type->getLinkTemplate('collection'));
- $route
- ->setDefaults([
- '_entity_list' => $entity_type_id,
- '_title' => "{$entity_type->getLabel()} list",
- ])
- ->setRequirement('_permission', 'access heartbeat stream overview')
- ->setOption('_admin_route', TRUE);
- return $route;
- }
- }
- /**
- * Gets the version history route.
- *
- * @param \Drupal\Core\Entity\EntityTypeInterface $entity_type
- * The entity type.
- *
- * @return \Symfony\Component\Routing\Route|null
- * The generated route, if available.
- */
- protected function getHistoryRoute(EntityTypeInterface $entity_type) {
- if ($entity_type->hasLinkTemplate('version-history')) {
- $route = new Route($entity_type->getLinkTemplate('version-history'));
- $route
- ->setDefaults([
- '_title' => "{$entity_type->getLabel()} revisions",
- '_controller' => '\Drupal\heartbeat8\Controller\HeartbeatStreamController::revisionOverview',
- ])
- ->setRequirement('_permission', 'access heartbeat stream revisions')
- ->setOption('_admin_route', TRUE);
- return $route;
- }
- }
- /**
- * Gets the revision route.
- *
- * @param \Drupal\Core\Entity\EntityTypeInterface $entity_type
- * The entity type.
- *
- * @return \Symfony\Component\Routing\Route|null
- * The generated route, if available.
- */
- protected function getRevisionRoute(EntityTypeInterface $entity_type) {
- if ($entity_type->hasLinkTemplate('revision')) {
- $route = new Route($entity_type->getLinkTemplate('revision'));
- $route
- ->setDefaults([
- '_controller' => '\Drupal\heartbeat8\Controller\HeartbeatStreamController::revisionShow',
- '_title_callback' => '\Drupal\heartbeat8\Controller\HeartbeatStreamController::revisionPageTitle',
- ])
- ->setRequirement('_permission', 'access heartbeat stream revisions')
- ->setOption('_admin_route', TRUE);
- return $route;
- }
- }
- /**
- * Gets the revision revert route.
- *
- * @param \Drupal\Core\Entity\EntityTypeInterface $entity_type
- * The entity type.
- *
- * @return \Symfony\Component\Routing\Route|null
- * The generated route, if available.
- */
- protected function getRevisionRevertRoute(EntityTypeInterface $entity_type) {
- if ($entity_type->hasLinkTemplate('revision_revert')) {
- $route = new Route($entity_type->getLinkTemplate('revision_revert'));
- $route
- ->setDefaults([
- '_form' => '\Drupal\heartbeat8\Form\HeartbeatStreamRevisionRevertForm',
- '_title' => 'Revert to earlier revision',
- ])
- ->setRequirement('_permission', 'revert all heartbeat stream revisions')
- ->setOption('_admin_route', TRUE);
- return $route;
- }
- }
- /**
- * Gets the revision delete route.
- *
- * @param \Drupal\Core\Entity\EntityTypeInterface $entity_type
- * The entity type.
- *
- * @return \Symfony\Component\Routing\Route|null
- * The generated route, if available.
- */
- protected function getRevisionDeleteRoute(EntityTypeInterface $entity_type) {
- if ($entity_type->hasLinkTemplate('revision_delete')) {
- $route = new Route($entity_type->getLinkTemplate('revision_delete'));
- $route
- ->setDefaults([
- '_form' => '\Drupal\heartbeat8\Form\HeartbeatStreamRevisionDeleteForm',
- '_title' => 'Delete earlier revision',
- ])
- ->setRequirement('_permission', 'delete all heartbeat stream revisions')
- ->setOption('_admin_route', TRUE);
- return $route;
- }
- }
- /**
- * Gets the settings form route.
- *
- * @param \Drupal\Core\Entity\EntityTypeInterface $entity_type
- * The entity type.
- *
- * @return \Symfony\Component\Routing\Route|null
- * The generated route, if available.
- */
- protected function getSettingsFormRoute(EntityTypeInterface $entity_type) {
- if (!$entity_type->getBundleEntityType()) {
- $route = new Route("/admin/structure/{$entity_type->id()}/settings");
- $route
- ->setDefaults([
- '_form' => 'Drupal\heartbeat8\Form\HeartbeatStreamSettingsForm',
- '_title' => "{$entity_type->getLabel()} settings",
- ])
- ->setRequirement('_permission', $entity_type->getAdminPermission())
- ->setOption('_admin_route', TRUE);
- return $route;
- }
- }
- }
|