X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=tools%2Fhtdocs%2Fmkws.js;h=73437496afb4f46add4adf2b6d3847bfb18401f8;hb=7df213947f66e078f3ac244fb4a7512c4410cd3f;hp=22230d024284950b73c58558f94360f174bcb9f5;hpb=a01f87567b8ad321d474caf8a03d5602a067b6fd;p=mkws-moved-to-github.git diff --git a/tools/htdocs/mkws.js b/tools/htdocs/mkws.js index 22230d0..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,24 +972,46 @@ 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); + } + }); } +// implement $.parseQuerystring() for parsing URL parameters +function parseQuerystring() { + var nvpair = {}; + var qs = window.location.search.replace('?', ''); + var pairs = qs.split('&'); + $.each(pairs, function(i, v){ + var pair = v.split('='); + nvpair[pair[0]] = pair[1]; + }); + return nvpair; +} + function mkws_set_lang() { - var lang = $.parseQuerystring().lang || mkws_config.lang; + var lang = parseQuerystring().lang || mkws_config.lang; if (!lang || !mkws.locale_lang[lang]) { mkws_config.lang = "" } else { @@ -1027,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 + "'"); } @@ -1132,25 +1189,79 @@ function M(word) { return mkws.locale_lang[lang][word] || word; } +// main +(function() { + try { + mkws_html_all() + } + + catch (e) { + mkws_config.error = e.message; + // alert(e.message); + } +})(); + + // done + mkws.init = true; +}; + + /* - * implement jQuery plugins + * implement jQuery plugin $.pazpar2({}) */ -$.extend({ - // implement $.parseQuerystring() for parsing URL parameters - parseQuerystring: function() { - var nvpair = {}; - var qs = window.location.search.replace('?', ''); - var pairs = qs.split('&'); - $.each(pairs, function(i, v){ - var pair = v.split('='); - nvpair[pair[0]] = pair[1]; +function _mkws_jquery_plugin ($) { + 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) { + var config = obj ? obj : {}; + + var height = config.height || 760; + var width = config.width || 880; + var id_button = config.id_button || "input#mkwsButton"; + var id_popup = config.id_popup || "#mkwsPopup"; + + debug("popup height: " + height + ", width: " + width); + + // make sure that jquery-ui was loaded afte jQuery core lib, e.g.: + // + if (!$.ui) { + debug("Error: jquery-ui.js is missing, did you include it after jQuery core in the HTML file?"); + return; + } + + $(id_popup).dialog({ + closeOnEscape: true, + autoOpen: false, + height: height, + width: width, + modal: true, + resizable: true, + buttons: { + Cancel: function() { + $(this).dialog("close"); + } + }, + close: function() { } }); - return nvpair; - }, - debug2: function(string) { // delayed debug, internal variables are set after dom ready - setTimeout(function() { debug(string); }, 500); - }, + $(id_button) + .button() + .click(function() { + $(id_popup).dialog("open"); + }); + }; + + $.extend({ // service-proxy or pazpar2 pazpar2: function(config) { @@ -1222,77 +1333,25 @@ $.extend({ ' if (config && config.layout == 'div') { - this.debug2("jquery plugin layout: div"); + debug("jquery plugin layout: div"); document.write(div); } else if (config && config.layout == 'popup') { - this.debug2("jquery plugin layout: popup with id: " + id_popup); + debug("jquery plugin layout: popup with id: " + id_popup); document.write(popup); $(document).ready( function() { init_popup(config); } ); } else { - this.debug2("jquery plugin layout: table"); + debug("jquery plugin layout: table"); document.write(table); } } }); - -function init_popup(obj) { - var config = obj ? obj : {}; - - var height = config.height || 760; - var width = config.width || 880; - var id_button = config.id_button || "input#mkwsButton"; - var id_popup = config.id_popup || "#mkwsPopup"; - - debug("popup height: " + height + ", width: " + width); - - // 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?"); - return; - } - - $(id_popup).dialog({ - closeOnEscape: true, - autoOpen: false, - height: height, - width: width, - modal: true, - resizable: true, - buttons: { - Cancel: function() { - $(this).dialog("close"); - } - }, - close: function() { } - }); - - $(id_button) - .button() - .click(function() { - $(id_popup).dialog("open"); - }); -}; - -// main -(function() { - try { - mkws_html_all() - } - - catch (e) { - mkws_config.error = e.message; - // alert(e.message); - } -})(); - - // done - mkws.init = true; }; - // wrapper to call _mkws after page load (function (j) { + // enable before page load, so we could call it before mkws() runs + _mkws_jquery_plugin(j); + $(document).ready(function() { // if (console && console.log) console.log("on load ready"); _mkws(j);