diff options
author | Angie Byron <webchick@24967.no-reply.drupal.org> | 2010-05-06 06:26:42 +0000 |
---|---|---|
committer | Angie Byron <webchick@24967.no-reply.drupal.org> | 2010-05-06 06:26:42 +0000 |
commit | df45d5e5ce3077f56b9468fe8022de61b68ce355 (patch) | |
tree | 545f8e8c4f603510a2b2b20a402da5f834abc739 /modules/system/system.admin.inc | |
parent | 77c361620463b2b5a859bbb1cd2bbceca6349d15 (diff) | |
download | brdo-df45d5e5ce3077f56b9468fe8022de61b68ce355.tar.gz brdo-df45d5e5ce3077f56b9468fe8022de61b68ce355.tar.bz2 |
#490400 by jpmckinney: Fixed modules with dependencies whose .info file sets required=TRUE cannot be enabled.
Diffstat (limited to 'modules/system/system.admin.inc')
-rw-r--r-- | modules/system/system.admin.inc | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/modules/system/system.admin.inc b/modules/system/system.admin.inc index 4b59973bd..3f386d8ab 100644 --- a/modules/system/system.admin.inc +++ b/modules/system/system.admin.inc @@ -822,20 +822,21 @@ function system_modules($form, $form_state = array()) { $files = system_rebuild_module_data(); // Remove hidden modules from display list. - foreach ($files as $filename => $file) { + $visible_files = $files; + foreach ($visible_files as $filename => $file) { if (!empty($file->info['hidden']) || !empty($file->info['required'])) { - unset($files[$filename]); + unset($visible_files[$filename]); } } - uasort($files, 'system_sort_modules_by_info_name'); + uasort($visible_files, 'system_sort_modules_by_info_name'); // If the modules form was submitted, then system_modules_submit() runs first // and if there are unfilled required modules, then $form_state['storage'] is // filled, triggering a rebuild. In this case we need to display a // confirmation form. if (!empty($form_state['storage'])) { - return system_modules_confirm_form($files, $form_state['storage']); + return system_modules_confirm_form($visible_files, $form_state['storage']); } $modules = array(); @@ -845,7 +846,7 @@ function system_modules($form, $form_state = array()) { $help_arg = module_exists('help') ? drupal_help_arg() : FALSE; // Iterate through each of the modules. - foreach ($files as $filename => $module) { + foreach ($visible_files as $filename => $module) { $extra = array(); $extra['enabled'] = (bool) $module->status; // If this module requires other modules, add them to the array. @@ -854,7 +855,8 @@ function system_modules($form, $form_state = array()) { $extra['requires'][$requires] = t('@module (<span class="admin-missing">missing</span>)', array('@module' => drupal_ucfirst($requires))); $extra['disabled'] = TRUE; } - else { + // Only display visible modules. + elseif (isset($visible_files[$requires])) { $requires_name = $files[$requires]->info['name']; if ($incompatible_version = drupal_check_incompatibility($v, str_replace(DRUPAL_CORE_COMPATIBILITY . '-', '', $files[$requires]->info['version']))) { $extra['requires'][$requires] = t('@module (<span class="admin-missing">incompatible with</span> version @version)', array( @@ -911,7 +913,7 @@ function system_modules($form, $form_state = array()) { // impossible to disable this one. foreach ($module->required_by as $required_by => $v) { // Hidden modules are unset already. - if (isset($files[$required_by])) { + if (isset($visible_files[$required_by])) { if ($files[$required_by]->status == 1) { $extra['required_by'][] = t('@module (<span class="admin-enabled">enabled</span>)', array('@module' => $files[$required_by]->info['name'])); $extra['disabled'] = TRUE; |