diff --git a/composer.json b/composer.json index 3ab95dc2ff9c9b6f80e8984f67e3b6ea39052d75..950907ebf6bc9fdb7c127835119d140bb47e4d2c 100644 --- a/composer.json +++ b/composer.json @@ -87,7 +87,7 @@ "desandro/masonry": "4.2", "dimsemenov/magnific-popup": "1.1", "drupal/addtocalendar": "3.2", - "drupal/admin_toolbar": "3.0.2", + "drupal/admin_toolbar": "3.0.3", "drupal/administerusersbyrole": "3.0", "drupal/allowed_formats": "1.3", "drupal/anchor_link": "1.7", diff --git a/composer.lock b/composer.lock index 2e4118d494a5620e6f190fdca6e12d06fffbe3aa..248927e2e47c18076deaf22a788412933f3c1353 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "dee17df1727a8fa0b885fa33c86cafba", + "content-hash": "b3430fd1898aad2ea9ce59a0741c5924", "packages": [ { "name": "alchemy/zippy", @@ -1710,17 +1710,17 @@ }, { "name": "drupal/admin_toolbar", - "version": "3.0.2", + "version": "3.0.3", "source": { "type": "git", "url": "https://git.drupalcode.org/project/admin_toolbar.git", - "reference": "3.0.2" + "reference": "3.0.3" }, "dist": { "type": "zip", - "url": "https://ftp.drupal.org/files/projects/admin_toolbar-3.0.2.zip", - "reference": "3.0.2", - "shasum": "a3b7a8030695d0c1d49ec57786321e2dd142184a" + "url": "https://ftp.drupal.org/files/projects/admin_toolbar-3.0.3.zip", + "reference": "3.0.3", + "shasum": "ce735c931c0bd6da79bd8e45ca459d61015bbe44" }, "require": { "drupal/core": "^8.8.0 || ^9.0" @@ -1731,8 +1731,8 @@ "type": "drupal-module", "extra": { "drupal": { - "version": "3.0.2", - "datestamp": "1629907124", + "version": "3.0.3", + "datestamp": "1632322497", "security-coverage": { "status": "covered", "message": "Covered by Drupal's security advisory policy" diff --git a/vendor/composer/installed.json b/vendor/composer/installed.json index c3d3fbae53f5db3b3205afd9251efd7cf7131e8f..242322e56fd760bf38d2cbbff0e8af9b2d50cfd4 100644 --- a/vendor/composer/installed.json +++ b/vendor/composer/installed.json @@ -1751,18 +1751,18 @@ }, { "name": "drupal/admin_toolbar", - "version": "3.0.2", - "version_normalized": "3.0.2.0", + "version": "3.0.3", + "version_normalized": "3.0.3.0", "source": { "type": "git", "url": "https://git.drupalcode.org/project/admin_toolbar.git", - "reference": "3.0.2" + "reference": "3.0.3" }, "dist": { "type": "zip", - "url": "https://ftp.drupal.org/files/projects/admin_toolbar-3.0.2.zip", - "reference": "3.0.2", - "shasum": "a3b7a8030695d0c1d49ec57786321e2dd142184a" + "url": "https://ftp.drupal.org/files/projects/admin_toolbar-3.0.3.zip", + "reference": "3.0.3", + "shasum": "ce735c931c0bd6da79bd8e45ca459d61015bbe44" }, "require": { "drupal/core": "^8.8.0 || ^9.0" @@ -1773,8 +1773,8 @@ "type": "drupal-module", "extra": { "drupal": { - "version": "3.0.2", - "datestamp": "1629907124", + "version": "3.0.3", + "datestamp": "1632322497", "security-coverage": { "status": "covered", "message": "Covered by Drupal's security advisory policy" diff --git a/vendor/composer/installed.php b/vendor/composer/installed.php index ddc65fc6a3bbd8b9aa0b61b9f468a5381a77d3f8..5efa072f95a129e25343637121d6bbe7b63d7e8f 100644 --- a/vendor/composer/installed.php +++ b/vendor/composer/installed.php @@ -5,7 +5,7 @@ 'type' => 'project', 'install_path' => __DIR__ . '/../../', 'aliases' => array(), - 'reference' => 'df61ac4c80357a6ff9e6e56957f55630f42d3212', + 'reference' => 'b1aa9db618db05fa20645711143c5efd92e8829d', 'name' => 'osu-asc-webservices/d8-upstream', 'dev' => true, ), @@ -284,12 +284,12 @@ 'dev_requirement' => false, ), 'drupal/admin_toolbar' => array( - 'pretty_version' => '3.0.2', - 'version' => '3.0.2.0', + 'pretty_version' => '3.0.3', + 'version' => '3.0.3.0', 'type' => 'drupal-module', 'install_path' => __DIR__ . '/../../web/modules/admin_toolbar', 'aliases' => array(), - 'reference' => '3.0.2', + 'reference' => '3.0.3', 'dev_requirement' => false, ), 'drupal/administerusersbyrole' => array( @@ -2104,7 +2104,7 @@ 'type' => 'project', 'install_path' => __DIR__ . '/../../', 'aliases' => array(), - 'reference' => 'df61ac4c80357a6ff9e6e56957f55630f42d3212', + 'reference' => 'b1aa9db618db05fa20645711143c5efd92e8829d', 'dev_requirement' => false, ), 'pantheon-systems/quicksilver-pushback' => array( diff --git a/web/modules/admin_toolbar/admin_toolbar.info.yml b/web/modules/admin_toolbar/admin_toolbar.info.yml index 6d6b70d1deb9ede2dee714a6360635085b5b3841..5f7085cfee2124af65380ea8a9727ff21d25071e 100644 --- a/web/modules/admin_toolbar/admin_toolbar.info.yml +++ b/web/modules/admin_toolbar/admin_toolbar.info.yml @@ -6,7 +6,7 @@ core_version_requirement: ^8.8.0 || ^9 dependencies: - drupal:toolbar -# Information added by Drupal.org packaging script on 2021-08-25 -version: '3.0.2' +# Information added by Drupal.org packaging script on 2021-09-22 +version: '3.0.3' project: 'admin_toolbar' -datestamp: 1629882676 +datestamp: 1632322070 diff --git a/web/modules/admin_toolbar/admin_toolbar.install b/web/modules/admin_toolbar/admin_toolbar.install index bd80e9a06852a012aa375fd61918a93ac15fb8c2..862cee8dea70d843145a627eb16f9189c34f09e5 100755 --- a/web/modules/admin_toolbar/admin_toolbar.install +++ b/web/modules/admin_toolbar/admin_toolbar.install @@ -14,3 +14,17 @@ function admin_toolbar_update_8001() { // Rebuilding the route cache. \Drupal::service("router.builder")->rebuild(); } + +/** + * Add menu_depth param into the config. + * + * @see https://www.drupal.org/project/admin_toolbar/issues/3200542 + */ +function admin_toolbar_update_8002() { + $config_factory = \Drupal::configFactory(); + $config = $config_factory->getEditable('admin_toolbar.settings'); + if (empty($config->get('menu_depth'))) { + $config->set('menu_depth', 4); + $config->save(TRUE); + } +} diff --git a/web/modules/admin_toolbar/admin_toolbar.links.menu.yml b/web/modules/admin_toolbar/admin_toolbar.links.menu.yml new file mode 100644 index 0000000000000000000000000000000000000000..904c8eae83e9cf4dbab4fa404da2c905a33e5d8f --- /dev/null +++ b/web/modules/admin_toolbar/admin_toolbar.links.menu.yml @@ -0,0 +1,5 @@ +admin_toolbar.settings: + title: 'Admin Toolbar' + description: 'Configure the Admin Toolbar module.' + route_name: admin_toolbar.settings + parent: system.admin_config_ui diff --git a/web/modules/admin_toolbar/admin_toolbar.routing.yml b/web/modules/admin_toolbar/admin_toolbar.routing.yml new file mode 100644 index 0000000000000000000000000000000000000000..42ecfd40734d74b2404f68912aca405eaa752347 --- /dev/null +++ b/web/modules/admin_toolbar/admin_toolbar.routing.yml @@ -0,0 +1,7 @@ +admin_toolbar.settings: + path: '/admin/config/user-interface/admin-toolbar' + defaults: + _form: '\Drupal\admin_toolbar\Form\AdminToolbarSettingsForm' + _title: 'Admin Toolbar settings' + requirements: + _permission: 'administer site configuration' diff --git a/web/modules/admin_toolbar/admin_toolbar_links_access_filter/admin_toolbar_links_access_filter.info.yml b/web/modules/admin_toolbar/admin_toolbar_links_access_filter/admin_toolbar_links_access_filter.info.yml index 3751d83ac004c63c9aab270cace565a6881d2116..55b4877dbb1bcc59d5c92ec0cd95df0aed0ed394 100644 --- a/web/modules/admin_toolbar/admin_toolbar_links_access_filter/admin_toolbar_links_access_filter.info.yml +++ b/web/modules/admin_toolbar/admin_toolbar_links_access_filter/admin_toolbar_links_access_filter.info.yml @@ -8,7 +8,7 @@ core_version_requirement: ^8.8.0 || ^9.0 dependencies: - admin_toolbar:admin_toolbar -# Information added by Drupal.org packaging script on 2021-08-25 -version: '3.0.2' +# Information added by Drupal.org packaging script on 2021-09-22 +version: '3.0.3' project: 'admin_toolbar' -datestamp: 1629882676 +datestamp: 1632322070 diff --git a/web/modules/admin_toolbar/admin_toolbar_links_access_filter/admin_toolbar_links_access_filter.module b/web/modules/admin_toolbar/admin_toolbar_links_access_filter/admin_toolbar_links_access_filter.module index a415d136208f73aa7f04b6b9e67b2799fb85e033..cec6a7c71fa797b2f4ef407ad4431d1d9f36d451 100755 --- a/web/modules/admin_toolbar/admin_toolbar_links_access_filter/admin_toolbar_links_access_filter.module +++ b/web/modules/admin_toolbar/admin_toolbar_links_access_filter/admin_toolbar_links_access_filter.module @@ -58,6 +58,7 @@ function admin_toolbar_links_access_filter_preprocess_menu(&$variables) { * Hides links from admin menu, if user doesn't have access rights. */ function admin_toolbar_links_access_filter_filter_non_accessible_links(array &$items) { + $access_manager = \Drupal::accessManager(); foreach ($items as $menu_id => &$item) { $route_name = NULL; $route_params = []; @@ -83,8 +84,7 @@ function admin_toolbar_links_access_filter_filter_non_accessible_links(array &$i } // Check, if user has access rights to the route. - if (!\Drupal::accessManager() - ->checkNamedRoute($route_name, $route_params)) { + if (!$access_manager->checkNamedRoute($route_name, $route_params)) { unset($items[$menu_id]); } else { @@ -92,8 +92,7 @@ function admin_toolbar_links_access_filter_filter_non_accessible_links(array &$i // Recursively call this function for the child items. admin_toolbar_links_access_filter_filter_non_accessible_links($items[$menu_id]['below']); } - if (empty($items[$menu_id]['below']) && \Drupal::moduleHandler() - ->moduleExists('admin_toolbar')) { + if (empty($items[$menu_id]['below'])) { // Every child item has been cleared out. // Now check, if the given route represents an overview page only, diff --git a/web/modules/admin_toolbar/admin_toolbar_search/admin_toolbar_search.info.yml b/web/modules/admin_toolbar/admin_toolbar_search/admin_toolbar_search.info.yml index 2536e7a0c1b7714570a07509a0a027a0d88c95f8..7ae3778224a93138159fb65463b3e19ad7394e55 100644 --- a/web/modules/admin_toolbar/admin_toolbar_search/admin_toolbar_search.info.yml +++ b/web/modules/admin_toolbar/admin_toolbar_search/admin_toolbar_search.info.yml @@ -3,10 +3,11 @@ description: Provides search of Admin Toolbar items. package: Administration type: module core_version_requirement: ^8.8.0 || ^9.0 +configure: admin_toolbar_search.settings dependencies: - admin_toolbar:admin_toolbar_tools -# Information added by Drupal.org packaging script on 2021-08-25 -version: '3.0.2' +# Information added by Drupal.org packaging script on 2021-09-22 +version: '3.0.3' project: 'admin_toolbar' -datestamp: 1629882676 +datestamp: 1632322070 diff --git a/web/modules/admin_toolbar/admin_toolbar_search/admin_toolbar_search.links.menu.yml b/web/modules/admin_toolbar/admin_toolbar_search/admin_toolbar_search.links.menu.yml new file mode 100644 index 0000000000000000000000000000000000000000..4a39951d61ad7fb0819b4e7a94cace78f3390dd2 --- /dev/null +++ b/web/modules/admin_toolbar/admin_toolbar_search/admin_toolbar_search.links.menu.yml @@ -0,0 +1,5 @@ +admin_toolbar_search.settings: + title: 'Admin Toolbar Search' + description: 'Configure the Admin Toolbar Search module.' + route_name: admin_toolbar_search.settings + parent: system.admin_config_ui diff --git a/web/modules/admin_toolbar/admin_toolbar_search/admin_toolbar_search.module b/web/modules/admin_toolbar/admin_toolbar_search/admin_toolbar_search.module index dcdb4a699070fa04cd6c349b293f5da5b09db981..047e485f6cfe5735834b0c1ec16643a91ff39c5b 100755 --- a/web/modules/admin_toolbar/admin_toolbar_search/admin_toolbar_search.module +++ b/web/modules/admin_toolbar/admin_toolbar_search/admin_toolbar_search.module @@ -7,6 +7,7 @@ use Drupal\Core\StringTranslation\TranslatableMarkup; use Drupal\Core\Routing\RouteMatchInterface; +use Drupal\Core\Url; /** * Implements hook_help(). @@ -33,38 +34,91 @@ function admin_toolbar_search_toolbar_alter(&$items) { $admin_toolbar_tools_enabled = \Drupal::service('module_handler') ->moduleExists('admin_toolbar_tools'); - $items['administration_search'] = [ - "#type" => "toolbar_item", - '#weight' => 100, - 'tab' => [ - 'search' => [ - '#type' => 'textfield', - '#size' => 30, + $config = \Drupal::config('admin_toolbar_search.settings'); + $display_menu_item = $config->get('display_menu_item'); + + if (!$display_menu_item) { + $items['administration_search'] = [ + "#type" => "toolbar_item", + '#weight' => 100, + 'tab' => [ + 'search' => [ + '#title' => t('Search'), + '#title_display' => 'invisible', + '#type' => 'search', + '#size' => 30, + '#attributes' => [ + 'placeholder' => new TranslatableMarkup('Admin Toolbar quick search'), + ], + '#id' => 'admin-toolbar-search-input', + ], + ], + '#attached' => [ + 'library' => [ + 'admin_toolbar_search/search', + ], + 'drupalSettings' => [ + 'adminToolbarSearch' => [ + 'loadExtraLinks' => $admin_toolbar_tools_enabled, + ], + ], + ], + '#wrapper_attributes' => [ + 'id' => 'admin-toolbar-search-tab', + ], + '#cache' => [ + 'contexts' => [ + 'user.permissions', + ], + 'tags' => [ + 'config:admin_toolbar_search.settings', + ], + ], + ]; + } + else { + $items['administration_search'] = [ + "#type" => "toolbar_item", + 'tab' => [ + '#type' => 'link', + '#title' => new TranslatableMarkup('Search'), + '#url' => URL::fromRoute('system.admin'), '#attributes' => [ - 'id' => 'admin-toolbar-search-input', - 'aria-labelledby' => 'toolbar-item-administration-search', - 'placeholder' => new TranslatableMarkup('Admin Toolbar quick search'), + 'class' => [ + 'toolbar-icon', + ], ], ], - ], - '#attached' => [ - 'library' => [ - 'admin_toolbar_search/search', + 'tray' => [ + 'search' => [ + '#title' => t('Search'), + '#type' => 'search', + '#size' => 60, + '#id' => 'admin-toolbar-search-input', + ], ], - 'drupalSettings' => [ - 'adminToolbarSearch' => [ - 'loadExtraLinks' => $admin_toolbar_tools_enabled, + '#attached' => [ + 'library' => [ + 'admin_toolbar_search/search', + ], + 'drupalSettings' => [ + 'adminToolbarSearch' => [ + 'loadExtraLinks' => $admin_toolbar_tools_enabled, + ], ], ], - ], - '#wrapper_attributes' => [ - 'id' => 'admin-toolbar-search-tab', - ], - '#cache' => [ - 'contexts' => [ - 'user.permissions', + '#wrapper_attributes' => [ + "id" => "admin-toolbar-search-tab", ], - ], - ]; + '#cache' => [ + 'contexts' => [ + 'user.permissions', + ], + 'tags' => [ + 'config:admin_toolbar_search.settings', + ], + ], + ]; + } } diff --git a/web/modules/admin_toolbar/admin_toolbar_search/admin_toolbar_search.routing.yml b/web/modules/admin_toolbar/admin_toolbar_search/admin_toolbar_search.routing.yml index 14adc551599cc40ab387c0ee68b7efadd407f115..d9210101f2732471763d9475b5620c2a0562ca69 100755 --- a/web/modules/admin_toolbar/admin_toolbar_search/admin_toolbar_search.routing.yml +++ b/web/modules/admin_toolbar/admin_toolbar_search/admin_toolbar_search.routing.yml @@ -4,3 +4,11 @@ admin_toolbar.search: _controller: '\Drupal\admin_toolbar_search\Controller\AdminToolbarSearchController::search' requirements: _permission: 'use admin toolbar search' + +admin_toolbar_search.settings: + path: '/admin/config/user-interface/admin-toolbar-search-settings' + defaults: + _title: 'Admin toolbar search settings' + _form: 'Drupal\admin_toolbar_search\Form\AdminToolbarSearchSettingsForm' + requirements: + _permission: 'administer site configuration' diff --git a/web/modules/admin_toolbar/admin_toolbar_search/config/install/admin_toolbar_search.settings.yml b/web/modules/admin_toolbar/admin_toolbar_search/config/install/admin_toolbar_search.settings.yml new file mode 100644 index 0000000000000000000000000000000000000000..00d03ac1f676264832c93ef2578a24c0a0f14b26 --- /dev/null +++ b/web/modules/admin_toolbar/admin_toolbar_search/config/install/admin_toolbar_search.settings.yml @@ -0,0 +1 @@ +display_menu_item: 0 diff --git a/web/modules/admin_toolbar/admin_toolbar_search/config/schema/admin_toolbar_search.schema.yml b/web/modules/admin_toolbar/admin_toolbar_search/config/schema/admin_toolbar_search.schema.yml new file mode 100644 index 0000000000000000000000000000000000000000..cd398e7474d8388d5e3719defebbb596cbf3a091 --- /dev/null +++ b/web/modules/admin_toolbar/admin_toolbar_search/config/schema/admin_toolbar_search.schema.yml @@ -0,0 +1,7 @@ +admin_toolbar_search.settings: + type: config_object + label: 'Admin Toolbar Search settings' + mapping: + display_menu_item: + type: integer + label: 'How the serach input will be displayed' diff --git a/web/modules/admin_toolbar/admin_toolbar_search/css/admin.toolbar_search.css b/web/modules/admin_toolbar/admin_toolbar_search/css/admin.toolbar_search.css index 4e7b028d0d3ddd79012df3ee5224e3cd0d4dfcbf..62e965503275dc87237536a6bfaebcae40e937f0 100755 --- a/web/modules/admin_toolbar/admin_toolbar_search/css/admin.toolbar_search.css +++ b/web/modules/admin_toolbar/admin_toolbar_search/css/admin.toolbar_search.css @@ -17,7 +17,7 @@ } .ui-autocomplete .ui-menu-item span.admin-toolbar-search-url { - color: rgba(0, 0, 0, 0.50); + display: none; } .admin-toolbar-search-autocomplete-list { @@ -28,3 +28,32 @@ .admin-toolbar-search-autocomplete-list .ui-menu-item .ui-state-active { margin: 0; } + +#toolbar-item-administration-search-tray label { + display: inline-block; + color: #000000; + margin-right: .5em; + font-weight: bold; +} + +#toolbar-item-administration-search-tray div.form-item { + margin: 0.75em 0; +} + +#toolbar-item-administration-search-tray input { + display: inline-block; + padding: 0.3em 0.4em 0.3em 0.5em; + font-size: 1em; +} + +#admin-toolbar-search-tab .toolbar-item:before { + background-image: url('../../misc/icons/bebebe/loupe.svg'); +} + +#admin-toolbar-search-tab .toolbar-item:active:before, +#admin-toolbar-search-tab .toolbar-item.is-active:before { + background-image: url('../../misc/icons/ffffff/loupe.svg'); +} +#toolbar-item-administration-search-tray div.form-item.js-form-type-textfield { + margin: 0.75em 0; +} diff --git a/web/modules/admin_toolbar/admin_toolbar_search/js/admin_toolbar_search.js b/web/modules/admin_toolbar/admin_toolbar_search/js/admin_toolbar_search.js index 721da1f7c4f35cae44fc2760269e64228ec05f00..877272fbfe67410e38190d6425575b8ee134c7d4 100755 --- a/web/modules/admin_toolbar/admin_toolbar_search/js/admin_toolbar_search.js +++ b/web/modules/admin_toolbar/admin_toolbar_search/js/admin_toolbar_search.js @@ -58,7 +58,7 @@ }).data("ui-autocomplete")._renderItem = (function (ul, item) { ul.addClass('admin-toolbar-search-autocomplete-list'); return $("<li>") - .append('<div>' + item.labelRaw + '<span class="admin-toolbar-search-url">' + '</span></div>') + .append('<div>' + item.labelRaw + '<span class="admin-toolbar-search-url">' + item.value + '</span></div>') .appendTo(ul); }); diff --git a/web/modules/admin_toolbar/admin_toolbar_search/src/Form/AdminToolbarSearchSettingsForm.php b/web/modules/admin_toolbar/admin_toolbar_search/src/Form/AdminToolbarSearchSettingsForm.php new file mode 100644 index 0000000000000000000000000000000000000000..1ffb3ea07961217040defb314b28856e991f817a --- /dev/null +++ b/web/modules/admin_toolbar/admin_toolbar_search/src/Form/AdminToolbarSearchSettingsForm.php @@ -0,0 +1,50 @@ +<?php + +namespace Drupal\admin_toolbar_search\Form; + +use Drupal\Core\Form\ConfigFormBase; +use Drupal\Core\Form\FormStateInterface; + +/** + * Configure Admin Toolbar Search settings for this site. + */ +class AdminToolbarSearchSettingsForm extends ConfigFormBase { + + /** + * {@inheritdoc} + */ + public function getFormId() { + return 'admin_toolbar_search_admin_toolbar_search_settings'; + } + + /** + * {@inheritdoc} + */ + protected function getEditableConfigNames() { + return ['admin_toolbar_search.settings']; + } + + /** + * {@inheritdoc} + */ + public function buildForm(array $form, FormStateInterface $form_state) { + $form['display_menu_item'] = [ + '#type' => 'checkbox', + '#title' => $this->t('Display the search input as a menu item.'), + '#description' => $this->t("if set, instead of display a text input field, it's displayed a menu item in the toolbar so the user has to click on it to toggle the search input."), + '#default_value' => $this->config('admin_toolbar_search.settings')->get('display_menu_item'), + ]; + return parent::buildForm($form, $form_state); + } + + /** + * {@inheritdoc} + */ + public function submitForm(array &$form, FormStateInterface $form_state) { + $this->config('admin_toolbar_search.settings') + ->set('display_menu_item', $form_state->getValue('display_menu_item')) + ->save(); + parent::submitForm($form, $form_state); + } + +} diff --git a/web/modules/admin_toolbar/admin_toolbar_search/tests/src/Functional/AdminToolbarSearchSettingTest.php b/web/modules/admin_toolbar/admin_toolbar_search/tests/src/Functional/AdminToolbarSearchSettingTest.php new file mode 100644 index 0000000000000000000000000000000000000000..71ad1257b231e745534521c4e1e88e441847c017 --- /dev/null +++ b/web/modules/admin_toolbar/admin_toolbar_search/tests/src/Functional/AdminToolbarSearchSettingTest.php @@ -0,0 +1,82 @@ +<?php + +namespace Drupal\Tests\admin_toolbar_search\Functional; + +use Drupal\Core\Url; +use Drupal\Tests\BrowserTestBase; + +/** + * Test the functionality of admin toolbar search. + * + * @group admin_toolbar + * @group admin_toolbar_search + */ +class AdminToolbarSearchSettingTest extends BrowserTestBase { + + /** + * {@inheritdoc} + */ + protected $defaultTheme = 'stark'; + + /** + * {@inheritdoc} + */ + protected static $modules = [ + 'admin_toolbar_search', + 'node', + 'media', + 'field_ui', + 'menu_ui', + 'block', + ]; + + /** + * A user with the 'Use Admin Toolbar search' permission. + * + * @var \Drupal\user\UserInterface + */ + protected $userWithAccess; + + /** + * A test user without the 'Use Admin Toolbar search' permission.. + * + * @var \Drupal\user\UserInterface + */ + protected $noAccessUser; + + public function setUp(): void { + parent::setUp(); + + $permissions = [ + 'access toolbar', + 'administer menu', + 'access administration pages', + 'administer site configuration', + 'administer content types', + ]; + $this->noAccessUser = $this->drupalCreateUser($permissions); + $permissions[] = 'use admin toolbar search'; + $this->userWithAccess = $this->drupalCreateUser($permissions); + } + + /** + * Tests search functionality without admin_toolbar_tools enabled. + */ + public function testToolbarSearch() { + $this->drupalLogin($this->userWithAccess); + + $this->drupalGet(Url::fromRoute('system.admin')); + $this->assertSession()->responseNotContains('id="toolbar-item-administration-search'); + + $this->config('admin_toolbar_search.settings')->set('display_menu_item', 1); + $this->config('admin_toolbar_search.settings')->save(); + $this->drupalGet(Url::fromRoute('system.admin')); + $this->assertSession()->responseContains('id="toolbar-item-administration-search'); + + $this->config('admin_toolbar_search.settings')->set('display_menu_item', 0); + $this->config('admin_toolbar_search.settings')->save(); + $this->drupalGet(Url::fromRoute('system.admin')); + $this->assertSession()->responseNotContains('id="toolbar-item-administration-search'); + } + +} diff --git a/web/modules/admin_toolbar/admin_toolbar_tools/admin_toolbar_tools.info.yml b/web/modules/admin_toolbar/admin_toolbar_tools/admin_toolbar_tools.info.yml index 1bfd11c27a7aec2721ec43f68db0390d14866ad4..059a4f1684a891dedc6d065a4b6a4f217532a1bf 100644 --- a/web/modules/admin_toolbar/admin_toolbar_tools/admin_toolbar_tools.info.yml +++ b/web/modules/admin_toolbar/admin_toolbar_tools/admin_toolbar_tools.info.yml @@ -7,7 +7,7 @@ core_version_requirement: ^8.8.0 || ^9.0 dependencies: - admin_toolbar:admin_toolbar -# Information added by Drupal.org packaging script on 2021-08-25 -version: '3.0.2' +# Information added by Drupal.org packaging script on 2021-09-22 +version: '3.0.3' project: 'admin_toolbar' -datestamp: 1629882676 +datestamp: 1632322070 diff --git a/web/modules/admin_toolbar/admin_toolbar_tools/src/Plugin/Derivative/ExtraLinks.php b/web/modules/admin_toolbar/admin_toolbar_tools/src/Plugin/Derivative/ExtraLinks.php index 4d98f3e2b753f3f7d0ea57adce7c96466605f1a2..8b6cdf9d6c5b4c205e6bd6c39cd1982fa4e8f62a 100755 --- a/web/modules/admin_toolbar/admin_toolbar_tools/src/Plugin/Derivative/ExtraLinks.php +++ b/web/modules/admin_toolbar/admin_toolbar_tools/src/Plugin/Derivative/ExtraLinks.php @@ -2,15 +2,15 @@ namespace Drupal\admin_toolbar_tools\Plugin\Derivative; -use Drupal\Component\Plugin\Derivative\DeriverBase; +use Drupal\system\Entity\Menu; use Drupal\Core\Config\ConfigFactoryInterface; -use Drupal\Core\Entity\EntityTypeManagerInterface; -use Drupal\Core\Extension\ModuleHandlerInterface; -use Drupal\Core\Extension\ThemeHandlerInterface; -use Drupal\Core\Plugin\Discovery\ContainerDeriverInterface; use Drupal\Core\Routing\RouteProviderInterface; +use Drupal\Core\Extension\ThemeHandlerInterface; +use Drupal\Core\Extension\ModuleHandlerInterface; +use Drupal\Core\Entity\EntityTypeManagerInterface; +use Drupal\Component\Plugin\Derivative\DeriverBase; use Drupal\Core\StringTranslation\StringTranslationTrait; -use Drupal\system\Entity\Menu; +use Drupal\Core\Plugin\Discovery\ContainerDeriverInterface; use Symfony\Component\DependencyInjection\ContainerInterface; /** @@ -376,8 +376,8 @@ public function getDerivativeDefinitions($base_plugin_definition) { 'route_parameters' => ['menu' => $menu_id], ] + $base_plugin_definition; // Un-deletable menus. - $menus = ['admin', 'devel', 'footer', 'main', 'tools', 'account']; - if (!in_array($menu_id, $menus)) { + $un_deletable_menus = ['admin', 'devel', 'footer', 'main', 'tools', 'account']; + if (!in_array($menu_id, $un_deletable_menus)) { $links['entity.menu.delete_form.' . $menu_id] = [ 'title' => $this->t('Delete'), 'route_name' => 'entity.menu.delete_form', @@ -585,12 +585,12 @@ public function getDerivativeDefinitions($base_plugin_definition) { 'route_name' => 'entity.media.collection', 'parent' => 'system.admin_content', ] + $base_plugin_definition; - if ($this->moduleHandler->moduleExists('media_library')) { + if ($this->moduleHandler->moduleExists('media_library') && $this->routeExists('view.media_library.page')) { $links['media_library'] = [ - 'title' => $this->t('Media library'), - 'route_name' => 'view.media_library.page', - 'parent' => $base_plugin_definition['id'] . ':media_page', - ] + $base_plugin_definition; + 'title' => $this->t('Media library'), + 'route_name' => 'view.media_library.page', + 'parent' => $base_plugin_definition['id'] . ':media_page', + ] + $base_plugin_definition; } $links['add_media'] = [ 'title' => $this->t('Add media'), diff --git a/web/modules/admin_toolbar/config/install/admin_toolbar.settings.yml b/web/modules/admin_toolbar/config/install/admin_toolbar.settings.yml new file mode 100644 index 0000000000000000000000000000000000000000..5965a3170e12a3e35dc55a7c85e09ee40cc9c9ed --- /dev/null +++ b/web/modules/admin_toolbar/config/install/admin_toolbar.settings.yml @@ -0,0 +1 @@ +menu_depth: 4 diff --git a/web/modules/admin_toolbar/config/schema/admin_toolbar.schema.yml b/web/modules/admin_toolbar/config/schema/admin_toolbar.schema.yml new file mode 100644 index 0000000000000000000000000000000000000000..68ec44e0b8c585cb60be7b65f75cd69b599eafb3 --- /dev/null +++ b/web/modules/admin_toolbar/config/schema/admin_toolbar.schema.yml @@ -0,0 +1,7 @@ +admin_toolbar.settings: + type: config_object + label: 'Admin Toolbar settings' + mapping: + menu_depth: + type: integer + label: 'Depth of displayed menu' diff --git a/web/modules/admin_toolbar/css/admin.toolbar_search.css b/web/modules/admin_toolbar/css/admin.toolbar_search.css index 115c0c2fde4b8560f320d74eed0c3f8963136cf6..d4a18daad3d08e9a364c612d02bc095e7cec2ee0 100755 --- a/web/modules/admin_toolbar/css/admin.toolbar_search.css +++ b/web/modules/admin_toolbar/css/admin.toolbar_search.css @@ -29,5 +29,5 @@ } .ui-autocomplete .ui-menu-item span.admin-toolbar-search-url { - color: rgba(0, 0, 0, 0.5); + display: none; } diff --git a/web/modules/admin_toolbar/src/Form/AdminToolbarSettingsForm.php b/web/modules/admin_toolbar/src/Form/AdminToolbarSettingsForm.php new file mode 100644 index 0000000000000000000000000000000000000000..c7151c686c4f519d41bee6db9ea19f4d93155187 --- /dev/null +++ b/web/modules/admin_toolbar/src/Form/AdminToolbarSettingsForm.php @@ -0,0 +1,105 @@ +<?php + +namespace Drupal\admin_toolbar\Form; + +use Drupal\Core\Cache\CacheBackendInterface; +use Drupal\Core\Config\ConfigFactoryInterface; +use Drupal\Core\Form\ConfigFormBase; +use Drupal\Core\Form\FormStateInterface; +use Drupal\Core\Menu\MenuLinkManagerInterface; +use Symfony\Component\DependencyInjection\ContainerInterface; + +/** + * Class AdminToolbarSettingsForm. The config form for the admin_toolbar module. + * + * @package Drupal\admin_toolbar\Form + */ +class AdminToolbarSettingsForm extends ConfigFormBase { + + /** + * The cache menu instance. + * + * @var \Drupal\Core\Cache\CacheBackendInterface + */ + protected $cacheMenu; + + /** + * The menu link manager instance. + * + * @var \Drupal\Core\Menu\MenuLinkManagerInterface + */ + protected $menuLinkManager; + + /** + * AdminToolbarSettingsForm constructor. + * + * @param \Drupal\Core\Config\ConfigFactoryInterface $config_factory + * The config factory for the form. + * @param \Drupal\Core\Menu\MenuLinkManagerInterface $menuLinkManager + * A menu link manager instance. + * @param \Drupal\Core\Cache\CacheBackendInterface $cacheMenu + * A cache menu instance. + */ + public function __construct(ConfigFactoryInterface $config_factory, MenuLinkManagerInterface $menuLinkManager, CacheBackendInterface $cacheMenu) { + parent::__construct($config_factory); + $this->cacheMenu = $cacheMenu; + $this->menuLinkManager = $menuLinkManager; + } + + /** + * {@inheritdoc} + */ + public static function create(ContainerInterface $container) { + return new static( + $container->get('config.factory'), + $container->get('plugin.manager.menu.link'), + $container->get('cache.menu') + ); + } + + /** + * {@inheritDoc} + */ + protected function getEditableConfigNames() { + return [ + 'admin_toolbar.settings', + ]; + } + + /** + * {@inheritDoc} + */ + public function getFormId() { + return 'admin_toolbar_settings'; + } + + /** + * {@inheritdoc} + */ + public function buildForm(array $form, FormStateInterface $form_state) { + $config = $this->config('admin_toolbar.settings'); + $depth_values = range(1, 9); + $form['menu_depth'] = [ + '#type' => 'select', + '#title' => $this->t('Menu depth'), + '#description' => $this->t('Maximal depth of displayed menu.'), + '#default_value' => $config->get('menu_depth'), + '#options' => array_combine($depth_values, $depth_values), + ]; + + return parent::buildForm($form, $form_state); + } + + /** + * {@inheritdoc} + */ + public function submitForm(array &$form, FormStateInterface $form_state) { + $this->config('admin_toolbar.settings') + ->set('menu_depth', $form_state->getValue('menu_depth')) + ->save(); + parent::submitForm($form, $form_state); + $this->cacheMenu->invalidateAll(); + $this->menuLinkManager->rebuild(); + } + +} diff --git a/web/modules/admin_toolbar/src/Render/Element/AdminToolbar.php b/web/modules/admin_toolbar/src/Render/Element/AdminToolbar.php index 5d0000011f2c8c88469c1ecb6405496a3c364bf4..bd7de64b18efdbaa81b151edccd390d5426c8769 100644 --- a/web/modules/admin_toolbar/src/Render/Element/AdminToolbar.php +++ b/web/modules/admin_toolbar/src/Render/Element/AdminToolbar.php @@ -36,7 +36,8 @@ public static function trustedCallbacks() { public static function preRenderTray(array $build) { $menu_tree = \Drupal::service('toolbar.menu_tree'); $parameters = new MenuTreeParameters(); - $parameters->setRoot('system.admin')->excludeRoot()->setMaxDepth(4)->onlyEnabledLinks(); + $max_depth = \Drupal::config('admin_toolbar.settings')->get('menu_depth'); + $parameters->setRoot('system.admin')->excludeRoot()->setMaxDepth($max_depth)->onlyEnabledLinks(); $tree = $menu_tree->load(NULL, $parameters); $manipulators = [ ['callable' => 'menu.default_tree_manipulators:checkAccess'],