liquid_feedback_frontend
annotate model/draft.lua @ 145:90520c9fca44
implement area filter in timeline
allows the user to ignore any area in the timeline filter.
better display in javascript off
allows the user to ignore any area in the timeline filter.
better display in javascript off
| author | Daniel Poelzleithner <poelzi@poelzi.org> |
|---|---|
| date | Thu Oct 07 00:35:48 2010 +0200 (2010-10-07) |
| 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 |