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'), );