liquid_feedback_frontend

annotate app/main/index/_sidebar_units.lua @ 1045:701a5cf6b067

Imported LiquidFeedback Frontend 3.0 branch
author bsw
date Thu Jul 10 01:19:48 2014 +0200 (2014-07-10)
parents
children bd2509e7f627
rev   line source
bsw@1045 1 local member = param.get ( "member", "table" )
bsw@1045 2 local units
bsw@1045 3 if member then
bsw@1045 4 units = member.units
bsw@1045 5 units:load_delegation_info_once_for_member_id(member.id)
bsw@1045 6 else
bsw@1045 7 units = Unit:new_selector():add_where("active"):add_order_by("name"):exec()
bsw@1045 8 ui.sidebar( "tab-whatcanido", function()
bsw@1045 9 ui.sidebarHead( function()
bsw@1045 10 ui.heading { level = 2, content = _"Organizational units" }
bsw@1045 11 end )
bsw@1045 12 ui.sidebarSection( function()
bsw@1045 13 execute.view { module = "unit", view = "_list" }
bsw@1045 14 end )
bsw@1045 15 end )
bsw@1045 16 return
bsw@1045 17 end
bsw@1045 18
bsw@1045 19
bsw@1045 20 for i, unit in ipairs(units) do
bsw@1045 21
bsw@1045 22 ui.sidebar ( "tab-whatcanido units", function ()
bsw@1045 23
bsw@1045 24 local areas_selector = Area:new_selector()
bsw@1045 25 :reset_fields()
bsw@1045 26 :add_field("area.id", nil, { "grouped" })
bsw@1045 27 :add_field("area.unit_id", nil, { "grouped" })
bsw@1045 28 :add_field("area.name", nil, { "grouped" })
bsw@1045 29 :add_where{ "area.unit_id = ?", unit.id }
bsw@1045 30 :add_where{ "area.active" }
bsw@1045 31 :add_order_by("area.name")
bsw@1045 32
bsw@1045 33 if member then
bsw@1045 34 areas_selector:left_join (
bsw@1045 35 "membership", nil,
bsw@1045 36 { "membership.area_id = area.id AND membership.member_id = ?", member.id }
bsw@1045 37 )
bsw@1045 38 areas_selector:add_field("membership.member_id NOTNULL", "subscribed", { "grouped" })
bsw@1045 39 end
bsw@1045 40
bsw@1045 41 local areas = areas_selector:exec()
bsw@1045 42 if member then
bsw@1045 43 areas:load_delegation_info_once_for_member_id(member.id)
bsw@1045 44 end
bsw@1045 45
bsw@1045 46 if #areas > 0 then
bsw@1045 47
bsw@1045 48 ui.container {
bsw@1045 49 attr = { class = "sidebarHead" },
bsw@1045 50 content = function ()
bsw@1045 51 ui.heading { level = 2, content = function ()
bsw@1045 52 ui.link {
bsw@1045 53 attr = { class = "unit" },
bsw@1045 54 module = "unit", view = "show", id = unit.id,
bsw@1045 55 content = unit.name
bsw@1045 56 }
bsw@1045 57
bsw@1045 58 if member then
bsw@1045 59 local delegation = Delegation:by_pk(member.id, unit.id, nil, nil)
bsw@1045 60
bsw@1045 61 if delegation then
bsw@1045 62 ui.link {
bsw@1045 63 module = "delegation", view = "show", params = {
bsw@1045 64 unit_id = unit.id
bsw@1045 65 },
bsw@1045 66 attr = { class = "delegation_info" },
bsw@1045 67 content = function ()
bsw@1045 68 ui.delegation(delegation.trustee_id, delegation.trustee.name)
bsw@1045 69 end
bsw@1045 70 }
bsw@1045 71 end
bsw@1045 72 end
bsw@1045 73 end }
bsw@1045 74
bsw@1045 75 end
bsw@1045 76 }
bsw@1045 77
bsw@1045 78
bsw@1045 79 ui.tag { tag = "div", attr = { class = "areas areas-" .. unit.id }, content = function ()
bsw@1045 80
bsw@1045 81 local any_subscribed = false
bsw@1045 82 local subscribed_count = 0
bsw@1045 83 for i, area in ipairs(areas) do
bsw@1045 84
bsw@1045 85 local class = "sidebarRow"
bsw@1045 86 class = class .. (not area.subscribed and " disabled" or "")
bsw@1045 87
bsw@1045 88 ui.tag { tag = "div", attr = { class = class }, content = function ()
bsw@1045 89
bsw@1045 90 if area.subscribed then
bsw@1045 91 local text = _"subscribed"
bsw@1045 92 ui.image { attr = { class = "icon24 star", alt = text, title = text }, static = "icons/48/star.png" }
bsw@1045 93 any_subscribed = true
bsw@1045 94 subscribed_count = subscribed_count +1
bsw@1045 95 end
bsw@1045 96
bsw@1045 97 if member then
bsw@1045 98 local delegation = Delegation:by_pk(member.id, nil, area.id, nil)
bsw@1045 99
bsw@1045 100 if delegation then
bsw@1045 101 ui.link {
bsw@1045 102 module = "delegation", view = "show", params = {
bsw@1045 103 area_id = area.id
bsw@1045 104 },
bsw@1045 105 attr = { class = "delegation_info" },
bsw@1045 106 content = function ()
bsw@1045 107 ui.delegation(delegation.trustee_id, delegation.trustee_id and delegation.trustee.name)
bsw@1045 108 end
bsw@1045 109 }
bsw@1045 110 end
bsw@1045 111 end
bsw@1045 112
bsw@1045 113 slot.put ( " " )
bsw@1045 114
bsw@1045 115 ui.link {
bsw@1045 116 attr = { class = "area" },
bsw@1045 117 module = "area", view = "show", id = area.id,
bsw@1045 118 content = area.name
bsw@1045 119 }
bsw@1045 120
bsw@1045 121
bsw@1045 122 end }
bsw@1045 123 end
bsw@1045 124 if subscribed_count < #areas then
bsw@1045 125 local text
bsw@1045 126 if any_subscribed then
bsw@1045 127 text = _"show other subject areas"
bsw@1045 128 else
bsw@1045 129 text = _"show subject areas"
bsw@1045 130 end
bsw@1045 131 ui.script{ script = "$('.areas-" .. unit.id .. "').addClass('folded');" }
bsw@1045 132 ui.tag { tag = "div", attr = { class = "sidebarRow moreLink whenfolded" }, content = function ()
bsw@1045 133 ui.link {
bsw@1045 134 attr = {
bsw@1045 135 onclick = "$('.areas-" .. unit.id .. "').removeClass('folded'); return false;"
bsw@1045 136 },
bsw@1045 137 text = text
bsw@1045 138 }
bsw@1045 139 end }
bsw@1045 140 ui.tag { tag = "div", attr = { class = "sidebarRow moreLink whenunfolded" }, content = function ()
bsw@1045 141 ui.link {
bsw@1045 142 attr = {
bsw@1045 143 onclick = "$('.areas-" .. unit.id .. "').addClass('folded'); return false;"
bsw@1045 144 },
bsw@1045 145 text = _"collapse subject areas"
bsw@1045 146 }
bsw@1045 147 end }
bsw@1045 148 end
bsw@1045 149 end }
bsw@1045 150 end
bsw@1045 151 end )
bsw@1045 152 end
bsw@1045 153
bsw@1045 154

Impressum / About Us