Merge branch 'master' into templateallthemarkup
authorJason Skomorowski <jason@indexdata.com>
Mon, 22 Sep 2014 13:32:46 +0000 (09:32 -0400)
committerJason Skomorowski <jason@indexdata.com>
Mon, 22 Sep 2014 13:32:46 +0000 (09:32 -0400)
1  2 
src/mkws-core.js
src/mkws-team.js

diff --combined src/mkws-core.js
@@@ -20,7 -20,6 +20,7 @@@ window.mkws = 
                  // initial value allows jQuery popup to use logging.
    teams: {},
    widgetType2function: {},
 +  defaultTemplates: {},
  
    locale_lang: {
      "de": {
@@@ -168,13 -167,13 +168,13 @@@ mkws.setMkwsConfig = function(overrides
  
    var config_default = {
      use_service_proxy: true,
-     pazpar2_url:        "//mkws.indexdata.com/service-proxy/",
-     service_proxy_auth: undefined, // generally rolled from the next three properties
-     // Was: //mkws.indexdata.com/service-proxy-auth
-     pp2_hostname: "mkws.indexdata.com",
-     sp_path: "service-proxy-auth",
-     sp_auth_query: undefined, // Will be: "command=auth&action=perconfig",
-     sp_auth_credentials: undefined,
+     pazpar2_url: undefined,
+     pp2_hostname: "sp-mkws.indexdata.com",
+     pp2_path: "service-proxy",
+     service_proxy_auth: undefined,
+     sp_auth_path: "service-proxy/",
+     sp_auth_query: "command=auth&action=perconfig",
+     sp_auth_credentials: "XXX/XXX", // Should be undefined: see bug MKSP-125.
      lang: "",
      sort_options: [["relevance"], ["title:1", "title"], ["date:0", "newest"], ["date:1", "oldest"]],
      perpage_options: [10, 20, 30, 50],
      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"
    };
@@@ -213,6 -211,110 +213,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.
@@@ -257,6 -359,18 +257,18 @@@ mkws.pagerNext = function(tname) 
  };
  
  
+ mkws.pazpar2_url = function() {
+   if (mkws.config.pazpar2_url) {
+     mkws.log("using pre-baked pazpar2_url '" + mkws.config.pazpar2_url + "'");
+     return mkws.config.pazpar2_url;
+   } else {
+     var s = document.location.protocol + "//" + mkws.config.pp2_hostname + "/" + mkws.config.pp2_path + "/";
+     mkws.log("generated pazpar2_url '" + s + "'");
+     return s;
+   }
+ };
  // wrapper to provide local copy of the jQuery object.
  (function($) {
    var log = mkws.log;
        }
  
        // protocol independent link for pazpar2: "//mkws/sp" -> "https://mkws/sp"
-       if (mkws.config.pazpar2_url.match(/^\/\//)) {
+       if (mkws.pazpar2_url().match(/^\/\//)) {
          mkws.config.pazpar2_url = document.location.protocol + mkws.config.pazpar2_url;
-         log("adjusted protocol independent link to " + mkws.config.pazpar2_url);
+         log("adjusted protocol independent link to " + mkws.pazpar2_url());
        }
  
        if (mkws.config.responsive_design_width) {
        } else {
        var s = '//';
        s += config.auth_hostname ? config.auth_hostname : config.pp2_hostname;
-       s += '/' + config.sp_path;
+       s += '/' + config.sp_auth_path;
          var q = config.sp_auth_query;
          if (q) {
            s += '?' + q;
      if (mkws.config.use_service_proxy && !mkws.authenticated && !mkws.authenticating) {
        authenticateSession(sp_auth_url(mkws.config),
                            mkws.config.service_proxy_auth_domain,
-                           mkws.config.pazpar2_url);
+                           mkws.pazpar2_url());
      } else if (!mkws.authenticating) {
        // raw pp2 or we have a session already open
        runAutoSearches();
diff --combined src/mkws-team.js
@@@ -41,13 -41,11 +41,13 @@@ function team($, teamName) 
    that.submitted = function() { return m_submitted; };
    that.sortOrder = function() { return m_sortOrder; };
    that.perpage = function() { return m_perpage; };
 +  that.query = function() { return m_query; };
    that.totalRecordCount = function() { return m_totalRecordCount; };
    that.currentPage = function() { return m_currentPage; };
    that.currentRecordId = function() { return m_currentRecordId; };
    that.currentRecordData = function() { return m_currentRecordData; };
    that.filters = function() { return m_filterSet; };
 +  that.gotRecords = function() { return m_gotRecords; };
  
    // Accessor methods for individual widgets: writers
    that.set_sortOrder = function(val) { m_sortOrder = val };
@@@ -96,7 -94,7 +96,7 @@@
    // then register the form submit event with the pz2.search function
    // autoInit is set to true on default
    m_paz = new pz2({ "windowid": teamName,
-                     "pazpar2path": config.pazpar2_url,
+                     "pazpar2path": mkws.pazpar2_url(),
                      "usesessions" : config.use_service_proxy ? false : true,
                      "oninit": onInit,
                      "onbytarget": onBytarget,
      log("record");
      // FIXME: record is async!!
      clearTimeout(m_paz.recordTimer);
 +    queue("record").publish(data);
      var detRecordDiv = findnode(recordDetailsId(data.recid[0]));
      if (detRecordDiv.length) {
        // in case on_show was faster to redraw element
      m_paz.search(m_query, m_perpage, m_sortOrder, pp2filter, undefined, params);
    }
  
 +  // fetch record details to be retrieved from the record queue
 +  that.fetchDetails = function(recId) {
 +    log("fetchDetails() requesting record '" + recId + "'");
 +    m_paz.record(recId);
 +  };
 +
  
    // switching view between targets and records
    function switchView(view) {
  
    function loadTemplate(name, fallbackString) {
      var template = m_template[name];
 -
 -    if (template === undefined) {
 -      // Fall back to generic template if there is no team-specific one
 +    if (template === undefined && Handlebars.compile) {
        var source;
        var node = $(".mkwsTemplate_" + name + " .mkwsTeam_" + that.name());
        if (node && node.length < 1) {
          node = $(".mkwsTemplate_" + name);
        }
 -      if (node) {
 -        source = node.html();
 -      }
 -
 -      // If the template is not defined in HTML, check the following
 -      // in order: template registered in the team by a widget;
 -      // fallback string provided on this invocation; global default.
 -      if (!source) {
 -        source = m_templateText[name];
 -      }
 -      if (!source) {
 -        source = fallbackString;
 +      if (node) source = node.html();
 +      if (!source) source = m_templateText[name];
 +      if (source) {
 +        template = Handlebars.compile(source);
 +        log("compiled template '" + name + "'");
        }
 -      if (!source) {
 -        source = mkws.defaultTemplate(name);
 -      }
 -
 -      if (!source) return null;
 -      template = Handlebars.compile(source);
 -      log("compiled template '" + name + "'");
 +    }
 +    //if (template === undefined) template = mkws_templatesbyteam[m_teamName][name];
 +    if (template === undefined && Handlebars.templates) {
 +      template = Handlebars.templates[name];
 +    }
 +    if (template === undefined && mkws.defaultTemplates) {
 +      template = mkws.defaultTemplates[name];
 +    }
 +    if (template) {
        m_template[name] = template;
 +      return template;
      }
 -
 -    return template;
 +    else {
 +      mkws.log("No MKWS template for " + name);
 +      return null;
 +    }  
    }
    that.loadTemplate = loadTemplate;