Index: modules/system/system.admin.inc
===================================================================
RCS file: /cvs/drupal/drupal/modules/system/system.admin.inc,v
retrieving revision 1.298
diff -u -r1.298 system.admin.inc
--- modules/system/system.admin.inc 22 Aug 2010 12:55:04 -0000 1.298
+++ modules/system/system.admin.inc 1 Sep 2010 23:13:28 -0000
@@ -866,6 +866,7 @@
$extra['required_by'][] = $distribution_name;
}
+ $extra['states']['requires'] = array();
// If this module requires other modules, add them to the array.
foreach ($module->requires as $requires => $v) {
if (!isset($files[$requires])) {
@@ -889,6 +890,7 @@
$extra['requires'][$requires] = t('@module (disabled)', array('@module' => $requires_name));
}
}
+ $extra['states']['requires'][] = array('package' => $files[$requires]->info['package'], 'filename' => $requires);
}
// Generate link for module's help page, if there is one.
if ($help_arg && $module->status && in_array($filename, module_implements('help'))) {
@@ -924,8 +926,7 @@
}
}
- // Mark dependents disabled so the user cannot remove required modules.
- $dependents = array();
+ $extra['states']['required_by'] = array();
// If this module is required by other modules, list those, and then make it
// impossible to disable this one.
foreach ($module->required_by as $required_by => $v) {
@@ -938,6 +939,7 @@
else {
$extra['required_by'][] = t('@module (disabled)', array('@module' => $files[$required_by]->info['name']));
}
+ $extra['states']['required_by'][] = array('package' => $files[$required_by]->info['package'], 'filename' => $required_by);
}
}
$form['modules'][$module->info['package']][$filename] = _system_modules_build_row($module->info, $extra);
@@ -1040,6 +1042,14 @@
$status_long .= t('This module requires PHP version @php_required and is incompatible with PHP version !php_version.', array('@php_required' => $php_required, '!php_version' => phpversion()));
}
+ $states = array();
+ foreach ($extra['states']['requires'] as $requires) {
+ $states[':input[name="modules[' . $requires['package'] . '][' . $requires['filename'] . '][enable]"]'] = array('checked' => TRUE);
+ }
+ foreach ($extra['states']['required_by'] as $required_by) {
+ $states[':input[name="modules[' . $required_by['package'] . '][' . $required_by['filename'] . '][enable]"]'] = array('checked' => FALSE);
+ }
+
// If this module is compatible, present a checkbox indicating
// this module may be installed. Otherwise, show a big red X.
if ($compatible) {
@@ -1047,6 +1057,9 @@
'#type' => 'checkbox',
'#title' => t('Enable'),
'#default_value' => $extra['enabled'],
+ '#states' => array(
+ 'enabled' => $states,
+ ),
);
if ($extra['disabled']) {
$form['enable']['#disabled'] = TRUE;
@@ -1123,7 +1136,6 @@
// Builds list of modules.
$modules = array();
- // If we're not coming from the confirmation form, build the list of modules.
if (empty($form_state['storage'])) {
// If we're not coming from the confirmation form, build the module list.
foreach ($form_state['values']['modules'] as $group_name => $group) {