liquid_feedback_frontend

view env/model/has_rendered_content.lua @ 802:82bbab02dd95

Going to version 2.0.0 stable
author jbe
date Fri Jun 29 12:36:58 2012 +0000 (2012-06-29)
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

Impressum / About Us