Добавление фото в объявление гостевой

#
Добавление фото в объявление гостевой
Здравствуйте. Подскажите пожалуйста не совсем всё понимающему человеку каким образом реализовать возможность добавления записи с изображением на базе типовой "инфосистемы для гостевой книги, вопросов-ответов". Заранее спасибо
веломагазин и велотуры: http://www.velootpusk.ru
#
Re: Добавление фото в объявление гостевой
velootpusk, для начала вам нужно будет добавить поле в форму, которое будет предназначено для загрузки файла. Т.к. код формы добавления записи формируется в коде XSL-шаблона "СписокЗаписейГостевойКниги", то и добавлять соответствующее поле нужно именно там. Обработку этого поля нужно производить в коде типовой динамической страницы "Информационная система для Вопросы-ответы, Гостевая книга и т.п." внутри условия:
if (isset($_POST['submit_question']))

Для загрузки изображения на сервер и записи информации о нем в базу данных(для его привязки к добавляемому инфоэлементу) используйте код(немного его изменив) из типовой динамической страницы "Импорт RSS-каналов" после комментария "// КОД ДЛЯ ЗАГРУЗКИ ИЗОБРАЖЕНИЙ".
#
Re: Добавление фото в объявление гостевой
подскажите пожалуйста кто нибудь, как реализовать это на примере
даже денежкой отблагодарю

вот код динамической страницы:

<?php

/* ID Информационной системы */
$InformationSystem_id = to_int($GLOBALS['LA']['InformationSystemID']);

// Получаем информацию о текущем пользователе
if (class_exists('SiteUsers'))
{
   $SiteUsers = & singleton('SiteUsers');
   $site_user_id = $SiteUsers->GetCurrentSiteUser();
}
else
{
   $site_user_id = 0;
}

/* Массив внешних параметров, передаваемых в XML */
$external_propertys = array();

/* Добавление комментария */
// ShowAddComment == 1 - только авторизированные
// ShowAddComment == 2 - все
if (isset($_POST['add_comment'])
&& (($GLOBALS['LA']['ShowAddComment'] == 1 && $site_user_id > 0) || $GLOBALS['LA']['ShowAddComment'] == 2))
{
   $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']);

   /* Режим добавления комментария:
   1 - публиковать сразу,
   0 - публиковать после проверки.*/
   if (to_bool($GLOBALS['LA']['TypeAddComment'])/* || $site_user_id > 0*/)
   {
      $param['status'] = 1;
   }
   else
   {
      $param['status'] = 0;
   }

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

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

   $param['comment_mail_type'] = to_int($GLOBALS['LA']['comment_mail_type']);

   // ID родительского комментария
   $param['comment_parent_id'] = to_int($_POST['comment_parent_id']);

   $param['comment_autor'] = htmlspecialchars(to_str($_POST['comment_autor']));
   $param['comment_email'] = htmlspecialchars(to_str($_POST['comment_email']));
   $param['comment_subject'] = htmlspecialchars(to_str($_POST['comment_subject']));
   $param['comment_text'] = htmlspecialchars(to_str($_POST['comment_text']));
   $param['comment_grade'] = to_int($_POST['comment_grade']);
   $param['allowable_tags'] = '<b><strong><i><u><strike><ul><ol><li>';

   ob_start();
   $GLOBALS['LA_InformationSystem']->ShowAddComment('УведомлениеДобавлениеКомментария', $param);
   $external_propertys['message'] = ob_get_clean();
}

