X-Git-Url: http://jsfdemo.indexdata.com/?a=blobdiff_plain;f=src%2Fmkws-core.js;h=8d19f3a0d133a010e6c50f5fcfabe0d754ef5861;hb=383378d6a66b3b00bb540e2c1738d18d470b557e;hp=6b1e0f6fcc4b2a30956d916d2afab510264efd73;hpb=7ef365454c1ca797f41f77d80187f6014b64b4ac;p=mkws-moved-to-github.git
diff --git a/src/mkws-core.js b/src/mkws-core.js
index 6b1e0f6..8d19f3a 100644
--- a/src/mkws-core.js
+++ b/src/mkws-core.js
@@ -88,7 +88,8 @@ mkws.log = function(string) {
// you need to disable use strict at the top of the file!!!
if (mkws.log_level >= 3) {
- console.log(arguments.callee.caller);
+ // Works in Chrome; not sure about elsewhere
+ console.trace();
} else if (mkws.log_level >= 2) {
console.log(">>> called from function " + arguments.callee.caller.name + ' <<<');
}
@@ -163,6 +164,95 @@ mkws.objectInheritingFrom = function(o) {
}
+mkws.defaultTemplate = function(name) {
+ if (name === 'Record') {
+ return '\
+
\
+ \
+ {{translate "Title"}} | \
+ \
+ {{md-title}}\
+ {{#if md-title-remainder}}\
+ ({{md-title-remainder}})\
+ {{/if}}\
+ {{#if md-title-responsibility}}\
+ {{md-title-responsibility}}\
+ {{/if}}\
+ | \
+
\
+ {{#if md-date}}\
+ \
+ {{translate "Date"}} | \
+ {{md-date}} | \
+
\
+ {{/if}}\
+ {{#if md-author}}\
+ \
+ {{translate "Author"}} | \
+ {{md-author}} | \
+
\
+ {{/if}}\
+ {{#if md-electronic-url}}\
+ \
+ {{translate "Links"}} | \
+ \
+ {{#each md-electronic-url}}\
+ Link{{index1}}\
+ {{/each}}\
+ | \
+
\
+ {{/if}}\
+ {{#if-any location having="md-subject"}}\
+ \
+ {{translate "Subject"}} | \
+ \
+ {{#first location having="md-subject"}}\
+ {{#if md-subject}}\
+ {{#commaList md-subject}}\
+ {{this}}{{/commaList}}\
+ {{/if}}\
+ {{/first}}\
+ | \
+
\
+ {{/if-any}}\
+ \
+ {{translate "Locations"}} | \
+ \
+ {{#commaList location}}\
+ {{attr "@name"}}{{/commaList}}\
+ | \
+
\
+
\
+';
+ } else if (name === "Summary") {
+ return '\
+\
+ {{md-title}}\
+\
+{{#if md-title-remainder}}\
+ {{md-title-remainder}}\
+{{/if}}\
+{{#if md-title-responsibility}}\
+ {{md-title-responsibility}}\
+{{/if}}\
+';
+ } else if (name === "Image") {
+ return '\
+ \
+ {{#first md-thumburl}}\
+ \
+ {{/first}}\
+
\
+ \
+';
+ }
+
+ var s = "There is no default '" + name +"' template!";
+ alert(s);
+ return s;
+};
+
+
// The following functions are dispatchers for team methods that
// are called from the UI using a team-name rather than implicit
// context.
@@ -182,6 +272,10 @@ mkws.limitQuery = function(tname, field, value) {
mkws.teams[tname].limitQuery(field, value);
};
+mkws.limitCategory = function(tname, id) {
+ mkws.teams[tname].limitCategory(id);
+};
+
mkws.delimitTarget = function(tname, id) {
mkws.teams[tname].delimitTarget(id);
};
@@ -229,6 +323,8 @@ mkws.pagerNext = function(tname) {
type = cname.replace(/^mkws/, '');
}
}
+
+ if (!teamName) teamName = "AUTO";
callback.call(node, teamName, type);
}
@@ -236,27 +332,43 @@ mkws.pagerNext = function(tname) {
function resizePage() {
var list = ["mkwsSwitch", "mkwsLang"];
- var width = mkws.config.responsive_design_width;
var parent = $(".mkwsTermlists").parent();
-
- if ($(window).width() <= width &&
- parent.hasClass("mkwsTermlistContainer1")) {
- log("changing from wide to narrow: " + $(window).width());
- $(".mkwsTermlistContainer1").hide();
- $(".mkwsTermlistContainer2").show();
+ var targetWidth = mkws.config.responsive_design_width;
+ var width = $(window).width();
+
+ if (mkws.width === undefined) {
+ // No state change, since we have no previous state
+ } else if (mkws.width <= targetWidth && width > targetWidth) {
+ log("narrow -> wide");
+ } else if (mkws.width > targetWidth && width <= targetWidth) {
+ log("wide -> narrow");
+ } else if (width > targetWidth) {
+ log("already wide");
+ } else {
+ log("already narrow");
+ }
+ mkws.width = width;
+
+ if (width <= targetWidth &&
+ parent.hasClass("mkwsTermlist-Container-wide")) {
+ log("changing from wide to narrow: " + width);
+ $(".mkwsTermlist-Container-wide").hide();
+ $(".mkwsTermlist-Container-narrow").show();
for (var tname in mkws.teams) {
- $(".mkwsTermlists.mkwsTeam_" + tname).appendTo($(".mkwsTermlistContainer2.mkwsTeam_" + tname));
+ mkws.teams[tname].queue("resize-narrow").publish();
+ $(".mkwsTermlists.mkwsTeam_" + tname).appendTo($(".mkwsTermlist-Container-narrow.mkwsTeam_" + tname));
for(var i = 0; i < list.length; i++) {
$("." + list[i] + ".mkwsTeam_" + tname).hide();
}
}
- } else if ($(window).width() > width &&
- parent.hasClass("mkwsTermlistContainer2")) {
- log("changing from narrow to wide: " + $(window).width());
- $(".mkwsTermlistContainer1").show();
- $(".mkwsTermlistContainer2").hide();
+ } else if (width > targetWidth &&
+ parent.hasClass("mkwsTermlist-Container-narrow")) {
+ log("changing from narrow to wide: " + width);
+ $(".mkwsTermlist-Container-wide").show();
+ $(".mkwsTermlist-Container-narrow").hide();
for (var tname in mkws.teams) {
- $(".mkwsTermlists.mkwsTeam_" + tname).appendTo($(".mkwsTermlistContainer1.mkwsTeam_" + tname));
+ mkws.teams[tname].queue("resize-wide").publish();
+ $(".mkwsTermlists.mkwsTeam_" + tname).appendTo($(".mkwsTermlist-Container-wide.mkwsTeam_" + tname));
for(var i = 0; i < list.length; i++) {
$("." + list[i] + ".mkwsTeam_" + tname).show();
}
@@ -297,8 +409,10 @@ mkws.pagerNext = function(tname) {
log("Service proxy auth successfully done");
mkws.authenticated = true;
var authName = $(data).find("displayName").text();
+ // You'd think there would be a better way to do this:
+ var realm = $(data).find("realm:not(realmAttributes realm)").text();
for (var teamName in mkws.teams) {
- mkws.teams[teamName].queue("authenticated").publish(authName);
+ mkws.teams[teamName].queue("authenticated").publish(authName, realm);
}
runAutoSearches();
@@ -314,6 +428,24 @@ mkws.pagerNext = function(tname) {
}
}
+
+ function makeWidgetsWithin(level, node) {
+ node.find('[class^="mkws"],[class*=" mkws"]').each(function() {
+ handleNodeWithTeam(this, function(tname, type) {
+ var oldHTML = this.innerHTML;
+ var myTeam = mkws.teams[tname];
+ var myWidget = widget(j, myTeam, type, this);
+ myTeam.addWidget(myWidget);
+ var newHTML = this.innerHTML;
+ if (newHTML !== oldHTML) {
+ log("widget " + tname + ":" + type + " HTML changed from '" + oldHTML + "' to '" + newHTML + "': reparse!");
+ makeWidgetsWithin(level+1, $(this));
+ }
+ });
+ });
+ }
+
+
$(document).ready(function() {
var saved_config;
if (typeof mkws_config === 'undefined') {
@@ -369,15 +501,6 @@ mkws.pagerNext = function(tname) {
}
}
- // For all MKWS-classed nodes that don't have a team
- // specified, set the team to AUTO.
- $('[class^="mkws"],[class*=" mkws"]').each(function() {
- if (!this.className.match(/mkwsTeam_/)) {
- log("adding AUTO team to node with class '" + this.className + "'");
- $(this).addClass('mkwsTeam_AUTO');
- }
- });
-
// Find all nodes with an MKWS class, and determine their team from
// the mkwsTeam_* class. Make all team objects.
var then = $.now();
@@ -389,19 +512,22 @@ mkws.pagerNext = function(tname) {
}
});
});
- // Second pass: make the individual widget objects. This has
- // to be done separately, and after the team-creation, since
- // that sometimes makes new widget nodes (e.g. creating
- // mkwsTermlists inside mkwsResults.
- $('[class^="mkws"],[class*=" mkws"]').each(function() {
- handleNodeWithTeam(this, function(tname, type) {
- var myTeam = mkws.teams[tname];
- var myWidget = widget(j, myTeam, type, this);
- });
- });
+
+ makeWidgetsWithin(1, $(':root'));
+
var now = $.now();
log("Walking MKWS nodes took " + (now-then) + " ms");
+// for (var tName in mkws.teams) {
+// var myTeam = mkws.teams[tName]
+// var types = myTeam.widgetTypes();
+// log("TEAM '" + tName + "' = " + myTeam + " has widget types " + types);
+// for (var i = 0; i < types.length; i++) {
+// var type = types[i];
+// log(" has widget of type '" + type + "': " + myTeam.widget(type));
+// }
+// }
+
if (mkws.config.use_service_proxy) {
authenticateSession(mkws.config.service_proxy_auth,
mkws.config.service_proxy_auth_domain,