Fixing bug 1629: RSS Feeds of Search Results in OPAC
authorJoshua Ferraro <jmf@liblime.com>
Thu, 1 May 2008 23:55:13 +0000 (18:55 -0500)
committerJoshua Ferraro <jmf@liblime.com>
Thu, 1 May 2008 23:55:13 +0000 (18:55 -0500)
C4/Auth.pm
koha-tmpl/opac-tmpl/prog/en/includes/doc-head-close.inc
koha-tmpl/opac-tmpl/prog/en/modules/opac-opensearch.tmpl [new file with mode: 0644]
koha-tmpl/opac-tmpl/prog/en/modules/opac-results.tmpl
opac/opac-search.pl

index fe8068d..279c471 100755 (executable)
@@ -322,6 +322,7 @@ sub get_template_and_user {
                        TagsEnabled => C4::Context->preference("TagsEnabled"),
                        GoogleJackets => C4::Context->preference("GoogleJackets"),
                        AuthorisedValueImages => C4::Context->preference("AuthorisedValueImages"),
+                       OPACBaseURL=> C4::Context->preference("OPACBaseURL"),
         );
     }
        $template->param(listloop=>[{shelfname=>"Freelist", shelfnumber=>110}]);
index aaa0d1e..ddcafeb 100644 (file)
@@ -41,4 +41,4 @@
        //]]>
 </script>
 <link rel="unapi-server" type="application/xml" title="unAPI" href="/cgi-bin/koha/unapi" />
