liquid_feedback_frontend
changeset 274:aec9df5b4cd3
More optical enhancements and repositioning of elements
author | bsw |
---|---|
date | Sun Feb 12 12:20:19 2012 +0100 (2012-02-12) |
parents | 7196685f9dd7 |
children | fc14e76afe31 |
files | app/main/_layout/default.html app/main/area/_list.lua app/main/draft/_show.lua app/main/initiative/_details.lua app/main/initiative/_list.lua app/main/initiative/_list_element.lua app/main/initiative/_show.lua app/main/issue/_show_head.lua app/main/member/_area_list.lua app/main/member_image/_show.lua model/area.lua static/style.css |
line diff
1.1 --- a/app/main/_layout/default.html Wed Feb 08 18:49:22 2012 +0100 1.2 +++ b/app/main/_layout/default.html Sun Feb 12 12:20:19 2012 +0100 1.3 @@ -57,8 +57,11 @@ 1.4 <!-- WEBMCP SLOT actions --> 1.5 </div> 1.6 </div> 1.7 + <div class="initiatives_list" id="initiatives_list"> 1.8 + <!-- WEBMCP SLOT initiatives_list --> 1.9 + </div> 1.10 </div> 1.11 - <div class="initiative_head" id="initiative_head"> 1.12 + <div class="initiative_head" id="initiative_head"> 1.13 <!-- WEBMCP SLOT initiative_head --> 1.14 </div> 1.15 <div class="support vote_info" id="support">
2.1 --- a/app/main/area/_list.lua Wed Feb 08 18:49:22 2012 +0100 2.2 +++ b/app/main/area/_list.lua Sun Feb 12 12:20:19 2012 +0100 2.3 @@ -18,7 +18,12 @@ 2.4 :add_field({ "(SELECT COUNT(*) FROM issue LEFT JOIN direct_voter ON direct_voter.issue_id = issue.id AND direct_voter.member_id = ? WHERE issue.area_id = area.id AND issue.fully_frozen NOTNULL AND issue.closed ISNULL AND direct_voter.member_id ISNULL)", app.session.member.id }, "issues_to_vote_count") 2.5 :left_join("membership", "_membership", { "_membership.area_id = area.id AND _membership.member_id = ?", app.session.member.id }) 2.6 :add_field("_membership.member_id NOTNULL", "is_member", { "grouped" }) 2.7 - :add_field({ "(SELECT member.name FROM delegation LEFT JOIN member ON delegation.trustee_id = member.id WHERE delegation.scope = 'area' AND delegation.area_id = area.id AND truster_id = ?)", app.session.member.id }, "area_delegation_name") 2.8 + :left_join("delegation", nil, { 2.9 + "delegation.truster_id = ? AND delegation.area_id = area.id AND delegation.scope = 'area'", app.session.member_id 2.10 + }) 2.11 + :left_join("member", nil, "member.id = delegation.trustee_id") 2.12 + :add_field("member.id", "trustee_member_id", { "grouped" }) 2.13 + :add_field("member.name", "trustee_member_name", { "grouped" }) 2.14 else 2.15 areas_selector:add_field("0", "issues_to_vote_count") 2.16 end 2.17 @@ -43,11 +48,19 @@ 2.18 }, 2.19 { 2.20 content = function(record) 2.21 - if record.area_delegation_name then 2.22 - local text = _("Area delegated to '#{name}'", { name = record.area_delegation_name }) 2.23 - ui.image{ 2.24 - attr = { title = text, alt = text, style = "vertical-align: middle;" }, 2.25 - static = "icons/16/link.png", 2.26 + if record.trustee_member_id then 2.27 + local trustee_member = Member:by_id(record.trustee_member_id) 2.28 + local text = _("Area delegated to '#{name}'", { name = record.trustee_member_name }) 2.29 + execute.view{ 2.30 + module = "member_image", 2.31 + view = "_show", 2.32 + params = { 2.33 + member = trustee_member, 2.34 + image_type = "avatar", 2.35 + show_dummy = true, 2.36 + class = "micro_avatar", 2.37 + popup_text = text 2.38 + } 2.39 } 2.40 end 2.41 end 2.42 @@ -218,7 +231,7 @@ 2.43 }, 2.44 } 2.45 } 2.46 - 2.47 +--[[ 2.48 ui.bargraph_legend{ 2.49 width = 25, 2.50 bars = { 2.51 @@ -296,3 +309,4 @@ 2.52 slot.put(" ") 2.53 slot.put(_"Cancelled") 2.54 2.55 +--]] 2.56 \ No newline at end of file
3.1 --- a/app/main/draft/_show.lua Wed Feb 08 18:49:22 2012 +0100 3.2 +++ b/app/main/draft/_show.lua Sun Feb 12 12:20:19 2012 +0100 3.3 @@ -7,43 +7,6 @@ 3.4 readonly = true, 3.5 content = function() 3.6 3.7 - if app.session.member_id or config.public_access == "pseudonym" then 3.8 - if draft.author then 3.9 - -- ugly workaround for getting html into a replaced string und to the user 3.10 - ui.container{label = _"Last author", label_attr={class="ui_field_label"}, content = function() 3.11 - local str = _("#{author} at #{date}", 3.12 - {author = string.format('<a href="%s">%s</a>', 3.13 - encode.url{ 3.14 - module = "member", 3.15 - view = "show", 3.16 - id = draft.author.id, 3.17 - }, 3.18 - encode.html(draft.author.name)), 3.19 - date = encode.html(format.timestamp(draft.created)) 3.20 - } 3.21 - ) 3.22 - slot.put("<span>", str, "</span>") 3.23 - end 3.24 - } 3.25 - else 3.26 - text = _("#{author} at #{date}", { 3.27 - author = encode.html(draft.author_name), 3.28 - date = format.timestamp(draft.created) 3.29 - }) 3.30 - ui.field.text{label = _"Last author", value = text } 3.31 - end 3.32 - else 3.33 - ui.field.text{ 3.34 - label = _"Last author", 3.35 - value = _( 3.36 - "#{author} at #{date}", { 3.37 - author = _"[not displayed public]", 3.38 - date = format.timestamp(draft.created) 3.39 - } 3.40 - ) 3.41 - } 3.42 - end 3.43 - 3.44 ui.container{ 3.45 attr = { class = "draft_content wiki" }, 3.46 content = function()
4.1 --- a/app/main/initiative/_details.lua Wed Feb 08 18:49:22 2012 +0100 4.2 +++ b/app/main/initiative/_details.lua Sun Feb 12 12:20:19 2012 +0100 4.3 @@ -1,12 +1,12 @@ 4.4 local initiative = param.get("initiative", "table") 4.5 4.6 +ui.container{ content = _"Initiative details" } 4.7 + 4.8 ui.form{ 4.9 attr = { class = "vertical" }, 4.10 record = initiative, 4.11 readonly = true, 4.12 content = function() 4.13 - local policy = initiative.issue.policy 4.14 - ui.field.text{ label = _"Issue policy", value = initiative.issue.policy.name } 4.15 ui.field.text{ 4.16 label = _"Created at", 4.17 value = tostring(initiative.created) 4.18 @@ -17,17 +17,10 @@ 4.19 value = format.timestamp(initiative.revoked) 4.20 } 4.21 end 4.22 - ui.field.text{ 4.23 - label = _"Initiative quorum", 4.24 - value = format.percentage(policy.initiative_quorum_num / policy.initiative_quorum_den) 4.25 - } 4.26 - if initiative.issue.population then 4.27 - ui.field.text{ 4.28 - label = _"Currently required", 4.29 - value = math.ceil(initiative.issue.population * (policy.initiative_quorum_num / policy.initiative_quorum_den)), 4.30 - } 4.31 - end 4.32 - -- ui.field.date{ label = _"Revoked at", name = "revoked" } 4.33 ui.field.boolean{ label = _"Admitted", name = "admitted" } 4.34 end 4.35 } 4.36 + 4.37 +ui.container{ content = _"Issue details" } 4.38 + 4.39 +execute.view{ module = "issue", view = "_details", params = { issue = initiative.issue } } 4.40 \ No newline at end of file
5.1 --- a/app/main/initiative/_list.lua Wed Feb 08 18:49:22 2012 +0100 5.2 +++ b/app/main/initiative/_list.lua Sun Feb 12 12:20:19 2012 +0100 5.3 @@ -4,6 +4,8 @@ 5.4 5.5 local initiatives_selector = param.get("initiatives_selector", "table") 5.6 5.7 +local highlight_initiative = param.get("highlight_initiative", "table") 5.8 + 5.9 initiatives_selector 5.10 :join("issue", nil, "issue.id = initiative.issue_id") 5.11 5.12 @@ -150,7 +152,7 @@ 5.13 if issue.ranks_available then 5.14 initiatives_selector:add_order_by("initiative.rank, initiative.admitted DESC, vote_ratio(initiative.positive_votes, initiative.negative_votes) DESC, initiative.id") 5.15 else 5.16 - initiatives_selector:add_order_by("CASE WHEN issue.population = 0 THEN 0 ELSE initiative.supporter_count::float / issue.population::float END DESC, initiative.id") 5.17 + initiatives_selector:add_order_by("CASE WHEN issue.population = 0 OR initiative.supporter_count = 0 OR initiative.supporter_count ISNULL THEN 0 ELSE initiative.supporter_count::float / issue.population::float END DESC, initiative.id") 5.18 end 5.19 end 5.20 5.21 @@ -162,9 +164,23 @@ 5.22 ui.paginate{ 5.23 name = issue and "issue_" .. tostring(issue.id) .. "_page" or nil, 5.24 selector = initiatives_selector, 5.25 - per_page = param.get("per_page", atom.number), 5.26 + per_page = param.get("per_page", atom.number) or limit, 5.27 content = function() 5.28 local initiatives = initiatives_selector:exec() 5.29 + if highlight_initiative then 5.30 + local highlight_initiative_found 5.31 + for i, initiative in ipairs(initiatives) do 5.32 + if initiative.id == highlight_initiative.id then 5.33 + highhighlight_initiative_found = true 5.34 + end 5.35 + end 5.36 + if not highhighlight_initiative_found then 5.37 + initiatives[#initiatives+1] = highlight_initiative 5.38 + if more_initiatives_count then 5.39 + more_initiatives_count = more_initiatives_count - 1 5.40 + end 5.41 + end 5.42 + end 5.43 for i, initiative in ipairs(initiatives) do 5.44 local expanded = config.user_tab_mode == "accordeon_all_expanded" and expandable or 5.45 show_for_initiative and initiative.id == show_for_initiative.id 5.46 @@ -176,6 +192,7 @@ 5.47 view = "_list_element", 5.48 params = { 5.49 initiative = initiative, 5.50 + selected = highlight_initiative and highlight_initiative.id == initiative.id or nil, 5.51 expanded = expanded, 5.52 expandable = expandable 5.53 } 5.54 @@ -187,9 +204,15 @@ 5.55 } 5.56 5.57 if more_initiatives_count then 5.58 + local text 5.59 + if more_initiatives_count == 1 then 5.60 + text = _("and one more initiative") 5.61 + else 5.62 + text = _("and #{count} more initiatives", { count = more_initiatives_count }) 5.63 + end 5.64 ui.link{ 5.65 - attr = { style = "font-size: 75%; font-style: italic;" }, 5.66 - content = _("and #{count} more initiatives", { count = more_initiatives_count }), 5.67 + attr = { class = "more_initiatives_link" }, 5.68 + content = text, 5.69 module = "issue", 5.70 view = "show", 5.71 id = issue.id,
6.1 --- a/app/main/initiative/_list_element.lua Wed Feb 08 18:49:22 2012 +0100 6.2 +++ b/app/main/initiative/_list_element.lua Sun Feb 12 12:20:19 2012 +0100 6.3 @@ -1,4 +1,5 @@ 6.4 local initiative = param.get("initiative", "table") 6.5 +local selected = param.get("selected", atom.boolean) 6.6 local expanded = param.get("expanded", atom.boolean) 6.7 local expandable = param.get("expandable", atom.boolean) 6.8 6.9 @@ -127,10 +128,19 @@ 6.10 { 6.11 field_attr = { style = "padding: 0;"}, 6.12 content = function() 6.13 - local link_class 6.14 + local link_class = "initiative_link" 6.15 if initiative.revoked then 6.16 link_class = "revoked" 6.17 end 6.18 + if selected then 6.19 + link_class = link_class .. " selected" 6.20 + end 6.21 + if initiative.is_supporter then 6.22 + link_class = link_class .. " supported" 6.23 + end 6.24 + if initiative.is_potential_supporter then 6.25 + link_class = link_class .. " potentially_supported" 6.26 + end 6.27 ui.link{ 6.28 attr = { id = link_name, class = link_class }, 6.29 content = function() 6.30 @@ -140,6 +150,7 @@ 6.31 else 6.32 name = encode.html(initiative.shortened_name) 6.33 end 6.34 + ui.tag{ content = "i" .. initiative.id .. ": " } 6.35 slot.put(name) 6.36 end, 6.37 module = module, 6.38 @@ -148,27 +159,6 @@ 6.39 params = params, 6.40 } 6.41 6.42 - if initiative.issue.state == "new" then 6.43 - ui.image{ 6.44 - static = "icons/16/new.png" 6.45 - } 6.46 - end 6.47 - if initiative.is_supporter then 6.48 - slot.put(" ") 6.49 - local label = _"You are supporting this initiative" 6.50 - ui.image{ 6.51 - attr = { alt = label, title = label }, 6.52 - static = "icons/16/thumb_up_green.png" 6.53 - } 6.54 - end 6.55 - if initiative.is_potential_supporter then 6.56 - slot.put(" ") 6.57 - local label = _"You are potential supporter of this initiative" 6.58 - ui.image{ 6.59 - attr = { alt = label, title = label }, 6.60 - static = "icons/16/thumb_up.png" 6.61 - } 6.62 - end 6.63 if initiative.is_initiator then 6.64 slot.put(" ") 6.65 local label = _"You are initiator of this initiative"
7.1 --- a/app/main/initiative/_show.lua Wed Feb 08 18:49:22 2012 +0100 7.2 +++ b/app/main/initiative/_show.lua Sun Feb 12 12:20:19 2012 +0100 7.3 @@ -10,6 +10,20 @@ 7.4 7.5 local initiators = initiators_members_selector:exec() 7.6 7.7 + 7.8 +local initiatives_selector = initiative.issue:get_reference_selector("initiatives") 7.9 +slot.select("initiatives_list", function() 7.10 + execute.view{ 7.11 + module = "initiative", 7.12 + view = "_list", 7.13 + params = { 7.14 + issue = initiative.issue, 7.15 + initiatives_selector = initiatives_selector, 7.16 + no_sort = true, highlight_initiative = initiative, limit = 3 7.17 + } 7.18 + } 7.19 +end) 7.20 + 7.21 slot.select("initiative_head", function() 7.22 7.23 ui.container{ 7.24 @@ -32,8 +46,8 @@ 7.25 module = "member", view = "show", id = initiator.id 7.26 } 7.27 end 7.28 - end 7.29 - } 7.30 + end 7.31 + } 7.32 7.33 if initiator and initiator.accepted and not initiative.issue.fully_frozen and not initiative.issue.closed and not initiative.revoked then 7.34 slot.put(" · ")
8.1 --- a/app/main/issue/_show_head.lua Wed Feb 08 18:49:22 2012 +0100 8.2 +++ b/app/main/issue/_show_head.lua Sun Feb 12 12:20:19 2012 +0100 8.3 @@ -46,19 +46,6 @@ 8.4 tag = "div", 8.5 content = function() 8.6 8.7 - local initiative_count = issue:get_reference_selector("initiatives"):count() 8.8 - local text 8.9 - if initiative_count == 1 then 8.10 - text = _("1 initiative", { count = initiative_count }) 8.11 - else 8.12 - text = _("#{count} initiatives", { count = initiative_count }) 8.13 - end 8.14 - ui.link{ 8.15 - text = text, 8.16 - module = "issue", view = "show", id = issue.id 8.17 - } 8.18 - 8.19 - slot.put(" · ") 8.20 ui.link{ 8.21 text = issue.policy.name, 8.22 module = "policy", 8.23 @@ -74,10 +61,6 @@ 8.24 ui.tag{ content = _("#{time_left} left", { time_left = issue.state_time_left }) } 8.25 end 8.26 8.27 - if issue.next_states_names then 8.28 - slot.put(" · ") 8.29 - ui.tag{ content = _("Next state: #{state}", { state = issue.next_states_names }) } 8.30 - end 8.31 end 8.32 } 8.33
9.1 --- a/app/main/member/_area_list.lua Wed Feb 08 18:49:22 2012 +0100 9.2 +++ b/app/main/member/_area_list.lua Sun Feb 12 12:20:19 2012 +0100 9.3 @@ -6,13 +6,25 @@ 9.4 :add_where{ "area.unit_id = ?", unit.id } 9.5 :add_order_by("area.member_weight DESC") 9.6 ui.link{ 9.7 + attr = { class = "heading" }, 9.8 text = unit.name, 9.9 module = "area", view = "list", params = { unit_id = unit.id } 9.10 } 9.11 9.12 - execute.view{ 9.13 - module = "area", view = "_list", 9.14 - params = { areas_selector = areas_selector }, 9.15 - } 9.16 + if areas_selector:count() > 0 then 9.17 + execute.view{ 9.18 + module = "area", view = "_list", 9.19 + params = { areas_selector = areas_selector }, 9.20 + } 9.21 + else 9.22 + ui.tag{ content = _"You have voting privileges for this unit, but you are not member of any of its areas." } 9.23 + slot.put(" ") 9.24 + ui.link{ 9.25 + text = _"Show all areas of this unit", 9.26 + module = "area", view = "list", params = { unit_id = unit.id } 9.27 + } 9.28 + end 9.29 + slot.put("<br />") 9.30 + 9.31 end 9.32
10.1 --- a/app/main/member_image/_show.lua Wed Feb 08 18:49:22 2012 +0100 10.2 +++ b/app/main/member_image/_show.lua Sun Feb 12 12:20:19 2012 +0100 10.3 @@ -1,6 +1,14 @@ 10.4 local member = param.get("member", "table") 10.5 local image_type = param.get("image_type") 10.6 local show_dummy = param.get("show_dummy", atom.boolean) 10.7 +local class = param.get("class") 10.8 +local popup_text = param.get("popup_text") 10.9 + 10.10 +if class then 10.11 + class = " " .. class 10.12 +else 10.13 + class = "" 10.14 +end 10.15 10.16 local image = member:get_reference_selector("images") 10.17 :add_where{ "image_type = ?", image_type } 10.18 @@ -10,18 +18,18 @@ 10.19 if image or show_dummy then 10.20 if config.fastpath_url_func then 10.21 ui.image{ 10.22 - attr = { class = "member_image member_image_" .. image_type }, 10.23 + attr = { title = popup_text, class = "member_image member_image_" .. image_type .. class }, 10.24 external = config.fastpath_url_func(member.id, image_type) 10.25 } 10.26 else 10.27 if not image then 10.28 ui.image{ 10.29 - attr = { class = "member_image member_image_" .. image_type }, 10.30 + attr = { title = popup_text, class = "member_image member_image_" .. image_type .. class }, 10.31 external = encode.url{ static = (config.member_image_default_file[image_type] or 'icons/16/lightning.png')}, 10.32 } 10.33 else 10.34 ui.image{ 10.35 - attr = { class = "member_image member_image_" .. image_type }, 10.36 + attr = { title = popup_text, class = "member_image member_image_" .. image_type .. class }, 10.37 module = "member_image", 10.38 view = "show", 10.39 extension = "jpg",
11.1 --- a/model/area.lua Wed Feb 08 18:49:22 2012 +0100 11.2 +++ b/model/area.lua Sun Feb 12 12:20:19 2012 +0100 11.3 @@ -69,10 +69,10 @@ 11.4 function Area:build_selector(args) 11.5 local selector = Area:new_selector() 11.6 if args.active ~= nil then 11.7 - selector:add_where{ "active = ?", args.active } 11.8 + selector:add_where{ "area.active = ?", args.active } 11.9 end 11.10 if args.unit_id ~= nil then 11.11 - selector:add_where{ "unit_id = ?", args.unit_id } 11.12 + selector:add_where{ "area.unit_id = ?", args.unit_id } 11.13 end 11.14 return selector 11.15 end
12.1 --- a/static/style.css Wed Feb 08 18:49:22 2012 +0100 12.2 +++ b/static/style.css Sun Feb 12 12:20:19 2012 +0100 12.3 @@ -15,7 +15,7 @@ 12.4 } 12.5 12.6 .area_list { 12.7 - line-height: 170%; 12.8 + line-height: 140%; 12.9 } 12.10 12.11 body, a { 12.12 @@ -116,7 +116,7 @@ 12.13 background-color: #444; 12.14 color: #fff; 12.15 font-size: 90%; 12.16 - line-height: 140%; 12.17 + line-height: 100%; 12.18 padding-left: 10px; 12.19 } 12.20 12.21 @@ -135,7 +135,7 @@ 12.22 12.23 .navigation, 12.24 .logout_button { 12.25 - line-height: 250%; 12.26 + line-height: 200%; 12.27 } 12.28 12.29 .navigation img, 12.30 @@ -195,17 +195,18 @@ 12.31 */ 12.32 12.33 .title_bar { 12.34 - padding-top: 2ex; 12.35 padding-bottom: 1ex; 12.36 xbackground-color: #def; 12.37 + text-shadow: #fff 0px 0px 3px; 12.38 +} 12.39 + 12.40 +.title_bar_content { 12.41 + padding-left: 1em; 12.42 + padding-top: 1.5ex; 12.43 background: -webkit-gradient(linear, left top, left bottom, 12.44 /*color-stop(0%,#abd3ee), color-stop(100%,#ffffff)*/ 12.45 color-stop(0%,#ddd), color-stop(100%,#fff) 12.46 - ); 12.47 -} 12.48 - 12.49 -.title_bar_content { 12.50 - margin-left: 1em; 12.51 + ); 12.52 } 12.53 12.54 .path { 12.55 @@ -258,6 +259,12 @@ 12.56 margin-right: 0.5em; 12.57 } 12.58 12.59 +.micro_avatar { 12.60 + width: 24px; 12.61 + height: 24px; 12.62 + border-radius: 4px; 12.63 +} 12.64 + 12.65 .actions { 12.66 font-size: 75%; 12.67 line-height: 220%; 12.68 @@ -267,9 +274,6 @@ 12.69 display: inline; 12.70 } 12.71 12.72 -.actions { 12.73 -} 12.74 - 12.75 .actions a { 12.76 padding: 1px 0.5em 1px 0.0em; 12.77 margin-right: 1em; 12.78 @@ -278,12 +282,13 @@ 12.79 12.80 12.81 .slot_initiative_head { 12.82 - xbackground: -webkit-gradient(linear, left top, left bottom, 12.83 + background: -webkit-gradient(linear, left top, left bottom, 12.84 /*color-stop(0%,#AFEFB9), color-stop(100%,#ffffff) */ 12.85 color-stop(0%,#ddd), color-stop(100%,#fff) 12.86 ); 12.87 padding-left: 1em; 12.88 padding-top: 2ex; 12.89 + text-shadow: #fff 0px 0px 3px; 12.90 } 12.91 12.92 .initiative_name { 12.93 @@ -366,25 +371,25 @@ 12.94 .interest .head_active, 12.95 .slot_support .head_potential_supporter{ 12.96 background-color: #fec; 12.97 - border: 1px solid #b96; 12.98 + box-shadow: #fff 0px 0px 10px 1px; 12.99 border-radius: 5px; 12.100 } 12.101 12.102 .slot_support .head_supporter { 12.103 background-color: #dfc; 12.104 - border: 1px solid #8b8; 12.105 + box-shadow: #fff 0px 0px 10px 1px; 12.106 border-radius: 5px; 12.107 } 12.108 12.109 .slot_support .head_initiator { 12.110 background-color: #eee; 12.111 - border: 1px solid #999; 12.112 + box-shadow: #fff 0px 0px 10px 1px; 12.113 border-radius: 5px; 12.114 } 12.115 12.116 .delegation .head_active { 12.117 background-color: #ddf; 12.118 - border: 1px solid #88b; 12.119 + box-shadow: #fff 0px 0px 10px 1px; 12.120 border-radius: 5px; 12.121 } 12.122 12.123 @@ -801,7 +806,6 @@ 12.124 12.125 th { 12.126 text-align: left; 12.127 - border-bottom: 1px solid #000; 12.128 } 12.129 12.130 tr:hover td { 12.131 @@ -907,24 +911,24 @@ 12.132 12.133 .issues .issue { 12.134 xborder: 1px solid #ccc; 12.135 - background: -webkit-gradient(linear, left top, left bottom, 12.136 - color-stop(0%,#e7e7e7), color-stop(33%, #f7f7f7), color-stop(100%,#fff)); 12.137 overflow: hidden; 12.138 margin-bottom: 2ex; 12.139 border-radius: 8px; 12.140 } 12.141 12.142 -.issues .issue.interested { 12.143 - background: -webkit-gradient(linear, left top, left bottom, 12.144 - color-stop(0%,#eec), color-stop(25%, #ffe), color-stop(100%,#fff)); 12.145 -} 12.146 - 12.147 .issues .issue .issue_info { 12.148 xfloat: left; 12.149 xwidth: 25%; 12.150 padding: 1ex; 12.151 line-height: 140%; 12.152 xoverflow: hidden; 12.153 + background: -webkit-gradient(linear, left top, left bottom, 12.154 + color-stop(0%,#e7e7e7), color-stop(33%, #f7f7f7), color-stop(66%,#fff)); 12.155 +} 12.156 + 12.157 +.issues .issue.interested .issue_info{ 12.158 + background: -webkit-gradient(linear, left top, left bottom, 12.159 + color-stop(0%,#FFEECC), color-stop(33%, #FFF7E6), color-stop(66%,#fff)); 12.160 } 12.161 12.162 .issues .issue .issue_info .issue_id { 12.163 @@ -939,11 +943,36 @@ 12.164 font-weight: bold; 12.165 } 12.166 12.167 +.more_initiatives_link { 12.168 + margin-left: 158px; 12.169 + font-style: italic; 12.170 +} 12.171 + 12.172 .issues tr tr { 12.173 border: none; 12.174 background: none; 12.175 } 12.176 12.177 +.initiative_link { 12.178 + padding: 0.5ex 0.5em; 12.179 +} 12.180 + 12.181 +.initiative_link.selected { 12.182 + font-weight: bold; 12.183 +} 12.184 + 12.185 +.initiative_link.supported { 12.186 + background-color: #C9FFD1; 12.187 + border-radius: 5px; 12.188 + background: -webkit-radial-gradient(center, ellipse cover, #c9ffd1 0%,#fff 100%); /* Chrome10+,Safari5.1+ */ 12.189 +} 12.190 + 12.191 +.initiative_link.potentially_supported { 12.192 + background-color: #FFEECC; 12.193 + border-radius: 5px; 12.194 + background: -webkit-radial-gradient(center, ellipse cover, #ffeecc 0%,#fff 100%); /* Chrome10+,Safari5.1+ */ 12.195 +} 12.196 + 12.197 .lang_chooser { 12.198 float: right; 12.199 margin-right: 0.5em; 12.200 @@ -1211,6 +1240,7 @@ 12.201 } 12.202 12.203 .heading { 12.204 + display: block; 12.205 font-size: 120%; 12.206 font-weight: bold; 12.207 margin-top: 2ex;