liquid_feedback_frontend

view app/main/member/_area_list.lua @ 525:63d6549cc00b

Delegation chain preview improved, better visualisation of current context, code cleanup
author bsw
date Fri May 18 19:07:07 2012 +0200 (2012-05-18)
parents a42179662951
children
line source
1 local member = param.get("member", "table")
2 local for_member = param.get("for_member", atom.boolean)
3 local filter_unit = param.get_all_cgi()["filter_unit"] or "personal"
5 ui.container{ attr = { class = "ui_filter_head" }, content = function()
7 ui.link{
8 attr = { class = filter_unit == "personal" and "ui_tabs_link active" or nil },
9 text = _"With voting right",
10 module = "index", view = "index", params = { filter_unit = "personal" }
11 }
13 slot.put(" ")
15 ui.link{
16 attr = { class = filter_unit == "global" and "active" or nil },
17 text = _"All units",
18 module = "index", view = "index", params = { filter_unit = "global" }
19 }
20 end }
22 slot.put("<br />")
25 if filter_unit == "global" then
26 execute.view{ module = "unit", view = "_list" }
27 return
28 end
30 local units = Unit:new_selector():exec()
32 for i, unit in ipairs(units) do
33 local trustee_member = Member:new_selector()
34 :join("delegation", nil, { "delegation.scope = 'unit' AND delegation.unit_id = ? AND delegation.trustee_id = member.id AND delegation.truster_id = ?", unit.id, member.id })
35 :optional_object_mode()
36 :exec()
38 local areas_selector = Area:new_selector()
39 :join("membership", nil, { "membership.area_id = area.id AND membership.member_id = ?", member.id })
40 :add_where{ "area.unit_id = ?", unit.id }
41 :add_where{ "area.active" }
42 :add_order_by("area.member_weight DESC")
44 local area_count = areas_selector:count()
46 ui.container{ attr = { class = "member_area_list" }, content = function()
47 ui.container{ attr = { class = "xunit_head" }, content = function()
48 ui.link{
49 text = unit.name,
50 module = "unit", view = "show", id = unit.id
51 }
53 if trustee_member then
54 local text = _("Unit delegated to '#{name}'", { name = trustee_member.name })
55 ui.image{
56 attr = { class = "delegation_arrow", alt = text, title = text },
57 static = "delegation_arrow_24_horizontal.png"
58 }
59 execute.view{
60 module = "member_image",
61 view = "_show",
62 params = {
63 member = trustee_member,
64 image_type = "avatar",
65 show_dummy = true,
66 class = "micro_avatar",
67 popup_text = text
68 }
69 }
70 end
71 end }
73 if area_count > 0 then
74 execute.view{
75 module = "area", view = "_list",
76 params = { areas_selector = areas_selector, hide_membership = true }
77 }
78 elseif member:has_voting_right_for_unit_id(unit.id) then
79 if for_member then
80 ui.container{ attr = { class = "voting_priv_info" }, content = _"This member has voting privileges for this unit, but you ist not member of any of its areas." }
81 else
82 ui.container{ attr = { class = "voting_priv_info" }, content = _"You have voting privileges for this unit, but you are not member of any of its areas." }
83 end
84 end
85 local max_area_count = Area:new_selector()
86 :add_where{ "area.unit_id = ?", unit.id }
87 :add_where{ "area.active" }
88 :count()
89 local more_area_count = max_area_count - area_count
90 local delegated_count = Area:new_selector()
91 :add_where{ "area.unit_id = ?", unit.id }
92 :add_where{ "area.active" }
93 :left_join("membership", nil, { "membership.area_id = area.id AND membership.member_id = ?", member.id } )
94 :add_where{ "membership.member_id ISNULL" }
95 :join("delegation", nil, { "delegation.area_id = area.id AND delegation.truster_id = ?", member.id } )
96 :count()
97 if more_area_count > 0 then
98 slot.put("<br />")
99 ui.container{ attr = { class = "more_areas" }, content = function()
100 ui.link{ content = _("#{count} more areas in this unit, #{delegated_count} of them are delegated", { count = more_area_count, delegated_count = delegated_count }), module = "unit", view = "show", id = unit.id }
101 end }
102 end
103 end }
105 end

Impressum / About Us