From 18b737f07c173363a967cc96f914e01e399c35e2 Mon Sep 17 00:00:00 2001 From: Fridolyn SOMERS Date: Fri, 5 Jul 2013 15:20:59 +0200 Subject: [PATCH] [SIGNED-OFF] Bug 10543 - false mandatory warning in additem When editing a item, you get a popup warning : "1 mandatory fields empty (highlighted)". But all mandatory fields are filled. This is because there is a field with a huge content (more than 100 characters), it it displayed in a textarea instead of input. This patch corrects javascript form check by using siblings(). Also adds a more precise filter to find mandatory inputs because looking in full page may bring unwanted results. Test plan : - In a framework, make sure you have in item field : An optionnal subfield (without authorised value) then a mandatory subfield then an optional subfield next to mandatory subfield For example : $i (optional), $r (mandatory) and $s (optional) - Open a biblio record and create a new item - Enter more than 100 characters in $i, fill $r and $s - Click "Add item" - Edit this item => You get a textarea for $i - Empty $s and Save => Without patch, you get a warning and form is not saved and you see that $s is yellow while it should be $r => With patch, form is saved - Re-edit this item - Empty $r and save => You get a warning and form is not saved Signed-off-by: Srdjan --- koha-tmpl/intranet-tmpl/prog/en/js/cataloging.js | 17 +++++++++++++++++ .../prog/en/modules/cataloguing/additem.tt | 22 +++++----------------- 2 files changed, 22 insertions(+), 17 deletions(-) diff --git a/koha-tmpl/intranet-tmpl/prog/en/js/cataloging.js b/koha-tmpl/intranet-tmpl/prog/en/js/cataloging.js index 614e698..6b49579 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/js/cataloging.js +++ b/koha-tmpl/intranet-tmpl/prog/en/js/cataloging.js @@ -464,3 +464,20 @@ function CloneItemSubfield(original){ // insert this line on the page original.parentNode.insertBefore(clone,original.nextSibling); } + +/** + * Check mandatory subfields of a cataloging form and adds missing class to those who are empty.
+ * @param p the parent object of subfields to check + * @return the number of empty mandatory subfields + */ +function CheckMandatorySubfields(p){ + var total = 0; + $(p).find(".subfield_line input[name='mandatory'][value='1']").each(function(i){ + var editor = $(this).siblings("[name='field_value']"); + if (!editor.val()) { + editor.addClass("missing"); + total++; + } + }); + return total; +} diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/cataloguing/additem.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/cataloguing/additem.tt index 74b6d30..3c385a6 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/cataloguing/additem.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/cataloguing/additem.tt @@ -40,27 +40,15 @@ function active(numlayer) } } function Check(f) { - var total_errors=0; - $("input[name='mandatory'],select[name='mandatory']").each(function(i){ - if($(this).val() == 1){ - var mandatory_field = $("input[name='field_value'],select[name='field_value']").eq(i); - if(mandatory_field.val() == ''){ - mandatory_field.addClass("missing"); - total_errors++; - } - } - }); - - var alertString2; - if (total_errors==0) { - return true; - } else { - alertString2 = _("Form not submitted because of the following problem(s)"); + var total_errors = CheckMandatorySubfields(f); + if (total_errors > 0) { + var alertString2 = _("Form not submitted because of the following problem(s)"); alertString2 += "\n------------------------------------------------------------------------------------\n"; - alertString2 += "\n- "+ total_errors+_(" mandatory fields empty (highlighted)"); + alertString2 += "\n- "+ total_errors + _(" mandatory fields empty (highlighted)"); alert(alertString2); return false; } + return true; } function CheckMultipleAdd(f) { -- 1.8.1.2