Merge branch 'popup'
authorWolfram Schneider <wosch@indexdata.dk>
Thu, 10 Jul 2014 11:50:15 +0000 (11:50 +0000)
committerWolfram Schneider <wosch@indexdata.dk>
Thu, 10 Jul 2014 11:50:15 +0000 (11:50 +0000)
examples/htdocs/jasmine-local-popup.html
examples/htdocs/jasmine-popup.html
examples/htdocs/popup.html
examples/htdocs/wolfram.html
src/mkws-handlebars.js
src/mkws-popup.js [new file with mode: 0644]
src/mkws-widget-main.js
tools/htdocs/Makefile

index 3a85e82..55d1d7b 100644 (file)
@@ -11,6 +11,7 @@
     <script type="text/javascript" src="tools/htdocs/pz2.js"></script>
     <script type="text/javascript" src="tools/htdocs/jquery.json-2.4.js"></script>
     <script type="text/javascript" src="tools/htdocs/handlebars-v1.1.2.js"></script>
+
     <script type="text/javascript" src="src/mkws-handlebars.js"></script>
     <script type="text/javascript" src="src/mkws-core.js"></script>
     <script type="text/javascript" src="src/mkws-team.js"></script>
     <script type="text/javascript" src="src/mkws-widget-main.js"></script>
     <script type="text/javascript" src="src/mkws-widget-termlists.js"></script>
     <script type="text/javascript" src="src/mkws-widget-authname.js"></script>
+    <script type="text/javascript" src="src/mkws-widget-categories.js"></script>
     <script type="text/javascript" src="src/mkws-widget-log.js"></script>
     <script type="text/javascript" src="src/mkws-widget-record.js"></script>
+    <script type="text/javascript" src="src/mkws-widget-reference.js"></script>
+    <script type="text/javascript" src="src/mkws-widget-builder.js"></script>
 
     <script type="text/javascript" src="src/mkws-jquery.js"></script>
 
index c27e0f4..0c56eb3 100644 (file)
@@ -11,6 +11,7 @@
     <script type="text/javascript" src="tools/htdocs/pz2.js"></script>
     <script type="text/javascript" src="tools/htdocs/jquery.json-2.4.js"></script>
     <script type="text/javascript" src="tools/htdocs/handlebars-v1.1.2.js"></script>
+
     <script type="text/javascript" src="src/mkws-handlebars.js"></script>
     <script type="text/javascript" src="src/mkws-core.js"></script>
     <script type="text/javascript" src="src/mkws-team.js"></script>
     <script type="text/javascript" src="src/mkws-widget-main.js"></script>
     <script type="text/javascript" src="src/mkws-widget-termlists.js"></script>
     <script type="text/javascript" src="src/mkws-widget-authname.js"></script>
+    <script type="text/javascript" src="src/mkws-widget-categories.js"></script>
     <script type="text/javascript" src="src/mkws-widget-log.js"></script>
     <script type="text/javascript" src="src/mkws-widget-record.js"></script>
+    <script type="text/javascript" src="src/mkws-widget-reference.js"></script>
+    <script type="text/javascript" src="src/mkws-widget-builder.js"></script>
 
     <script type="text/javascript" src="src/mkws-jquery.js"></script>
 
index 60529bb..3857741 100644 (file)
@@ -1,81 +1,61 @@
 <html>
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-    <title>MKWS demo: popup search box</title>
-
+    <title>MKWS demo: Reference widget with popup window</title>
+    <link rel="stylesheet" type="text/css" href="tools/htdocs/mkws.css" />
     <link rel="stylesheet" type="text/css" href="//code.jquery.com/ui/1.10.3/themes/smoothness/jquery-ui.css" />
-    <link rel="stylesheet" type="text/css" href="//mkws.indexdata.com/mkws.css" />
+    <link rel="stylesheet" type="text/css" href="mkws-widget-reference.css" />
+    <link rel="stylesheet" type="text/css" href="mkws-widget-credo.css" />
 
     <script type="text/javascript">