if ($GLOBALS['INFSYS_result'] != false)
{
   /* 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['ОтображатьСсылкуНаАрхив'] = 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;
   }

   /* Вывод списка */
   if ($GLOBALS['INFSYS_result']['item'] == false)
   {
      // Если передано имя тэга - фильтруем
      if (isset($GLOBALS['INFSYS_result']['tag_name']))
      {
         if (class_exists('Tag'))
         {
            $oTag = & singleton('Tag');

            $tag_row = $oTag->GetTagByName($GLOBALS['INFSYS_result']['tag_name']);

            $property['tags'] = array($tag_row['tag_id']);

            // При выводе тэгов вывод элементов ведется из всех групп
            $GLOBALS['INFSYS_result']['group'] = false;
         }
      }

      // $property['xml_show_group_type'] = 'all';

      // Разрешаем передачу в XML свойств групп
      $property['xml_show_group_property'] = true;

      // Капча
      $Captcha = new Captcha();
      $external_propertys['captcha_key'] = $Captcha->GetCaptchaID();

      /* Обработка вставки информационного элемента */
      if (isset($_POST['submit_question']))

      {
         // Проверяем правильноть указания капчи
         // Для авторизированных пользователей капчу не проверяем
         if ($site_user_id > 0
         || $Captcha->ValidCaptcha(to_str($_POST['captcha_key']), to_str($_POST['captcha_keystring'])))
         {
            if ($GLOBALS['LA_InformationSystem']->confirm_information_item(date('U'), $_SERVER['REMOTE_ADDR']) == 1)
            {
               $date= date('Y-m-d H:i:s');
               
               /* Определяем группу (если задана)
               Принимает в качестве параметра ID информационной системы*/
               $group_id = to_int($GLOBALS['INFSYS_result']['group']);

               // Статус вновь добавленного элемента
               // 0 - не активен (необходимо вручную проверить и включить)
               // 1 - активен, виден сразу после публикации
               $item_status = to_int($GLOBALS['LA']['ItemStatus']);

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

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

               $param = array();
               $param['site_users_id'] = $site_user_id;

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

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

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

               $GLOBALS['LA_InformationSystem']->InsertInformationPropertysItems(0, 0,   to_int($GLOBALS['LA']['email_property_id']), $question_id, htmlspecialchars(strip_tags(to_str($_POST['email']))));

               // Если пользователь зерегистрирован, получаем информацию
               if (class_exists('SiteUsers') && !empty($site_user_id))
               {
                  $row_site_user = $SiteUsers->GetSiteUser($site_user_id);

                  if(!empty($row_site_user['site_users_name']) && !empty($row_site_user['site_users_surname']))
                  {
                     $site_user_name = $row_site_user['site_users_name'].' '.$row_site_user['site_users_surname'];
                  }
                  else
                  {
                     $site_user_name = $row_site_user['site_users_login'];
                  }

                  $site_user_email = $row_site_user['site_users_email'];
               }
               else
               {
                  $site_user_name = htmlspecialchars(strip_tags(to_str($_POST['autor'])));
                  $site_user_email = htmlspecialchars(strip_tags(to_str($_POST['email'])));
               }

               ob_start();
               if ($item_status == 0)
               {
                  ?>
                  <p>Благодарим Вас, <?php echo $site_user_name?>!
                  <br />Ваша запись принята. После проверки Администратором она станет доступной!
                  </p>
                  <?php
               }
               else
               {
                  ?>
                  <p>Благодарим Вас, <?php echo $site_user_name?>!
                  <br />Ваша запись принята и опубликована!
                  </p>
                  <?php    
               }
               $external_propertys['message'] = ob_get_clean();

               // Отправка письма администратору
               $message = "Доброе время суток, уважаемый Администратор!\n\nНа сайт, поддерживаемый системой управления сайтом HostCMS, была добавлена запись:\n";
               $message .= "Автор: ".$site_user_name."\n";
               $message .= "E-mail: ".$site_user_email."\n";
               $message .= "Тема: ".htmlspecialchars(strip_tags(to_str($_POST['subject'])))."\n";
               $message .=   "Информационная система: ".$row['information_systems_name']."\n";
               $message .= "Информационный элемент: ".$row['information_items_name']."\n";
               $message .=   "Редактировать: http://".to_str($_SERVER['HTTP_HOST'])."/admin/InformationSystems/InformationSystems.php?admin_forms_id=12&operation=edit_group_item&check_1_{$question_id}=1&information_system_id={$InformationSystem_id}\n";
               $DateClass = & singleton('DateClass');
               $message .= "Дата: ".$DateClass->datetime_format($date)."\n";
               $message .= "IP-адрес: ".to_str($_SERVER['REMOTE_ADDR'])."\n";
               $message .= "Вопрос: ".htmlspecialchars(strip_tags(to_str($_POST['text_item'])));

               $subject = 'Добавление вопроса';

               $kernel = & singleton('kernel');
               $kernel->SendMailWithFile(EMAIL_TO, EMAIL_TO, $subject, $message, array(), 'text/plain');
            }
            else // нельзя добавлить объявление - прошло мало времени
            {
               $external_propertys['error'] = 'Запись не может быть добавлена, т.к. прошло мало времени с момента Вашего последнего добавления вопроса!';
            }
         }
         // Ошибка добавления записи
         else
         {
            $external_propertys['error'] = 'Вы неверно ввели число подтверждения отправки формы!';

            $external_propertys['fio'] = htmlspecialchars(strip_tags(to_str($_POST['autor'])));
            $external_propertys['email'] = htmlspecialchars(strip_tags(to_str($_POST['email'])));
            $external_propertys['subject'] = htmlspecialchars(strip_tags(to_str($_POST['subject'])));
            $external_propertys['text_item'] = htmlspecialchars(strip_tags(to_str($_POST['text_item'])));
         }
      }

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

      $property['part'] = $GLOBALS['part_ii'];

      // Запрещаем передачу в XML свойств групп
      $property['xml_show_group_property'] = false;

      /* Выводим элемент информационной системы */
      $GLOBALS['LA_InformationSystem']->ShowInformationSystemItem($item_id, $xsl_item, $external_propertys);
   }

}
?>


а вот код из для вставки изображений из rss


         if (!empty($title))
         {
            // КОД ДЛЯ ЗАГРУЗКИ ИЗОБРАЖЕНИЙ
            $information_item_small_image = '';
            $information_item_image = '';

            if (isset($result['items'][$i]['enclosure']['url']))
            {
               $img = to_str($result['items'][$i]['enclosure']['url']);

               $temp_file = tempnam(TMP_DIR, "TMP_");

               if (@copy($img, $temp_file))
               {
                  chmod($temp_file, CHMOD_FILE);
                  
                  $param_img = array();

                  /* ---------------------------------- */
                  // Определяем расширение файла
                  $exp = strtolower($kernel->GetExtension($img));

                  $name = 'information_items_' . time() . $count_import_item . '.' . $exp;

                  $information_item_image = CMS_FOLDER . UPLOADDIR . $name;
                  $information_item_small_image = CMS_FOLDER .   UPLOADDIR . 'small_' . $name;

                  // Путь к файлу-источнику большого изображения;
                  $param['path_source_big_image'] = $temp_file;

                  // Путь к файлу-источнику малого изображения;
                  $param['path_source_small_image'] = $temp_file;

                  //Оригинальное имя файла большого изображения
                  $param['original_file_name_big_image'] = '';

                  // Путь к создаваемому файлу большого изображения
                  $param['path_target_big_image'] = $information_item_image;

                  // Путь к создаваемому файлу малого изображения;
                  $param['path_target_small_image'] = $information_item_small_image;

                  // Оригинальное имя файла малого изображения
                  $param['original_file_name_small_image'] = $name;
                  
                  // Использовать большое изображение для создания малого (true - использовать (по умолчанию), false - не использовать)
                  $param['use_big_image'] = true;

                  // Значение максимальной ширины большого изображения
                  $param['max_width_big_image'] = $infsys_row['information_systems_image_big_max_width'];

                  // Значение максимальной высоты большого изображения
                  $param['max_height_big_image'] =   $infsys_row['information_systems_image_big_max_height'];

                  // Значение максимальной ширины малого   изображения;
                  $param['max_width_small_image'] = $infsys_row['information_systems_image_small_max_width'];

                  // Значение максимальной высоты малого   изображения;
                  $param['max_height_small_image'] = $infsys_row['information_systems_image_small_max_height'];

                  // Путь к файлу с "водяным знаком"
                  $param['watermark_file_path'] = '';

                  $result_img = $kernel->AdminLoadFiles($param);

                  if ($result_img['big_image'])
                  {
                     $information_item_image = basename($param['path_target_big_image']);
                  }

                  if ($result_img['small_image'])
                  {
                     $information_item_small_image = basename($param['path_target_small_image']);
                  }

                  @unlink($temp_file);
               }
            }

            // Вставка элемента
            $InformationSystem->InsertInformationItems(0, 0, $infsys_id,
            $infgroup_id, $date, $title, $desc, 1, $text, $information_item_image, 0,
            $_SERVER['REMOTE_ADDR'], '', 1, '', '', '', -1, array('information_items_small_image' =>
            $information_item_small_image));

            $count_import_item++;
         }


