Модуль "Вопросы-ответы"

Модератор
#
Re: Модуль "Вопросы-ответы"
DS Aleks писал(а):
Чтоб комментарии добавлялись сразу, без подтверждения.

Отредактировать узел структуры сайта и указать соответствующее значение из выпадающего списка для "Добавленный ответ(комментарий) публиковать сразу".
#
Re: Модуль "Вопросы-ответы"
Дело вот в чем: я установил информ.систему "Для вопросы-ответы, гостевая и т.д.". Там пункт "Статус добавляемых элементов" указал "Добавлять сразу". В этом случае вопрос добавляется сразу, а комментарий только после подтверждения. Пробовал установить просто "Информационная система", в ней вопрос вообще не добавляется, никакой реакции, а комментарий добавляется сразу.
www.dsaleks.ru - создание сайтов и интернет-магазинов
#
Re: Модуль "Вопросы-ответы"
DS Aleks,
DS Aleks писал(а):
комментарий только после подтверждения
- да все верно. Чтобы установить режим добавления комментариев(ответов т.е.) нужно использовать параметр "Добавленный ответ(комментарий) публиковать сразу" типовой динамической страницы "Информационная система для Вопросы-ответы, Гостевая книга и т.п."(вам об этом было сказано сообщением выше). Если в вашей типовой нет такого параметра - создайте его по полному образу и подобию данного параметра с нашего демо-сайта. Рекомендуем также обновить код типовой дин. страницы "Информационная система для Вопросы-ответы, Гостевая книга и т.п." и коды XSL-шаблонов "ОтображениеВопроса" и "СписокВопросов"(если вы не вносили в них изменений). Все коды можно взять с нашего демо-сайта.
#
Re: Модуль "Вопросы-ответы"
natalya писал(а):
Рекомендуем также обновить код типовой дин. страницы «Информационная система для Вопросы-ответы, Гостевая книга и т.п.»

Обновил, ничего не изменилось.
natalya писал(а):
и коды XSL-шаблонов «ОтображениеВопроса» и «СписокВопросов» (если вы не вносили в них изменений).

Этого делать не хочу, т.к. внес изменения.
Ну да ладно, это теперь стало не нужным, заказчику теперь совсем не нужно добавление комментариев. Я в структуре сайта "Отображать добавление комментария" установил "Никому", а на сайте все равно отображается. Может мне взять да и в XSL убрать добавление комментариев? Или же все же это где-то регулируется?
www.dsaleks.ru - создание сайтов и интернет-магазинов
#
Re: Модуль "Вопросы-ответы"
DS Aleks писал(а):
Может мне взять да и в XSL убрать добавление комментариев?
- можно и так, конечно.

DS Aleks писал(а):
Или же все же это где-то регулируется?
- да, регулируется. Для этого в коде XSL-шаблона "ОтображениеВопроса" должен быть код:
<!-- Если разрешено отображать формы добавления комментария
      1 - Только авторизированным
      2 - Всем -->
      <xsl:if test="/document/show_add_comments/node() and ((/document/show_add_comments = 1 and /document/site_user_id &gt; 0)  or /document/show_add_comments = 2)">
         
         <div id="ShowAddComment">
            <a href="javascript:void(0)" onclick="javascript:cr('AddComment')">Добавить ответ</a>
         </div>
         
         <div id="AddComment" style="display: none">
            <xsl:call-template name="AddCommentForm"></xsl:call-template>
         </div>
</xsl:if>
#
Re: Модуль "Вопросы-ответы"
Приветствую, у меня проблема: мне нужно чтобы ответы в информационной системе уходили на e-mail(если указан) задавшего его. Версии PHP версия: 4.4.7 MySQL версия: 4.1.22 GD версия: 2.0.28
вот код:
<?php

$InformationSystem_id = to_int($GLOBALS['LA']['InformationSystemID']);

