[Koha-patches] [PATCH] [HEAD] (bug #3170) check if mandatory fields are not empty

Nahuel ANGELINETTI nahuel.angelinetti at biblibre.com
Thu Apr 30 15:09:36 CEST 2009


This patch make authority and biblio add/edit to check that at least one subfield of mandatory fields are filled-in.
---
 .../prog/en/modules/authorities/authorities.tmpl   |   51 ++++++++++++++++++--
 .../prog/en/modules/cataloguing/addbiblio.tmpl     |   46 +++++++++++++++++-
 2 files changed, 91 insertions(+), 6 deletions(-)

diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/authorities/authorities.tmpl b/koha-tmpl/intranet-tmpl/prog/en/modules/authorities/authorities.tmpl
index 8b89e92..f32e445 100644
--- a/koha-tmpl/intranet-tmpl/prog/en/modules/authorities/authorities.tmpl
+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/authorities/authorities.tmpl
@@ -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;
     }
diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/cataloguing/addbiblio.tmpl b/koha-tmpl/intranet-tmpl/prog/en/modules/cataloguing/addbiblio.tmpl
index 0a3c92f..0927720 100644
--- a/koha-tmpl/intranet-tmpl/prog/en/modules/cataloguing/addbiblio.tmpl
+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/cataloguing/addbiblio.tmpl
@@ -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 {
-- 
1.6.0.4




More information about the Koha-patches mailing list