Bug 22318: Extend Koha news feature to include other content areas
authorOwen Leonard <oleonard@myacpl.org>
Thu, 14 Feb 2019 15:46:24 +0000 (15:46 +0000)
committerNick Clemens <nick@bywatersolutions.com>
Thu, 18 Apr 2019 10:47:03 +0000 (10:47 +0000)
This patch lays the groundwork for using the Koha news tool to replace
OPAC system preferences which embed HTML content in the Koha interface.
This will allow multiple translations of these content blocks to be
created.

This adds a new template plugin, KohaNews. It has a single subroutine,
get(), which takes three parameters:

 - "location" -- the area of the template where the content will appear.
   This will correspond to the system preference it replaces:
   OpacMainUserBlock, OpacNavRight, etc.
 - "lang" -- the user's currently-selected language.
 - "library" -- the user's home library (if they are logged in)

A new "koha_news_block" block is added to the OPAC templates'
html_helpers include. The content area is activated in the template
using this syntax:

[% PROCESS koha_news_block news => KohaNews.get( location =>
"OpacNavRight", lang => news_lang, library => branchcode ) %]

Signed-off-by: Michal Denar <black23@gmail.com>

Signed-off-by: Michal Denar <black23@gmail.com>

Signed-off-by: Josef Moravec <josef.moravec@gmail.com>
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>

Signed-off-by: Nick Clemens <nick@bywatersolutions.com>

Koha/Template/Plugin/KohaNews.pm [new file with mode: 0644]
koha-tmpl/opac-tmpl/bootstrap/en/includes/html_helpers.inc

diff --git a/Koha/Template/Plugin/KohaNews.pm b/Koha/Template/Plugin/KohaNews.pm
new file mode 100644 (file)
index 0000000..49299f6
--- /dev/null
@@ -0,0 +1,73 @@
+package Koha::Template::Plugin::KohaNews;
+
+# Copyright ByWater Solutions 2012
+# Copyright BibLibre 2014
+# Parts copyright Athens County Public Libraries 2019
+
+# This file is part of Koha.
+#
+# 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 Template::Plugin;
+use base qw( Template::Plugin );
+
+use C4::Koha;
+use C4::Context;
+use C4::NewsChannels; # GetNewsToDisplay
+
+sub get {
+    my ( $self, $params ) = @_;
+
+    my $display_location = $params->{location};
+    my $lang = $params->{lang};
+    my $library = $params->{library} || "";
+    my $news_lang;
+
+    if( !$display_location ){
+        $news_lang = $lang;
+    } else {
+        $news_lang = $display_location."_".$lang;
+    }
+
+    my $content = &GetNewsToDisplay( $news_lang, $library );
+
+    return $content;
+}
+
+1;
+
+=head1 NAME
+
+Koha::Template::Plugin::KohaNews - TT Plugin for displaying Koha news
+
+=head1 SYNOPSIS
+
+[% USE KohaNews %]
+
+[% KohaNews.get() %]
+
+=head1 ROUTINES
+
+=head2 get
+
+In a template, you can get the all categories with
+the following TT code: [% KohaNews.get() %]
+
+=head1 AUTHOR
+
+Owen Leonard <oleonard@myacpl.org>
+
+=cut
\ No newline at end of file
index 2c7d349..8cb9d2f 100644 (file)
@@ -7,3 +7,16 @@
         [% END%]
     [% END %]
 [% END %]
+
+[% BLOCK koha_news_block %]
+    [% IF ( news.size > 0 ) %]
+        [% FOREACH n IN news %]
+            <div class="[% n.lang | html %]_item">
+                [% IF ( n.title ) %]
+                    <h4 class="[% n.lang | html %]_header">[% n.title | html %]</h4>
+                [% END %]
+                <div class="[% n.lang | html %]_body">[% n.content | $raw %]</div>
+            </div>
+        [% END %]
+    [% END %]
+[% END %]