Use HTML entity © since the crappy old pandoc version on caliban
[mkws-moved-to-github.git] / tools / htdocs / README.markdown
index a05948b..6701ab7 100644 (file)
@@ -3,6 +3,9 @@
 % 10 July 2013
 
 
 % 10 July 2013
 
 
+Introduction
+------------
+
 This directory contains an embryonic MasterKey Widget Set. The initial
 version was based on the "jsdemo" application distributed with
 pazpar2, but it is now far removed from those beginnnings.
 This directory contains an embryonic MasterKey Widget Set. The initial
 version was based on the "jsdemo" application distributed with
 pazpar2, but it is now far removed from those beginnnings.
@@ -11,24 +14,19 @@ pazpar2, but it is now far removed from those beginnnings.
 How this works
 --------------
 
 How this works
 --------------
 
-The goal is to make it that as much of the searching functionality as
-possible is hosted on
+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.
 
        <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 are hosted on mkws.indexdata.com:
+The following files are hosted on `mkws.indexdata.com`:
 
 
+* `mkws.css`
 * `mkws.js`
 * `mkws.js`
-* `mkwsStyle.css`
-* `/libjs-pz2/pz2api.1.js`
-
-The following files make up an application:
-
-* `index.html`
-* `favicon.ico` [_optional_]
-* `robots.txt` [_optional_]
+* `/pazpar2/js/pz2.js`
+* `mkws-complete.js` -- a single file consisting of `mkws.js`,
+  jQuery (which it uses), Handlebars (ditto) and `pz2.js`
 
 
 Configuring a client
 
 
 Configuring a client
@@ -38,78 +36,76 @@ The application's HTML must contains the following elements as well as
 whatever makes up the application itself:
 
 Prerequisites:
 whatever makes up the application itself:
 
 Prerequisites:
