From 3d8b54edf74792e3996d861a6a30c41d82976261 Mon Sep 17 00:00:00 2001 From: thomascube Date: Tue, 12 Apr 2011 18:05:36 +0000 Subject: Keep all submitted data if contact form validation fails (#1487865) --- program/steps/addressbook/edit.inc | 38 +++++++++++++++++++++----------------- program/steps/addressbook/save.inc | 1 + 2 files changed, 22 insertions(+), 17 deletions(-) (limited to 'program/steps') 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; } -- cgit v1.2.3