liquid_feedback_frontend

annotate model/draft.lua @ 130:e1b916d2e489

better feedback on content_navigation links
author Daniel Poelzleithner <poelzi@poelzi.org>
date Tue Oct 05 05:42:20 2010 +0200 (2010-10-05)
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

Impressum / About Us