liquid_feedback_frontend

annotate env/model/has_rendered_content.lua @ 811:9a2e5f4be58c

Do not allow register a locked account
author bsw
date Wed Jul 04 23:34:21 2012 +0200 (2012-07-04)
parents 6cfdb2e5d3d4
children ea3d3757ddc3
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@397 6 function class.object:render_content(force_rendering)
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@397 20 if force_rendering then
bsw@397 21 rendered:destroy()
bsw@397 22 else
bsw@397 23 return rendered
bsw@397 24 end
bsw@279 25 end
bsw@279 26 -- create rendered_class record
bsw@279 27 local rendered = rendered_class:new()
bsw@279 28 rendered[class.table .. "_id"] = self.id
bsw@279 29 rendered.format = "html"
bsw@279 30 rendered.content = format.wiki_text(self[content_field_name], self.formatting_engine)
bsw@279 31 rendered:save()
bsw@279 32 -- and return it
bsw@279 33 return rendered
bsw@279 34 end
bsw@279 35
bsw@279 36 -- returns rendered version for specific format
bsw@279 37 function class.object:get_content(format)
bsw@279 38 -- Fetch rendered_class record for specified format
bsw@279 39 local rendered = rendered_class:new_selector()
bsw@279 40 :add_where{ class.table .. "_id = ?", self.id }
bsw@279 41 :add_where{ "format = ?", format }
bsw@279 42 :optional_object_mode()
bsw@279 43 :exec()
bsw@279 44 -- If this format isn't rendered yet, render it
bsw@279 45 if not rendered then
bsw@279 46 rendered = self:render_content()
bsw@279 47 end
bsw@279 48 -- return rendered content
bsw@279 49 return rendered.content
bsw@279 50 end
bsw@279 51
bsw@279 52 end

Impressum / About Us