Remove outdated comment.
[mkws-moved-to-github.git] / tools / htdocs / mkws.js
index 2b34b21..d8065d6 100644 (file)
@@ -71,14 +71,13 @@ Handlebars.registerHelper('commaList', function(items, options) {
 // Handlebars helper 'translate'
 
 
-// Set up global mkws object. Contains a hash of session objects,
+// Set up global mkws object. Contains a hash of team objects,
 // indexed by windowid.
 var mkws = {
     authenticated: false,
-    init: false,
     debug_function: undefined, // will be set during initialisation
     debug_level: undefined, // will be initialised from mkws_config
-    sessions: {},
+    teams: {},
     locale_lang: {
        "de": {
            "Authors": "Autoren",
@@ -143,6 +142,8 @@ if (mkws_config == null || typeof mkws_config != 'object') {
 
 // wrapper for jQuery lib
 function _make_mkws_team($, teamName) {
+    var that = {};
+    var m_termName = teamName;
     var m_submitted = false;
     var m_query; // initially undefined
     var m_sort = 'relevance';
@@ -159,12 +160,6 @@ function _make_mkws_team($, teamName) {
     };
 
 
-    // call this function only once
-    if (mkws.init) {
-       alert("_make_mkws_team() called twice: how did that happen?!");
-       return;
-    }
-
     // if (console && console.log) // disabled, will fail in IE8
     // console.log("run _make_mkws_team(" + (teamName ? teamName : "") + ")");
 
@@ -218,7 +213,7 @@ function _make_mkws_team($, teamName) {
            dummy: "dummy"
        };
 
-       /* set global debug_level flag early */
+       /* Set global debug_level flag early so that debug() works */
        if (typeof mkws_config.debug_level !== 'undefined') {
            mkws.debug_level = mkws_config.debug_level;
        } else if (typeof config_default.debug_level !== 'undefined') {
@@ -1246,8 +1241,9 @@ function _make_mkws_team($, teamName) {
        }
     })();
 
-    // done
-    mkws.init = true;
+    // Bizarrely, 'that' is just an empty hash. All its state is in
+    // the closure variables defined earlier in this function.
+    return that;
 };
 
 
@@ -1396,11 +1392,41 @@ function _mkws_jquery_plugin ($) {
 
 // wrapper to call _make_mkws_team() after page load
 (function (j) {
+    function log(s) {
+       if (console && console.log) console.log(s);
+    }
     // enable before page load, so we could call it before mkws() runs
     _mkws_jquery_plugin(j);
 
     $(document).ready(function() {
-       // if (console && console.log) console.log("on load ready");
-       _make_mkws_team(j, null);
+       log("on load ready");
+       // Backwards compatibility: the special-case undefined team
+       mkws.teams[''] = _make_mkws_team(j, undefined);
+       log("Made the unnamed MKWS team");
+
+       // Find all nodes with class (NOT id) mkwsRecords, and
+       // determine their team from the mkwsTeam_* class. So:
+       //      <div class="mkwsRecords mkwsTeam_foo"/>
+       $('.mkwsResults, .mkwsRecords, .mkwsTermlists').each(function () {
+           var node = this;
+           var classes = this.className;
+           var list = classes.split(/\s+/)
+           var tname;
+           for (var i = 0; i < list.length; i++) {
+               var cname = list[i];
+               if (cname.match(/^mkwsTeam_/)) {
+                   tname = cname.replace(/^mkwsTeam_/, '');
+               }
+           }
+           if (!tname) {
+               alert("No MKWS team specified for mkwsRecords element with classes '" + classes + "'");
+           } else if (mkws.teams[tname]) {
+               log("MKWS team '" + tname + "' already exists, skipping");
+           } else {
+               mkws.teams[tname] = _make_mkws_team(j, tname);
+               log("Made MKWS team '" + tname + "'");
+           }
+       });
+       
     });
 })(jQuery);