Форма обратной связи для NetCat с расширенным функционалом
В этом рецепте мы будем делать чуть более продвинутую обратную связь. Вот такую:
- пользователь задает вопрос
- администратор получает на почту уведомление со ссылкой на вопрос и возможностью сразу написать ответ
- если, задавая вопрос, пользователь поставил галку "отправить мне оповещения об ответе", после ответа администратора он получит письмо.
Итак, поехали!
Поля компонента:
- Question (Тип поля: Текстовый блок)
- Answer (Тип поля: Текстовый блок)
- Email (Тип поля: Строка, Формат: Email)
- CheckSendMail (Тип поля: Логическая переменная, обязательно для заполнения)
- CheckAdmin (Тип поля: Логическая переменная, обязательно для заполнения)
Установка:
- В альтернативной форме добавления объекта убираем поле CheckAdmin
- В альтернативной форме изменения объекта убираем поле CheckSendMail
- В действие после добавления объекта добавляем код:
echo "<H1>Ваш вопрос получен.<br />Мы ответим на него в самое ближайшее время</H1>";
$subj = "Сообщение с вашего сайта";
$body = "Новый вопрос на вашем сайте<br /><br />
".($f_Question)."<br />
";
$mailer = new CMIMEMail();
$mailer->mailbody(strip_tags($body), $body);
$mailer->send($cc_settings[Sendto], $f_Email, $f_Email, $subj , $system_env['SpamFromName']);
echo "
Замечание: $cc_settings[Sendto]
- вместо этого нужно вставить Email владельца сайта, на который будут приходить письма. Также, можно добавить ссылку, которая будет вести прямо на редактирование добавленного объекта.
Делается это так:
<a href='http://".$_SERVER['HTTP_HOST']."/netcat/message.php?catalogue=$catalogue&sub=$sub&cc=$cc&message=$message'
Итак, сразу после добавления вопроса посылается уведомление на почту владельца сайта.
В действие после изменения объекта добавляем код:
if($f_CheckSendMail && $f_CheckAdmin){
$subj = "Сообщение с сайта";
$body = "На ваш вопрос ответили
";
$mailer = new CMIMEMail();
$mailer->mailbody(strip_tags($body), $body);
$mailer->send($f_Email, $f_Email, $f_Email, $subj , $system_env['SpamFromName']);
}
if($inside_admin) {
ob_end_clean();
header("Location: ".$goBackLink."&inside_admin=1");
exit;
}
else {
echo NETCAT_MODERATION_MSG_OBJCHANGED;
echo "<br /><br />".$goBack;
}
echo "
Замечание: если человек, задающий вопрос не изъявил желания уведомлять его об ответе, то ни при каких условиях уведомление не придет к нему на почту. Но если все-таки пользователь захотел получить уведомление, то оно придет только тогда, когда администратор заполнит поле CheckAdmin утвердительно.
Вот и все! Используйте на здоровье :)
Удалил :)
Finar.