(bug #3170) check if mandatory fields are not empty

This patch make authority and biblio add/edit to check that at least one subfield of mandatory fields are filled-in.

Signed-off-by: Galen Charlton <galen.charlton@liblime.com>
Signed-off-by: Henri-Damien LAURENT <henridamien.laurent@biblibre.com>
This commit is contained in:
Nahuel ANGELINETTI 2009-04-30 15:09:36 +02:00 committed by Henri-Damien LAURENT
parent d502715f53
commit ae47264e2f
2 changed files with 91 additions and 6 deletions

View File

@ -35,12 +35,22 @@
*/
function AreMandatoriesNotOk(){
var mandatories = new Array();
var mandatoriesfields = new Array();
var tab = new Array();
var label = new Array();
<!-- TMPL_LOOP NAME='BIG_LOOP' --><!-- TMPL_LOOP NAME='innerloop' --><!-- TMPL_LOOP NAME='subfield_loop'--><!-- TMPL_IF NAME='mandatory'-->mandatories.push("<!-- TMPL_VAR NAME='id' -->");
tab.push("<!-- TMPL_VAR NAME='number' -->");
label.push("<!-- TMPL_VAR NAME='marc_lib' ESCAPE=JS-->");
<!-- /TMPL_IF --><!-- /TMPL_LOOP --><!-- /TMPL_LOOP --><!-- /TMPL_LOOP -->
<!-- TMPL_LOOP NAME='BIG_LOOP' -->
<!-- TMPL_LOOP NAME='innerloop' -->
<!-- TMPL_IF NAME="mandatory" -->
mandatoriesfields.push(new Array("<!-- TMPL_VAR NAME="tag" -->","<!-- TMPL_VAR NAME="index" -->"));
<!-- /TMPL_IF -->
<!-- TMPL_LOOP NAME='subfield_loop'-->
<!-- TMPL_IF NAME='mandatory'-->mandatories.push("<!-- TMPL_VAR NAME='id' -->");
tab.push("<!-- TMPL_VAR NAME='number' -->");
label.push("<!-- TMPL_VAR NAME='marc_lib' ESCAPE=JS-->");
<!-- /TMPL_IF -->
<!-- /TMPL_LOOP -->
<!-- /TMPL_LOOP -->
<!-- /TMPL_LOOP -->
var StrAlert = "";
for(var i=0,len=mandatories.length; i<len ; i++){
var id_string = mandatories[i];
@ -50,6 +60,39 @@ function AreMandatoriesNotOk(){
StrAlert += "\t* "+label[i]+_(" in tab ")+tab[i]+"\n";
}
}
/* Check for mandatories field(not subfields) */
for(var i=0,len=mandatoriesfields.length; i<len; i++){
isempty = true;
arr = mandatoriesfields[i];
divid = "tag_" + arr[0] + "_" + arr[1];
varegexp = new RegExp("^tag_" + arr[0] + "_code_");
elem = document.getElementById(divid);
eleminputs = elem.getElementsByTagName('input');
for(var j=0,len2=eleminputs.length; j<len2; j++){
if(eleminputs[j].name.match(varegexp) && eleminputs[j].value){
/* tag_801_subfield_c_841304_545657 */
inputregexp = new RegExp("^tag_" + arr[0] + "_subfield_" + eleminputs[j].value + "_" + arr[1]);
for( var k=0; k<len2; k++){
if(eleminputs[k].id.match(inputregexp) && eleminputs[k].value){
isempty = false
}
}
}
}
if(isempty){
flag = 1;
StrAlert += "\t* Field " + arr[0] + " is mandatory, at least one of its subfields must be filled\n";
}
}
if(StrAlert){
return _("Can't save this record because the following field aren't filled :\n\n") + StrAlert;
}

View File

@ -72,14 +72,24 @@ function PopupZ3950() {
*/
function AreMandatoriesNotOk(){
var mandatories = new Array();
var mandatoriesfields = new Array();
var tab = new Array();
var label = new Array();
var flag=0;
var tabflag= new Array();
<!-- TMPL_LOOP NAME='BIG_LOOP' --><!-- TMPL_LOOP NAME='innerloop' --><!-- TMPL_LOOP NAME='subfield_loop'--><!-- TMPL_IF NAME='mandatory'-->mandatories.push("<!-- TMPL_VAR NAME='id' -->");
<!-- TMPL_LOOP NAME='BIG_LOOP' -->
<!-- TMPL_LOOP NAME='innerloop' -->
<!-- TMPL_IF NAME="mandatory" -->
mandatoriesfields.push(new Array("<!-- TMPL_VAR NAME="tag" -->","<!-- TMPL_VAR NAME="index" -->"));
<!-- /TMPL_IF -->
<!-- TMPL_LOOP NAME='subfield_loop'-->
<!-- TMPL_IF NAME='mandatory'-->mandatories.push("<!-- TMPL_VAR NAME='id' -->");
tab.push("<!-- TMPL_VAR NAME='number' -->");
label.push("<!-- TMPL_VAR NAME='marc_lib' -->");
<!-- /TMPL_IF --><!-- /TMPL_LOOP --><!-- /TMPL_LOOP --><!-- /TMPL_LOOP -->
<!-- /TMPL_IF -->
<!-- /TMPL_LOOP -->
<!-- /TMPL_LOOP -->
<!-- /TMPL_LOOP -->
var StrAlert = _("Can't save this record because the following field aren't filled :\n\n");
for(var i=0,len=mandatories.length; i<len ; i++){
var tag=mandatories[i].substr(4,3);
@ -106,6 +116,38 @@ function AreMandatoriesNotOk(){
flag=1;
}
}
/* Check for mandatories field(not subfields) */
for(var i=0,len=mandatoriesfields.length; i<len; i++){
isempty = true;
arr = mandatoriesfields[i];
divid = "tag_" + arr[0] + "_" + arr[1];
varegexp = new RegExp("^tag_" + arr[0] + "_code_");
elem = document.getElementById(divid);
eleminputs = elem.getElementsByTagName('input');
for(var j=0,len2=eleminputs.length; j<len2; j++){
if(eleminputs[j].name.match(varegexp) && eleminputs[j].value){
/* tag_801_subfield_c_841304_545657 */
inputregexp = new RegExp("^tag_" + arr[0] + "_subfield_" + eleminputs[j].value + "_" + arr[1]);
for( var k=0; k<len2; k++){
if(eleminputs[k].id.match(inputregexp) && eleminputs[k].value){
isempty = false
}
}
}
}
if(isempty){
flag = 1;
StrAlert += "\t* Field " + arr[0] + " is mandatory, at least one of its subfields must be filled.\n";
}
}
if(flag){
return StrAlert;
} else {