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 }

Impressum / About Us