Merge remote branch 'origin/master' into wosch
authorWolfram Schneider <wosch@indexdata.dk>
Mon, 28 Apr 2014 08:15:12 +0000 (08:15 +0000)
committerWolfram Schneider <wosch@indexdata.dk>
Mon, 28 Apr 2014 08:15:12 +0000 (08:15 +0000)
examples/htdocs/mike.html
examples/htdocs/mkws-widget-reference.css [new file with mode: 0644]
examples/htdocs/mkws-widget-reference.js [new file with mode: 0644]
examples/htdocs/reference-universe.html [new file with mode: 0644]
src/mkws-team.js
src/mkws-widgets.js

index e3a1266..7eb0302 100644 (file)
@@ -17,6 +17,7 @@
     </style>
     <script type="text/javascript">
       var mkws_config = { service_proxy_auth: "//mkws.indexdata.com/service-proxy-testauth" };
+      var ourQuery = 'dinosaur';
     </script>
     <script type="text/javascript" src="http://code.jquery.com/jquery-1.11.0.min.js"></script>
     <script type="text/javascript" src="http://x.mkws.indexdata.com/jquery.json-2.4.js"></script>
     <script type="text/javascript" src="http://x.mkws.indexdata.com/pazpar2/js/pz2.js"></script>
     <script type="text/javascript" src="http://x.mkws.indexdata.com/mkws.js"></script>
   </head>
-<!--
   <body>
-    <svg width="100" height="100">
-      <circle cx="50" cy="50" r="40" stroke="green" stroke-width="4" fill="yellow" />
-    </svg>
+<div class='mkwsRecords'
+       autosearch='!var!ourQuery'
+       sort='relevance'
+       targets='pz:id~josiah.brown.edu:210/innopac|connect.indexdata.com:9000/mit_opencourseware'
+>results will appear here</div>
   </body>
--->
-  <body>
-    <div class="mkwsSwitch"></div>
-    <div class="mkwsLang"></div>
-    <div class="mkwsAuthname"></div>
-    <div class="mkwsSearch"></div>
-    <br/>
-    <div class="mkwsCategories"></div>
-    <table width="100%" border="0" cellpadding="6" cellspacing="0">
-      <tr>
-       <td class="mkwsTermlistContainer1" width="250" valign="top">
-         <div class="mkwsTermlists mkwsTeam_AUTO">
-           <div class="title">Termlists</div>
-           <div class="mkwsFacet mkwsTeam_AUTO" data-mkws-facet="subject"></div>
-           <div class="mkwsFacet mkwsTeam_AUTO" data-mkws-facet="xtargets"></div>
-           <div class="mkwsFacet mkwsTeam_AUTO" data-mkws-facet="author"></div>
-         </div>
-       </td>
-       <td class="mkwsMOTDContainer" valign="top">
-         <div class="mkwsRanking"></div>
-         <div class="mkwsPager"></div>
-         <div class="mkwsNavi"></div>
-         <div class="mkwsRecords"></div>
-         <div class="mkwsTargets"></div>
-       </td>
-      </tr>
-      <tr>
-       <td colspan="2">
-         <div class="mkwsTermlistContainer2"></div>
-       </td>
-      </tr>
-    </table>
-    <div class="mkwsStat"></div>
-    <div class="mkwsConsoleBuilder" text="Make Widget"></div>
-    <div class="mkwsDone"></div>
-    <div class="mkwsMOTD">Speak, friend, and enter!</div>
-  </body>
-<!--
-  <body>
-    <table width="100%" border="1">
-      <tr>
-       <td valign="top" width="50%">
-         <div class="mkwsSwitch"></div>
-         <div class="mkwsLang"></div>
-         <div class="mkwsSearch"></div>
-         <div class="mkwsResults"></div>
-         <div class="mkwsTargets"></div>
-         <div class="mkwsStat"></div>
-       </td>
-       <td valign="top" width="50%">
-         <div class="mkwsSwitch mkwsTeam_2"></div>
-         <div class="mkwsLang mkwsTeam_2"></div>
-         <div class="mkwsSearch mkwsTeam_2"></div>
-         <div class="mkwsResults mkwsTeam_2"></div>
-         <div class="mkwsTargets mkwsTeam_2"></div>
-         <div class="mkwsStat mkwsTeam_2"></div>
-       </td>
-      </tr>
-    </table>
-    <div class="mkwsMOTD">This is the first MOTD</div>
-    <div class="mkwsMOTD mkwsTeam_2">This is the second MOTD</div>
-  </body>
--->
 </html>