if (strtolower(end($GLOBALS['URL_ARRAY'])) != 'add')
{
   /* Добавление комментария */
   if(isset($_POST['add_comment']))
   {
      $param['information_items_id'] = to_int($GLOBALS['InformationResult']['item_id']);

      /* XSL шаблон для отправки уведомления администратору о добавлении комментария */
      $param['admin_email_xsl'] = to_str($GLOBALS['LA']['xsl_admin_email']);

      $xsl_add_comment = to_str($GLOBALS['LA']['xsl_add_comment']);

      // Текст комментария
      $_POST['comment_text'] = nl2br(to_str($_POST['comment_text']));

      // Типографируем текст, если доступен модуль типографирования
      if(class_exists('typograph'))
      {
         $typograph = new typograph();
         $_POST['comment_text'] = $typograph->ProcessTypographic($_POST['comment_text']);
      }

      $result_add_comment = $GLOBALS['LA_InformationSystem']->ShowAddComment('УведомлениеДобавленияОтвета', $param);
   }

   /* Отображаем элемент если не было добавления комментария, или результат добавления комментария отрицательный */
   if (!isset($_POST['add_comment']) || isset($result_add_comment) && !$result_add_comment)
   {

      /* XSL шаблон для отображения списка элементов информационной системы */
      $xsl_list = to_str($GLOBALS['LA']['xsl_information_system_list']);

      /* XSL шаблон для отображения элемента информационной системы */
      $xsl_item = to_str($GLOBALS['LA']['xsl_information_item']);

      $InformationResult = $GLOBALS['InformationResult'];

      /* Массив внешних параметров, передаваемых в XML */
      $external_propertys = array();
      $external_propertys['ОтображатьСсылкуНаАрхив'] = 0;
      $external_propertys['ОтображатьСсылкиНаСледующиеСтраницы'] = 1;

      /* Массив дополнительных параметров */
      $property = array();

      /* Число элементов на страницу */
      if (isset($InformationResult['items_on_page']))
      {
         if($InformationResult['items_on_page'] !== true)
         {
            $InformationResult['items_on_page'] = to_int($InformationResult['items_on_page']);
         }
      }
      else
      {
         $InformationResult['items_on_page'] = 10;
      }

      /* Номер, с которого начинается показ */
      if (isset($InformationResult['items_begin']))
      {
         $InformationResult['items_begin'] = to_int($InformationResult['items_begin']);
      }
      else
      {
         $InformationResult['items_begin'] = 0;
      }

      /* Метод определения идентификатора информационной группы и идентификатора информационного элемента по значению URI */
      $result = $GLOBALS['LA_InformationSystem']->GetInformationFromPath($InformationSystem_id);

      if($result != false)
      {
         /* Вывод списка */
         if($result['item'] == false)
         {
            /* Отображаем информационную систему */
            $GLOBALS['LA_InformationSystem']->ShowInformationSystem($InformationSystem_id, $result['group'], $xsl_list, $InformationResult['items_on_page'], $InformationResult['items_begin'], $external_propertys, $property);
         }
         else
         {
            /* Определяем идентификатор информационного элемента */
            $item_id = $GLOBALS['LA_InformationSystem']->GetIdInformationItem($result['item'], $result['group']);

            /* Выводим элемент информационной системы */
            $GLOBALS['LA_InformationSystem']->ShowInformationSystemItem($item_id, $xsl_item, $external_propertys);
         }
      }
   }
}
else
{
   # Иначе выводим форму добавления элемента
   $Captcha = new Captcha();
   $forms_captcha_key = $Captcha->GetCaptchaID();

   if (isset($_POST['captcha_key']) && isset($_POST['captcha_keystring']))
   {
      $cpt = $Captcha->ValidCaptcha($_POST['captcha_key'], $_POST['captcha_keystring']);
   }
   else
   {
      $cpt = false;
   }

   /* Обработка вставки информационного элемента */
   if ($cpt && isset($_POST['submit_question']))
   {
      ?>
      <h1>Добавление вопроса</h1>
      <?

      if($GLOBALS['LA_InformationSystem']->confirm_information_item(date('U'), $_SERVER['REMOTE_ADDR'])==1)
      {
         $date= date('Y-m-d H:i:s');

         /* Определяем группу (если задана)
         Принимает в качестве параметра ID информационного блока*/
         $result = $GLOBALS['LA_InformationSystem']->GetInformationFromPath($InformationSystem_id);

         $group_id = to_int($result['group']);

         # Статус вновь добавленного элемента
         # 0 - не активен (необходимо вручную проверить и включить)
         # 1 - активен, виден сразу после публикации
         $item_status = 0;

         // Текст сообщения
         $text = nl2br(to_str($_POST['text_item']));

         // Типографируем текст, если доступен модуль типографирования
         if(class_exists('typograph'))
         {
            $typograph = new typograph();
            $text = $typograph->ProcessTypographic($text);
         }

         # Вставляем запись
         $question_id = $GLOBALS['LA_InformationSystem']->InsertInformationItems(0, 0, $InformationSystem_id, $group_id, $date, to_str($_POST['subject']),'', $item_status, $text, '', 0, to_str($_SERVER['REMOTE_ADDR']));

         $row = $GLOBALS['LA_InformationSystem']->GetInformationSystemItems($question_id);

         # Вставляем в дополнительные свойства автора и его email
         $GLOBALS['LA_InformationSystem']->InsertInformationPropertysItems(0, 0, to_int($GLOBALS['LA']['autor_property_id']), $question_id, to_str($_POST['fio']));
         $GLOBALS['LA_InformationSystem']->InsertInformationPropertysItems(0, 0, to_int($GLOBALS['LA']['email_property_id']), $question_id, to_str($_POST['email']));

         ?>
         <p>Благодарим Вас, <?=htmlspecialchars(to_str($_POST['fio']))?>!
         <br>Ваша запись принята. После проверки Администратором она станет доступной!
         </p>
         <?

         # Отправка письма администратору
         $message = "Доброе время суток, уважаемый Администратор!\n\nНа сайт, поддерживаемый системой управления сайтом HostCMS, была добавлена запись:   \n";
         $message .= "Автор: ".to_str($_POST['fio'])."\n";
         $message .= "E-mail: ".to_str($_POST['email'])."\n";
         $message .= "Тема: ".to_str($_POST['subject'])."\n";
         $message .=   "Информационная система: ".$row['information_blocks_name']."\n";
         $message .= "Информационный элемент: ".$row['information_items_name']."\n";
         $message .=   "Редактировать - http://".to_str($_SERVER['HTTP_HOST'])."/admin/InformationSystems/InformationSystems.php?information_systems_id={$InformationSystem_id}&information_groups_parent_id={$group_id}&edit_information_items_id={$question_id}\n";
         $DateClass = new DateClass();
         $message .= "Дата: ".$DateClass->datetime_format($date)."\n";
         $message .= "IP-адрес: ".to_str($_SERVER['REMOTE_ADDR'])."\n";
         $message .= "Вопрос: ".to_str($_POST['text_item']);

         mail(EMAIL_TO, 'Добавление вопроса', $message, "From: ".EMAIL_TO."\r\nContent-Type: text/plain; charset=Windows-1251\n");
      }
      else # нельзя добавлить объявление - прошло мало времени
      {
         ?>
         <p>Ошибка!
         Запись не может быть добавлена, т.к. прошло мало времени с момента Вашего последнего добавления вопроса!
         </p>
         <?
      }
   }

   if(!$cpt || !isset($_POST['submit_question']))
   {
   ?>
   <h1>Добавление вопроса</h1>
   <?
   # Если неправильная CAPTCHA и была заполнена форма
   if (!$cpt && isset($_POST['submit_question']))
   {
      ?>
      <p style="color:#ff0000;"><b>Вы неверно ввели число подтверждения отправки формы!</b></p>
      <?
   }
   ?>
   <form action='./' method="POST">
   <table border="0" cellspacing="2" cellpadding="0">
   <tr>
   <td>ФИО:</td>
   <td><input type="text" name="fio" size="50" value="<?=htmlspecialchars(to_str($_POST["fio"]))?>"></td>
   </tr>
   <tr>
   <td>E-mail:</td>
   <td><input type="text" name="email" size="50" value="<?=htmlspecialchars(to_str($_POST["email"]))?>"></td>
   </tr>
   <tr>
   <td>Тема:</td>
   <td><input type="text" name="subject" size="50" value="<?=htmlspecialchars(to_str($_POST["subject"]))?>"></td>
   </tr>
   <tr>
   <td>Объявление:</td>
   <td><textarea type="text" name="text_item" cols="50" rows="10"><?=htmlspecialchars(to_str($_POST["text_item"]))?></textarea></td>
   </tr>
   <tr>
    <td colspan="2" align="center">Для отправки формы введите число, изображенное на картинке</td>
   </tr>
   <tr>
   <td>
      <img style="border: 1px solid #000000" src="/captcha.php?get_captcha=<?=$forms_captcha_key?>" title="Введите число изображенное на картинке"/>
   </td>
   <td>
      <input type="hidden" name="captcha_key" value="<?=$forms_captcha_key?>"/>
      <input type="text" name="captcha_keystring" style="width:100%" />
   </td>
    </tr>   
   <tr>
   <td></td>
   <td align="center">
   <input type="submit" name="submit_question" value="Добавить запись">    
   </td>
   </tr>    
   </table>
   </form>
   <?
   }
}

