Bugzilla – Attachment 149010 Details for
Bug 18203
Add per borrower category restrictions on placing ILL requests in OPAC
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Bug 18203: Add per borrower category restrictions on placing ILL requests
Bug-18203-Add-per-borrower-category-restrictions-o.patch (text/plain), 14.36 KB, created by
Pedro Amorim
on 2023-03-31 04:13:25 UTC
(
hide
)
Description:
Bug 18203: Add per borrower category restrictions on placing ILL requests
Filename:
MIME Type:
Creator:
Pedro Amorim
Created:
2023-03-31 04:13:25 UTC
Size:
14.36 KB
patch
obsolete
>From 7a8c5f8f31c63f700fe63d212b83361af169cf94 Mon Sep 17 00:00:00 2001 >From: Pedro Amorim <pedro.amorim@ptfs-europe.com> >Date: Fri, 31 Mar 2023 05:12:48 +0100 >Subject: [PATCH] Bug 18203: Add per borrower category restrictions on placing > ILL requests > >Default value for canplaceillopac is 1 >Patron in a category that cannot place ill can still visit illlist and illview >--- > Koha/Schema/Result/Category.pm | 15 ++++++++-- > admin/categories.pl | 3 ++ > .../data/mysql/atomicupdate/bug_18203.pl | 17 +++++++++++ > installer/data/mysql/kohastructure.sql | 1 + > .../prog/en/modules/admin/categories.tt | 29 +++++++++++++++++++ > .../bootstrap/en/modules/opac-illrequests.tt | 20 ++++++++----- > opac/opac-illrequests.pl | 11 +++++-- > 7 files changed, 83 insertions(+), 13 deletions(-) > create mode 100755 installer/data/mysql/atomicupdate/bug_18203.pl > >diff --git a/Koha/Schema/Result/Category.pm b/Koha/Schema/Result/Category.pm >index d6281bf36a8..8a3ef2bdf73 100644 >--- a/Koha/Schema/Result/Category.pm >+++ b/Koha/Schema/Result/Category.pm >@@ -162,6 +162,14 @@ Default privacy setting for this patron category > > produce a warning for this patron category if this item has previously been checked out to this patron if 'yes', not if 'no', defer to syspref setting if 'inherit'. > >+=head2 canplaceillopac >+ >+ data_type: 'tinyint' >+ default_value: 0 >+ is_nullable: 0 >+ >+can this patron category place interlibrary loan requests >+ > =head2 can_be_guarantee > > data_type: 'tinyint' >@@ -259,6 +267,8 @@ __PACKAGE__->add_columns( > is_nullable => 0, > size => 7, > }, >+ "canplaceillopac", >+ { data_type => "tinyint", default_value => 0, is_nullable => 0 }, > "can_be_guarantee", > { data_type => "tinyint", default_value => 0, is_nullable => 0 }, > "reset_password", >@@ -378,8 +388,8 @@ __PACKAGE__->has_many( > ); > > >-# Created by DBIx::Class::Schema::Loader v0.07049 @ 2022-11-08 17:35:26 >-# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:B89OgAY/KnJbQaHpu5Xdfg >+# Created by DBIx::Class::Schema::Loader v0.07049 @ 2023-03-31 03:27:07 >+# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:YYc52oTevOT+WXnDsG2mrQ > > sub koha_object_class { > 'Koha::Patron::Category'; >@@ -389,6 +399,7 @@ sub koha_objects_class { > } > > __PACKAGE__->add_columns( >+ '+canplaceillopac' => { is_boolean => 1 }, > '+can_be_guarantee' => { is_boolean => 1 }, > '+exclude_from_local_holds_priority' => { is_boolean => 1 }, > '+require_strong_password' => { is_boolean => 1 }, >diff --git a/admin/categories.pl b/admin/categories.pl >index 53c4182b47c..6a335b9737d 100755 >--- a/admin/categories.pl >+++ b/admin/categories.pl >@@ -72,6 +72,7 @@ elsif ( $op eq 'add_validate' ) { > my $category_type = $input->param('category_type'); > my $BlockExpiredPatronOpacActions = $input->param('BlockExpiredPatronOpacActions'); > my $checkPrevCheckout = $input->param('checkprevcheckout'); >+ my $canplaceillopac = $input->param('canplaceillopac'); > my $default_privacy = $input->param('default_privacy'); > my $reset_password = $input->param('reset_password'); > my $change_password = $input->param('change_password'); >@@ -105,6 +106,7 @@ elsif ( $op eq 'add_validate' ) { > $category->can_be_guarantee($can_be_guarantee); > $category->BlockExpiredPatronOpacActions($BlockExpiredPatronOpacActions); > $category->checkprevcheckout($checkPrevCheckout); >+ $category->canplaceillopac($canplaceillopac); > $category->default_privacy($default_privacy); > $category->reset_password($reset_password); > $category->change_password($change_password); >@@ -138,6 +140,7 @@ elsif ( $op eq 'add_validate' ) { > can_be_guarantee => $can_be_guarantee, > BlockExpiredPatronOpacActions => $BlockExpiredPatronOpacActions, > checkprevcheckout => $checkPrevCheckout, >+ canplaceillopac => $canplaceillopac, > default_privacy => $default_privacy, > reset_password => $reset_password, > change_password => $change_password, >diff --git a/installer/data/mysql/atomicupdate/bug_18203.pl b/installer/data/mysql/atomicupdate/bug_18203.pl >new file mode 100755 >index 00000000000..68a2145739e >--- /dev/null >+++ b/installer/data/mysql/atomicupdate/bug_18203.pl >@@ -0,0 +1,17 @@ >+use Modern::Perl; >+ >+return { >+ bug_number => "18203", >+ description => "Add per borrower category restrictions on ILL placement", >+ up => sub { >+ my ($args) = @_; >+ my ($dbh, $out) = @$args{qw(dbh out)}; >+ unless ( column_exists('categories', 'canplaceillopac') ) { >+ $dbh->do(q{ >+ ALTER TABLE `categories` >+ ADD COLUMN `canplaceillopac` TINYINT(1) NOT NULL DEFAULT 1 COMMENT 'can this patron category place interlibrary loan requests' >+ AFTER `checkprevcheckout`; >+ }); >+ } >+ }, >+}; >diff --git a/installer/data/mysql/kohastructure.sql b/installer/data/mysql/kohastructure.sql >index a3faa37d794..4a5cdc41f0c 100644 >--- a/installer/data/mysql/kohastructure.sql >+++ b/installer/data/mysql/kohastructure.sql >@@ -1676,6 +1676,7 @@ CREATE TABLE `categories` ( > `BlockExpiredPatronOpacActions` tinyint(1) NOT NULL DEFAULT -1 COMMENT 'wheither or not a patron of this category can renew books or place holds once their card has expired. 0 means they can, 1 means they cannot, -1 means use syspref BlockExpiredPatronOpacActions', > `default_privacy` enum('default','never','forever') NOT NULL DEFAULT 'default' COMMENT 'Default privacy setting for this patron category', > `checkprevcheckout` varchar(7) NOT NULL DEFAULT 'inherit' COMMENT 'produce a warning for this patron category if this item has previously been checked out to this patron if ''yes'', not if ''no'', defer to syspref setting if ''inherit''.', >+ `canplaceillopac` tinyint(1) NOT NULL DEFAULT 1 COMMENT 'can this patron category place interlibrary loan requests', > `can_be_guarantee` tinyint(1) NOT NULL DEFAULT 0 COMMENT 'if patrons of this category can be guarantees', > `reset_password` tinyint(1) DEFAULT NULL COMMENT 'if patrons of this category can do the password reset flow,', > `change_password` tinyint(1) DEFAULT NULL COMMENT 'if patrons of this category can change their passwords in the OAPC', >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/categories.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/categories.tt >index 5f56479aec4..6ddc2a0c35b 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/categories.tt >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/categories.tt >@@ -405,6 +405,23 @@ > </div> > </li> > [% END %] >+ [% IF ( Koha.Preference('ILLModule') ) %] >+ <li> >+ <label for="canplaceillopac">Can place ILL in OPAC: </label> >+ <select id="canplaceillopac" name="canplaceillopac"> >+ [% IF category.canplaceillopac %] >+ <option value="0">No</option> >+ <option value="1" selected="selected">Yes</option> >+ [% ELSE %] >+ <option value="0" selected="selected">No</option> >+ <option value="1">Yes</option> >+ [% END %] >+ </select> >+ <div class="hint"> >+ Choose whether patrons of this category can create new interlibrary loan requests. >+ </div> >+ </li> >+ [% END %] > <li> > <label for="default_privacy">Default privacy: </label> > <select id="default_privacy" name="default_privacy"> >@@ -509,6 +526,12 @@ > </td> > </tr> > [% END %] >+ [% IF ( Koha.Preference('ILLModule') ) %] >+ <tr> >+ <th scope="row">Can place ILL in OPAC: </th> >+ <td>[% IF category.canplaceillopac %]Yes[% ELSE %]No[% END %]</td> >+ </tr> >+ [% END %] > <tr><th scope="row">Can be guarantee</th><td>[% IF category.can_be_guarantee %]Yes[% ELSE %]No[% END %]</td></tr> > <tr> > <th scope="row">Default privacy: </th> >@@ -571,6 +594,9 @@ > [% IF ( Koha.Preference('CheckPrevCheckout') == 'softyes' || Koha.Preference('CheckPrevCheckout') == 'softno' ) %] > <th scope="col">Check previous checkout?</th> > [% END %] >+ [% IF ( Koha.Preference('ILLModule') ) %] >+ <th scope="col">Can place ILL in OPAC?</th> >+ [% END %] > <th scope="col">Can be guarantee</th> > <th scope="col">Default privacy</th> > <th scope="col">Exclude from local holds priority</th> >@@ -689,6 +715,9 @@ > <span>Inherit</span> > [% END %] > </td> >+ [% END %] >+ [% IF ( Koha.Preference('ILLModule') ) %] >+ <td>[% IF category.canplaceillopac %] Yes [% ELSE %] No [% END %]</td> > [% END %] > <td>[% IF category.can_be_guarantee %] Yes [% ELSE %] No [% END %]</td> > <td> >diff --git a/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-illrequests.tt b/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-illrequests.tt >index 1ce9da47550..19cd27e21fc 100644 >--- a/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-illrequests.tt >+++ b/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-illrequests.tt >@@ -112,8 +112,9 @@ > <h1>Interlibrary loan requests</h1> > [% INCLUDE messages %] > >- <div id="illrequests-create-button" class="dropdown btn-group"> >- [% IF backends.size > 1 %] >+ [% IF canplaceillopac %] >+ <div id="illrequests-create-button" class="dropdown btn-group"> >+ [% IF backends.size > 1 %] > <button class="btn btn-primary dropdown-toggle" type="button" id="ill-backend-dropdown" data-toggle="dropdown" aria-haspopup="true" aria-expanded="true"> > <i class="fa fa-plus" aria-hidden="true"></i> Create a new request <span class="caret"></span> > </button> >@@ -122,12 +123,13 @@ > <a class="dropdown-item" href="/cgi-bin/koha/opac-illrequests.pl?method=create&backend=[% backend | uri %]">[% backend | html %]</a> > [% END %] > </div> >- [% ELSE %] >- <a id="ill-new" class="btn btn-primary" href="/cgi-bin/koha/opac-illrequests.pl?method=create&backend=[% backends.0 | html %]"> >- <i class="fa fa-plus" aria-hidden="true"></i> Create a new request >- </a> >- [% END %] >- </div> >+ [% ELSE %] >+ <a id="ill-new" class="btn btn-primary" href="/cgi-bin/koha/opac-illrequests.pl?method=create&backend=[% backends.0 | html %]"> >+ <i class="fa fa-plus" aria-hidden="true"></i> Create a new request >+ </a> >+ [% END %] >+ </div> >+ [% END %] > > <table id="illrequestlist" class="table table-bordered table-striped"> > <caption class="sr-only">Requests</caption> >@@ -232,6 +234,7 @@ > </div> > [% END %] > </div> >+ [% IF canplaceillopac %] > <fieldset class="action illrequest-actions"> > <input type="hidden" name="illrequest_id" value="[% request.illrequest_id | html %]" /> > <input type="hidden" name="method" value="update" /> >@@ -243,6 +246,7 @@ > [% END %] > <span class="cancel"><a href="/cgi-bin/koha/opac-illrequests.pl">Cancel</a></span> > </fieldset> >+ [% END %] > </form> > [% ELSIF method == 'availability' %] > <h1>Interlibrary loan item availability</h1> >diff --git a/opac/opac-illrequests.pl b/opac/opac-illrequests.pl >index e619707451e..5c8e436e430 100755 >--- a/opac/opac-illrequests.pl >+++ b/opac/opac-illrequests.pl >@@ -56,9 +56,15 @@ my $reduced = C4::Context->preference('ILLOpacbackends'); > my $backends = Koha::Illrequest::Config->new->available_backends($reduced); > my $backends_available = ( scalar @{$backends} > 0 ); > $template->param( backends_available => $backends_available ); >+my $patron = Koha::Patrons->find($loggedinuser); > > my $op = $params->{'method'} || 'list'; > >+if( ($op eq 'create' || $op eq 'cancreq' || $op eq 'update') && !$patron->_result->categorycode->canplaceillopac ) { >+ print $query->redirect('/cgi-bin/koha/errors/403.pl'); >+ exit; >+} >+ > if ( $op eq 'list' ) { > > my $requests = Koha::Illrequests->search( >@@ -154,9 +160,7 @@ if ( $op eq 'list' ) { > } > } > >- $params->{cardnumber} = Koha::Patrons->find({ >- borrowernumber => $loggedinuser >- })->cardnumber; >+ $params->{cardnumber} = $patron->cardnumber; > $params->{opac} = 1; > my $backend_result = $request->backend_create($params); > if ($backend_result->{stage} eq 'copyrightclearance') { >@@ -181,6 +185,7 @@ if ( $op eq 'list' ) { > } > > $template->param( >+ canplaceillopac => $patron->_result->categorycode->canplaceillopac, > message => $params->{message}, > illrequestsview => 1, > method => $op >-- >2.30.2
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
|
Splinter Review
Attachments on
bug 18203
:
60805
|
60806
|
145331
|
145349
|
145354
|
148707
|
148719
|
149010
|
153345
|
153346
|
153347
|
153370
|
153371
|
153372
|
155316
|
155317
|
155318
|
158126
|
158127
|
158128