123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148 |
- <?php
- namespace Drupal\statusmessage;
- use Drupal\Core\Entity\EntityTypeInterface;
- use Drupal\Core\Entity\Routing\AdminHtmlRouteProvider;
- use Symfony\Component\Routing\Route;
- /**
- * Provides routes for Status entities.
- *
- * @see Drupal\Core\Entity\Routing\AdminHtmlRouteProvider
- * @see Drupal\Core\Entity\Routing\DefaultHtmlRouteProvider
- */
- class StatusHtmlRouteProvider 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 ($add_form_route = $this->getAddFormRoute($entity_type)) {
- $collection->add("entity.{$entity_type_id}.add_form", $add_form_route);
- }
- $add_page_route = $this->getAddPageRoute($entity_type);
- $collection->add("$entity_type_id.add_page", $add_page_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', 'view status entities')
- ->setOption('_admin_route', TRUE);
- return $route;
- }
- }
- /**
- * Gets the add-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 getAddFormRoute(EntityTypeInterface $entity_type) {
- if ($entity_type->hasLinkTemplate('add-form')) {
- $entity_type_id = $entity_type->id();
- $parameters = [
- $entity_type_id => ['type' => 'entity:' . $entity_type_id],
- ];
- $route = new Route($entity_type->getLinkTemplate('add-form'));
- $bundle_entity_type_id = $entity_type->getBundleEntityType();
- // Content entities with bundles are added via a dedicated controller.
- $route
- ->setDefaults([
- '_controller' => 'Drupal\statusmessage\Controller\StatusAddController::addForm',
- '_title_callback' => 'Drupal\statusmessage\Controller\StatusAddController::getAddFormTitle',
- ])
- ->setRequirement('_entity_create_access', $entity_type_id . ':{' . $bundle_entity_type_id . '}');
- $parameters[$bundle_entity_type_id] = ['type' => 'entity:' . $bundle_entity_type_id];
- $route
- ->setOption('parameters', $parameters)
- ->setOption('_admin_route', TRUE);
- return $route;
- }
- }
- /**
- * Gets the add page route.
- *
- * @param \Drupal\Core\Entity\EntityTypeInterface $entity_type
- * The entity type.
- *
- * @return \Symfony\Component\Routing\Route|null
- * The generated route, if available.
- */
- protected function getAddPageRoute(EntityTypeInterface $entity_type) {
- $route = new Route("/admin/structure/{$entity_type->id()}/add");
- $route
- ->setDefaults([
- '_controller' => 'Drupal\statusmessage\Controller\StatusAddController::add',
- '_title' => "Add {$entity_type->getLabel()}",
- ])
- ->setRequirement('_entity_create_access', $entity_type->id())
- ->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\statusmessage\Form\StatusSettingsForm',
- '_title' => "{$entity_type->getLabel()} settings",
- ])
- ->setRequirement('_permission', $entity_type->getAdminPermission())
- ->setOption('_admin_route', TRUE);
- return $route;
- }
- }
- }
|