liquid_feedback_frontend

diff env/model/has_rendered_content.lua @ 279:23c98752e697

Added wiki support for suggestions and member statements
author bsw
date Thu Feb 16 14:08:43 2012 +0100 (2012-02-16)
parents
children 6cfdb2e5d3d4
line diff
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/env/model/has_rendered_content.lua	Thu Feb 16 14:08:43 2012 +0100
     1.3 @@ -0,0 +1,48 @@
     1.4 +function model.has_rendered_content(class, rendered_class, content_field_name)
     1.5 +
     1.6 +  local content_field_name = content_field_name or 'content'
     1.7 +  
     1.8 +  -- render content to html, save it as rendered_class and return it
     1.9 +  function class.object:render_content()
    1.10 +    -- local draft for update
    1.11 +    local lock = class:new_selector()
    1.12 +      :add_where{ "id = ?", self.id }
    1.13 +      :single_object_mode()
    1.14 +      :for_update()
    1.15 +      :exec()
    1.16 +    -- check if there is already a rendered content
    1.17 +    local rendered = rendered_class:new_selector()
    1.18 +      :add_where{ class.table .. "_id = ?", self.id }
    1.19 +      :add_where{ "format = 'html'" }
    1.20 +      :optional_object_mode()
    1.21 +      :exec()
    1.22 +    if rendered then
    1.23 +      return rendered
    1.24 +    end
    1.25 +    -- create rendered_class record
    1.26 +    local rendered = rendered_class:new()
    1.27 +    rendered[class.table .. "_id"] = self.id
    1.28 +    rendered.format = "html"
    1.29 +    rendered.content = format.wiki_text(self[content_field_name], self.formatting_engine)
    1.30 +    rendered:save()
    1.31 +    -- and return it
    1.32 +    return rendered
    1.33 +  end
    1.34 +
    1.35 +  -- returns rendered version for specific format
    1.36 +  function class.object:get_content(format)
    1.37 +    -- Fetch rendered_class record for specified format
    1.38 +    local rendered = rendered_class:new_selector()
    1.39 +      :add_where{ class.table .. "_id = ?", self.id }
    1.40 +      :add_where{ "format = ?", format }
    1.41 +      :optional_object_mode()
    1.42 +      :exec()
    1.43 +    -- If this format isn't rendered yet, render it
    1.44 +    if not rendered then
    1.45 +      rendered = self:render_content()
    1.46 +    end
    1.47 +    -- return rendered content
    1.48 +    return rendered.content
    1.49 +  end
    1.50 +
    1.51 +end
    1.52 \ No newline at end of file

Impressum / About Us