-      mkws_config = {
-       show_lang: false,
-       perpage_default: 10,
-       query_width: 50,
-        service_proxy_auth: "http://mkws.indexdata.com/service-proxy-auth"
-     };
+      var mkws_config = {
+         service_proxy_auth: "//mkws.indexdata.com/service-proxy-credoauth"
+      };
     </script>
 
-    <script type="text/javascript" src="//code.jquery.com/jquery-1.10.0.min.js"></script>
-    <script type="text/javascript" src="//jquery-json.googlecode.com/files/jquery.json-2.4.js"></script>
-    <!-- legacy libs for testing
-    <script type="text/javascript" src="//code.jquery.com/jquery-1.6.4.min.js"></script>
-    <script src="//code.jquery.com/ui/1.8.0/jquery-ui.min.js"></script>
-    -->
-
-    <script type="text/javascript" src="//mkws.indexdata.com/pazpar2/js/pz2.js"></script>
-    <script type="text/javascript" src="//mkws.indexdata.com/handlebars-v1.1.2.js"></script>
-    <script type="text/javascript" src="//mkws.indexdata.com/mkws.js"></script>
-    <script type="text/javascript" src="//mkws.indexdata.com/mkws-jquery.js"></script>
+    <script type="text/javascript" src="tools/htdocs/jquery-1.10.0.min.js"></script>
+    <script type="text/javascript" src="//code.jquery.com/ui/1.10.3/jquery-ui.min.js"></script>
+
+    <script type="text/javascript" src="tools/htdocs/pz2.js"></script>
+    <script type="text/javascript" src="tools/htdocs/handlebars-v1.1.2.js"></script>
+    <script type="text/javascript" src="tools/htdocs/jquery.json-2.4.js"></script>
+
+    <script type="text/javascript" src="src/mkws-handlebars.js"></script>
+    <script type="text/javascript" src="src/mkws-core.js"></script>
+    <script type="text/javascript" src="src/mkws-team.js"></script>
+    <script type="text/javascript" src="src/mkws-filter.js"></script>
+    <script type="text/javascript" src="src/mkws-popup.js"></script>
+    <script type="text/javascript" src="src/mkws-widget.js"></script>
+    <script type="text/javascript" src="src/mkws-widget-main.js"></script>
+    <script type="text/javascript" src="src/mkws-widget-termlists.js"></script>
+    <script type="text/javascript" src="src/mkws-widget-authname.js"></script>
+    <script type="text/javascript" src="src/mkws-widget-categories.js"></script>
+    <script type="text/javascript" src="src/mkws-widget-log.js"></script>
+    <script type="text/javascript" src="src/mkws-widget-record.js"></script>
+    <script type="text/javascript" src="src/mkws-widget-reference.js"></script>
+    <script type="text/javascript" src="src/mkws-widget-builder.js"></script>
+
+    <script type="text/javascript" src="mkws-widget-credo.js"></script>
   </head>
   <body>
-    <script type="text/javascript">
-     jQuery.pazpar2({ "layout":"popup", width: 800, height: 500 } );
-    </script>
-
-    <pre>
-      An embryonic MasterKey Widget Set
-=================================
-
-This directory contains an embryonic MasterKey Widget Set, based
-initially on "jsdemo" though now far removed from those beginnnings.
-
-
-How this works
---------------
-
-The goal is to make it that as much of the searching functionality as
-possible is hosted on
-        http://mkws.indexdata.com/
-so that very simple websites such as
-        http://example.indexdata.com/
-can have MasterKey searching with minimal effort.
-
-The following files must be hosted on mkws.indexdata.com:
-        mkws.js
-        mkws.css
-        /pazpar2/js/pz2.js (*)
-
-The following files make up the application:
-        index.html
-        favicon.ico [optional]
-        robots.txt [optional]
-
-(At present, the client application's configuruation also needs an
-Alias for /service-proxy/, to avoid cross-site scripting issues. We
-will fix this.)
+    <h3>MKWS widgets in a popup window</h3>
 
