Loading sitewide_alert.module +7 −20 Original line number Diff line number Diff line Loading @@ -5,7 +5,6 @@ * Contains sitewide_alert.module. */ use Drupal\Core\Cache\CacheableMetadata; use Drupal\Core\Render\Element; use Drupal\Core\Routing\RouteMatchInterface; Loading Loading @@ -88,24 +87,14 @@ function sitewide_alert_theme_suggestions_sitewide_alert(array $variables) { * Implements hook_page_top(). */ function sitewide_alert_page_top(array &$page_top) { // Do not show alert on admin pages if we are not configured to do so - OR - // don't show if automatic refresh is disabled and there are no active alerts. // Return an empty build with cache-metadata to force it to invalidate when // settings change or a new alert is saved. $sitewide_settings = \Drupal::config('sitewide_alert.settings'); $cache = CacheableMetadata::createFromObject($sitewide_settings); $cache->addCacheTags(['sitewide_alert_list']) ->addCacheContexts(['languages']); if ((\Drupal::service('router.admin_context')->isAdminRoute() && !$sitewide_settings->get('show_on_admin')) || (!$sitewide_settings->get('automatic_refresh') && !\Drupal::service('sitewide_alert.sitewide_alert_manager')->activeVisibleSitewideAlerts())) { $build = []; $cache->applyTo($build); $page_top['sitewide_alert'] = $build; // Do not show alert on admin pages if we are not configured to do so. if (\Drupal::service('router.admin_context')->isAdminRoute() && !\Drupal::config('sitewide_alert.settings')->get('show_on_admin')) { return; } $build = [ $page_top['sitewide_alert'] = [ '#markup' => '<div id="sitewide-alert"></div>', '#attached' => [ 'library' => [ Loading @@ -113,12 +102,10 @@ function sitewide_alert_page_top(array &$page_top) { ], 'drupalSettings' => [ 'sitewideAlert' => [ 'refreshInterval' => ($sitewide_settings->get('refresh_interval') ?? 15) * 1000, 'automaticRefresh' => ($sitewide_settings->get('automatic_refresh') == 1), 'refreshInterval' => (\Drupal::config('sitewide_alert.settings')->get('refresh_interval') ?? 15) * 1000, 'automaticRefresh' => (\Drupal::config('sitewide_alert.settings')->get('automatic_refresh') == 1), ], ], ], ]; $cache->applyTo($build); $page_top['sitewide_alert'] = $build; } tests/src/Functional/SitewideAlertTest.phpdeleted 100644 → 0 +0 −63 Original line number Diff line number Diff line <?php declare(strict_types=1); namespace Drupal\Tests\sitewide_alert\Functional; use Drupal\Tests\BrowserTestBase; use Drupal\Tests\sitewide_alert\Traits\SitewideAlertTestTrait; /** * Defines a class for testing site-wide alert functionality. * * @group sitewide_alert */ final class SitewideAlertTest extends BrowserTestBase { use SitewideAlertTestTrait; /** * {@inheritdoc} */ public static $modules = ['sitewide_alert']; /** * {@inheritdoc} */ protected $defaultTheme = 'stark'; /** * Tests loading of alerts without auto-refresh. * * Tests that if there aren't active alerts and auto-refresh is off, nothing * loads. */ public function testAlertsNotLoadedIfNonActiveAndAutoRefreshDisabled(): void { $this->drupalGet(''); $assert = $this->assertSession(); $assert->elementExists('css', '#sitewide-alert'); \Drupal::configFactory()->getEditable('sitewide_alert.settings')->set('automatic_refresh', FALSE)->save(); $this->drupalGet(''); $assert->elementNotExists('css', '#sitewide-alert'); $this->createSiteWideAlert(); $this->drupalGet(''); $assert->elementExists('css', '#sitewide-alert'); } /** * Tests visibility on admin pages. */ public function testAlertsNotShownOnAdminPages(): void { $this->drupalLogin($this->createUser([], NULL, TRUE)); $this->drupalGet('/admin/config'); $assert = $this->assertSession(); $assert->elementNotExists('css', '#sitewide-alert'); \Drupal::configFactory()->getEditable('sitewide_alert.settings')->set('show_on_admin', TRUE)->save(); $this->drupalGet('/admin/config'); $assert->elementExists('css', '#sitewide-alert'); } } Loading
sitewide_alert.module +7 −20 Original line number Diff line number Diff line Loading @@ -5,7 +5,6 @@ * Contains sitewide_alert.module. */ use Drupal\Core\Cache\CacheableMetadata; use Drupal\Core\Render\Element; use Drupal\Core\Routing\RouteMatchInterface; Loading Loading @@ -88,24 +87,14 @@ function sitewide_alert_theme_suggestions_sitewide_alert(array $variables) { * Implements hook_page_top(). */ function sitewide_alert_page_top(array &$page_top) { // Do not show alert on admin pages if we are not configured to do so - OR - // don't show if automatic refresh is disabled and there are no active alerts. // Return an empty build with cache-metadata to force it to invalidate when // settings change or a new alert is saved. $sitewide_settings = \Drupal::config('sitewide_alert.settings'); $cache = CacheableMetadata::createFromObject($sitewide_settings); $cache->addCacheTags(['sitewide_alert_list']) ->addCacheContexts(['languages']); if ((\Drupal::service('router.admin_context')->isAdminRoute() && !$sitewide_settings->get('show_on_admin')) || (!$sitewide_settings->get('automatic_refresh') && !\Drupal::service('sitewide_alert.sitewide_alert_manager')->activeVisibleSitewideAlerts())) { $build = []; $cache->applyTo($build); $page_top['sitewide_alert'] = $build; // Do not show alert on admin pages if we are not configured to do so. if (\Drupal::service('router.admin_context')->isAdminRoute() && !\Drupal::config('sitewide_alert.settings')->get('show_on_admin')) { return; } $build = [ $page_top['sitewide_alert'] = [ '#markup' => '<div id="sitewide-alert"></div>', '#attached' => [ 'library' => [ Loading @@ -113,12 +102,10 @@ function sitewide_alert_page_top(array &$page_top) { ], 'drupalSettings' => [ 'sitewideAlert' => [ 'refreshInterval' => ($sitewide_settings->get('refresh_interval') ?? 15) * 1000, 'automaticRefresh' => ($sitewide_settings->get('automatic_refresh') == 1), 'refreshInterval' => (\Drupal::config('sitewide_alert.settings')->get('refresh_interval') ?? 15) * 1000, 'automaticRefresh' => (\Drupal::config('sitewide_alert.settings')->get('automatic_refresh') == 1), ], ], ], ]; $cache->applyTo($build); $page_top['sitewide_alert'] = $build; }
tests/src/Functional/SitewideAlertTest.phpdeleted 100644 → 0 +0 −63 Original line number Diff line number Diff line <?php declare(strict_types=1); namespace Drupal\Tests\sitewide_alert\Functional; use Drupal\Tests\BrowserTestBase; use Drupal\Tests\sitewide_alert\Traits\SitewideAlertTestTrait; /** * Defines a class for testing site-wide alert functionality. * * @group sitewide_alert */ final class SitewideAlertTest extends BrowserTestBase { use SitewideAlertTestTrait; /** * {@inheritdoc} */ public static $modules = ['sitewide_alert']; /** * {@inheritdoc} */ protected $defaultTheme = 'stark'; /** * Tests loading of alerts without auto-refresh. * * Tests that if there aren't active alerts and auto-refresh is off, nothing * loads. */ public function testAlertsNotLoadedIfNonActiveAndAutoRefreshDisabled(): void { $this->drupalGet(''); $assert = $this->assertSession(); $assert->elementExists('css', '#sitewide-alert'); \Drupal::configFactory()->getEditable('sitewide_alert.settings')->set('automatic_refresh', FALSE)->save(); $this->drupalGet(''); $assert->elementNotExists('css', '#sitewide-alert'); $this->createSiteWideAlert(); $this->drupalGet(''); $assert->elementExists('css', '#sitewide-alert'); } /** * Tests visibility on admin pages. */ public function testAlertsNotShownOnAdminPages(): void { $this->drupalLogin($this->createUser([], NULL, TRUE)); $this->drupalGet('/admin/config'); $assert = $this->assertSession(); $assert->elementNotExists('css', '#sitewide-alert'); \Drupal::configFactory()->getEditable('sitewide_alert.settings')->set('show_on_admin', TRUE)->save(); $this->drupalGet('/admin/config'); $assert->elementExists('css', '#sitewide-alert'); } }