adjust protocol independend link for pazpar2 object, MKWS-103
[mkws-moved-to-github.git] / tools / htdocs / mkws.js
index ef15687..e3f02a2 100644 (file)
@@ -2,11 +2,10 @@
 
 "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.
@@ -19,7 +18,14 @@ 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": {
@@ -42,7 +48,8 @@ mkws.locale_lang = {
        "Date": "Datum",
        "Subject": "Schlagwort",
        "Location": "Ort",
-       // ### to add: Records, Targets
+       "Records": "Datensätze",
+       "Targets": "Datenbanken",
 
        "dummy": "dummy"
     },
@@ -67,7 +74,8 @@ mkws.locale_lang = {
        "Date": "Dato",
        "Subject": "Emneord",
        "Location": "Lokation",
-       // ### to add: Records, Targets
+       "Records": "Poster",
+       "Targets": "Baser",
 
        "dummy": "dummy"
     }
@@ -108,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];
@@ -201,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");
 
@@ -222,6 +237,12 @@ for (var key in mkws_config) {
     }
 }
 
+// protocol independend link for pazpar2: "//mkws/sp" -> "https://mkws/sp"
+if (mkws_config.pazpar2_url.match(/^\/\//)) {
+    mkws_config.pazpar2_url = document.location.protocol + mkws_config.pazpar2_url;
+    debug("adjust protocol independend links: " + mkws_config.pazpar2_url);
+}
+
 debug("Create main pz2 object");
 // create a parameters array and pass it to the pz2's constructor
 // then register the form submit event with the pz2.search function
@@ -251,6 +272,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:
 //
@@ -782,7 +807,7 @@ function defaultTemplate(name)
        return '\
       <table>\
        <tr>\
-         <th>Title</th>\
+         <th>{{translate "Title"}}</th>\
          <td>\
            {{md-title}}\
            {{#if md-title-remainder}}\
@@ -795,19 +820,19 @@ function defaultTemplate(name)
        </tr>\
        {{#if md-date}}\
        <tr>\
-         <th>Date</th>\
+         <th>{{translate "Date"}}</th>\
          <td>{{md-date}}</td>\
        </tr>\
        {{/if}}\
        {{#if md-author}}\
        <tr>\
-         <th>Author</th>\
+         <th>{{translate "Author"}}</th>\
          <td>{{md-author}}</td>\
        </tr>\
        {{/if}}\
        {{#if md-electronic-url}}\
        <tr>\
-         <th>URL</th>\
+         <th>{{translate "URL"}}</th>\
          <td>\
            {{#each md-electronic-url}}\
              <a href="{{this}}">{{this}}</a><br/>\
@@ -817,7 +842,7 @@ function defaultTemplate(name)
        {{/if}}\
        {{#if-any location having="md-subject"}}\
        <tr>\
-         <th>Subject</th>\
+         <th>{{translate "Subject"}}</th>\
          <td>\
            {{#first location having="md-subject"}}\
              {{#if md-subject}}\
@@ -828,7 +853,7 @@ function defaultTemplate(name)
        </tr>\
        {{/if-any}}\
        <tr>\
-         <th>Locations</th>\
+         <th>{{translate "Locations"}}</th>\
          <td>\
            {{#commaList location}}\
              {{attr "@name"}}{{/commaList}}\
@@ -1065,7 +1090,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 + "'");
     }
 
@@ -1191,9 +1216,16 @@ function M(word) {
  * implement jQuery plugin $.pazpar2({})
  */
 function _mkws_jquery_plugin ($) {
-    // delayed debug, internal variables are set after dom ready
+    var debug_level = 1;
+
     function debug (string) {
-       setTimeout(function() { mkws.debug_function(string); }, 500);
+       if (!debug_level)
+           return;
+
+       if (typeof console === "undefined" || typeof console.log === "undefined")
+           return;
+
+       console.log("jquery.pazpar2: " + string);
     }
 
     function init_popup(obj) {
@@ -1209,7 +1241,7 @@ function _mkws_jquery_plugin ($) {
        // make sure that jquery-ui was loaded afte jQuery core lib, e.g.:
        // <script src="http://code.jquery.com/ui/1.10.3/jquery-ui.min.js"></script>
        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;
        }