| rev | line source | 
| bsw@1045 | 1 local member = param.get ( "member", "table" ) or app.session.member | 
| bsw@1045 | 2 | 
| bsw@1045 | 3 local unit = param.get ( "unit", "table" ) | 
| bsw@1045 | 4 | 
| bsw@1045 | 5 local areas_selector = Area:new_selector() | 
| bsw@1045 | 6   :reset_fields() | 
| bsw@1045 | 7   :add_field("area.id", nil, { "grouped" }) | 
| bsw@1045 | 8   :add_field("area.unit_id", nil, { "grouped" }) | 
| bsw@1045 | 9   :add_field("area.name", nil, { "grouped" }) | 
| bsw@1045 | 10   :add_where{ "area.unit_id = ?", unit.id } | 
| bsw@1045 | 11   :add_where{ "area.active" } | 
| bsw@1045 | 12   :add_order_by("area.name") | 
| bsw@1045 | 13 | 
| bsw@1045 | 14 if member then | 
| bsw@1045 | 15   areas_selector:left_join ( | 
| bsw@1045 | 16     "membership", nil, | 
| bsw@1045 | 17     { "membership.area_id = area.id AND membership.member_id = ?", member.id } | 
| bsw@1045 | 18   ) | 
| bsw@1045 | 19   areas_selector:add_field("membership.member_id NOTNULL", "subscribed", { "grouped" }) | 
| bsw@1045 | 20 end | 
| bsw@1045 | 21 | 
| bsw@1045 | 22 | 
| bsw@1045 | 23 local areas = areas_selector:exec() | 
| bsw@1045 | 24 if member then | 
| bsw@1045 | 25   unit:load_delegation_info_once_for_member_id(member.id) | 
| bsw@1045 | 26   areas:load_delegation_info_once_for_member_id(member.id) | 
| bsw@1045 | 27 end | 
| bsw@1045 | 28 | 
| bsw@1045 | 29 | 
| bsw@1045 | 30 ui.sidebar ( "tab-whatcanido", function () | 
| bsw@1045 | 31 | 
| bsw@1045 | 32   ui.sidebarHead( function () | 
| bsw@1045 | 33     ui.heading { | 
| bsw@1045 | 34       level = 2, content = _"Subject areas" | 
| bsw@1045 | 35     } | 
| bsw@1045 | 36   end ) | 
| bsw@1045 | 37 | 
| bsw@1045 | 38   if #areas > 0 then | 
| bsw@1045 | 39 | 
| bsw@1045 | 40     ui.container { class = "areas", content = function () | 
| bsw@1045 | 41 | 
| bsw@1045 | 42       for i, area in ipairs ( areas ) do | 
| bsw@1045 | 43 | 
| bsw@1045 | 44         ui.container { attr = { class = "sidebarRow" }, content = function () | 
| bsw@1045 | 45 | 
| bsw@1045 | 46           if member then | 
| bsw@1045 | 47             local delegation = Delegation:by_pk(member.id, nil, area.id, nil) | 
| bsw@1045 | 48 | 
| bsw@1045 | 49             if delegation then | 
| bsw@1045 | 50               ui.link { | 
| bsw@1045 | 51                 module = "delegation", view = "show", params = { | 
| bsw@1045 | 52                   area_id = area.id | 
| bsw@1045 | 53                 }, | 
| bsw@1045 | 54                 attr = { class = "delegation_info" }, | 
| bsw@1045 | 55                 content = function () | 
| bsw@1045 | 56                   ui.delegation(delegation.trustee_id, delegation.trustee_id and delegation.trustee.name) | 
| bsw@1045 | 57                 end | 
| bsw@1045 | 58               } | 
| bsw@1045 | 59             end | 
| bsw@1045 | 60           end | 
| bsw@1045 | 61 | 
| bsw@1045 | 62           if area.subscribed then | 
| bsw@1058 | 63             ui.image { attr = { class = "icon16 star" }, static = "icons/48/star.png" } | 
| bsw@1045 | 64           end | 
| bsw@1045 | 65 | 
| bsw@1045 | 66           ui.link { | 
| bsw@1045 | 67             attr = { class = "area" }, | 
| bsw@1045 | 68             module = "area", view = "show", id = area.id, | 
| bsw@1045 | 69             content = area.name | 
| bsw@1045 | 70           } | 
| bsw@1045 | 71 | 
| bsw@1045 | 72         end } -- ui.tag "li" | 
| bsw@1045 | 73 | 
| bsw@1045 | 74       end -- for i, area | 
| bsw@1045 | 75 | 
| bsw@1045 | 76     end } -- ui.tag "ul" | 
| bsw@1045 | 77 | 
| bsw@1045 | 78   end -- if #areas > 0 | 
| bsw@1045 | 79 | 
| bsw@1045 | 80 end ) -- ui.sidebar |