diff options
-rw-r--r-- | gentoobrowse/present/search.xml | 55 | ||||
-rw-r--r-- | gentoobrowse/search.xslt | 41 | ||||
-rw-r--r-- | gentoobrowse/views/search.xml | 13 |
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) > 0"> - <h2>Search Results for "<xsl:value-of select="/gentoo/project2:params/project2:param[@name='criteria']/@value"/>"</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) > 0"> + <h2>Search Results for "<xsl:value-of select="/gentoo/project2:params/project2:param[@name='criteria']/@value"/>"</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) > 0"> + <h2>Search Results for "<xsl:value-of select="/gentoo/project2:params/project2:param[@name='bcriteria']/@value"/>"</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> |