Koha/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-main.tt
Aleisha Amohia 368dfdc7d0
Bug 12029: Ability for patrons to dismiss OPAC messages
This enhancement adds the ability for patrons to dismiss an OPAC
message, marking it as read to remove it from their summary page.

To test:
1) Update database and restart services
2) Log into the staff interface and go to your patron account
3) Click the Add message button
4) Add a message for the OPAC and Save
5) Log into the OPAC. Note there is a message on the homepage saying you
have a message. Go to your user summary and confirm the message
displays.
6) Click the button to dismiss the message. A confirmation box should
pop up - hitting Cancel should stop the action.
7) Dismiss the message again and this time Confirm. Make sure the
message is gone from the OPAC user summary and from the homepage.
8) Confirm tests pass t/db_dependent/Koha/Patron/Messages.t
9) Create a few more messages for the OPAC
10) Log into the OPAC and dismiss one of the messages
11) Confirm the count of unread messages on the OPAC home page is
correct

Sponsored-by: Koha-US
Signed-off-by: Christopher Brannon <cbrannon@cdalibrary.org>

Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
2023-04-20 15:48:46 -03:00

325 lines
19 KiB
Text

[% USE raw %]
[% USE Koha %]
[% USE KohaDates %]
[% USE Branches %]
[% USE Categories %]
[% USE Price %]
[% USE AdditionalContents %]
[% USE AuthClient %]
[% PROCESS 'i18n.inc' %]
[% SET OpacNav = AdditionalContents.get( location => "OpacNav", lang => lang, library => logged_in_user.branchcode || default_branch, blocktitle => 0 ) %]
[% SET OpacNavBottom = AdditionalContents.get( location => "OpacNavBottom", lang => lang, library => logged_in_user.branchcode || default_branch, blocktitle => 0 ) %]
[% SET OpacNavRight = AdditionalContents.get( location => "OpacNavRight", lang => lang, library => logged_in_user.branchcode || default_branch ) %]
[% SET OpacMainUserBlock = AdditionalContents.get( location => "OpacMainUserBlock", lang => lang, library => logged_in_user.branchcode || default_branch ) %]
[% SET OpacLoginInstructions = AdditionalContents.get( location => "OpacLoginInstructions", lang => lang, library => branchcode || default_branch ) %]
[% INCLUDE 'doc-head-open.inc' %]
<title>[% IF ( LibraryNameTitle ) %][% LibraryNameTitle | html %][% ELSE %]Koha online[% END %] catalog</title>
[% INCLUDE 'doc-head-close.inc' %]
[% BLOCK cssinclude %][% END %]
</head>
[% INCLUDE 'bodytag.inc' bodyid='opac-main' %]
[% INCLUDE 'masthead.inc' %]
<div class="main">
<nav id="breadcrumbs" aria-label="Breadcrumb" class="breadcrumbs">
<ol class="breadcrumb">
[% IF news_item %]
<li class="breadcrumb-item">
<a href="/cgi-bin/koha/opac-main.pl">Home</a>
</li>
<li class="breadcrumb-item active">
<a href="#" aria-current="page">[% news_item.title | html %]</a>
</li>
[% ELSE %]
<li class="breadcrumb-item active">
<a href="#" aria-current="page">Home</a>
</li>
[% END %]
</ol>
</nav> <!-- /#breadcrumbs -->
[% IF Koha.Preference( 'opacuserlogin' ) == 1 %]
[% IF ( loggedinusername ) %]
<div id="loggedin" class="container-fluid">
[% ELSE %]
<div id="notloggedin" class="container-fluid">
[% END %]
[% ELSE %]
<div id="notloggedin" class="container-fluid">
[% END %]
<div class="row">
[% IF ( OpacNav || OpacNavBottom ) %]
<div class="col-12 col-lg-2 order-3 order-lg-1">
<div id="navigation">
[% INCLUDE 'navigation.inc' %]
</div>
</div>
[% END %]
[% IF ( OpacNav || OpacNavBottom ) && (Koha.Preference( 'opacuserlogin' ) == 1 || OpacNavRight) %]
[% # Three-column layout with right and left sidebars %]
<div class="col-12 col-lg-7 order-md-1 maincontent">
[% ELSIF (Koha.Preference( 'opacuserlogin' ) == 1 || OpacNavRight) %]
[% # Two-column layout with right sidebar %]
<div class="col-12 col-lg-9 order-md-1 maincontent">
[% ELSIF ( OpacNav || OpacNavBottom ) %]
<div class="col-12 col-lg-10 order-md-1 maincontent">
[% ELSE %]
<div class="col order-md-1 maincontent">
[% END %]
<h1 class="sr-only">Koha home</h1>
[% IF Koha.Preference( 'OpacNewsLibrarySelect' ) %]
[% UNLESS news_item %]
<form id="news-branch-select" class="form-inline" name="news-branch-select" method="get" action="/cgi-bin/koha/opac-main.pl">
<legend class="sr-only">News</legend>
<label for="news-branch">Display news for: </label>
<select id="news-branch" name="branch">
[% IF ( branchcode == "" ) %]
<option value="" selected="selected">System-wide only</option>
[% ELSE %]
<option value="">System-wide only</option>
[% END %]
[% PROCESS options_for_libraries libraries => Branches.all( selected => branchcode, unfiltered => 1, ) %]
</select>
</form>
[% END %]
[% END %]
[% IF koha_news.count %]
[% IF single_news_error %]
<div class="alert alert-error">
This news item does not exist.
</div>
[% ELSE %]
<div id="news" class="newscontainer">
[% SET show_author = Koha.Preference('NewsAuthorDisplay') == 'opac' || Koha.Preference('NewsAuthorDisplay') == 'both' %]
[% FOREACH koha_new IN koha_news %]
[% IF koha_new.category == 'news' %]
<div class="newsitem">
<h4 class="newsheader">
[% IF ( news_item ) %]
[% koha_new.title | html %]
[% ELSE %]
<a name="newsitem[% koha_new.idnew | html %]" href="/cgi-bin/koha/opac-main.pl?news_id=[% koha_new.idnew | uri %]">[% koha_new.title | html %]</a>
[% END %]
</h4>
<div class="newsbody">[% koha_new.content | $raw %]</div>
<div class="newsfooter">
Published on [% koha_new.published_on | $KohaDates %]
[% IF ( show_author && koha_new.author ) %]
by <span class="newsauthor">[% INCLUDE 'patron-title.inc' patron=koha_new.author %]</span>
[% END %]
[% IF ( news_item ) %]
&bull; <a href="/cgi-bin/koha/opac-main.pl">Show all news</a>
[% END %]
</div>
</div>
[% END %]
[% END %]
[% UNLESS 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 %]">
<i class="fa fa-rss" aria-hidden="true"></i>
[% IF Branches.all.size == 1 %]
[% IF branchcode %]
<span>RSS feed for [% Branches.GetName( branchcode ) | html %] library news</span>
[% ELSE %]
<span>RSS feed for library news</span>
[% END %]
[% ELSE %]
[% IF branchcode %]
<span>RSS feed for [% Branches.GetName( branchcode ) | html %] and system-wide library news</span>
[% ELSE %]
<span>RSS feed for system-wide library news</span>
[% END %]
[% END %]
</a>
</div>
[% END %]
</div>
[% END # /IF single_news_error %]
[% ELSE %] <!-- koha news -->
[% IF Koha.Preference( 'OpacNewsLibrarySelect' ) %]
<div id="news" class="newscontainer">
<div class="newsitem">
<div class="newsbody">No news to display.</div>
<div class="newsfooter"></div>
</div>
</div>
[% END %]
[% END # IF koha_news %]
[% UNLESS news_item # Don't show under single news item %]
[% IF ( daily_quote ) %]
<div id="daily-quote">
<h2>Quote of the day</h2>
<div>
<span id="daily-quote-text">[% daily_quote.text | html %]</span><span id="daily-quote-sep"> ~ </span><span id="daily-quote-source">[% daily_quote.source | html %]</span>
</div>
</div>
[% END %]
[% IF ( OpacMainUserBlock ) %]
[% PROCESS koha_news_block news => OpacMainUserBlock %]
[% END %]
[% END %]
</div> <!-- / .col 6/8 -->
[% IF ( ( Koha.Preference( 'opacuserlogin' ) == 1 ) || OpacNavRight ) %]
<div class="col-12 col-lg-3 order-md-2">
[% IF Koha.Preference( 'opacuserlogin' ) == 1 %]
[% UNLESS ( loggedinusername ) %]
[% UNLESS ( casAuthentication || shibbolethAuthentication || Koha.Preference('opacShibOnly') ) %]
<div id="login">
<form action="/cgi-bin/koha/opac-user.pl" method="post" name="auth" id="auth" autocomplete="off">
<input type="hidden" name="koha_login_context" value="opac" />
<fieldset class="brief">
<legend>Log in to your account:</legend>
[% IF ( Koha.Preference('GoogleOpenIDConnect') == 1 ) %]
<a href="/cgi-bin/koha/svc/auth/googleopenidconnect" class="btn btn-light" id="openid_connect"><i class="fa fa-google" aria-hidden="true"></i> Log in with Google</a>
<p>If you do not have a Google account, but do have a local account, you can still log in: </p>
[% END # /IF GoogleOpenIDConnect %]
[% SET identity_providers = AuthClient.get_providers('opac') %]
[% IF ( ! identity_providers.empty ) %]
[% FOREACH provider IN identity_providers %]
<p class="clearfix">
<a href="[% provider.url | url %]" class="btn btn-light col-md-12" id="provider_[% provider.code | html %]">
[% IF provider.icon_url %]
<img src="[% provider.icon_url | url %]" style="max-height: 20px; max-width: 20px;"/>
[% ELSE %]
<i class="fa fa-user" aria-hidden="true"></i>
[% END %]
Log in with [% provider.description | html %]
</a>
</p>
[% END %]
<hr/>
<p>If you do not have an external account, but do have a local account, you can still log in: </p>
[% END # /IF identity_providers.size %]
<div class="local-login">
<label for="userid">Login:</label>
<input class="form-control" type="text" id="userid" name="userid" autocomplete="off" />
<label for="password">Password:</label>
<input class="form-control" type="password" id="password" name="password" autocomplete="off" />
<fieldset class="action">
<input type="submit" value="Log in" class="btn btn-primary" />
</fieldset>
</div>
[% IF ( OpacLoginInstructions ) %]
<div id="nologininstructions-main" class="nologininstructions">
[% PROCESS koha_news_block news => OpacLoginInstructions %]
</div>
[% END %]
[% IF Koha.Preference('OpacPasswordChange') && Categories.can_any_reset_password %]
<div id="forgotpassword-main" class="forgotpassword">
<p><a href="/cgi-bin/koha/opac-password-recovery.pl">Forgot your password?</a></p>
</div>
[% END %]
[% IF PatronSelfRegistration && PatronSelfRegistrationDefaultCategory %]
<div id="patronregistration-main" class="patronregistration">
<p>Don't have an account? <a href="/cgi-bin/koha/opac-memberentry.pl">Register here.</a></p>
</div>
[% END %]
</fieldset>
</form>
</div> <!-- /#login -->
[% END # /casAuthentication %]
[% ELSE %]
[% IF Koha.Preference('OPACUserSummary') && dashboard_info %]
<div id="user_summary">
<h2>User summary</h2>
<p>Welcome, <a href="/cgi-bin/koha/opac-user.pl"><span class="loggedinusername">[% INCLUDE 'patron-title.inc' patron = logged_in_user %]</span></a></p>
<ul id="user_summary_shortcuts">
[% IF checkouts && checkouts > 0 %]
<li>
<a href="/cgi-bin/koha/opac-user.pl#opac-user-checkouts">
<span class="user_checkouts_count count_label">[% checkouts | html %]</span>
[% tn('checkout', 'checkouts', checkouts ) | html %]
</a>
</li>
[% END %]
[% IF overdues && overdues > 0 %]
<li>
<a href="/cgi-bin/koha/opac-user.pl#opac-user-overdues">
<span class="user_overdues_count count_label">[% overdues | html %]</span>
[% tn('overdue', 'overdues', overdues ) | html %]
</a>
</li>
[% END %]
[% IF holds_pending && holds_pending > 0 %]
<li>
<a href="/cgi-bin/koha/opac-user.pl#opac-user-holds">
<span class="user_holds_pending_count count_label">[% holds_pending | html %]</span>
[% tn('hold pending', 'holds pending', holds_pending ) | html %]
</a>
</li>
[% END %]
[% IF holds_waiting && holds_waiting > 0 %]
<li>
<a href="/cgi-bin/koha/opac-user.pl#opac-user-holds">
<span class="user_holds_waiting_count count_label">[% holds_waiting | html %]</span>
[% tn('hold waiting', 'holds waiting', holds_waiting ) | html %]
</a>
</li>
[% END %]
[% IF total_owing && total_owing > 0 %]
<li>
<a href="/cgi-bin/koha/opac-account.pl">
<span class="user_fines_count count_label">[% total_owing | $Price with_symbol => 1 %]</span>
due in fines and charges
</a>
</li>
[% END %]
[% IF patron_messages && patron_messages.filter_by_unread.count > 0 || opacnote %]
[% IF opacnote %]
<li>
<a href="/cgi-bin/koha/opac-user.pl">
<span class="count_label">[% patron_messages.filter_by_unread.count + 1 | html %]</span>
[% tn('message', 'messages', patron_messages.filter_by_unread.count + 1 ) | html %]
</a>
</li>
[% ELSE %]
<li>
<a href="/cgi-bin/koha/opac-user.pl">
<span class="count_label">[% patron_messages.filter_by_unread.count | html %]</span>
[% tn('message', 'messages', patron_messages.filter_by_unread.count ) | html %]
</a>
</li>
[% END %]
[% END %]
[% IF savings %]
<li>
<a href="/cgi-bin/koha/opac-user.pl">
<span class="count_label">[% savings | $Price with_symbol => 1 %]</span>
total savings
</a>
</li>
[% END %]
</ul>
</div>
[% END %]
[% END # /loggedinusername %]
[% END # /opacuserlogin %]
[% PROCESS koha_news_block news => OpacNavRight %]
</div> <!-- / .col -->
[% END # /opacuserlogin || OpacNavRight %]
</div> <!-- /.container-fluid -->
</div> <!-- /.row -->
</div> <!-- /.main -->
[% INCLUDE 'opac-bottom.inc' %]
[% BLOCK jsinclude %][% END %]