145c145
< function _webform_submission_display_captcha($component, $data) {
---
> function _webform_submission_display_captcha($component, $data, $enabled) {
161c161
< function _webform_submission_display_date($data, $component) {
---
> function _webform_submission_display_date($data, $component, $enabled) {
166,168c166,168
<   $form_item['month']['#attributes']    = array("disabled" => "disabled");
<   $form_item['day']['#attributes']      = array("disabled" => "disabled");
<   $form_item['year']['#attributes']     = array("disabled" => "disabled");
---
>   $form_item['month']['#disabled'] = !$enabled;
>   $form_item['day']['#disabled'] = !$enabled;
>   $form_item['year']['#disabled'] = !$enabled;
99c99
< function _webform_submission_display_email($data, $component) {
---
> function _webform_submission_display_email($data, $component, $enabled) {
102c102
<   $form_item['#attributes']    = array("disabled" => "disabled");
---
>   $form_item['#disabled'] = !$enabled;
293c293
< function _webform_submission_display_file($data, $component) {
---
> function _webform_submission_display_file($data, $component, $enabled) {
301c301
<   $form_item['#attributes'] = array("disabled" => "disabled");
---
>   $form_item['#disabled'] = !$enabled;
53c53
< function _webform_submission_display_hidden($data, $component) {
---
> function _webform_submission_display_hidden($data, $component, $enabled) {
58c58
<   $form_item['#attributes']    = array("disabled" => "disabled");
---
>   $form_item['#disabled'] = !$enabled;
166c166
< function _webform_submission_display_select($data, $component) {
---
> function _webform_submission_display_select($data, $component, $enabled) {
193c193
<   $form_item['#attributes'] = array("disabled" => "disabled");
---
>   $form_item['#disabled'] = !$enabled;
86c86
< function _webform_submission_display_textarea($data, $component) {
---
> function _webform_submission_display_textarea($data, $component, $enabled) {
89c89
<   $form_item['#attributes']    = array("disabled" => "disabled");
---
>   $form_item['#disabled'] = !$enabled;
87c87
< function _webform_submission_display_textfield($data, $component) {
---
> function _webform_submission_display_textfield($data, $component, $enabled) {
90c90
<   $form_item['#disabled'] = TRUE;
---
>   $form_item['#disabled'] = !$enabled;
152c152
< function _webform_submission_display_time($data, $component) {
---
> function _webform_submission_display_time($data, $component, $enabled) {
155,157c155,157
<   $form_item['minute']['#attributes']      = array("disabled" => "disabled");
<   $form_item['hour']['#attributes']        = array("disabled" => "disabled");
<   $form_item['ampm']['#attributes']        = array("disabled" => "disabled");
---
>   $form_item['minute']['#disabled'] = !$enabled;
>   $form_item['hour']['#disabled'] = !$enabled;
>   $form_item['ampm']['#disabled'] = !$enabled;
146c146
<   $query = 'SELECT sd.nid, sd.sid, s.submitted, sd.cid, sd.no, sd.data '. 
---
>   $query = 'SELECT sd.nid, sd.sid, s.submitted, s.uid, sd.cid, sd.no, sd.data '.
156a157
>     $submission['uid'] = $row['uid'];
7c7
<  * The development of this module was sponsered by F Industri AB, Open
---
>  * The development of this module was sponsered by ?F Industri AB, Open
66c66
<   return array("create webforms", "edit own webforms", "edit webforms", "access webform results", "clear webform results", "use PHP for additional processing");
---
>   return array("create webforms", "edit own webforms", "edit webforms", "access webform results", "clear webform results", "edit own webform submissions", "edit webform submissions", "use PHP for additional processing");
87a88,89
>     case "edit":
>     	return user_access("edit webform submissions") || (user_access("edit own webform submissions") && ($user->uid == $node->uid));
317a320,325
>       $items[]= array('path' => 'node/'. $node->nid .'/results/edit', 'title' => t('webform'),
>                        'callback' => 'webform_results',
>                        //access checking is done in the function called by the webform_results function,
>                        //so just grant access here to avoid redundant code...
>                        'access' => true,
>                        'type' => MENU_CALLBACK);
1083a1092,1120
> // Display the webform for editing existing submission data.
> function webform_edit(&$node, $sid) {
>   global $user;
> 
>   include_once (drupal_get_path('module', 'webform')."/webform.inc");
> 
>   $submission = array();
>   $node->webformcomponents = _webform_components_decode($node->webformcomponents);
>   $submission = _webform_fetch_submission($sid, $node->nid);
>   if ($sid && is_numeric($sid)) {
>     if (user_access("edit webform submissions") || (user_access("edit own webform submissions") && ($user->uid == $submission['uid']))) {
>       drupal_set_title('Submission #'.$sid);
>       $node->body = "";
> 
>       global $_webform_form_list;
>       $_webform_form_list[] = $node->nid;
>       return drupal_get_form('webform_client_form_'. $node->nid, $node, $submission, null, true);
>     } else {
>       $sid = NULL; // This user is not allowed to access a submitted node. Deny the attempt without alert.
>       watchdog('webform', t('Unauthorized webform access attempt', array ('%name' => "<em>$user->name</em>")), WATCHDOG_WARNING); // and log the attempt
>       return drupal_access_denied();
>     }
>   }
> 
> 
> //  return drupal_get_form('webform_client_form', $node, $submission, null, true);
> } // end webform_edit
> 
> 
1089c1126
< function webform_client_form(&$node, $submission = array(), $form_values = NULL) {
---
> function webform_client_form(&$node, $submission = array(), $form_values = NULL, $enabled = false) {
1126c1163
<     if (!$preview && empty($submission)) {
---
>     if ((!$preview && empty($submission)) || ($enabled)) {
1186c1223
<       _webform_client_form_add_component($cid, $component, $form['submitted'], $form, $submission, $page_num);
---
>       _webform_client_form_add_component($cid, $component, $form['submitted'], $form, $submission, $page_num, $enabled);
1189c1226
<     if (!$preview && empty($submission)) {
---
>     if ((!$preview && empty($submission)) || ($enabled)) {
1207a1245,1250
>       // set this flag to be able to determine if the displayed submission
>       // is a new one or an exisiting one being updated
>       $form['details']['sid'] = array(
>         '#type'      => 'value',
>         '#value'     => $submission['sid'],
>       );
1214c1257
< function _webform_client_form_add_component($cid, $component, &$parent_fieldset, &$form, $submission, $page_num) {
---
> function _webform_client_form_add_component($cid, $component, &$parent_fieldset, &$form, $submission, $page_num, $enabled) {
1221c1264
<       $parent_fieldset[$component['form_key']] = $display_function($submission['data'][$cid], $component);
---
>       $parent_fieldset[$component['form_key']] = $display_function($submission['data'][$cid], $component, $enabled);
1237c1280
<       _webform_client_form_add_component($scid, $subcomponent, $parent_fieldset[$component['form_key']], $form, $submission, $page_num);
---
>       _webform_client_form_add_component($scid, $subcomponent, $parent_fieldset[$component['form_key']], $form, $submission, $page_num, $enabled);
1333a1377,1378
>   if (!$form_values['details']['sid']) {
>   	// no sid was found thus insert it in the datatabase
1335c1380,1383
<   
---
>   } else {
>   	// sid was found thus update the existing sid in the datatbase
>     $sid = _webform_update_submission($node, $form_values['details']['sid'], $form_values['submitted']);
>   }
1564a1613,1638
> function _webform_update_submission($node, $sid, $submitted) {
>   global $user;
> 
>   //update submission by first deleting and then readding it to the database
>   db_query("DELETE FROM {webform_submissions} WHERE sid = %d", $sid);
>   db_query("INSERT INTO {webform_submissions} (nid, sid, uid, submitted, remote_addr) "." VALUES (%d, %d, %d, %d, '%s')", $node->nid, $sid, $user->uid, time(), $_SERVER['REMOTE_ADDR']);
> 
>   // update the submission data by first removing all this submissions data
>   db_query("DELETE FROM {webform_submitted_data} WHERE sid = %d", $sid);
>   // and then re-ad it to the database
>   foreach ($submitted as $cid => $value) {
>     if (is_array($value)) {
>       $delta = 0;
>       foreach ($value as $k => $v) {
>         db_query("INSERT INTO {webform_submitted_data} (nid, sid, cid, no, data) "."VALUES (%d, %d, %d, %d, '%s')", $node->nid, $sid, $cid, $delta, $v);
>         $delta++;
>       }
>     }
>     else {
>       db_query("INSERT INTO {webform_submitted_data} (nid, sid, cid, no, data) "."VALUES (%d, %d, %d, %d, '%s')", $node->nid, $sid, $cid, 0, $value);
>     }
>   }
> 
>   return $sid;
> }
> 
1597a1672,1675
>       case 'edit' :
>       	$sid= arg(4);
>       	$content= webform_edit($node, $sid);
>       	break;
44a45
> global $user;
59a61,66
>     if ((user_access("edit own webform submissions") && ($user->uid == $submission->uid)) || user_access("edit webform submissions")) {
> 	  $row[] = l(t('Edit'),"node/$nid/results/edit/".$submission->sid, NULL, NULL, NULL, FALSE);
> 	} else {
> 	  $row[] = t('Edit');
> 	}
> 
