Премодерация

#
Re: Премодерация
Действительно, все заработало

HostCMS писал(а):
Вы можете его удалить из XSL шаблона и изменить логику работы, например, чтобы сразу возвращались к той новости, для которой добавили запись


а как это сделать? Для новостей и для гостевой?
Модератор
#
Re: Премодерация
Антон Евтеев писал(а):
а как это сделать? Для новостей и для гостевой?

Нужно немного откорректировать php код в соответствии с той логикой, которую Вы хотите реализовать.

Предоставьте, пожалуйста, код Вашей динамической страницы, а также изменения в логике, которые Вам необходимы.
#
Re: Премодерация
Добавление записи в гостевую книгу:

<?
if(isset($_POST['submit_guestbook_item']))
{
   $InformationSystem = new InformationSystem;
   $sql = new MySQL;
?>
<h1>Добавление записи в гостевую книгу</h1>
<?
if($InformationSystem->confirm_information_item(date('U'), $_SERVER['REMOTE_ADDR'])==1)
{
   $date= date('Y-m-d H:i:s');
   $InformationSystem = new InformationSystem;
   # вставляем вопрос
   $question_id= $InformationSystem->InsertInformationItems(0, 0, $_POST['blocks_id'],
   $_POST['group_id'], $date, $_POST['subject'],'', 1,
   $_POST['text_item'], '', 0, $_SERVER['REMOTE_ADDR']);

   $row=$InformationSystem->GetInformationSystemItems($question_id);

   # вставляем в дополнительные свойства автора вопроса и его email
   $InformationSystem->InsertInformationPropertysItems(0, 0, 8,$question_id, $_POST['fio']);

   $InformationSystem->InsertInformationPropertysItems(0, 0, 9,$question_id, $_POST['email']);

?>
<!--<p/>Благодарим Вас, <?=$_POST['fio']?>!<br> Ваше сообщение опубликовано!-->        
<?
# Отправка письма администратору
$message='Доброе время суток, уважаемый Администратор!<p/>
В гостевую книгу на сайте, поддерживаемом системой управления сайтом HostCMS, была добавлена запись:<br>
<table border="0">
<tr>
<td>Автор:</td>
<td>'.$_POST['fio'].'</td>
</tr>
<tr>
<td>E-mail:</td>
<td>'.$_POST['email'].'</td>
</tr>
<tr>
<td>Тема:</td>
<td>'.$_POST['subject'].'</td>
</tr>
<tr>
<td>Информационный блок:</td>
<td>'.$row['information_blocks_name'].'</td>
</tr>
<tr>
<td>Информационный элемент:</td>
<td>'.$row['information_items_name'].'</td>
</tr>
<tr>
<td>Дата:</td>
<td>'.DateClass::datetime_format($date).'</td>
</tr>
<tr>
<td>IP-адрес:</td>
<td>'.$_SERVER['REMOTE_ADDR'].'</td>
</tr>
<tr>
<td valign="top">Сообщение:</td>
<td>'.$_POST['text_item'].'</td>
</tr>
</table>
';      
mail(EMAIL_TO, 'Добавление записи в гостевую книгу', $message, "From: ".EMAIL_TO."\r\nContent-Type: text/html; charset=Windows-1251\n");
}
else # нельзя добавлить вопрос - прошло мало времени
{
   ?>
   Ошибка! Запись не может быть добавлена, т.к. прошло мало времени с момента Вашего последнего добавления записи в гостевую книгу!  
   <?
}
}

if(isset($_GET['add_guestbook_item']))
{
?>
<h1>Добавление записи в гостевую книгу</h1>
<form action='./' method="post">
<table border='0' cellspacing='2' cellpadding='0'>
<tr>
<td>ФИО:</td>
<td><input type="text" name="fio" size="50" value=""></td>
</tr>
<tr>
<td>E-mail:</td>
<td><input type="text" name="email" size="50" value=""></td>
</tr>
<tr>
<td>Тема:</td>
<td><input type="text" name="subject" size="50" value=""></td>
</tr>
<tr>
<td>Сообщение:</td>
<td><textarea type="text" name="text_item" cols="50" rows="10"></textarea></td>
</tr>
<tr>
<td></td>
<td align='center'>
<input type="hidden" name="blocks_id" value="<?=$_GET['blocks_id']?>">
<input type="hidden" name="group_id" value="<?=$_GET['group_id']?>">
<input type="submit" name="submit_guestbook_item" value="Добавить запись">    
</td>
</tr>    
</table>
</form>
<?
}
?>