-<link rel="search" type="application/opensearchdescription+xml" title="Koha OpenSearch" href="/cgi-bin/koha/opensearch" />
+<link rel="search" type="application/opensearchdescription+xml" title="<!-- TMPL_VAR NAME="LibraryName" --> OpenSearch" href="http://<!-- TMPL_VAR NAME="OPACBaseURL" -->/cgi-bin/koha/opac-search.pl?format=opensearchdescription" />
diff --git a/koha-tmpl/opac-tmpl/prog/en/modules/opac-opensearch.tmpl b/koha-tmpl/opac-tmpl/prog/en/modules/opac-opensearch.tmpl
new file mode 100644 (file)
index 0000000..2bf7a07
--- /dev/null
@@ -0,0 +1,75 @@
+<?xml version='1.0' encoding='utf-8'  ?>
+<!-- TMPL_IF NAME="opensearchdescription" -->
+<OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/">
+   <ShortName><!-- TMPL_VAR NAME="LibraryName" --> Search</ShortName>
+   <Description>Search the <!-- TMPL_VAR NAME="LibraryName" --></Description>
+   <Tags>koha opac <!-- TMPL_VAR NAME="LibraryName" --></Tags>
+   <Contact><!-- TMPL_VAR NAME="KohaAdminEmailAddress" --></Contact>
+   <Url type="application/rss+xml" 
+        template="http://<!-- TMPL_VAR NAME="OPACBaseURL" -->/cgi-bin/koha/opac-search.pl?q={searchTerms}&amp;pw={startPage?}&amp;format=rss2"/>
+</OpenSearchDescription>
+
+<!-- TMPL_ELSE -->
+
+<!-- TMPL_IF NAME="rss2" -->
+<rss version="2.0" 
+      xmlns:opensearch="http://a9.com/-/spec/opensearch/1.1/"
+      xmlns:atom="http://www.w3.org/2005/Atom">
+   <channel>
+     <title><!-- TMPL_VAR NAME="LibraryName" --> Search <!-- TMPL_IF NAME="query_desc" -->for '<!-- TMPL_VAR NAME="query_desc" -->'<!-- /TMPL_IF --><!-- TMPL_IF NAME="limit_desc" -->&nbsp;with limit(s):&nbsp;'<!-- TMPL_VAR NAME="limit_desc" -->'<!-- /TMPL_IF --></title>
+     <link>http://<!-- TMPL_VAR NAME="OPACBaseURL" -->/cgi-bin/koha/opac-search.pl?q=<!-- TMPL_VAR name="query_cgi" ESCAPE="HTML" --><!-- TMPL_VAR NAME="limit_cgi"  ESCAPE="HTML" -->&amp;format=rss2</link>
+     <description> Search results <!-- TMPL_IF NAME="query_desc" -->for '<!-- TMPL_VAR NAME="query_desc" -->'<!-- /TMPL_IF --><!-- TMPL_IF NAME="limit_desc" -->&nbsp;with limit(s):&nbsp;'<!-- TMPL_VAR NAME="limit_desc" -->'<!-- /TMPL_IF --> at <!-- TMPL_VAR NAME="LibraryName" --></description>
+     <opensearch:totalResults><!-- TMPL_VAR NAME="total" --></opensearch:totalResults>
+     <opensearch:startIndex><!-- TMPL_VAR NAME="page" --></opensearch:startIndex>
+     <opensearch:itemsPerPage><!-- TMPL_VAR NAME="count" --></opensearch:itemsPerPage>
+     <atom:link rel="search" type="application/opensearchdescription+xml" href="/cgi-bin/koha/opac-search.pl?format=opensearchdescription"/>
+     <opensearch:Query role="request" searchTerms="<!-- TMPL_VAR NAME="query_desc" --> <!-- TMPL_VAR NAME="limit_desc" -->" startPage="<!-- TMPL_VAR NAME="page" -->" />
+        <!-- TMPL_LOOP NAME="SEARCH_RESULTS" -->
+     <item>
+       <title><!-- TMPL_VAR NAME="title" --></title>
+       <link>http://<!-- TMPL_VAR NAME="OPACBaseURL" -->/cgi-bin/koha/opac-detail.pl?biblionumber=<!-- TMPL_VAR NAME="biblionumber" --></link>
+       <description>
+               <!-- TMPL_IF name="pages" -->- <!-- TMPL_VAR name="pages" --><!-- /TMPL_IF -->
+       </description>
+     </item>
+        <!-- /TMPL_LOOP -->
+   </channel>
+</rss>
+<!-- /TMPL_IF -->
+
+<!-- TMPL_IF NAME="atom" -->
+<feed xmlns="http://www.w3.org/2005/Atom" 
+       xmlns:opensearch="http://a9.com/-/spec/opensearch/1.1/">
+   <title><!-- TMPL_VAR NAME="LibraryName" --> Search <!-- TMPL_IF NAME="query_desc" -->for '<!-- TMPL_VAR NAME="query_desc" -->'<!-- /TMPL_IF --><!-- TMPL_IF NAME="limit_desc" -->&nbsp;with limit(s):&nbsp;'<!-- TMPL_VAR NAME="limit_desc" -->'<!-- /TMPL_IF --></title>
+    <link href="http://<!-- TMPL_VAR NAME="OPACBaseURL" -->/cgi-bin/koha/opac-search.pl?q=<!-- TMPL_VAR name="query_cgi" ESCAPE="HTML" --><!-- TMPL_VAR NAME="limit_cgi"  ESCAPE="HTML" -->&amp;format=rss2"/>
+   <updated><!-- TMPL_VAR NAME="timestamp" --></updated>
+   <author> 
+     <name><!-- TMPL_VAR NAME="LibraryName" --></name>
+   </author> 
+   <!-- <id>urn:uuid:60a76c80-d399-11d9-b93C-0003939e0af6</id> -->
+   <opensearch:totalResults><!-- TMPL_VAR NAME="total" --></opensearch:totalResults>
+   <opensearch:startIndex><!-- TMPL_VAR NAME="page" --></opensearch:startIndex>
+   <opensearch:itemsPerPage><!-- TMPL_VAR NAME="count" --></opensearch:itemsPerPage>
+   <opensearch:Query role="request" searchTerms="<!-- TMPL_VAR NAME="query_desc" --> <!-- TMPL_VAR NAME="limit_desc" -->" startPage="<!-- TMPL_VAR NAME="page" -->" />
+   <link rel="alternate" href="http://<!-- TMPL_VAR NAME="OPACBaseURL" -->/cgi-bin/koha/opac-search.pl?q=<!-- TMPL_VAR name="query_cgi" ESCAPE="HTML" --><!-- TMPL_VAR NAME="limit_cgi"  ESCAPE="HTML" -->pw=<!-- TMPL_VAR NAME="page" -->" type="text/html"/>
+   <link rel="self" href="http://<!-- TMPL_VAR NAME="OPACBaseURL" -->/cgi-bin/koha/opac-search.pl?q=<!-- TMPL_VAR name="query_cgi" ESCAPE="HTML" --><!-- TMPL_VAR NAME="limit_cgi"  ESCAPE="HTML" -->pw=<!-- TMPL_VAR NAME="page" -->&amp;format=atom" type="application/atom+xml"/>
+   <link rel="first" href="http://<!-- TMPL_VAR NAME="OPACBaseURL" -->/cgi-bin/koha/opac-search.pl?q=<!-- TMPL_VAR name="query_cgi" ESCAPE="HTML" --><!-- TMPL_VAR NAME="limit_cgi"  ESCAPE="HTML" -->pw=1&amp;format=atom" type="application/atom+xml"/>
+   <link rel="previous" href="http://<!-- TMPL_VAR NAME="OPACBaseURL" -->/cgi-bin/koha/opac-search.pl?q=<!-- TMPL_VAR name="query_cgi" ESCAPE="HTML" --><!-- TMPL_VAR NAME="limit_cgi"  ESCAPE="HTML" -->pw=2&amp;format=atom" type="application/atom+xml"/>
+   <link rel="next" href="http://<!-- TMPL_VAR NAME="OPACBaseURL" -->/cgi-bin/koha/opac-search.pl?q=<!-- TMPL_VAR name="query_cgi" ESCAPE="HTML" --><!-- TMPL_VAR NAME="limit_cgi"  ESCAPE="HTML" -->pw=4&amp;format=atom" type="application/atom+xml"/>
+   <link rel="last" href="http://<!-- TMPL_VAR NAME="OPACBaseURL" -->/cgi-bin/koha/opac-search.pl?q=<!-- TMPL_VAR name="query_cgi" ESCAPE="HTML" --><!-- TMPL_VAR NAME="limit_cgi"  ESCAPE="HTML" -->pw=42299&amp;format=atom" type="application/atom+xml"/>
+   <link rel="search" type="application/opensearchdescription+xml" href="http://<!-- TMPL_VAR NAME="OPACBaseURL" -->/cgi-bin/koha/opac-search.pl?format=opensearchdescription"/>
+
+   <!-- TMPL_LOOP NAME="SEARCH_RESULTS" -->
+   <entry>
+     <title><!-- TMPL_VAR NAME="title" --></title>
+     <link href="http://<!-- TMPL_VAR NAME="OPACBaseURL" -->/cgi-bin/koha/opac-detail.pl?biblionumber=<!-- TMPL_VAR NAME="biblionumber" -->"/>
+     <!-- <id>urn:uuid:1225c695-cfb8-4ebb-aaaa-80da344efa6a</id> -->
+     <updated><!-- TMPL_VAR NAME="timestamp" --></updated>
+     <content type="text"><!-- put content here -->
+     </content>
+   </entry>
+   <!-- /TMPL_LOOP -->
+ </feed>
+<!-- /TMPL_IF -->
+
+<!-- /TMPL_IF -->
index 5509058..cac0738 100644 (file)
@@ -6,8 +6,8 @@
     You did not specify any search criteria.
 <!-- /TMPL_IF -->
 <!-- TMPL_INCLUDE NAME="doc-head-close.inc" -->
