Merge branch 'master' of ssh://git.indexdata.com/home/git/private/mkws
authorMike Taylor <mike@indexdata.com>
Fri, 24 Jan 2014 13:52:16 +0000 (13:52 +0000)
committerMike Taylor <mike@indexdata.com>
Fri, 24 Jan 2014 13:52:16 +0000 (13:52 +0000)
tools/htdocs/mkws.js

index 1f114f8..68892ea 100644 (file)
@@ -159,6 +159,7 @@ function _make_mkws_team($, teamName) {
        "start": $.now(),
        "last": $.now()
     };
+    var m_paz; // will be initialised below
 
 
     // if (console && console.log) // disabled, will fail in IE8
@@ -189,53 +190,6 @@ function _make_mkws_team($, teamName) {
     var debug = mkws.debug_function; // local alias
     debug("start running MKWS");
 
-
-    {
-
-       /* default mkws config */
-       var config_default = {
-           use_service_proxy: true,
-           pazpar2_url: "http://mkws.indexdata.com/service-proxy/",
-           service_proxy_auth: "http://mkws.indexdata.com/service-proxy-auth",
-           lang: "",
-           sort_options: [["relevance"], ["title:1", "title"], ["date:0", "newest"], ["date:1", "oldest"]],
-           perpage_options: [10, 20, 30, 50],
-           sort_default: "relevance",
-           perpage_default: 20,
-           query_width: 50,
-           show_lang: true,    /* show/hide language menu */
-           show_sort: true,    /* show/hide sort menu */
-           show_perpage: true,         /* show/hide perpage menu */
-           lang_options: [],   /* display languages links for given languages, [] for all */
-           facets: ["sources", "subjects", "authors"], /* display facets, in this order, [] for none */
-           responsive_design_width: undefined, /* a page with less pixel width considered as narrow */
-           debug_level: 1,     /* debug level for development: 0..2 */
-
-           dummy: "dummy"
-       };
-
-       /* 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') {
-           mkws.debug_level = config_default.debug_level;
-       }
-
-       // make sure the mkws_config is a valid hash
-       if (!$.isPlainObject(mkws_config)) {
-           debug("ERROR: mkws_config is not an JS object, ignore it....");
-           mkws_config = {};
-       }
-
-       /* override standard config values by function parameters */
-       for (var k in config_default) {
-           if (typeof mkws_config[k] === 'undefined')
-               mkws_config[k] = config_default[k];
-           //debug("Set config: " + k + ' => ' + mkws_config[k]);
-       }
-    }
-
-
     m_sort = mkws_config.sort_default;
     debug("copied mkws_config.sort_default '" + mkws_config.sort_default + "' to m_sort");
 
@@ -265,20 +219,18 @@ function _make_mkws_team($, teamName) {
     // create a parameters array and pass it to the pz2's constructor
     // then register the form submit event with the pz2.search function
     // autoInit is set to true on default
-    if (!mkws.paz) {
-       mkws.paz = new pz2({ "onshow": my_onshow,
-                            "windowid": teamName,
-                            "showtime": 500,            //each timer (show, stat, term, bytarget) can be specified this way
-                            "pazpar2path": mkws_config.pazpar2_url,
-                            "oninit": my_oninit,
-                            "onstat": my_onstat,
-                            "onterm": my_onterm,
-                            "termlist": "xtargets,subject,author",
-                            "onbytarget": my_onbytarget,
-                            "usesessions" : mkws_config.use_service_proxy ? false : true,
-                            "showResponseType": '', // or "json" (for debugging?)
-                            "onrecord": my_onrecord });
-    }
+    m_paz = new pz2({ "onshow": my_onshow,
+                     "windowid": teamName,
+                     "showtime": 500,            //each timer (show, stat, term, bytarget) can be specified this way
+                     "pazpar2path": mkws_config.pazpar2_url,
+                     "oninit": my_oninit,
+                     "onstat": my_onstat,
+                     "onterm": my_onterm,
+                     "termlist": "xtargets,subject,author",
+                     "onbytarget": my_onbytarget,
+                     "usesessions" : mkws_config.use_service_proxy ? false : true,
+                     "showResponseType": '', // or "json" (for debugging?)
+                     "onrecord": my_onrecord });
 
     if (!isNaN(parseInt(mkws_config.perpage_default))) {
        m_recPerPage = parseInt(mkws_config.perpage_default);
@@ -290,8 +242,8 @@ function _make_mkws_team($, teamName) {
     //
     function my_oninit(teamName) {
        debug("init for " + teamName);
-       mkws.paz.stat();
-       mkws.paz.bytarget();
+       m_paz.stat();
+       m_paz.bytarget();
     }
 
 
@@ -407,7 +359,7 @@ function _make_mkws_team($, teamName) {
     function my_onrecord(data, teamName) {
        debug("record for " + teamName);
        // FIXME: record is async!!
-       clearTimeout(mkws.paz.recordTimer);
+       clearTimeout(m_paz.recordTimer);
        // in case on_show was faster to redraw element
        var detRecordDiv = document.getElementById('mkwsDet_'+data.recid);
        if (detRecordDiv) return;
@@ -496,7 +448,7 @@ function _make_mkws_team($, teamName) {
        if (!m_submitted) return false;
        resetPage();
        loadSelect();
-       mkws.paz.show(0, m_recPerPage, m_sort);
+       m_paz.show(0, m_recPerPage, m_sort);
        return false;
     }
 
@@ -552,7 +504,7 @@ function _make_mkws_team($, teamName) {
        }
        debug("triggerSearch(" + m_query + "): filters = " + $.toJSON(m_filters) + ", pp2filter = " + pp2filter + ", params = " + $.toJSON(params));
 
-       mkws.paz.search(m_query, m_recPerPage, m_sort, pp2filter, undefined, params);
+       m_paz.search(m_query, m_recPerPage, m_sort, pp2filter, undefined, params);
     }
 
 
@@ -716,21 +668,21 @@ function _make_mkws_team($, teamName) {
     mkws.showPage = function (pageNum)
     {
        m_curPage = pageNum;
-       mkws.paz.showPage(m_curPage - 1);
+       m_paz.showPage(m_curPage - 1);
     }
 
 
     // simple paging functions
     mkws.pagerNext = function () {
        if (m_totalRec - m_recPerPage*m_curPage > 0) {
-            mkws.paz.showNext();
+            m_paz.showNext();
             m_curPage++;
        }
     }
 
 
     mkws.pagerPrev = function () {
-       if (mkws.paz.showPrev() != false)
+       if (m_paz.showPrev() != false)
             m_curPage--;
     }
 
@@ -789,7 +741,7 @@ function _make_mkws_team($, teamName) {
             return;
        }
        // request the record
-       mkws.paz.record(recId);
+       m_paz.record(recId);
     }
 
 
@@ -1002,33 +954,6 @@ function _make_mkws_team($, teamName) {
     }
 
 
-    function run_auto_searches() {
-       debug("running auto searches");
-
-       $('[id^="mkwsRecords"]').each(function () {
-           var node = $(this);
-           var query = node.attr('autosearch');
-
-           if (query) {
-               var windowid = undefined;
-               var id = node.attr('id');
-               if (id.match(/^mkwsRecords_/, '')) {
-                   windowid = id.replace(/^mkwsRecords_/, '');
-               }
-
-               var sort = node.attr('sort');
-               var targets = node.attr('targets');
-               var s = "running auto search: '" + query + "'";
-               if (windowid) s += " [windowid '" + windowid + "']";
-               if (sort) s += " sorted by '" + sort + "'";
-               if (targets) s += " in targets '" + targets + "'";
-               debug(s);
-               newSearch(query, sort, targets, windowid);
-           }
-       });
-    }
-
-
     // implement $.parseQuerystring() for parsing URL parameters
     function parseQuerystring() {
        var nvpair = {};
@@ -1111,42 +1036,6 @@ function _make_mkws_team($, teamName) {
     }
 
 
-    /*
-     * Run service-proxy authentication in background (after page load).
-     * The username/password is configured in the apache config file
-     * for the site.
-     */
-    mkws.service_proxy_auth = function(auth_url, auth_domain, pp2_url) {
-       debug("Run service proxy auth URL: " + auth_url);
-
-       if (!auth_domain) {
-           auth_domain = pp2_url.replace(/^(https?:)?\/\/(.*?)\/.*/, '$2');
-           debug("guessed auth_domain '" + auth_domain + "' from pp2_url '" + pp2_url + "'");
-       }
-
-       var request = new pzHttpRequest(auth_url, function(err) {
-           alert("HTTP call for authentication failed: " + err)
-           return;
-       }, auth_domain);
-
-       request.get(null, function(data) {
-           if (!$.isXMLDoc(data)) {
-               alert("service proxy auth response document is not valid XML document, give up!");
-               return;
-           }
-           var status = $(data).find("status");
-           if (status.text() != "OK") {
-               alert("service proxy auth repsonse status: " + status.text() + ", give up!");
-               return;
-           }
-
-           debug("Service proxy auth successfully done");
-           mkws.authenticated = true;
-           run_auto_searches();
-       });
-    }
-
-
     /* create locale language menu */
     function mkws_html_lang() {
        var lang_default = "en";
@@ -1405,6 +1294,7 @@ function _mkws_jquery_plugin ($) {
 
     $(document).ready(function() {
        log("on load ready");
+       default_mkws_config();
 
        // Backwards compatibility: set new magic class names on any
        // elements that have the old magic IDs.
@@ -1453,12 +1343,120 @@ function _mkws_jquery_plugin ($) {
        });
 
        if (mkws_config.use_service_proxy) {
-           mkws.service_proxy_auth(mkws_config.service_proxy_auth,
-                                   mkws_config.service_proxy_auth_domain,
-                                   mkws_config.pazpar2_url);
+           authenticate_session(mkws_config.service_proxy_auth,
+                                mkws_config.service_proxy_auth_domain,
+                                mkws_config.pazpar2_url);
        } else {
            // raw pp2
            run_auto_searches();
        }
     });
+
+
+    function default_mkws_config() {
+       /* default mkws config */
+       var config_default = {
+           use_service_proxy: true,
+           pazpar2_url: "http://mkws.indexdata.com/service-proxy/",
+           service_proxy_auth: "http://mkws.indexdata.com/service-proxy-auth",
+           lang: "",
+           sort_options: [["relevance"], ["title:1", "title"], ["date:0", "newest"], ["date:1", "oldest"]],
+           perpage_options: [10, 20, 30, 50],
+           sort_default: "relevance",
+           perpage_default: 20,
+           query_width: 50,
+           show_lang: true,    /* show/hide language menu */
+           show_sort: true,    /* show/hide sort menu */
+           show_perpage: true,         /* show/hide perpage menu */
+           lang_options: [],   /* display languages links for given languages, [] for all */
+           facets: ["sources", "subjects", "authors"], /* display facets, in this order, [] for none */
+           responsive_design_width: undefined, /* a page with less pixel width considered as narrow */
+           debug_level: 1,     /* debug level for development: 0..2 */
+
+           dummy: "dummy"
+       };
+
+       /* 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') {
+           mkws.debug_level = config_default.debug_level;
+       }
+
+       // make sure the mkws_config is a valid hash
+       if (!$.isPlainObject(mkws_config)) {
+           debug("ERROR: mkws_config is not an JS object, ignore it....");
+           mkws_config = {};
+       }
+
+       /* override standard config values by function parameters */
+       for (var k in config_default) {
+           if (typeof mkws_config[k] === 'undefined')
+               mkws_config[k] = config_default[k];
+           //debug("Set config: " + k + ' => ' + mkws_config[k]);
+       }
+    }
+
+
+    /*
+     * Run service-proxy authentication in background (after page load).
+     * The username/password is configured in the apache config file
+     * for the site.
+     */
+    function authenticate_session(auth_url, auth_domain, pp2_url) {
+       debug("Run service proxy auth URL: " + auth_url);
+
+       if (!auth_domain) {
+           auth_domain = pp2_url.replace(/^(https?:)?\/\/(.*?)\/.*/, '$2');
+           debug("guessed auth_domain '" + auth_domain + "' from pp2_url '" + pp2_url + "'");
+       }
+
+       var request = new pzHttpRequest(auth_url, function(err) {
+           alert("HTTP call for authentication failed: " + err)
+           return;
+       }, auth_domain);
+
+       request.get(null, function(data) {
+           if (!$.isXMLDoc(data)) {
+               alert("service proxy auth response document is not valid XML document, give up!");
+               return;
+           }
+           var status = $(data).find("status");
+           if (status.text() != "OK") {
+               alert("service proxy auth repsonse status: " + status.text() + ", give up!");
+               return;
+           }
+
+           debug("Service proxy auth successfully done");
+           mkws.authenticated = true;
+           run_auto_searches();
+       });
+    }
+
+
+    function run_auto_searches() {
+       console.log("running auto searches");
+
+       $('[id^="mkwsRecords"]').each(function () {
+           var node = $(this);
+           var query = node.attr('autosearch');
+
+           if (query) {
+               var windowid = undefined;
+               var id = node.attr('id');
+               if (id.match(/^mkwsRecords_/, '')) {
+                   windowid = id.replace(/^mkwsRecords_/, '');
+               }
+
+               var sort = node.attr('sort');
+               var targets = node.attr('targets');
+               var s = "running auto search: '" + query + "'";
+               if (windowid) s += " [windowid '" + windowid + "']";
+               if (sort) s += " sorted by '" + sort + "'";
+               if (targets) s += " in targets '" + targets + "'";
+               console.log(s);
+               newSearch(query, sort, targets, windowid);
+           }
+       });
+    }
 })(jQuery);