Move registration of 'link' helper down so it can use debug()
[mkws-moved-to-github.git] / tools / htdocs / mkws.js
index 3702be0..1a58f58 100644 (file)
@@ -100,6 +100,17 @@ mkws.debug_function = function (string) {
 }
 var debug = mkws.debug_function; // local alias
 
+
+Handlebars.registerHelper('link', function(text, url) {
+  text = Handlebars.Utils.escapeExpression(text);
+  url  = Handlebars.Utils.escapeExpression(url);
+
+  var result = '<a href="' + url + '">' + text + '</a>';
+
+  return new Handlebars.SafeString(result);
+});
+
+
 {
     /* default mkws config */
     var config_default = {
@@ -644,12 +655,37 @@ function renderDetails(data, marker)
        maybeLoadTemplate("Record");
     }
 
+    var details;
     if (mkws.templateRecord) {
        var template = mkws.templateRecord;
-       return template(data);
+       details = template(data);
+    } else {
+       details = defaultRenderDetails(data, marker);
+    }
+
+    return '<div class="details" id="mkwsDet_' + data.recid + '">' + details + '</div>';
+}
+
+
+function maybeLoadTemplate(name)
+{
+    var source = $("#mkwsTemplate" + name).html();
+    if (!source) {
+       debug("no template '" + name + "': falling back to default behaviour");
+       // Mark template as not provided
+       mkws['template' + name] = 0;
+       return;
     }
 
-    var details = '<div class="details" id="mkwsDet_'+data.recid+'"><table>';
+    var template = Handlebars.compile(source);
+    debug("compiled template '" + name + "'");
+    mkws['template' + name] = template;
+}
+
+
+function defaultRenderDetails(data, marker)
+{
+    var details = '<table>';
     if (marker) details += '<tr><td colspan="2">'+ marker + '</td></tr>';
 
     var locations = [];
@@ -667,28 +703,11 @@ function renderDetails(data, marker)
     } else {
        details += renderField("Location" + (locations.length == 1 ? "" : "s"), locations);
     }
-    details += '</table></div>';
-
+    details += '</table>';
     return details;
 }
 
 
-function maybeLoadTemplate(name)
-{
-    var source = $("#mkwsTemplate" + name).html();
-    if (!source) {
-       debug("no template '" + name + "': falling back to default behaviour");
-       // Mark template as not provided
-       mkws['template' + name] = 0;
-       return;
-    }
-
-    var template = Handlebars.compile(source);
-    debug("compiled template '" + name + "'");
-    mkws['template' + name] = template;
-}
-
-
 function renderField(caption, data, data2, data3) {
     if (data === undefined) {
        return "";