Bug 7455: Authority subfields are cloned in the wrong field (follow-up 2)
authorFridolyn SOMERS <fridolyn.somers@biblibre.com>
Tue, 18 Sep 2012 15:34:51 +0000 (17:34 +0200)
committerJared Camins-Esakov <jcamins@cpbibliography.com>
Thu, 1 Nov 2012 13:50:53 +0000 (09:50 -0400)
Signed-off-by: Jared Camins-Esakov <jcamins@cpbibliography.com>
Passed-QA-by: Mason James <mtj@kohaaloha.com>
Signed-off-by: Jared Camins-Esakov <jcamins@cpbibliography.com>

authorities/authorities.pl
cataloguing/addbiblio.pl
koha-tmpl/intranet-tmpl/prog/en/js/cataloging.js
koha-tmpl/intranet-tmpl/prog/en/modules/authorities/authorities.tt

index 6ddb337..ee842e0 100755 (executable)
@@ -199,7 +199,7 @@ sub create_input {
             class=\"input_marceditor\"
             tabindex=\"1\" \/>
         <a href=\"#\" class=\"buttonDot\"
-        onclick=\"openAuth(this.parentNode.getElementsByTagName('input')[1].id,'".$tagslib->{$tag}->{$subfield}->{authtypecode}."'); return false;\" tabindex=\"1\" title=\"Tag Editor\">...</a>
+        onclick=\"openAuth(this.parentNode.getElementsByTagName('input')[1].id,'".$tagslib->{$tag}->{$subfield}->{authtypecode}."','auth'); return false;\" tabindex=\"1\" title=\"Tag Editor\">...</a>
     ";
     # it's a plugin field
     }