-(*) if you don't have already installed pazpar2 on the machine, you can
-do it by installing a debian package or check it out from GIT:
-$ git clone ssh://git.indexdata.com:222/home/git/pub/pazpar2
+    <div class="mkwsSearch"></div>
+    <div class="mkwsPopup" popup_width="1024" popup_height="650" popup_modal="0" popup_autoOpen="0" popup_button="input.mkwsButton">
+      <div class="mkwsSwitch"></div>
+      <div class="mkwsLang"></div>
+      <div class="mkwsResults"></div>
+      <div class="mkwsTargets"></div>
+      <div class="mkwsStat"></div>
+    </div>
 
-Configuring a client
---------------------
+    <div class="mkwsPopup popup_width="1024" popup_height="800" popup_autoOpen="1">
+      <div class="mkwsCredo mkwsTeam_credo" autosearch="!param!q">mkwsCredo result will appear here</div>
+    </div>
 
-The application's HTML must contains the following elements as well as
-whatever makes up the application itself:
+    <div class="mkwsPopup" popup_width="700" popup_height="600" popup_autoOpen="1">
+      <div class="mkwsReference mkwsTeam_credo" sentences="1" autosearch="!param!q">mkwsReference result will appear here</div>
+    </div>
 
-[...]
-    </pre>
-    <script src="//code.jquery.com/ui/1.10.3/jquery-ui.min.js"></script>
   </body>
 </html>
index a15f554..f2653aa 100644 (file)
     <script type="text/javascript" src="src/mkws-widget-main.js"></script>
     <script type="text/javascript" src="src/mkws-widget-termlists.js"></script>
     <script type="text/javascript" src="src/mkws-widget-authname.js"></script>
+    <script type="text/javascript" src="src/mkws-widget-categories.js"></script>
     <script type="text/javascript" src="src/mkws-widget-log.js"></script>
     <script type="text/javascript" src="src/mkws-widget-record.js"></script>
