Index: modules/system/system.admin.inc =================================================================== RCS file: /cvs/drupal/drupal/modules/system/system.admin.inc,v retrieving revision 1.63.2.14 diff -u -p -r1.63.2.14 system.admin.inc --- modules/system/system.admin.inc 1 Mar 2010 10:20:28 -0000 1.63.2.14 +++ modules/system/system.admin.inc 28 May 2010 20:10:13 -0000 @@ -628,15 +628,23 @@ function system_modules($form_state = ar // Get current list of modules. $files = module_rebuild_cache(); - uasort($files, 'system_sort_modules_by_info_name'); + // Remove hidden modules from display list. + $visible_files = $files; + foreach ($visible_files as $filename => $file) { + if (!empty($file->info['hidden'])) { + unset($visible_files[$filename]); + } + } + + uasort($visible_files, 'system_sort_modules_by_info_name'); if (!empty($form_state['storage'])) { - return system_modules_confirm_form($files, $form_state['storage']); + return system_modules_confirm_form($visible_files, $form_state['storage']); } $dependencies = array(); // Store module list for validation callback. - $form['validation_modules'] = array('#type' => 'value', '#value' => $files); + $form['validation_modules'] = array('#type' => 'value', '#value' => $visible_files); // Create storage for disabled modules as browser will disable checkboxes. $form['disabled_modules'] = array('#type' => 'value', '#value' => array()); @@ -644,7 +652,7 @@ function system_modules($form_state = ar // Traverse the files, checking for compatibility $incompatible_core = array(); $incompatible_php = array(); - foreach ($files as $filename => $file) { + foreach ($visible_files as $filename => $file) { // Ensure this module is compatible with this version of core. if (!isset($file->info['core']) || $file->info['core'] != DRUPAL_CORE_COMPATIBILITY) { $incompatible_core[$file->name] = $file->name; @@ -659,7 +667,7 @@ function system_modules($form_state = ar $disabled = array(); $throttle = array(); // Traverse the files retrieved and build the form. - foreach ($files as $filename => $file) { + foreach ($visible_files as $filename => $file) { $form['name'][$filename] = array('#value' => $file->info['name']); $form['version'][$filename] = array('#value' => $file->info['version']); $form['description'][$filename] = array('#value' => t($file->info['description'])); @@ -681,19 +689,20 @@ function system_modules($form_state = ar // Check for missing dependencies. if (is_array($file->info['dependencies'])) { foreach ($file->info['dependencies'] as $dependency) { - if (!isset($files[$dependency]) || !$files[$dependency]->status) { - if (isset($files[$dependency])) { - $dependencies[] = t('@module (disabled)', array('@module' => $files[$dependency]->info['name'])); + if (!isset($files[$dependency])) { + $dependencies[] = t('@module (missing)', array('@module' => drupal_ucfirst($dependency))); + $disabled[] = $filename; + $form['disabled_modules']['#value'][$filename] = FALSE; + } + // Only display visible modules. + elseif (isset($visible_files[$dependency])) { + if ($files[$dependency]->status) { + $dependencies[] = t('@module (enabled)', array('@module' => $files[$dependency]->info['name'])); } else { - $dependencies[] = t('@module (missing)', array('@module' => drupal_ucfirst($dependency))); - $disabled[] = $filename; - $form['disabled_modules']['#value'][$filename] = FALSE; + $dependencies[] = t('@module (disabled)', array('@module' => $files[$dependency]->info['name'])); } } - else { - $dependencies[] = t('@module (enabled)', array('@module' => $files[$dependency]->info['name'])); - } } // Add text for dependencies. @@ -709,13 +718,16 @@ function system_modules($form_state = ar // Mark dependents disabled so user can not remove modules being depended on. $dependents = array(); foreach ($file->info['dependents'] as $dependent) { - if ($files[$dependent]->status == 1) { - $dependents[] = t('@module (enabled)', array('@module' => $files[$dependent]->info['name'])); - $disabled[] = $filename; - $form['disabled_modules']['#value'][$filename] = TRUE; - } - else { - $dependents[] = t('@module (disabled)', array('@module' => $files[$dependent]->info['name'])); + // Hidden modules are unset already. + if (isset($visible_files[$dependent])) { + if ($files[$dependent]->status == 1) { + $dependents[] = t('@module (enabled)', array('@module' => $files[$dependent]->info['name'])); + $disabled[] = $filename; + $form['disabled_modules']['#value'][$filename] = TRUE; + } + else { + $dependents[] = t('@module (disabled)', array('@module' => $files[$dependent]->info['name'])); + } } }