Index: includes/form.inc
===================================================================
RCS file: /cvs/drupal/drupal/includes/form.inc,v
retrieving revision 1.277
diff -u -r1.277 form.inc
--- includes/form.inc 18 Jul 2008 07:06:24 -0000 1.277
+++ includes/form.inc 24 Jul 2008 02:49:25 -0000
@@ -1420,7 +1420,13 @@
else {
$selected = '';
}
- $options .= '';
+ if (empty($selected) && isset($element['#disabled_options']) && in_array($key, $element['#disabled_options'])) {
+ $disabled = ' disabled="disabled"';
+ }
+ else {
+ $disabled = '';
+ }
+ $options .= '';
}
}
return $options;
@@ -1735,6 +1741,9 @@
'#parents' => $element['#parents'],
'#id' => form_clean_id('edit-' . implode('-', $parents_for_id)),
);
+ if ($key != $element['#default_value'] && in_array($key, $element['#disabled_options'])) {
+ $element[$key]['#attributes']['disabled'] = 'disabled';
+ }
}
}
}
@@ -1902,7 +1911,17 @@
}
foreach ($element['#options'] as $key => $choice) {
if (!isset($element[$key])) {
- $element[$key] = array('#type' => 'checkbox', '#processed' => TRUE, '#title' => $choice, '#return_value' => $key, '#default_value' => isset($value[$key]), '#attributes' => $element['#attributes']);
+ $element[$key] = array(
+ '#type' => 'checkbox',
+ '#processed' => TRUE,
+ '#title' => $choice,
+ '#return_value' => $key,
+ '#default_value' => isset($value[$key]),
+ '#attributes' => $element['#attributes']
+ );
+ if (in_array($key, $element['#disabled_options'])) {
+ $element[$key]['#attributes']['disabled'] = 'disabled';
+ }
}
}
}
Index: modules/system/system.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/system/system.module,v
retrieving revision 1.611
diff -u -r1.611 system.module
--- modules/system/system.module 23 Jul 2008 07:37:06 -0000 1.611
+++ modules/system/system.module 24 Jul 2008 00:03:17 -0000
@@ -244,6 +244,7 @@
$type['radios'] = array(
'#input' => TRUE,
+ '#disabled_options' => array(),
'#process' => array('form_process_radios'),
);
@@ -256,6 +257,7 @@
$type['checkboxes'] = array(
'#input' => TRUE,
'#tree' => TRUE,
+ '#disabled_options' => array(),
'#process' => array('form_process_checkboxes'),
);
@@ -269,6 +271,7 @@
'#input' => TRUE,
'#size' => 0,
'#multiple' => FALSE,
+ '#disabled_options' => array(),
'#process' => array('form_process_ahah'),
);