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   |   48 ++++++++++++++++++-
 .../prog/en/modules/cataloguing/addbiblio.tmpl     |   49 ++++++++++++++++++-
 2 files changed, 92 insertions(+), 5 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 c27a01f..f21e161 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,24 @@
  */
 function AreMandatoriesNotOk(){
     var mandatories = new Array();
+    var mandatoriesfields = new Array();
     var tab = new Array();
     var label = new Array();
     var flag=0;
-    <!-- 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' 
ESCAPE=JS-->");<!-- /TMPL_IF --><!-- /TMPL_LOOP --><!-- /TMPL_LOOP --><!-- 
/TMPL_LOOP -->
+                        label.push("<!-- TMPL_VAR NAME='marc_lib' 
ESCAPE=JS-->");
+          <!-- /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++){
         //alert (  mandatories[i]);
@@ -51,6 +63,38 @@ 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(flag){
       return StrAlert;
   } else {
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 407d4a0..f9a4487 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,25 @@ 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);
@@ -105,7 +116,39 @@ function AreMandatoriesNotOk(){
         //StrAlert += "\t* "+label[i]+_(" in tab ")+tab[i]+"\n"; 
         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

_______________________________________________
Koha-patches mailing list
[email protected]
http://lists.koha.org/mailman/listinfo/koha-patches

Reply via email to