<%@ taglib uri="infoglue-structure" prefix="structure" %>
<%@ taglib uri="infoglue-content" prefix="content" %>
<%@ taglib uri="infoglue-common" prefix="common" %>
<%@ taglib uri="infoglue-page" prefix="page" %>
<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jstl/xml" prefix="x" %>
<%@ page contentType="text/html; charset=UTF-8" %>
<page:pageContext id="pc"/>
<page:deliveryContext id="dc" evaluateFullPage="false"/>
<style>
<!--
.aellipsis { display: block; }
.highlight { font-weight: bold; }
.activeSlot { border: 0px solid #869ab2; padding: 2px; font-weight: bold; }
.slot { border: 0px solid #869ab2; padding: 2px; font-weight: bold; }
.slots { border-top: 1px solid #869ab2; height: 25px; padding: 5px; }
#searchResult p { line-height: 14px; padding-bottom: 6px;}
-->
</style>
<common:urlBuilder id="currentUrl" excludedQueryStringParameters="query,startIndex">
</common:urlBuilder>
<structure:componentPropertyValue id="omnipageServerUrl" propertyName="OmnipageServerUrl"/>
<c:set var="query" value="${param.query}"/>
<c:if test="${empty param.query}">
<c:set var="query" value=""/>
<c:set var="fullQuery" value=""/>
</c:if>
<c:if test="${!empty param.query}">
<c:set var="fullQuery" value="${query} site:www.infoglue.org"/>
<common:URLEncode id="fullQuery" value="${fullQuery}"/>
</c:if>
<c:set var="startIndex" value="${param.startIndex}"/>
<c:if test="${empty param.startIndex}">
<c:set var="startIndex" value="0"/>
</c:if>
<c:if test="${empty omnipageServerUrl}">
<c:set var="omnipageServerUrl" value="http://212.91.140.52:8888"/>
</c:if>
<common:import id="rawXML" url="${omnipageServerUrl}/api/search?query=${fullQuery}&index=Default&start=${startIndex}" charEncoding="utf-8"/>
<c:set var="stripper">
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="iso-8859-1" indent="yes"/>
<xsl:strip-space elements="*"/> <!-- optional -->
<xsl:template match="*">
<xsl:element name="{local-name()}">
<xsl:copy-of select="@*"/> <!-- keep attributes -->
<xsl:apply-templates/>
</xsl:element>
</xsl:template>
</xsl:stylesheet>
</c:set>
<c:set var="strippedXML"><x:transform xml="${rawXML}" xslt="${stripper}"/></c:set>
<c:set var="xslt">
<?xml version="1.0" encoding="iso-8859-1"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" encoding="iso-8859-1"/>
<xsl:param name="currentUrl"/>
<xsl:param name="omnipageServerUrl"/>
<!-- reusable replace-string function -->
<xsl:template name="replace-string">
<xsl:param name="text"/>
<xsl:param name="from"/>
<xsl:param name="to"/>
<xsl:choose>
<xsl:when test="contains($text, $from)">
<xsl:variable name="before" select="substring-before($text, $from)"/>
<xsl:variable name="after" select="substring-after($text, $from)"/>
<xsl:variable name="prefix" select="concat($before, $to)"/>
<xsl:value-of select="$before"/>
<xsl:value-of select="$to"/>
<xsl:call-template name="replace-string">
<xsl:with-param name="text" select="$after"/>
<xsl:with-param name="from" select="$from"/>
<xsl:with-param name="to" select="$to"/>
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$text"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template match="/">
<xsl:variable name="query"><xsl:for-each select="/feed/Query"><xsl:value-of select="@searchTerms"/></xsl:for-each></xsl:variable>
<xsl:variable name="strippedQuery">
<xsl:call-template name="replace-string">
<xsl:with-param name="text" select="$query"/>
<xsl:with-param name="from" select=" site:www.infoglue.org"/>
<xsl:with-param name="to" select=""/>
</xsl:call-template>
</xsl:variable>
<h2>Results for "<xsl:value-of select="$strippedQuery"/>"</h2>
<xsl:for-each select="/feed/entry">
<p>
<xsl:variable name="title" select="title"/>
<a><xsl:attribute name="href"><xsl:value-of select="id" disable-output-escaping="yes"/></xsl:attribute><xsl:value-of select="$title" disable-output-escaping="yes"/></a><xsl:text></xsl:text>
<br/>
<xsl:value-of select="substring(summary,35)" disable-output-escaping="yes"/> <br/>
<span style="color:green;"><xsl:value-of select="substring(id,0,50)" disable-output-escaping="yes"/>...</span> -
<xsl:for-each select="link">
<xsl:if test="@rel = via">
<a><xsl:attribute name="href"><xsl:value-of select="$omnipageServerUrl"/><xsl:value-of select="@href" disable-output-escaping="yes"/></xsl:attribute>Cache:ad</a><xsl:text></xsl:text><br/>
</xsl:if>
</xsl:for-each>
</p>
</xsl:for-each>
<xsl:variable name="totalResults" select="/feed/totalResults"/>
<xsl:variable name="startIndex" select="/feed/startIndex"/>
<xsl:variable name="itemsPerPage" select="/feed/itemsPerPage"/>
<xsl:variable name="test" select="$startIndex div $itemsPerPage"/>
<xsl:variable name="page" select="round($startIndex div $itemsPerPage)"/>
<xsl:variable name="pages" select="round($totalResults div $itemsPerPage)"/>
<!--
<xsl:if test="$startIndex + $itemsPerPage >= $totalResults">
<xsl:variable name="pages" select="page"/>
</xsl:if>
-->
<xsl:variable name="baseUrl"><xsl:value-of select="$currentUrl"/>?query=<xsl:value-of select="$strippedQuery"/></xsl:variable>
<!--
Total: <xsl:value-of select="$startIndex + $itemsPerPage"/>
Pages: <xsl:value-of select="$pages"/>
Pages: <xsl:value-of select="$pages"/>
Total results: <xsl:value-of select="/feed/totalResults"/><br/>
StartIndex: <xsl:value-of select="$startIndex"/><br/>
Items per page: <xsl:value-of select="$itemsPerPage"/><br/>
Pages: <xsl:value-of select="$pages"/><br/>
Page: <xsl:value-of select="$page"/><br/>
Test: <xsl:value-of select="$test"/><br/>
-->
<p class="slots">
<xsl:call-template name="slots">
<xsl:with-param name="index" select="0"/>
<xsl:with-param name="count" select="$pages"/>
<xsl:with-param name="page" select="$page"/>
<xsl:with-param name="itemsPerPage" select="$itemsPerPage"/>
<xsl:with-param name="startIndex" select="0"/>
<xsl:with-param name="urlBase" select="$baseUrl"/>
<xsl:with-param name="totalResults" select="$totalResults"/>
</xsl:call-template>
</p>
</xsl:template>
<xsl:template name="slots">
<xsl:param name="index" select="1"/>
<xsl:param name="count" select="2"/>
<xsl:param name="page" select="3"/>
<xsl:param name="itemsPerPage" select="4"/>
<xsl:param name="startIndex" select="5"/>
<xsl:param name="urlBase" select="6"/>
<xsl:param name="totalResults" select="7"/>
<xsl:choose>
<xsl:when test="$index > 20">
</xsl:when>
<xsl:when test="$index != $page">
<a class="slot">
<xsl:attribute name="href">
<xsl:value-of select="$urlBase" disable-output-escaping="yes"/>&startIndex=<xsl:value-of select="$startIndex"/>
</xsl:attribute><xsl:value-of select="$index"/><!-- (<xsl:value-of select="$startIndex"/>) -->
</a>
</xsl:when>
<xsl:otherwise>
<span class="activeSlot"><xsl:value-of select="$index"/></span>
</xsl:otherwise>
</xsl:choose>
<xsl:text> </xsl:text>
<xsl:if test="$index < $count">
<xsl:if test="$startIndex + 10 < $totalResults">
<xsl:call-template name="slots">
<xsl:with-param name="index" select="$index + 1"/>
<xsl:with-param name="count" select="$count"/>
<xsl:with-param name="page" select="$page"/>
<xsl:with-param name="itemsPerPage" select="$itemsPerPage"/>
<xsl:with-param name="startIndex" select="$startIndex + 10"/>
<xsl:with-param name="urlBase" select="$urlBase"/>
<xsl:with-param name="totalResults" select="$totalResults"/>
</xsl:call-template>
</xsl:if>
</xsl:if>
</xsl:template>
</xsl:stylesheet>
</c:set>
<h1>Search the site</h1>
<form name="searchForm" action="<c:out value="${currentUrl}" escapeXml="false"/>" method="POST">
<input type="textfield" name="query" value="<c:out value="${param.query}" escapeXml="false"/>"/>
<input type="submit" value="Search" />
</form>
<c:if test="${!empty param.query}">
<x:transform xml="${strippedXML}" xslt="${xslt}"><x:param name="currentUrl" value="${currentUrl}"/><x:param name="omnipageServerUrl" value="${omnipageServerUrl}"/></x:transform>
</c:if>