liquid_feedback_frontend

annotate 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
rev   line source
bsw@279 1 function model.has_rendered_content(class, rendered_class, content_field_name)
bsw@279 2
bsw@279 3 local content_field_name = content_field_name or 'content'
bsw@279 4
bsw@279 5 -- render content to html, save it as rendered_class and return it
bsw@279 6 function class.object:render_content()
bsw@279 7 -- local draft for update
bsw@279 8 local lock = class:new_selector()
bsw@279 9 :add_where{ "id = ?", self.id }
bsw@279 10 :single_object_mode()
bsw@279 11 :for_update()
bsw@279 12 :exec()
bsw@279 13 -- check if there is already a rendered content
bsw@279 14 local rendered = rendered_class:new_selector()
bsw@279 15 :add_where{ class.table .. "_id = ?", self.id }
bsw@279 16 :add_where{ "format = 'html'" }
bsw@279 17 :optional_object_mode()
bsw@279 18 :exec()
bsw@279 19 if rendered then
bsw@279 20 return rendered
bsw@279 21 end
bsw@279 22 -- create rendered_class record
bsw@279 23 local rendered = rendered_class:new()
bsw@279 24 rendered[class.table .. "_id"] = self.id
bsw@279 25 rendered.format = "html"
bsw@279 26 rendered.content = format.wiki_text(self[content_field_name], self.formatting_engine)
bsw@279 27 rendered:save()
bsw@279 28 -- and return it
bsw@279 29 return rendered
bsw@279 30 end
bsw@279 31
bsw@279 32 -- returns rendered version for specific format
bsw@279 33 function class.object:get_content(format)
bsw@279 34 -- Fetch rendered_class record for specified format
bsw@279 35 local rendered = rendered_class:new_selector()
bsw@279 36 :add_where{ class.table .. "_id = ?", self.id }
bsw@279 37 :add_where{ "format = ?", format }
bsw@279 38 :optional_object_mode()
bsw@279 39 :exec()
bsw@279 40 -- If this format isn't rendered yet, render it
bsw@279 41 if not rendered then
bsw@279 42 rendered = self:render_content()
bsw@279 43 end
bsw@279 44 -- return rendered content
bsw@279 45 return rendered.content
bsw@279 46 end
bsw@279 47
bsw@279 48 end

Impressum / About Us