Loading admin_toolbar_tools/admin_toolbar_tools.links.menu.yml +7 −0 Original line number Diff line number Diff line Loading @@ -90,3 +90,10 @@ admin_toolbar_tools.settings: description: 'Configure the Admin Toolbar Tools module.' route_name: admin_toolbar_tools.settings parent: system.admin_config_ui system.run_reindex_site: title: 'Re-index Site' route_name: admin_toolbar.run.reindex.site menu_name: admin parent: admin_toolbar_tools.help weight: -9 admin_toolbar_tools/admin_toolbar_tools.routing.yml +9 −0 Original line number Diff line number Diff line Loading @@ -95,3 +95,12 @@ admin_toolbar_tools.settings: _title: 'Admin Toolbar Tools settings' requirements: _permission: 'administer site configuration' admin_toolbar.run.reindex.site: path: '/reindex-site' defaults: _controller: '\Drupal\admin_toolbar_tools\Controller\ToolbarController::runReindexSite' _title: 'Re-index Site' requirements: _permission: 'administer site configuration' _csrf_token: 'TRUE' admin_toolbar_tools/src/Controller/ToolbarController.php +30 −2 Original line number Diff line number Diff line Loading @@ -13,6 +13,7 @@ use Drupal\Core\Menu\MenuLinkManagerInterface; use Drupal\Core\Plugin\CachedDiscoveryClearerInterface; use Drupal\Core\Template\TwigEnvironment; use Drupal\Core\Theme\Registry; use Drupal\search\SearchPageRepositoryInterface; use Symfony\Component\DependencyInjection\ContainerInterface; use Symfony\Component\HttpFoundation\RedirectResponse; use Symfony\Component\HttpFoundation\RequestStack; Loading Loading @@ -108,6 +109,13 @@ class ToolbarController extends ControllerBase { */ protected $themeRegistry; /** * The search page repository service. * * @var \Drupal\search\SearchPageRepositoryInterface */ protected SearchPageRepositoryInterface $searchPageRepository; /** * Constructs a ToolbarController object. * Loading Loading @@ -135,6 +143,8 @@ class ToolbarController extends ControllerBase { * A TwigEnvironment instance. * @param \Drupal\Core\Theme\Registry $theme_registry * The theme.registry service. * @param \Drupal\search\SearchPageRepositoryInterface $searchPageRepository * The search page repository service. */ public function __construct( CronInterface $cron, Loading @@ -149,7 +159,9 @@ class ToolbarController extends ControllerBase { CacheBackendInterface $cache_menu, TwigEnvironment $twig, // phpcs:ignore Drupal.Functions.MultiLineFunctionDeclaration.MissingTrailingComma Registry $theme_registry Registry $theme_registry, SearchPageRepositoryInterface $search_page_repository, ) { $this->cron = $cron; $this->menuLinkManager = $menuLinkManager; Loading @@ -163,6 +175,7 @@ class ToolbarController extends ControllerBase { $this->cacheMenu = $cache_menu; $this->twig = $twig; $this->themeRegistry = $theme_registry; $this->searchPageRepository = $search_page_repository; } /** Loading @@ -181,7 +194,8 @@ class ToolbarController extends ControllerBase { $container->get('plugin.cache_clearer'), $container->get('cache.menu'), $container->get('twig'), $container->get('theme.registry') $container->get('theme.registry'), $container->get('search.search_page_repository') ); } Loading Loading @@ -293,4 +307,18 @@ class ToolbarController extends ControllerBase { return new RedirectResponse($this->reloadPage()); } /** * Reindexes all active search pages. */ public function runReindexSite() { // Ask each active search page to mark itself for re-index. foreach ($this->searchPageRepository->getIndexableSearchPages() as $entity) { $entity->getPlugin()->markForReindex(); } // Run the cron to process the reindexing. $this->cron->run(); $this->messenger()->addMessage($this->t('All search indexes have been rebuilt.')); return new RedirectResponse($this->reloadPage()); } } Loading
admin_toolbar_tools/admin_toolbar_tools.links.menu.yml +7 −0 Original line number Diff line number Diff line Loading @@ -90,3 +90,10 @@ admin_toolbar_tools.settings: description: 'Configure the Admin Toolbar Tools module.' route_name: admin_toolbar_tools.settings parent: system.admin_config_ui system.run_reindex_site: title: 'Re-index Site' route_name: admin_toolbar.run.reindex.site menu_name: admin parent: admin_toolbar_tools.help weight: -9
admin_toolbar_tools/admin_toolbar_tools.routing.yml +9 −0 Original line number Diff line number Diff line Loading @@ -95,3 +95,12 @@ admin_toolbar_tools.settings: _title: 'Admin Toolbar Tools settings' requirements: _permission: 'administer site configuration' admin_toolbar.run.reindex.site: path: '/reindex-site' defaults: _controller: '\Drupal\admin_toolbar_tools\Controller\ToolbarController::runReindexSite' _title: 'Re-index Site' requirements: _permission: 'administer site configuration' _csrf_token: 'TRUE'
admin_toolbar_tools/src/Controller/ToolbarController.php +30 −2 Original line number Diff line number Diff line Loading @@ -13,6 +13,7 @@ use Drupal\Core\Menu\MenuLinkManagerInterface; use Drupal\Core\Plugin\CachedDiscoveryClearerInterface; use Drupal\Core\Template\TwigEnvironment; use Drupal\Core\Theme\Registry; use Drupal\search\SearchPageRepositoryInterface; use Symfony\Component\DependencyInjection\ContainerInterface; use Symfony\Component\HttpFoundation\RedirectResponse; use Symfony\Component\HttpFoundation\RequestStack; Loading Loading @@ -108,6 +109,13 @@ class ToolbarController extends ControllerBase { */ protected $themeRegistry; /** * The search page repository service. * * @var \Drupal\search\SearchPageRepositoryInterface */ protected SearchPageRepositoryInterface $searchPageRepository; /** * Constructs a ToolbarController object. * Loading Loading @@ -135,6 +143,8 @@ class ToolbarController extends ControllerBase { * A TwigEnvironment instance. * @param \Drupal\Core\Theme\Registry $theme_registry * The theme.registry service. * @param \Drupal\search\SearchPageRepositoryInterface $searchPageRepository * The search page repository service. */ public function __construct( CronInterface $cron, Loading @@ -149,7 +159,9 @@ class ToolbarController extends ControllerBase { CacheBackendInterface $cache_menu, TwigEnvironment $twig, // phpcs:ignore Drupal.Functions.MultiLineFunctionDeclaration.MissingTrailingComma Registry $theme_registry Registry $theme_registry, SearchPageRepositoryInterface $search_page_repository, ) { $this->cron = $cron; $this->menuLinkManager = $menuLinkManager; Loading @@ -163,6 +175,7 @@ class ToolbarController extends ControllerBase { $this->cacheMenu = $cache_menu; $this->twig = $twig; $this->themeRegistry = $theme_registry; $this->searchPageRepository = $search_page_repository; } /** Loading @@ -181,7 +194,8 @@ class ToolbarController extends ControllerBase { $container->get('plugin.cache_clearer'), $container->get('cache.menu'), $container->get('twig'), $container->get('theme.registry') $container->get('theme.registry'), $container->get('search.search_page_repository') ); } Loading Loading @@ -293,4 +307,18 @@ class ToolbarController extends ControllerBase { return new RedirectResponse($this->reloadPage()); } /** * Reindexes all active search pages. */ public function runReindexSite() { // Ask each active search page to mark itself for re-index. foreach ($this->searchPageRepository->getIndexableSearchPages() as $entity) { $entity->getPlugin()->markForReindex(); } // Run the cron to process the reindexing. $this->cron->run(); $this->messenger()->addMessage($this->t('All search indexes have been rebuilt.')); return new RedirectResponse($this->reloadPage()); } }