Generalise rules for making various output formats from Markdown.
[mkws-moved-to-github.git] / tools / htdocs / mkws.js
index bac4ccb..e4d339a 100644 (file)
@@ -3,6 +3,7 @@
 
 "use strict"; // HTML5: disable for debug >= 2
 
+
 /*
  * global config object: mkws_config
  *
@@ -26,6 +27,7 @@ var pazpar2path = mkws_config.use_service_proxy ? service_proxy_url : pazpar2_ur
 var usesessions = mkws_config.use_service_proxy ? false : true;
 
 
+(function ($) {
 var mkws_locale_lang = {
     "de": {
        "Authors": "Autoren",
@@ -201,9 +203,10 @@ function my_onterm(data) {
 }
 
 function add_single_facet(acc, caption, data, max, cclIndex) {
-    acc.push('<div class="facet">');
+    acc.push('<div class="facet" id="mkwsFacet' + caption + '">');
     acc.push('<div class="termtitle">' + M(caption) + '</div>');
     for (var i = 0; i < data.length && i < max; i++ ) {
+       acc.push('<div class="term">');
         acc.push('<a href="#" ');
        var action;
        if (!cclIndex) {
@@ -214,7 +217,8 @@ function add_single_facet(acc, caption, data, max, cclIndex) {
            action = 'limitQuery(\'' + cclIndex + '\', this.firstChild.nodeValue)';
        }
        acc.push('onclick="' + action + ';return false;">' + data[i].name + '</a>'
-                + '<span> (' + data[i].freq + ')</span><br/>');
+                + ' <span>' + data[i].freq + '</span>');
+       acc.push('</div>');
     }
     acc.push('</div>');
 }
@@ -638,7 +642,7 @@ function mkws_html_all(config) {
 }
 
 function mkws_set_lang(mkws_config)  {
-    var lang = jQuery.parseQuerystring().lang || mkws_config.lang || "";
+    var lang = $.parseQuerystring().lang || mkws_config.lang || "";
     if (!lang || !mkws_locale_lang[lang]) {
        mkws_config.lang = ""
     } else {
@@ -727,7 +731,7 @@ function mkws_service_proxy_auth(auth_url) {
 
     var request = new pzHttpRequest(auth_url);
     request.get(null, function(data) {
-       if (!jQuery.isXMLDoc(data)) {
+       if (!$.isXMLDoc(data)) {
            alert("service proxy auth response document is not valid XML document, give up!");
            return;
        }
@@ -821,8 +825,8 @@ function M(word) {
 /*
  * implement jQuery plugins
  */
-jQuery.extend({
-    // implement jQuery.parseQuerystring() for parsing URL parameters
+$.extend({
+    // implement $.parseQuerystring() for parsing URL parameters
     parseQuerystring: function() {
        var nvpair = {};
        var qs = window.location.search.replace('?', '');
@@ -846,10 +850,7 @@ jQuery.extend({
        <div id="mkwsSearch"></div>\
        <div id="mkwsResults"></div>\
        <div id="mkwsTargets"></div>\
-       <div id="mkwsFooter">\
-         <div id="mkwsStat"></div>\
-         <span>Powered by MKWS &copy; 2013 <a target="_new" href="http://www.indexdata.com">Index Data</a></span>\
-       </div>';
+        <div id="mkwsStat"></div>';
 
        // new table layout
        var table = '\
@@ -897,9 +898,23 @@ jQuery.extend({
          </tr>\
        </table>';
 
+       var popup = '\
+         <div id="mkwsSearch"></div>\
+         <div id="mkwsPopup">\
+           <div id="mkwsSwitch"></div>\
+           <div id="mkwsLang"></div>\
+           <div id="mkwsResults"></div>\
+           <div id="mkwsTargets"></div>\
+           <div id="mkwsStat"></div>\
+         </div>'
+
        if (config && config.layout == 'div') {
            this.debug2("jquery plugin layout: div");
            document.write(div);
+       } else if (config && config.layout == 'popup') {
+           this.debug2("jquery plugin layout: popup");
+           document.write(popup);
+           $(document).ready( function() { init_popup(config); } );
        } else {
            this.debug2("jquery plugin layout: table");
            document.write(table);
@@ -907,6 +922,38 @@ jQuery.extend({
     }
 });
 
+function init_popup(obj) {
+    var config = obj ? obj : {};
+
+    var height = config.height || 760;
+    var width = config.width || 880;
+    var id_button = config.button || "input#mkwsButton";
+    var id_popup = config.popup || "#mkwsPopup";
+
+    debug("popup height: " + height + ", width: " + width);
+
+    $(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");
+      });
+};
+
 function debug(string) {
     if (!mkws_debug)
        return;
@@ -927,3 +974,5 @@ function debug(string) {
 
 /* magic */
 $(document).ready(function() { mkws_html_all(mkws_config) });
+
+})(jQuery);