diff --git a/examples/htdocs/mkws-widget-reference.css b/examples/htdocs/mkws-widget-reference.css
new file mode 100644 (file)
index 0000000..88d1fb2
--- /dev/null
@@ -0,0 +1,24 @@
+.mkwsReference {
+    max-width: 40em;
+    font-family: Gill Sans, "Gillius ADF", Gillius, GilliusADF, Verdana, Sans-Serif;
+    background: #f0f0e0;
+    padding: 0.5em 1em;
+    border: 1px solid #c0c0a0;
+    border-radius: 1em;
+    -moz-border-radius: 1em;
+    -webkit-border-radius: 1em;
+}
+
+.mkwsReference h1 a {
+    color: #806020;
+}
+
+.mkwsReference a {
+    text-decoration: none;
+}
+
+.mkwsReference img {
+    float:right;
+    margin: 0 0 1em 2em;
+    border: 0.5em solid white;
+}
diff --git a/examples/htdocs/mkws-widget-reference.js b/examples/htdocs/mkws-widget-reference.js
new file mode 100644 (file)
index 0000000..fc2b920
--- /dev/null
@@ -0,0 +1,19 @@
+mkws.registerWidgetType('Reference', function() {
+    mkws.promotionFunction('Record').call(this);
+    if (!this.config.target) this.config.target = 'wikimedia_wikipedia_single_result';
+    if (!this.config.template) this.config.template = 'Reference';
+
+    this.team.registerTemplate('Reference', '\
+  <img src="{{md-thumburl}}" alt="{{md-title}}">\
+  <h1><a href="{{md-electronic-url}}">{{md-title}}</a></h1>\
+{{#if md-title-remainder}}\
+  <b>{{md-title-remainder}}</b>\
+{{/if}}\
+{{#if md-title-responsibility}}\
+  <i>{{md-title-responsibility}}</i>\
+{{/if}}\
+  <p>\
+    {{md-description}}\
+  </p>\
+');
+});
diff --git a/examples/htdocs/reference-universe.html b/examples/htdocs/reference-universe.html
new file mode 100644 (file)
index 0000000..438407b
--- /dev/null
@@ -0,0 +1,15 @@
+<html>
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    <title>MKWS demo: Reference Universe widget</title>
+    <link rel="stylesheet" type="text/css" href="mkws-widget-reference.css" />
+    <script type="text/javascript">
+      var mkws_config = { service_proxy_auth: "//mkws.indexdata.com/service-proxy-testauth" };
+    </script>
+    <script type="text/javascript" src="//mkws.indexdata.com/mkws-complete.js"></script>
+    <script type="text/javascript" src="mkws-widget-reference.js"></script>
+  </head>
+  <body>
+    <div class='mkwsReference' autosearch='!param!q'>result will appear here</div>
+  </body>
+</html>
index a76c65c..cf4794b 100644 (file)
@@ -26,7 +26,8 @@ function team($, teamName) {
        "last": $.now()
     };
     var m_paz; // will be initialised below
-    var m_template = {};
+    var m_tempateText = {}; // widgets can register tempates to be compiled
+    var m_template = {}; // compiled templates, from any source
     var m_config = mkws.objectInheritingFrom(mkws.config);
     var m_widgets = {}; // Maps widget-type to object
 
@@ -616,6 +617,11 @@ function team($, teamName) {
     that.renderDetails = renderDetails;
 
 
+    that.registerTemplate = function(name, text) {
+        m_tempateText[name] = text;
+    };
+
+
     function loadTemplate(name) {
        var template = m_template[name];
 
@@ -631,6 +637,9 @@ function team($, teamName) {
             }
 
            if (!source) {
+                source = m_tempateText[name];
+            }
+           if (!source) {
                source = defaultTemplate(name);
            }
 
index cd9e45d..c677853 100644 (file)
@@ -83,6 +83,13 @@ widget.autosearch = function(widget) {
                if (!query) {
                    alert("This page has a MasterKey widget that needs a query specified by the path-component " + index);
                }
+            } else if (query.match(/^!var!/)) {
+               var name = query.replace(/^!var!/, '');
+               query = window[name]; // It's ridiculous that this works
+               widget.log("obtained query '" + query + "' from variable '" + name + "'");
+               if (!query) {
+                   alert("This page has a MasterKey widget that needs a query specified by the '" + name + "' variable");
+               }
            }
 
            var sortOrder = widget.config.sort;
@@ -237,6 +244,7 @@ mkws.registerWidgetType('Records', function() {
        var html = [];
        for (var i = 0; i < data.hits.length; i++) {
            var hit = data.hits[i];
+            that.team.queue("record").publish(hit);
            var divId = team.recordElementId(hit.recid[0]);
            html.push('<div class="record mkwsTeam_' + team.name() + ' ' + divId + '">', renderSummary(hit), '</div>');
            // ### At some point, we may be able to move the