X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=tools%2Fhtdocs%2Fmkws.js;h=db6c337efd24b60b8092242fd6e309a26dee47d8;hb=61726cb61e0f8b3a7c2a57f9d1d0fe90f7207eeb;hp=8ebdb0b5ebe08b101d30a0d92b1597998a14cde1;hpb=2c2d989ff30a4218303d803b9bfdb1e1fbf0967d;p=mkws-moved-to-github.git diff --git a/tools/htdocs/mkws.js b/tools/htdocs/mkws.js index 8ebdb0b..db6c337 100644 --- a/tools/htdocs/mkws.js +++ b/tools/htdocs/mkws.js @@ -1,5 +1,4 @@ -/* A very simple client that shows a basic usage of the pz2.js -*/ +/*! MKWS, the MasterKey Widget Set. Copyright (C) 2013, Index Data */ "use strict"; // HTML5: disable for debug_level >= 2 @@ -16,8 +15,9 @@ var mkws = { * Needs to be defined in the HTML header before including this JS file. * Define empty mkws_config for simple applications that don't define it. */ -if (!mkws_config) +if (mkws_config == null || typeof mkws_config != 'object')) { var mkws_config = {}; +} // Wrapper for jQuery (function ($) { @@ -89,7 +89,7 @@ mkws.debug_function = function (string) { } var now = $.now(); - var timestamp = (now - mkws.debug_time.start)/1000 + " (+" + (now - mkws.debug_time.last)/1000 + ") " + var timestamp = ((now - mkws.debug_time.start)/1000).toFixed(3) + " (+" + ((now - mkws.debug_time.last)/1000).toFixed(3) + ") " mkws.debug_time.last = now; // you need to disable use strict at the top of the file!!! @@ -104,7 +104,7 @@ var debug = mkws.debug_function; // local alias Handlebars.registerHelper('json', function(obj) { - return JSON.stringify(obj); + return $.toJSON(obj); }); @@ -157,6 +157,7 @@ Handlebars.registerHelper('commaList', function(items, options) { { + /* default mkws config */ var config_default = { use_service_proxy: true, @@ -186,6 +187,12 @@ Handlebars.registerHelper('commaList', function(items, options) { 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') @@ -422,7 +429,9 @@ function onFormSubmitEventHandler() function newSearch(query, sort, targets) { - if (!mkws.authenticated) { + debug("newSearch: " + query); + + if (mkws_config.use_service_proxy && !mkws.authenticated) { alert("searching before authentication"); return; } @@ -486,7 +495,7 @@ function triggerSearch (query, sort, targets) } } - debug("triggerSearch(" + mkws.query + "): filters = " + JSON.stringify(mkws.filters) + ", pp2filter = " + pp2filter + ", pp2limit = " + pp2limit); + debug("triggerSearch(" + mkws.query + "): filters = " + $.toJSON(mkws.filters) + ", pp2filter = " + pp2filter + ", pp2limit = " + pp2limit); my_paz.search(mkws.query, recPerPage, mkws.sort, pp2filter, undefined, { limit: pp2limit }); } @@ -533,9 +542,9 @@ mkws.delimitQuery = function (field, value) if (filter.field && field == filter.field && value == filter.value) { - debug("delimitTarget() removing filter " + JSON.stringify(filter)); + debug("delimitTarget() removing filter " + $.toJSON(filter)); } else { - debug("delimitTarget() keeping filter " + JSON.stringify(filter)); + debug("delimitTarget() keeping filter " + $.toJSON(filter)); newFilters.push(filter); } } @@ -556,9 +565,9 @@ mkws.delimitTarget = function (id) for (var i in mkws.filters) { var filter = mkws.filters[i]; if (filter.id) { - debug("delimitTarget() removing filter " + JSON.stringify(filter)); + debug("delimitTarget() removing filter " + $.toJSON(filter)); } else { - debug("delimitTarget() keeping filter " + JSON.stringify(filter)); + debug("delimitTarget() keeping filter " + $.toJSON(filter)); newFilters.push(filter); } } @@ -904,9 +913,14 @@ function mkws_html_all() { mkws_html_switch(); - if (mkws_config.use_service_proxy) + if (mkws_config.use_service_proxy) { mkws_service_proxy_auth(mkws_config.service_proxy_auth, - mkws_config.service_proxy_auth_domain); + mkws_config.service_proxy_auth_domain, + mkws_config.pazpar2_url); + } else { + // raw pp2 + run_auto_searches(); + } if (mkws_config.responsive_design_width) { // Responsive web design - change layout on the fly based on @@ -931,6 +945,8 @@ function mkws_html_all() { function run_auto_searches() { + debug("run auto searches"); + var node = $('#mkwsRecords'); if (node.attr('autosearch')) { var query = node.attr('autosearch'); @@ -1015,9 +1031,14 @@ function mkws_html_perpage() { * The username/password is configured in the apache config file * for the site. */ -function mkws_service_proxy_auth(auth_url, auth_domain) { +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(/^http:\/\/(.*?)\/.*/, '$1'); + 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;