my_paz remains local to each widget team, and is not copied up into
[mkws-moved-to-github.git] / tools / htdocs / mkws.js
index 439ee36..3860b04 100644 (file)
@@ -1,32 +1,14 @@
-/*! MKWS, the MasterKey Widget Set. Copyright (C) 2013, Index Data */
+/*! MKWS, the MasterKey Widget Set. Copyright (C) 2013-2014, Index Data */
 
 "use strict"; // HTML5: disable for debug_level >= 2
 
 // Set up global mkws object. Contains a hash of session objects,
 // indexed by windowid.
 var mkws = {
+    authenticated: false,
     sessions: {}
 };
 
-// Define empty mkws_config for simple applications that don't define it.
-if (mkws_config == null || typeof mkws_config != 'object') {
-    var mkws_config = {};
-}
-
-// wrapper for jQuery lib
-function _make_mkws_team($) {
-    // if (console && console.log) console.log("run _make_mkws_team()");
-
-    // call this function only once
-    if (mkws.init) {
-       alert("_make_mkws_team() called twice: how did that happen?!");
-       return;
-    }
-
-mkws.sort = 'relevance';
-mkws.authenticated = false;
-mkws.filters = [];
-
 mkws.locale_lang = {
     "de": {
        "Authors": "Autoren",
@@ -81,8 +63,27 @@ mkws.locale_lang = {
     }
 };
 
+// Define empty mkws_config for simple applications that don't define it.
+if (mkws_config == null || typeof mkws_config != 'object') {
+    var mkws_config = {};
+}
+
+// wrapper for jQuery lib
+function _make_mkws_team($, teamName) {
+    if (console && console.log)
+       console.log("run _make_mkws_team(" + (teamName ? teamName : "") + ")");
+
+    // call this function only once
+    if (mkws.init) {
+       alert("_make_mkws_team() called twice: how did that happen?!");
+       return;
+    }
+
+var m_sort = 'relevance';
+var m_filters = [];
+
 // keep time state for debugging
-mkws.debug_time = {
+var m_debug_time = {
     "start": $.now(),
     "last": $.now()
 };
@@ -96,8 +97,8 @@ mkws.debug_function = function (string) {
     }
 
     var now = $.now();
-    var timestamp = ((now - mkws.debug_time.start)/1000).toFixed(3) + " (+" + ((now - mkws.debug_time.last)/1000).toFixed(3) + ") "
-    mkws.debug_time.last = now;
+    var timestamp = ((now - m_debug_time.start)/1000).toFixed(3) + " (+" + ((now - m_debug_time.last)/1000).toFixed(3) + ") "
+    m_debug_time.last = now;
 
     // you need to disable use strict at the top of the file!!!
     if (mkws.debug_level >= 3) {
@@ -216,10 +217,8 @@ Handlebars.registerHelper('commaList', function(items, options) {
 }
 
 
-mkws.sort = mkws_config.sort_default;
-debug("copied mkws_config.sort_default '" + mkws_config.sort_default + "' to mkws.sort");
-
-mkws.usesessions = mkws_config.use_service_proxy ? false : true;
+m_sort = mkws_config.sort_default;
+debug("copied mkws_config.sort_default '" + mkws_config.sort_default + "' to m_sort");
 
 if (mkws_config.query_width < 5 || mkws_config.query_width > 150) {
     debug("Reset query width: " + mkws_config.query_width);
@@ -237,6 +236,12 @@ for (var key in mkws_config) {
     }
 }
 
+// protocol independend link for pazpar2: "//mkws/sp" -> "https://mkws/sp"
+if (mkws_config.pazpar2_url.match(/^\/\//)) {
+    mkws_config.pazpar2_url = document.location.protocol + mkws_config.pazpar2_url;
+    debug("adjust protocol independend links: " + mkws_config.pazpar2_url);
+}
+
 debug("Create main pz2 object");
 // create a parameters array and pass it to the pz2's constructor
 // then register the form submit event with the pz2.search function
@@ -249,12 +254,10 @@ var my_paz = new pz2( { "onshow": my_onshow,
                     "onterm": my_onterm,
                     "termlist": "xtargets,subject,author",
                     "onbytarget": my_onbytarget,
-                   "usesessions" : mkws.usesessions,
+                    "usesessions" : mkws_config.use_service_proxy ? false : true,
                     "showResponseType": '', // or "json" (for debugging?)
                     "onrecord": my_onrecord } );
 
-mkws.my_paz = my_paz; // export
-
 // some state vars
 var curPage = 1;
 var recPerPage = 20;
@@ -455,7 +458,7 @@ function newSearch(query, sort, targets, windowid)
        return;
     }
 
-    mkws.filters = []
+    m_filters = []
     redraw_navi(); // ### should use windowid
     resetPage(); // ### the globals it resents should be indexed by windowid
     loadSelect(); // ### should use windowid
@@ -469,7 +472,7 @@ function onSelectDdChange()
     if (!submitted) return false;
     resetPage();
     loadSelect();
-    my_paz.show(0, recPerPage, mkws.sort);
+    my_paz.show(0, recPerPage, m_sort);
     return false;
 }
 
@@ -489,15 +492,15 @@ function triggerSearch (query, sort, targets, windowid)
        mkws.query = query;
     }
     if (sort) {
-       mkws.sort = sort;
+       m_sort = sort;
     }
     if (targets) {
        // ### should support multiple |-separated targets
-       mkws.filters.push({ id: targets, name: targets });
+       m_filters.push({ id: targets, name: targets });
     }
 
-    for (var i in mkws.filters) {
-       var filter = mkws.filters[i];
+    for (var i in m_filters) {
+       var filter = m_filters[i];
        if (filter.id) {
            if (pp2filter)
                pp2filter += ",";
@@ -521,16 +524,16 @@ function triggerSearch (query, sort, targets, windowid)
     if (windowid) {
        params.windowid = windowid;
     }
-    debug("triggerSearch(" + mkws.query + "): filters = " + $.toJSON(mkws.filters) + ", pp2filter = " + pp2filter + ", params = " + $.toJSON(params));
+    debug("triggerSearch(" + mkws.query + "): filters = " + $.toJSON(m_filters) + ", pp2filter = " + pp2filter + ", params = " + $.toJSON(params));
 
-    my_paz.search(mkws.query, recPerPage, mkws.sort, pp2filter, undefined, params);
+    my_paz.search(mkws.query, recPerPage, m_sort, pp2filter, undefined, params);
 }
 
 function loadSelect ()
 {
     if (document.mkwsSelect) {
        if (document.mkwsSelect.mkwsSort)
-           mkws.sort = document.mkwsSelect.mkwsSort.value;
+           m_sort = document.mkwsSelect.mkwsSort.value;
        if (document.mkwsSelect.mkwsPerpage)
            recPerPage = document.mkwsSelect.mkwsPerpage.value;
     }
@@ -540,7 +543,7 @@ function loadSelect ()
 mkws.limitQuery = function (field, value)
 {
     debug("limitQuery(field=" + field + ", value=" + value + ")");
-    mkws.filters.push({ field: field, value: value });
+    m_filters.push({ field: field, value: value });
     redraw_navi();
     resetPage();
     loadSelect();
@@ -552,7 +555,7 @@ mkws.limitQuery = function (field, value)
 mkws.limitTarget  = function (id, name)
 {
     debug("limitTarget(id=" + id + ", name=" + name + ")");
-    mkws.filters.push({ id: id, name: name });
+    m_filters.push({ id: id, name: name });
     redraw_navi();
     resetPage();
     loadSelect();
@@ -564,8 +567,8 @@ mkws.delimitQuery = function (field, value)
 {
     debug("delimitQuery(field=" + field + ", value=" + value + ")");
     var newFilters = [];
-    for (var i in mkws.filters) {
-       var filter = mkws.filters[i];
+    for (var i in m_filters) {
+       var filter = m_filters[i];
        if (filter.field &&
            field == filter.field &&
            value == filter.value) {
@@ -575,7 +578,7 @@ mkws.delimitQuery = function (field, value)
            newFilters.push(filter);
        }
     }
-    mkws.filters = newFilters;
+    m_filters = newFilters;
 
     redraw_navi();
     resetPage();
@@ -589,8 +592,8 @@ mkws.delimitTarget = function (id)
 {
     debug("delimitTarget(id=" + id + ")");
     var newFilters = [];
-    for (var i in mkws.filters) {
-       var filter = mkws.filters[i];
+    for (var i in m_filters) {
+       var filter = m_filters[i];
        if (filter.id) {
            debug("delimitTarget() removing filter " + $.toJSON(filter));
        } else {
@@ -598,7 +601,7 @@ mkws.delimitTarget = function (id)
            newFilters.push(filter);
        }
     }
-    mkws.filters = newFilters;
+    m_filters = newFilters;
 
     redraw_navi();
     resetPage();
@@ -614,11 +617,11 @@ function redraw_navi ()
     if (!navi) return;
 
     var text = "";
-    for (var i in mkws.filters) {
+    for (var i in m_filters) {
        if (text) {
            text += " | ";
        }
-       var filter = mkws.filters[i];
+       var filter = m_filters[i];
        if (filter.id) {
            text += 'Source: <a class="crossout" href="#" onclick="mkws.delimitTarget(' +
                "'" + filter.id + "'" + ');return false;">' + filter.name + '</a>';
@@ -1038,7 +1041,7 @@ function mkws_html_switch() {
 }
 
 function mkws_html_sort() {
-    debug("HTML sort, mkws.sort = '" + mkws.sort + "'");
+    debug("HTML sort, m_sort = '" + m_sort + "'");
     var sort_html = '<select name="mkwsSort" id="mkwsSort">';
 
     for(var i = 0; i < mkws_config.sort_options.length; i++) {
@@ -1047,7 +1050,7 @@ function mkws_html_sort() {
        var val = opt.length == 1 ? opt[0] : opt[1];
 
        sort_html += '<option value="' + key + '"';
-       if (mkws.sort == key || mkws.sort == val) {
+       if (m_sort == key || m_sort == val) {
            sort_html += ' selected="selected"';
        }
        sort_html += '>' + M(val) + '</option>';
@@ -1084,7 +1087,7 @@ function mkws_service_proxy_auth(auth_url, auth_domain, pp2_url) {
     debug("Run service proxy auth URL: " + auth_url);
 
     if (!auth_domain) {
-       auth_domain = pp2_url.replace(/^https?:\/\/(.*?)\/.*/, '$1');
+       auth_domain = pp2_url.replace(/^(https?:)?\/\/(.*?)\/.*/, '$2');
        debug("guessed auth_domain '" + auth_domain + "' from pp2_url '" + pp2_url + "'");
     }
 
@@ -1354,6 +1357,6 @@ function _mkws_jquery_plugin ($) {
 
     $(document).ready(function() {
        // if (console && console.log) console.log("on load ready");
-       _make_mkws_team(j);
+       _make_mkws_team(j, null);
     });
 })(jQuery);