Loading core/lib/Drupal/Core/Extension/ExtensionList.php +16 −0 Changes for core/lib/Drupal/Core/Extension/ExtensionList.php: 16 added lines, 0 removed lines. Original line number Diff line number Diff line Loading @@ -580,4 +580,20 @@ public function checkIncompatibility($name) { return $extension->info['core_incompatible'] || (isset($extension->info['php']) && version_compare(phpversion(), $extension->info['php']) < 0); } /** * Array sorting callback; sorts extensions by their name. * * @param \Drupal\Core\Extension\Extension $a * The first extension to compare. * @param \Drupal\Core\Extension\Extension $b * The second extension to compare. * * @return int * Less than 0 if $a is less than $b, more than 0 if $a is greater than $b, * and 0 if they are equal. */ public static function sortByName(Extension $a, Extension $b): int { return strcasecmp($a->info['name'], $b->info['name']); } } core/modules/system/src/Controller/AdminController.php +5 −9 Changes for core/modules/system/src/Controller/AdminController.php: 5 added lines, 9 removed lines. Original line number Diff line number Diff line Loading @@ -44,18 +44,14 @@ public static function create(ContainerInterface $container) { * A render array containing the listing. */ public function index() { $module_info = $this->moduleExtensionList->getAllInstalledInfo(); foreach ($module_info as $module => $info) { $module_info[$module] = new \stdClass(); $module_info[$module]->info = $info; } $extensions = array_intersect_key($this->moduleExtensionList->getList(), $this->moduleHandler()->getModuleList()); uasort($module_info, 'system_sort_by_info_name'); uasort($extensions, [ModuleExtensionList::class, 'sortByName']); $menu_items = []; foreach ($module_info as $module => $info) { foreach ($extensions as $module => $extension) { // Only display a section if there are any available tasks. if ($admin_tasks = system_get_module_admin_tasks($module, $info->info)) { if ($admin_tasks = system_get_module_admin_tasks($module, $extension->info)) { // Sort links by title. uasort($admin_tasks, ['\Drupal\Component\Utility\SortArray', 'sortByTitleElement']); // Move 'Configure permissions' links to the bottom of each section. Loading @@ -66,7 +62,7 @@ public function index() { $admin_tasks[$permission_key] = $permission_task; } $menu_items[$info->info['name']] = [$info->info['description'], $admin_tasks]; $menu_items[$extension->info['name']] = [$extension->info['description'], $admin_tasks]; } } Loading core/modules/system/src/Controller/SystemController.php +2 −1 Changes for core/modules/system/src/Controller/SystemController.php: 2 added lines, 1 removed line. Original line number Diff line number Diff line Loading @@ -6,6 +6,7 @@ use Drupal\Core\Controller\ControllerBase; use Drupal\Core\Extension\ModuleDependencyMessageTrait; use Drupal\Core\Extension\ModuleExtensionList; use Drupal\Core\Extension\ThemeExtensionList; use Drupal\Core\Extension\ThemeHandlerInterface; use Drupal\Core\Form\FormBuilderInterface; use Drupal\Core\Menu\MenuLinkTreeInterface; Loading Loading @@ -203,7 +204,7 @@ public function themesPage() { $config = $this->config('system.theme'); // Get all available themes. $themes = $this->themeHandler->rebuildThemeData(); uasort($themes, 'system_sort_by_info_name'); uasort($themes, [ThemeExtensionList::class, 'sortByName']); $theme_default = $config->get('default'); $theme_groups = ['installed' => [], 'uninstalled' => []]; Loading core/modules/system/src/Form/ModulesListForm.php +1 −1 Changes for core/modules/system/src/Form/ModulesListForm.php: 1 added line, 1 removed line. Original line number Diff line number Diff line Loading @@ -170,7 +170,7 @@ public function buildForm(array $form, FormStateInterface $form_state) { // The module list needs to be reset so that it can re-scan and include // any new modules that may have been added directly into the filesystem. $modules = $this->moduleExtensionList->reset()->getList(); uasort($modules, 'system_sort_by_info_name'); uasort($modules, [ModuleExtensionList::class, 'sortByName']); } catch (InfoParserException $e) { $this->messenger()->addError($this->t('Modules could not be listed due to an error: %error', ['%error' => $e->getMessage()])); Loading core/modules/system/src/Form/ModulesUninstallForm.php +1 −1 Changes for core/modules/system/src/Form/ModulesUninstallForm.php: 1 added line, 1 removed line. Original line number Diff line number Diff line Loading @@ -144,7 +144,7 @@ public function buildForm(array $form, FormStateInterface $form_state) { } // Sort all modules by their name. uasort($uninstallable, 'system_sort_by_info_name'); uasort($uninstallable, [ModuleExtensionList::class, 'sortByName']); $validation_reasons = $this->moduleInstaller->validateUninstall(array_keys($uninstallable)); $form['uninstall'] = ['#tree' => TRUE]; Loading Loading
core/lib/Drupal/Core/Extension/ExtensionList.php +16 −0 Changes for core/lib/Drupal/Core/Extension/ExtensionList.php: 16 added lines, 0 removed lines. Original line number Diff line number Diff line Loading @@ -580,4 +580,20 @@ public function checkIncompatibility($name) { return $extension->info['core_incompatible'] || (isset($extension->info['php']) && version_compare(phpversion(), $extension->info['php']) < 0); } /** * Array sorting callback; sorts extensions by their name. * * @param \Drupal\Core\Extension\Extension $a * The first extension to compare. * @param \Drupal\Core\Extension\Extension $b * The second extension to compare. * * @return int * Less than 0 if $a is less than $b, more than 0 if $a is greater than $b, * and 0 if they are equal. */ public static function sortByName(Extension $a, Extension $b): int { return strcasecmp($a->info['name'], $b->info['name']); } }
core/modules/system/src/Controller/AdminController.php +5 −9 Changes for core/modules/system/src/Controller/AdminController.php: 5 added lines, 9 removed lines. Original line number Diff line number Diff line Loading @@ -44,18 +44,14 @@ public static function create(ContainerInterface $container) { * A render array containing the listing. */ public function index() { $module_info = $this->moduleExtensionList->getAllInstalledInfo(); foreach ($module_info as $module => $info) { $module_info[$module] = new \stdClass(); $module_info[$module]->info = $info; } $extensions = array_intersect_key($this->moduleExtensionList->getList(), $this->moduleHandler()->getModuleList()); uasort($module_info, 'system_sort_by_info_name'); uasort($extensions, [ModuleExtensionList::class, 'sortByName']); $menu_items = []; foreach ($module_info as $module => $info) { foreach ($extensions as $module => $extension) { // Only display a section if there are any available tasks. if ($admin_tasks = system_get_module_admin_tasks($module, $info->info)) { if ($admin_tasks = system_get_module_admin_tasks($module, $extension->info)) { // Sort links by title. uasort($admin_tasks, ['\Drupal\Component\Utility\SortArray', 'sortByTitleElement']); // Move 'Configure permissions' links to the bottom of each section. Loading @@ -66,7 +62,7 @@ public function index() { $admin_tasks[$permission_key] = $permission_task; } $menu_items[$info->info['name']] = [$info->info['description'], $admin_tasks]; $menu_items[$extension->info['name']] = [$extension->info['description'], $admin_tasks]; } } Loading
core/modules/system/src/Controller/SystemController.php +2 −1 Changes for core/modules/system/src/Controller/SystemController.php: 2 added lines, 1 removed line. Original line number Diff line number Diff line Loading @@ -6,6 +6,7 @@ use Drupal\Core\Controller\ControllerBase; use Drupal\Core\Extension\ModuleDependencyMessageTrait; use Drupal\Core\Extension\ModuleExtensionList; use Drupal\Core\Extension\ThemeExtensionList; use Drupal\Core\Extension\ThemeHandlerInterface; use Drupal\Core\Form\FormBuilderInterface; use Drupal\Core\Menu\MenuLinkTreeInterface; Loading Loading @@ -203,7 +204,7 @@ public function themesPage() { $config = $this->config('system.theme'); // Get all available themes. $themes = $this->themeHandler->rebuildThemeData(); uasort($themes, 'system_sort_by_info_name'); uasort($themes, [ThemeExtensionList::class, 'sortByName']); $theme_default = $config->get('default'); $theme_groups = ['installed' => [], 'uninstalled' => []]; Loading
core/modules/system/src/Form/ModulesListForm.php +1 −1 Changes for core/modules/system/src/Form/ModulesListForm.php: 1 added line, 1 removed line. Original line number Diff line number Diff line Loading @@ -170,7 +170,7 @@ public function buildForm(array $form, FormStateInterface $form_state) { // The module list needs to be reset so that it can re-scan and include // any new modules that may have been added directly into the filesystem. $modules = $this->moduleExtensionList->reset()->getList(); uasort($modules, 'system_sort_by_info_name'); uasort($modules, [ModuleExtensionList::class, 'sortByName']); } catch (InfoParserException $e) { $this->messenger()->addError($this->t('Modules could not be listed due to an error: %error', ['%error' => $e->getMessage()])); Loading
core/modules/system/src/Form/ModulesUninstallForm.php +1 −1 Changes for core/modules/system/src/Form/ModulesUninstallForm.php: 1 added line, 1 removed line. Original line number Diff line number Diff line Loading @@ -144,7 +144,7 @@ public function buildForm(array $form, FormStateInterface $form_state) { } // Sort all modules by their name. uasort($uninstallable, 'system_sort_by_info_name'); uasort($uninstallable, [ModuleExtensionList::class, 'sortByName']); $validation_reasons = $this->moduleInstaller->validateUninstall(array_keys($uninstallable)); $form['uninstall'] = ['#tree' => TRUE]; Loading