-<link rel="alternate" type="application/rss+xml" title="Koha - RSS"
-href="/cgi-bin/koha/opac-rss.pl?<!-- TMPL_VAR name="query_cgi" ESCAPE="HTML" --><!-- TMPL_VAR NAME="limit_cgi"  ESCAPE="HTML" -->" />
+<link rel="alternate" type="application/rss+xml" title="<!-- TMPL_VAR NAME="LibraryName" --> Search RSS Feed" href="http://<!-- TMPL_VAR NAME="OPACBaseURL" -->?q=<!-- TMPL_VAR name="query_cgi" ESCAPE="HTML" --><!-- TMPL_VAR NAME="limit_cgi"  ESCAPE="HTML" -->&=10&amp;startPage=1" />
+
 <script type="text/javascript" src="<!-- TMPL_VAR name="themelang" -->/lib/jquery/plugins/jquery.checkboxes.pack.js"></script>
 <script type="text/javascript">
 //<![CDATA[
index 8e43da8..6133d62 100755 (executable)
@@ -37,11 +37,14 @@ my $template_type;
 my @params = $cgi->param("limit");
 
 my $build_grouped_results = C4::Context->preference('OPACGroupResults');
-if ($build_grouped_results) {
+if  ($cgi->param("format") =~ /(rss|atom|opensearchdescription)/) {
+       $template_name = 'opac-opensearch.tmpl';
+}
+elsif ($build_grouped_results) {
     $template_name = 'opac-results-grouped.tmpl';
-} 
+}
 elsif ((@params>=1) || ($cgi->param("q")) || ($cgi->param('multibranchlimit')) || ($cgi->param('limit-yr')) ) {
-    $template_name = 'opac-results.tmpl';
+       $template_name = 'opac-results.tmpl';
 }
 else {
     $template_name = 'opac-advsearch.tmpl';
@@ -55,6 +58,15 @@ else {
     authnotrequired => 1,
     }
 );
+if ($cgi->param("format") eq 'rss2') {
+       $template->param("rss2" => 1);
+}
+elsif ($cgi->param("format") eq 'atom') {
+       $template->param("atom" => 1);
+}
+elsif ($cgi->param("format") eq 'opensearchdescription') {
+       $template->param("opensearchdescription" => 1);
+}
 if (C4::Context->preference("marcflavour") eq "UNIMARC" ) {
     $template->param('UNIMARC' => 1);
 }
@@ -282,7 +294,7 @@ my $count = C4::Context->preference('OPACnumSearchResults') || 20;
 my $results_per_page = $params->{'count'} || $count;
 my $offset = $params->{'offset'} || 0;
 my $page = $cgi->param('page') || 1;
-#my $offset = ($page-1)*$results_per_page;
+$offset = ($page-1)*$results_per_page if $page>1;
 my $hits;
 my $expanded_facet = $params->{'expand'};