liquid_feedback_frontend
annotate model/draft.lua @ 167:1fdf1e607494
fix vote count display in corner cases
if number of voters are 0 or votes are 0 don't show percentes they are useless or -nan :-)
if number of voters are 0 or votes are 0 don't show percentes they are useless or -nan :-)
| author | Daniel Poelzleithner <poelzi@poelzi.org> |
|---|---|
| date | Sat Oct 09 21:34:25 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 |