diff --git a/admin_toolbar_tools/README.txt b/admin_toolbar_tools/README.txt index bc37003..404959f 100755 --- a/admin_toolbar_tools/README.txt +++ b/admin_toolbar_tools/README.txt @@ -15,7 +15,7 @@ INTRODUCTION Admin Toolbar Extra Tools provides menu links to administration pages or actions (eg. Flushing caches) that are not generated by Drupal core. It adds menu items that are not generated by Drupal core. For example there are no menu items for -each content type by default or menu links to Manage fields on each entity +each content type by default or menu links to Manage fields on each entity types. That's the purpose of Admin Toolbar Extra Tools to add them. * For a full description of the module, visit the project page: @@ -43,7 +43,7 @@ INSTALLATION CONFIGURATION ------------- - * Visit the admin toolbar tools settings form at (/admin/config/admin-toolbar-tools/settings). + * Configure the admin toolbar tools at (/admin/config/user-interface/settings). MAINTAINERS diff --git a/admin_toolbar_tools/admin_toolbar_tools.info.yml b/admin_toolbar_tools/admin_toolbar_tools.info.yml index 835d24f..8323df8 100755 --- a/admin_toolbar_tools/admin_toolbar_tools.info.yml +++ b/admin_toolbar_tools/admin_toolbar_tools.info.yml @@ -5,5 +5,7 @@ package: Administration type: module core_version_requirement: ^8.7.7 || ^9.0 +configure: admin_toolbar_tools.settings + dependencies: - admin_toolbar:admin_toolbar diff --git a/admin_toolbar_tools/admin_toolbar_tools.install b/admin_toolbar_tools/admin_toolbar_tools.install index f3ad6ab..e7fdf1b 100644 --- a/admin_toolbar_tools/admin_toolbar_tools.install +++ b/admin_toolbar_tools/admin_toolbar_tools.install @@ -6,20 +6,11 @@ */ /** - * Implements hook_uninstall(). - */ -function admin_toolbar_tools_uninstall() { - - // Uninstall pathologic configuration. - \Drupal::configFactory()->getEditable('admin_toolbar_tools.settings')->delete(); -} - -/** - * Add max bundle settings. + * Default setting for maximum number of bundles per entity type to display. */ function admin_toolbar_tools_update_8201() { - $config = \Drupal::service('config.factory')->getEditable('admin_toolbar_tools.settings'); - $config + \Drupal::service('config.factory') + ->getEditable('admin_toolbar_tools.settings') ->set('max_bundle_number', 20) - ->save(); + ->save(TRUE); } diff --git a/admin_toolbar_tools/admin_toolbar_tools.links.menu.yml b/admin_toolbar_tools/admin_toolbar_tools.links.menu.yml index 1181ac4..6bd9f47 100755 --- a/admin_toolbar_tools/admin_toolbar_tools.links.menu.yml +++ b/admin_toolbar_tools/admin_toolbar_tools.links.menu.yml @@ -85,12 +85,8 @@ admin_toolbar_tools.extra_links: deriver: \Drupal\admin_toolbar_tools\Plugin\Derivative\ExtraLinks menu_name: admin -admin_toolbar_tools.collection: - title: 'Admin Toolbar' - route_name: admin_toolbar_tools.settings - parent: system.admin_config - admin_toolbar_tools.settings: - title: 'Settings' + title: 'Admin Toolbar' + description: 'Configure the admin toolbar.' route_name: admin_toolbar_tools.settings - parent: admin_toolbar_tools.config + parent: system.admin_config_ui diff --git a/admin_toolbar_tools/admin_toolbar_tools.routing.yml b/admin_toolbar_tools/admin_toolbar_tools.routing.yml index e56b0d5..f19e24b 100755 --- a/admin_toolbar_tools/admin_toolbar_tools.routing.yml +++ b/admin_toolbar_tools/admin_toolbar_tools.routing.yml @@ -80,7 +80,7 @@ admin_toolbar_tools.theme_rebuild: _csrf_token: 'TRUE' admin_toolbar_tools.settings: - path: '/admin/config/admin-toolbar-tools/settings' + path: '/admin/config/user-interface/settings' defaults: _form: '\Drupal\admin_toolbar_tools\Form\AdminToolbarToolsSettingsForm' _title: 'Admin Toolbar Tools settings' diff --git a/admin_toolbar_tools/config/schema/admin_toolbar_tools.schema.yml b/admin_toolbar_tools/config/schema/admin_toolbar_tools.schema.yml index b1eb669..28f0bd3 100644 --- a/admin_toolbar_tools/config/schema/admin_toolbar_tools.schema.yml +++ b/admin_toolbar_tools/config/schema/admin_toolbar_tools.schema.yml @@ -4,4 +4,4 @@ admin_toolbar_tools.settings: mapping: max_bundle_number: type: integer - label: 'Number of bundles, per entity type, to display' + label: 'Number of bundles per entity type to display' diff --git a/admin_toolbar_tools/src/Form/AdminToolbarToolsSettingsForm.php b/admin_toolbar_tools/src/Form/AdminToolbarToolsSettingsForm.php index bc597bc..d749625 100644 --- a/admin_toolbar_tools/src/Form/AdminToolbarToolsSettingsForm.php +++ b/admin_toolbar_tools/src/Form/AdminToolbarToolsSettingsForm.php @@ -6,7 +6,7 @@ use Drupal\Core\Form\ConfigFormBase; use Drupal\Core\Form\FormStateInterface; /** - * Class BundleSettingsForm. + * Class AdminToolbarToolsSettingsForm. * * @package Drupal\admin_toolbar_tools\Form */ @@ -33,11 +33,12 @@ class AdminToolbarToolsSettingsForm extends ConfigFormBase { */ public function buildForm(array $form, FormStateInterface $form_state) { $config = $this->config('admin_toolbar_tools.settings'); - $form['max_bundle_number'] = array( + $form['max_bundle_number'] = [ '#type' => 'number', - '#title' => $this->t('Set Max Bundle Number'), + '#title' => $this->t('Maximum number of bundles per entity type to display'), + '#description' => $this->t('Loading a large number of items can cause performance issues.'), '#default_value' => $config->get('max_bundle_number'), - ); + ]; return parent::buildForm($form, $form_state); } diff --git a/admin_toolbar_tools/src/Plugin/Derivative/ExtraLinks.php b/admin_toolbar_tools/src/Plugin/Derivative/ExtraLinks.php index b5cb851..08a5135 100755 --- a/admin_toolbar_tools/src/Plugin/Derivative/ExtraLinks.php +++ b/admin_toolbar_tools/src/Plugin/Derivative/ExtraLinks.php @@ -3,6 +3,7 @@ namespace Drupal\admin_toolbar_tools\Plugin\Derivative; use Drupal\Component\Plugin\Derivative\DeriverBase; +use Drupal\Core\Config\ConfigFactoryInterface; use Drupal\Core\Entity\EntityTypeManagerInterface; use Drupal\Core\Extension\ModuleHandlerInterface; use Drupal\Core\Extension\ThemeHandlerInterface; @@ -11,7 +12,6 @@ use Drupal\Core\Routing\RouteProviderInterface; use Drupal\Core\StringTranslation\StringTranslationTrait; use Drupal\system\Entity\Menu; use Symfony\Component\DependencyInjection\ContainerInterface; -use Drupal\Core\Config\ConfigFactoryInterface; /** * Provides a default implementation for menu link plugins. @@ -49,7 +49,7 @@ class ExtraLinks extends DeriverBase implements ContainerDeriverInterface { protected $themeHandler; /** - * A config object for the system performance configuration. + * The admin toolbar tools configuration. * * @var \Drupal\Core\Config\Config */ @@ -101,7 +101,6 @@ class ExtraLinks extends DeriverBase implements ContainerDeriverInterface { foreach ($content_entities as $entities) { $content_entity_bundle = $entities['content_entity_bundle']; $content_entity = $entities['content_entity']; - // We do not display more than 10 different bundles per entity type. $content_entity_bundle_storage = $this->entityTypeManager->getStorage($content_entity_bundle); $bundles_ids = $content_entity_bundle_storage->getQuery()->pager($max_bundle_number)->execute(); $bundles = $this->entityTypeManager->getStorage($content_entity_bundle)->loadMultiple($bundles_ids); @@ -327,7 +326,6 @@ class ExtraLinks extends DeriverBase implements ContainerDeriverInterface { 'weight' => -2, ] + $base_plugin_definition; // Adds links to /admin/structure/menu. - // We do not display more than 10 different menus. $menus = $this->entityTypeManager->getStorage('menu')->loadMultiple(); uasort($menus, [Menu::class, 'sort']); $menus = array_slice($menus, 0, $max_bundle_number); diff --git a/admin_toolbar_tools/src/SearchLinks.php b/admin_toolbar_tools/src/SearchLinks.php index 6345968..0d72124 100644 --- a/admin_toolbar_tools/src/SearchLinks.php +++ b/admin_toolbar_tools/src/SearchLinks.php @@ -5,6 +5,7 @@ namespace Drupal\admin_toolbar_tools; use Drupal\Core\Cache\Cache; use Drupal\Core\Cache\CacheBackendInterface; use Drupal\Core\Cache\Context\CacheContextsManager; +use Drupal\Core\Config\ConfigFactoryInterface; use Drupal\Core\Entity\EntityTypeManagerInterface; use Drupal\Core\Extension\ModuleHandlerInterface; use Drupal\Core\Language\LanguageInterface; @@ -12,7 +13,6 @@ use Drupal\Core\Routing\RouteProviderInterface; use Drupal\Core\StringTranslation\StringTranslationTrait; use Drupal\Core\Url; use Drupal\system\Entity\Menu; -use Drupal\Core\Config\ConfigFactoryInterface; /** * Extra search links. @@ -57,7 +57,7 @@ class SearchLinks { protected $toolbarCache; /** - * A config object for the system performance configuration. + * The admin toolbar tools configuration. * * @var \Drupal\Core\Config\Config */ @@ -86,6 +86,7 @@ class SearchLinks { */ public function getLinks() { $max_bundle_number = $this->config->get('max_bundle_number'); + $i = 0; $additional_keys = $this->cacheContextManager->convertTokensToKeys([ 'languages:' . LanguageInterface::TYPE_INTERFACE, 'user.permissions', @@ -93,9 +94,9 @@ class SearchLinks { $cid_parts = array_merge(['admin_toolbar_search:links'], $additional_keys); $cid = implode(':', $cid_parts); - if ($cache = $this->toolbarCache->get($cid)) { - return $cache->data; - } +// if ($cache = $this->toolbarCache->get($cid)) { +// return $cache->data; +// } $links = []; $cache_tags = []; @@ -105,7 +106,7 @@ class SearchLinks { foreach ($content_entities as $entities) { $content_entity_bundle = $entities['content_entity_bundle']; $content_entity = $entities['content_entity']; - // Start at offset 10, since the toolbar has already loaded the first 10. + // Load the remaining items that were not loaded by the toolbar. $content_entity_bundle_storage = $this->entityTypeManager->getStorage($content_entity_bundle); $bundles_ids = $content_entity_bundle_storage->getQuery()->range($max_bundle_number)->execute(); if (!empty($bundles_ids)) { diff --git a/tests/src/Functional/AdminToolbarToolsSortTest.php b/tests/src/Functional/AdminToolbarToolsSortTest.php index a5cb795..2b27ccd 100644 --- a/tests/src/Functional/AdminToolbarToolsSortTest.php +++ b/tests/src/Functional/AdminToolbarToolsSortTest.php @@ -190,6 +190,24 @@ class AdminToolbarToolsSortTest extends BrowserTestBase { 25 => '/admin/structure/menu/manage/eee', 26 => '/admin/structure/menu/manage/eee/add', 27 => '/admin/structure/menu/manage/eee/delete', + 28 => '/admin/structure/menu/manage/ddd', + 29 => '/admin/structure/menu/manage/ddd/add', + 30 => '/admin/structure/menu/manage/ddd/delete', + 31 => '/admin/structure/menu/manage/ccc', + 32 => '/admin/structure/menu/manage/ccc/add', + 33 => '/admin/structure/menu/manage/ccc/delete', + 34 => '/admin/structure/menu/manage/bbb', + 35 => '/admin/structure/menu/manage/bbb/add', + 36 => '/admin/structure/menu/manage/bbb/delete', + 37 => '/admin/structure/menu/manage/aaa', + 38 => '/admin/structure/menu/manage/aaa/add', + 39 => '/admin/structure/menu/manage/aaa/delete', + 40 => '/admin/structure/menu/manage/main', + 41 => '/admin/structure/menu/manage/main/add', + 42 => '/admin/structure/menu/manage/tools', + 43 => '/admin/structure/menu/manage/tools/add', + 44 => '/admin/structure/menu/manage/account', + 45 => '/admin/structure/menu/manage/account/add', ]; foreach ($links as $key => $link) { diff --git a/tests/src/FunctionalJavascript/AdminToolbarSearchTest.php b/tests/src/FunctionalJavascript/AdminToolbarSearchTest.php index 805edce..e11a9d7 100755 --- a/tests/src/FunctionalJavascript/AdminToolbarSearchTest.php +++ b/tests/src/FunctionalJavascript/AdminToolbarSearchTest.php @@ -161,16 +161,6 @@ class AdminToolbarSearchTest extends WebDriverTestBase { $this->drupalGet('/admin/admin-toolbar-search'); $search_menus = [ - 'cora', - 'eleanor', - 'eloise', - 'felix', - 'freya', - 'genevieve', - 'isla', - 'jasper', - 'luna', - 'maeve', 'milo', 'nora', 'olivia', @@ -227,7 +217,7 @@ class AdminToolbarSearchTest extends WebDriverTestBase { // Test that bundle within admin toolbar appears in search. $this->assertSuggestionContains('lola', 'admin/structure/media/manage/lola/fields'); - // Assert that a link after the limit (10) doesn't appear in admin toolbar. + // Assert that a link after the limit doesn't appear in admin toolbar. $toby_url = '/admin/structure/media/manage/toby/fields'; $this->assertSession() ->elementNotContains('css', '#toolbar-administration', $toby_url);