liquid_feedback_frontend

changeset 619:7dc5ab12bfe3

Optical enhancements :)
author bsw
date Mon Jun 25 14:40:34 2012 +0200 (2012-06-25)
parents 56147a5153f6
children 496bed1b59b8
files app/main/area/_head.lua app/main/area/_list.lua app/main/area/_list_entry.lua app/main/area/show_tab.lua app/main/event/_list.lua app/main/index/_index_member.lua app/main/index/_member_home.lua app/main/index/initiator_invites.lua app/main/member/_event_list.lua static/style.css
line diff
     1.1 --- a/app/main/area/_head.lua	Mon Jun 25 01:17:27 2012 +0200
     1.2 +++ b/app/main/area/_head.lua	Mon Jun 25 14:40:34 2012 +0200
     1.3 @@ -4,7 +4,9 @@
     1.4  
     1.5  area:load_delegation_info_once_for_member_id(app.session.member_id)
     1.6  
     1.7 -execute.view{ module = "unit", view = "_head", params = { unit = area.unit } }
     1.8 +if not param.get("hide_unit", atom.boolean) then
     1.9 +  execute.view{ module = "unit", view = "_head", params = { unit = area.unit } }
    1.10 +end
    1.11  
    1.12  ui.container{ attr = { class = "area_head" }, content = function()
    1.13  
     2.1 --- a/app/main/area/_list.lua	Mon Jun 25 01:17:27 2012 +0200
     2.2 +++ b/app/main/area/_list.lua	Mon Jun 25 14:40:34 2012 +0200
     2.3 @@ -29,13 +29,9 @@
     2.4    areas_selector:add_field("0", "issues_to_vote_count")
     2.5  end
     2.6  
     2.7 -slot.put("<br />")
     2.8 +ui.container{ attr = { class = "area_list" }, content = function()
     2.9 +  for i, area in ipairs(areas_selector:exec()) do
    2.10 +    execute.view { module = "area", view = "_list_entry", params = { area = area } }
    2.11 +  end 
    2.12 +end }
    2.13  
    2.14 -for i, area in ipairs(areas_selector:exec()) do
    2.15 -  
    2.16 -  ui.container{ attr = { class = "area_list" }, content = function()
    2.17 -    execute.view { module = "area", view = "_list_entry", params = { area = area } }
    2.18 -  end }
    2.19 -  
    2.20 -end
    2.21 -
     3.1 --- a/app/main/area/_list_entry.lua	Mon Jun 25 01:17:27 2012 +0200
     3.2 +++ b/app/main/area/_list_entry.lua	Mon Jun 25 14:40:34 2012 +0200
     3.3 @@ -1,17 +1,12 @@
     3.4  local area = param.get("area", "table")
     3.5  
     3.6  ui.container{ attr = { class = "area" }, content = function()
     3.7 -  execute.view{ module = "delegation", view = "_info", params = { area = area } }
     3.8  
     3.9 -  ui.container{ attr = { class = "title" }, content = function()
    3.10 -    -- area name
    3.11 -    ui.link{
    3.12 -      module = "area", view = "show", id = area.id,
    3.13 -      attr = { class = "area_name" }, content = area.name 
    3.14 -    }
    3.15 -  end }
    3.16 +  execute.view{ module = "area", view = "_head", params = { area = area, hide_unit = true, show_content = true } }
    3.17    
    3.18    ui.container{ attr = { class = "content" }, content = function()
    3.19 +    ui.tag{ content = _"Issues:" }
    3.20 +    slot.put(" ")
    3.21      ui.link{ 
    3.22        module = "area", view = "show", id = area.id, params = { tab = "open", filter = "new" },
    3.23        text = _("#{count} new", { count = area.issues_new_count }) 
     4.1 --- a/app/main/area/show_tab.lua	Mon Jun 25 01:17:27 2012 +0200
     4.2 +++ b/app/main/area/show_tab.lua	Mon Jun 25 14:40:34 2012 +0200
     4.3 @@ -10,6 +10,8 @@
     4.4  
     4.5  local members_selector = area:get_reference_selector("members"):add_where("member.active")
     4.6  local delegations_selector = area:get_reference_selector("delegations")
     4.7 +  :join("member", "truster", "truster.id = delegation.truster_id AND truster.active")
     4.8 +  :join("member", "trustee", "trustee.id = delegation.trustee_id AND trustee.active")
     4.9  
    4.10  local tabs = {
    4.11    module = "area",
     5.1 --- a/app/main/event/_list.lua	Mon Jun 25 01:17:27 2012 +0200
     5.2 +++ b/app/main/event/_list.lua	Mon Jun 25 14:40:34 2012 +0200
     5.3 @@ -45,23 +45,6 @@
     5.4      last_event_id = event.id
     5.5      event.issue:load_everything_for_member_id(app.session.member_id)
     5.6  
     5.7 -    if event.occurrence.date ~= last_event_date then
     5.8 -      local days_ago_text
     5.9 -      if event.time_ago == 0 then
    5.10 -        days_ago_text = _"Today"
    5.11 -      elseif event.time_ago == 1 then
    5.12 -        days_ago_text = _"Yesterday"
    5.13 -      else
    5.14 -        days_ago_text = _("#{count} days ago", { count = event.time_ago })
    5.15 -      end
    5.16 -      ui.container{ attr = { class = "date" }, content = function()
    5.17 -        ui.tag{ content = format.date(event.occurrence.date) }
    5.18 -        slot.put(" &middot; ")
    5.19 -        ui.tag{ content = days_ago_text }
    5.20 -      end }
    5.21 -      
    5.22 -      last_event_date = event.occurrence.date
    5.23 -    end
    5.24      local class = "issue"
    5.25      if event.is_interested then
    5.26        class = class .. " interested"
    5.27 @@ -69,57 +52,70 @@
    5.28        class = class .. " interested_by_delegation"
    5.29      end
    5.30  
    5.31 -            ui.container{ attr = { class = "issue_policy_info" }, content = function()
    5.32 -          if (app.session.member_id or config.public_access == "pseudonym") and event.member_id then
    5.33 -            if app.session.member_id then
    5.34 -              ui.link{
    5.35 -                content = function()
    5.36 -                  execute.view{
    5.37 -                    module = "member_image",
    5.38 -                    view = "_show",
    5.39 -                    params = {
    5.40 -                      member = event.member,
    5.41 -                      image_type = "avatar",
    5.42 -                      show_dummy = true,
    5.43 -                      class = "micro_avatar",
    5.44 -                      popup_text = text
    5.45 -                    }
    5.46 -                  }
    5.47 -                end,
    5.48 -                module = "member", view = "show", id = event.member_id
    5.49 +    ui.container{ attr = { class = "issue_policy_info" }, content = function()
    5.50 +      if (app.session.member_id or config.public_access == "pseudonym") and event.member_id then
    5.51 +        if app.session.member_id then
    5.52 +          ui.link{
    5.53 +            content = function()
    5.54 +              execute.view{
    5.55 +                module = "member_image",
    5.56 +                view = "_show",
    5.57 +                params = {
    5.58 +                  member = event.member,
    5.59 +                  image_type = "avatar",
    5.60 +                  show_dummy = true,
    5.61 +                  class = "micro_avatar",
    5.62 +                  popup_text = text
    5.63 +                }
    5.64                }
    5.65 -              slot.put(" ")
    5.66 -            end
    5.67 -            ui.link{
    5.68 -              text = event.member.name,
    5.69 -              module = "member", view = "show", id = event.member_id
    5.70 -            }
    5.71 -            slot.put(" &middot; ") 
    5.72 -          end
    5.73 -          local event_name = event.event_name
    5.74 -          local event_image
    5.75 -          if event.event == "issue_state_changed" then
    5.76 -            if event.state == "discussion" then
    5.77 -              event_name = _"Discussion started"
    5.78 -              event_image = "comments.png"
    5.79 -            elseif event.state == "verification" then
    5.80 -              event_name = _"Verification started"
    5.81 -              event_image = "lock.png"
    5.82 -            elseif event.state == "voting" then
    5.83 -              event_name = _"Voting started"
    5.84 -              event_image = "email_open.png"
    5.85 -            else
    5.86 -              event_name = event.state_name
    5.87 -            end
    5.88 -            if event_image then
    5.89 -              ui.image{ static = "icons/16/" .. event_image }
    5.90 -              slot.put(" ")
    5.91 -            end
    5.92 -          end
    5.93 -          ui.tag{ attr = { class = "event_name" }, content = event_name }
    5.94 -          slot.put(" &middot; ") 
    5.95 -          ui.tag{ attr = { class = "time" }, content = format.time(event.occurrence) }
    5.96 -        end }
    5.97 +            end,
    5.98 +            module = "member", view = "show", id = event.member_id
    5.99 +          }
   5.100 +          slot.put(" ")
   5.101 +        end
   5.102 +        ui.link{
   5.103 +          text = event.member.name,
   5.104 +          module = "member", view = "show", id = event.member_id
   5.105 +        }
   5.106 +        slot.put(" &middot; ") 
   5.107 +      end
   5.108 +      local event_name = event.event_name
   5.109 +      local event_image
   5.110 +      if event.event == "issue_state_changed" then
   5.111 +        if event.state == "discussion" then
   5.112 +          event_name = _"Discussion started"
   5.113 +          event_image = "comments.png"
   5.114 +        elseif event.state == "verification" then
   5.115 +          event_name = _"Verification started"
   5.116 +          event_image = "lock.png"
   5.117 +        elseif event.state == "voting" then
   5.118 +          event_name = _"Voting started"
   5.119 +          event_image = "email_open.png"
   5.120 +        else
   5.121 +          event_name = event.state_name
   5.122 +        end
   5.123 +        if event_image then
   5.124 +          ui.image{ static = "icons/16/" .. event_image }
   5.125 +          slot.put(" ")
   5.126 +        end
   5.127 +      end
   5.128 +      local days_ago_text
   5.129 +      if event.time_ago == 0 then
   5.130 +        days_ago_text = _("Today at #{time}", { time = format.time(event.occurrence) })
   5.131 +      elseif event.time_ago == 1 then
   5.132 +        days_ago_text = _("Yesterday at #{time}", { time = format.time(event.occurrence) })
   5.133 +      else
   5.134 +        days_ago_text = _("#{date} at #{time}", { date = format.date(event.occurrence.date), time = format.time(event.occurrence) })
   5.135 +      end
   5.136 +      ui.tag{ attr = { class = "event_name" }, content = event_name }
   5.137 +      slot.put(" &middot; ") 
   5.138 +      ui.tag{ content = days_ago_text }
   5.139 +      if event.time_ago > 1 then
   5.140 +        slot.put(" (")
   5.141 +        ui.tag{ content = _("#{count} days ago", { count = event.time_ago }) }
   5.142 +        slot.put(")")
   5.143 +      end
   5.144 +    end }
   5.145  
   5.146      ui.container{ attr = { class = class }, content = function()
   5.147  
     6.1 --- a/app/main/index/_index_member.lua	Mon Jun 25 01:17:27 2012 +0200
     6.2 +++ b/app/main/index/_index_member.lua	Mon Jun 25 14:40:34 2012 +0200
     6.3 @@ -60,5 +60,10 @@
     6.4    params = { members_selector = Member:new_selector():add_where("active") }
     6.5  }
     6.6  
     6.7 +if not param.get("tab") then
     6.8 +  execute.view{
     6.9 +    module = "index", view = "_notifications"
    6.10 +  }
    6.11 +end
    6.12  
    6.13  ui.tabs(tabs)
     7.1 --- a/app/main/index/_member_home.lua	Mon Jun 25 01:17:27 2012 +0200
     7.2 +++ b/app/main/index/_member_home.lua	Mon Jun 25 14:40:34 2012 +0200
     7.3 @@ -3,10 +3,7 @@
     7.4  local filter_unit = param.get_all_cgi()["filter_unit"] or "my_areas"
     7.5  
     7.6  if not for_member then
     7.7 -  execute.view{
     7.8 -    module = "index", view = "_notifications"
     7.9 -  }
    7.10 -    
    7.11 +
    7.12    ui.container{ attr = { class = "ui_filter" }, content = function()
    7.13      ui.container{ attr = { class = "ui_filter_head" }, content = function()
    7.14  
    7.15 @@ -35,8 +32,6 @@
    7.16    end }
    7.17  end
    7.18  
    7.19 -  slot.put("<br />")
    7.20 -
    7.21  if not for_member then
    7.22    if filter_unit == "global" then
    7.23      execute.view{ module = "unit", view = "_list" }
    7.24 @@ -76,15 +71,40 @@
    7.25      
    7.26      local area_count = areas_selector:count()
    7.27      
    7.28 -    ui.container{ attr = { class = "area_list" }, content = function()
    7.29 -      ui.container{ attr = { class = "unit_head" }, content = function()
    7.30 -        ui.link{
    7.31 -          text = unit.name,
    7.32 -          module = "unit", view = "show", id = unit.id
    7.33 -        }
    7.34 +    local max_area_count = Area:new_selector()
    7.35 +      :add_where{ "area.unit_id = ?", unit.id }
    7.36 +      :add_where{ "area.active" }
    7.37 +      :count()
    7.38 +    local more_area_count = max_area_count - area_count
    7.39 +    local delegated_count = Area:new_selector()
    7.40 +      :add_where{ "area.unit_id = ?", unit.id }
    7.41 +      :add_where{ "area.active" }
    7.42 +      :left_join("membership", nil, { "membership.area_id = area.id AND membership.member_id = ?", member.id } )
    7.43 +      :add_where{ "membership.member_id ISNULL" }
    7.44 +      :join("delegation", nil, { "delegation.area_id = area.id AND delegation.truster_id = ?", member.id } )
    7.45 +      :add_where{ "delegation.trustee_id NOTNULL" }
    7.46 +      :count()
    7.47  
    7.48 -        execute.view{ module = "delegation", view = "_info", params = { unit = unit } }
    7.49 -      end }
    7.50 +    local more_area_text
    7.51 +    if area_count == 0 and more_area_count == 1 then
    7.52 +      more_area_text = _("You are not participating in the only area of the unit")
    7.53 +    elseif area_count == 0 and more_area_count > 0 then
    7.54 +      more_area_text = _("You are not participating in any of the #{count} areas in this unit", { count = more_area_count })
    7.55 +    elseif area_count > 0 and more_area_count == 1 then
    7.56 +      more_area_text = _("One more area in this unit")
    7.57 +    elseif area_count > 0 and more_area_count > 0 then
    7.58 +      more_area_text = _("#{count} more areas in this unit", { count = more_area_count })
    7.59 +    end
    7.60 +    local delegated_text
    7.61 +    if delegated_count == 1 then
    7.62 +      delegated_text = _("One of them have an area delegation set", { count = delegated_count })
    7.63 +    elseif delegated_count > 0 then
    7.64 +      delegated_text = _("#{count} of them have an area delegation set", { count = delegated_count })
    7.65 +    end
    7.66 +
    7.67 +              ui.container{ attr = { class = "area_list" }, content = function()
    7.68 +
    7.69 +    execute.view{ module = "unit", view = "_head", params = { unit = unit, show_content = true } }
    7.70  
    7.71        if area_count > 0 then
    7.72          local areas = areas_selector:exec()
    7.73 @@ -95,57 +115,23 @@
    7.74              }
    7.75            }
    7.76          end
    7.77 -      elseif member:has_voting_right_for_unit_id(unit.id) then
    7.78 +      end
    7.79 +  
    7.80 +      if area_count == 0 and member:has_voting_right_for_unit_id(unit.id) or
    7.81 +         more_area_count > 0 then
    7.82 +        
    7.83          ui.container{ attr = { class = "area" }, content = function()
    7.84            ui.container{ attr = { class = "content" }, content = function()
    7.85 -            slot.put("<br />")
    7.86 -            if for_member then
    7.87 -              ui.tag{ content = _"This member has voting privileges for this unit, but you ist not member of any of its areas." }
    7.88 -            else
    7.89 -              ui.tag{ content = _"You have voting privileges for this unit, but you are not member of any of its areas." }
    7.90 +            if more_area_text then
    7.91 +              ui.link{ module = "unit", view = "show", id = unit.id, text = more_area_text }
    7.92 +            end
    7.93 +            if delegated_text then
    7.94 +              slot.put(" &middot; ")
    7.95 +              ui.tag{ content = delegated_text }
    7.96              end
    7.97            end }
    7.98          end }
    7.99        end
   7.100 -      local max_area_count = Area:new_selector()
   7.101 -        :add_where{ "area.unit_id = ?", unit.id }
   7.102 -        :add_where{ "area.active" }
   7.103 -        :count()
   7.104 -      local more_area_count = max_area_count - area_count
   7.105 -      local delegated_count = Area:new_selector()
   7.106 -        :add_where{ "area.unit_id = ?", unit.id }
   7.107 -        :add_where{ "area.active" }
   7.108 -        :left_join("membership", nil, { "membership.area_id = area.id AND membership.member_id = ?", member.id } )
   7.109 -        :add_where{ "membership.member_id ISNULL" }
   7.110 -        :join("delegation", nil, { "delegation.area_id = area.id AND delegation.truster_id = ?", member.id } )
   7.111 -        :add_where{ "delegation.trustee_id NOTNULL" }
   7.112 -        :count()
   7.113 -      if more_area_count > 0 then
   7.114 -        ui.container{ attr = { class = "area" }, content = function()
   7.115 -          ui.container{ attr = { class = "content" }, content = function()
   7.116 -            slot.put("<br />")
   7.117 -            local text
   7.118 -            if more_area_count == 1 then
   7.119 -              text = _("One more area in this unit")
   7.120 -            else
   7.121 -              text = _("#{count} more areas in this unit", { count = more_area_count })
   7.122 -            end
   7.123 -            ui.link{ module = "unit", view = "show", id = unit.id, text = text }
   7.124 -            if delegated_count > 0 then
   7.125 -              slot.put(" &middot; ")
   7.126 -              local text
   7.127 -              if delegated_count == 1 then
   7.128 -                text = _("One of them have an area delegation set", { count = delegated_count })
   7.129 -              else
   7.130 -                text = _("#{count} of them have an area delegation set", { count = delegated_count })
   7.131 -              end
   7.132 -              ui.tag{ content = text }
   7.133 -            end
   7.134 -          end }
   7.135 -        end }
   7.136 -      end
   7.137 -      slot.put("<br />")
   7.138 -      slot.put("<br />")
   7.139      end }
   7.140    end
   7.141  end
     8.1 --- a/app/main/index/initiator_invites.lua	Mon Jun 25 01:17:27 2012 +0200
     8.2 +++ b/app/main/index/initiator_invites.lua	Mon Jun 25 14:40:34 2012 +0200
     8.3 @@ -1,13 +1,8 @@
     8.4 -
     8.5 +local initiatives_selector = Initiator:selector_for_invites(app.session.member_id)
     8.6  
     8.7 -local initiatives_selector = Initiator:selector_for_invites(app.session.member_id)
     8.8 +ui.title(_"Initiatives that invited you to become initiator:")
     8.9  
    8.10  if initiatives_selector:count() > 0 then
    8.11 -  ui.container{
    8.12 -    attr = { style = "font-weight: bold;" },
    8.13 -    content = _"Initiatives that invited you to become initiator:"
    8.14 -  }
    8.15 -
    8.16    execute.view{
    8.17      module = "initiative",
    8.18      view = "_list",
     9.1 --- a/app/main/member/_event_list.lua	Mon Jun 25 01:17:27 2012 +0200
     9.2 +++ b/app/main/member/_event_list.lua	Mon Jun 25 14:40:34 2012 +0200
     9.3 @@ -1,25 +1,25 @@
     9.4  local member = param.get("member", "table")
     9.5  local events = param.get_all_cgi()["events"] or "personal"
     9.6  
     9.7 -ui.container{ attr = { class = "ui_filter_head" }, content = function()
     9.8 +ui.container{ attr = { class = "ui_filter" }, content = function()
     9.9 +  ui.container{ attr = { class = "ui_filter_head" }, content = function()
    9.10  
    9.11 -  ui.link{
    9.12 -    attr = { class = events == "personal" and "ui_tabs_link active" or nil },
    9.13 -    text = _"My areas and issues",
    9.14 -    module = "index", view = "index", params = { tab = "timeline", events = "personal" }
    9.15 -  }
    9.16 -  
    9.17 -  slot.put(" ")
    9.18 +    ui.link{
    9.19 +      attr = { class = events == "personal" and "ui_tabs_link active" or nil },
    9.20 +      text = _"My areas and issues",
    9.21 +      module = "index", view = "index", params = { tab = "timeline", events = "personal" }
    9.22 +    }
    9.23 +    
    9.24 +    slot.put(" ")
    9.25  
    9.26 -  ui.link{
    9.27 -    attr = { class = events == "global" and "active" or nil },
    9.28 -    text = _"Everything",
    9.29 -    module = "index", view = "index", params = { tab = "timeline", events = "global" }
    9.30 -  }
    9.31 +    ui.link{
    9.32 +      attr = { class = events == "global" and "active" or nil },
    9.33 +      text = _"Everything",
    9.34 +      module = "index", view = "index", params = { tab = "timeline", events = "global" }
    9.35 +    }
    9.36 +  end }
    9.37  end }
    9.38  
    9.39 -slot.put("<br />")
    9.40 -
    9.41  if events == "personal" then
    9.42    execute.view{
    9.43      module = "event", view = "_list"
    10.1 --- a/static/style.css	Mon Jun 25 01:17:27 2012 +0200
    10.2 +++ b/static/style.css	Mon Jun 25 14:40:34 2012 +0200
    10.3 @@ -344,11 +344,6 @@
    10.4    margin-top: 1ex;
    10.5  }
    10.6  
    10.7 -.page_head .actions {
    10.8 -  margin-top: 0.5ex;
    10.9 -  margin-bottom: 1ex;
   10.10 -}
   10.11 -
   10.12  .slot_head {
   10.13    background-color: #fff;
   10.14    margin: 0px 10px 2ex 10px;
   10.15 @@ -364,12 +359,24 @@
   10.16    padding: 8px 10px 2px 10px;
   10.17  }
   10.18  
   10.19 +.page_head .actions,
   10.20  .page_head .unit_head .content,
   10.21  .page_head .area_head .content,
   10.22  .issue .content,
   10.23  .initiative_head .content,
   10.24 +.area_list .unit_head .content,
   10.25  .area_list .area .content {
   10.26 -  padding: 2px 10px 8px 10px;
   10.27 +  padding: 10px 10px 0 10px;
   10.28 +}
   10.29 +
   10.30 +.page_head .actions:last-child,
   10.31 +.page_head .unit_head .content:last-child,
   10.32 +.page_head .area_head .content:last-child,
   10.33 +.issue .content:last-child,
   10.34 +.initiative_head .content:last-child,
   10.35 +.area_list .unit_head .content:last-child,
   10.36 +.area_list .area .content:last-child {
   10.37 +  padding: 10px 10px 10px 10px;
   10.38  }
   10.39  
   10.40  .page_head .initiative_list,
   10.41 @@ -386,6 +393,7 @@
   10.42  .page_head .title,
   10.43  .issue .title,
   10.44  .initiative_head .title,
   10.45 +.area_list .unit_head .unit_name,
   10.46  .area_list .area_name {
   10.47    font-weight: bold;
   10.48    font-size: 120%;
   10.49 @@ -407,13 +415,12 @@
   10.50  .issues .issue .content.actions a,
   10.51  .area_list .area .content,
   10.52  .area_list .area .content a {
   10.53 -  color: #777;
   10.54 +  color: #000;
   10.55  }
   10.56  
   10.57 -.page_head .unit_head .title,
   10.58 -.page_head .area_head .title,
   10.59 -.area_list .area .title,
   10.60 -.issue .title {
   10.61 +x.page_head .unit_head .title,
   10.62 +x.page_head .area_head .title,
   10.63 +x.issue .title {
   10.64    background-color: #eee;
   10.65    background-image: linear-gradient(top, #eee 0%, #f7f7f7 10%, #fff 100%);
   10.66    background-image: -o-linear-gradient(top, #eee 0%, #f7f7f7 10%, #fff 100%);
   10.67 @@ -422,6 +429,33 @@
   10.68    background-image: -ms-linear-gradient(top, #eee 0%, #f7f7f7 10%, #fff 100%);
   10.69  }
   10.70  
   10.71 +.unit_head {
   10.72 +  background-color: #cdf;
   10.73 +  background-image: -webkit-linear-gradient(top, #abf 0%, #cdf 20%, #f0f7ff 100%);
   10.74 +}
   10.75 +
   10.76 +.area_head {
   10.77 +  background-color: #def;
   10.78 +  background-image: -webkit-linear-gradient(top, #bef 0%, #def 20%, #f7faff 100%);
   10.79 +}
   10.80 +
   10.81 +.issue {
   10.82 +  background-color: #f0f7ff;
   10.83 +  background-image: -webkit-linear-gradient(top, #f0faff 0%, #f0f7ff 20%, #fff 100%);
   10.84 +}
   10.85 +
   10.86 +.issue .initiative_list {
   10.87 +  background: #fff;
   10.88 +}
   10.89 +
   10.90 +x {
   10.91 +  background-image: linear-gradient(top, #eee 0%, #f7f7f7 10%, #fff 100%);
   10.92 +  background-image: -o-linear-gradient(top, #eee 0%, #f7f7f7 10%, #fff 100%);
   10.93 +  background-image: -moz-linear-gradient(top, #eee 0%, #f7f7f7 10%, #fff 100%);
   10.94 +  background-image: -webkit-linear-gradient(top, #dde 0%, #d7d7e7 10%, #fff 100%);
   10.95 +  background-image: -ms-linear-gradient(top, #eee 0%, #f7f7f7 10%, #fff 100%);
   10.96 +}
   10.97 +
   10.98  .page_head .area_head .title,
   10.99  .page_head .issue .title {
  10.100    border-top: 1px solid #ddd;
  10.101 @@ -491,23 +525,25 @@
  10.102   * ui.tab
  10.103   */
  10.104  .ui_tabs {
  10.105 -  margin: 10px 0px;
  10.106 +  margin: 20px 0px;
  10.107  }
  10.108  
  10.109  .ui_tabs_links a {
  10.110 -  padding: 0.75ex 0.6em;
  10.111 +  padding: 1ex 1em;
  10.112    line-height: 225%;
  10.113    background-color: #f7f7f7;
  10.114 +  background-color: #444;
  10.115 +  background-image: -webkit-linear-gradient(top, #000 0%, #444 70%, #777 90%, #888 100%);
  10.116 +  color: #fff;
  10.117    white-space: nowrap;
  10.118    border-radius: 5px;
  10.119 -  margin-right: 5px;
  10.120 +  margin-right: 2px;
  10.121    font-weight: bold;
  10.122  }
  10.123  
  10.124  .ui_tabs_links a:hover,
  10.125  .ui_tabs_links a.selected {
  10.126 -  background-color: #444;
  10.127 -  color: #fff;
  10.128 +  box-shadow: 0px 0px 3px 3px #fc0;
  10.129    text-decoration: none;
  10.130  }
  10.131  
  10.132 @@ -518,29 +554,29 @@
  10.133  
  10.134  .ui_filter {
  10.135    overflow: auto;
  10.136 +  margin: 2ex 0;
  10.137  }
  10.138  
  10.139  .ui_filter_head {
  10.140    color: #777;
  10.141 -  margin-top: 1ex;
  10.142    font-size: 90%;
  10.143 -  font-weight: bold;
  10.144    float: left;
  10.145    line-height: 200%;
  10.146    margin-right: 2em;
  10.147  }
  10.148  
  10.149 -.ui_filter_head a {
  10.150 -  color: #777;
  10.151 -  padding: 0.5ex;
  10.152 +.ui_filter a {
  10.153 +  font-weight: bold;
  10.154 +  margin-right: 0.5em;
  10.155  }
  10.156  
  10.157 -.ui_filter_head a:hover,
  10.158 +
  10.159  .ui_filter_head a.active {
  10.160 +  text-decoration: none;
  10.161 +  background-color: #555;
  10.162    color: #fff;
  10.163 -  background-color: #777;
  10.164 -  padding: 0.5ex;
  10.165 -  border-radius: 5px;
  10.166 +  padding: 0.5ex 0.5em;
  10.167 +  border-radius: 4px;
  10.168  }
  10.169  
  10.170  /*************************************************************************
  10.171 @@ -591,7 +627,7 @@
  10.172    margin-top: 1ex;
  10.173    background-color: #fdd;
  10.174    padding: 0.5ex;
  10.175 -  border: 1px solid #daa;
  10.176 +  border: 1px solid #fbb;
  10.177  }
  10.178  
  10.179  .notifications ul {
  10.180 @@ -780,17 +816,27 @@
  10.181  /*************************************************************************
  10.182   * Area list
  10.183   */
  10.184 -
  10.185 -.area_list .unit_head {
  10.186 -  font-size: 120%;
  10.187 -  font-weight: bold;
  10.188 -  margin-bottom: 1ex;
  10.189 +.area_list {
  10.190 +  border: 1px solid #abf;
  10.191 +  border-radius: 8px;
  10.192 +  margin-top: 2ex;
  10.193  }
  10.194  
  10.195  .area_list .area {
  10.196 -  margin-bottom: 1ex;
  10.197 +  border-bottom: 1px solid #cdf;
  10.198 +}
  10.199 +
  10.200 +.area_list .unit_head {
  10.201 +  border-radius: 8px 8px 0 0;
  10.202  }
  10.203  
  10.204 +.area_list .area:last-child {
  10.205 +  border-radius: 0 0 8px 8px;
  10.206 +}
  10.207 +
  10.208 +.area_list .area:first-child {
  10.209 +  border-radius: 8px 8px 0 0;
  10.210 +}
  10.211  
  10.212  
  10.213  /*************************************************************************
  10.214 @@ -1353,14 +1399,12 @@
  10.215  
  10.216  /* shadows */
  10.217  
  10.218 -.area_list .area,
  10.219  .initiative_head,
  10.220  .box,
  10.221  div.notifications {
  10.222    border-radius: 8px;
  10.223  }
  10.224  
  10.225 -.area_list .area,
  10.226  .initiative_head,
  10.227  .box {
  10.228    border: 1px solid #aaa;
  10.229 @@ -1371,7 +1415,7 @@
  10.230  }
  10.231  
  10.232  .slot_head,
  10.233 -.area_list .area,
  10.234 +.area_list,
  10.235  .initiative_head,
  10.236  .issues .issue,
  10.237  .ui_tabs_links a,
  10.238 @@ -1379,7 +1423,6 @@
  10.239  .help,
  10.240  .use_terms,
  10.241  .motd,
  10.242 -.ui_filter a.active,
  10.243  .vote_info .content,
  10.244  .box,
  10.245  div.notifications {

Impressum / About Us