From 466fc19777c08c26de3fdb3bca16031e6a2c1ca3 Mon Sep 17 00:00:00 2001 From: Nick Clemens Date: Thu, 25 Oct 2018 11:45:25 +0000 Subject: [PATCH] Bug 21608: Disable dropdown for found holds - add button to revert This patch disables the dropdown for found holds, and adds a new button to revert the waiting status, setting the hold to priority 1 Additionally we remove some changes from 19469 and update the JS to skip found holds when updating priority To test: 1 - Find a record with multiple items 2 - Place 4 holds (or more) 3 - Capture one ohld as waiting, one as in transit 4 - View the holds on the record - switch the last to priority one 5 - Waiting and transit statuses get confused 6 - Apply patch 7 - Observe dropdown is now disabled for waiting holds 8 - Confirm other holds operate as expected 9 - Confirm 'Revert found status' resets hold Signed-off-by: Martin Renvoize Bug 21608: (follow-up) Use RevertWaitingStatus and do not alter _FixPriority [EDIT] Completely removed the changes to Reserves.pm by adding module prefix in the request.pl script. Signed-off-by: Marcel de Rooy Signed-off-by: Nick Clemens (cherry picked from commit 3c50245cfe272dc105033ff2e59f8e2689f7dd26) Signed-off-by: Martin Renvoize --- .../prog/en/includes/holds_table.inc | 6 ++--- .../prog/en/modules/reserve/request.tt | 27 +++++++++---------- reserve/request.pl | 19 ++++++++----- 3 files changed, 27 insertions(+), 25 deletions(-) diff --git a/koha-tmpl/intranet-tmpl/prog/en/includes/holds_table.inc b/koha-tmpl/intranet-tmpl/prog/en/includes/holds_table.inc index a1807ab647..744672ef99 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/includes/holds_table.inc +++ b/koha-tmpl/intranet-tmpl/prog/en/includes/holds_table.inc @@ -26,10 +26,10 @@ - [% IF Koha.Preference('HoldsSplitQueue') == "nothing" %] + [% IF Koha.Preference('HoldsSplitQueue') == "nothing" && !hold.found %] + + [% END %] [% END # IF SuspendHoldsIntranet %] diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/reserve/request.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/reserve/request.tt index 67f60c8861..2b08c1aca7 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/reserve/request.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/reserve/request.tt @@ -807,29 +807,26 @@ } }); var prev_rank_request; - var priorities; $("select[name=rank-request]").on("focus", function() { prev_rank_request = $(this).val(); var row = $(this).parents("tr:first"); - priorities = row.parent().find("select[name=rank-request]").map( function() { - return $(this).val(); - }).get(); }).change(function() { var row = $(this).parents("tr:first"); var value = parseInt($(this).val()); - var rowsCount = row.parent().children('tr').length - 1; - value = value > rowsCount ? rowsCount : value; - var after = row.parent().find("tr:nth-child("+(value+1)+")"); - - if (prev_rank_request > value) { - row.insertBefore(after); - } else { - row.insertAfter(after); + var found_holds = $("select[name='rank-request'][disabled='disabled']").length ; //Count how many are found + if( !isNaN(value) ) { //If moved to 'del' + var after = row.parent().find("tr:nth-child("+(value+1+found_holds )+")"); //Go to the row 1 after the new value (and skip found holds) + if (prev_rank_request > value) { + row.insertBefore(after); + } else { + row.insertAfter(after); + } } - var next_priority = 0; - row.parent().find("select[name=rank-request]").each(function () { - $(this).val(priorities[next_priority]); + var next_priority = 1; + $("select[name=rank-request]").each(function () { + if( isNaN( $(this).val() ) ){ return true; } //Don't reset found or del holds + $(this).val(next_priority); next_priority++; }); }); diff --git a/reserve/request.pl b/reserve/request.pl index db02e5286d..2534fe2580 100755 --- a/reserve/request.pl +++ b/reserve/request.pl @@ -86,13 +86,18 @@ my $action = $input->param('action'); $action ||= q{}; if ( $action eq 'move' ) { - my $where = $input->param('where'); - my $reserve_id = $input->param('reserve_id'); - my $prev_priority = $input->param('prev_priority'); - my $next_priority = $input->param('next_priority'); - my $first_priority = $input->param('first_priority'); - my $last_priority = $input->param('last_priority'); - AlterPriority( $where, $reserve_id, $prev_priority, $next_priority, $first_priority, $last_priority ); + my $where = $input->param('where'); + my $reserve_id = $input->param('reserve_id'); + my $prev_priority = $input->param('prev_priority'); + my $next_priority = $input->param('next_priority'); + my $first_priority = $input->param('first_priority'); + my $last_priority = $input->param('last_priority'); + my $hold_itemnumber = $input->param('itemnumber'); + if ( $prev_priority == 0 && $next_priority == 1 ){ + C4::Reserves::RevertWaitingStatus({ itemnumber => $hold_itemnumber }); + } else { + AlterPriority( $where, $reserve_id, $prev_priority, $next_priority, $first_priority, $last_priority ); + } } elsif ( $action eq 'cancel' ) { my $reserve_id = $input->param('reserve_id'); my $hold = Koha::Holds->find( $reserve_id ); -- 2.39.5