liquid_feedback_frontend

diff app/main/initiative/show_tab.lua @ 51:0849be391140

Public read access; Read-only API for initiatives; Prepared integration of OpenID
author bsw
date Sun Apr 04 22:05:11 2010 +0200 (2010-04-04)
parents 00d1004545f1
children 65a1f7a01e7b
line diff
     1.1 --- a/app/main/initiative/show_tab.lua	Wed Mar 31 17:50:32 2010 +0200
     1.2 +++ b/app/main/initiative/show_tab.lua	Sun Apr 04 22:05:11 2010 +0200
     1.3 @@ -5,7 +5,7 @@
     1.4    initiative = Initiative:by_id(param.get("initiative_id", atom.number))
     1.5  end
     1.6  
     1.7 -if not initiator then
     1.8 +if not initiator and app.session.member_id then
     1.9    initiator = Initiator:by_pk(initiative.id, app.session.member.id)
    1.10  end
    1.11  
    1.12 @@ -32,17 +32,19 @@
    1.13    }
    1.14  }
    1.15  
    1.16 -if initiative.issue.ranks_available then
    1.17 -  tabs[#tabs+1] = {
    1.18 -    name = "voting",
    1.19 -    label = _"Voting details",
    1.20 -    icon = { static = "icons/16/email_open.png" },
    1.21 -    module = "initiative",
    1.22 -    view = "_show_voting",
    1.23 -    params = {
    1.24 -      initiative = initiative
    1.25 +if app.session.member_id then
    1.26 +  if initiative.issue.ranks_available then
    1.27 +    tabs[#tabs+1] = {
    1.28 +      name = "voting",
    1.29 +      label = _"Voting details",
    1.30 +      icon = { static = "icons/16/email_open.png" },
    1.31 +      module = "initiative",
    1.32 +      view = "_show_voting",
    1.33 +      params = {
    1.34 +        initiative = initiative
    1.35 +      }
    1.36      }
    1.37 -  }
    1.38 +  end
    1.39  end
    1.40  
    1.41  local suggestion_count = initiative:get_reference_selector("suggestions"):count()
    1.42 @@ -58,90 +60,92 @@
    1.43    }
    1.44  }
    1.45  
    1.46 -local members_selector = initiative:get_reference_selector("supporting_members_snapshot")
    1.47 -          :join("issue", nil, "issue.id = direct_supporter_snapshot.issue_id")
    1.48 -          :join("direct_interest_snapshot", nil, "direct_interest_snapshot.event = issue.latest_snapshot_event AND direct_interest_snapshot.issue_id = issue.id AND direct_interest_snapshot.member_id = member.id")
    1.49 -          :add_field("direct_interest_snapshot.weight")
    1.50 -          :add_where("direct_supporter_snapshot.event = issue.latest_snapshot_event")
    1.51 -          :add_where("direct_supporter_snapshot.satisfied")
    1.52 -          :add_field("direct_supporter_snapshot.informed", "is_informed")
    1.53 -
    1.54 -local tmp = db:query("SELECT count(1) AS count, sum(weight) AS weight FROM (" .. tostring(members_selector) .. ") as subquery", "object")
    1.55 -local direct_satisfied_supporter_count = tmp.count
    1.56 -local indirect_satisfied_supporter_count = (tmp.weight or 0) - tmp.count
    1.57 -
    1.58 -local count_string
    1.59 -if indirect_satisfied_supporter_count > 0 then
    1.60 -  count_string = "(" .. tostring(direct_satisfied_supporter_count) .. "+" .. tostring(indirect_satisfied_supporter_count) .. ")"
    1.61 -else
    1.62 -  count_string = "(" .. tostring(direct_satisfied_supporter_count) .. ")"
    1.63 -end
    1.64 -
    1.65 -tabs[#tabs+1] = {
    1.66 -  name = "satisfied_supporter",
    1.67 -  label = _"Supporter" .. " " .. count_string,
    1.68 -  icon = { static = "icons/16/thumb_up_green.png" },
    1.69 -  module = "member",
    1.70 -  view = "_list",
    1.71 -  params = {
    1.72 -    initiative = initiative,
    1.73 -    members_selector = members_selector
    1.74 +if app.session.member_id then
    1.75 +  local members_selector = initiative:get_reference_selector("supporting_members_snapshot")
    1.76 +            :join("issue", nil, "issue.id = direct_supporter_snapshot.issue_id")
    1.77 +            :join("direct_interest_snapshot", nil, "direct_interest_snapshot.event = issue.latest_snapshot_event AND direct_interest_snapshot.issue_id = issue.id AND direct_interest_snapshot.member_id = member.id")
    1.78 +            :add_field("direct_interest_snapshot.weight")
    1.79 +            :add_where("direct_supporter_snapshot.event = issue.latest_snapshot_event")
    1.80 +            :add_where("direct_supporter_snapshot.satisfied")
    1.81 +            :add_field("direct_supporter_snapshot.informed", "is_informed")
    1.82 +  
    1.83 +  local tmp = db:query("SELECT count(1) AS count, sum(weight) AS weight FROM (" .. tostring(members_selector) .. ") as subquery", "object")
    1.84 +  local direct_satisfied_supporter_count = tmp.count
    1.85 +  local indirect_satisfied_supporter_count = (tmp.weight or 0) - tmp.count
    1.86 +  
    1.87 +  local count_string
    1.88 +  if indirect_satisfied_supporter_count > 0 then
    1.89 +    count_string = "(" .. tostring(direct_satisfied_supporter_count) .. "+" .. tostring(indirect_satisfied_supporter_count) .. ")"
    1.90 +  else
    1.91 +    count_string = "(" .. tostring(direct_satisfied_supporter_count) .. ")"
    1.92 +  end
    1.93 +  
    1.94 +  tabs[#tabs+1] = {
    1.95 +    name = "satisfied_supporter",
    1.96 +    label = _"Supporter" .. " " .. count_string,
    1.97 +    icon = { static = "icons/16/thumb_up_green.png" },
    1.98 +    module = "member",
    1.99 +    view = "_list",
   1.100 +    params = {
   1.101 +      initiative = initiative,
   1.102 +      members_selector = members_selector
   1.103 +    }
   1.104    }
   1.105 -}
   1.106 -
   1.107 -local members_selector = initiative:get_reference_selector("supporting_members_snapshot")
   1.108 -          :join("issue", nil, "issue.id = direct_supporter_snapshot.issue_id")
   1.109 -          :join("direct_interest_snapshot", nil, "direct_interest_snapshot.event = issue.latest_snapshot_event AND direct_interest_snapshot.issue_id = issue.id AND direct_interest_snapshot.member_id = member.id")
   1.110 -          :add_field("direct_interest_snapshot.weight")
   1.111 -          :add_where("direct_supporter_snapshot.event = issue.latest_snapshot_event")
   1.112 -          :add_where("NOT direct_supporter_snapshot.satisfied")
   1.113 -          :add_field("direct_supporter_snapshot.informed", "is_informed")
   1.114 -
   1.115 -local tmp = db:query("SELECT count(1) AS count, sum(weight) AS weight FROM (" .. tostring(members_selector) .. ") as subquery", "object")
   1.116 -local direct_potential_supporter_count = tmp.count
   1.117 -local indirect_potential_supporter_count = (tmp.weight or 0) - tmp.count
   1.118 -
   1.119 -local count_string
   1.120 -if indirect_potential_supporter_count > 0 then
   1.121 -  count_string = "(" .. tostring(direct_potential_supporter_count) .. "+" .. tostring(indirect_potential_supporter_count) .. ")"
   1.122 -else
   1.123 -  count_string = "(" .. tostring(direct_potential_supporter_count) .. ")"
   1.124 +  
   1.125 +  local members_selector = initiative:get_reference_selector("supporting_members_snapshot")
   1.126 +            :join("issue", nil, "issue.id = direct_supporter_snapshot.issue_id")
   1.127 +            :join("direct_interest_snapshot", nil, "direct_interest_snapshot.event = issue.latest_snapshot_event AND direct_interest_snapshot.issue_id = issue.id AND direct_interest_snapshot.member_id = member.id")
   1.128 +            :add_field("direct_interest_snapshot.weight")
   1.129 +            :add_where("direct_supporter_snapshot.event = issue.latest_snapshot_event")
   1.130 +            :add_where("NOT direct_supporter_snapshot.satisfied")
   1.131 +            :add_field("direct_supporter_snapshot.informed", "is_informed")
   1.132 +  
   1.133 +  local tmp = db:query("SELECT count(1) AS count, sum(weight) AS weight FROM (" .. tostring(members_selector) .. ") as subquery", "object")
   1.134 +  local direct_potential_supporter_count = tmp.count
   1.135 +  local indirect_potential_supporter_count = (tmp.weight or 0) - tmp.count
   1.136 +  
   1.137 +  local count_string
   1.138 +  if indirect_potential_supporter_count > 0 then
   1.139 +    count_string = "(" .. tostring(direct_potential_supporter_count) .. "+" .. tostring(indirect_potential_supporter_count) .. ")"
   1.140 +  else
   1.141 +    count_string = "(" .. tostring(direct_potential_supporter_count) .. ")"
   1.142 +  end
   1.143 +  
   1.144 +  tabs[#tabs+1] = {
   1.145 +    name = "supporter",
   1.146 +    label = _"Potential supporter" .. " " .. count_string,
   1.147 +    icon = { static = "icons/16/thumb_up.png" },
   1.148 +    module = "member",
   1.149 +    view = "_list",
   1.150 +    params = {
   1.151 +      initiative = initiative,
   1.152 +      members_selector = members_selector
   1.153 +    }
   1.154 +  }
   1.155 +  
   1.156 +  local initiators_members_selector = initiative:get_reference_selector("initiating_members")
   1.157 +    :add_field("initiator.accepted", "accepted")
   1.158 +  
   1.159 +  if not (initiator and initiator.accepted) then
   1.160 +    initiators_members_selector:add_where("initiator.accepted")
   1.161 +  end
   1.162 +  
   1.163 +  local initiator_count = initiators_members_selector:count()
   1.164 +  
   1.165 +  tabs[#tabs+1] = {
   1.166 +    name = "initiators",
   1.167 +    label = _"Initiators" .. " (" .. tostring(initiator_count) .. ")",
   1.168 +    icon = { static = "icons/16/user_edit.png" },
   1.169 +    module = "initiative",
   1.170 +    view = "_initiators",
   1.171 +    params = {
   1.172 +      initiative = initiative,
   1.173 +      initiator = initiator,
   1.174 +      initiators_members_selector = initiators_members_selector
   1.175 +    }
   1.176 +  }
   1.177  end
   1.178  
   1.179 -tabs[#tabs+1] = {
   1.180 -  name = "supporter",
   1.181 -  label = _"Potential supporter" .. " " .. count_string,
   1.182 -  icon = { static = "icons/16/thumb_up.png" },
   1.183 -  module = "member",
   1.184 -  view = "_list",
   1.185 -  params = {
   1.186 -    initiative = initiative,
   1.187 -    members_selector = members_selector
   1.188 -  }
   1.189 -}
   1.190 -
   1.191 -local initiators_members_selector = initiative:get_reference_selector("initiating_members")
   1.192 -  :add_field("initiator.accepted", "accepted")
   1.193 -
   1.194 -if not (initiator and initiator.accepted) then
   1.195 -  initiators_members_selector:add_where("initiator.accepted")
   1.196 -end
   1.197 -
   1.198 -local initiator_count = initiators_members_selector:count()
   1.199 -
   1.200 -tabs[#tabs+1] = {
   1.201 -  name = "initiators",
   1.202 -  label = _"Initiators" .. " (" .. tostring(initiator_count) .. ")",
   1.203 -  icon = { static = "icons/16/user_edit.png" },
   1.204 -  module = "initiative",
   1.205 -  view = "_initiators",
   1.206 -  params = {
   1.207 -    initiative = initiative,
   1.208 -    initiator = initiator,
   1.209 -    initiators_members_selector = initiators_members_selector
   1.210 -  }
   1.211 -}
   1.212 -
   1.213  local drafts_count = initiative:get_reference_selector("drafts"):count()
   1.214  
   1.215  tabs[#tabs+1] = {

Impressum / About Us