liquid_feedback_frontend
diff app/main/issue/_list.lua @ 285:6c88b4bfb56c
Apply interest/support filter for member at member page
| author | bsw |
|---|---|
| date | Fri Feb 17 15:16:02 2012 +0100 (2012-02-17) |
| parents | 808269b7f41c |
| children | c587d8762e62 |
line diff
1.1 --- a/app/main/issue/_list.lua Fri Feb 17 15:14:50 2012 +0100 1.2 +++ b/app/main/issue/_list.lua Fri Feb 17 15:16:02 2012 +0100 1.3 @@ -1,9 +1,15 @@ 1.4 local issues_selector = param.get("issues_selector", "table") 1.5 +local for_member = param.get("for_member", "table") or app.session.member 1.6 1.7 if app.session.member_id then 1.8 issues_selector 1.9 - :left_join("interest", "_interest", { "_interest.issue_id = issue.id AND _interest.member_id = ?", app.session.member.id} ) 1.10 + :left_join("interest", "_interest", { "_interest.issue_id = issue.id AND _interest.member_id = ?", for_member.id } ) 1.11 :add_field("(_interest.member_id NOTNULL)", "is_interested") 1.12 + issues_selector 1.13 + :left_join("delegating_interest_snapshot", "_delegating_interest", { "_delegating_interest.issue_id = issue.id AND _delegating_interest.member_id = ? AND _delegating_interest.event = issue.latest_snapshot_event", for_member.id } ) 1.14 + :add_field("_delegating_interest.delegate_member_ids[1]", "is_interested_by_delegation_to_member_id") 1.15 + :add_field("_delegating_interest.delegate_member_ids[array_upper(_delegating_interest.delegate_member_ids, 1)]", "is_interested_via_member_id") 1.16 + :add_field("array_length(_delegating_interest.delegate_member_ids, 1)", "delegation_chain_length") 1.17 end 1.18 1.19 ui.add_partial_param_names{ 1.20 @@ -14,7 +20,7 @@ 1.21 "issue_list" 1.22 } 1.23 1.24 -local filters = execute.load_chunk{module="issue", chunk="_filters.lua"} 1.25 +local filters = execute.load_chunk{module="issue", chunk="_filters.lua", params = { member = for_member }} 1.26 1.27 filters.content = function() 1.28 ui.paginate{ 1.29 @@ -29,13 +35,52 @@ 1.30 for i, issue in ipairs(issues) do 1.31 1.32 local class = "issue" 1.33 - if issue.is_interested then 1.34 + if issue.is_interested or issue.is_interested_by_delegation_to_member_id then 1.35 class = class .. " interested" 1.36 end 1.37 ui.container{ attr = { class = class }, content = function() 1.38 1.39 ui.container{ attr = { class = "issue_info" }, content = function() 1.40 1.41 + if issue.is_interested_by_delegation_to_member_id then 1.42 + ui.tag{ 1.43 + tag = "div", attr = { class = "interest_by_delegation"}, 1.44 + content = function() 1.45 + local member = Member:by_id(issue.is_interested_by_delegation_to_member_id) 1.46 + ui.tag{ content = "->" } 1.47 + execute.view{ 1.48 + module = "member_image", 1.49 + view = "_show", 1.50 + params = { 1.51 + member = member, 1.52 + image_type = "avatar", 1.53 + show_dummy = true, 1.54 + class = "micro_avatar", 1.55 + popup_text = member.name 1.56 + } 1.57 + } 1.58 + if issue.is_interested_by_delegation_to_member_id ~= issue.is_interested_via_member_id then 1.59 + if issue.delegation_chain_length > 2 then 1.60 + ui.tag{ content = "-> ... " } 1.61 + end 1.62 + ui.tag{ content = "->" } 1.63 + local member = Member:by_id(issue.is_interested_via_member_id) 1.64 + execute.view{ 1.65 + module = "member_image", 1.66 + view = "_show", 1.67 + params = { 1.68 + member = member, 1.69 + image_type = "avatar", 1.70 + show_dummy = true, 1.71 + class = "micro_avatar", 1.72 + popup_text = member.name 1.73 + } 1.74 + } 1.75 + end 1.76 + end 1.77 + } 1.78 + end 1.79 + 1.80 ui.tag{ 1.81 tag = "div", 1.82 content = function() 1.83 @@ -95,7 +140,8 @@ 1.84 highlight_string = highlight_string, 1.85 per_page = app.session.member_id and tonumber(app.session.member:get_setting_value("initiatives_preview_limit") or 3) or 3, 1.86 no_sort = true, 1.87 - limit = app.session.member_id and tonumber(app.session.member:get_setting_value("initiatives_preview_limit") or 3) or 3 1.88 + limit = app.session.member_id and tonumber(app.session.member:get_setting_value("initiatives_preview_limit") or 3) or 3, 1.89 + for_member = for_member 1.90 } 1.91 } 1.92 end }