cforge-2.0.x-dev/src/EventSubscriber/RouteSubscriber.php
src/EventSubscriber/RouteSubscriber.php
<?php
namespace Drupal\cforge\EventSubscriber;
use Drupal\Core\Routing\RouteSubscriberBase;
use Drupal\Core\Routing\RoutingEvents;
use Symfony\Component\Routing\RouteCollection;
use Symfony\Component\Routing\Route;
/**
* Alter routes.
*
* Change some routes into admin routes. Change some route titles.
*/
class RouteSubscriber extends RouteSubscriberBase {
/**
* {@inheritDoc}
*
* Anything the committee does shouldn't be an admin_route.
*/
protected function alterRoutes(RouteCollection $collection) {
$route_names = [
'entity.taxonomy_term.edit_form',
'entity.taxonomy_term.delete_form',
'entity.user.edit_form',
];
foreach ($collection as $route_name => &$route) {
if (in_array($route_name, $route_names)) {
$route->setOption('_admin_route', FALSE);
}
}
// These routes have new links for committee in the tools menu.
$collection->get('entity.user.collection')
->setDefault('_title', t('Manage @name', ['@name' => t('People')]));
$collection->get('system.admin_content')
->setDefault('_title', t('Manage @name', ['@name' => t('Content')]))
->setRequirements(['_permission' => 'access content overview']);
// Hamlets theme does not permit the adding of new menus.
if ($route = $collection->get('entity.menu.add_form')) {
$route->setRequirement('_permission', '_none_');
}
// Setup route only appears if no users have been created.
$uids = \Drupal::entityTypeManager()->getStorage('user')->getQuery()->accessCheck(FALSE)->execute();
if (count($uids) < 3) {
$route = (new Route('cforge/setup'))
->setDefaults(['_form' => 'Drupal\cforge\Setup', '_title' => 'Installation options'])
->setRequirement('_permission', 'access administration pages');
$collection->add('cforge.setup', $route);
}
// Make all page titles under user/ the same
// If not overridden, this works for non-views pages
foreach ($collection->all() as $rid => $route) {
if (substr($route->getPath(), 0, 12) == '/user/{user}') {
$route->setDefault('_title_callback', '\Drupal\cforge\Controller\General::userTitle');
}
}
}
/**
* {@inheritdoc}
*/
public static function getSubscribedEvents() : array {
$events[RoutingEvents::ALTER][] = 'onAlterRoutes';
return $events;
}
}
