Линк об ошибке на странице

#
Линк об ошибке на странице
Доброе утро всем. Как добавить линк об ошибке на странице в хсл-шаблон "ВыводЕдиницыИнформационнойСистемы"? так чтобы линк также открывался с таким же эффектом, как добавить комментарий. Что нужно изменить в этом коде, чтобы он не открывал окошко для добавления комментария.
<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 style="border-bottom: 1px dashed #3482aa;text-decoration:none;" 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: Линк об ошибке на странице
ну кто-нибудь помогите
#
Re: Линк об ошибке на странице
ладно, перефразирую вопрос)

вот код хсл-шаблона ВыводЕдиницыИнформационнойСистемы, как сделать, чтобы на этой странице были два линка добавить комментарий, работающие отдельное друг от друга. Перепробовал несколько вариантов, то письмо с одной формы не отправляется, то линк не работает вообще, то оба линка открывают одну и ту же форму. Короче, помогите.
<?xml version="1.0" encoding="utf-8"?>
<!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="utf-8" indent="yes" method="html" omit-xml-declaration="no" version="1.0" media-type="text/xml"/>
   
   <!-- ВыводЕдиницыИнформационнойСистемы  -->
   
   <xsl:template match="/">
      <xsl:apply-templates select="/document/item"/>
   </xsl:template>
   
   <xsl:template match="/document/item">
      
      <SCRIPT>
         <xsl:comment>
            <xsl:text disable-output-escaping="yes">
               <![CDATA[
               // массив для хранения регулярных выражений для проверки полей
               fieldType = new Array();
               fieldType['minlen'] = 3;
               fieldType['maxlen'] = 55;
               fieldType['reg'] = '^([a-z0-9_]|\\-|\\.)+@(([a-z0-9_]|\\-)+\\.)+[a-z]{2,}\$';
               
               // Проверка ячейки
               // elementId - идентификатор проверяемого элемента
               function FieldCheckEmail(elementId)
               {
               var oField = document.getElementById(elementId);
               
               var message = '';
               if (oField != undefined)
               {
               var value = oField.value;
               
               if (value != '')
               {
               
               // Проверка на минимальную длину
               if (value.length < fieldType['minlen'])
                  {
                  var decl = declension(fieldType['minlen'], 'символ', 'символа', 'символов');
                  
                  // сообщение
                  message += 'Минимум ' + fieldType['minlen'] + ' ' + decl + '. Текущая длина &mdash; ' + value.length + '. ';
                  }
                  
                  // Проверка на максимальную длину
                  if (value.length > fieldType['maxlen'])
                  {
                  var decl = declension(fieldType['maxlen'], 'символ', 'символа', 'символов');
                  
                  // сообщение
                  message += 'Максимум ' + fieldType['maxlen'] + ' ' + decl + '. Текущая длина &mdash; ' + value.length + '. ';
                  }
                  var t = value.match(fieldType['reg']);
                  //alert(t);
                  // Проверка на регулярное выражение
                  if (value.length > 0 && fieldType['reg'] && !value.match(fieldType['reg']))
                  {
                  // Сообщение
                  message += 'Значение поля не соответствует формату. ';
                  }
                  }
                  
                  var oErrorDiv = document.getElementById('error_'+elementId);
                  
                  if (oErrorDiv != undefined)
                  {
                  oErrorDiv.innerHTML = message;
                  }
                  
                  var oSubmit = document.getElementById('submit_'+elementId);
                  
                  if (oSubmit != undefined)
                  {
                  if (message != '')
                  {
                  oSubmit.disabled = true;
                  }
                  else
                  {
                  oSubmit.disabled = false;
                  }
                  }
                  }
                  }
                  
                  /**
                  * Склонение после числительных
                  * int number числительное
                  * int nominative Именительный падеж
                  * int genitive_singular Родительный падеж, единственное число
                  * int genitive_plural Родительный падеж, множественное число
                  */
                  function declension(number, nominative, genitive_singular, genitive_plural)
                  {
                  var last_digit = number % 10;
                  var last_two_digits = number % 100;
                  
                  if (last_digit == 1 && last_two_digits != 11)
                  {
                  var result = nominative;
                  }
                  else
                  {
                  if ((last_digit == 2 && last_two_digits != 12) || (last_digit == 3 && last_two_digits != 13) || (last_digit == 4 && last_two_digits != 14))
                  {
                  var result = genitive_singular;
                  }
                  else
                  {
                  var result = genitive_plural;
                  }
                  }
                  
                  return result;
                  }
                  
                  // массив для хранения текущих рейтингов звезд
                  var curr_rate = new Array();
                  
                  // функция работы со звездами рейтинга
                  function set_rate(id, new_rate)
                  {
                  // устанавливаем атрибуты
                  curr_star = document.getElementById(id);
                  parent_id = parseInt(curr_star.parentNode.id);
                  
                  // при первом пересчете ставим рейтинг для группы звезд в 0
                  if (!curr_rate[parent_id])
                  {
                  curr_rate[parent_id] = 0;
                  }
                  
                  // устанавливаем новый рейтинг в массив рейтингов и значение скрытого поля
                  if (new_rate != curr_rate[parent_id] && parseInt(new_rate) > 0)
                  {
                  curr_rate[parent_id] = new_rate;
                  
                  curr_form = document.getElementById('comment_form_0' + (parent_id != 0 ? parent_id : ''));
                  curr_form.comment_grade.value = curr_rate[parent_id].charAt(curr_rate[parent_id].length - 1);
                  }
                  
                  // пересчет стилей для звезд
                  for (i = 1; i < 6; i++)
                     {
                     if (parent_id != 0)
                     {
                     j = parent_id + '' + i + '_star_' + i;
                     }
                     else
                     {
                     j = i + '_star_' + i;
                     }
                     
                     temp_obj = document.getElementById(j);
                     
                     if (new_rate == 0)
                     {
                     id = curr_rate[parent_id];
                     }
                     
                     if (parseInt(j) > parseInt(id))
                     {
                     temp_obj.className = '';
                     }
                     else
                     {
                     temp_obj.className = 'curr';
                     }
                     }
                     }
                     ]]>
                  </xsl:text>
               </xsl:comment>
            </SCRIPT>
            
            <!-- Получаем ID родительской группы и записываем в переменную $parent_group_id
            -->
            <xsl:variable name="parent_group_id" select="/document/information_system/parent_group_id"/>
            
            <!--<h3>
               <xsl:value-of disable-output-escaping="yes" select="item_name"/>
            </h3>-->
            
            <!-- Путь к группе -->
            <xsl:apply-templates select="//group[@id=$parent_group_id]" mode="goup_path"/>
            
            <!-- Выводим сообщение -->
            <xsl:if test="/document/message/node()">
               <xsl:value-of disable-output-escaping="yes" select="/document/message"/>
            </xsl:if>
            
            <!-- Фотогафия к информационному элементу-->
            
            
            <img align="center" src="{item_image}" style="margin-left:0px;background-color:#ffffff; padding:10px; border:solid 1px #cccccc;"/>
            
            
            
            <xsl:if test="//group[@id = $parent_group_id]/propertys/property[@xml_name='big_text'] != ''">
               <p>
                  <xsl:value-of disable-output-escaping="yes" select="//group[@id = $parent_group_id]/propertys/property[@xml_name='big_text']/value"/>
               </p>
            </xsl:if>
            
            <!-- Текст информационного элемента -->
            <p>
               <xsl:value-of disable-output-escaping="yes" select="item_text"/>
            </p>
            
            <!-- Средняя оценка элемента -->
            <xsl:if test="item_comments/average_grade/node() and item_comments/average_grade != 0">
               <div style="float: left; margin: 10px 0px 0px 0px">Общая средняя оценка: <xsl:call-template name="show_average_grade">
                     <xsl:with-param name="grade" select="item_comments/average_grade"/>
                  <xsl:with-param name="const_grade" select="5"/></xsl:call-template></div>
               
               <div style="clear: both"></div>
            </xsl:if>
            
            <!-- Тэги для информационного элемента
            <xsl:if test="count(tags/tag) &gt; 0">
               <p>
                  <img src="/hostcmsfiles/images/tags.gif" align="left" style="margin: 0px 5px -2px 0px"/>
                  <xsl:apply-templates select="tags/tag"/>
               </p>
            </xsl:if>-->
            
            <!-- Дата информационного элемента -->
            <p class="date"><xsl:value-of select="item_show_count"/>&#160;<xsl:call-template name="declension">
                  <xsl:with-param name="number" select="item_show_count"/>
            </xsl:call-template>.</p>
            
            <!-- Ссылка 1-2-3 на части документа -->
            <xsl:if test="part/@count &gt; 1">
               <div class="read_more">Читать дальше:</div>
               
               <xsl:call-template name="for">
                  <xsl:with-param name="items_on_page">1</xsl:with-param>
                  <xsl:with-param name="current_page" select="part"/>
                  <xsl:with-param name="link" select="/document/item/item_path"/>
                  <xsl:with-param name="count_items" select="part/@count"/>
                  <xsl:with-param name="visible_pages">6</xsl:with-param>
                  <xsl:with-param name="prefix">part</xsl:with-param>
               </xsl:call-template>
               
               
               <div style="clear: both"></div>
               
            </xsl:if>
            
            <xsl:if test="count(/document/properties_items_dir)">
               <div style="margin: 10px 0px;">
                  <h2>Атрибуты элемента инфосистемы</h2>
                  
                  <xsl:if test="count(/document/item/item_propertys/item_property[@parent_id = 0])">
                     <table border="0">
                        <xsl:apply-templates select="/document/item/item_propertys/item_property[@parent_id = 0]"/>
                     </table>
                  </xsl:if>
                  
                  <xsl:apply-templates select="/document/properties_items_dir"/>
               </div>
            </xsl:if>
            
            <!-- Если указано отображать комментарии -->
            <xsl:if test="/document/show_comments/node() and /document/show_comments = 1">
               
               <!-- Отображение комментариев  -->
               <xsl:if test="count(item_comments/comment) &gt; 0">
                  <p class="title" style="color:#69b663;font-weight:bold;">
                  <a name="comments"></a>Комментарии</p>
                  <xsl:apply-templates select="item_comments/comment"/>
               </xsl:if>
            </xsl:if>
            
            <!-- Если разрешено отображать формы добавления комментария
            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 style="border-bottom: 1px dashed #3482aa;text-decoration:none;" 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>
         </xsl:template>
         
         <!-- /// Метки для информационного элемента /// -->
         <xsl:template match="tags/tag">
            <a href="{/document/information_system/url}tag/{tag_path_name}/" class="tag">
               <xsl:value-of select="tag_name"/>
            </a>
            <xsl:if test="position() != last()">,</xsl:if>&#xA0;
         </xsl:template>
         
         <!-- Шаблон для вывода звездочек (оценки) -->
         <xsl:template name="for_star">
            <xsl:param name="i" select="0"/>
            <xsl:param name="n"/>
            <!--
            <input type="radio" name="_comment_grade" value="{$i}" id="id_comment_grade_{$i}"/>&#xA0;
            <label for="id_icomment_grade_{$i}">
               <xsl:call-template name="show_average_grade">
                  <xsl:with-param name="grade" select="$i"/>
                  <xsl:with-param name="const_grade" select="5"/>
               </xsl:call-template>
            </label>
            -->
            <br/>
            
            <xsl:if test="$n &gt; $i and $n &gt; 1">
               <xsl:call-template name="for_star">
                  <xsl:with-param name="i" select="$i + 1"/>
                  <xsl:with-param name="n" select="$n"/>
               </xsl:call-template>
            </xsl:if>
         </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 match="group" mode="goup_path">
            <xsl:variable name="parent_id" select="@parent_id"/>
            
            <!-- Выбираем рекурсивно вышестоящую группу -->
            <xsl:apply-templates select="//group[@id=$parent_id]" mode="goup_path"/>
            
            <xsl:if test="@parent_id=0">
               <a href="{/document/information_system/url}">
                  <xsl:value-of disable-output-escaping="yes" select="/document/information_system/name"/>
               </a>
            </xsl:if>
            
            <span class="path_arrow">&#x2192;</span>
            
            <a href="{/document/information_system/url}{fullpath}">
               <xsl:value-of select="name"/>
            </a>
         </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 style="font-weight:normal;margin-top:7px;border-top:dashed 1px #ccc;padding-top:7px;">Оценка:
                        <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" style="background: #F0EFEB; width: 470px;padding: 10px;border-top:1px solid #fbfbfb">
                  <img src="http://weblist.az/weblist/images/strelka.gif" style="margin-right:2px;margin-bottom:0px;"/><b style="color:#69b663;font-weight:normal;">Автор: </b><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="properties_items_dir">
            
         <p><b><xsl:value-of select="information_propertys_items_dir_name"/></b></p>
            
            <xsl:variable name="dir_id" select="@id"/>
            
            <xsl:if test="count(/document/item/item_propertys/item_property[@parent_id = $dir_id])">
               <table border="0">
                  <xsl:apply-templates select="/document/item/item_propertys/item_property[@parent_id = $dir_id]"/>
               </table>
            </xsl:if>
            
            <xsl:if test="count(properties_items_dir)">
               <blockquote>
                  <xsl:apply-templates select="properties_items_dir"/>
               </blockquote>
            </xsl:if>
         </xsl:template>
         
         <!-- Вывод строки со значением свойства -->
         <xsl:template match="item_property">
            <tr>
               <td style="padding: 5px" bgcolor="#E5DFDA">
                  <b><xsl:value-of select="property_name"/></b>
               </td>
               <td style="padding: 5px" bgcolor="#E5DFDA">
                  <xsl:choose>
                     <xsl:when test="type = 1">
                        <a href="{file_path}">Скачать файл</a>
                     </xsl:when>
                     <xsl:when test="type = 7">
                        <xsl:choose>
                           <xsl:when test="value = 1">
                              <input type="checkbox" checked="" disabled="" />
                           </xsl:when>
                           <xsl:otherwise>
                              <input type="checkbox" disabled="" />
                           </xsl:otherwise>
                        </xsl:choose>
                     </xsl:when>
                     <xsl:otherwise>
                        <xsl:value-of disable-output-escaping="yes" select="value"/>
                     </xsl:otherwise>
                  </xsl:choose>
               </td>
            </tr>
         </xsl:template>
         
         <!-- Шаблон вывода добавления комментария -->
         <xsl:template name="AddCommentForm">
            <xsl:param name="comment_id" select="0"/>
            
            <!-- Заполняем форму -->
            <xsl:variable name="subject">
               <xsl:if test="/document/form_parent_id/node() and /document/form_parent_id/node() and /document/form_parent_id= $comment_id">
                  <xsl:value-of select="/document/form_subject"/>
               </xsl:if>
            </xsl:variable>
            <xsl:variable name="email">
               <xsl:if test="/document/form_user_email/node() and /document/form_parent_id/node() and /document/form_parent_id= $comment_id">
                  <xsl:value-of select="/document/form_user_email"/>
               </xsl:if>
            </xsl:variable>
            <xsl:variable name="text">
               <xsl:if test="/document/form_text/node() and /document/form_parent_id/node() and /document/form_parent_id= $comment_id">
                  <xsl:value-of disable-output-escaping="yes" select="/document/form_text"/>
               </xsl:if>
            </xsl:variable>
            <xsl:variable name="name">
               <xsl:if test="/document/form_user_name/node() and /document/form_parent_id/node() and /document/form_parent_id= $comment_id">
                  <xsl:value-of select="/document/form_user_name"/>
               </xsl:if>
            </xsl:variable>
            
            <div class="comment">
               <div class="tl"></div>
               <div class="tr"></div>
               <div class="bl"></div>
               <div class="br"></div>
               
               <!--Отображение формы добавления комментария-->
               <form action="{/document/url}" name="comment_form_0{comment_id}" method="post">
                  <!-- Авторизированным не показываем -->
                  <xsl:if test="/document/site_user_id = 0">
                     
                     Имя
                     <br/>
                     <input type="text" size="60" name="comment_autor" value="{$name}" style="width:320px;height:20px; background-color:#fff;border:1px solid #cccccc;font-family:verdana;color:#444444;"/>
                     
                     <p>
                        E-mail (не публикуется)
                        <br/>
                        <input id="email{$comment_id}" style="width:320px;height:20px; background-color:#fff;border:1px solid #cccccc;font-family:verdana;color:#444444;" type="text" size="60" name="comment_email" value="{$email}"
                           onblur="FieldCheckEmail(this.id)"
                           onkeyup="FieldCheckEmail(this.id)"
                           onkeydown="FieldCheckEmail(this.id)" />
                        <div id="error_email{$comment_id}"></div>
                     </p>
                  </xsl:if>
                  
                  <!--тема<p>
                     Тема
                     <br/>
                     <input type="text" size="60" name="comment_subject" value="{$subject}" style="width:320px;height:20px; background-color:#fff;border:1px solid #cccccc;font-family:verdana;color:#444444;"/>
                  </p>-->
                  
                  <p>
                     Комментарий
                     <br/>
                     <textarea style=" background-color:#fff;border:1px solid #cccccc;font-family:verdana;color:#444444;" name="comment_text" cols="68" rows="5" class="mceEditor"><xsl:value-of select="$text"/></textarea>
                  </p>
                  
                  <p>
                     Оценка
                     <br/>
                     <input type="hidden" name="comment_grade" value="0"/>
                     
                     <xsl:variable name="ul_id">
                        <xsl:choose>
                           <xsl:when test="comment_id > 0"><xsl:value-of select="comment_id"/>_stars</xsl:when>
                           <xsl:otherwise>0_stars</xsl:otherwise>
                        </xsl:choose>
                     </xsl:variable>
                     
                     <ul id="{$ul_id}" class="stars">
                        <li onclick="set_rate(this.id, this.id)" onmouseover="set_rate(this.id, '-1')" onmouseout="set_rate(this.id, 0)" id="{comment_id}1_star_1"></li>
                        <li onclick="set_rate(this.id, this.id)" onmouseover="set_rate(this.id, '-1')" onmouseout="set_rate(this.id, 0)" id="{comment_id}2_star_2"></li>
                        <li onclick="set_rate(this.id, this.id)" onmouseover="set_rate(this.id, '-1')" onmouseout="set_rate(this.id, 0)" id="{comment_id}3_star_3"></li>
                        <li onclick="set_rate(this.id, this.id)" onmouseover="set_rate(this.id, '-1')" onmouseout="set_rate(this.id, 0)" id="{comment_id}4_star_4"></li>
                        <li onclick="set_rate(this.id, this.id)" onmouseover="set_rate(this.id, '-1')" onmouseout="set_rate(this.id, 0)" id="{comment_id}5_star_5"></li>
                     </ul>
                  </p>
                  
                  <br />
                  <br />
                  <!-- Обработка CAPTCHA -->
                  <xsl:if test="//captcha_key != 0 and /document/site_user_id = 0">
                     
                     <div style="float: left;margin-top: 5px">
                        <input type="hidden" name="captcha_key" value="{//captcha_key}{$comment_id}"/>
                        <input type="text" name="captcha_keystring" size="15" style="width:120px;height:20px; background-color:#fff;border:1px solid #cccccc;font-family:verdana;color:#444444;"/>
                     </div>
                     
                     <div id="captcha" style="clear:both;margin-bottom:10px;">
                        Введите число, которое указано ниже.
                     </div>
                     
                     <div>
                        <img id="comment_{$comment_id}" style="border: 1px solid #000000" src="/captcha.php?get_captcha={//captcha_key}{$comment_id}&amp;height=30&amp;width=100" title="Код подтверждения" name="captcha"/>
                     </div>
                     
                     <div style="clear:both;">
                        <a href="javascript:void(0);" onclick="ReNewCaptchaById('comment_{$comment_id}', '{//captcha_key}{$comment_id}', 30); return false;">Показать другое число</a>
                     </div>
                     
                     
                  </xsl:if>
                  
                  <xsl:if test="$comment_id != 0">
                     <input type="hidden" name="comment_parent_id" value="{comment_id}"/>
                  </xsl:if>
                  
                  <p>
                     <input id="submit_email{$comment_id}" type="submit" name="add_comment" value="Отправить"/>
                  </p>
               </form>
            </div>
         </xsl:template>
         
         <!-- Цикл для вывода строк ссылок -->
         <xsl:template name="for">
            <xsl:param name="i" select="0"/>
            <xsl:param name="prefix">page</xsl:param>
            <xsl:param name="link"/>
            <xsl:param name="items_on_page"/>
            <xsl:param name="current_page"/>
            <xsl:param name="count_items"/>
            <xsl:param name="visible_pages"/>
            
            <xsl:variable name="n" select="$count_items div $items_on_page"/>
            
            <!-- Заносим в переменную $parent_group_id идентификатор текущей группы -->
            <xsl:variable name="parent_group_id" select="/document/blocks/parent_group_id"/>
            
            
            <!-- Считаем количество выводимых ссылок перед текущим элементом -->
            <xsl:variable name="pre_count_page">
               <xsl:choose>
                  <xsl:when test="$current_page &gt; ($n - (round($visible_pages div 2) - 1))">
                     <xsl:value-of select="$visible_pages - ($n - $current_page)"/>
                  </xsl:when>
                  <xsl:otherwise>
                     <xsl:value-of select="round($visible_pages div 2) - 1"/>
                  </xsl:otherwise>
               </xsl:choose>
            </xsl:variable>
            
            <!-- Считаем количество выводимых ссылок после текущего элемента -->
            <xsl:variable name="post_count_page">
               <xsl:choose>
                  <xsl:when test="0 &gt; $current_page - (round($visible_pages div 2) - 1)">
                     <xsl:value-of select="$visible_pages - $current_page - 1"/>
                  </xsl:when>
                  <xsl:otherwise>
                     <xsl:choose>
                        <xsl:when test="round($visible_pages div 2) = ($visible_pages div 2)">
                           <xsl:value-of select="$visible_pages div 2"/>
                        </xsl:when>
                        <xsl:otherwise>
                           <xsl:value-of select="round($visible_pages div 2) - 1"/>
                        </xsl:otherwise>
                     </xsl:choose>
                  </xsl:otherwise>
               </xsl:choose>
            </xsl:variable>
            
            <xsl:if test="$count_items &gt; $items_on_page and $n &gt; $i">
               <!-- Ставим ссылку на страницу-->
               <xsl:if test="$i != $current_page">
                  <!-- Определяем адрес тэга -->
                  <xsl:variable name="tag_link">
                     <xsl:choose>
                        <!-- Если не нулевой уровень -->
                        <xsl:when test="count(/document/blocks/selected_tags/tag) != 0">tag/<xsl:value-of select="/document/blocks/selected_tags/tag/tag_path_name"/>/</xsl:when>
                        <!-- Иначе если нулевой уровень - просто ссылка на страницу со списком элементов -->
                        <xsl:otherwise></xsl:otherwise>
                     </xsl:choose>
                  </xsl:variable>
                  
                  <!-- Определяем адрес ссылки -->
                  <xsl:variable name="number_link">
                     
                     <xsl:choose>
                        <!-- Если не нулевой уровень -->
                        <xsl:when test="$i != 0">
                           <xsl:value-of select="$prefix"/>-<xsl:value-of select="$i + 1"/>/</xsl:when>
                        <!-- Иначе если нулевой уровень - просто ссылка на страницу со списком элементов -->
                        <xsl:otherwise></xsl:otherwise>
                     </xsl:choose>
                  </xsl:variable>
                  
                  <!-- Выводим ссылку на первую страницу -->
                  <xsl:if test="$current_page - $pre_count_page &gt; 0 and $i = 0">
                     <a href="{$link}" class="page_link" style="text-decoration: none;">&#x2190;</a>
                  </xsl:if>
                  
                  <xsl:choose>
                     <xsl:when test="$i &gt;= ($current_page - $pre_count_page) and ($current_page + $post_count_page) &gt;= $i">
                        
                        <!-- Выводим ссылки на видимые страницы -->
                        <a href="{$link}{$tag_link}{$number_link}" class="page_link">
                           <xsl:value-of select="$i + 1"/>
                        </a>
                     </xsl:when>
                     <xsl:otherwise></xsl:otherwise>
                  </xsl:choose>
                  
                  <!-- Выводим ссылку на последнюю страницу -->
                  <xsl:if test="$i+1 &gt;= $n and $n &gt; ($current_page + 1 + $post_count_page)">
                     <xsl:choose>
                        <xsl:when test="$n &gt; round($n)">
                           <!-- Выводим ссылку на последнюю страницу -->
                           <a href="{$link}{$prefix}-{round($n+1)}/" class="page_link" style="text-decoration: none;">&#x2192;</a>
                        </xsl:when>
                        <xsl:otherwise>
                           <a href="{$link}{$prefix}-{round($n)}/" class="page_link" style="text-decoration: none;">&#x2192;</a>
                        </xsl:otherwise>
                     </xsl:choose>
                  </xsl:if>
               </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="prefix" select="$prefix"/>
                  <xsl:with-param name="link" select="$link"/>
                  <xsl:with-param name="items_on_page" select="$items_on_page"/>
                  <xsl:with-param name="current_page" select="$current_page"/>
                  <xsl:with-param name="count_items" select="$count_items"/>
                  <xsl:with-param name="visible_pages" select="$visible_pages"/>
               </xsl:call-template>
            </xsl:if>
         </xsl:template>
         
         <!-- Склонение после числительных -->
         <xsl:template name="declension">
            
            <xsl:param name="number" select="number"/>
            
            <!-- Именительный падеж -->
            <xsl:variable name="nominative">
               <xsl:text>просмотр</xsl:text>
            </xsl:variable>
            
            <!-- Родительный падеж, единственное число -->
            <xsl:variable name="genitive_singular">
               <xsl:text>просмотра</xsl:text>
            </xsl:variable>
            
            
            <xsl:variable name="genitive_plural">
               <xsl:text>просмотров</xsl:text>
            </xsl:variable>
            
            <xsl:variable name="last_digit">
               <xsl:value-of select="$number mod 10"/>
            </xsl:variable>
            
            <xsl:variable name="last_two_digits">
               <xsl:value-of select="$number mod 100"/>
            </xsl:variable>
            
            <xsl:choose>
               <xsl:when test="$last_digit = 1 and $last_two_digits != 11">
                  <xsl:value-of select="$nominative"/>
               </xsl:when>
               <xsl:when test="$last_digit = 2 and $last_two_digits != 12
                  or $last_digit = 3 and $last_two_digits != 13
                  or $last_digit = 4 and $last_two_digits != 14">
                  <xsl:value-of select="$genitive_singular"/>
               </xsl:when>
               <xsl:otherwise>
                  <xsl:value-of select="$genitive_plural"/>
               </xsl:otherwise>
            </xsl:choose>
         </xsl:template>
      </xsl:stylesheet>
      
