Форма обратной связи для 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.

Блог

WebSocket: интеграция с NetCat

Хотите добавить на сайт под управлением CMS NetCat поддержку технологии WebSocket? Обращайтесь к нам! Посетители сайта смогут получать мгновенные уведомления о событиях сайта без обращений к серверу и перезагрузок страниц. Превратите свой сайт в интерактивную площадку, работающую в реальном времени!

далее

Поломка админки NetCat 4.7 в Google Chrome и Opera

В современных версиях Google Chrome и Opera, вышедших в прошлом месяце, админка CMS NetCat 4.7 и младше вдруг сломалась. Поломка проявляется в том, что в правой части админки перестала показываться нижняя панель редактирования (там, где кнопки Добавить и прочие), а скролл-прокрутка не осуществляется до конца. Работать с сайтом и добавлять новые материалы не представляется возможным.

далее

NetCat: техническая поддержка и доработка сайтов

Мы работаем с CMS NetCat уже больше 10 лет. У нас большой опыт и ответственный подход к делу.

далее

Права Доступа в Компонентах: работают не так, как ожидается; но можно накостылить патч

Если в настройках Раздела или Инфоблока NetCat попробовать дать доступ на изменение объекта ВСЕМ, ничего не получится. Просмотр и Добавление работают одним образом, а Изменение, Включение и Удаление -- другим.

далее

Весь блог тут