Можно ли в компоненте "Вопросы и ответы" назначать пользователй в виде модераторов?

#1 30 августа 2014 в 12:50
Хочу сделать, чтобы на определнные категории в компоненте "Вопросы и ответы" могли отвечать назначенные пользователи. Возможно ли такое сделать? Т.е есь например категория "Медицинская консультация". Там люди здают вопросы, а назначенный пользователь может отвечать на вопросы только в этой заданной категории. Также после того как поступил вопрос ему на почту отправлялось бы уведомление о поступлении нового вопроса.
#2 30 августа 2014 в 18:50
Сообщайте о какой версии речь идет.
#3 30 августа 2014 в 21:17
1.10.4
#4 30 августа 2014 в 21:31
Возможно.
#5 30 августа 2014 в 21:47
Lora, напишите пожалуйста где и как там это назначается? не увидел такой настройки при создании категорий компонента
#6 30 августа 2014 в 21:56
или можете помочь реализовать такой функциональчик?
#7 30 августа 2014 в 23:11
Такой настройки нет, но реализовать можно, единственное не знаю пока как сюда
  1. assign('labels', array('comments' => $_LANG['ANSWERS'], 'add' => $_LANG['REPLY'], 'rss' => $_LANG['RSS_FEED'], 'not_comments' => $_LANG['NOT_ANSWERS']))->
добавить условие, конкретно к переменной add. Т.е. как то так надо
  1. assign('labels', array('comments' => $_LANG['ANSWERS'], if($a == $b)){'add' => $_LANG['REPLY']}, 'rss' => $_LANG['RSS_FEED'], 'not_comments' => $_LANG['NOT_ANSWERS']))->
это что бы скрыть от остальных "ответить". Если разберётесь вперёд меня пишите, остальное не вызывает проблем.
#8 30 августа 2014 в 23:51
это для каждой категории вопросов и ответов надо будет условие добавлять?
#9 31 августа 2014 в 00:03
Надеюсь, что нет. Сейчас попробую $cfg заусловить.
#10 31 августа 2014 в 05:53
1.Добавляете в базу cms_faq_cats поле (int) moder.
2.В backend.php в if ($opt == 'add_cat' || $opt == 'edit_cat') у меня 508стр. добавляете
  1. <tr>
  2. <td><strong><?php echo $_LANG['AD_NAME_MODER']; ?>: </strong></td>
  3. <td><select name="moder" id="moder" style="width:220px">
  4. <option value="0" <?php if (!isset ($mod['moder'])){ echo 'selected'; } ?>>--</option>
  5. <?php if (isset($mod['moder']))
  6. {
  7. echo $inCore->getListItems('cms_user_groups', $mod['moder']);
  8. } else {
  9. echo $inCore->getListItems('cms_user_groups');
  10. }
  11. ?>
  12. </select></td>
  13. </tr>
3. В frontend.php заменяете блок if ($do=='read') на этот
  1. if ($do=='read'){
  2. $user_id = $inUser->id;
  3. $grp = $inUser->getGroupIdByUserId($user_id);
  4.  
  5. $quest = $model->Moder($id);
  6. foreach($quest as $value){
  7. $quests = $value;
  8. }
  9.  
  10.  
  11.  
  12. $inPage->addPathway($quests['cat_title'], '/faq/'.$quest['cat_id']);
  13. if (mb_strlen($quests['quest'])>40) { $shortquest = mb_substr($quests['quest'], 0, 40).'...'; }
  14. else { $shortquest = $quests['quest']; }
  15.  
  16. $inPage->addPathway($shortquest);
  17. $inPage->setTitle($shortquest);
  18. $inPage->setDescription($shortquest);
  19.  
  20. cmsPage::initTemplate('components', 'com_faq_read')->
  21. assign('quest', $quest)->
  22. assign('quests', $quests['quest'])->
  23. assign('quests_pub', $quests['pubdate'])->
  24. assign('cfg', $cfg)->
  25. assign('grp', $grp)->
  26. assign('labels', array('comments' => $_LANG['ANSWERS'], 'add' => $_LANG['REPLY'], 'rss' => $_LANG['RSS_FEED'], 'not_comments' => $_LANG['NOT_ANSWERS']))->
  27. assign('is_admin', $inUser->is_admin)->
  28. display('com_faq_read.tpl');
  29.  
  30.  
  31.  
  32. }
4.Добавляете ф-цию в .../faq/model.php
  1. public function Moder($id){
  2.  
  3. $sql = "SELECT con.*,
  4. cat.title cat_title, cat.id cat_id, cat.moder moder, u.login,
  5. u.nickname,com.target_id target_id,
  6. com.content answer
  7. FROM cms_faq_quests con
  8. LEFT JOIN cms_faq_cats cat ON cat.id = con.category_id
  9. LEFT JOIN cms_users u ON u.id = con.user_id
  10. LEFT JOIN cms_comments com ON com.target_id = con.id
  11. WHERE con.id = $id
  12. {$this->inDB->group_by}
  13.  
  14. {$this->inDB->order_by}\n";
  15. if ($this->inDB->limit){
  16. $sql .= "LIMIT {$this->inDB->limit}";
  17. }
  18.  
  19. $result = $this->inDB->query($sql);
  20.  
  21. if (!$this->inDB->num_rows($result)){ return false; }
  22.  
  23. $this->inDB->query("UPDATE cms_faq_quests SET hits = hits + 1 WHERE id = $id") ;
  24. $quests = array();
  25. while($quest = $this->inDB->fetch_assoc($result)){
  26.  
  27. $quest['pubdate'] = cmsCore::dateFormat($quest['pubdate'], true, false, false);
  28. $quest['answerdate'] = cmsCore::dateFormat($quest['answerdate'], true, false, false);
  29.  
  30. $quest['quest'] = nl2br($quest['quest']);
  31.  
  32. $quest['answer'] = nl2br($quest['answer']);
  33. $quests[] = $quest;
  34. }
  35. return $quests;
  36.  
  37. }