Хотелось бы, чтобы после добавления сразу же был возврат на список сообщений в Гостевой.
Модератор
#
Re: Премодерация
Антон Евтеев,
после вывода уведомления об удачном добавлении сообщения можно сделать редирект на нужную Вам страницу с использованием JavaScript, например после
mail(EMAIL_TO, 'Добавление за .....


пишите
?>
<script language="JavaScript" type="text/javascript">
<!--
function set_location()
{
location="/guestbook/";
}
setTimeout('set_location()', 5000);
//-->
</script>
<?
#
Re: Премодерация
а как сделать такой же редирект, но только для новостей или статей? Чтобы пользователь возвращался к новости, для которой оставил комментарий?
Модератор
#
Re: Премодерация
Антон Евтеев писал(а):
а как сделать такой же редирект, но только для новостей или статей? Чтобы пользователь возвращался к новости, для которой оставил комментарий?

Ответ подготовим в ближайшее время
Модератор
#
Re: Премодерация
Антон Евтеев,
Код динамичной страницы:
<?
global $param, $items_on_page, $InformationSystem_id;

$InformationSystem = new InformationSystem;

if(isset($_POST['add_comment']))
{
   $InformationSystem->ShowAddComment('УведомлениеДобавлениеКомментария');
}

if (isset($_GET['page']))
{
   # Страница умножается на кол-во элементов на страницу
   $items_begin=(int)$_GET['page']*$items_on_page;
}
else
{
   $items_begin=0;
}

# Принимает в качестве параметра ID информационного блока
$result=$InformationSystem->GetInformationFromPath($InformationSystem_id);

if($result!=false)
{
   if($result['item']==false)# Вывод списка
   {
      $external_propertys=array();
      $external_propertys['ОтображатьСсылкуНаАрхив']=0;
      $external_propertys['ОтображатьСсылкиНаСледующиеСтраницы']=1;

      # Первый параметр - ID блока
      # Второй параметр - ID гурппы, 0 - корневая группа
      # Третий параметр - название XSL шаблона
      $InformationSystem->ShowInformationSystem($InformationSystem_id, $result['group'],'СписокНовостей', $items_on_page,$items_begin,$external_propertys);
   }
   else
   {
      $item_id= $InformationSystem->GetIdInformationItem($result['item'], $result['group']);

      # Выводим элемент группы
      $InformationSystem->ShowInformationSystemItem($item_id,'ВыводНовости');
   }
}
?>


При необходимости XSL шаблон откорректируйте, чтобы не выводился вообще никакой текст, или выводился указанный Вами.
#
Re: Премодерация
У меня похожая проблемма, но вопросы с гостевой книгой, вопрос-ответ, доской объявлений и всем прочим - я решил самомтоятельно, хотя и с трудом. Но вот никак не могу победить другой вопрос:
Движок используется в личных целях внутри локальной сети и почтового сервера нет, но крайне не приятно лицезреть после комментария оранжевое предупреждение
ПРЕДУПРЕЖЕДЕНИЕ: mail(): "sendmail_from" not set in php.ini or custom "From:" header missing в файле {путь до корня сервера}\htdocs\modules\InformationSystems\InformationSystems.class.php (строка 3586)
Как выключить это?
В скриптах где было явно указано
mail(EMAIL_TO, 'Добавление записи в гостевую книгу', $message, "From: ".EMAIL_TO."\r\nContent-Type: text/html; charset=Windows-1251\n");
я пофиксил, а как быть с остальными?
Делаю мэйк-ап сайтов
Модератор
#
Re: Премодерация
Пилипчук Владимир,
сейчас Вы можете отключить предупреждения, измените уровень ошибок для сайта (параметры сайта) на E_ERROR. Позже добавим константу, запрещающую отправку писем.
#
Re: Премодерация
HostCMS писал(а):
<?
global $param, $items_on_page, $InformationSystem_id;

$InformationSystem = new InformationSystem;

if(isset($_POST['add_comment']))
{
   $InformationSystem->ShowAddComment('УведомлениеДобавлениеКомментария';
}

if (isset($_GET['page']))
{
   # Страница умножается на кол-во элементов на страницу
   $items_begin=(int)$_GET['page']*$items_on_page;
}
else
{
   $items_begin=0;
}

# Принимает в качестве параметра ID информационного блока
$result=$InformationSystem->GetInformationFromPath($InformationSystem_id);

if($result!=false)
{
   if($result['item']==false)# Вывод списка
   {
      $external_propertys=array();
      $external_propertys['ОтображатьСсылкуНаАрхив']=0;
      $external_propertys['ОтображатьСсылкиНаСледующиеСтраницы']=1;

      # Первый параметр - ID блока
      # Второй параметр - ID гурппы, 0 - корневая группа
      # Третий параметр - название XSL шаблона
      $InformationSystem->ShowInformationSystem($InformationSystem_id, $result['group'],'СписокНовостей', $items_on_page,$items_begin,$external_propertys);
   }
   else
   {
      $item_id= $InformationSystem->GetIdInformationItem($result['item'], $result['group']);

      # Выводим элемент группы
      $InformationSystem->ShowInformationSystemItem($item_id,'ВыводНовости';
   }
}
?>


вставил в код динамической сираницы, заменил 'СписокНовостей' на 'СписокЭлементовИнфосистемы', 'ВыводНовости' на 'ВыводЕдиницыИнформационнойСистемы'. Страницы со списком новостей и с одной новостью отображаются без ошибок, но после добавления комментария возникает ошибка: "Информационный элемент, для которого осуществляется добавление записи, не найден!"
Настройки динамической страницы /news/ как на демосайте.
Авторизация