X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=tools%2Fhtdocs%2Fmkws.js;h=73437496afb4f46add4adf2b6d3847bfb18401f8;hb=7df213947f66e078f3ac244fb4a7512c4410cd3f;hp=8ddb1b1b86572e0a72edbbbc55fd311ac376ee85;hpb=c0e349d3bbbc858513b19267e30e3c03bb25aa32;p=mkws-moved-to-github.git diff --git a/tools/htdocs/mkws.js b/tools/htdocs/mkws.js index 8ddb1b1..7343749 100644 --- a/tools/htdocs/mkws.js +++ b/tools/htdocs/mkws.js @@ -2,23 +2,30 @@ "use strict"; // HTML5: disable for debug_level >= 2 -// Set up namespace and some state. +// Set up global mkws object. Contains a hash of session objects, +// indexed by windowid. var mkws = { - sort: 'relevance', - authenticated: false, - filters: [] + sessions: {} }; // 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 lib function _mkws($) { // if (console && console.log) console.log("run _mkws()"); // call this function only once - if (mkws.init) return; + if (mkws.init) { + alert("_mkws() called twice: how did that happen?!"); + return; + } + +mkws.sort = 'relevance'; +mkws.authenticated = false; +mkws.filters = []; mkws.locale_lang = { "de": { @@ -41,7 +48,8 @@ mkws.locale_lang = { "Date": "Datum", "Subject": "Schlagwort", "Location": "Ort", - // ### to add: Records, Targets + "Records": "Datensätze", + "Targets": "Datenbanken", "dummy": "dummy" }, @@ -66,7 +74,8 @@ mkws.locale_lang = { "Date": "Dato", "Subject": "Emneord", "Location": "Lokation", - // ### to add: Records, Targets + "Records": "Poster", + "Targets": "Baser", "dummy": "dummy" } @@ -107,6 +116,12 @@ Handlebars.registerHelper('json', function(obj) { }); +Handlebars.registerHelper('translate', function(s) { + debug("translating '" + s + "'"); + return M(s); +}); + + // We need {{attr '@name'}} because Handlebars can't parse {{@name}} Handlebars.registerHelper('attr', function(attrName) { return this[attrName]; @@ -156,6 +171,7 @@ Handlebars.registerHelper('commaList', function(items, options) { { + /* default mkws config */ var config_default = { use_service_proxy: true, @@ -185,6 +201,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') @@ -193,6 +215,7 @@ 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"); @@ -243,6 +266,10 @@ var SourceMax = 16; var SubjectMax = 10; var AuthorMax = 10; +if (!isNaN(parseInt(mkws_config.perpage_default))) { + recPerPage = parseInt(mkws_config.perpage_default); +} + // // pz2.js event handlers: // @@ -419,7 +446,7 @@ function onFormSubmitEventHandler() return false; } -function newSearch(query, sort, targets) +function newSearch(query, sort, targets, windowid) { debug("newSearch: " + query); @@ -429,10 +456,10 @@ function newSearch(query, sort, targets) } mkws.filters = [] - redraw_navi(); - resetPage(); - loadSelect(); - triggerSearch(query, sort, targets); + redraw_navi(); // ### should use windowid + resetPage(); // ### the globals it resents should be indexed by windowid + loadSelect(); // ### should use windowid + triggerSearch(query, sort, targets, windowid); mkws.switchView('records'); // In case it's configured to start off as hidden submitted = true; } @@ -452,7 +479,7 @@ function resetPage() totalRec = 0; } -function triggerSearch (query, sort, targets) +function triggerSearch (query, sort, targets, windowid) { var pp2filter = ""; var pp2limit = ""; @@ -487,8 +514,16 @@ function triggerSearch (query, sort, targets) } } - debug("triggerSearch(" + mkws.query + "): filters = " + $.toJSON(mkws.filters) + ", pp2filter = " + pp2filter + ", pp2limit = " + pp2limit); - my_paz.search(mkws.query, recPerPage, mkws.sort, pp2filter, undefined, { limit: pp2limit }); + var params = {}; + if (pp2limit) { + params.limit = pp2limit; + } + if (windowid) { + params.windowid = windowid; + } + debug("triggerSearch(" + mkws.query + "): filters = " + $.toJSON(mkws.filters) + ", pp2filter = " + pp2filter + ", params = " + $.toJSON(params)); + + my_paz.search(mkws.query, recPerPage, mkws.sort, pp2filter, undefined, params); } function loadSelect () @@ -766,7 +801,7 @@ function defaultTemplate(name) return '\ \ \ - \ + \ \ {{#if md-date}}\ \ - \ + \ \ \ {{/if}}\ {{#if md-author}}\ \ - \ + \ \ \ {{/if}}\ {{#if md-electronic-url}}\ \ - \ + \ \ - \ + \ \ {{/if-any}}\ \ - \ + \
Title{{translate "Title"}}\ {{md-title}}\ {{#if md-title-remainder}}\ @@ -779,19 +814,19 @@ function defaultTemplate(name)
Date{{translate "Date"}}{{md-date}}
Author{{translate "Author"}}{{md-author}}
URL{{translate "URL"}}\ {{#each md-electronic-url}}\ {{this}}
\ @@ -801,7 +836,7 @@ function defaultTemplate(name) {{/if}}\ {{#if-any location having="md-subject"}}\
Subject{{translate "Subject"}}\ {{#first location having="md-subject"}}\ {{#if md-subject}}\ @@ -812,7 +847,7 @@ function defaultTemplate(name)
Locations{{translate "Locations"}}\ {{#commaList location}}\ {{attr "@name"}}{{/commaList}}\ @@ -937,19 +972,29 @@ function mkws_html_all() { function run_auto_searches() { - debug("run auto searches"); + debug("running auto searches"); - var node = $('#mkwsRecords'); - if (node.attr('autosearch')) { + $('[id^="mkwsRecords"]').each(function () { + var node = $(this); var query = node.attr('autosearch'); - var sort = node.attr('sort'); - var targets = node.attr('targets'); - var s = "running auto search: '" + query + "'"; - if (sort) s += " sorted by '" + sort + "'"; - if (targets) s += " in targets '" + targets + "'"; - debug(s); - newSearch(query, sort, targets); - } + + 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); + } + }); } @@ -1039,7 +1084,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(/^http:\/\/(.*?)\/.*/, '$1'); + auth_domain = pp2_url.replace(/^(https?:)?\/\/(.*?)\/.*/, '$2'); debug("guessed auth_domain '" + auth_domain + "' from pp2_url '" + pp2_url + "'"); } @@ -1165,8 +1210,16 @@ function M(word) { * implement jQuery plugin $.pazpar2({}) */ function _mkws_jquery_plugin ($) { - function debug (string) { // delayed debug, internal variables are set after dom ready - setTimeout(function() { mkws.debug(string); }, 500); + var debug_level = 1; + + function debug (string) { + if (!debug_level) + return; + + if (typeof console === "undefined" || typeof console.log === "undefined") + return; + + console.log("jquery.pazpar2: " + string); } function init_popup(obj) { @@ -1182,7 +1235,7 @@ function _mkws_jquery_plugin ($) { // make sure that jquery-ui was loaded afte jQuery core lib, e.g.: // if (!$.ui) { - debug("Error: jquery-ui.js is missing, did you included it after jquery core in the HTML file?"); + debug("Error: jquery-ui.js is missing, did you include it after jQuery core in the HTML file?"); return; }