Commit f6acda66 authored by Nayla Socarras Monzon's avatar Nayla Socarras Monzon
Browse files

3486841: Add menu item for re-index site

parent a25d54fe
Loading
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -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
+9 −0
Original line number Diff line number Diff line
@@ -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'
+30 −2
Original line number Diff line number Diff line
@@ -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;
@@ -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.
   *
@@ -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,
@@ -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;
@@ -163,6 +175,7 @@ class ToolbarController extends ControllerBase {
    $this->cacheMenu = $cache_menu;
    $this->twig = $twig;
    $this->themeRegistry = $theme_registry;
    $this->searchPageRepository = $search_page_repository;
  }

  /**
@@ -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')
    );
  }

@@ -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());
}

}