что куда вписать и что прописать в xsl шаблоне для добавления пользователями фотографий... и как сделать что бы пользователь смог создавать свои альбомы, т.е. группы ИС и туда добавлять фото, причем доступ к созданным группам только у него.
Модератор
#
Re: Добавление фото в объявление гостевой
kos, для добавления изображения в типовой динамической странице после кода

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

необходимо добавить следующий код


// ВНИМАНИЕ!!! В данном примере предполагается, что поле загрузки файла в форме называется item_image

// Передан файл
if (isset($_FILES['item_image']['tmp_name']) && $_FILES['item_image']['size'])
{      
   $kernel = & singleton('kernel');
   
   $information_item_small_image = '';
   $information_item_image = '';

   // Формируем путь к папке информационного элемента по идентификатору информационного элемента
   $item_dir = $information_system->GetInformationItemDir($question_id);

   $uploaddir = CMS_FOLDER . $item_dir;

   // Получаем данные о информационной системе
   $infsys_row = $GLOBALS['LA_InformationSystem']->GetInformationSystem($InformationSystem_id);

   // Создаем папку для информационного элемента
   $kernel->PathMkdir($item_dir);

   $file_name = $file->PathCorrection($_FILES['item_image']['name']);

   // Не преобразовываем название загружаемого файла
   if ($infsys_row['information_systems_file_name_conversion'] == 0)
   {
      $information_item_image = $uploaddir . $file_name;

      $information_item_small_image = $uploaddir . 'small_' . $file_name;

   }
   else // Преобразовываем название загружаемого файла
   {
      // Определяем расширение файла
      $exp = strtolower($kernel->GetExtension($file_name));

      $information_item_image = $uploaddir . 'information_items_' . $question_id . '.' . $exp;


      $information_item_small_image = $uploaddir . 'small_information_items_' . $question_id . '.' . $exp;

   }

   $temp_file = $_FILES['item_image']['tmp_name'];

   $param_img = array();

   // Путь к файлу-источнику большого изображения;
   $param_img['path_source_big_image'] = $temp_file;

   // Путь к файлу-источнику малого изображения;
   $param_img['path_source_small_image'] = $temp_file;

   //Оригинальное имя файла большого изображения
   $param_img['original_file_name_big_image'] = '';

   // Путь к создаваемому файлу большого изображения
   $param_img['path_target_big_image'] = $information_item_image;

   // Путь к создаваемому файлу малого изображения;
   $param_img['path_target_small_image'] = $information_item_small_image;

   // Оригинальное имя файла малого изображения
   $param_img['original_file_name_small_image'] = $name;

   // Использовать большое изображение для создания малого (true - использовать (по умолчанию), false - не использовать)
   $param['use_big_image'] = true;

   // Значение максимальной ширины большого изображения
   $param['max_width_big_image'] = $infsys_row['information_systems_image_big_max_width'];

   // Значение максимальной высоты большого изображения
   $param_img['max_height_big_image'] =   $infsys_row['information_systems_image_big_max_height'];

   // Значение максимальной ширины малого   изображения;
   $param_img['max_width_small_image'] = $infsys_row['information_systems_image_small_max_width'];

   // Значение максимальной высоты малого   изображения;
   $param_img['max_height_small_image'] = $infsys_row['information_systems_image_small_max_height'];

   // Путь к файлу с "водяным знаком"
   $param_img['watermark_file_path'] = '';

   $result_img = $kernel->AdminLoadFiles($param_img);

   if ($result_img['big_image'])
   {
      $information_item_image = basename($param_img['path_target_big_image']);
   }

   if ($result_img['small_image'])
   {
      $information_item_small_image = basename($param_img['path_target_small_image']);
   }

   $param = array();

   $param['information_items_id'] = $question_id;
   $param['information_items_image'] = $information_item_image;
   $param['information_items_small_image'] = $information_item_small_image;
   
   // Обновляем информацию о добавленном ранее информационном элементе
   $GLOBALS['LA_InformationSystem']->InsertInformationItem($param);
}


#
Re: Добавление фото в объявление гостевой
Спасибо большое за приведённый код, но еще один маааленький вопрос - что то догнать не могу, а явно мелочь какая то. Вот вставили код, приведённый выше в соответствующую типовую динамическую страницу. Дальше добавили в XSL в форму строку

Файл: <br/><input type="file" name="item_image" size="30" /><br/><br/>