index 3db1a65..2d591c6 100755 (executable)
@@ -372,7 +372,8 @@ sub create_input {
     # it's a thesaurus / authority field
     }
     elsif ( $tagslib->{$tag}->{$subfield}->{authtypecode} ) {
-     if (C4::Context->preference("BiblioAddsAuthorities")) {
+        # when authorities auto-creation is allowed, do not set readonly
+        my $is_readonly = !C4::Context->preference("BiblioAddsAuthorities");
         $subfield_data{marc_value} =
             "<input type=\"text\"
                     id=\"".$subfield_data{id}."\"
@@ -381,26 +382,12 @@ sub create_input {
                     class=\"input_marceditor readonly\"
                     tabindex=\"1\"
                     size=\"67\"
-                    maxlength=\"".$subfield_data{maxlength}."\"
-                    \/>
+                    maxlength=\"".$subfield_data{maxlength}."\"".
+                    ($is_readonly ? "readonly=\"readonly\"" : "").
+                    "\/>
                     <span class=\"subfield_controls\"><a href=\"#\" class=\"buttonDot\"
-                       onclick=\"openAuth(this.parentNode.parentNode.getElementsByTagName('input')[1].id,'".$tagslib->{$tag}->{$subfield}->{authtypecode}."'); return false;\" tabindex=\"1\" title=\"Tag Editor\"><img src=\"/intranet-tmpl/prog/img/edit-tag.png\" alt=\"Tag Editor\" /></a></span>
-            ";
-      } else {
-        $subfield_data{marc_value} =
-            "<input type=\"text\"
-                    id=\"".$subfield_data{id}."\"
-                    name=\"".$subfield_data{id}."\"
-                    value=\"$value\"
-                    class=\"input_marceditor readonly\"
-                    tabindex=\"1\"
-                    size=\"67\"
-                    maxlength=\"".$subfield_data{maxlength}."\"
-                    readonly=\"readonly\"
-                    \/><span class=\"subfield_controls\"><a href=\"#\" class=\"buttonDot\"
-                        onclick=\"openAuth(this.parentNode.parentNode.getElementsByTagName('input')[1].id,'".$tagslib->{$tag}->{$subfield}->{authtypecode}."'); return false;\" tabindex=\"1\" title=\"Tag Editor\"><img src=\"/intranet-tmpl/prog/img/edit-tag.png\" alt=\"Tag Editor\" /></a></span>
+                       onclick=\"openAuth(this.parentNode.parentNode.getElementsByTagName('input')[1].id,'".$tagslib->{$tag}->{$subfield}->{authtypecode}."','biblio'); return false;\" tabindex=\"1\" title=\"Tag Editor\"><img src=\"/intranet-tmpl/prog/img/edit-tag.png\" alt=\"Tag Editor\" /></a></span>
             ";
-      }
     # it's a plugin field
     }
     elsif ( $tagslib->{$tag}->{$subfield}->{'value_builder'} ) {
index b9e0f23..a2b304a 100644 (file)
@@ -33,7 +33,8 @@ function getTagInputnameFilter(tagsubfieldid){
     return tagsubfield;
 }
 
-function openAuth(tagsubfieldid,authtype) {
+// if source is "auth", we are editing an authority otherwise it is a biblio
+function openAuth(tagsubfieldid,authtype,source) {
     // let's take the base of tagsubfield information (removing the indexes and the codes
     var element=document.getElementById(tagsubfieldid);
     var tagsubfield=getTagInputnameFilter(tagsubfieldid);
@@ -50,7 +51,7 @@ function openAuth(tagsubfieldid,authtype) {
             }
         }
     }
-    newin=window.open("../authorities/auth_finder.pl?authtypecode="+  authtype+ "&index="+tagsubfieldid+"&value_mainstr="+encodeURI(mainmainstring)+"&value_main="+encodeURI(mainstring), "_blank",'width=700,height=550,toolbar=false,scrollbars=yes');
+    newin=window.open("../authorities/auth_finder.pl?source="+source+"&authtypecode="+authtype+"&index="+tagsubfieldid+"&value_mainstr="+encodeURI(mainmainstring)+"&value_main="+encodeURI(mainstring), "_blank",'width=700,height=550,toolbar=false,scrollbars=yes');
 }
 
 function ExpandField(index) {
index 4df6746..5c3d566 100644 (file)
@@ -102,44 +102,6 @@ function Check(){
     }
 }
 
-
-// returns the subfieldcode based upon subfieldid writing
-function getSubfieldcode(tagsubfieldid){
-    // 3 : tag +3 : tagnumber +4 : number of _ +8 subfield -1 begins at 0  
-    return tagsubfieldid.substr(3+3+4+8-1,1);
-}
-
-// Take the base of tagsubfield information (removing the subfieldcodes and subfieldindexes)
-// returns the filter
-function getTagInputnameFilter(tagsubfieldid){
-    var tagsubfield=tagsubfieldid.substr(0,tagsubfieldid.lastIndexOf("_"));  
-    var tagcode=tagsubfield.substr(tagsubfield.lastIndexOf("_"));
-    tagsubfield=tagsubfield.substr(0,tagsubfield.lastIndexOf("_"));
-    tagsubfield=tagsubfield.substr(0,tagsubfield.lastIndexOf("_"));
-    tagsubfield=tagsubfield+"_."+tagcode;
-    return tagsubfield;  
-}
-
-function openAuth(tagsubfieldid,authtype) {
-    // let's take the base of tagsubfield information (removing the indexes and the codes
-    var element=document.getElementById(tagsubfieldid);
-    var tagsubfield=getTagInputnameFilter(tagsubfieldid);
-    var elementsubfcode=getSubfieldcode(element.name);
-    var mainmainstring=element.value;
-    var mainstring="";  
-    var inputs = element.parentNode.parentNode.getElementsByTagName("input");
-
-    for (var myindex =0; myindex<inputs.length;myindex++){
-        if (inputs[myindex].name && inputs[myindex].name.match(tagsubfield)){
-            var subfieldcode=getSubfieldcode(inputs[myindex].name);
-            if (isNaN(parseInt(subfieldcode)) && inputs[myindex].value != "" && subfieldcode!=elementsubfcode){
-                mainstring=inputs[myindex].value+" "+mainstring;
-            }      
-        }
-    }           
-    newin=window.open("../authorities/auth_finder.pl?source=auth&authtypecode="+  authtype+ "&index="+tagsubfieldid+"&value_mainstr="+encodeURI(mainmainstring)+"&value_main="+encodeURI(mainstring), "_blank",'width=700,height=550,toolbar=false,scrollbars=yes');
-}
-
 function AddField(field,cntrepeatfield) {
     document.forms['f'].op.value = "addfield";
     document.forms['f'].addfield_field.value=field;