FAQ - уведомление и простая модерация (*1.10...) мини_хак

2031
Всем Привет!


Занялся сегодня наполнением

FAQ

на сайте и заметил такую не очень удобную штуку..
Все дело в том, что при добалении вопроса от пользователя,
он попадает в базу и ждет модерации (если включено в админке) или сразу публикуется.

Все хорошо, Но админ об этом может узнать только в админке,
на странице компонента, что не всегда удобно и быстро получается. . . .



Решил немного доработать процесс добавления вопроса и думаю многим это пригодится,
кто использует или собирается использовать FAQ компонент в Инстанте.

Так как я не сторонник постоянного нахождения в админке,
решил прикрутить уведомление и упростить модерацию поступивших вопросов.


Правок не много и все они простые, без вмешательств в работу компонента.
Делал на 1.10., но думаю и на 1.9 примерно все так же будет.


В Файле \www\components\faq\frontend.php

После строки :
Код PHP:
  1. $quest_id = $inDB->get_last_id('cms_faq_quests');
Добавляем :

Код PHP:
  1. $messag = 'Задан <a href="/faq/quest'.$quest_id.'.html">вопрос #'.$quest_id.'
  2. </a> в разделе помощи и ожидает модерации!';
  3. cmsUser::sendMessage(USER_UPDATER, '1', $messag);

Цифра 1 – это ID пользователя кому придет уведомление, по умолчанию – админ


Далее в этом же файле , Перед строкой
Код PHP:
  1. $inCore->executePluginRoute($do);
Добавляем:

Код PHP:
  1. if ($do=='publ'){ // ks_micro_hack
  2. $quest_id = $inCore->request('quest_id', 'int', 0);
  3. $user_id = $inUser->id;
  4. $sql = "SELECT con.id, con.quest, con.category_id
  5. FROM cms_faq_quests con
  6. WHERE con.id = '$quest_id' LIMIT 1";
  7. $result = $inDB->query($sql);
  8. $quest = $inDB->fetch_assoc($result);
  9. if (!$user_id || !$quest_id || !$quest) { $inCore->redirectBack(); }
  10. if (cmsUser::userIsAdmin($user_id)){
  11. $sql = "UPDATE cms_faq_quests SET published = 1 WHERE id='$quest_id'";
  12. $result = $inDB->query($sql);
  13. $quest = $inDB->fetch_assoc($result);}
  14. $inCore->redirect('/faq/'.$quest['category_id']);}



Далее идем в файл \www\components\faq\router.php

После строки
Код PHP:
  1. function routes_faq(){
Добавляем:

Код PHP:
  1. $routes[] = array(
  2. '_uri' => '/^faq\/publ([0-9]+).html$/i',
  3. 'do' => 'publ',
  4. 1 => 'quest_id'
  5. );


И последнее, делается для удобства модерации:

В файле:

\www\templates\ **Ваш_Шаблон** \components\com_faq_read.tpl

В самом начале найти строку:

Код PHP:
  1. <div class="con_heading">{$LANG.QUESTION_VIEW} {if $is_admin}<a href="/faq/delquest{$quest.id}.html">X</a>{/if}</div>
И поменять ее на эту:

Код PHP:
  1. <div class="con_heading">{$LANG.QUESTION_VIEW} {if $is_admin}<a style="color:green" href="/faq/publ{$quest.id}.html">Публикуем?</a> или <a style="color:red" href="/faq/delquest{$quest.id}.html">Удаляем?</a>{/if}</div>

На этом все.

Теперь админу (или тому кого указать) будет приходить уведомление о необходимости модерации вопроса.
На странице вопроса можно его быстро одобрить или удалить (это может только админ)


.
Защита от минусаторов (микро хак *1.10_*) | Повторная Активация (1.10.* микрохак)
Теги: фак, faq
Комментарии (20)
qwest 7 февраля 2013 в 15:04 +3
Плюсую хороший хак. А можно прописать что бы уведомлялся админ и одновременно например несколько модераторов?
KS 7 февраля 2013 в 15:44 +3
можно, если по простому , просто прописать cmsUser::sendMessage(USER_UPDATER, '1', $messag);
несколько раз, где вместо 1 - указать id получателя.

или сделать так: cmsUser::sendMessageToGroup(USER_UPDATER, '2', $messag);

где 2 - это id группы которой нужно отправить уведомление
qwest 7 февраля 2013 в 15:47 +3
Спасибо.
Malanas 7 февраля 2013 в 15:37 +3
Полезный хак +
Dost 7 февраля 2013 в 15:38 +3
плюсик
Amurland 7 февраля 2013 в 16:36 +2
Дело хорошее.

+1

Как-то на форуме разбирали данный вопрос. Но там делали отсылку на почту.
Князь Мышкин 7 февраля 2013 в 16:45 +3
Плюсую!
Вообще, недурно бы было в принципе штуку придумать, которая бы уведомляла о любом типе контента, который падает в модерацию.
Наверняка же плагин можно запилить. Я бы даже купил
Anonim 7 февраля 2013 в 17:33 +4
Удивительно, но такие элементарные вещи, просто отсутствуют в системе, причем пишут их очень давно

Давайте соберем где-нибудь все такие хаки, и попросим их авторов включить эти изменения в новую версию? было бы очень полезно
KS 8 февраля 2013 в 08:01 0
2.0 настолько гибкая система, что думаю, там такое без вмешательства в файлы можно будет сделать.
В любом случае лучше подождать финальную.
А это, так, костыль для тех кому лень ждать ))
Search 7 февраля 2013 в 18:02 +3
Скажите, а на 1.10.1 будет работать?
KS 7 февраля 2013 в 18:42 +2
да
pikasso 17 октября 2014 в 15:52 0
Подскажите как точно такое сделать для v1.10.3 ???
Олег Васильевич я 7 февраля 2013 в 18:13 +4
KS:
Делал на 1.10., но думаю и на 1.9 примерно все так же будет.
Для 1.9 (+ статьи) Madmax делал.
Спасибо!
nedoriko 7 февраля 2013 в 18:53 +3
Раньше было действительно неудобно. Я о вопросе заметил чуть ли не через неделю. А так гораздо лучше будет. Спасибо.
+ и в карму тоже
Kamunikator 7 февраля 2013 в 19:46 +2
Отлично! Спасибо!!! +
Сергей 9 февраля 2013 в 10:49 0


Почему бы не вынести выбор пользователя который будет получать уведомления в настройки?
Def 28 мая 2013 в 10:54 0
а можно сделать, чтобы слал на мыло, а не в личку?) поодскажите пожалуйста, как
Петр 9 августа 2013 в 09:41 0
такое должно быть в дистрибутиве!
pikasso 16 мая 2014 в 13:28 0
Ребята подскажите как точно такое сделать для v1.10.3 ???
pikasso 6 июня 2015 в 02:01 0
ребята подскажите как исправить фигню...в компоненте FAQ все свежие сообщения идут в низу а не сначала...куда копать?