Дальше возникает вопрос: а как выводить эту картинку потом? я пробовал делать так же как выводится в XSL-шаблоне для СписокЭлементовИнфосистемы:
<xsl:if test="item_small_image!=''">
<a href="{item_path}">
<img src="{item_small_image}" alt="" align="left"/></a>
</xsl:if>
И добавлял этот код в XSL гостевой после
<xsl:if test="item_name != ''">
   <b><xsl:value-of select="item_name"/></b><br/>
</xsl:if>
Но так не выходит. Подскажите пожалуйста, господа.
#
Re: Добавление фото в объявление гостевой
Я разбирался и похоже, что в это условие не выполнено:

if (isset($_FILES['item_image']['tmp_name']) && $_FILES['item_image']['size'])

и соответственно код после него не выполняется.
#
Re: Добавление фото в объявление гостевой
Нет, не пишет картинку в инфоэлемент. Всю голову уже сломал
Модератор
#
Re: Добавление фото в объявление гостевой
1. Код измененной типовой динамической страницы "Информационная система для Вопросы-ответы, Гостевая книга и т.п."

<?php

/* ID Информационной системы */
$InformationSystem_id = to_int($GLOBALS['LA']['InformationSystemID']);

// Получаем информацию о текущем пользователе
if (class_exists('SiteUsers'))
{
   $SiteUsers = & singleton('SiteUsers');
   $site_user_id = $SiteUsers->GetCurrentSiteUser();
}
else
{
   $site_user_id = 0;
}

/* Массив внешних параметров, передаваемых в XML */
$external_propertys = array();

/* Добавление комментария */
// ShowAddComment == 1 - только авторизированные
// ShowAddComment == 2 - все
if (isset($_POST['add_comment'])
&& (($GLOBALS['LA']['ShowAddComment'] == 1 && $site_user_id > 0) || $GLOBALS['LA']['ShowAddComment'] == 2))
{
   $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']);

   /* Режим добавления комментария:
   1 - публиковать сразу,
   0 - публиковать после проверки.*/
   if (to_bool($GLOBALS['LA']['TypeAddComment'])/* || $site_user_id > 0*/)
   {
      $param['status'] = 1;
   }
   else
   {
      $param['status'] = 0;
   }

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

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

   $param['comment_mail_type'] = to_int($GLOBALS['LA']['comment_mail_type']);

   // ID родительского комментария
   $param['comment_parent_id'] = to_int($_POST['comment_parent_id']);

   $param['comment_autor'] = htmlspecialchars(to_str($_POST['comment_autor']));
   $param['comment_email'] = htmlspecialchars(to_str($_POST['comment_email']));
   $param['comment_subject'] = htmlspecialchars(to_str($_POST['comment_subject']));
   $param['comment_text'] = htmlspecialchars(to_str($_POST['comment_text']));
   $param['comment_grade'] = to_int($_POST['comment_grade']);
   $param['allowable_tags'] = '<b><strong><i><u><strike><ul><ol><li>';

   ob_start();
   $GLOBALS['LA_InformationSystem']->ShowAddComment('УведомлениеДобавлениеКомментария', $param);
   $external_propertys['message'] = ob_get_clean();
}

