Change mkws-widget-categories.js to access the pazpar2 URL via the new
[mkws-moved-to-github.git] / src / mkws-core.js
index 3031dd0..577d35b 100644 (file)
@@ -168,7 +168,12 @@ mkws.setMkwsConfig = function(overrides) {
   var config_default = {
     use_service_proxy: true,
     pazpar2_url:        "//mkws.indexdata.com/service-proxy/",
-    service_proxy_auth: "//mkws.indexdata.com/service-proxy-auth",
+    service_proxy_auth: undefined, // generally rolled from the next three properties
+    // Was: //mkws.indexdata.com/service-proxy-auth
+    pp2_hostname: "mkws.indexdata.com",
+    sp_path: "service-proxy-auth",
+    sp_auth_query: undefined, // Will be: "command=auth&action=perconfig",
+    sp_auth_credentials: undefined,
     lang: "",
     sort_options: [["relevance"], ["title:1", "title"], ["date:0", "newest"], ["date:1", "oldest"]],
     perpage_options: [10, 20, 30, 50],
@@ -354,6 +359,11 @@ mkws.pagerNext = function(tname) {
 };
 
 
+mkws.pazpar2_url = function() {
+  return mkws.config.pazpar2_url;
+};
+
+
 // wrapper to provide local copy of the jQuery object.
 (function($) {
   var log = mkws.log;
@@ -550,14 +560,23 @@ mkws.pagerNext = function(tname) {
   }
 
 
-  // This function should have no side effects if run again on an operating session, even if 
-  // the element/selector passed causes existing widgets to be reparsed: 
+  // The second "rootsel" parameter is passed to jQuery and is a DOM node
+  // or a selector string you would like to constrain the search for widgets to.
+  //
+  // This function has no side effects if run again on an operating session,
+  // even if the element/selector passed causes existing widgets to be reparsed: 
+  //
+  // (TODO: that last bit isn't true and we currently have to avoid reinitialising
+  // widgets, MKWS-261)
   //
   // * configuration is not regenerated
   // * authentication is not performed again
   // * autosearches are not re-run
   mkws.init = function(message, rootsel) {
-    if (message) mkws.log(message);
+    var greet = "MKWS initialised";
+    if (rootsel) greet += " (limited to " + rootsel + ")"
+    if (message) greet += " :: " + message; 
+    mkws.log(greet);
 
     // TODO: Let's remove this soon
     // Backwards compatibility: set new magic class names on any
@@ -638,7 +657,9 @@ mkws.pagerNext = function(tname) {
     var then = $.now();
     // If we've made no widgets, return without starting an SP session
     // or marking MKWS active.
-    if (makeWidgetsWithin(1, rootsel) === false) return false;
+    if (makeWidgetsWithin(1, rootsel ? $(rootsel) : undefined) === false) {
+      return false;
+    }
     var now = $.now();
 
     log("walking MKWS nodes took " + (now-then) + " ms");
@@ -653,8 +674,30 @@ mkws.pagerNext = function(tname) {
       }
     */
 
+    function sp_auth_url(config) {
+      if (config.service_proxy_auth) {
+       mkws.log("using pre-baked sp_auth_url '" + config.service_proxy_auth + "'");
+       return config.service_proxy_auth;
+      } else {
+       var s = '//';
+       s += config.auth_hostname ? config.auth_hostname : config.pp2_hostname;
+       s += '/' + config.sp_path;
+        var q = config.sp_auth_query;
+        if (q) {
+          s += '?' + q;
+        }
+       var c = config.sp_auth_credentials;
+       if (c) {
+         s += ('&username=' + c.substr(0, c.indexOf('/')) +
+               '&password=' + c.substr(c.indexOf('/')+1));
+       }
+       mkws.log("generated sp_auth_url '" + s + "'");
+       return s;
+      }
+    }
+
     if (mkws.config.use_service_proxy && !mkws.authenticated && !mkws.authenticating) {
-      authenticateSession(mkws.config.service_proxy_auth,
+      authenticateSession(sp_auth_url(mkws.config),
                           mkws.config.service_proxy_auth_domain,
                           mkws.config.pazpar2_url);
     } else if (!mkws.authenticating) {