[Koha-patches] [PATCH] [SIGNED-OFF] Bug 10543 - false mandatory warning in additem

Srdjan srdjan at catalyst.net.nz
Wed Jul 17 04:36:28 CEST 2013


From: Fridolyn SOMERS <fridolyn.somers at biblibre.com>

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 <srdjan at catalyst.net.nz>
---
 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 <code>missing</code> class to those who are empty.<br>
+ * @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


More information about the Koha-patches mailing list