liquid_feedback_frontend
annotate env/model/has_rendered_content.lua @ 377:bf99dcc58f68
Set revoked_by_member_id in initiative to make revoking work
| author | bsw | 
|---|---|
| date | Sun Mar 04 19:06:17 2012 +0100 (2012-03-04) | 
| parents | 23c98752e697 | 
| 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 |