if ($GLOBALS['INFSYS_result'] != false)
{
   /* 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['ОтображатьСсылкуНаАрхив'] = 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;
   }

   /* Вывод списка */
   if ($GLOBALS['INFSYS_result']['item'] == false)
   {
      // Если передано имя тэга - фильтруем
      if (isset($GLOBALS['INFSYS_result']['tag_name']))
      {
         if (class_exists('Tag'))
         {
            $oTag = & singleton('Tag');

            $tag_row = $oTag->GetTagByName($GLOBALS['INFSYS_result']['tag_name']);

            $property['tags'] = array($tag_row['tag_id']);

            // При выводе тэгов вывод элементов ведется из всех групп
            $GLOBALS['INFSYS_result']['group'] = false;
         }
      }

      // $property['xml_show_group_type'] = 'all';

      // Разрешаем передачу в XML свойств групп
      $property['xml_show_group_property'] = true;

      // Капча
      $Captcha = new Captcha();
     $file = & singleton('File');
      $external_propertys['captcha_key'] = $Captcha->GetCaptchaID();

      /* Обработка вставки информационного элемента */
      if (isset($_POST['submit_question']))

      {
         // Проверяем правильноть указания капчи
         // Для авторизированных пользователей капчу не проверяем
         if ($site_user_id > 0
         || $Captcha->ValidCaptcha(to_str($_POST['captcha_key']), to_str($_POST['captcha_keystring'])))
         {
            if ($GLOBALS['LA_InformationSystem']->confirm_information_item(date('U'), $_SERVER['REMOTE_ADDR']) == 1)
            {
               $date= date('Y-m-d H:i:s');
              
               /* Определяем группу (если задана)
               Принимает в качестве параметра ID информационной системы*/
               $group_id = to_int($GLOBALS['INFSYS_result']['group']);

               // Статус вновь добавленного элемента
               // 0 - не активен (необходимо вручную проверить и включить)
               // 1 - активен, виден сразу после публикации
               $item_status = to_int($GLOBALS['LA']['ItemStatus']);

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

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

               $param = array();
               $param['site_users_id'] = $site_user_id;

               // Вставляем запись
               $question_id = $GLOBALS['LA_InformationSystem']->InsertInformationItems(0,   0,
               $InformationSystem_id, $group_id, $date,   htmlspecialchars(strip_tags(to_str($_POST['subject']))), '',
               $item_status, $text, '', 0, to_str($_SERVER['REMOTE_ADDR']), '', 1, '', '', '', '', $param);
           
           
            // Передан файл
            if (isset($_FILES['item_image']['tmp_name']) && $_FILES['item_image']['size'])
            {      
               $kernel = & singleton('kernel');
              
               $information_item_small_image = '';
               $information_item_image = '';

               // Формируем путь к папке информационного элемента по идентификатору информационного элемента
               $item_dir = $GLOBALS['LA_InformationSystem']->GetInformationItemDir($question_id);

               $uploaddir = CMS_FOLDER . $item_dir;

               // Получаем данные о информационной системе
               $infsys_row = $GLOBALS['LA_InformationSystem']->GetInformationSystem($InformationSystem_id);

               // Создаем папку для информационного элемента
               $kernel->PathMkdir($item_dir);

               $file_name = $file->PathCorrection($_FILES['item_image']['name']);

               // Не преобразовываем название загружаемого файла
               if ($infsys_row['information_systems_file_name_conversion'] == 0)
               {
                 $information_item_image = $uploaddir . $file_name;

                 $information_item_small_image = $uploaddir . 'small_' . $file_name;

               }
               else // Преобразовываем название загружаемого файла
               {
                 // Определяем расширение файла
                 $exp = strtolower($kernel->GetExtension($file_name));

                 $information_item_image = $uploaddir . 'information_items_' . $question_id . '.' . $exp;


                 $information_item_small_image = $uploaddir . 'small_information_items_' . $question_id . '.' . $exp;

               }

               $temp_file = $_FILES['item_image']['tmp_name'];

               $param_img = array();

               // Путь к файлу-источнику большого изображения;
               $param_img['path_source_big_image'] = $temp_file;

               // Путь к файлу-источнику малого изображения;
               $param_img['path_source_small_image'] = '';

               //Оригинальное имя файла большого изображения
               $param_img['original_file_name_big_image'] = $file_name;

               // Путь к создаваемому файлу большого изображения
               $param_img['path_target_big_image'] = $information_item_image;

               // Путь к создаваемому файлу малого изображения;
               $param_img['path_target_small_image'] = $information_item_small_image;

               // Оригинальное имя файла малого изображения
               $param_img['original_file_name_small_image'] = '';

               // Использовать большое изображение для создания малого (true - использовать (по умолчанию), false - не использовать)
               $param_img['use_big_image'] = true;

               // Значение максимальной ширины большого изображения
               $param_img['max_width_big_image'] = $infsys_row['information_systems_image_big_max_width'];

               // Значение максимальной высоты большого изображения
               $param_img['max_height_big_image'] =   $infsys_row['information_systems_image_big_max_height'];

               // Значение максимальной ширины малого   изображения;
               $param_img['max_width_small_image'] = $infsys_row['information_systems_image_small_max_width'];

               // Значение максимальной высоты малого   изображения;
               $param_img['max_height_small_image'] = $infsys_row['information_systems_image_small_max_height'];

               // Путь к файлу с "водяным знаком"
               $param_img['watermark_file_path'] = '';

               $result_img = $kernel->AdminLoadFiles($param_img);

               if ($result_img['big_image'])
               {
                 $information_item_image = basename($param_img['path_target_big_image']);
               }

               if ($result_img['small_image'])
               {
                 $information_item_small_image = basename($param_img['path_target_small_image']);
               }

               $param = array();

               $param['information_items_id'] = $question_id;
               $param['information_items_image'] = $information_item_image;
               $param['information_items_small_image'] = $information_item_small_image;
              
               // Обновляем информацию о добавленном ранее информационном элементе
               $GLOBALS['LA_InformationSystem']->InsertInformationItem($param);
            }
           
           

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

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

               $GLOBALS['LA_InformationSystem']->InsertInformationPropertysItems(0, 0,   to_int($GLOBALS['LA']['email_property_id']), $question_id, htmlspecialchars(strip_tags(to_str($_POST['email']))));

               // Если пользователь зерегистрирован, получаем информацию
               if (class_exists('SiteUsers') && !empty($site_user_id))
               {
                  $row_site_user = $SiteUsers->GetSiteUser($site_user_id);

                  if(!empty($row_site_user['site_users_name']) && !empty($row_site_user['site_users_surname']))
                  {
                     $site_user_name = $row_site_user['site_users_name'].' '.$row_site_user['site_users_surname'];
                  }
                  else
                  {
                     $site_user_name = $row_site_user['site_users_login'];
                  }

                  $site_user_email = $row_site_user['site_users_email'];
               }
               else
               {
                  $site_user_name = htmlspecialchars(strip_tags(to_str($_POST['autor'])));
                  $site_user_email = htmlspecialchars(strip_tags(to_str($_POST['email'])));
               }

               ob_start();
               if ($item_status == 0)
               {
                  ?>
                  <p>Благодарим Вас, <?php echo $site_user_name?>!
                  <br />Ваша запись принята. После проверки Администратором она станет доступной!
                  </p>
                  <?php
               }
               else
               {
                  ?>
                  <p>Благодарим Вас, <?php echo $site_user_name?>!
                  <br />Ваша запись принята и опубликована!
                  </p>
                  <?php    
               }
               $external_propertys['message'] = ob_get_clean();

               // Отправка письма администратору
               $message = "Доброе время суток, уважаемый Администратор!\n\nНа сайт, поддерживаемый системой управления сайтом HostCMS, была добавлена запись:\n";
               $message .= "Автор: ".$site_user_name."\n";
               $message .= "E-mail: ".$site_user_email."\n";
               $message .= "Тема: ".htmlspecialchars(strip_tags(to_str($_POST['subject'])))."\n";
               $message .=   "Информационная система: ".$row['information_systems_name']."\n";
               $message .= "Информационный элемент: ".$row['information_items_name']."\n";
               $message .=   "Редактировать: http://".to_str($_SERVER['HTTP_HOST'])."/admin/InformationSystems/InformationSystems.php?admin_forms_id=12&operation=edit_group_item&check_1_{$question_id}=1&information_system_id={$InformationSystem_id}\n";
               $DateClass = & singleton('DateClass');
               $message .= "Дата: ".$DateClass->datetime_format($date)."\n";
               $message .= "IP-адрес: ".to_str($_SERVER['REMOTE_ADDR'])."\n";
               $message .= "Вопрос: ".htmlspecialchars(strip_tags(to_str($_POST['text_item'])));

               $subject = 'Добавление вопроса';

               $kernel = & singleton('kernel');
               $kernel->SendMailWithFile(EMAIL_TO, EMAIL_TO, $subject, $message, array(), 'text/plain');
            }
            else // нельзя добавлить объявление - прошло мало времени
            {
               $external_propertys['error'] = 'Запись не может быть добавлена, т.к. прошло мало времени с момента Вашего последнего добавления вопроса!';
            }
         }
         // Ошибка добавления записи
         else
         {
            $external_propertys['error'] = 'Вы неверно ввели число подтверждения отправки формы!';

            $external_propertys['fio'] = htmlspecialchars(strip_tags(to_str($_POST['autor'])));
            $external_propertys['email'] = htmlspecialchars(strip_tags(to_str($_POST['email'])));
            $external_propertys['subject'] = htmlspecialchars(strip_tags(to_str($_POST['subject'])));
            $external_propertys['text_item'] = htmlspecialchars(strip_tags(to_str($_POST['text_item'])));
         }
      }

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

      $property['part'] = $GLOBALS['part_ii'];

      // Запрещаем передачу в XML свойств групп
      $property['xml_show_group_property'] = false;

      /* Выводим элемент информационной системы */
      $GLOBALS['LA_InformationSystem']->ShowInformationSystemItem($item_id, $xsl_item, $external_propertys);
   }

}
?>


