@@ -, +, @@
---
C4/Reserves.pm | 12 +++++
.../prog/en/modules/reserve/request.tt | 44 ++++++++++++++++++++
reserve/request.pl | 1 +
3 files changed, 57 insertions(+), 0 deletions(-)
--- a/C4/Reserves.pm
+++ a/C4/Reserves.pm
@@ -2451,6 +2451,18 @@ sub CheckBiblioForceItemHolds {
return 1 if $rec && $rec->force_item_holds;
}
+=head2 ModBiblioForceItemHolds
+
+=cut
+
+sub ModBiblioForceItemHolds {
+ my ( $biblionumber, $newmode ) = @_;
+ my $rec = Koha::Database->new()->schema()->resultset('Biblio')->find( $biblionumber );
+ return 0 if !$rec;
+ my $rv = $rec->update({ force_item_holds => $newmode? 1: 0 });
+ return $rv ? 1 : 0;
+}
+
=head1 AUTHOR
Koha Development Team
--- a/koha-tmpl/intranet-tmpl/prog/en/modules/reserve/request.tt
+++ a/koha-tmpl/intranet-tmpl/prog/en/modules/reserve/request.tt
@@ -1,3 +1,4 @@
+[% USE Koha %]
[% USE KohaDates %]
[% INCLUDE 'doc-head-open.inc' %]
[% UNLESS ( multi_hold ) %]
@@ -24,6 +25,12 @@ $(document).ready(function() {
[% IF AutoResumeSuspendedHolds %]
$(".suspend_until_datepicker, .datepickerfrom, .datepickerto").datepicker("option", "minDate", 1);
[% END %]
+ [% IF biblioloop && biblioloop.0.forceitemhold %]
+ [%# we only check the first biblio (0) because we do not show the form for multiple biblios %]
+ $("#forceitemhold_enabled").toggle();
+ [% ELSE %]
+ $("#forceitemhold_disabled").toggle();
+ [% END %]
});
function check() {
@@ -98,6 +105,27 @@ function checkMultiHold() {
return true;
}
+function UpdateForceItemHold(biblio,mode) {
+ $(".forceitemholdbtn").prop("disabled",true);
+ var url = 'update_forceitemholds.pl?biblio=' + biblio+ "&mode=" + mode;
+ var req = $.ajax({
+ url: url,
+ type: "GET",
+ dataType: "text"
+ });
+ req.done( function( data, status, obj ) {
+ if( obj.responseText == '1' ) {
+ $("#forceitemhold_disabled").toggle();
+ $("#forceitemhold_enabled").toggle();
+ }
+ $(".forceitemholdbtn").prop("disabled",false);
+ });
+ req.fail( function( obj, status, err ) {
+ alert('Something went wrong. Please try again later.');
+ $(".forceitemholdbtn").prop("disabled",false);
+ });
+}
+
$(document).ready(function() {
$("input.needsoverride").click(function() { // This must be before the radio button/checkbox switch logic
var itemnumber = this.value;
@@ -207,6 +235,22 @@ function checkMultiHold() {
[% END %]
+ [% IF !multi_hold && Koha.Preference('OPACItemHolds')=='selectiveforce' %]
+
+ [% END %]
+
[% UNLESS ( multi_hold ) %]
Place a hold on [% INCLUDE 'biblio-default-view.inc' %][% title |html %]
[% ELSE %]
--- a/reserve/request.pl
+++ a/reserve/request.pl
@@ -582,6 +582,7 @@ foreach my $biblionumber (@biblionumbers) {
$biblioloopiter{title} = $dat->{title};
$biblioloopiter{rank} = $fixedRank;
$biblioloopiter{reserveloop} = \@reserveloop;
+ $biblioloopiter{forceitemhold} = C4::Reserves::CheckBiblioForceItemHolds( $biblionumber );
if (@reserveloop) {
$template->param( reserveloop => \@reserveloop );
--