-    <link rel="stylesheet" href="mkwsStyle.css" />
-    <script type="text/javascript">
-       var mkws_config = { };
-    </script>
-    <script type="text/javascript" src="http://code.jquery.com/jquery-1.10.0.min.js"></script>
-    <script type="text/javascript" src="/libjs-pz2/pz2api.1.js"></script>
-    <script type="text/javascript" src="mkws.js"></script>
-(Yes, we're using JQuery. We use it only in the most trivial ways, and
-could probably get rid of it without too much pain. I'd like to have
-mkws.js automatically pull in pz2api.1.js, too, so you don't need to
-do so many things, but that's not quite trivial.)
-
-Then the following special <div>s can be added (with no content), and
+
+~~~
+       <link rel="stylesheet" href="http://mkws.indexdata.com/mkws.css" />
+       <script type="text/javascript" src="http://mkws.indexdata.com/mkws-complete.js"></script>
+~~~
+
+Then the following special `<div>`s can be added (with no content), and
 will be filled in by MKWS:
 will be filled in by MKWS:
-    <div id="mkwsSwitch"></div> -- switch between record and target views
-    <div id="mkwsLang"></div>   -- switch between English, Danish and German
-    <div id="mkwsSearch"></div> -- search box and button
-    <div id="mkwsResults"></div> -- result list, including pager/sorting
-    <div id="mkwsTargets"></div> -- target list, including status
-    <div id="mkwsStat"></div> -- summary statistics
-
-At present, MKWS will not work correctly if any of these is
-missing. One of the TODOs is to fix it so that it doesn't try to use
-whatever is not there, and just uses what is.
 
 
+* `<div id="mkwsSwitch"></div>` -- switch between record and target views
+* `<div id="mkwsLang"></div>  ` -- switch between English, Danish and German
+* `<div id="mkwsSearch"></div>` -- search box and button
+* `<div id="mkwsResults"></div>` -- result list, including pager/sorting
+* `<div id="mkwsTargets"></div>` -- target list, including status
+* `<div id="mkwsStat"></div>` -- summary statistics
 
 
-You can configure and control the client with the JavaScript mkws_config object.
+At present, MKWS may not work correctly if some of these are
+missing. One of the TODOs is to fix it so that it doesn't try to use
+whatever is not there, and just uses what is.
 
 
-Here is an example of all possible options
-    <script type="text/javascript">
-        var mkws_config = {
-                use_service_proxy: true,    /* true, flase: use service proxy instead pazpar2 */
-               switch_menu: true,          /* true, false: show/hide Records|Targets menu */
-               lang_menu: true,            /* true, false: show/hide language menu */
-               sort_menu: true,            /* true, false: show/hide sort menu */
-               perpage_menu: true,         /* true, false: show/hide perpage menu */
-               lang_display: ["en", "de", "da"], /* display languages links for given
-                                                    languages, [] for all */
+You can configure and control the client by creating an `mkws_config`
+object _before_ loading the widget-set.  Here is an example of all
+possible options:
+
+~~~
+       <script type="text/javascript">
+           var mkws_config = {
+               use_service_proxy: true,    /* true, flase: use service proxy instead pazpar2 */
+               show_lang: true,            /* true, false: show/hide language menu */
+               show_sort: true,            /* true, false: show/hide sort menu */
+               show_perpage: true,         /* true, false: show/hide perpage menu */
+               lang_options: ["en", "de", "da"], /* display languages links for given
+                                                    languages, [] for all */
                facets: ["sources", "subjects", "authors"], /* display facets, in this order, [] for none */
                facets: ["sources", "subjects", "authors"], /* display facets, in this order, [] for none */
-                sort_default: "relevance",  /* "relevance", "title:1", "date:0", "date:1" */
+               sort_default: "relevance",  /* "relevance", "title:1", "date:0", "date:1" */
                query_width: 50,            /* 5..50 */
                query_width: 50,            /* 5..50 */
-                perpage_default: 20,       /* 10, 20, 30, 50 */
-                lang: "en",                 /* "en", "de", "da" */
-               debug: 0,                   /* debug level for development: 0..2 */
+               perpage_default: 20,        /* 10, 20, 30, 50 */
+               lang: "en",                 /* "en", "de", "da" */
+               debug_level: 0,         /* debug level for development: 0..2 */
 
 
-               responsive_design: false    /* true, false: resize for smaller mobile devices */
-               pazpar2_url: "/pazpar2/search.pz2",        /* URL */
-               service_proxy_url: "/service-proxy/",      /* URL */
+               responsive_design_wodth: 600,    /* page reflows for devices < 600 pixels wide */
+               pazpar2_url: "/service-proxy/",            /* URL */
                service_proxy_auth: "/service-proxy-auth", /* URL */
                service_proxy_auth: "/service-proxy-auth", /* URL */
-         };
-    </script>
-
-Note: the mkws_config object which must be loaded before the mkws.js and pz2api.js files.
-
+               // TODO: language_*, perpage_options, sort_options
+           };
+       </script>
+~~~
 
 jQuery plugin
 ------------------
 
 
 jQuery plugin
 ------------------
 
-The jQuery plugin version, consisting of a single line of JavaScript code
+The jQuery plugin version can be used by a single line of JavaScript code:
 
 
-  <script>jQuery.pazpar2();</script>
+~~~
+       <script>jQuery.pazpar2();</script>
+~~~
 
 
-put the code in your page at the position where the metasearch should occours.
+put the code in your page at the position where the metasearch should occur.
 
 Here is an example of all possible options
 
 
 Here is an example of all possible options
 
-  jQuery.pazpar2({"layout": "popup",   /* "table", "div", "popup", default is table */
-                 "id_button": "input#mkwsButton", /* submit button id in search field */
-                 "id_popup": "#mkwsPopup",        /* interal id of popup window */
-                 "width": 880,         /* popup width, should be at least  800 */ 
-                 "height": 760         /* popup height, should be at least 600 */
-  });
+~~~
+       jQuery.pazpar2({
+           "layout": "popup",               /* "table" [default], "div", "popup" */
+           "id_button": "input#mkwsButton", /* submit button id in search field */
+           "id_popup": "#mkwsPopup",        /* internal id of popup window */
+           "width": 880,                    /* popup width, should be at least 800 */ 
+           "height": 760                    /* popup height, should be at least 600 */
+       });
+~~~
 
 
 Supported Browsers
 
 
 Supported Browsers
@@ -127,20 +123,40 @@ Any modern HTML5 browser will work fine. JavaScript must be enabled.
 
 Not supported: IE6, IE7
 
 
 Not supported: IE6, IE7
 
+
 New Features since jsdemo
 --------------------------
 New Features since jsdemo
 --------------------------
-- multilinguality: English (default), Danish, German
-- depends on the new pazpar2 JS library libjs-pz2/pz2api.1.js
-  which will make the development of pazpar2 plugins faster and
-  easier to share code between projects
-- supports basic pazpar2 and service-proxy requests
-- simplified HTML
-- the search page is fully configurable by a JSON object
+
+- Supports basic pazpar2 and service-proxy requests
+- Simplified HTML
+- The search page is fully configurable by a JSON object
+
+
+Checklist before doing a release
+---------------------------------
+- open the site, e.g. http://mkws-dev.indexdata.com/index-mike.html
+- open the debug/error console in your browser (alt-cmd-J, shift-cmd-J)
+- check the language links ("de", "da", "en")
+- run a search with few, but not to few results, e.g.: freebsd
+- check "Targets" | "Records" links
+- check "Next" and "Prev" links
+- click on the first hit and display details, click on an "URL" to jump to
+  the local catalog or full text
+- limit search to a "Source"
+- limit search to an "Author"
+- sort results by "Title" and "newest"
+- what else?
+
 
 
 What next?
 ----------
 
 Main areas of work:
 
 
 What next?
 ----------
 
 Main areas of work:
+
 * Make MKWS robust to missing widgets
 * Clean up the code
 * Make MKWS robust to missing widgets
 * Clean up the code
+
+- - -
+
+Copyright &copy; 2013 IndexData ApS. <http://www.indexdata.com>