Merge branch 'master' of git.evergreen-ils.org:Evergreen into template-toolkit-opac...
authorBill Erickson <berick@esilibrary.com>
Wed, 31 Aug 2011 13:36:52 +0000 (09:36 -0400)
committerBill Erickson <berick@esilibrary.com>
Wed, 31 Aug 2011 13:36:52 +0000 (09:36 -0400)
Open-ILS/web/js/dojo/openils/AuthorityControlSet.js
Open-ILS/web/opac/skin/default/js/authbrowse.js
Open-ILS/xul/staff_client/server/cat/marcedit.js

index 990583f..36ac521 100644 (file)
@@ -259,6 +259,26 @@ if(!dojo._hasResource["openils.AuthorityControlSet"]) {
             return acs_list;
         },
 
+        findControlSetsForAuthorityTag : function (tag) {
+            var me = this;
+            var old_acs = this.controlSetId();
+
+            var acs_list = dojo.filter(
+                me.controlSetList(),
+                function(acs_id) {
+                    var a = me.controlSet(acs_id);
+                    for (var btag in a.control_map) {
+                        for (var sf in a.control_map[btag]) {
+                            if (a.control_map[btag][sf][tag]) return true;
+                        }
+                    }
+                    return false;
+                }
+            );
+            this.controlSetId(old_acs);
+            return acs_list;
+        },
+
         bibToAuthority : function (field) {
             var b_field = this.bibFieldByTag(field.tag);
 
index 1e58dd5..ff4c10d 100644 (file)
@@ -156,6 +156,7 @@ function renderAuthorityRecord(m, control_set, auth_id) {
     var table = dojo.create("table", {"className": "authority-record"});
     var tbody = dojo.create("tbody", {"id": "authority_" + auth_id}, table);
 
+
     dojo.forEach(
         main_entries, function(af) { renderAuthorityMainEntry(m, af, tbody); }
     );
@@ -187,16 +188,20 @@ function displayAuthorityRecords(axis, doc) {
         function(record) {
             var m = new MARC.Record({"xml": record});
 
-            /* is 001 reliable for this? I'm guessing not */
-            var auth_id = m.field("001").data;
+            var auth_id = m.subfield("901","c")[1];
             auth_ids.push(auth_id);
 
-            var cs = acs_helper.controlSetByThesaurusCode(
-                m.extractFixedField("Subj")
-            );
+            /* best guess */
+            var t = m.field(/^1/);
+            if (dojo.isArray(t)) t = t[0];
+
+            var cs = acs_helper.findControlSetsForAuthorityTag( t.tag );
+            if (dojo.isArray(cs)) cs = cs[0];
+
+            acs_helper.controlSetId( cs );
 
             dojo.place(
-                renderAuthorityRecord(m, cs.raw, auth_id),
+                renderAuthorityRecord(m, acs_helper.controlSet().raw, auth_id),
                 "authority-record-holder"
             );
         }
index 7ea4e04..6a8680b 100644 (file)
@@ -1928,11 +1928,23 @@ function summarizeField(sf) {
     source_f.ind1 = sf.parent().@ind1.toString();
     source_f.ind1 = sf.parent().@ind2.toString();
 
+    var found_acs = [];
+    dojo.forEach( acs.controlSetList(), function (acs_id) {
+        if (acs.controlSet(acs_id).control_map[sf.parent().@tag]) found_acs.push(acs_id);
+    });
+
+    var cmap;
+    if (!found_acs.length) {
+        return false;
+    } else {
+        cmap = acs.controlSet(found_acs[0]).control_map;
+    }
+
     for (var i = 0; i < sf.parent().subfield.length(); i++) {
         var sf_iter = sf.parent().subfield[i];
 
         /* Filter out subfields that are not controlled for this tag */
-        if (!control_map[source_f.tag][sf_iter.@code.toString()]) {
+        if (!cmap[source_f.tag][sf_iter.@code.toString()]) {
             continue;
         }