5. в файл /languages/ru/admin/components/faq.php ->
  1. $_LANG['AD_NAME_MODER'] = 'Модератор';
6.Создаёте для каждой категории группу и добавляете ваших модераторов.
Всё.
p.s. Про шаблон ещё забыл. Файл com_faq_read.tpl
  1. Эта книга написана людьми и в ней почти совсем нет Божьего. <div class="con_heading">{$LANG.QUESTION_VIEW} {if $is_admin}<a href="/faq/delquest{$quest.id}.html">X</a>{/if}</div>
  2.  
  3. <table cellspacing="5" cellpadding="0" border="0" width="100%">
  4. <tr>
  5.  
  6. <td width="" valign="top">
  7. <div class="faq_questtext">{$quest.quest}</div>
  8. {if $cfg.user_link}
  9. <div class="faq_questuser">{if $quest.nickname}<a href="{profile_url login=$quest.login}">{$quest.nickname}</a>{else}{$LANG.QUESTION_GUEST}{/if}</div>
  10. {/if}
  11. <div class="faq_questdate">{$quests_pub}</div>
  12. </td>
  13. </tr>
  14. </table>
  15.  
  16.  
  17. <table cellspacing="5" cellpadding="0" border="0" width="100%" style="margin:15px 0px;">
  18.  
  19. <tr>
  20. <td width="35" valign="top"><img src="/templates/{template}/images/icons/big/faq_quest.png" border="0" /></td>
  21. <td>
  22. <div class="faq_questtext">{$quests}</div>
  23. </td>
  24. </tr>
  25.  
  26. {foreach key=id item=quest from=$quest}
  27. {if ($quest.moder !== $grp && $grp != 2)}
  28. <tr>
  29. <td width="35" valign="top">
  30. <img src="/templates/{template}/images/icons/big/faq_answer.png" border="0" />
  31. </td>
  32.  
  33. <td width="" valign="top">
  34.  
  35. <div class="faq_answertext">{$quest.answer}</div>
  36. <div class="faq_questdate">{$quest.answerdate}</div>
  37. </td>
  38.  
  39. </tr>
  40. {/if}
  41. {/foreach}
  42.  
  43. </table>
  44.  
  45. {if ($quest.moder == $grp||$grp == 2)}
  46. {if $cfg.is_comment}
  47. {comments target='faq' target_id=$quest.id labels=$labels}
  48. {/if}
  49. {/if} Эта книга обвинение церкви.
#11 31 августа 2014 в 11:01
странно, не сохраняется выбранная группа.

так должна выглядеть структура таблицы?
#12 31 августа 2014 в 12:13
Да так, int(11) вполне достаточно.Сейчас гляну, может что пропустил.И кстати в базу сохраняется не название группы, а id
#13 31 августа 2014 в 12:23
Да, сори, конечно пропустил. В backend.php
if ($opt == 'submit_cat'){… 262стр. у меня заменяем на

  1. if ($opt == 'submit_cat'){
  2. if (!cmsCore::validateForm()) { cmsCore::error404(); }
  3. $parent_id = (int)$_REQUEST['parent_id'];
  4. $title = $_REQUEST['title'];
  5. $moder = $_REQUEST['moder'];
  6. $published = (int)$_REQUEST['published'];
  7. $description = $_REQUEST['description'];
  8.  
  9. $sql = "INSERT INTO cms_faq_cats (parent_id, title, moder, published, description)
  10. VALUES ($parent_id, '$title', '$moder', $published, '$description')";
  11. $inDB->query($sql);
  12. cmsCore::redirect('?view=components&do=config&opt=list_cats&id='.(int)$_REQUEST['id']);
  13. }
if ($opt == 'update_cat'){… 289стр заменяем на

  1. if ($opt == 'update_cat'){
  2. if (!cmsCore::validateForm()) { cmsCore::error404(); }
  3. if (isset($_REQUEST['item_id'])) {
  4. $id = (int)$_REQUEST['item_id'];
  5. $moder = $_REQUEST['moder'];
  6. $parent_id = (int)$_REQUEST['parent_id'];
  7. $title = $_REQUEST['title'];
  8. $published = (int)$_REQUEST['published'];
  9. $description = $_REQUEST['description'];
  10.  
  11. $sql = "UPDATE cms_faq_cats
  12. SET title='$title',
  13. parent_id = $parent_id,
  14. moder = '$moder',
  15. description='$description',
  16. published=$published
  17. WHERE id = $id
  18. LIMIT 1";
  19. $inDB->query($sql) ;
  20.  
  21. cmsCore::redirect('?view=components&do=config&opt=list_cats&id='.(int)$_REQUEST['id']);
  22.  
  23. }
  24. }
#14 31 августа 2014 в 13:15
Интересная вещь. Вот еще бы сделать уведомление модератору и администратору что поступил новый вопрос. На почту или уведомлением на сайте
#15 31 августа 2014 в 14:04
Подписка же есть. Или это не то?
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.