Bug 7843: Create an RSS feed for news in Opac
authorViktor Sarge <viktor.sarge@regionhalland.se>
Sun, 8 Feb 2015 19:41:55 +0000 (19:41 +0000)
committerTomas Cohen Arazi <tomascohen@gmail.com>
Thu, 30 Apr 2015 19:12:25 +0000 (16:12 -0300)
Test plan:
* Install the patch
* Make shure there is news in the Opac
* Go to the Opac (opac-main.pl)
* Make shure you see an RSS icon below the news and a short text.
* Click the RSS icon and verify that you get an RSS feed that validates.

Signed-off-by: Chris Cormack <chris@bigballofwax.co.nz>
I took the liberty of fixing the copyright statement when signing it off

Signed-off-by: Pierre <tredok.pierre@gmail.com>
Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@gmail.com>
koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-main.tt
koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-news-rss.tt [new file with mode: 0644]
opac/opac-news-rss.pl [new file with mode: 0755]

index 2329b74..5dd7955 100644 (file)
                     </div>
                 [% END %]
             </div>
+            <div id="rssnews-container">
+                <a href="opac-news-rss.pl"><img src="/opac-tmpl/bootstrap/images/feed-icon-16x16.png"></a>
+                RSS for the librarys general newsfeed.
+            </div>
         [% END %]
 
         [% IF ( display_daily_quote && daily_quote ) %]
diff --git a/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-news-rss.tt b/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-news-rss.tt
new file mode 100644 (file)
index 0000000..2602226
--- /dev/null
@@ -0,0 +1,15 @@
+<?xml version="1.0"?>
+<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
+   <channel>
+      <atom:link href="[% OPACBaseURL %]/cgi-bin/koha/opac-main.pl" rel="self" type="application/rss+xml" />
+      <title>News from [% IF ( LibraryNameTitle ) %][% LibraryNameTitle %][% ELSE %]the library[% END %]</title>
+      <link>[% OPACBaseURL %]/cgi-bin/koha/opac-main.pl</link>
+      <description></description>
+      [% FOREACH newsitem IN koha_news %]
+      <item>
+        <title>[% newsitem.title |html %]</title>
+        <description>[% newsitem.new |html %]</description>
+      </item>
+      [% END %]
+   </channel>
+</rss>
diff --git a/opac/opac-news-rss.pl b/opac/opac-news-rss.pl
new file mode 100755 (executable)
index 0000000..19c6ebf
--- /dev/null
@@ -0,0 +1,67 @@
+#!/usr/bin/perl
+
+# This file is part of Koha.
+#
+# Copyright (C) 2015  Viktor Sarge
+#
+# Koha is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# Koha is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with Koha; if not, see <http://www.gnu.org/licenses>.
+
+
+use Modern::Perl;
+use CGI;
+use C4::Auth;    # get_template_and_user
+use C4::Output;
+use C4::NewsChannels;    # GetNewsToDisplay
+use C4::Languages qw(getTranslatedLanguages accept_language);
+
+use strict;
+use warnings;
+
+
+my $input = new CGI;
+my $dbh   = C4::Context->dbh;
+
+my ( $template, $borrowernumber, $cookie ) = get_template_and_user(
+    {
+        template_name   => "opac-news-rss.tt",
+        type            => "opac",
+        query           => $input,
+        authnotrequired => ( C4::Context->preference("OpacPublic") ? 1 : 0 ),
+        flagsrequired   => { borrow => 1 },
+    }
+);
+
+my $casAuthentication = C4::Context->preference('casAuthentication');
+$template->param(
+    casAuthentication   => $casAuthentication,
+);
+
+# Get the news to display
+# use cookie setting for language, bug default to syspref if it's not set
+my ($theme, $news_lang, $availablethemes) = C4::Templates::themelanguage(C4::Context->config('opachtdocs'),'opac-main.tt','opac',$input);
+
+my $homebranch;
+
+if (C4::Context->userenv) {
+    $homebranch = C4::Context->userenv->{'branch'};
+}
+my $all_koha_news   = &GetNewsToDisplay($news_lang,$homebranch);
+my $koha_news_count = scalar @$all_koha_news;
+
+$template->param(
+    koha_news           => $all_koha_news,
+    koha_news_count     => $koha_news_count,
+);
+
+output_html_with_http_headers $input, $cookie, $template->output;