@@ -, +, @@ --- 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 ); --