From: Mike Taylor Date: Thu, 21 Aug 2014 18:57:04 +0000 (+0100) Subject: Resolve conflicts -- Jason, please check that the authentication logic is still good. X-Git-Tag: 1.0.0~39^2~7^2~4 X-Git-Url: http://lists.indexdata.dk/cgi-bin?a=commitdiff_plain;h=6012a73cb2d7f59862ba4a0e624d62dc84c099d9;hp=-c;p=mkws-moved-to-github.git Resolve conflicts -- Jason, please check that the authentication logic is still good. --- 6012a73cb2d7f59862ba4a0e624d62dc84c099d9 diff --combined src/mkws-core.js index ddf34c9,b7a030e..15335eb --- a/src/mkws-core.js +++ b/src/mkws-core.js @@@ -14,7 -14,6 +14,7 @@@ window.mkws = { $: $, // Our own local copy of the jQuery object authenticated: false, + authenticating: false, active: false, log_level: 1, // Will be overridden from mkws.config, but // initial value allows jQuery popup to use logging. @@@ -168,7 -167,12 +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], @@@ -446,7 -450,6 +451,7 @@@ mkws.pagerNext = function(tname) * for the site. */ function authenticateSession(auth_url, auth_domain, pp2_url) { + mkws.authenticating = true; log("service proxy authentication on URL: " + auth_url); if (!auth_domain) { @@@ -460,7 -463,6 +465,7 @@@ }, auth_domain); request.get(null, function(data) { + mkws.authenticating = false; if (!$.isXMLDoc(data)) { alert("Service Proxy authentication response is not a valid XML document"); return; @@@ -550,23 -552,14 +555,23 @@@ } - // 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 @@@ -647,9 -640,7 +652,9 @@@ 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"); @@@ -664,12 -655,36 +669,34 @@@ } */ + 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) { - if (!mkws.authenticated) { - authenticateSession(sp_auth_url(mkws.config), - mkws.config.service_proxy_auth_domain, - mkws.config.pazpar2_url); - } - } else { - // raw pp2 + 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) { + // raw pp2 or we have a session already open runAutoSearches(); } @@@ -678,9 -693,7 +705,9 @@@ }; $(document).ready(function() { - mkws.init(); + if (!window.mkws_noready && !mkws.authenticating && !mkws.active) { + mkws.init(); + } }); })(mkws.$);