From 36e427254618c6ed173d187e562f268add2b58fc Mon Sep 17 00:00:00 2001 From: ftimme <ft@falkotimme.com> Date: Fri, 19 Apr 2013 09:14:15 -0400 Subject: [PATCH] - The Help module now sends email messages when a support request is opened/answered. - The date and time of support requests is now shown. --- interface/web/help/templates/support_message_list.htm | 7 ++- interface/web/help/support_message_edit.php | 58 +++++++++++++++++++++++++++++ interface/web/help/lib/lang/en_support_message.lng | 7 +++ interface/web/help/templates/support_message_view.htm | 4 ++ interface/web/help/lib/lang/en_support_message_list.lng | 1 interface/lib/classes/listform.inc.php | 16 ++++++++ interface/web/help/lib/lang/de_support_message_list.lng | 1 interface/web/help/list/support_message.list.php | 9 ++++ interface/web/help/lib/lang/de_support_message.lng | 7 +++ 9 files changed, 108 insertions(+), 2 deletions(-) diff --git a/interface/lib/classes/listform.inc.php b/interface/lib/classes/listform.inc.php index e690a1c..a57f8e5 100644 --- a/interface/lib/classes/listform.inc.php +++ b/interface/lib/classes/listform.inc.php @@ -357,6 +357,16 @@ } } break; + case 'DATETIMETSTAMP': + if ($record[$key] > 0) { + // is value int? + if (preg_match("/^[0-9]+[\.]?[0-9]*$/", $record[$key], $p)) { + $record[$key] = date($this->lng('conf_format_datetime'), $record[$key]); + } else { + $record[$key] = date($this->lng('conf_format_datetime'), strtotime($record[$key])); + } + } + break; case 'DATE': if ($record[$key] > 0) { // is value int? @@ -422,6 +432,12 @@ $record[$key] = date('Y-m-d',strtotime($record[$key])); } break; + + case 'DATETIMETSTAMP': + if($record[$key] > 0) { + $record[$key] = date('Y-m-d H:i:s',strtotime($record[$key])); + } + break; case 'DATE': if($record[$key] != '' && $record[$key] != '0000-00-00') { diff --git a/interface/web/help/lib/lang/de_support_message.lng b/interface/web/help/lib/lang/de_support_message.lng index 60d3c0c..67d68f9 100644 --- a/interface/web/help/lib/lang/de_support_message.lng +++ b/interface/web/help/lib/lang/de_support_message.lng @@ -5,4 +5,11 @@ $wb['message_txt'] = 'Nachricht'; $wb['tstamp_txt'] = 'Zeitpunkt'; $wb['reply_txt'] = 'Antworten'; +$wb['date_txt'] = 'Datum'; +$wb['support_request_subject_txt'] = 'Supportanfrage'; +$wb['support_request_txt'] = 'Sie haben eine Supportanfrage erhalten. Bitte antworten Sie nicht auf diese Email, sondern bearbeiten Sie die Supportanfrage in ISPConfig.'; +$wb['answer_to_support_request_txt'] = 'Sie haben eine Antwort auf Ihre Supportanfrage erhalten. Bitte antworten Sie nicht auf diese Email, sondern bearbeiten Sie die Nachricht in ISPConfig.'; +$wb['answer_to_support_request_sent_txt'] = 'Ihre Antwort auf die Supportanfrage ist verschickt worden. Bitte antworten Sie nicht auf diese Email.'; +$wb['support_request_sent_txt'] = 'Ihre Supportanfrage ist verschickt worden. Bitte antworten Sie nicht auf diese Email.'; +$wb['recipient_or_sender_email_address_not_valid_txt'] = 'Die Nachricht konnte nicht verschickt werden, da die Empfänger- und/oder die Sender-Email-Adresse nicht gültig ist.'; ?> diff --git a/interface/web/help/lib/lang/de_support_message_list.lng b/interface/web/help/lib/lang/de_support_message_list.lng index 7273475..74fbeb2 100644 --- a/interface/web/help/lib/lang/de_support_message_list.lng +++ b/interface/web/help/lib/lang/de_support_message_list.lng @@ -3,4 +3,5 @@ $wb['sender_id_txt'] = 'Absender'; $wb['subject_txt'] = 'Betreff'; $wb['add_new_record_txt'] = 'Neue Supportnachricht erstellen'; +$wb['date_txt'] = 'Datum'; ?> diff --git a/interface/web/help/lib/lang/en_support_message.lng b/interface/web/help/lib/lang/en_support_message.lng index 59816c6..bcc50ac 100644 --- a/interface/web/help/lib/lang/en_support_message.lng +++ b/interface/web/help/lib/lang/en_support_message.lng @@ -5,4 +5,11 @@ $wb['message_txt'] = 'Message'; $wb['tstamp_txt'] = 'Timestamp'; $wb['reply_txt'] = 'Reply'; +$wb['date_txt'] = 'Date'; +$wb['support_request_subject_txt'] = 'Support Request'; +$wb['support_request_txt'] = 'You have got a support request. Please don\'t reply to this email, but process the support request inside ISPConfig.'; +$wb['answer_to_support_request_txt'] = 'You have got a reply to your support request. Please don\'t reply to this email, but process the message inside ISPConfig.'; +$wb['answer_to_support_request_sent_txt'] = 'Your reply to the support request has been sent. Please don\'t reply to this email.'; +$wb['support_request_sent_txt'] = 'Your support request has been sent. Please don\'t reply to this email.'; +$wb['recipient_or_sender_email_address_not_valid_txt'] = 'The message could not be sent because the recipient and/or the sender email address is not valid.'; ?> diff --git a/interface/web/help/lib/lang/en_support_message_list.lng b/interface/web/help/lib/lang/en_support_message_list.lng index 9f2b3fd..2cea311 100644 --- a/interface/web/help/lib/lang/en_support_message_list.lng +++ b/interface/web/help/lib/lang/en_support_message_list.lng @@ -3,4 +3,5 @@ $wb['sender_id_txt'] = 'Sender'; $wb['subject_txt'] = 'Subject'; $wb["add_new_record_txt"] = 'Create new support message'; +$wb['date_txt'] = 'Date'; ?> \ No newline at end of file diff --git a/interface/web/help/list/support_message.list.php b/interface/web/help/list/support_message.list.php index 1f2f8e3..1474959 100644 --- a/interface/web/help/list/support_message.list.php +++ b/interface/web/help/list/support_message.list.php @@ -57,6 +57,15 @@ 'suffix' => '%', 'width' => '', 'value' => ''); + +$liste['item'][] = array( 'field' => 'tstamp', + 'datatype' => 'DATETIMETSTAMP', + 'formtype' => 'TEXT', + 'op' => '=', + 'prefix' => '', + 'suffix' => '', + 'width' => '', + 'value' => ''); ?> \ No newline at end of file diff --git a/interface/web/help/support_message_edit.php b/interface/web/help/support_message_edit.php index c6e992f..b1cbf2a 100644 --- a/interface/web/help/support_message_edit.php +++ b/interface/web/help/support_message_edit.php @@ -31,6 +31,53 @@ //* Set the sender_id field to the ID of the current user $this->dataRecord['sender_id'] = $_SESSION['s']['user']['userid']; + //* Get recipient email address + if($this->dataRecord['recipient_id'] > 1){ + $sql = "SELECT client.email FROM sys_user, client WHERE sys_user.userid = ".$this->dataRecord['recipient_id']." AND sys_user.client_id = client.client_id"; + $client = $app->db->queryOneRecord($sql); + $recipient_email = $client['email']; + } else { + $app->uses('ini_parser,getconf'); + $system_config_mail_settings = $app->getconf->get_global_config('mail'); + $recipient_email = $system_config_mail_settings['admin_mail']; + } + + //* Get sender email address + if($this->dataRecord['sender_id'] > 1){ + $sql = "SELECT client.email FROM sys_user, client WHERE sys_user.userid = ".$this->dataRecord['sender_id']." AND sys_user.client_id = client.client_id"; + $client = $app->db->queryOneRecord($sql); + $sender_email = $client['email']; + } else { + $app->uses('ini_parser,getconf'); + $system_config_mail_settings = $app->getconf->get_global_config('mail'); + $sender_email = $system_config_mail_settings['admin_mail']; + } + + $email_regex = '/^(\w+[\w\.\-\+]*\w{0,}@\w+[\w.-]*\.[a-z\-]{2,10}){0,1}$/i'; + if(preg_match($email_regex, $sender_email, $match) && preg_match($email_regex, $recipient_email, $match)){ + $subject = $app->tform->lng('support_request_subject_txt').': '.$this->dataRecord['subject']; + if($this->dataRecord['recipient_id'] == 1){ + $message = $app->tform->lng('support_request_txt'); + } else { + $message = $app->tform->lng('answer_to_support_request_txt'); + } + $message .= "\n\n".$app->tform->lng('message_txt').": \"".$this->dataRecord['message']."\""; + $message .= "\n\nISPConfig: ".($_SERVER['HTTPS'] == 'on' ? 'https://' : 'http://').$_SERVER['HTTP_HOST']; + $app->functions->mail($recipient_email, $subject, $message, $sender_email); + + //* Send confirmation email to sender + if($this->dataRecord['sender_id'] == 1){ + $confirmation_message = $app->tform->lng('answer_to_support_request_sent_txt'); + } else { + $confirmation_message = $app->tform->lng('support_request_sent_txt'); + } + $confirmation_message .= "\n\n".$app->tform->lng('message_txt').": \"".$this->dataRecord['message']."\""; + $confirmation_message .= "\n\nISPConfig: ".($_SERVER['HTTPS'] == 'on' ? 'https://' : 'http://').$_SERVER['HTTP_HOST']; + $app->functions->mail($sender_email, $subject, $confirmation_message, $recipient_email); + } else { + $app->tform->errorMessage .= $app->tform->lng("recipient_or_sender_email_address_not_valid_txt")."<br />"; + } + //* call the onSubmit function of the parent class parent::onSubmit(); } @@ -44,6 +91,17 @@ //* read only template if a existing message is loaded if($this->id > 0) { $app->tform->formDef['tabs']['message']['template'] = 'templates/support_message_view.htm'; + $record = $app->db->queryOneRecord("SELECT * FROM support_message WHERE support_message_id = ".$this->id); + if ($record['tstamp'] > 0) { + // is value int? + if (preg_match("/^[0-9]+[\.]?[0-9]*$/", $record['tstamp'], $p)) { + $record['tstamp'] = date($app->lng('conf_format_datetime'), $record['tstamp']); + } else { + $record['tstamp'] = date($app->lng('conf_format_datetime'), strtotime($record['tstamp'])); + } + } + $app->tpl->setVar("date", $record['tstamp']); + //die(print_r($this->dataRecord)); } //* call the onShow function of the parent class diff --git a/interface/web/help/templates/support_message_list.htm b/interface/web/help/templates/support_message_list.htm index af20223..d3fa429 100644 --- a/interface/web/help/templates/support_message_list.htm +++ b/interface/web/help/templates/support_message_list.htm @@ -20,11 +20,13 @@ <tr class="caption"> <th class="tbl_col_sender_id" scope="col"><tmpl_var name="sender_id_txt"></th> <th class="tbl_col_subject" scope="col"><tmpl_var name="subject_txt"></th> + <th class="tbl_col_tstamp" scope="col"><tmpl_var name="date_txt"></th> <th class="tbl_col_limit" scope="col">{tmpl_var name='search_limit'}</th> </tr> <tr class="filter"> <td class="tbl_col_sender_id"><select name="search_sender_id">{tmpl_var name='search_sender_id'}</select></td> <td class="tbl_col_subject"><input type="text" name="search_subject" value="{tmpl_var name='search_subject'}" /></td> + <td class="tbl_col_tstamp"> </td> <td class="tbl_col_buttons"> <button type="button" class="button icons16 icoFilter" name="Filter" id="Filter" value="{tmpl_var name="filter_txt"}" onclick="submitForm('pageForm','help/support_message_list.php');"><span>{tmpl_var name="filter_txt"}</span></button> </td> @@ -35,6 +37,7 @@ <tr class="tbl_row_<tmpl_if name='__EVEN__'}even<tmpl_else>uneven</tmpl_if>"> <td class="tbl_col_sender_id"><a href="#" onclick="loadContent('help/support_message_edit.php?id={tmpl_var name='id'}');">{tmpl_var name="sender_id"}</a></td> <td class="tbl_col_subject"><a href="#" onclick="loadContent('help/support_message_edit.php?id={tmpl_var name='id'}');">{tmpl_var name="subject"}</a></td> + <td class="tbl_col_tstamp"><a href="#" onclick="loadContent('help/support_message_edit.php?id={tmpl_var name='id'}');">{tmpl_var name="tstamp"}</a></td> <td class="tbl_col_buttons"> <a class="button icons16 icoDelete" href="javascript: del_record('help/support_message_del.php?id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span>{tmpl_var name='delete_txt'}</span></a> </td> @@ -42,13 +45,13 @@ </tmpl_loop> <tmpl_unless name="records"> <tr class="tbl_row_noresults tbl_row_<tmpl_if name='__EVEN__'}even<tmpl_else>uneven</tmpl_if>"> - <td colspan="3">{tmpl_var name='globalsearch_noresults_text_txt'}</td> + <td colspan="4">{tmpl_var name='globalsearch_noresults_text_txt'}</td> </tr> </tmpl_unless> </tbody> <tfoot> <tr> - <td class="tbl_footer tbl_paging" colspan="3"><tmpl_var name="paging"></td> + <td class="tbl_footer tbl_paging" colspan="4"><tmpl_var name="paging"></td> </tr> </tfoot> </table> diff --git a/interface/web/help/templates/support_message_view.htm b/interface/web/help/templates/support_message_view.htm index c399e90..f7145e0 100644 --- a/interface/web/help/templates/support_message_view.htm +++ b/interface/web/help/templates/support_message_view.htm @@ -13,6 +13,10 @@ <label for="message">{tmpl_var name='message_txt'}</label> <p>{tmpl_var name='message'}</p> </div> + <div class="ctrlHolder"> + <label for="message">{tmpl_var name='date_txt'}</label> + <p>{tmpl_var name='date'}</p> + </div> </fieldset> <div class="buttonHolder buttons"> <button class="positive iconstxt icoPositive" type="button" value="{tmpl_var name='reply_txt'}" onclick="loadContent('help/support_message_edit.php?reply={tmpl_var name='id'}');"><span>{tmpl_var name='reply_txt'}</span></button> -- Gitblit v1.9.1