liquid_feedback_frontend
annotate env/model/has_rendered_content.lua @ 619:7dc5ab12bfe3
Optical enhancements :)
author | bsw |
---|---|
date | Mon Jun 25 14:40:34 2012 +0200 (2012-06-25) |
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 |