#
Re: Линк об ошибке на странице
Из вашего описания не понятно самое главное - а что, собственно, должно происходить после того как нужная вам форма отобразится, пользователь напишет в ней все что хочет и нажмет отправить?
Заказов не беру. Консультирую редко.
#
Re: Линк об ошибке на странице
Там будет другая форма, для сообщения о наличии возможной ошибки на данной странице сайта.
#
Re: Линк об ошибке на странице
где - там?
Заказов не беру. Консультирую редко.
#
Re: Линк об ошибке на странице
Объясню по порядку) на данный момент на странице один линк — "Добавить комментарий". Кликаешь на нее и открывается форма для добавления комментария. Я хочу еще добавить на эту же страницу линк "Сообщить об ошибке", чтобы точно также открывалась уже другая форма, откуда можно будет отправить сообщение об ошибке на данной странице. Вот, надеюсь нормально объяснил)
#
Re: Линк об ошибке на странице
это я сразу понял, еще из первого вашего поста.
А вот вы моего вопроса не слышите, или не понимаете.

Что должен сделать сервер с той информацией, которую ему передал пользователь через форму "сообщить об ошибке"?
Заказов не беру. Консультирую редко.
#
Re: Линк об ошибке на странице
Kotoff писал(а):
Что должен сделать сервер с той информацией, которую ему передал пользователь через форму «сообщить об ошибке»?

Отправить мне по почте сообщение об ошибке и линк на страницу, на которой и находится эта ошибка.
#
Re: Линк об ошибке на странице
Окей.
Тогда комментарии тут совершенно не при чем.
В подходящем месте шаблона (например, перед выводом комментов) вставляете в явном виде html-код формы, сделав ее скрытой через css, задаете ей какой-то произвольный id и некое скрытое поле, наличие и значение которого позволит серверу однозначно определить, что ему пришло сообщение об ошибке, а не комментарий, например.
В нужном месте выводите, опять же в явном виде, ссылку для сообщения об ошибке, можно такую-же как для добавления комментария, но в качестве параметра для js-функции cr() передаете значение идентификатора формы для сообщения об ошибке.
Ну а на сервере, в настройках ТДС делаете проверку на существование вашего скрытого поля в массиве $_POST и если таковое присутстует то отправляете на почту сообщение.
Заказов не беру. Консультирую редко.
Авторизация