some improvments for easier extention of the contact form

This commit is contained in:
Ralf Becker 2010-08-01 21:04:04 +00:00
parent 316858bab3
commit 8740eab224

View File

@ -16,6 +16,13 @@
*/ */
class addressbook_contactform class addressbook_contactform
{ {
/**
* Callback as variable for easier extending
*
* @var string
*/
var $callback = 'addressbook.addressbook_contactform.display';
/** /**
* Shows the contactform and stores the submitted data * Shows the contactform and stores the submitted data
* *
@ -29,7 +36,7 @@ class addressbook_contactform
* @param string $copytoreceiver=false send a copy of notification to receiver * @param string $copytoreceiver=false send a copy of notification to receiver
* @return string html content * @return string html content
*/ */
function display($content=null,$addressbook=null,$fields=null,$msg=null,$email=null,$tpl_name=null,$subject=null,$copytoreceiver=false) function display(array &$content=null,$addressbook=null,$fields=null,$msg=null,$email=null,$tpl_name=null,$subject=null,$copytoreceiver=false,$sel_options=array())
{ {
#error_log( "<p>addressbook_contactform::display(".print_r($content,true).",$addressbook,".print_r($fields,true).",$msg,$tpl_name)</p>\n"); #error_log( "<p>addressbook_contactform::display(".print_r($content,true).",$addressbook,".print_r($fields,true).",$msg,$tpl_name)</p>\n");
if (empty($tpl_name) && !empty($content['tpl_form_name'])) $tpl_name =$content['tpl_form_name']; if (empty($tpl_name) && !empty($content['tpl_form_name'])) $tpl_name =$content['tpl_form_name'];
@ -53,6 +60,7 @@ class addressbook_contactform
$contact = new addressbook_bo(); $contact = new addressbook_bo();
if ($content['owner']) // save the contact in the addressbook if ($content['owner']) // save the contact in the addressbook
{ {
$content['private'] = 0; // in case default_private is set
if (($id = $contact->save($content))) if (($id = $contact->save($content)))
{ {
// check for fileuploads and attach the found files // check for fileuploads and attach the found files
@ -70,7 +78,7 @@ class addressbook_contactform
} }
} }
return '<p align="center">'.$content['msg'].'</p>'; return '<p align="center">'.($msg ? $msg : $content['msg']).'</p>';
} }
else else
{ {
@ -110,7 +118,7 @@ class addressbook_contactform
$custom = 1; $custom = 1;
foreach($fields as $name) foreach($fields as $name)
{ {
if ($name{0} == '#') // custom field if ($name[0] == '#') // custom field
{ {
static $contact; static $contact;
if (is_null($contact)) if (is_null($contact))
@ -135,15 +143,17 @@ class addressbook_contactform
} }
} }
$preserv['start_time'] = time(); $preserv['start_time'] = time();
$content['lang'] = $GLOBALS['egw_info']['user']['preferences']['common']['lang'];
} }
if (is_array($content) && $submitted == 'truebutfalse') { elseif ($submitted == 'truebutfalse')
{
$preserv['tpl_form_name'] = $tpl_name; $preserv['tpl_form_name'] = $tpl_name;
unset($content['submitit']); unset($content['submitit']);
$custom = 1; $custom = 1;
// fieldnames are "defined" by the commit attempt, that way, we do not have to remember them // fieldnames are "defined" by the commit attempt, that way, we do not have to remember them
foreach($content as $name => $value) { foreach($content as $name => $value) {
$preserv[$name]=$value; $preserv[$name]=$value;
if ($name{0} == '#') // custom field if ($name[0] == '#') // custom field
{ {
static $contact; static $contact;
if (is_null($contact)) $contact = new addressbook_bo(); if (is_null($contact)) $contact = new addressbook_bo();
@ -184,6 +194,6 @@ class addressbook_contactform
$content['captcha_task'] = sprintf('%d - %d =',$num1,$num2); $content['captcha_task'] = sprintf('%d - %d =',$num1,$num2);
$preserv['captcha_result'] = $num1-$num2; $preserv['captcha_result'] = $num1-$num2;
} }
return $tpl->exec('addressbook.addressbook_contactform.display',$content,$sel_options,$readonlys,$preserv); return $tpl->exec($this->callback,$content,$sel_options,$readonlys,$preserv);
} }
} }