From 3e96f641912c6315c7f94c659e67e34cdaa46850 Mon Sep 17 00:00:00 2001 From: psychobunny Date: Fri, 3 May 2013 21:19:28 +0000 Subject: [PATCH] streaming posts. also moved topics to be entirely client side parsed. made some changes. added block level caching to templates. added a prepare method to templates --- public/src/ajaxify.js | 1 - public/src/templates.js | 19 ++++++++++++++++--- public/templates/topic.tpl | 24 +++++++++++++++++++++++- src/posts.js | 27 ++++++++++++++++++++++++++- src/webserver.js | 17 ++++++++--------- 5 files changed, 73 insertions(+), 15 deletions(-) diff --git a/public/src/ajaxify.js b/public/src/ajaxify.js index e61aa5264e..36f4e233e8 100644 --- a/public/src/ajaxify.js +++ b/public/src/ajaxify.js @@ -26,7 +26,6 @@ var ajaxify = {}; socket.emit('event:enter_room', 'global'); current_room = 'global'; } - var url = url.replace(/\/$/, ""); var tpl_url = (url === '' || url === '/') ? 'home' : url.split('/')[0]; diff --git a/public/src/templates.js b/public/src/templates.js index 7fe0734437..e476f429ca 100644 --- a/public/src/templates.js +++ b/public/src/templates.js @@ -7,7 +7,15 @@ var templates = {}; //quick implementation because introducing a lib to handle several async callbacks if (callback == null && ready_callback) ready_callback(); else ready_callback = callback; - } + }; + + templates.prepare = function(raw_tpl, data) { + var template = {}; + template.html = raw_tpl; + template.parse = parse; + template.blocks = {}; + return template; + }; function loadTemplates(templatesToLoad) { var timestamp = new Date().getTime(); @@ -24,9 +32,10 @@ var templates = {}; template.prototype.parse = parse; template.prototype.html = String(html); - - templates[file] = new template; + template.prototype.blocks = {}; + templates[file] = new template; + loaded--; if (loaded == 0) templates.ready(); }).fail(function() { @@ -49,6 +58,8 @@ var templates = {}; //modified from https://github.com/psychobunny/dcp.templates var parse = function(data) { + var self = this; + function replace(key, value, template) { var searchRegex = new RegExp('{' + key + '}', 'g'); return template.replace(searchRegex, value); @@ -62,6 +73,8 @@ var templates = {}; data = template.match(regex); if (data == null) return; + if (block !== undefined) self.blocks[block] = data[0]; + data = data[0] .replace("", "") .replace("", ""); diff --git a/public/templates/topic.tpl b/public/templates/topic.tpl index ba0ada6fe0..adf3092cc8 100644 --- a/public/templates/topic.tpl +++ b/public/templates/topic.tpl @@ -5,7 +5,7 @@ -