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
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 |