liquid_feedback_frontend
annotate model/draft.lua @ 160:cc7650c7053f
better title for draft/show
add source view mode into show draft fixes bug #298
add source view mode into show draft fixes bug #298
| author | Daniel Poelzleithner <poelzi@poelzi.org> | 
|---|---|
| date | Sat Oct 09 04:25:11 2010 +0200 (2010-10-09) | 
| parents | 134fce4bede3 | 
| children | 23c98752e697 | 
| rev | line source | 
|---|---|
| bsw/jbe@0 | 1 Draft = mondelefant.new_class() | 
| bsw/jbe@0 | 2 Draft.table = 'draft' | 
| bsw/jbe@0 | 3 | 
| bsw@81 | 4 -- Many drafts belonging to an initiative | 
| bsw/jbe@0 | 5 Draft:add_reference{ | 
| bsw/jbe@0 | 6 mode = 'm1', | 
| bsw/jbe@0 | 7 to = "Initiative", | 
| bsw/jbe@0 | 8 this_key = 'initiative_id', | 
| bsw/jbe@0 | 9 that_key = 'id', | 
| bsw/jbe@0 | 10 ref = 'initiative', | 
| bsw/jbe@0 | 11 } | 
| bsw/jbe@0 | 12 | 
| bsw@81 | 13 -- Many drafts are authored by a member | 
| bsw/jbe@0 | 14 Draft:add_reference{ | 
| bsw/jbe@0 | 15 mode = 'm1', | 
| bsw/jbe@0 | 16 to = "Member", | 
| bsw/jbe@0 | 17 this_key = 'author_id', | 
| bsw/jbe@0 | 18 that_key = 'id', | 
| bsw/jbe@0 | 19 ref = 'author', | 
| bsw/jbe@0 | 20 } | 
| bsw/jbe@0 | 21 | 
| bsw/jbe@0 | 22 function Draft.object_get:author_name() | 
| bsw/jbe@0 | 23 return self.author and self.author.name or _"Unknown author" | 
| bsw/jbe@0 | 24 end | 
| bsw@81 | 25 | 
| bsw@81 | 26 -- render draft to html, save it as rendered_draft and return it | 
| bsw@81 | 27 function Draft.object:render_content() | 
| bsw@81 | 28 -- local draft for update | 
| bsw@81 | 29 local draft_lock = Draft:new_selector() | 
| bsw@81 | 30 :add_where{ "id = ?", self.id } | 
| bsw@81 | 31 :single_object_mode() | 
| bsw@81 | 32 :for_update() | 
| bsw@81 | 33 :exec() | 
| bsw@81 | 34 -- check if there is already a rendered draft | 
| bsw@81 | 35 local rendered_draft = RenderedDraft:new_selector() | 
| bsw@81 | 36 :add_where{ "draft_id = ?", self.id } | 
| bsw@81 | 37 :add_where{ "format = 'html'" } | 
| bsw@81 | 38 :optional_object_mode() | 
| bsw@81 | 39 :exec() | 
| bsw@81 | 40 if rendered_draft then | 
| bsw@81 | 41 return rendered_draft | 
| bsw@81 | 42 end | 
| bsw@81 | 43 -- create rendered_draft record | 
| bsw@81 | 44 local rendered_draft = RenderedDraft:new() | 
| bsw@81 | 45 rendered_draft.draft_id = self.id | 
| bsw@81 | 46 rendered_draft.format = "html" | 
| bsw@81 | 47 rendered_draft.content = format.wiki_text(self.content, self.formatting_engine) | 
| bsw@81 | 48 rendered_draft:save() | 
| bsw@81 | 49 -- and return it | 
| bsw@81 | 50 return rendered_draft | 
| bsw@81 | 51 end | 
| bsw@81 | 52 | 
| bsw@81 | 53 -- returns rendered version of draft for specific format | 
| bsw@81 | 54 function Draft.object:get_content(format) | 
| bsw@81 | 55 -- Fetch rendered_draft record for specified format | 
| bsw@81 | 56 local rendered_draft = RenderedDraft:new_selector() | 
| bsw@81 | 57 :add_where{ "draft_id = ?", self.id } | 
| bsw@81 | 58 :add_where{ "format = ?", format } | 
| bsw@81 | 59 :optional_object_mode() | 
| bsw@81 | 60 :exec() | 
| bsw@81 | 61 -- If this format isn't rendered yet, render it | 
| bsw@81 | 62 if not rendered_draft then | 
| bsw@81 | 63 rendered_draft = self:render_content() | 
| bsw@81 | 64 end | 
| bsw@81 | 65 -- return rendered content | 
| bsw@81 | 66 return rendered_draft.content | 
| bsw@81 | 67 end |