2. Код XSL-шаблона "СписокЗаписейГостевойКниги", используемого для отображения списка записей и формы добавления записи

<?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="/document">
      
      <!-- СписокЗаписейГостевойКниги  -->
      
      <h1>
         <xsl:value-of disable-output-escaping="yes" select="blocks/name"/>
      </h1>
      
      <xsl:value-of disable-output-escaping="yes" select="blocks/description"/>
      
      <!-- Выводим сообщение -->
      <xsl:if test="message/node()">
         <div id="message">
            <xsl:value-of disable-output-escaping="yes" select="message"/>
         </div>
      </xsl:if>
      
      <!-- Выводим ошибку (error), если она была передана через внешний параметр -->
      <xsl:if test="error/node()">
         <div id="error">
            <xsl:value-of select="error"/>
         </div>
      </xsl:if>
      
      <!-- Получаем ID родительской группы и записываем в переменную $parent_group_id -->
      <xsl:variable name="parent_group_id" select="blocks/parent_group_id"/>
      
      <!-- Отображение подгрупп данной группы -->
      <ul>
         <xsl:apply-templates select=".//group[@parent_id=$parent_group_id]" mode="goups"/>
      </ul>
      
      <div id="ShowAddComment">
         <a href="javascript:void(0)" onclick="javascript:cr('AddRecord')">Добавить запись</a>
      </div>
      
      <div id="AddRecord" style="display: none">
         <div class="comment">
            <div class="tl"></div>
            <div class="tr"></div>
            <div class="bl"></div>
            <div class="br"></div>
            
            <!--Отображение формы добавления комментария-->
            <form action="./" method="post" enctype="multipart/form-data">
               
               <xsl:if test="/document/site_user_id = 0">
                  
                  ФИО: <br/><input type="text" name="autor" size="50" value="{/document/autor}"/><br/><br/>
                  
                  E-mail: <br/><input type="text" name="email" size="50" value="{/document/email}"/><br/><br/>
                  
               </xsl:if>
               
               Тема: <br/><input type="text" name="subject" size="50" value="{/document/subject}"/><br/><br/>
               Текст сообщения:<br/>
               
               <textarea type="text" name="text_item" cols="38" rows="10">
                  <xsl:value-of select="/document/text_item"/>
               </textarea><br/><br/>
