Перелистывание элементов во всплывающем окне (ИС)
Здравствуйте.
Есть некая ИС, которая содержит фотографии/рисунки, отображаемые в уменьшенном варианте по 9 картинок на страницу.. Для просмотра увеличенного варианта создано всплывающее окно.. однако, была поставлена задача создать элементы навигации (следующее фото в разделе, предыдущее фото в разделе) в этом всплывающем окне.
Подскажите, как можно организовать данное чудо?
Ниже следует код текущего XSL-шаблона для обработки ИС:
Спасибо!
Есть некая ИС, которая содержит фотографии/рисунки, отображаемые в уменьшенном варианте по 9 картинок на страницу.. Для просмотра увеличенного варианта создано всплывающее окно.. однако, была поставлена задача создать элементы навигации (следующее фото в разделе, предыдущее фото в разделе) в этом всплывающем окне.
Подскажите, как можно организовать данное чудо?
Ниже следует код текущего XSL-шаблона для обработки ИС:
<xsl:template match="/document">
<SCRIPT>
<xsl:comment>
<xsl:text disable-output-escaping="yes">
<![CDATA[
function ShowImgWindow(title, src, width, height, txt)
{
height += 80;
obj = window.open("", "", "scrollbars=0,dialog=0,minimizable=1,modal=1,resizable=0");
obj.document.write("<html>");
obj.document.write("<head>");
obj.document.write("<title>"+title+"</title>");
obj.document.write("</head>");
obj.document.write("<body style=\"background-color:#f7f3d6; margin:20px;\">");
obj.document.write("<center><img src=\""+src+"\" /><br />");
obj.document.write("<h4 style=\"text-align:center; color:#005B9D; font-size: 13px;\">"+txt+"</h4>");
obj.document.write("</center></body>");
obj.document.write("</html>");
}
]]>
</xsl:text>
</xsl:comment>
</SCRIPT>
<table align="center" border="0" cellpadding="0" cellspacing="10" width="90%">
<xsl:apply-templates select="blocks/items/item[item_status=1]" />
<tr><td colspan="3" style="text-align: center;">
<xsl:call-template name="for">
<xsl:with-param name="items_on_page" select="blocks/items/items_on_page" />
<xsl:with-param name="current_page" select="blocks/items/current_page" />
<xsl:with-param name="count_items" select="blocks/items/count_items" />
<xsl:with-param name="visible_pages" select="6" />
</xsl:call-template>
</td></tr>
</table>
</xsl:template>
<!-- ======================== -->
<!-- Данные об инф. элементах -->
<!-- ======================== -->
<xsl:template match="/document/blocks/items/item">
<xsl:variable name="srcpath" select="item_image" />
<xsl:if test="position() = 1">
<xsl:text disable-output-escaping="yes">
<tr>
</xsl:text>
</xsl:if>
<td align="center" height="200" valign="top" width="204">
<table border="0" cellpadding="0" cellspacing="0" width="204">
<tr><td class="gallery_td" height="182" width="204">
<div class="photo_pointer" onclick="ShowImgWindow('{item_name}','/{$srcpath}', {item_image/@width}, {item_image/@height},'{item_description}')"><img alt="{item_name}" src="/{item_small_image}" style="" /></div>
</td></tr>
<tr><td class="photo_text"><xsl:value-of disable-output-escaping="yes" select="item_name" /></td></tr>
</table>
</td>
<xsl:if test="(position() mod 3)=0">
<xsl:text disable-output-escaping="yes">
</tr>
<tr>
</xsl:text>
</xsl:if>
</xsl:template>
<!-- Цикл для вывода строк ссылок -->
<xsl:template name="for">
<xsl:param name="i" select="0" />
<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" />
<!-- Считаем количество выводимых ссылок перед текущим элементом -->
<xsl:variable name="pre_count_page">
<xsl:choose>
<xsl:when test="$current_page > ($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 > $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 > $items_on_page and $n > $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>
<!-- Выводим ссылку на первую страницу -->
<xsl:if test="$current_page - $pre_count_page > 0 and $i = 0">
<a href="{/document/blocks/url}{$group_link}" class="page_link" style="text-decoration: none;">←</a>
</xsl:if>
<xsl:choose>
<xsl:when test="$i >= ($current_page - $pre_count_page) and ($current_page + $post_count_page) >= $i">
<!-- Выводим ссылки на видимые страницы -->
<a href="{/document/blocks/url}{$group_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 >= $n and $n > ($current_page + 1 + $post_count_page)">
<xsl:choose>
<xsl:when test="$n > round($n)">
<!-- Выводим ссылку на последнюю страницу -->
<a href="{/document/blocks/url}{$group_link}page-{round($n+1)}/" class="page_link" style="text-decoration: none;">→</a>
</xsl:when>
<xsl:otherwise>
<a href="{/document/blocks/url}{$group_link}page-{round($n)}/" class="page_link" style="text-decoration: none;">→</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="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:stylesheet>
<SCRIPT>
<xsl:comment>
<xsl:text disable-output-escaping="yes">
<![CDATA[
function ShowImgWindow(title, src, width, height, txt)
{
height += 80;
obj = window.open("", "", "scrollbars=0,dialog=0,minimizable=1,modal=1,resizable=0");
obj.document.write("<html>");
obj.document.write("<head>");
obj.document.write("<title>"+title+"</title>");
obj.document.write("</head>");
obj.document.write("<body style=\"background-color:#f7f3d6; margin:20px;\">");
obj.document.write("<center><img src=\""+src+"\" /><br />");
obj.document.write("<h4 style=\"text-align:center; color:#005B9D; font-size: 13px;\">"+txt+"</h4>");
obj.document.write("</center></body>");
obj.document.write("</html>");
}
]]>
</xsl:text>
</xsl:comment>
</SCRIPT>
<table align="center" border="0" cellpadding="0" cellspacing="10" width="90%">
<xsl:apply-templates select="blocks/items/item[item_status=1]" />
<tr><td colspan="3" style="text-align: center;">
<xsl:call-template name="for">
<xsl:with-param name="items_on_page" select="blocks/items/items_on_page" />
<xsl:with-param name="current_page" select="blocks/items/current_page" />
<xsl:with-param name="count_items" select="blocks/items/count_items" />
<xsl:with-param name="visible_pages" select="6" />
</xsl:call-template>
</td></tr>
</table>
</xsl:template>
<!-- ======================== -->
<!-- Данные об инф. элементах -->
<!-- ======================== -->
<xsl:template match="/document/blocks/items/item">
<xsl:variable name="srcpath" select="item_image" />
<xsl:if test="position() = 1">
<xsl:text disable-output-escaping="yes">
<tr>
</xsl:text>
</xsl:if>
<td align="center" height="200" valign="top" width="204">
<table border="0" cellpadding="0" cellspacing="0" width="204">
<tr><td class="gallery_td" height="182" width="204">
<div class="photo_pointer" onclick="ShowImgWindow('{item_name}','/{$srcpath}', {item_image/@width}, {item_image/@height},'{item_description}')"><img alt="{item_name}" src="/{item_small_image}" style="" /></div>
</td></tr>
<tr><td class="photo_text"><xsl:value-of disable-output-escaping="yes" select="item_name" /></td></tr>
</table>
</td>
<xsl:if test="(position() mod 3)=0">
<xsl:text disable-output-escaping="yes">
</tr>
<tr>
</xsl:text>
</xsl:if>
</xsl:template>
<!-- Цикл для вывода строк ссылок -->
<xsl:template name="for">
<xsl:param name="i" select="0" />
<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" />
<!-- Считаем количество выводимых ссылок перед текущим элементом -->
<xsl:variable name="pre_count_page">
<xsl:choose>
<xsl:when test="$current_page > ($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 > $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 > $items_on_page and $n > $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>
<!-- Выводим ссылку на первую страницу -->
<xsl:if test="$current_page - $pre_count_page > 0 and $i = 0">
<a href="{/document/blocks/url}{$group_link}" class="page_link" style="text-decoration: none;">←</a>
</xsl:if>
<xsl:choose>
<xsl:when test="$i >= ($current_page - $pre_count_page) and ($current_page + $post_count_page) >= $i">
<!-- Выводим ссылки на видимые страницы -->
<a href="{/document/blocks/url}{$group_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 >= $n and $n > ($current_page + 1 + $post_count_page)">
<xsl:choose>
<xsl:when test="$n > round($n)">
<!-- Выводим ссылку на последнюю страницу -->
<a href="{/document/blocks/url}{$group_link}page-{round($n+1)}/" class="page_link" style="text-decoration: none;">→</a>
</xsl:when>
<xsl:otherwise>
<a href="{/document/blocks/url}{$group_link}page-{round($n)}/" class="page_link" style="text-decoration: none;">→</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="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:stylesheet>
Спасибо!
Авторизация