liquid_feedback_frontend
diff env/model/has_rendered_content.lua @ 279:23c98752e697
Added wiki support for suggestions and member statements
author | bsw |
---|---|
date | Thu Feb 16 14:08:43 2012 +0100 (2012-02-16) |
parents | |
children | 6cfdb2e5d3d4 |
line diff
1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/env/model/has_rendered_content.lua Thu Feb 16 14:08:43 2012 +0100 1.3 @@ -0,0 +1,48 @@ 1.4 +function model.has_rendered_content(class, rendered_class, content_field_name) 1.5 + 1.6 + local content_field_name = content_field_name or 'content' 1.7 + 1.8 + -- render content to html, save it as rendered_class and return it 1.9 + function class.object:render_content() 1.10 + -- local draft for update 1.11 + local lock = class:new_selector() 1.12 + :add_where{ "id = ?", self.id } 1.13 + :single_object_mode() 1.14 + :for_update() 1.15 + :exec() 1.16 + -- check if there is already a rendered content 1.17 + local rendered = rendered_class:new_selector() 1.18 + :add_where{ class.table .. "_id = ?", self.id } 1.19 + :add_where{ "format = 'html'" } 1.20 + :optional_object_mode() 1.21 + :exec() 1.22 + if rendered then 1.23 + return rendered 1.24 + end 1.25 + -- create rendered_class record 1.26 + local rendered = rendered_class:new() 1.27 + rendered[class.table .. "_id"] = self.id 1.28 + rendered.format = "html" 1.29 + rendered.content = format.wiki_text(self[content_field_name], self.formatting_engine) 1.30 + rendered:save() 1.31 + -- and return it 1.32 + return rendered 1.33 + end 1.34 + 1.35 + -- returns rendered version for specific format 1.36 + function class.object:get_content(format) 1.37 + -- Fetch rendered_class record for specified format 1.38 + local rendered = rendered_class:new_selector() 1.39 + :add_where{ class.table .. "_id = ?", self.id } 1.40 + :add_where{ "format = ?", format } 1.41 + :optional_object_mode() 1.42 + :exec() 1.43 + -- If this format isn't rendered yet, render it 1.44 + if not rendered then 1.45 + rendered = self:render_content() 1.46 + end 1.47 + -- return rendered content 1.48 + return rendered.content 1.49 + end 1.50 + 1.51 +end 1.52 \ No newline at end of file