summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gentoobrowse/present/search.xml55
-rw-r--r--gentoobrowse/search.xslt41
-rw-r--r--gentoobrowse/views/search.xml13
3 files changed, 89 insertions, 20 deletions
diff --git a/gentoobrowse/present/search.xml b/gentoobrowse/present/search.xml
index de448f3..cb48280 100644
--- a/gentoobrowse/present/search.xml
+++ b/gentoobrowse/present/search.xml
@@ -3,15 +3,48 @@
xmlns:project2="http://project2.randomdan.homeip.net">
<xi:include href="../views/search.xml" />
<xi:include href="../views/webcommon.xml" />
- <project2:rawview>
- <form caption="Search" submit="Search" action="/search" method="get" autofocus="criteria">
- <input type="text" caption="Criteria" name="criteria"
- xslvalue="/gentoo/project2:params/project2:param[@name='criteria']/@value" />
- </form>
- </project2:rawview>
- <project2:view name="searchResults" source="packageSearch" rootname="searchResults" recordname="package" filter="freeText">
- <parameters>
- <param name="criteria"><value source="param" name="criteria" default="" /></param>
- </parameters>
- </project2:view>
+
+ <project2:if name="haveNoBCriteria" mode="and">
+ <project2:regexcheck name="criteriaLength" regex="^$">
+ <apply-to source="param" name="bcriteria" default="" />
+ </project2:regexcheck>
+ <project2:rawview name="a-packages">
+ <form caption="Package Search" submit="Search" action="/search" method="get" autofocus="criteria">
+ <input type="text" caption="Criteria" name="criteria"
+ xslvalue="/gentoo/project2:params/project2:param[@name='criteria']/@value" />
+ </form>
+ </project2:rawview>
+ </project2:if>
+ <project2:if name="haveCriteria" mode="and">
+ <project2:regexcheck name="criteriaLength" regex=".+">
+ <apply-to source="param" name="criteria" default="" />
+ </project2:regexcheck>
+ <project2:view name="searchResults" source="packageSearch" rootname="searchResults" recordname="package" filter="freeText">
+ <parameters>
+ <param name="criteria"><value source="param" name="criteria" default="" /></param>
+ </parameters>
+ </project2:view>
+ </project2:if>
+
+ <project2:if name="haveNoCriteria" mode="and">
+ <project2:regexcheck name="criteriaLength" regex="^$">
+ <apply-to source="param" name="criteria" default="" />
+ </project2:regexcheck>
+ <project2:rawview name="b-bugs">
+ <form caption="Bug Search" submit="Search" action="/search" method="get">
+ <input type="text" caption="Criteria" name="bcriteria"
+ xslvalue="/gentoo/project2:params/project2:param[@name='bcriteria']/@value" />
+ </form>
+ </project2:rawview>
+ </project2:if>
+ <project2:if name="haveBCriteria" mode="and">
+ <project2:regexcheck name="criteriaLength" regex=".+">
+ <apply-to source="param" name="bcriteria" default="" />
+ </project2:regexcheck>
+ <project2:view name="bugSearchResults" source="bugSearch" rootname="bugSearchResults" recordname="bug" filter="freeText">
+ <parameters>
+ <param name="criteria"><value source="param" name="bcriteria" default="" /></param>
+ </parameters>
+ </project2:view>
+ </project2:if>
</view>
diff --git a/gentoobrowse/search.xslt b/gentoobrowse/search.xslt
index 063c0b7..06bd5b7 100644
--- a/gentoobrowse/search.xslt
+++ b/gentoobrowse/search.xslt
@@ -9,18 +9,41 @@
<xsl:template name="content">
<xsl:apply-templates select="form|para" />
<xsl:apply-templates select="/gentoo/searchResults" />
+ <xsl:apply-templates select="/gentoo/bugSearchResults" />
</xsl:template>
<xsl:template match="/gentoo/searchResults">
- <xsl:if test="/gentoo/project2:params/project2:param[@name='criteria']/@value != ''">
- <xsl:if test="count(/gentoo/searchResults/package) &gt; 0">
- <h2>Search Results for &quot;<xsl:value-of select="/gentoo/project2:params/project2:param[@name='criteria']/@value"/>&quot;</h2>
- <ul>
- <xsl:apply-templates select="/gentoo/searchResults/package" />
- </ul>
+ <xsl:if test="/gentoo/project2:params/project2:param[@name='criteria']/@value != ''">
+ <xsl:if test="count(/gentoo/searchResults/package) &gt; 0">
+ <h2>Search Results for &quot;<xsl:value-of select="/gentoo/project2:params/project2:param[@name='criteria']/@value"/>&quot;</h2>
+ <ul>
+ <xsl:apply-templates select="/gentoo/searchResults/package" />
+ </ul>
+ </xsl:if>
+ <xsl:if test="count(/gentoo/searchResults/package) = 0">
+ <p class="warning">Nothing found</p>
+ </xsl:if>
</xsl:if>
- <xsl:if test="count(/gentoo/searchResults/package) = 0">
- <p class="warning">Nothing found</p>
+ </xsl:template>
+ <xsl:template match="/gentoo/bugSearchResults">
+ <xsl:if test="/gentoo/project2:params/project2:param[@name='bcriteria']/@value != ''">
+ <xsl:if test="count(/gentoo/bugSearchResults/bug) &gt; 0">
+ <h2>Search Results for &quot;<xsl:value-of select="/gentoo/project2:params/project2:param[@name='bcriteria']/@value"/>&quot;</h2>
+ <ul>
+ <xsl:for-each select="/gentoo/bugSearchResults/bug">
+ <li>
+ <a>
+ <xsl:attribute name="href">http://bugs.gentoo.org/<xsl:value-of select="bugid" /></xsl:attribute>
+ <xsl:attribute name="title"><xsl:value-of select="summary" /></xsl:attribute>
+ <xsl:value-of select="bugid" />
+ </a>
+ - <xsl:value-of select="summary" />
+ </li>
+ </xsl:for-each>
+ </ul>
+ </xsl:if>
+ <xsl:if test="count(/gentoo/bugSearchResults/bug) = 0">
+ <p class="warning">Nothing found</p>
+ </xsl:if>
</xsl:if>
- </xsl:if>
</xsl:template>
</xsl:stylesheet>
diff --git a/gentoobrowse/views/search.xml b/gentoobrowse/views/search.xml
index 820c3ea..87ce6eb 100644
--- a/gentoobrowse/views/search.xml
+++ b/gentoobrowse/views/search.xml
@@ -18,4 +18,17 @@
</filter>
</sql>
</project2:sqlrows>
+ <project2:sqlrows name="bugSearch" datasource="postgres-web">
+ <sql>
+ SELECT b.bugid, b.severity, b.status, b.summary, b.firstseen
+ <filter name="freeText">,
+ ts_rank(to_tsvector('english', regexp_replace(summary, '-[0-9][^ ]*', '', 'g')), plainto_tsquery('english', <param name="criteria" />)) as rank
+ </filter>
+ FROM bugs b
+ <filter name="freeText">
+ WHERE to_tsvector('english', regexp_replace(summary, '-[0-9][^ ]*', '', 'g')) @@ plainto_tsquery('english', <param name="criteria" />)
+ ORDER BY rank DESC, bugid DESC
+ </filter>
+ </sql>
+ </project2:sqlrows>
</block>