}
my $borrowernumber;
+ my $patron;
if ($user) {
# It's possible for $user to be the borrowernumber if they don't have a
# userid defined (and are logging in through some other method, such
# as SSL certs against an email address)
- my $patron;
$borrowernumber = getborrowernumber($user) if defined($user);
if ( !defined($borrowernumber) && defined($user) ) {
$patron = Koha::Patrons->find( $user );
PatronSelfRegistration => C4::Context->preference("PatronSelfRegistration"),
PatronSelfRegistrationDefaultCategory => C4::Context->preference("PatronSelfRegistrationDefaultCategory"),
useDischarge => C4::Context->preference('useDischarge'),
+ routing_lists_exist => ( $patron and $patron->get_routinglists ),
);
$template->param( OpacPublic => '1' ) if ( $user || C4::Context->preference("OpacPublic") );
use Koha::Virtualshelves;
use Koha::Club::Enrollments;
use Koha::Account;
+use Koha::Subscription::Routinglists;
use base qw(Koha::Object);
my $overdue_items = $patron->get_overdues
-Return the overdued items
+Return the overdue items
=cut
);
}
+=head3 get_routinglists
+
+my @routinglists = $patron->get_routinglists
+
+Returns the routing lists a patron is subscribed to.
+
+=cut
+
+sub get_routinglists {
+ my ($self) = @_;
+ my @subscribed_routings = Koha::Subscription::Routinglists->search({ borrowernumber => $self->borrowernumber });
+ return @subscribed_routings;
+}
+
=head3 get_age
my $age = $patron->get_age
--- /dev/null
+package Koha::Subscription::Routinglist;
+
+#
+# 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, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+use Modern::Perl;
+
+use Carp;
+
+use Koha::Database;
+use Koha::Subscriptions;
+
+use base qw(Koha::Object);
+
+=head1 NAME
+
+Koha::Subscription::Routinglist - Koha subscription routing list object class
+
+=head1 API
+
+=head2 Class methods
+
+=cut
+
+=head3 subscription
+
+my $subscription = $routinglist->subscription
+
+Returns the subscription for a routing list.
+
+=cut
+
+sub subscription {
+ my ( $self ) = @_;
+ return scalar Koha::Subscriptions->find( $self->subscriptionid );
+}
+
+=head2 Internal methods
+
+=head3 _type
+
+=cut
+
+sub _type {
+ return 'Subscriptionroutinglist';
+}
+
+=head1 AUTHOR
+
+Katrin Fischer <katrin.fischer@bsz-bw.de>
+
+=cut
+
+1;
--- /dev/null
+package Koha::Subscription::Routinglists;
+
+#
+# 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, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+use Modern::Perl;
+
+use Carp;
+
+use Koha::Database;
+use Koha::Subscription::Routinglist;
+
+use base qw(Koha::Objects);
+
+=head1 NAME
+
+Koha::Subscription::Routinglists - Koha subscription routing lists object class
+
+=head1 API
+
+=head2 Class methods
+
+=cut
+
+=head2 Internal methods
+
+=head3 _type
+
+=cut
+
+sub _type {
+ return 'Subscriptionroutinglist';
+}
+
+=head3 object_class
+
+=cut
+
+sub object_class {
+ return 'Koha::Subscription::Routinglist';
+}
+
+=head1 AUTHOR
+
+Katrin Fischer <katrin.fischer@bsz-bw.de>
+
+=cut
+
+1;
<a href="/cgi-bin/koha/opac-shelves.pl?op=list&category=1">your lists</a></li>
[% END %]
+ [% IF Koha.Preference( 'RoutingSerials' ) && routing_lists_exist %]
+ [% IF ( routinglistsview ) %]
+ <li class="active">
+ [% ELSE %]
+ <li>
+ [% END %]
+ <a href="/cgi-bin/koha/opac-routing-lists.pl">your routing lists</a></li>
+ [% END %]
+
[% IF Koha.Preference( 'useDischarge' ) == 1 %]
[% IF ( dischargeview ) %]
<li class="active">
--- /dev/null
+[% USE Asset %]
+[% USE Koha %]
+[% USE KohaDates %]
+[% INCLUDE 'doc-head-open.inc' %]
+<title>[% IF ( LibraryNameTitle ) %][% LibraryNameTitle %][% ELSE %]Koha online[% END %] catalog › Your routing lists</title>
+[% INCLUDE 'doc-head-close.inc' %]
+[% BLOCK cssinclude %]
+ [% Asset.css("css/datatables.css") %]
+[% END %]
+</head>
+
+[% INCLUDE 'bodytag.inc' bodyid='opac-account' bodyclass='scrollto' %]
+[% INCLUDE 'masthead.inc' %]
+
+<div class="main">
+ <ul class="breadcrumb">
+ <li><a href="/cgi-bin/koha/opac-main.pl">Home</a> <span class="divider">›</span></li>
+ <li><a href="/cgi-bin/koha/opac-routing-lists.pl">[% INCLUDE 'patron-title.inc' category_type = BORROWER_INFO.category_type firstname = BORROWER_INFO.firstname surname = BORROWER_INFO.surname othernames = BORROWER_INFO.othernames cardnumber = BORROWER_INFO.cardnumber %]</a> <span class="divider">›</span></li>
+ <li><a href="#">Your routing lists</a></li>
+ </ul>
+
+ <div class="container-fluid">
+ <div class="row-fluid">
+ <div class="span2">
+ <div id="navigation">
+ [% INCLUDE 'navigation.inc' IsPatronPage=1 %]
+ </div>
+ </div>
+ <div class="span10">
+ <div id="user-routing-lists" class="maincontent">
+
+
+ <h3>Routing lists</h3>
+
+ [% IF ( routinglists ) %]
+ <p id="routing-list-intro">You are subscribed to the routing lists for following serial titles. If you wish to make changes, please contact the library.</p>
+
+ <table class="table table-bordered table-striped" id="routingtable">
+ <thead>
+ <tr>
+ <th>Subscription title</th>
+ </tr>
+ </thead>
+
+ <tbody>
+ [% FOREACH routinglist IN routinglists %]
+ [% IF ( titles_loop.odd ) %]<tr class="highlight">[% ELSE %]<tr>[% END %]
+ <td>
+ <a href="/cgi-bin/koha/opac-detail.pl?biblionumber=[% routinglist.subscription.biblio.biblionumber %]">
+ [% routinglist.subscription.biblio.title %]
+ </a>
+ </td>
+ </tr>
+ [% END %]
+ </tbody>
+ </table>
+ [% ELSE %]
+ <p>You are currently not listed on any routing lists.</p>
+ [% END %]
+ </div>
+ </div> <!-- / .span10 -->
+ </div> <!-- / .row-fluid -->
+ </div> <!-- / .container-fluid -->
+</div> <!-- / .main -->
+
+[% INCLUDE 'opac-bottom.inc' %]
+[% BLOCK jsinclude %]
+[% INCLUDE 'datatables.inc' %]
+<script type="text/javascript">
+</script>
+[% END %]
--- /dev/null
+#!/usr/bin/perl
+
+# 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 CGI qw ( -utf8 );
+use C4::Members;
+use C4::Auth;
+use C4::Output;
+use Koha::Patrons;
+
+my $query = new CGI;
+
+unless ( C4::Context->preference('RoutingSerials') ) {
+ print $query->redirect("/cgi-bin/koha/errors/404.pl");
+ exit;
+}
+
+
+my ( $template, $borrowernumber, $cookie ) = get_template_and_user(
+ {
+ template_name => "opac-routing-lists.tt",
+ query => $query,
+ type => "opac",
+ authnotrequired => 0,
+ debug => 1,
+ }
+);
+
+my $patron = Koha::Patrons->find( $borrowernumber );
+my $category = $patron->category;
+my $borrower= $patron->unblessed;
+$borrower->{description} = $category->description;
+$borrower->{category_type} = $category->category_type;
+$template->param( BORROWER_INFO => $borrower );
+
+my @routinglists = $patron->get_routinglists();
+
+$template->param(
+ routinglists => \@routinglists,
+ routinglistview => 1,
+);
+
+output_html_with_http_headers $query, $cookie, $template->output, undef, { force_no_caching => 1 };
$module->unmock('userenv');
};
+subtest 'get_routinglists' => sub {
+ plan tests => 5;
+
+ my $biblio = Koha::Biblio->new()->store();
+ my $subscription = Koha::Subscription->new({
+ biblionumber => $biblio->biblionumber,
+ }
+ )->store;
+
+ my $patron = $builder->build( { source => 'Borrower' } );
+ $patron = Koha::Patrons->find( $patron->{borrowernumber} );
+
+ is( $patron->get_routinglists, 0, 'Retrieves correct number of routing lists: 0' );
+
+ my $routinglist_count = Koha::Subscription::Routinglists->count;
+ my $routinglist = Koha::Subscription::Routinglist->new({
+ borrowernumber => $patron->borrowernumber,
+ ranking => 5,
+ subscriptionid => $subscription->subscriptionid
+ })->store;
+
+ is ($patron->get_routinglists, 1, "Retrieves correct number of routing lists: 1");
+
+ my @routinglists = $patron->get_routinglists;
+ is ($routinglists[0]->ranking, 5, "Retrieves ranking: 5");
+ is( ref($routinglists[0]), 'Koha::Subscription::Routinglist', 'get_routinglists returns Koha::Subscription::Routinglist objects' );
+
+ my $subscription2 = Koha::Subscription->new({
+ biblionumber => $biblio->biblionumber,
+ }
+ )->store;
+ my $routinglist2 = Koha::Subscription::Routinglist->new({
+ borrowernumber => $patron->borrowernumber,
+ ranking => 1,
+ subscriptionid => $subscription2->subscriptionid
+ })->store;
+
+ is ($patron->get_routinglists, 2, "Retrieves correct number of routing lists: 2");
+
+ $patron->delete; # Clean up for later tests
+
+};
+
subtest 'get_age' => sub {
plan tests => 7;
--- /dev/null
+#!/usr/bin/perl
+
+# 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
+# WIT HOUT 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 Test::More tests => 1;
+use t::lib::TestBuilder;
+
+use C4::Biblio;
+
+use Koha::Database;
+use Koha::Patrons;
+use Koha::Subscriptions;
+use Koha::Subscription::Routinglists;
+
+my $schema = Koha::Database->new->schema;
+my $builder = t::lib::TestBuilder->new;
+
+subtest 'new() tests' => sub {
+ plan tests => 4;
+
+ $schema->storage->txn_begin;
+
+ my $biblio = Koha::Biblio->new()->store();
+ my $subscription = Koha::Subscription->new({
+ biblionumber => $biblio->biblionumber,
+ }
+ )->store;
+
+ my $library = $builder->build_object({ class => 'Koha::Libraries' });
+ my $patron = $builder->build_object({ class => 'Koha::Patrons', value => { branchcode => $library->id } });
+
+ my $routinglist_count = Koha::Subscription::Routinglists->count;
+ my $routinglist = Koha::Subscription::Routinglist->new({
+ borrowernumber => $patron->borrowernumber,
+ ranking => 1,
+ subscriptionid => $subscription->subscriptionid
+ })->store;
+
+ is( Koha::Subscription::Routinglists->search->count, $routinglist_count +1, 'One routing list added' );
+
+ my $retrieved_routinglist = Koha::Subscription::Routinglists->find( $routinglist->routingid );
+ is ( $retrieved_routinglist->routingid, $routinglist->routingid, "Find a routing list by id returns the correct routing list");
+
+ $routinglist->ranking(4)->update;
+ is ( $routinglist->ranking, 4, "Routing list ranking has been updated");
+
+ $routinglist->delete;
+ is ( Koha::Subscription::Routinglists->search->count, $routinglist_count, 'One subscription list deleted' );
+
+};
+
+$schema->storage->txn_rollback;