liquid_feedback_frontend

annotate app/main/initiative/new.lua @ 159:5d797c6706d5

implement quorum display

show the initiative quorum as a small 1px line in bargraph
allow to update your support on the diff page
better linked title in diff page
show absolute quorum numbers in detail pages of issue and initiative
author Daniel Poelzleithner <poelzi@poelzi.org>
date Sat Oct 09 03:42:48 2010 +0200 (2010-10-09)
parents fa55c8ded9fd
children fecd4c13054a
rev   line source
bsw/jbe@0 1 local issue
bsw/jbe@0 2 local area
bsw/jbe@0 3
bsw/jbe@0 4 local issue_id = param.get("issue_id", atom.integer)
bsw/jbe@0 5 if issue_id then
bsw/jbe@0 6 issue = Issue:new_selector():add_where{"id=?",issue_id}:single_object_mode():exec()
bsw/jbe@0 7 area = issue.area
bsw/jbe@0 8
bsw/jbe@0 9 else
bsw/jbe@0 10 local area_id = param.get("area_id", atom.integer)
bsw/jbe@0 11 area = Area:new_selector():add_where{"id=?",area_id}:single_object_mode():exec()
bsw/jbe@0 12 end
bsw/jbe@0 13
bsw/jbe@0 14 if issue_id then
bsw/jbe@19 15 slot.put_into("title", _"Add alternative initiative to issue")
bsw/jbe@0 16 else
bsw/jbe@0 17 slot.put_into("title", _"Create new issue")
bsw/jbe@0 18 end
bsw/jbe@0 19
bsw/jbe@0 20 ui.form{
bsw/jbe@0 21 module = "initiative",
bsw/jbe@0 22 action = "create",
bsw/jbe@0 23 params = {
bsw/jbe@0 24 area_id = area.id,
bsw/jbe@0 25 issue_id = issue and issue.id or nil
bsw/jbe@0 26 },
bsw/jbe@0 27 attr = { class = "vertical" },
bsw/jbe@0 28 content = function()
bsw/jbe@0 29 ui.field.text{ label = _"Area", value = area.name }
bsw/jbe@52 30 slot.put("<br />")
bsw/jbe@0 31 if issue_id then
bsw/jbe@0 32 ui.field.text{ label = _"Issue", value = issue_id }
bsw/jbe@0 33 else
bsw@10 34 tmp = { { id = -1, name = _"Please choose a policy" } }
bsw@10 35 for i, allowed_policy in ipairs(area.allowed_policies) do
bsw@10 36 tmp[#tmp+1] = allowed_policy
bsw@10 37 end
bsw/jbe@0 38 ui.field.select{
bsw/jbe@0 39 label = _"Policy",
bsw/jbe@0 40 name = "policy_id",
bsw@10 41 foreign_records = tmp,
bsw/jbe@0 42 foreign_id = "id",
bsw@7 43 foreign_name = "name",
bsw@95 44 value = area.default_policy and area.default_policy.id or param.get("policy_id", atom.integer)
bsw/jbe@0 45 }
bsw@64 46 ui.tag{
bsw@64 47 tag = "div",
bsw@64 48 content = function()
bsw@64 49 ui.tag{
bsw@64 50 tag = "label",
bsw@64 51 attr = { class = "ui_field_label" },
bsw@64 52 content = function() slot.put("&nbsp;") end,
bsw@64 53 }
bsw@64 54 ui.tag{
bsw@64 55 content = function()
bsw@64 56 ui.link{
bsw@64 57 text = _"Information about the available policies",
bsw@64 58 module = "policy",
bsw@64 59 view = "list"
bsw@64 60 }
bsw@64 61 slot.put(" ")
bsw@64 62 ui.link{
bsw@64 63 attr = { target = "_blank" },
bsw@64 64 text = _"(new window)",
bsw@64 65 module = "policy",
bsw@64 66 view = "list"
bsw@64 67 }
bsw@64 68 end
bsw@64 69 }
bsw@64 70 end
bsw@64 71 }
bsw/jbe@0 72 end
bsw@95 73
bsw@95 74 if param.get("preview") then
bsw@95 75 ui.heading{ level = 1, content = encode.html(param.get("name")) }
bsw@95 76 local discussion_url = param.get("discussion_url")
bsw@95 77 ui.container{
bsw@95 78 attr = { class = "ui_field_label" },
bsw@95 79 content = _"Discussion with initiators"
bsw@95 80 }
bsw@95 81 ui.tag{
bsw@95 82 tag = "span",
bsw@95 83 content = function()
bsw@95 84 if discussion_url:find("^https?://") then
bsw@95 85 if discussion_url and #discussion_url > 0 then
bsw@95 86 ui.link{
bsw@95 87 attr = {
bsw@95 88 class = "actions",
bsw@95 89 target = "_blank",
bsw@95 90 title = discussion_url
bsw@95 91 },
bsw@95 92 content = discussion_url,
bsw@95 93 external = discussion_url
bsw@95 94 }
bsw@95 95 end
bsw@95 96 else
bsw@95 97 slot.put(encode.html(discussion_url))
bsw@95 98 end
bsw@95 99 end
bsw@95 100 }
bsw@95 101 ui.container{
bsw@95 102 attr = { class = "draft_content wiki" },
bsw@95 103 content = function()
bsw@95 104 slot.put(format.wiki_text(param.get("draft"), param.get("formatting_engine")))
bsw@95 105 end
bsw@95 106 }
bsw@95 107 slot.put("<br />")
bsw@95 108 ui.submit{ text = _"Save" }
bsw@95 109 slot.put("<br />")
bsw@95 110 slot.put("<br />")
bsw@95 111 end
bsw/jbe@52 112 slot.put("<br />")
bsw@95 113
bsw@95 114 ui.field.text{
bsw@95 115 label = _"Title of initiative",
bsw@95 116 name = "name",
bsw@95 117 value = param.get("name")
bsw@95 118 }
bsw@95 119 ui.field.text{
bsw@95 120 label = _"Discussion URL",
bsw@95 121 name = "discussion_url",
bsw@95 122 value = param.get("discussion_url")
bsw@95 123 }
bsw/jbe@4 124 ui.field.select{
bsw/jbe@4 125 label = _"Wiki engine",
bsw/jbe@4 126 name = "formatting_engine",
bsw/jbe@4 127 foreign_records = {
bsw/jbe@4 128 { id = "rocketwiki", name = "RocketWiki" },
bsw/jbe@4 129 { id = "compat", name = _"Traditional wiki syntax" }
bsw/jbe@4 130 },
poelzi@133 131 attr = {id = "formatting_engine"},
bsw/jbe@4 132 foreign_id = "id",
bsw@95 133 foreign_name = "name",
bsw@95 134 value = param.get("formatting_engine")
bsw/jbe@4 135 }
poelzi@133 136 ui.tag{
poelzi@133 137 tag = "div",
poelzi@133 138 content = function()
poelzi@133 139 ui.tag{
poelzi@133 140 tag = "label",
poelzi@133 141 attr = { class = "ui_field_label" },
poelzi@133 142 content = function() slot.put("&nbsp;") end,
poelzi@133 143 }
poelzi@133 144 ui.tag{
poelzi@133 145 content = function()
poelzi@133 146 ui.link{
poelzi@133 147 text = _"Syntax help",
poelzi@133 148 module = "help",
poelzi@133 149 view = "show",
poelzi@133 150 id = "wikisyntax",
poelzi@133 151 attr = {onClick="this.href=this.href.replace(/wikisyntax[^.]*/g, 'wikisyntax_'+getElementById('formatting_engine').value)"}
poelzi@133 152 }
poelzi@133 153 slot.put(" ")
poelzi@133 154 ui.link{
poelzi@133 155 text = _"(new window)",
poelzi@133 156 module = "help",
poelzi@133 157 view = "show",
poelzi@133 158 id = "wikisyntax",
poelzi@133 159 attr = {target = "_blank", onClick="this.href=this.href.replace(/wikisyntax[^.]*/g, 'wikisyntax_'+getElementById('formatting_engine').value)"}
poelzi@133 160 }
poelzi@133 161 end
poelzi@133 162 }
poelzi@133 163 end
poelzi@133 164 }
bsw@95 165 ui.field.text{
bsw@95 166 label = _"Draft",
bsw@95 167 name = "draft",
bsw@95 168 multiline = true,
bsw@95 169 attr = { style = "height: 50ex;" },
bsw@95 170 value = param.get("draft")
bsw@95 171 }
bsw@95 172 ui.submit{ name = "preview", text = _"Preview" }
bsw/jbe@0 173 ui.submit{ text = _"Save" }
bsw/jbe@0 174 end
bsw/jbe@0 175 }

Impressum / About Us