2013-02-16 10:45:32 +01:00
|
|
|
var templates = (function () {
|
|
|
|
|
|
|
|
var exports = {};
|
|
|
|
|
|
|
|
exports.render = function (name, arg) {
|
2014-01-09 23:51:32 +01:00
|
|
|
if (Handlebars.templates === undefined) {
|
|
|
|
throw "Cannot find compiled templates!";
|
2013-02-16 10:45:32 +01:00
|
|
|
}
|
|
|
|
|
2014-01-09 23:51:32 +01:00
|
|
|
// The templates should be compiled into compiled.js. In
|
|
|
|
// prod we build compiled.js as part of the deployment process,
|
|
|
|
// and for devs we have run_dev.py build compiled.js when templates
|
|
|
|
// change.
|
2013-02-16 10:45:32 +01:00
|
|
|
return Handlebars.templates[name](arg);
|
|
|
|
};
|
|
|
|
|
2013-08-27 20:17:42 +02:00
|
|
|
// We don't want to wait for DOM ready to register the Handlebars helpers
|
|
|
|
// below. There's no need to, as they do not access the DOM.
|
|
|
|
// Furthermore, waiting for DOM ready would introduce race conditions with
|
|
|
|
// other DOM-ready callbacks that attempt to render templates.
|
|
|
|
|
|
|
|
// Regular Handlebars partials require pre-registering. This allows us
|
|
|
|
// to treat any template as a partial.
|
|
|
|
Handlebars.registerHelper('partial', function (template_name, context) {
|
|
|
|
return new Handlebars.SafeString(exports.render(template_name, this));
|
|
|
|
});
|
|
|
|
|
|
|
|
Handlebars.registerHelper('plural', function (condition, one, other) {
|
|
|
|
return (condition === 1) ? one : other;
|
|
|
|
});
|
|
|
|
|
|
|
|
Handlebars.registerHelper('if_and', function () {
|
|
|
|
// Execute the conditional code if all conditions are true.
|
|
|
|
// Example usage:
|
|
|
|
// {{#if_and cond1 cond2 cond3}}
|
|
|
|
// <p>All true</p>
|
|
|
|
// {{/if_and}}
|
|
|
|
var options = arguments[arguments.length - 1];
|
|
|
|
var i;
|
|
|
|
for (i = 0; i < arguments.length - 1; i++) {
|
|
|
|
if (!arguments[i]) {
|
|
|
|
return options.inverse(this);
|
2013-08-13 18:08:12 +02:00
|
|
|
}
|
2013-08-27 20:17:42 +02:00
|
|
|
}
|
|
|
|
return options.fn(this);
|
2013-07-26 20:39:59 +02:00
|
|
|
});
|
|
|
|
|
2013-02-16 10:45:32 +01:00
|
|
|
return exports;
|
|
|
|
}());
|
2013-11-26 16:39:58 +01:00
|
|
|
if (typeof module !== 'undefined') {
|
|
|
|
module.exports = templates;
|
|
|
|
}
|