Форма обратной связи для NetCat с расширенным функционалом

В этом рецепте мы будем делать чуть более продвинутую обратную связь. Вот такую:

  1. пользователь задает вопрос
  2. администратор получает на почту уведомление со ссылкой на вопрос и возможностью сразу написать ответ
  3. если, задавая вопрос, пользователь поставил галку "отправить мне оповещения об ответе", после ответа администратора он получит письмо.

Итак, поехали!

Поля компонента:

  1. Question (Тип поля: Текстовый блок)
  2. Answer (Тип поля: Текстовый блок)
  3. Email (Тип поля: Строка, Формат: Email)
  4. CheckSendMail (Тип поля: Логическая переменная, обязательно для заполнения)
  5. 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 утвердительно.

Вот и все! Используйте на здоровье :)

Алекс — 2012-05-17, 12:58

Удалите комментарий выше работает

Удалил :)

Finar.

Блог

Что с Мастерхостом? Когда заработает?!

Этот вопрос всё чаще задают в Интернете начиная примерно с 12:00 дня 2 марта. А всё потому, что он накрылся!

далее

Автоматизированная Система Управления Бэкапами

Автоматизированная Система Управления Бэкапами позволяет добиться полного контроля над резервными копиями сайтов внутри инфраструктуры веб-студии. Если вы поддерживаете десятки сайтов на разных хостингах, без подобной системы вы не можете быть на 100% уверены в том, что каждый из них был корректно зарезервирован прошлой ночью.

далее

Хорошая верстка в LESS: как?

Здесь собраны некоторые рекомендации по верстке макетов дизайна с использованием LESS. Они годятся для проектов, где необходимо сверстать сложный макет дизайна с использованием CSS-фреймоворка и LESS препроцессора.

далее

Хороший веб-дизайн: как?

Photoshop и PSD-файлы были популярны в начале века, а сейчас чтобы создать дизайн сложного веб-сайта практичнее использовать специализированные инструменты. И не только потому, что статические PSD-файлы с трудом справляются с задачей визуализации динамической тянущейся верстки и анимации. Еще и потому, что важно не только нарисовать красиво, но и удобно передать результат верстальщику.

далее

Весь блог тут