?>


код модуля УведомлениеДобавленияОтвета:
<?xml version="1.0" encoding="windows-1251"?>
<!DOCTYPE xsl:stylesheet>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output xmlns="http://www.w3.org/TR/xhtml1/strict" doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN"
encoding="Windows-1251" indent="yes" method="html" omit-xml-declaration="no" version="1.0" media-type="text/xml" />

<xsl:template match="/">
    <xsl:apply-templates select="/document/comment"/>
</xsl:template>

<xsl:template match="/document/comment">

   <h1>Добавление ответа</h1>

   <!-- Определяем текст сообщения -->
   <xsl:variable name="message"><xsl:choose>
      <!-- Ошибка. С момента добавления последнего комментария прошло слишком мало времени -->
      <xsl:when test="/document/is_error_time = 1">
         <div id="error">Ошибка! С момента добавления Вами последнего ответа прошло слишком мало времени!</div>
      </xsl:when>
      <!-- Ошибка. Неверный код подтверждения -->
      <xsl:when test="/document/is_error_capthca = 1">
         <div id="error">Ошибка! Вы неверно ввели число подтверждения отправки ответа!</div>
      </xsl:when>
      <!-- Без ошибок -->
      <xsl:otherwise>
         <div>
         Благодарим Вас, <xsl:value-of disable-output-escaping="yes" select="comment_autor"/>!
         <br />После проверки Администратором Ваш ответ станет доступным!
         </div>
      </xsl:otherwise>
   </xsl:choose></xsl:variable>

   <xsl:choose>
      <xsl:when test="$message = ''"></xsl:when>
      <xsl:otherwise>
      <div id="error"><xsl:value-of disable-output-escaping="yes" select="$message"/></div>
      </xsl:otherwise>
   </xsl:choose>

