Merge branch 'master' into templateallthemarkup
authorJason Skomorowski <jason@indexdata.com>
Tue, 19 Aug 2014 21:09:49 +0000 (17:09 -0400)
committerJason Skomorowski <jason@indexdata.com>
Tue, 19 Aug 2014 21:09:49 +0000 (17:09 -0400)
1  2 
src/mkws-core.js

diff --combined src/mkws-core.js
  window.mkws = {
    $: $, // Our own local copy of the jQuery object
    authenticated: false,
+   authenticating: false,
    active: false,
    log_level: 1, // Will be overridden from mkws.config, but
                  // initial value allows jQuery popup to use logging.
    teams: {},
    widgetType2function: {},
 +  defaultTemplates: {},
  
    locale_lang: {
      "de": {
@@@ -183,7 -183,6 +184,7 @@@ mkws.setMkwsConfig = function(overrides
      facets: ["xtargets", "subject", "author"], /* display facets, in this order, [] for none */
      responsive_design_width: undefined, /* a page with less pixel width considered as narrow */
      log_level: 1,     /* log level for development: 0..2 */
 +    template_vars: {}, /* values that may be exposed to templates */
  
      dummy: "dummy"
    };
@@@ -207,6 -206,110 +208,6 @@@ mkws.objectInheritingFrom = function(o
  }
  
  
 -mkws.defaultTemplate = function(name) {
 -  if (name === 'Record') {
 -    return '\
 -<table>\
 -  <tr>\
 -    <th>{{mkws-translate "Title"}}</th>\
 -    <td>\
 -      {{md-title}}\
 -      {{#if md-title-remainder}}\
 -        ({{md-title-remainder}})\
 -      {{/if}}\
 -      {{#if md-title-responsibility}}\
 -        <i>{{md-title-responsibility}}</i>\
 -      {{/if}}\
 -    </td>\
 -  </tr>\
 -  {{#if md-date}}\
 -  <tr>\
 -    <th>{{mkws-translate "Date"}}</th>\
 -    <td>{{md-date}}</td>\
 -  </tr>\
 -  {{/if}}\
 -  {{#if md-author}}\
 -  <tr>\
 -    <th>{{mkws-translate "Author"}}</th>\
 -    <td>{{md-author}}</td>\
 -  </tr>\
 -  {{/if}}\
 -  {{#if md-electronic-url}}\
 -  <tr>\
 -    <th>{{mkws-translate "Links"}}</th>\
 -    <td>\
 -      {{#each md-electronic-url}}\
 -        <a href="{{this}}">Link{{mkws-index1}}</a>\
 -      {{/each}}\
 -    </td>\
 -  </tr>\
 -  {{/if}}\
 -  {{#mkws-if-any location having="md-subject"}}\
 -  <tr>\
 -    <th>{{mkws-translate "Subject"}}</th>\
 -    <td>\
 -      {{#mkws-first location having="md-subject"}}\
 -        {{#if md-subject}}\
 -          {{#mkws-commaList md-subject}}\
 -            {{this}}{{/mkws-commaList}}\
 -        {{/if}}\
 -      {{/mkws-first}}\
 -    </td>\
 -  </tr>\
 -  {{/mkws-if-any}}\
 -  <tr>\
 -    <th>{{mkws-translate "Locations"}}</th>\
 -    <td>\
 -      {{#mkws-commaList location}}\
 -        {{mkws-attr "@name"}}{{/mkws-commaList}}\
 -    </td>\
 -  </tr>\
 -</table>\
 -';
 -  } else if (name === "Summary") {
 -    return '\
 -<a href="#" id="{{_id}}" onclick="{{_onclick}}">\
 -  <b>{{md-title}}</b>\
 -</a>\
 -{{#if md-title-remainder}}\
 -  <span>{{md-title-remainder}}</span>\
 -{{/if}}\
 -{{#if md-title-responsibility}}\
 -  <span><i>{{md-title-responsibility}}</i></span>\
 -{{/if}}\
 -{{#if md-date}}, {{md-date}}\
 -{{#if location}}\
 -, {{#mkws-first location}}{{mkws-attr "@name"}}{{/mkws-first}}\
 -{{/if}}\
 -{{#if md-medium}}\
 -<span>, {{md-medium}}</span>\
 -{{/if}}\
 -{{/if}}\
 -';
 -  } else if (name === "Image") {
 -    return '\
 -      <a href="#" id="{{_id}}" onclick="{{_onclick}}">\
 -        {{#mkws-first md-thumburl}}\
 -          <img src="{{this}}" alt="{{../md-title}}"/>\
 -        {{/mkws-first}}\
 -        <br/>\
 -      </a>\
 -';
 -  } else if (name === 'Facet') {
 -    return '\
 -<a href="#"\
 -{{#if fn}}\
 -onclick="mkws.{{fn}}(\'{{team}}\', \'{{field}}\', \'{{term}}\');return false;"\
 -{{/if}}\
 ->{{term}}</a>\
 -<span>{{count}}</span>\
 -';
 -  }
 -
 -  return null;
 -};
 -
 -
  // The following functions are dispatchers for team methods that
  // are called from the UI using a team-name rather than implicit
  // context.
@@@ -343,6 -446,7 +344,7 @@@ mkws.pagerNext = function(tname) 
     * for the site.
     */
    function authenticateSession(auth_url, auth_domain, pp2_url) {
+     mkws.authenticating = true;
      log("service proxy authentication on URL: " + auth_url);
  
      if (!auth_domain) {
      }, auth_domain);
  
      request.get(null, function(data) {
+       mkws.authenticating = false;
        if (!$.isXMLDoc(data)) {
          alert("Service Proxy authentication response is not a valid XML document");
          return;
    }
  
  
-   // This function should have no side effects if run again on an operating session, even if 
-   // the element/selector passed causes existing widgets to be reparsed: 
+   // The second "rootsel" parameter is passed to jQuery and is a DOM node
+   // or a selector string you would like to constrain the search for widgets to.
+   //
+   // This function has no side effects if run again on an operating session,
+   // even if the element/selector passed causes existing widgets to be reparsed: 
+   //
+   // (TODO: that last bit isn't true and we currently have to avoid reinitialising
+   // widgets, MKWS-261)
    //
    // * configuration is not regenerated
    // * authentication is not performed again
    // * autosearches are not re-run
    mkws.init = function(message, rootsel) {
-     if (message) mkws.log(message);
+     var greet = "MKWS initialised";
+     if (rootsel) greet += " (limited to " + rootsel + ")"
+     if (message) greet += " :: " + message; 
+     mkws.log(greet);
  
      // TODO: Let's remove this soon
      // Backwards compatibility: set new magic class names on any
      var then = $.now();
      // If we've made no widgets, return without starting an SP session
      // or marking MKWS active.
-     if (makeWidgetsWithin(1, rootsel) === false) return false;
+     if (makeWidgetsWithin(1, rootsel ? $(rootsel) : undefined) === false) {
+       return false;
+     }
      var now = $.now();
  
      log("walking MKWS nodes took " + (now-then) + " ms");
        }
      */
  
-     if (mkws.config.use_service_proxy && !mkws.authenticated) {
+     if (mkws.config.use_service_proxy && !mkws.authenticated && !mkws.authenticating) {
        authenticateSession(mkws.config.service_proxy_auth,
                            mkws.config.service_proxy_auth_domain,
                            mkws.config.pazpar2_url);
-     } else {
+     } else if (!mkws.authenticating) {
        // raw pp2 or we have a session already open
        runAutoSearches();
      }
    };
  
    $(document).ready(function() {
-     mkws.init();
+     if (!window.mkws_noready && !mkws.authenticating && !mkws.active) {
+        mkws.init();
+     }
    });
  
  })(mkws.$);