local draft = Draft:new_selector():add_where{ "id = ?", param.get_id() }:optional_object_mode():exec() if not draft then execute.view { module = "index", view = "404" } request.set_status("404 Not Found") return end local member = app.session.member if member then draft.initiative:load_everything_for_member_id(member.id) draft.initiative.issue:load_everything_for_member_id(member.id) end local source = param.get("source", atom.boolean) execute.view{ module = "issue", view = "_head", params = { issue = draft.initiative.issue, link_issue = true } } ui.grid{ content = function() ui.cell_main{ content = function() ui.container{ attr = { class = "mdl-card mdl-card__fullwidth mdl-shadow--2dp" }, content = function() ui.container{ attr = { class = "mdl-card__title mdl-card--has-fab mdl-card--border" }, content = function () ui.heading { attr = { class = "mdl-card__title-text" }, level = 2, content = function() ui.link{ module = "initiative", view = "show", id = draft.initiative.id, content = draft.initiative.display_name } ui.container{ content = _("Draft revision #{id}", { id = draft.id } ) } end } end } ui.container{ attr = { class = "draft mdl-card__title mdl-card--border" }, content = function() if config.render_external_reference and config.render_external_reference.draft then config.render_external_reference.draft(draft, function (callback) ui.sectionRow(callback) end) end execute.view{ module = "draft", view = "_show", params = { draft = draft, source = source } } end } if config.attachments then local files = File:new_selector() :left_join("draft_attachment", nil, "draft_attachment.file_id = file.id") :add_where{ "draft_attachment.draft_id = ?", draft.id } :reset_fields() :add_field("file.id") :add_field("draft_attachment.title") :add_field("draft_attachment.description") :add_order_by("draft_attachment.id") :exec() if #files > 0 then ui.container { attr = { class = "mdl-card__content mdl-card--border" }, content = function() for i, file in ipairs(files) do ui.link{ module = "file", view = "show.jpg", id = file.id, content = function() ui.image{ module = "file", view = "show.jpg", id = file.id, params = { preview = true } } end } ui.container{ content = file.title or "" } ui.container{ content = file.description or "" } slot.put("

") end end } end end ui.container{ attr = { class = "mdl-card__actions" }, content = function() if source then ui.link{ attr = { class = "mdl-button mdl-js-button" }, content = _"Rendered", module = "draft", view = "show", id = param.get_id(), params = { source = false } } else ui.link{ attr = { class = "mdl-button mdl-js-button" }, content = _"Source", module = "draft", view = "show", id = param.get_id(), params = { source = true } } end end } end } end } ui.cell_sidebar{ content = function() if config.logo then config.logo() end execute.view { module = "issue", view = "_sidebar", params = { issue = draft.initiative.issue, initiative = draft.initiative, member = app.session.member } } end } end }