Files
Phraseanet/www/prod/jquery.Phraseanet.js
2012-02-03 15:44:34 +01:00

69 lines
1.4 KiB
JavaScript

;var p4 = p4 || {};
;(function(p4, $){
var templates = [];
var waitStack = [];
var LoadAndRender = function(TemplateName, datas, callback) {
if(waitStack[TemplateName] instanceof Array)
{
waitStack[TemplateName].push({ datas : datas, callback : callback });
return;
}
else
{
waitStack[TemplateName] = [];
}
$.ajax({
type: "GET",
url: "/prod/MustacheLoader/",
dataType: 'html',
data: {
template: TemplateName
},
success: function(data){
templates[TemplateName] = data;
MustacheRender(TemplateName, datas, callback);
for(s in waitStack[TemplateName])
{
MustacheRender(TemplateName, waitStack[TemplateName][s].datas, waitStack[TemplateName][s].callback);
}
waitStack[TemplateName] = null;
return;
}
});
}
var MustacheRender = function(TemplateName, datas, callback) {
if(templates[TemplateName])
{
var rendered = Mustache.render(templates[TemplateName], datas);
if(typeof callback === 'function')
return callback(rendered);
else
return rendered;
}
else
return LoadAndRender(TemplateName, datas, callback);
};
var ClearCache = function() {
templates = new Array();
};
p4.Mustache = {
Render : MustacheRender,
ClearCache : ClearCache
};
}(p4, jQuery));