</xsl:template>

</xsl:stylesheet>


на почту ответов не поступает. Что нужно исправить\дописать?
#
Re: Модуль "Вопросы-ответы"
Стандартно ответы тому, кто задавал вопрос, на почту приходить и не должны. Для реализации этого функционала вы должны соответствующим образом дописать код типовой динамической страницы для вопросов-ответов. В имеющемся коде внутри условия  if(isset($_POST['add_comment'])) нужно добавить код формирования текста письма с ответом, а также его отправку(например, с помощью стандартной php-функции mail) автору вопроса(его электронный адрес будет хранится в соответствующем доп. свойстве инфоэлемента, содержащего сам вопрос. Идентификатор этого инфоэлемента доступен вам в параметре $param['information_items_id'], а получить значение конкретного доп. свойства для определенного инфоэлемента можно с помощью sql-запроса, т.к. в версии системы 4.1 такого стандартного метода еще не было).
#
Re: Модуль "Вопросы-ответы"
Не подскажете с кем можно связаться для выполнения данной работы?
Модератор
#
Re: Модуль "Вопросы-ответы"
arhas,
Если Вам нужно выполнение работ силами наших специалистов, то можно обратиться в отдел продаж: http://www.hostcms.ru/company/contacts/
#
Re: Модуль "Вопросы-ответы"
Решение всех вышеописанных проблем хотелось бы увидеть в коде следующего обновления, а то как ответы не отображались так и не отображаются по сей день...
Авторизация