From 4b163e0c38616e36cf77823414e6e85ed856bc54 Mon Sep 17 00:00:00 2001 From: Owen Leonard Date: Thu, 18 Apr 2019 14:22:35 +0000 Subject: [PATCH] Bug 22734: Fund not marked as mandatory when ordering from a staged file MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This patch does some refactoring of JavaScript to make handling of required fields more robust. It also moves some template JavaScript to the footer and some to a separate file. A fallback "pattern" attribute is added to the quantity field, requiring 0-9+ values. The "required" property of the funds dropdown is now dependent on the value set under the "Default accounting details" tab. If a default is selected, the individual item funds are preselected and not marked required. To test, apply the patch and begin the process of ordering from a staged file. - Select all items to import. - Under each item, the fund should be marked mandatory. - The quantity field should accept only numbers. - Select the "Default accounting details" tab and select a default fund. - Return to the "Select to import" tab. Your selected default fund should now be preselected under each item. The fund should no longer be marked required. Un-selecting a default fund should result in each item fund select becoming required. Signed-off-by: Séverine QUEUNE Signed-off-by: Séverine QUEUNE --- .../prog/en/modules/acqui/addorderiso2709.tt | 134 ++++----------------- koha-tmpl/intranet-tmpl/prog/js/addorderiso2709.js | 120 ++++++++++++++++++ 2 files changed, 146 insertions(+), 108 deletions(-) create mode 100644 koha-tmpl/intranet-tmpl/prog/js/addorderiso2709.js diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/addorderiso2709.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/addorderiso2709.tt index 06f04dd..9947df5 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/addorderiso2709.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/addorderiso2709.tt @@ -2,6 +2,7 @@ [% USE Asset %] [% USE KohaDates %] [% USE Branches %] +[% SET footerjs = 1 %] [% INCLUDE 'doc-head-open.inc' %] Koha › Acquisitions › Order staged MARC records [% IF ( batch_details ) %] @@ -12,108 +13,6 @@ [% INCLUDE 'doc-head-close.inc' %] - [% Asset.js("js/acquisitions-menu.js") | $raw %] - [% INCLUDE 'datatables.inc' %] - [% Asset.js("lib/jquery/plugins/jquery.checkboxes.min.js") | $raw %] - [% Asset.js("js/acq.js") | $raw %] - [% Asset.js("js/funds_sorts.js") | $raw %] - @@ -211,7 +110,8 @@
  • - + + Required
  • @@ -220,14 +120,15 @@
  • % - (If empty, discount rate from vendor will be used) +
    If empty, discount rate from vendor will be used
  • -
  • - +
  • [% IF ( close ) %] - [% Budget_name | html %] + + [% Budget_name | html %] [% ELSE %] - [% FOREACH budget IN budget_loop %] [% IF ( budget.b_id == biblio.budget_id ) %] @@ -243,6 +144,7 @@ [% END %] [% END %] + [% END %]
  • @@ -525,4 +427,20 @@ [% # /div.col-sm-6 %] [% # /div.row %] + +[% MACRO jsinclude BLOCK %] + [% Asset.js("js/acquisitions-menu.js") | $raw %] + [% INCLUDE 'datatables.inc' %] + [% Asset.js("lib/jquery/plugins/jquery.checkboxes.min.js") | $raw %] + [% Asset.js("js/acq.js") | $raw %] + [% Asset.js("js/funds_sorts.js") | $raw %] + [% Asset.js("js/addorderiso2709.js") | $raw %] + +[% END %] + [% INCLUDE 'intranet-bottom.inc' %] diff --git a/koha-tmpl/intranet-tmpl/prog/js/addorderiso2709.js b/koha-tmpl/intranet-tmpl/prog/js/addorderiso2709.js new file mode 100644 index 0000000..721d79f --- /dev/null +++ b/koha-tmpl/intranet-tmpl/prog/js/addorderiso2709.js @@ -0,0 +1,120 @@ +/* global dataTablesDefaults ERR_NO_RECORD_SELECTED ERR_INVALID_QUANTITY ERR_FUNDS_MISSING MSG_LOADING */ + +$(document).ready(function() { + $("#files").dataTable($.extend(true, {}, dataTablesDefaults, { + "aoColumnDefs": [ + { "bSortable": false, "bSearchable": false, 'aTargets': [ 'NoSort' ] }, + { "sType": "anti-the", "aTargets" : [ "anti-the" ] }, + { "sType": "title-string", "aTargets" : [ "title-string" ] } + ], + "sPaginationType": "four_button", + "aaSorting": [] + }) ); + + var all_budget_id = $("#all_budget_id"); + + if( !all_budget_id.val() ){ + $(".fund label, .fund select").addClass("required").prop("required", true); + $(".fund span.required").show(); + } + + all_budget_id.on("change", function(){ + if( $(this).val() != "" ){ + $(".fund label, .fund select").removeClass("required").prop("required", false); + $(".fund select").each(function(){ + if( $(this).val() == '' ){ + $(this).val( all_budget_id.val() ); + } + }); + $(".fund span.required").hide(); + } else { + $(".fund label, .fund select").addClass("required").prop("required", true); + $(".fund span.required").show(); + } + }); + + $("#records_to_import fieldset.rows div").hide(); + $('input:checkbox[name="import_record_id"]').change(function(){ + var container = $(this).parents("fieldset"); + if ( $(this).is(':checked') ) { + $(container).addClass("selected"); + $(container).removeClass("unselected"); + $(container).find("div").toggle(true); + } else { + $(container).addClass("unselected"); + $(container).removeClass("selected"); + $(container).find("div").toggle(false); + } + } ); + + $("input:checkbox").prop("checked", false); + $("div.biblio.unselected select").prop('disabled', false); + $("div.biblio.unselected input").prop('disabled', false); + + $("#checkAll").click(function(){ + $("#Aform").checkCheckboxes(); + $("input:checkbox[name='import_record_id']").change(); + return false; + }); + $("#unCheckAll").click(function(){ + $("#Aform").unCheckCheckboxes(); + $("input:checkbox[name='import_record_id']").change(); + return false; + }); + + $("#Aform").on("submit", function(){ + if ( $("input:checkbox[name='import_record_id']:checked").length < 1 ) { + alert( ERR_NO_RECORD_SELECTED ); + return false; + } + + var error = 0; + $("input:checkbox[name='import_record_id']:checked").parents('fieldset').find('input[name="quantity"]').each(function(){ + if ( $(this).val().length < 1 || isNaN( $(this).val() ) ) { + error++; + } + }); + if ( error > 0 ) { + alert( error + " " + ERR_INVALID_QUANTITY ); + return false; + + } + + if (! all_budget_id.val() ) { + // If there is no default fund + error = 0; + $(".selected [name='budget_id']").each(function(){ + if (!$(this).val()) { + error++; + } + }); + if ( error > 0 ) { + alert( ERR_FUNDS_MISSING ); + return false; + } + } + + return disableUnchecked($(this)); + }); + + $('#tabs').tabs(); + $(".previewData").on("click", function(e){ + e.preventDefault(); + var ltitle = $(this).text(); + var page = $(this).attr("href"); + $("#dataPreviewLabel").text(ltitle); + $("#dataPreview .modal-body").load(page + " div"); + $('#dataPreview').modal({show:true}); + }); + $("#dataPreview").on("hidden.bs.modal", function(){ + $("#dataPreviewLabel").html(""); + $("#dataPreview .modal-body").html("
    \"\" " + MSG_LOADING + "
    "); + }); +}); + +function disableUnchecked(){ + $("fieldset.biblio.unselected").each(function(){ + $(this).remove(); + }); + return 1; +} \ No newline at end of file -- 2.7.4