From 2d2c2d5a09785edf92665ab50c3d142c4f9a18bf Mon Sep 17 00:00:00 2001 From: Lucas Gass Date: Wed, 27 Aug 2025 15:52:32 +0000 Subject: [PATCH] Bug 31698: Move reamining JS to hold.js --- .../prog/en/modules/reserve/request.tt | 52 --------- koha-tmpl/intranet-tmpl/prog/js/holds.js | 100 ++++++++++++++++-- 2 files changed, 94 insertions(+), 58 deletions(-) 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 9d6db932955..06e6ec13f42 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/reserve/request.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/reserve/request.tt @@ -1955,58 +1955,6 @@ }); [% END %] - $('.move_hold_item').click(function(e) { - e.preventDefault(); - $('#move_hold_item_confirm').prop('disabled' , true ); - if($('.holds_table .select_hold:checked').length) { - $('#itemResultMessage').empty(); - $('#move_hold_item_selection table tbody').empty(); - $('#moveHoldItemModal').modal('show'); - $('.select_hold:checked').each( function() { - let reserve_id = $(this).data('id'); - let reserve_biblionumber = $(this).data('biblionumber'); - let reserve_itemnumber = $(this).data('itemnumber'); - let item_level_hold = $(this).data('item_level_hold'); - let item_waiting = $(this).data('waiting'); - let item_intransit = $(this).data('intransit'); - let error_message = $(this).data('item_level_hold') ? "" : _("Cannot move a waiting, in transit, or record level hold"); - let found_status = $(this).data('found'); - if ( item_level_hold && ( !item_waiting || !item_intransit ) ) { - $('#move_hold_item_selection table').append(`${reserve_id}Biblionumber: ${reserve_biblionumber} Itemnumber: ${reserve_itemnumber}${error_message}`) - } else { - $('#move_hold_item_selection table').append(`${reserve_id}Biblionumber: ${reserve_biblionumber} Itemnumber: ${reserve_itemnumber}${error_message}`) - } - }); - } - }); - - $('.move_hold_biblio').click(function(e) { - e.preventDefault(); - $('#move_hold_biblio_confirm').prop('disabled' , true ); - if($('.holds_table .select_hold:checked').length) { - $('#biblioResultMessage').empty(); - $('#move_hold_biblio_selection table tbody').empty(); - $('#moveHoldBiblioModal').modal('show'); - $('.select_hold:checked').each( function() { - let reserve_id = $(this).data('id'); - let reserve_biblionumber = $(this).data('biblionumber'); - let reserve_itemnumber = $(this).data('itemnumber'); - let item_level_hold = $(this).data('item_level_hold'); - let item_status = $(this).data('status'); - let item_waiting = $(this).data('waiting'); - let item_intransit = $(this).data('intransit'); - let error_message = $(this).data('item_level_hold') ? _("Cannot move a waiting, in transit, or item level hold") : ""; - let found_status = $(this).data('found'); - if ( !item_level_hold && ( !item_waiting || !item_intransit ) ) { - $('#move_hold_biblio_selection table').append(`${reserve_id}Biblionumber: ${reserve_biblionumber}${error_message}`) - } else { - $('#move_hold_biblio_selection table').append(`${reserve_id}Biblionumber: ${reserve_biblionumber}${error_message}`) - - } - }); - } - }); - $(".hold-arrow").click(function(e) { e.preventDefault(); let arrowForm = $("#hold-actions-form").attr({ diff --git a/koha-tmpl/intranet-tmpl/prog/js/holds.js b/koha-tmpl/intranet-tmpl/prog/js/holds.js index e5c08efa572..26a65ee0cbd 100644 --- a/koha-tmpl/intranet-tmpl/prog/js/holds.js +++ b/koha-tmpl/intranet-tmpl/prog/js/holds.js @@ -793,6 +793,23 @@ $(document).ready(function () { ); } + function updateMoveButtons(table) { + var checked_holds = $(".select_hold:checked", table); + var checked_count = checked_holds.length; + + var item_level_count = checked_holds.filter(function () { + return $(this).attr("data-item_level_hold") !== ""; + }).length; + + var record_level_count = checked_holds.filter(function () { + return $(this).attr("data-item_level_hold") === ""; + }).length; + + $(".move_hold_item").toggleClass("disabled", item_level_count <= 0); + $(".move_hold_biblio").toggleClass("disabled", record_level_count <= 0); + $(".move_selected_holds").prop("disabled", !checked_count); + } + updateSelectedHoldsButtonCounters(); $(".holds_table .select_hold_all").click(function () { @@ -802,9 +819,13 @@ $(document).ready(function () { } else { table = $(".holds_table:not(.fixedHeader-floating)"); } - var count = $(".select_hold:checked", table).length; - $(".select_hold", table).prop("checked", !count); - $(this).prop("checked", !count); + + var checked_count = $(".select_hold:checked", table).length; + $(".select_hold", table).prop("checked", !checked_count); + $(this).prop("checked", !checked_count); + + updateMoveButtons(table); + updateSelectedHoldsButtonCounters(); $("#cancel_hold_alert").html( MSG_CANCEL_ALERT.format( @@ -825,14 +846,15 @@ $(document).ready(function () { ) .join(",") + "]"; - $(".move_selected_holds").prop("disabled", count); }); $(".holds_table").on("click", ".select_hold", function () { var table = $(this).parents(".holds_table"); var count = $(".select_hold:not(:checked)", table).length; - var checked_count = $(".select_hold:checked", table).length; $(".select_hold_all", table).prop("checked", !count); + + updateMoveButtons(table); + updateSelectedHoldsButtonCounters(); $("#cancel_hold_alert").html( MSG_CANCEL_ALERT.format( @@ -853,7 +875,6 @@ $(document).ready(function () { ) .join(",") + "]"; - $(".move_selected_holds").prop("disabled", !checked_count); }); $(".cancel_selected_holds").click(function (e) { @@ -1005,6 +1026,73 @@ $(document).ready(function () { } }); + $(".move_hold_item").click(function (e) { + e.preventDefault(); + $("#move_hold_item_confirm").prop("disabled", true); + if ($(".holds_table .select_hold:checked").length) { + $("#itemResultMessage").empty(); + $("#move_hold_item_selection table tbody").empty(); + $("#moveHoldItemModal").modal("show"); + $(".select_hold:checked").each(function () { + let reserve_id = $(this).data("id"); + let reserve_biblionumber = $(this).data("biblionumber"); + let reserve_itemnumber = $(this).data("itemnumber"); + let item_level_hold = $(this).data("item_level_hold"); + let item_waiting = $(this).data("waiting"); + let item_intransit = $(this).data("intransit"); + let error_message = $(this).data("item_level_hold") + ? "" + : __( + "Cannot move a waiting, in transit, or record level hold" + ); + let found_status = $(this).data("found"); + if (item_level_hold && (!item_waiting || !item_intransit)) { + $("#move_hold_item_selection table").append( + `${reserve_id}Biblionumber: ${reserve_biblionumber} Itemnumber: ${reserve_itemnumber}${error_message}` + ); + } else { + $("#move_hold_item_selection table").append( + `${reserve_id}Biblionumber: ${reserve_biblionumber} Itemnumber: ${reserve_itemnumber}${error_message}` + ); + } + }); + } + }); + + $(".move_hold_biblio").click(function (e) { + e.preventDefault(); + $("#move_hold_biblio_confirm").prop("disabled", true); + if ($(".holds_table .select_hold:checked").length) { + $("#biblioResultMessage").empty(); + $("#move_hold_biblio_selection table tbody").empty(); + $("#moveHoldBiblioModal").modal("show"); + $(".select_hold:checked").each(function () { + let reserve_id = $(this).data("id"); + let reserve_biblionumber = $(this).data("biblionumber"); + let reserve_itemnumber = $(this).data("itemnumber"); + let item_level_hold = $(this).data("item_level_hold"); + let item_status = $(this).data("status"); + let item_waiting = $(this).data("waiting"); + let item_intransit = $(this).data("intransit"); + let error_message = $(this).data("item_level_hold") + ? __( + "Cannot move a waiting, in transit, or item level hold" + ) + : ""; + let found_status = $(this).data("found"); + if (!item_level_hold && (!item_waiting || !item_intransit)) { + $("#move_hold_biblio_selection table").append( + `${reserve_id}Biblionumber: ${reserve_biblionumber}${error_message}` + ); + } else { + $("#move_hold_biblio_selection table").append( + `${reserve_id}Biblionumber: ${reserve_biblionumber}${error_message}` + ); + } + }); + } + }); + function _append_patron_page_cancel_hold_modal_data(hold) { $("#cancel_modal_form #inputs").append( '' -- 2.39.5