Изображение:<br/><input type="file" name="item_image" size="30" /><br/><br/>
               
               
               <!-- Обработка CAPTCHA -->
               <xsl:if test="/document/captcha_key != 0 and /document/site_user_id = 0">
                  
                  Контрольные цифры
                  <sup>
                     <font color="red">*</font>
                  </sup><br/>
                  
                  <div style="float: left">
                     <img style="border: 1px solid #000000" src="/captcha.php?get_captcha={/document/captcha_key}&amp;height=30&amp;width=100" title="Код подтверждения" name="captcha"/>
                  </div>
                  
                  <div id="captcha" style="clear:both;">
                     <img style="border: 0px" src="/hostcmsfiles/images/refresh.gif" /> <a href="javascript:void(0);" onclick="ReNewCaptcha({/document/captcha_key}, 30);return false;">Показать другое число</a>
                  </div>
                  
                  <div style="float: left; margin-top: 5px">
                     <input type="hidden" name="captcha_key" value="{/document/captcha_key}"/>
                     <input type="text" name="captcha_keystring" size="15"/>
                  </div>
                  
                  <div id="captcha" style="clear:both;margin-bottom:10px;">
                     Введите число, которое указано выше.
                  </div>
                  
               </xsl:if>
               
               <input type="submit" name="submit_question" value="Добавить запись"/>
               
            </form>
         </div>
      </div>
      
      <!-- Отображение записи информационной системы -->
      
      <xsl:apply-templates select="blocks/items/item[item_status=1]"/>
      
      
      <p>
         <!-- Строка ссылок на другие страницы информационной системы -->
         <xsl:if test="ОтображатьСсылкиНаСледующиеСтраницы=1">
            <xsl:if test="blocks/items/count_items &gt; blocks/items/items_on_page">
               <p>
                  <xsl:call-template name="for">
                     <xsl:with-param name="n" select="blocks/items/count_items div blocks/items/items_on_page"/>
                     <xsl:with-param name="current_page" select="blocks/items/current_page"/>
                  </xsl:call-template>
                  <div style="clear: both"></div>
               </p>
            </xsl:if>
         </xsl:if>
      </p>
   </xsl:template>
   
   <xsl:template match="blocks/items/item">
      
      <div class="comment">
         <div class="tl"></div>
         <div class="tr"></div>
         <div class="bl"></div>
         <div class="br"></div>
         
         <xsl:if test="item_name != ''">
            <b><xsl:value-of select="item_name"/></b><br/>
         </xsl:if>
         
         <xsl:value-of disable-output-escaping="yes" select="item_text"/>
      </div>
      <div style="margin: -5px 0px 20px 20px">
         
         <!-- Если сообщение от авторизованного пользователя -->
         <xsl:choose>
            <xsl:when test="site_user">
               <img src="/hostcmsfiles/images/user.gif"  style="margin: 0px 5px -4px 0px" />
            <span style="font-weight: bold;"><a href="/users/info/{site_user/site_user_login}/"><xsl:value-of select="site_user/site_user_login"/></a></span>
            </xsl:when>
            <xsl:otherwise>
               
               <xsl:choose>
                  <xsl:when test="item_propertys/item_property[@xml_name='email']/value != ''">
                  <span><a href="mailto:{item_propertys/item_property[@xml_name='email']/value}"><xsl:value-of select="item_propertys/item_property[@xml_name='autor']/value"/></a></span>
                  </xsl:when>
                  <xsl:otherwise>
                     <span><xsl:value-of select="item_propertys/item_property[@xml_name='autor']/value"/></span>
                  </xsl:otherwise>
               </xsl:choose>
            </xsl:otherwise>
         </xsl:choose>
         &#xA0;·&#xA0;<xsl:value-of select="item_date"/>
      </div>
      
      <!-- Отображение комментариев  -->
      <xsl:if test="count(item_comments/comment) &gt; 0">
         <div style="margin-left: 50px">
            <xsl:apply-templates select="item_comments/comment"/>
         </div>
      </xsl:if>
      
   </xsl:template>
   
   <!-- Отображение комментариев -->
   <xsl:template match="comment">
      
      <!-- Отображаем комментарий, если задан текст или тема комментария -->
      <xsl:if test="comment_text != '' or comment_subject != ''">
         <a name="comment{comment_id}"></a>
         <div class="comment" id="comment{comment_id}">
            <div class="tl"></div>
            <div class="tr"></div>
            <div class="bl"></div>
            <div class="br"></div>
            
            <xsl:if test="comment_subject != ''">
               <div>
                  <strong>
                     <xsl:value-of select="comment_subject"/>
                  </strong>
               </div>
            </xsl:if>
            
            <xsl:value-of select="comment_text" disable-output-escaping="yes"/>
            
            <!-- Оценка комментария -->
            <xsl:if test="comment_grade != 0">
               <div>Оценка:
                  <xsl:call-template name="show_average_grade">
                     <xsl:with-param name="grade" select="comment_grade"/>
                     <xsl:with-param name="const_grade" select="5"/>
                  </xsl:call-template>
               </div>
            </xsl:if>
         </div>
         
         <div class="comment_desc">
            <xsl:choose>
               <!-- Комментарий добавил авторизированный пользователь -->
               <xsl:when test="site_user_login/node()">
                  <a href="/users/info/{site_user_login}/" class="c_u_l">
                     <xsl:value-of select="site_user_login"/>
                  </a>
               </xsl:when>
               <!-- Комментарй добавил неавторизированный пользователь -->
               <xsl:otherwise>
                  <xsl:value-of select="comment_fio"/></xsl:otherwise>
            </xsl:choose>&#xA0;·&#xA0;<xsl:value-of select="comment_datetime"/>&#xA0;·&#xA0;<xsl:if
               test="/document/show_add_comments/node()
               and ((/document/show_add_comments = 1 and /document/site_user_id > 0)
      or /document/show_add_comments = 2)"><a href="javascript:cr('cr_{comment_id}');">ответить</a>&#xA0;·&#xA0;</xsl:if><a href="{/document/item/item_path}#comment{comment_id}" title="ссылка">#</a>
            
         </div>
         
         <!-- Отображаем только авторизированным пользователям -->
         <xsl:if test="/document/show_add_comments/node() and ((/document/show_add_comments = 1 and /document/site_user_id > 0) or /document/show_add_comments = 2)">
            <div class="cr" id="cr_{comment_id}">
               
               <xsl:call-template name="AddCommentForm">
                  <xsl:with-param name="comment_id" select="comment_id"/>
               </xsl:call-template>
            </div>
         </xsl:if>
         
         <!-- Выбираем дочерние комментарии -->
         <xsl:if test="count(comment) > 0">
            <div class="csd">
               <xsl:apply-templates select="comment"/>
            </div>
         </xsl:if>
      </xsl:if>
   </xsl:template>
   
   <!-- ======================================================== -->
   <!-- Шаблон выводит ссылки подгурппы инф. элемента -->
   <!-- ======================================================== -->
   
   <xsl:template match="group" mode="goups">
      <xsl:variable name="parent_id" select="@parent_id"/>
      
      <li>
         <xsl:if test="small_image!=''">
            <a href="{/document/blocks/url}{fullpath}" target="_blank">
               <img src="{small_image}"/>
         </a>&#xA0;</xsl:if>
         <a href="{/document/blocks/url}{fullpath}">
            <b>
               <xsl:value-of disable-output-escaping="yes" select="name"/>
            </b>
         </a>
      </li>
   </xsl:template>
   
   <!-- Вывод рейтинга -->
   <xsl:template name="show_average_grade">
      <xsl:param name="grade" select="0"/>
      <xsl:param name="const_grade" select="0"/>
      
      <!-- Чтобы избежать зацикливания -->
      <xsl:variable name="current_grade" select="$grade * 1"/>
      
      <xsl:choose>
         <!-- Если число целое -->
         <xsl:when test="floor($current_grade) = $current_grade and not($const_grade &gt; ceiling($current_grade))">
            
            <xsl:if test="$current_grade - 1 &gt; 0">
               <xsl:call-template name="show_average_grade">
                  <xsl:with-param name="grade" select="$current_grade - 1"/>
                  <xsl:with-param name="const_grade" select="$const_grade - 1"/>
               </xsl:call-template>
            </xsl:if>
            
            <xsl:if test="$current_grade != 0">
               <img src="/hostcmsfiles/images/stars_single.gif"/>
            </xsl:if>
         </xsl:when>
         <xsl:when test="$current_grade != 0 and not($const_grade &gt; ceiling($current_grade))">
            
            <xsl:if test="$current_grade - 0.5 &gt; 0">
               <xsl:call-template name="show_average_grade">
                  
                  <xsl:with-param name="grade" select="$current_grade - 0.5"/>
                  <xsl:with-param name="const_grade" select="$const_grade - 1"/>
               </xsl:call-template>
            </xsl:if>
            
            <img src="/hostcmsfiles/images/stars_half.gif"/>
         </xsl:when>
         
         <!-- Выводим серые звездочки, пока текущая позиция не дойдет то значения, увеличенного до целого -->
         <xsl:otherwise>
            <xsl:call-template name="show_average_grade">
               <xsl:with-param name="grade" select="$current_grade"/>
               <xsl:with-param name="const_grade" select="$const_grade - 1"/>
            </xsl:call-template>
            <img src="/hostcmsfiles/images/stars_gray.gif"/>
         </xsl:otherwise>
      </xsl:choose>
   </xsl:template>
   
   <!-- Цикл для вывода строк ссылок -->
   <xsl:template name="for">
      <xsl:param name="i" select="0"/>
      <xsl:param name="n"/>
      <xsl:param name="current_page"/>
      
      <xsl:if test="$n &gt; $i">
         <!-- Ставим ссылку на страницу-->
         <xsl:if test="$i != $current_page">
            
            <!-- Заносим в переменную $parent_group_id идентификатор текущей группы -->
            <xsl:variable name="parent_group_id" select="/document/blocks/parent_group_id"/>
            
            <!-- Определяем группу для формирования адреса ссылки -->
            <xsl:variable name="group_link">
               <xsl:choose>
                  <!-- Если группа не корневая (!=0) -->
                  <xsl:when test="$parent_group_id != 0">
                     <xsl:value-of select="/document/blocks//group[@id=$parent_group_id]/fullpath"/>
                  </xsl:when>
                  <!-- Иначе если нулевой уровень - просто ссылка на страницу со списком элементов -->
                  <xsl:otherwise></xsl:otherwise>
               </xsl:choose>
            </xsl:variable>
            
            <!-- Определяем адрес ссылки -->
            <xsl:variable name="number_link">
               <xsl:choose>
                  <!-- Если не нулевой уровень -->
                  <xsl:when test="$i != 0">page-<xsl:value-of select="$i+1"/>/</xsl:when>
                  <!-- Иначе если нулевой уровень - просто ссылка на страницу со списком элементов -->
                  <xsl:otherwise></xsl:otherwise>
               </xsl:choose>
            </xsl:variable>
            
            <a href="{/document/blocks/url}{$group_link}{$number_link}" class="page_link">
               <xsl:value-of select="$i+1"/>
            </a>
         </xsl:if>
         
         <!-- Не ставим ссылку на страницу-->
         <xsl:if test="$i = $current_page">
            <span class="current">
               <xsl:value-of select="$i + 1"/>
            </span>
         </xsl:if>
         
         <!-- Рекурсивный вызов шаблона. НЕОБХОДИМО ПЕРЕДАВАТЬ ВСЕ НЕОБХОДИМЫЕ ПАРАМЕТРЫ! -->
         <xsl:call-template name="for">
            <xsl:with-param name="i" select="$i + 1"/>
            <xsl:with-param name="n" select="$n"/>
            <xsl:with-param name="current_page" select="$current_page"/>
         </xsl:call-template>
      </xsl:if>
   </xsl:template>
   
</xsl:stylesheet>
#
Re: Добавление фото в объявление гостевой
Кто нибудь пробовал приведенный код уважаемым Ivanov, так как у меня не работает, и можно объяснить чайнику, почему
            // Передан файл
            if (isset($_FILES['item_image']['tmp_name']) && $_FILES['item_image']['size'])
такое условие, это что получается файл уже на сервере, и как он там оказался ?
Условие не работает у меня, работает если if (isset($_POST['item_image']['tmp_name']) && $_POST['item_image']['size'])
но тогда ошибка в 198 строке   $item_dir = $information_system->GetInformationItemDir($question_id);
Если не затруднит плз куда копать и на правильном ли пути я ))
#
Re: Добавление фото в объявление гостевой
почему же у меня файл не передается и как сделать что бы заработало это условие  if (isset($_FILES['item_image']['tmp_name']) && $_FILES['item_image']['size'])
Авторизация