liquid_feedback_frontend
view app/main/index/index.lua @ 15:a3ac899559de
Esperanto support activated in frontend
author | bsw |
---|---|
date | Sun Jan 31 22:34:45 2010 +0100 (2010-01-31) |
parents | 72c5e0ee7c98 |
children | 00d1004545f1 |
line source
1 slot.select("title", function()
2 if app.session.member then
3 execute.view{
4 module = "member_image",
5 view = "_show",
6 params = {
7 member = app.session.member,
8 image_type = "avatar"
9 }
10 }
11 end
12 end)
14 slot.select("title", function()
15 ui.container{
16 attr = { class = "lang_chooser" },
17 content = function()
18 for i, lang in ipairs{"en", "de", "eo"} do
19 ui.link{
20 content = function()
21 ui.image{
22 static = "lang/" .. lang .. ".png",
23 attr = { style = "margin-left: 0.5em;", alt = lang }
24 }
25 end,
26 module = "index",
27 action = "set_lang",
28 params = { lang = lang },
29 routing = {
30 default = {
31 mode = "redirect",
32 module = request.get_module(),
33 view = request.get_view(),
34 id = param.get_id_cgi(),
35 params = param.get_all_cgi()
36 }
37 }
38 }
39 end
40 end
41 }
42 end)
44 slot.put_into("title", encode.html(config.app_title))
46 slot.select("actions", function()
48 if app.session.member then
49 ui.link{
50 content = function()
51 ui.image{ static = "icons/16/application_form.png" }
52 slot.put(_"Edit my profile")
53 end,
54 module = "member",
55 view = "edit"
56 }
58 ui.link{
59 content = function()
60 ui.image{ static = "icons/16/user_gray.png" }
61 slot.put(_"Upload images")
62 end,
63 module = "member",
64 view = "edit_images"
65 }
67 execute.view{
68 module = "delegation",
69 view = "_show_box"
70 }
72 ui.link{
73 content = function()
74 ui.image{ static = "icons/16/wrench.png" }
75 slot.put(_"Settings")
76 end,
77 module = "member",
78 view = "settings"
79 }
81 if config.download_dir then
82 ui.link{
83 content = function()
84 ui.image{ static = "icons/16/database_save.png" }
85 slot.put(_"Download")
86 end,
87 module = "index",
88 view = "download"
89 }
90 end
91 end
92 end)
94 local lang = locale.get("lang")
95 local basepath = request.get_app_basepath()
96 local file_name = basepath .. "/locale/motd/" .. lang .. ".txt"
97 local file = io.open(file_name)
98 if file ~= nil then
99 local help_text = file:read("*a")
100 if #help_text > 0 then
101 ui.container{
102 attr = { class = "motd wiki" },
103 content = function()
104 slot.put(format.wiki_text(help_text))
105 end
106 }
107 end
108 end
111 util.help("index.index", _"Home")
113 local areas = {}
114 if app.session.member then
115 local selector = Area:new_selector()
116 :reset_fields()
117 :add_field("area.id", nil, { "grouped" })
118 :add_field("area.name", nil, { "grouped" })
119 :add_field("membership.member_id NOTNULL", "is_member", { "grouped" })
120 :add_field("count(issue.id)", "issues_to_vote_count")
121 :add_field("count(interest.member_id)", "interested_issues_to_vote_count")
122 :join("issue", nil, "issue.area_id = area.id AND issue.fully_frozen NOTNULL AND issue.closed ISNULL")
123 :left_join("direct_voter", nil, { "direct_voter.issue_id = issue.id AND direct_voter.member_id = ?", app.session.member.id })
124 :add_where{ "direct_voter.member_id ISNULL" }
125 :left_join("interest", nil, { "interest.issue_id = issue.id AND interest.member_id = ?", app.session.member.id })
126 :left_join("membership", nil, { "membership.area_id = area.id AND membership.member_id = ? ", app.session.member.id })
128 for i, area in ipairs(selector:exec()) do
129 if area.is_member or area.interested_issues_to_vote_count > 0 then
130 areas[#areas+1] = area
131 end
132 end
133 end
135 if #areas > 0 then
136 ui.container{
137 attr = { style = "font-weight: bold;" },
138 content = _"Current votings in areas you are member of and issues you are interested in:"
139 }
141 ui.list{
142 records = areas,
143 columns = {
144 {
145 name = "name"
146 },
147 {
148 content = function(record)
149 if record.is_member and record.issues_to_vote_count > 0 then
150 ui.link{
151 content = function()
152 if record.issues_to_vote_count > 1 then
153 slot.put(_("#{issues_to_vote_count} issue(s)", { issues_to_vote_count = record.issues_to_vote_count }))
154 else
155 slot.put(_("One issue"))
156 end
157 end,
158 module = "area",
159 view = "show",
160 id = record.id,
161 params = {
162 filter = "frozen",
163 filter_voting = "not_voted"
164 }
165 }
166 else
167 slot.put(_"Not a member")
168 end
169 end
170 },
171 {
172 content = function(record)
173 if record.interested_issues_to_vote_count > 0 then
174 ui.link{
175 content = function()
176 if record.interested_issues_to_vote_count > 1 then
177 slot.put(_("#{interested_issues_to_vote_count} issue(s) you are interested in", { interested_issues_to_vote_count = record.interested_issues_to_vote_count }))
178 else
179 slot.put(_"One issue you are interested in")
180 end
181 end,
182 module = "area",
183 view = "show",
184 id = record.id,
185 params = {
186 filter = "frozen",
187 filter_interest = "my",
188 filter_voting = "not_voted"
189 }
190 }
191 end
192 end
193 },
194 }
195 }
196 end
198 local initiatives_selector = Initiative:new_selector()
199 :join("initiator", nil, { "initiator.initiative_id = initiative.id AND initiator.member_id = ? AND initiator.accepted ISNULL", app.session.member.id })
201 if initiatives_selector:count() > 0 then
202 ui.container{
203 attr = { style = "font-weight: bold;" },
204 content = _"Initiatives that invited you to become initiator:"
205 }
207 execute.view{
208 module = "initiative",
209 view = "_list",
210 params = { initiatives_selector = initiatives_selector }
211 }
212 end
215 if app.session.member then
216 execute.view{
217 module = "member",
218 view = "_show",
219 params = { member = app.session.member }
220 }
221 end