From d4cdf320b2ad5b182311971ff1746d9f742f41eb Mon Sep 17 00:00:00 2001 From: John Doe Date: Mon, 16 Jan 2023 12:58:32 +0000 Subject: [PATCH] Bug 18203: Add per borrower category restrictions on ILL placement Test Plan: - Enable ILLModule sys pref and install any backend - Verify you can place new ILL requests in OPAC and Intranet - Apply patch - Run dbic - Verify you can no longer place new ILL requests in OPAC and Intranet - In borrower categories, set 'Can place ILL' to yes. - Verify you can place new ILL requests in OPAC and Intranet. Signed-off-by: David Nind --- admin/categories.pl | 3 ++ ill/ill-requests.pl | 1 + .../data/mysql/atomicupdate/bug_18203.pl | 17 ++++++++++ installer/data/mysql/kohastructure.sql | 1 + .../prog/en/includes/ill-toolbar.inc | 34 ++++++++++--------- .../prog/en/modules/admin/categories.tt | 26 ++++++++++++++ .../bootstrap/en/modules/opac-illrequests.tt | 18 +++++----- opac/opac-illrequests.pl | 6 ++-- 8 files changed, 79 insertions(+), 27 deletions(-) create mode 100755 installer/data/mysql/atomicupdate/bug_18203.pl diff --git a/admin/categories.pl b/admin/categories.pl index 53c4182b47..5e2a704e9e 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 $canplaceill = $input->param('canplaceill'); 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->canplaceill($canplaceill); $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, + canplaceill => $canplaceill, default_privacy => $default_privacy, reset_password => $reset_password, change_password => $change_password, diff --git a/ill/ill-requests.pl b/ill/ill-requests.pl index fc7da41710..92ae4e6d52 100755 --- a/ill/ill-requests.pl +++ b/ill/ill-requests.pl @@ -433,6 +433,7 @@ if ( $backends_available ) { $template->param( backends => $backends, + canplaceill => Koha::Patrons->find($patronnumber)->_result->categorycode->canplaceill, types => [ "Book", "Article", "Journal" ], query_type => $op, branches => Koha::Libraries->search, diff --git a/installer/data/mysql/atomicupdate/bug_18203.pl b/installer/data/mysql/atomicupdate/bug_18203.pl new file mode 100755 index 0000000000..77d786b5ce --- /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', 'canplaceill') ) { + $dbh->do(q{ + ALTER TABLE `categories` + ADD COLUMN `canplaceill` TINYINT(1) NOT NULL DEFAULT 0 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 59607073ca..bceec97a4a 100644 --- a/installer/data/mysql/kohastructure.sql +++ b/installer/data/mysql/kohastructure.sql @@ -1672,6 +1672,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''.', + `canplaceill` tinyint(1) NOT NULL DEFAULT 0 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/includes/ill-toolbar.inc b/koha-tmpl/intranet-tmpl/prog/en/includes/ill-toolbar.inc index 03fec59ce1..601395459d 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/includes/ill-toolbar.inc +++ b/koha-tmpl/intranet-tmpl/prog/en/includes/ill-toolbar.inc @@ -2,22 +2,24 @@ [% IF Koha.Preference('ILLModule ') && CAN_user_ill %]
[% IF backends_available %] - [% IF backends.size > 1 %] - - [% ELSE %] - - New ILL request - - [% END %] + [% IF canplaceill %] + [% IF backends.size > 1 %] + + [% ELSE %] + + New ILL request + + [% END %] + [% END %] [% ELSE %] New ILL request 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 2bb5921b81..70a1029977 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 @@
[% END %] + [% IF ( Koha.Preference('ILLModule') ) %] +
  • + + +
    + Choose whether patrons of this category can create new interlibrary loan requests. +
    +
  • + [% END %]