Bug 10543: fix false warnings from checks of mandatory item fields

Under certain circumstances, when editing an item, you get a popup
warning
  "1 mandatory fields empty (highlighted)".

Even though all mandatory fields are filled in.

This occurs when there is a field with a huge content (more than 100
characters) that gets displayed in a textarea instead of input.

This patch corrects the 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 optional 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@catalyst.net.nz>
Signed-off-by: Katrin Fischer <Katrin.Fischer.83@web.de>
Notes on last patch.

Signed-off-by: Galen Charlton <gmc@esilibrary.com>
(cherry picked from commit 651ea298ea)
Signed-off-by: Tomas Cohen Arazi <tomascohen@gmail.com>
Couldn't reproduce using $i as in the test plan, but $o triggered the problem, which this patch series fix.
(cherry picked from commit 9f5f05d40d)
Signed-off-by: Bernardo Gonzalez Kriegel <bgkriegel@gmail.com>
(cherry picked from commit 9f5f05d40d)
This commit is contained in:
Fridolyn SOMERS 2013-07-05 15:20:59 +02:00 committed by Bernardo Gonzalez Kriegel
parent 1374b9ecb5
commit 60b679fa22
2 changed files with 22 additions and 17 deletions

View File

@ -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;
}

View File

@ -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) {