Last part of MKWS-322 (Use "facets" widget in place of "termlists")
[mkws-moved-to-github.git] / src / mkws-core.js
index df7382f..6b71bc1 100644 (file)
@@ -28,7 +28,7 @@ window.mkws = {
       "Subjects": "Schlagwörter",
       "Sources": "Daten und Quellen",
       "source": "datenquelle",
-      "Termlists": "Termlisten",
+      "Facets": "Termlisten",
       "Next": "Weiter",
       "Prev": "Zurück",
       "Search": "Suche",
@@ -57,7 +57,7 @@ window.mkws = {
       "Subjects": "Emner",
       "Sources": "Kilder",
       "source": "kilder",
-      "Termlists": "Termlists",
+      "Facets": "Termlists",
       "Next": "Næste",
       "Prev": "Forrige",
       "Search": "Søg",
@@ -132,6 +132,11 @@ mkws.getParameterByName = function(name, url) {
 
 
 mkws.registerWidgetType = function(name, fn) {
+  if(mkws._old2new.hasOwnProperty(name)) {
+      mkws.log("Warning: registerWidgetType old widget name: " + name + " => " + mkws._old2new[name]);
+      name = mkws._old2new[name];
+  }
+
   mkws.widgetType2function[name] = fn;
   mkws.log("registered widget-type '" + name + "'");
 };
@@ -143,9 +148,7 @@ mkws.promotionFunction = function(name) {
 
 mkws.setMkwsConfig = function(overrides) {
   // Set global log_level flag early so that mkws.log() works
-  // Fall back to old "debug_level" setting for backwards compatibility
   var tmp = overrides.log_level;
-  if (typeof(tmp) === 'undefined') tmp = overrides.debug_level;
   if (typeof(tmp) !== 'undefined') mkws.log_level = tmp;
 
   var config_default = {
@@ -295,7 +298,18 @@ mkws.log("Using window.name '" + window.name + "'");
     'MOTDContainer': 'motd-container',
     'Perpage': 'per-page',
     'SearchForm': 'search-form',
+    'ReferenceUniverse': 'reference-universe',
+    'Termlists': 'facets'
   };
+  // Annoyingly, there is no built-in way to invert a hash
+  var _new2old = {};
+  for (var key in _old2new) {
+    if(_old2new.hasOwnProperty(key)) {
+      _new2old[_old2new[key]] = key;
+    }
+  }
+
+  mkws._old2new = _old2new;
 
   function handleNodeWithTeam(node, callback) {
     // First branch for DOM objects; second branch for jQuery objects
@@ -314,14 +328,18 @@ mkws.log("Using window.name '" + window.name + "'");
     for (var i = 0; i < list.length; i++) {
       var cname = list[i];
       if (cname.match(/^mkws-team-/)) {
+        // New-style teamnames of the form mkws-team-xyz
         teamName = cname.replace(/^mkws-team-/, '');
+      } else if (cname.match(/^mkwsTeam_/)) {
+        // Old-style teamnames of the form mkwsTeam_xyz
+        teamName = cname.replace(/^mkwsTeam_/, '');
       } else if (cname.match(/^mkws-/)) {
-        // New-style names of the form mkws-foo-bar
+        // New-style names of the from mkws-foo-bar
         type = cname.replace(/^mkws-/, '');
       } else if (cname.match(/^mkws/)) {
         // Old-style names of the form mkwsFooBar
         var tmp = cname.replace(/^mkws/, '');
-        type = _old2new[tmp] || tmp;
+        type = _old2new[tmp] || tmp.toLowerCase();
       }
     }
 
@@ -330,7 +348,7 @@ mkws.log("Using window.name '" + window.name + "'");
       teamName = "AUTO";
       // Autosearch widgets don't join team AUTO if there is already an
       // autosearch on the team or the team has otherwise gotten a query
-      if (node.hasAttribute("autosearch")) {
+      if (node.getAttribute("autosearch")) {
         if (mkws.autoHasAuto ||
             mkws.teams["AUTO"] && mkws.teams["AUTO"].config["query"]) {
           log("AUTO team already has a query, using unique team");
@@ -461,7 +479,11 @@ mkws.log("Using window.name '" + window.name + "'");
        s += '.mkws-' + type;
        s += ',.mkws-' + type + "-container-wide";
        s += ',.mkws-' + type + "-container-narrow";
-        // ### Do we need to do something about old-style names?
+        // Annoyingly, we also need to recognise old-style names
+        var oldtype = _new2old[type] || type.charAt(0).toUpperCase() + type.slice(1);
+       s += ',.mkws' + oldtype;
+       s += ',.mkws' + oldtype + "-Container-wide";
+       s += ',.mkws' + oldtype + "-Container-narrow";
       }
       return s;
     }
@@ -478,7 +500,6 @@ mkws.log("Using window.name '" + window.name + "'");
         var myTeam = mkws.teams[tname];
         if (!myTeam) {
           myTeam = mkws.teams[tname] = mkws.makeTeam($, tname);
-          log("made MKWS team '" + tname + "'");
         }
 
         var oldHTML = this.innerHTML;
@@ -486,7 +507,7 @@ mkws.log("Using window.name '" + window.name + "'");
         myTeam.addWidget(myWidget);
         var newHTML = this.innerHTML;
         if (newHTML !== oldHTML) {
-          log("widget " + tname + ":" + type + " HTML changed: reparsing");
+          myTeam.log("widget " + type + " HTML changed: reparsing");
           makeWidgetsWithin(level+1, $(this));
         }
       });
@@ -586,7 +607,7 @@ mkws.log("Using window.name '" + window.name + "'");
     for (var tName in mkws.teams) {
       var myTeam = mkws.teams[tName]
       myTeam.makePz2();
-      log("made PZ2 object for team '" + tName + "'");
+      myTeam.log("made PZ2 object");
       /*
         myTeam.visitWidgets(function(t, w) {
           log("  has widget of type '" + t + "': " + w);