diff options
author | thomascube <thomas@roundcube.net> | 2011-04-12 18:05:36 +0000 |
---|---|---|
committer | thomascube <thomas@roundcube.net> | 2011-04-12 18:05:36 +0000 |
commit | 3d8b54edf74792e3996d861a6a30c41d82976261 (patch) | |
tree | 25f62aa62851aebd12a98825b5c3e8b07d12ef73 /program | |
parent | 12dac4911b91e80cf1d8c85ee8ad1ef191b630cb (diff) |
Keep all submitted data if contact form validation fails (#1487865)
Diffstat (limited to 'program')
-rw-r--r-- | program/steps/addressbook/edit.inc | 38 | ||||
-rw-r--r-- | program/steps/addressbook/save.inc | 1 |
2 files changed, 22 insertions, 17 deletions
diff --git a/program/steps/addressbook/edit.inc b/program/steps/addressbook/edit.inc index 932dc4918..cf6beba68 100644 --- a/program/steps/addressbook/edit.inc +++ b/program/steps/addressbook/edit.inc @@ -31,18 +31,28 @@ if ($CONTACTS->readonly) { } -function rcmail_contact_edithead($attrib) +function rcmail_get_edit_record() { - global $RCMAIL, $CONTACTS; + global $RCMAIL, $CONTACTS; + + // check if we have a valid result + if ($GLOBALS['EDIT_RECORD']) { + $record = $GLOBALS['EDIT_RECORD']; + } + else if ($RCMAIL->action != 'add' + && !(($result = $CONTACTS->get_result()) && ($record = $result->first())) + ) { + $RCMAIL->output->show_message('contactnotfound'); + return false; + } + + return $record; +} +function rcmail_contact_edithead($attrib) +{ // check if we have a valid result - if ($RCMAIL->action != 'add' - && !(($result = $CONTACTS->get_result()) && ($record = $result->first())) - ) { - $RCMAIL->output->show_message('contactnotfound'); - return false; - } - + $record = rcmail_get_edit_record(); $i_size = !empty($attrib['size']) ? $attrib['size'] : 20; $form = array( @@ -74,15 +84,9 @@ function rcmail_contact_edithead($attrib) function rcmail_contact_editform($attrib) { - global $RCMAIL, $CONTACTS, $CONTACT_COLTYPES; + global $RCMAIL, $CONTACT_COLTYPES; - // check if we have a valid result - if ($RCMAIL->action != 'add' - && !(($result = $CONTACTS->get_result()) && ($record = $result->first())) - ) { - $RCMAIL->output->show_message('contactnotfound'); - return false; - } + $record = rcmail_get_edit_record(); // add some labels to client $RCMAIL->output->add_label('noemailwarning', 'nonamewarning'); diff --git a/program/steps/addressbook/save.inc b/program/steps/addressbook/save.inc index 8949a239b..88fe98cd1 100644 --- a/program/steps/addressbook/save.inc +++ b/program/steps/addressbook/save.inc @@ -139,6 +139,7 @@ if (empty($a_record['name'])) { if (!$CONTACTS->validate($a_record)) { $err = (array)$CONTACTS->get_error() + array('message' => 'formincomplete', 'type' => 'warning'); $OUTPUT->show_message($err['message'], $err['type']); + $GLOBALS['EDIT_RECORD'] = $a_record; // store submitted data to be used in edit form rcmail_overwrite_action($return_action); return; } |