Index: optionwidgets.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/cck/modules/optionwidgets/optionwidgets.module,v
retrieving revision 1.69.2.9
diff -u -r1.69.2.9 optionwidgets.module
--- optionwidgets.module	14 Jul 2008 15:02:16 -0000	1.69.2.9
+++ optionwidgets.module	23 Aug 2008 14:34:10 -0000
@@ -181,6 +181,14 @@
  * The $fields array is in $form['#field_info'][$element['#field_name']].
  */
 function optionwidgets_buttons_process($element, $edit, &$form_state, $form) {
+  
+  // If the user has no edit access to this value, skip all the
+  // transformations and just set #value to the database value.
+  if (isset($element['#access']) && !$element['#access']) {
+    $element['#value'] = $element['#default_value'];
+    return $element;
+  }
+  
   $field_name = $element['#field_name'];
   $field = $form['#field_info'][$field_name];
   $field_key  = $element['#columns'][0];
@@ -224,6 +232,13 @@
  * The $fields array is in $form['#field_info'][$element['#field_name']].
  */
 function optionwidgets_select_process($element, $edit, &$form_state, $form) {
+  // If the user has no edit access to this value, skip all the
+  // transformations and just set #value to the database value.
+  if (isset($element['#access']) && !$element['#access']) {
+    $element['#value'] = $element['#default_value'];
+    return $element;
+  }
+
   $field_name = $element['#field_name'];
   $field = $form['#field_info'][$field_name];
   $field_key  = $element['#columns'][0];
@@ -272,6 +287,13 @@
  * The $fields array is in $form['#field_info'][$element['#field_name']].
  */
 function optionwidgets_onoff_process($element, $edit, &$form_state, $form) {
+  // If the user has no edit access to this value, skip all the
+  // transformations and just set #value to the database value.
+  if (isset($element['#access']) && !$element['#access']) {
+    $element['#value'] = $element['#default_value'];
+    return $element;
+  }
+
   $field_name = $element['#field_name'];
   $field = $form['#field_info'][$field_name];
   $field_key  = $element['#columns'][0];
@@ -313,6 +335,11 @@
  * to create multiple elements.
  */
 function optionwidgets_validate($element, &$form_state) {
+  // If the user has no edit access to this value, skip all the
+  // transformations and just set #value to the database value.
+  if (isset($element['#access']) && !$element['#access']) {
+    return;
+  }
   $field = $form_state['#field_info'][$element['#field_name']];
   $updated = optionwidgets_form2data($element, $field);
   form_set_value($element, $updated, $form_state);

