liquid_feedback_frontend
view env/model/has_rendered_content.lua @ 394:50d543a7fc05
Show areas on member page for page owner instead of current member
| author | bsw | 
|---|---|
| date | Mon Mar 05 22:38:01 2012 +0100 (2012-03-05) | 
| parents | 23c98752e697 | 
| children | 6cfdb2e5d3d4 | 
 line source
     1 function model.has_rendered_content(class, rendered_class, content_field_name)
     3   local content_field_name = content_field_name or 'content'
     5   -- render content to html, save it as rendered_class and return it
     6   function class.object:render_content()
     7     -- local draft for update
     8     local lock = class:new_selector()
     9       :add_where{ "id = ?", self.id }
    10       :single_object_mode()
    11       :for_update()
    12       :exec()
    13     -- check if there is already a rendered content
    14     local rendered = rendered_class:new_selector()
    15       :add_where{ class.table .. "_id = ?", self.id }
    16       :add_where{ "format = 'html'" }
    17       :optional_object_mode()
    18       :exec()
    19     if rendered then
    20       return rendered
    21     end
    22     -- create rendered_class record
    23     local rendered = rendered_class:new()
    24     rendered[class.table .. "_id"] = self.id
    25     rendered.format = "html"
    26     rendered.content = format.wiki_text(self[content_field_name], self.formatting_engine)
    27     rendered:save()
    28     -- and return it
    29     return rendered
    30   end
    32   -- returns rendered version for specific format
    33   function class.object:get_content(format)
    34     -- Fetch rendered_class record for specified format
    35     local rendered = rendered_class:new_selector()
    36       :add_where{ class.table .. "_id = ?", self.id }
    37       :add_where{ "format = ?", format }
    38       :optional_object_mode()
    39       :exec()
    40     -- If this format isn't rendered yet, render it
    41     if not rendered then
    42       rendered = self:render_content()
    43     end
    44     -- return rendered content
    45     return rendered.content
    46   end
    48 end
