liquid_feedback_frontend
view env/model/has_rendered_content.lua @ 644:7b2d7c0990b7
Optical enhancements
| author | bsw | 
|---|---|
| date | Mon Jun 25 19:58:09 2012 +0200 (2012-06-25) | 
| parents | 6cfdb2e5d3d4 | 
| children | ea3d3757ddc3 | 
 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(force_rendering)
     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       if force_rendering then
    21         rendered:destroy()
    22       else
    23         return rendered
    24       end
    25     end
    26     -- create rendered_class record
    27     local rendered = rendered_class:new()
    28     rendered[class.table .. "_id"] = self.id
    29     rendered.format = "html"
    30     rendered.content = format.wiki_text(self[content_field_name], self.formatting_engine)
    31     rendered:save()
    32     -- and return it
    33     return rendered
    34   end
    36   -- returns rendered version for specific format
    37   function class.object:get_content(format)
    38     -- Fetch rendered_class record for specified format
    39     local rendered = rendered_class:new_selector()
    40       :add_where{ class.table .. "_id = ?", self.id }
    41       :add_where{ "format = ?", format }
    42       :optional_object_mode()
    43       :exec()
    44     -- If this format isn't rendered yet, render it
    45     if not rendered then
    46       rendered = self:render_content()
    47     end
    48     -- return rendered content
    49     return rendered.content
    50   end
    52 end
