diff options
author | alecpl <alec@alec.pl> | 2010-10-28 07:10:11 +0000 |
---|---|---|
committer | alecpl <alec@alec.pl> | 2010-10-28 07:10:11 +0000 |
commit | a79417d4efda43e99fdc9210c8662890676bebd7 (patch) | |
tree | 00ae35c8d55ab44311859c41eac5751052912053 /program/steps/addressbook/edit.inc | |
parent | 022bcd11320398b6652eacc5c264a87adc16af84 (diff) |
- Plugin API: added 'contact_form' hook
- Re-designed contact frame using Tabs
Diffstat (limited to 'program/steps/addressbook/edit.inc')
-rw-r--r-- | program/steps/addressbook/edit.inc | 131 |
1 files changed, 65 insertions, 66 deletions
diff --git a/program/steps/addressbook/edit.inc b/program/steps/addressbook/edit.inc index 71c706fc4..d975c76f1 100644 --- a/program/steps/addressbook/edit.inc +++ b/program/steps/addressbook/edit.inc @@ -21,93 +21,92 @@ if (($cid = get_input_value('_cid', RCUBE_INPUT_GPC)) && ($record = $CONTACTS->get_record($cid, true))) - $OUTPUT->set_env('cid', $record['ID']); + $OUTPUT->set_env('cid', $record['ID']); // adding not allowed here -if ($CONTACTS->readonly) -{ - $OUTPUT->show_message('sourceisreadonly'); - rcmail_overwrite_action('show'); - return; +if ($CONTACTS->readonly) { + $OUTPUT->show_message('sourceisreadonly'); + rcmail_overwrite_action('show'); + return; } + function rcmail_contact_editform($attrib) { - global $RCMAIL, $CONTACTS, $OUTPUT; - - // check if we have a valid result - if ($RCMAIL->action != 'add' && !(($result = $CONTACTS->get_result()) && ($record = $result->first()))) - { - $OUTPUT->show_message('contactnotfound'); - return false; - } - - // add some labels to client - $OUTPUT->add_label('noemailwarning', 'nonamewarning'); - - list($form_start, $form_end) = get_form_tags($attrib); - unset($attrib['form']); - - // a specific part is requested - if ($attrib['part']) - { - $out = $form_start; - $out .= rcmail_get_edit_field($attrib['part'], $record[$attrib['part']], $attrib); - return $out; - } - - - // return the complete address edit form as table - $out = "$form_start<table>\n\n"; - - $a_show_cols = array('name', 'firstname', 'surname', 'email'); - foreach ($a_show_cols as $col) - { - $attrib['id'] = 'rcmfd_'.$col; - $value = rcmail_get_edit_field($col, $record[$col], $attrib); - $out .= sprintf("<tr><td class=\"title\"><label for=\"%s\">%s</label></td><td>%s</td></tr>\n", - $attrib['id'], - Q(rcube_label($col)), - $value); - } - - $out .= "\n</table>$form_end"; - - return $out; + global $RCMAIL, $CONTACTS, $OUTPUT; + + // check if we have a valid result + if ($RCMAIL->action != 'add' + && !(($result = $CONTACTS->get_result()) && ($record = $result->first())) + ) { + $OUTPUT->show_message('contactnotfound'); + return false; + } + + // add some labels to client + $OUTPUT->add_label('noemailwarning', 'nonamewarning'); + + $i_size = !empty($attrib['size']) ? $attrib['size'] : 40; + $t_rows = !empty($attrib['textarearows']) ? $attrib['textarearows'] : 6; + $t_cols = !empty($attrib['textareacols']) ? $attrib['textareacols'] : 40; + + $form = array( + 'info' => array( + 'name' => rcube_label('contactproperties'), + 'content' => array( + 'name' => array('type' => 'text', 'size' => $i_size), + 'firstname' => array('type' => 'text', 'size' => $i_size), + 'surname' => array('type' => 'text', 'size' => $i_size), + 'email' => array('type' => 'text', 'size' => $i_size), + ), + ), + ); + + + list($form_start, $form_end) = get_form_tags($attrib); + unset($attrib['form']); + + // return the complete address edit form as table + $out = rcmail_contact_form($form, $record); + + return $form_start . $out . $form_end; } -$OUTPUT->add_handler('contacteditform', 'rcmail_contact_editform'); - // similar function as in /steps/settings/edit_identity.inc function get_form_tags($attrib) { - global $CONTACTS, $EDIT_FORM, $RCMAIL; + global $CONTACTS, $EDIT_FORM, $RCMAIL; - $form_start = $form_end = ''; + $form_start = $form_end = ''; - if (empty($EDIT_FORM)) { - $hiddenfields = new html_hiddenfield(array('name' => '_source', 'value' => get_input_value('_source', RCUBE_INPUT_GPC))); - $hiddenfields->add(array('name' => '_gid', 'value' => $CONTACTS->group_id)); + if (empty($EDIT_FORM)) { + $hiddenfields = new html_hiddenfield(array( + 'name' => '_source', 'value' => get_input_value('_source', RCUBE_INPUT_GPC))); + $hiddenfields->add(array('name' => '_gid', 'value' => $CONTACTS->group_id)); - if (($result = $CONTACTS->get_result()) && ($record = $result->first())) - $hiddenfields->add(array('name' => '_cid', 'value' => $record['ID'])); + if (($result = $CONTACTS->get_result()) && ($record = $result->first())) + $hiddenfields->add(array('name' => '_cid', 'value' => $record['ID'])); - $form_start = $RCMAIL->output->request_form(array('name' => "form", 'method' => "post", 'task' => $RCMAIL->task, 'action' => 'save', 'request' => 'save.'.intval($record['ID']), 'noclose' => true) + $attrib, $hiddenfields->show()); - $form_end = !strlen($attrib['form']) ? '</form>' : ''; - - $EDIT_FORM = !empty($attrib['form']) ? $attrib['form'] : 'form'; - $RCMAIL->output->add_gui_object('editform', $EDIT_FORM); - } - - return array($form_start, $form_end); + $form_start = $RCMAIL->output->request_form(array( + 'name' => "form", 'method' => "post", + 'task' => $RCMAIL->task, 'action' => 'save', + 'request' => 'save.'.intval($record['ID']), + 'noclose' => true) + $attrib, $hiddenfields->show()); + $form_end = !strlen($attrib['form']) ? '</form>' : ''; + + $EDIT_FORM = !empty($attrib['form']) ? $attrib['form'] : 'form'; + $RCMAIL->output->add_gui_object('editform', $EDIT_FORM); + } + + return array($form_start, $form_end); } +$OUTPUT->add_handler('contacteditform', 'rcmail_contact_editform'); if (!$CONTACTS->get_result() && $OUTPUT->template_exists('addcontact')) - $OUTPUT->send('addcontact'); + $OUTPUT->send('addcontact'); // this will be executed if no template for addcontact exists $OUTPUT->send('editcontact'); - |