Bug 14272: Show single news item [alternative patch]
authorAleisha Amohia <aleishaamohia@hotmail.com>
Wed, 13 Jun 2018 02:27:13 +0000 (02:27 +0000)
committerroot <root@f1ebe1bec408>
Tue, 19 Feb 2019 13:52:14 +0000 (13:52 +0000)
This is a new patch for this bug that shows a single news item on the
OPAC using Koha Objects (Koha::News).

To test:
1) Go to Tools -> News on staff interface, make a news item to show on
the OPAC
2) Go to OPAC
3) Notice news item shows and title cannot be clicked
4) Apply patch, refresh page
5) Notice title is now a link. Click title
6) Confirm breadcrumbs shows title of news item
7) Confirm RSS feed and OpacMainUserBlock are not visible
8) In the URL, change the news_id param to an ID that does not exist
9) Confirm that an appropriate error message shows

Sponsored-by: Catalyst IT
Signed-off-by: Owen Leonard <oleonard@myacpl.org>
Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>
Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>

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

koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-main.tt
opac/opac-main.pl

index 35812fd..f3378eb 100644 (file)
@@ -1,5 +1,6 @@
 [% USE raw %]
 [% USE Koha %]
+[% USE KohaDates %]
 [% USE Branches %]
 [% USE Price %]
 [% INCLUDE 'doc-head-open.inc' %]
 
 <div class="main">
     <ul class="breadcrumb">
-        <li><a href="#">Home</a></li>
+        <li><a href="/cgi-bin/koha/opac-main.pl">Home</a>
+        [% IF news_item %]
+            <span class="divider">&rsaquo;</span></li>
+            <li>[% news_item.title %]</li>
+        [% END %]
+        </li>
     </ul>
 
     [% IF Koha.Preference( 'opacuserlogin' ) == 1 %]
                 </form>
             [% END %]
 
-        [% IF ( koha_news_count ) %]
+        [% IF ( koha_news ) %]
+
+
+            [% IF single_news_error %]
+
+                <div class="alert alert-error">
+                    This news item does not exist.
+                </div>
+
+            [% ELSE %]
 
             <div id="news" class="newscontainer">
                 [% SET newsdisp = ( Koha.Preference('NewsAuthorDisplay') ) %]
                 [% FOREACH koha_new IN koha_news %]
                     <div class="newsitem">
-                        <a name="newsitem[% koha_new.idnew | html %]"></a><h4 class="newsheader">[% koha_new.title | html %]</h4>
+                        <a name="newsitem[% koha_new.idnew | html %]" href="/cgi-bin/koha/opac-main.pl?news_id=[% koha_new.idnew %]"><h4 class="newsheader">[% koha_new.title | html %]</h4></a>
                         <div class="newsbody">[% koha_new.content | $raw %]</div>
-                        <div class="newsfooter">(published on [% koha_new.newdate | html %][% IF ( (newsdisp == 'opac' || newsdisp == 'both') && koha_new.borrowernumber ) %] by <span class="newsauthor_title">[% koha_new.author_title | html %] </span>[% koha_new.author_firstname | html %] [% koha_new.author_surname | html %][% END %])</div>
+                        <div class="newsfooter">(published on [% koha_new.timestamp | $KohaDates with_hours = 1 | html %][% IF ( (newsdisp == 'opac' || newsdisp == 'both') && koha_new.borrowernumber ) %] by <span class="newsauthor_title">[% koha_new.author_title | html %] </span>[% koha_new.author_firstname | html %] [% koha_new.author_surname | html %][% END %])</div>
                     </div>
                 [% END %]
             </div>
+
+            [% END %]
+
+            [% UNLESS news_item %] <!-- If single news item -->
+
             <div id="rssnews-container">
                 <!-- Logged in users have a branch code or it could be explicitly set -->
                 <a href="[% OPACBaseURL | url %]/cgi-bin/koha/opac-news-rss.pl?branchcode=[% branchcode | uri %]"><img src="[% interface | html %]/[% theme | html %]/images/feed-icon-16x16.png"></a>
         [% IF ( OpacMainUserBlock ) %]<div id="opacmainuserblock">[% OpacMainUserBlock | $raw %]</div>[% END %]
         </div> <!-- / .span 7/9 -->
 
+        [% END %] <!-- If single news item -->
+
         [% IF ( ( Koha.Preference( 'opacuserlogin' ) == 1 ) || OpacNavRight ) %]
             <div class="span3">
                 [% IF Koha.Preference( 'opacuserlogin' ) == 1 %]
index 2398b6a..9b620cf 100755 (executable)
@@ -29,6 +29,7 @@ use C4::Members;
 use C4::Overdues;
 use Koha::Checkouts;
 use Koha::Holds;
+use Koha::News;
 
 my $input = new CGI;
 my $dbh   = C4::Context->dbh;
@@ -61,8 +62,21 @@ if (defined $input->param('branch') and length $input->param('branch')) {
 elsif (C4::Context->userenv and defined $input->param('branch') and length $input->param('branch') == 0 ){
    $homebranch = "";
 }
-my $all_koha_news   = &GetNewsToDisplay($news_lang,$homebranch);
-my $koha_news_count = scalar @$all_koha_news;
+
+my $news_id = $input->param('news_id');
+my (@all_koha_news, $koha_news_count);
+
+if (defined $news_id){
+    @all_koha_news = Koha::News->search({ idnew => $news_id });
+    $koha_news_count = 1;
+    if (scalar @all_koha_news > 0){
+        $template->param( news_item => @all_koha_news );
+    } else {
+        $template->param( single_news_error => 1 );
+    }
+} else {
+    @all_koha_news   = &GetNewsToDisplay($news_lang,$homebranch);
+}
 
 my $quote = GetDailyQuote();   # other options are to pass in an exact quote id or select a random quote each pass... see perldoc C4::Koha
 
@@ -90,8 +104,7 @@ if ( $patron ) {
 }
 
 $template->param(
-    koha_news           => $all_koha_news,
-    koha_news_count     => $koha_news_count,
+    koha_news           => @all_koha_news,
     branchcode          => $homebranch,
     display_daily_quote => C4::Context->preference('QuoteOfTheDay'),
     daily_quote         => $quote,