liquid_feedback_frontend

annotate app/main/index/index.lua @ 5:afd9f769c7ae

Version beta1

Final voting with Schulze-Method is now possible

Many bug fixes and code cleanup

Registration with invite codes

More sort and filter options

Seperated display of "supporters" and "potential supporters"

Optical changes

Flood limit / initiative contigent is now checked by frontend

Neccessary changes to access core beta11
author bsw/jbe
date Fri Dec 25 12:00:00 2009 +0100 (2009-12-25)
parents 80c215dbf076
children 8d91bccab0bf
rev   line source
bsw/jbe@0 1 slot.select("title", function()
bsw/jbe@4 2 execute.view{
bsw/jbe@4 3 module = "member_image",
bsw/jbe@4 4 view = "_show",
bsw/jbe@4 5 params = {
bsw/jbe@4 6 member = app.session.member,
bsw/jbe@4 7 image_type = "avatar"
bsw/jbe@4 8 }
bsw/jbe@0 9 }
bsw/jbe@0 10 end)
bsw/jbe@0 11
bsw/jbe@0 12 slot.select("title", function()
bsw/jbe@0 13 ui.container{
bsw/jbe@0 14 attr = { class = "lang_chooser" },
bsw/jbe@0 15 content = function()
bsw/jbe@0 16 for i, lang in ipairs{"en", "de"} do
bsw/jbe@0 17 ui.link{
bsw/jbe@0 18 content = function()
bsw/jbe@0 19 ui.image{
bsw/jbe@0 20 static = "lang/" .. lang .. ".png",
bsw/jbe@0 21 attr = { style = "margin-left: 0.5em;", alt = lang }
bsw/jbe@0 22 }
bsw/jbe@0 23 end,
bsw/jbe@0 24 module = "index",
bsw/jbe@0 25 action = "set_lang",
bsw/jbe@0 26 params = { lang = lang },
bsw/jbe@0 27 routing = {
bsw/jbe@0 28 default = {
bsw/jbe@0 29 mode = "redirect",
bsw/jbe@0 30 module = request.get_module(),
bsw/jbe@0 31 view = request.get_view(),
bsw/jbe@0 32 id = param.get_id_cgi(),
bsw/jbe@0 33 params = param.get_all_cgi()
bsw/jbe@0 34 }
bsw/jbe@0 35 }
bsw/jbe@0 36 }
bsw/jbe@0 37 end
bsw/jbe@0 38 end
bsw/jbe@0 39 }
bsw/jbe@0 40 end)
bsw/jbe@0 41
bsw/jbe@0 42 slot.put_into("title", encode.html(config.app_title))
bsw/jbe@0 43
bsw/jbe@0 44 slot.select("actions", function()
bsw/jbe@4 45
bsw/jbe@4 46 ui.link{
bsw/jbe@4 47 content = function()
bsw/jbe@4 48 ui.image{ static = "icons/16/application_form.png" }
bsw/jbe@4 49 slot.put(_"Edit my profile")
bsw/jbe@4 50 end,
bsw/jbe@4 51 module = "member",
bsw/jbe@4 52 view = "edit"
bsw/jbe@4 53 }
bsw/jbe@0 54
bsw/jbe@0 55 ui.link{
bsw/jbe@0 56 content = function()
bsw/jbe@0 57 ui.image{ static = "icons/16/user_gray.png" }
bsw/jbe@4 58 slot.put(_"Upload images")
bsw/jbe@0 59 end,
bsw/jbe@0 60 module = "member",
bsw/jbe@4 61 view = "edit_images"
bsw/jbe@0 62 }
bsw/jbe@0 63
bsw/jbe@4 64 execute.view{
bsw/jbe@4 65 module = "delegation",
bsw/jbe@4 66 view = "_show_box"
bsw/jbe@0 67 }
bsw/jbe@0 68
bsw/jbe@0 69 ui.link{
bsw/jbe@0 70 content = function()
bsw/jbe@0 71 ui.image{ static = "icons/16/key.png" }
bsw/jbe@0 72 slot.put(_"Change password")
bsw/jbe@0 73 end,
bsw/jbe@0 74 module = "index",
bsw/jbe@0 75 view = "change_password"
bsw/jbe@0 76 }
bsw/jbe@4 77
bsw/jbe@0 78 end)
bsw/jbe@0 79
bsw/jbe@4 80 local lang = locale.get("lang")
bsw/jbe@4 81 local basepath = request.get_app_basepath()
bsw/jbe@4 82 local file_name = basepath .. "/locale/motd/" .. lang .. ".txt"
bsw/jbe@4 83 local file = io.open(file_name)
bsw/jbe@4 84 if file ~= nil then
bsw/jbe@4 85 local help_text = file:read("*a")
bsw/jbe@4 86 if #help_text > 0 then
bsw/jbe@4 87 ui.container{
bsw/jbe@4 88 attr = { class = "motd wiki" },
bsw/jbe@4 89 content = function()
bsw/jbe@4 90 slot.put(format.wiki_text(help_text))
bsw/jbe@4 91 end
bsw/jbe@4 92 }
bsw/jbe@4 93 end
bsw/jbe@4 94 end
bsw/jbe@4 95
bsw/jbe@4 96
bsw/jbe@4 97 util.help("index.index", _"Home")
bsw/jbe@4 98
bsw/jbe@5 99
bsw/jbe@5 100 local selector = Area:new_selector()
bsw/jbe@5 101 :reset_fields()
bsw/jbe@5 102 :add_field("area.id", nil, { "grouped" })
bsw/jbe@5 103 :add_field("area.name", nil, { "grouped" })
bsw/jbe@5 104 :add_field("membership.member_id NOTNULL", "is_member", { "grouped" })
bsw/jbe@5 105 :add_field("count(issue.id)", "issues_to_vote_count")
bsw/jbe@5 106 :add_field("count(interest.member_id)", "interested_issues_to_vote_count")
bsw/jbe@5 107 :join("issue", nil, "issue.area_id = area.id AND issue.fully_frozen NOTNULL AND issue.closed ISNULL")
bsw/jbe@5 108 :left_join("direct_voter", nil, { "direct_voter.issue_id = issue.id AND direct_voter.member_id = ?", app.session.member.id })
bsw/jbe@5 109 :add_where{ "direct_voter.member_id ISNULL" }
bsw/jbe@5 110 :left_join("interest", nil, { "interest.issue_id = issue.id AND interest.member_id = ?", app.session.member.id })
bsw/jbe@5 111 :left_join("membership", nil, { "membership.area_id = area.id AND membership.member_id = ? ", app.session.member.id })
bsw/jbe@5 112
bsw/jbe@5 113 local areas = {}
bsw/jbe@5 114 for i, area in ipairs(selector:exec()) do
bsw/jbe@5 115 if area.is_member or area.interested_issues_to_vote_count > 0 then
bsw/jbe@5 116 areas[#areas+1] = area
bsw/jbe@5 117 end
bsw/jbe@5 118 end
bsw/jbe@5 119
bsw/jbe@5 120 if #areas > 0 then
bsw/jbe@5 121 ui.container{
bsw/jbe@5 122 attr = { style = "font-weight: bold;" },
bsw/jbe@5 123 content = _"Current votings in areas you are member of and issues you are interested in:"
bsw/jbe@5 124 }
bsw/jbe@5 125
bsw/jbe@5 126 ui.list{
bsw/jbe@5 127 records = areas,
bsw/jbe@5 128 columns = {
bsw/jbe@5 129 {
bsw/jbe@5 130 name = "name"
bsw/jbe@5 131 },
bsw/jbe@5 132 {
bsw/jbe@5 133 content = function(record)
bsw/jbe@5 134 if record.is_member and record.issues_to_vote_count > 0 then
bsw/jbe@5 135 ui.link{
bsw/jbe@5 136 content = function()
bsw/jbe@5 137 if record.issues_to_vote_count > 1 then
bsw/jbe@5 138 slot.put(_("#{issues_to_vote_count} issue(s)", { issues_to_vote_count = record.issues_to_vote_count }))
bsw/jbe@5 139 else
bsw/jbe@5 140 slot.put(_("One issue"))
bsw/jbe@5 141 end
bsw/jbe@5 142 end,
bsw/jbe@5 143 module = "area",
bsw/jbe@5 144 view = "show",
bsw/jbe@5 145 id = record.id,
bsw/jbe@5 146 params = {
bsw/jbe@5 147 filter = "frozen",
bsw/jbe@5 148 filter_voting = "not_voted"
bsw/jbe@5 149 }
bsw/jbe@5 150 }
bsw/jbe@5 151 else
bsw/jbe@5 152 slot.put(_"Not a member")
bsw/jbe@5 153 end
bsw/jbe@5 154 end
bsw/jbe@5 155 },
bsw/jbe@5 156 {
bsw/jbe@5 157 content = function(record)
bsw/jbe@5 158 if record.interested_issues_to_vote_count > 0 then
bsw/jbe@5 159 ui.link{
bsw/jbe@5 160 content = function()
bsw/jbe@5 161 if record.interested_issues_to_vote_count > 1 then
bsw/jbe@5 162 slot.put(_("#{interested_issues_to_vote_count} issue(s) you are interested in", { interested_issues_to_vote_count = record.interested_issues_to_vote_count }))
bsw/jbe@5 163 else
bsw/jbe@5 164 slot.put(_"One issue you are interested in")
bsw/jbe@5 165 end
bsw/jbe@5 166 end,
bsw/jbe@5 167 module = "area",
bsw/jbe@5 168 view = "show",
bsw/jbe@5 169 id = record.id,
bsw/jbe@5 170 params = {
bsw/jbe@5 171 filter = "frozen",
bsw/jbe@5 172 filter_interest = "my",
bsw/jbe@5 173 filter_voting = "not_voted"
bsw/jbe@5 174 }
bsw/jbe@5 175 }
bsw/jbe@5 176 end
bsw/jbe@5 177 end
bsw/jbe@5 178 },
bsw/jbe@5 179 }
bsw/jbe@5 180 }
bsw/jbe@5 181 end
bsw/jbe@5 182
bsw/jbe@0 183 execute.view{
bsw/jbe@0 184 module = "member",
bsw/jbe@0 185 view = "_show",
bsw/jbe@0 186 params = { member = app.session.member }
bsw/jbe@0 187 }
bsw/jbe@0 188

Impressum / About Us