+    <script type="text/javascript" src="src/mkws-widget-reference.js"></script>
+    <script type="text/javascript" src="src/mkws-widget-builder.js"></script>
 
     <style type="text/css">
       .mkwsTermlists div.facet {
index ce24206..866dc8a 100644 (file)
@@ -15,7 +15,7 @@ Handlebars.registerHelper('mkws-paragraphs', function(obj, nPara, nSent) {
   // {"hash":{},"data":{}} for parameters that are not provided. So we
   // have to be prepared for actual numbers, explicitly undefined
   // values and this dumb magic value.
-  if (nPara === undefined || nPara.hasOwnProperty('hash') || nPara == 0 || nPara > obj.length) {
+  if (obj && (nPara === undefined || nPara.hasOwnProperty('hash') || nPara == 0 || nPara > obj.length)) {
     nPara = obj.length;
   }
   if (nSent === undefined || nSent.hasOwnProperty('hash') || nSent == 0) {
diff --git a/src/mkws-popup.js b/src/mkws-popup.js
new file mode 100644 (file)
index 0000000..fd6153a
--- /dev/null
@@ -0,0 +1,61 @@
+/* generic function to open results in a popup window
+ *
+ */
+
+"use strict";
+
+// $(document).ready(function () {
+mkws.registerWidgetType('Popup', function() {
+    var $ = mkws.$;
+    var debug = mkws.log;
+    debug("init popup window");
+
+    if (!$.ui) {
+        alert("Error: jquery-ui.js is missing, did you include it after jQuery core in the HTML file?");
+        return;
+    }
+
+    var popup_window = $(this.node);       // mkws.registerWidgetType('Popup',....)
+    // var popup_window = $(".mkwsPopup"); // $(document).ready()
+
+    if (!popup_window) {
+        debug("no popup found, skip");
+        return;
+    } else {
+        debug("found popup windows: " + popup_window.length);
+    }
+
+    // more than one widget on a page are possible
+    popup_window.each(function (i) {
+        var that = $(this);
+
+        var width = parseInt(that.attr("popup_width") || "800");
+        var height = parseInt(that.attr("popup_height") || "600");
+        var autoOpen = parseInt(that.attr("popup_autoOpen") || "0");
+        var modal = parseInt(that.attr("popup_modal") || "0");
+
+        debug("Popup parameters: width: " + width + ", height: " + height + ", autoOpen: " + autoOpen);
+        that.dialog({
+            closeOnEscape: true,
+            autoOpen: autoOpen,
+            height: height,
+            width: width,
+            modal: modal ? true : false,
+            resizable: true,
+            buttons: {
+                Cancel: function () {
+                    that.dialog("close");
+                }
+            },
+            close: function () {}
+        });
+
+        // open at search query submit
+        var id_botton = that.attr("popup_button");
+        if (id_botton) {
+            $(id_botton).button().click(function () {
+                that.dialog("open");
+            });
+        }
+    });
+});
index 85c2ba4..d3a13cf 100644 (file)
@@ -448,6 +448,5 @@ mkws.registerWidgetType('Progress', function() {
 mkws.registerWidgetType('Query', function() {});
 mkws.registerWidgetType('MOTDContainer', function() {});
 mkws.registerWidgetType('Button', function() {});
-mkws.registerWidgetType('Popup', function() {});
 
 
index 388a4b8..98829b5 100644 (file)
@@ -16,10 +16,19 @@ JQUERY_UI_URL =     http://code.jquery.com/ui/1.10.3/jquery-ui.js
 VERSION = $(shell tr -d '\012' < ${SRC}/VERSION)
 
 COMPONENTS = ${SRC}/mkws-handlebars.js \
-       ${SRC}/mkws-core.js ${SRC}/mkws-team.js ${SRC}/mkws-filter.js \
-       ${SRC}/mkws-widget.js ${SRC}/mkws-widget-main.js ${SRC}/mkws-widget-termlists.js \
-       ${SRC}/mkws-widget-authname.js ${SRC}/mkws-widget-categories.js ${SRC}/mkws-widget-log.js \
-       ${SRC}/mkws-widget-record.js ${SRC}/mkws-widget-reference.js ${SRC}/mkws-widget-builder.js
+       ${SRC}/mkws-core.js \
+       ${SRC}/mkws-team.js \
+       ${SRC}/mkws-filter.js \
+       ${SRC}/mkws-popup.js \
+       ${SRC}/mkws-widget.js \
+       ${SRC}/mkws-widget-main.js \
+       ${SRC}/mkws-widget-termlists.js \
+       ${SRC}/mkws-widget-authname.js \
+       ${SRC}/mkws-widget-categories.js \
+       ${SRC}/mkws-widget-log.js \
+       ${SRC}/mkws-widget-record.js \
+       ${SRC}/mkws-widget-reference.js \
+       ${SRC}/mkws-widget-builder.js
 
 GENERATED = ${HANDLEBARS_FILE} ${JQUERY_FILE} ${JQUERY_JSON_FILE} ${PP2_FILE} \
        mkws.js mkws.min.js mkws-complete.js mkws-complete.min.js
@@ -87,6 +96,10 @@ mkws.js: $(COMPONENTS) Makefile
        mv -f $@.tmp $@
        chmod 444 $@
 
+mkws-html-includes: 
+       echo $(COMPONENTS) | perl -npe "s,${SRC},,g; s/\s+/\0/g" | \
+         perl -n0e 'print qq{    <script type="text/javascript" src="src$$_"></script>\n}'
+
 distclean: clean
        @echo "(No need for distclean, 'make clean' is fine)"