liquid_feedback_frontend

changeset 216:4f6e6b213fb8

Cleanup on second generation frontend code and stylesheet
author bsw
date Mon Mar 07 12:15:22 2011 +0100 (2011-03-07)
parents 1dab81353eb1
children 73dbc9e2bfd4
files app/main/lf2/_avatars.lua app/main/lf2/_initiative.lua app/main/lf2/_initiatives.lua app/main/lf2/_interested.lua app/main/lf2/_issues.lua app/main/lf2/_issues_issue.lua app/main/lf2/_sidebar_issue.lua app/main/lf2/initiative.lua app/main/lf2/interest.lua app/main/lf2/issue.lua env/ui/avatar.lua model/issue.lua static/lf2.css
line diff
     1.1 --- a/app/main/lf2/_avatars.lua	Sat Mar 05 15:34:17 2011 +0100
     1.2 +++ b/app/main/lf2/_avatars.lua	Mon Mar 07 12:15:22 2011 +0100
     1.3 @@ -1,8 +1,7 @@
     1.4  local members = param.get("members", "table")
     1.5  local hidefirst = param.get("hidefirst", atom.boolean)
     1.6  local size = param.get("size") or "normal"
     1.7 -
     1.8 -local first_participation = true
     1.9 +local issue_id = param.get("issue_id", atom.integer)
    1.10  
    1.11  ui.container{ attr = { class = "avatars " .. size }, content = function()
    1.12    for i, member in ipairs(members) do
    1.13 @@ -28,14 +27,13 @@
    1.14      end
    1.15      if not hidefirst or i > 1 then
    1.16        local class = "avatar"
    1.17 -      if first_participation and member.participation then
    1.18 +      if member.participation then
    1.19          class = class .. " participation"
    1.20 -        first_participation = false
    1.21        end
    1.22        if member.overridden then
    1.23          class = class .. " overridden"
    1.24        end
    1.25 -      ui.container{ attr = { class = class, title = member.name }, content = function()
    1.26 +      local args = { attr = { class = class, title = member.name }, content = function()
    1.27          ui.avatar(member, size)
    1.28          --ui.image{ module = "member_image", view = "show", id = member.id, params = { image_type = "avatar" } }
    1.29          if size == "normal" then
    1.30 @@ -45,6 +43,14 @@
    1.31            ui.container{ attr = { class = "weight" }, content = member.weight }
    1.32          end
    1.33        end }
    1.34 +      if issue_id then
    1.35 +        args.module = "lf2"
    1.36 +        args.view = "interest"
    1.37 +        args.params = { issue_id = issue_id, member_id = member.id }
    1.38 +        ui.link(args)
    1.39 +      else
    1.40 +        ui.container(args)
    1.41 +      end
    1.42      end
    1.43    end
    1.44  end }
     2.1 --- a/app/main/lf2/_initiative.lua	Sat Mar 05 15:34:17 2011 +0100
     2.2 +++ b/app/main/lf2/_initiative.lua	Mon Mar 07 12:15:22 2011 +0100
     2.3 @@ -61,8 +61,10 @@
     2.4        slot.put(" ", _"and", " ")
     2.5      end
     2.6      ui.link{
     2.7 -      module = "lf2", view = "initiative", id = initiative.id,
     2.8 -      params = { member_id = member.id }, content = function()
     2.9 +      module = "lf2", view = "interest", params = {
    2.10 +        issue_id = initiative.issue_id,
    2.11 +        member_id = member.id
    2.12 +      }, content = function()
    2.13          ui.tag{ content = member.name }
    2.14        end
    2.15      }
     3.1 --- a/app/main/lf2/_initiatives.lua	Sat Mar 05 15:34:17 2011 +0100
     3.2 +++ b/app/main/lf2/_initiatives.lua	Mon Mar 07 12:15:22 2011 +0100
     3.3 @@ -2,12 +2,10 @@
     3.4  
     3.5  initiatives:load("initiating_members", nil, "initiating_members")
     3.6  
     3.7 -ui.box{ content = function()
     3.8 -  for i, initiative in ipairs(initiatives) do
     3.9 +for i, initiative in ipairs(initiatives) do
    3.10  
    3.11 -    ui.box_row{ class = "initiative", content = function() ui.box_col { content = function()
    3.12 -      execute.view{ module = "lf2", view = "_initiative", params = { initiative = initiative } }
    3.13 -    end } end }
    3.14 +  ui.box_row{ class = "initiative", content = function() ui.box_col { content = function()
    3.15 +    execute.view{ module = "lf2", view = "_initiative", params = { initiative = initiative } }
    3.16 +  end } end }
    3.17  
    3.18 -  end
    3.19 -end }
    3.20 \ No newline at end of file
    3.21 +end
    3.22 \ No newline at end of file
     4.1 --- a/app/main/lf2/_interested.lua	Sat Mar 05 15:34:17 2011 +0100
     4.2 +++ b/app/main/lf2/_interested.lua	Mon Mar 07 12:15:22 2011 +0100
     4.3 @@ -1,4 +1,5 @@
     4.4  local interested_members = param.get("interested_members", "table")
     4.5 +local issue_id = param.get("issue_id", atom.integer)
     4.6  ui.box{ row_count = 2, content = function()
     4.7    ui.box_row{ class = "head interested", content = function()
     4.8      ui.box_col{ class = "head left", content = _"Members, interested in this issue" }
     4.9 @@ -6,7 +7,7 @@
    4.10    end }
    4.11    ui.box_row{ class = "interested", content = function()
    4.12      ui.box_col{ class = "", content = function()
    4.13 -      execute.view{ module = "lf2", view = "_avatars", params = { members = interested_members } }
    4.14 +      execute.view{ module = "lf2", view = "_avatars", params = { members = interested_members, issue_id = issue_id } }
    4.15      end }
    4.16    end }
    4.17  end }
     5.1 --- a/app/main/lf2/_issues.lua	Sat Mar 05 15:34:17 2011 +0100
     5.2 +++ b/app/main/lf2/_issues.lua	Mon Mar 07 12:15:22 2011 +0100
     5.3 @@ -63,7 +63,7 @@
     5.4  
     5.5      end }
     5.6  
     5.7 -    ui.box_row{ class = "head", content = function()
     5.8 +    ui.box_row{ class = "head2", content = function()
     5.9  
    5.10        ui.box_col{ class = "state_name left", content = function()
    5.11          ui.tag{ content = issue.state_name }
    5.12 @@ -74,13 +74,13 @@
    5.13      end }
    5.14      
    5.15      if #trustees > 1 then
    5.16 -      local class = "head2"
    5.17 -      if issue.closed or issue.fully_frozen then
    5.18 -        class = class .. " head2_last"
    5.19 +      local class = "head"
    5.20 +      if not issue.closed and not issue.fully_frozen then
    5.21 +        class = "head2"
    5.22        end
    5.23 -      ui.box_row{ class = class, content = function()
    5.24 +      ui.box_row{ class = "head2", content = function()
    5.25          ui.box_col{ class = "left", content = function()
    5.26 -          execute.view{ module = "lf2", view = "_avatars", params = { members = trustees, arrows = true, size = "small" } }
    5.27 +          execute.view{ module = "lf2", view = "_avatars", params = { members = trustees, arrows = true, size = "small", issue_id = issue.id } }
    5.28          end }
    5.29          if not issue.closed and not issue.fully_frozen then
    5.30            if trustees[1].scope_out == "issue" then
    5.31 @@ -99,7 +99,7 @@
    5.32      end
    5.33  
    5.34      if not issue.closed and not issue.fully_frozen then
    5.35 -      ui.box_row{ class = "head2 head2_last", content = function()
    5.36 +      ui.box_row{ class = "head", content = function()
    5.37          ui.box_col{ class = "interest left", content = function()
    5.38            if interest then
    5.39              ui.image{ static = "lf2/icon_star.png" }
     6.1 --- a/app/main/lf2/_issues_issue.lua	Sat Mar 05 15:34:17 2011 +0100
     6.2 +++ b/app/main/lf2/_issues_issue.lua	Mon Mar 07 12:15:22 2011 +0100
     6.3 @@ -65,7 +65,7 @@
     6.4    ui.box_row{ class = "delegation", content = function()
     6.5      if delegation then
     6.6        ui.box_col{ content = function() 
     6.7 -        execute.view{ module = "lf2", view = "_avatars", params = { members = { app.session.member, delegation.trustee }, arrows = true, hidefirst = true } }
     6.8 +        execute.view{ module = "lf2", view = "_avatars", params = { members = { app.session.member, delegation.trustee }, arrows = true, hidefirst = true, issue_id = issue.id } }
     6.9        end }
    6.10      else
    6.11      end
     7.1 --- a/app/main/lf2/_sidebar_issue.lua	Sat Mar 05 15:34:17 2011 +0100
     7.2 +++ b/app/main/lf2/_sidebar_issue.lua	Mon Mar 07 12:15:22 2011 +0100
     7.3 @@ -23,36 +23,40 @@
     7.4  
     7.5  ui.box{ class = "issue", content = function()
     7.6  
     7.7 -  ui.box_row{ class = "unit_name head2", content = function() ui.box_col{ content = function()
     7.8 +  ui.box_row{ class = "unit_name head2x", content = function() ui.box_col{ content = function()
     7.9      ui.link{ 
    7.10        module = "lf2", view = "index", id = 1,
    7.11        content = "DE / Berlin / Friedrichshain-Kreuzberg" 
    7.12      }
    7.13    end } end }
    7.14  
    7.15 -  ui.box_row{ class = "area_name head2", content = function() ui.box_col{ content = function()
    7.16 +  ui.box_row{ class = "area_name head2x", content = function() ui.box_col{ content = function()
    7.17      ui.link{
    7.18        module = "lf2", view = "area", id = issue.area_id,
    7.19        content = issue.area.name
    7.20      }
    7.21    end } end }
    7.22    
    7.23 -  ui.box_row{ class = "issue_id head2", content = function() ui.box_col{ class = "head", content = function()
    7.24 +  ui.box_row{ class = "issue_id subhead", content = function() ui.box_col{ class = "head", content = function()
    7.25      ui.link{
    7.26        module = "lf2", view = "issue", id = issue.id,
    7.27        content = _("Issue ##{id}", { id = issue.id })
    7.28      }
    7.29    end } end }
    7.30  
    7.31 -  ui.box_row{ class = "policy_name head2", content = function() ui.box_col{ content = function()
    7.32 +  ui.box_row{ class = "policy_name", content = function() ui.box_col{ content = function()
    7.33      ui.link{
    7.34        module = "lf2", view = "policy", id = issue.policy_id,
    7.35        content = issue.policy.name
    7.36      }
    7.37    end } end }
    7.38  
    7.39 -  ui.box_row{ class = "time_left head", content = function()
    7.40 -    ui.box_col{ content = issue.closed and _("Closed since #{date}", { date = format.date(issue.closed.date) }) or _("#{time_left} left", { time_left =  issue.state_time_left }) }
    7.41 +  ui.box_row{ class = "time_left", content = function()
    7.42 +    ui.box_col{ class = "left", content = function()
    7.43 +      ui.tag{ content = issue.state_name }
    7.44 +      slot.put(" · ")
    7.45 +      ui.tag{ content = issue.closed and _("since #{date}", { date = format.date(issue.closed.date) }) or _("#{time_left} left", { time_left =  issue.state_time_left }) }
    7.46 +    end }
    7.47    end }
    7.48    
    7.49    ui.box_row{ class = "interest hoverbutton_container", content = function() ui.box_col{ content = function()
    7.50 @@ -181,11 +185,11 @@
    7.51  
    7.52    if #trustees > 1 then
    7.53      ui.box_row{ class = "delegation", content = function() ui.box_col{ content = function()
    7.54 -      execute.view{ module = "lf2", view = "_avatars", params = { members = trustees, arrows = true, size = "small" } }
    7.55 +      execute.view{ module = "lf2", view = "_avatars", params = { members = trustees, arrows = true, size = "small", issue_id = issue.id } }
    7.56      end } end }
    7.57    end
    7.58  
    7.59 -  ui.box_row{ class = "subhead", content = function() ui.box_col{ class = "head", content = _"Initiatives in this issue" } end }
    7.60 +  ui.box_row{ class = "subhead", content = function() ui.box_col{ class = "head", content = _"Initiatives" } end }
    7.61    ui.box_row{ class = "initiatives last", content = function()
    7.62      ui.box_col{ class = "scrolled", content = function()
    7.63        execute.view{ module = "lf2", view = "_issue_initiatives", params = { initiatives = alternative_initiatives, current_initiative_id = initiative_id } }
     8.1 --- a/app/main/lf2/initiative.lua	Sat Mar 05 15:34:17 2011 +0100
     8.2 +++ b/app/main/lf2/initiative.lua	Mon Mar 07 12:15:22 2011 +0100
     8.3 @@ -99,14 +99,14 @@
     8.4      } }
     8.5  
     8.6      ui.box_row{ class = "subhead", content = function() ui.box_col{ class = "head", content = _"Current draft" } end }
     8.7 -    ui.box_row{ content = function() ui.box_col{ content = function()
     8.8 +    ui.box_row{ class = "member_content", content = function() ui.box_col{ content = function()
     8.9        execute.view{ module = "lf2", view = "_draft", params = { draft = draft } }
    8.10      end } end }
    8.11  
    8.12      if initiative.issue.fully_frozen and initiative.issue.closed then
    8.13        ui.box_row{ class = "subhead", content = function() ui.box_col{ class = "head", content = _"Voters" } end }
    8.14        ui.box_row{ content = function() ui.box_col{ content = function()
    8.15 -        execute.view{ module = "lf2", view = "_avatars", params = { members = voting_members } }
    8.16 +        execute.view{ module = "lf2", view = "_avatars", params = { members = voting_members, issue_id = initiative.issue_id } }
    8.17        end } end }
    8.18      end
    8.19  
    8.20 @@ -117,7 +117,7 @@
    8.21  
    8.22      ui.box_row{ class = "subhead", content = function() ui.box_col{ class = "head", content = _"Supporters" } end }
    8.23      ui.box_row{ content = function() ui.box_col{ content = function()
    8.24 -      execute.view{ module = "lf2", view = "_avatars", params = { members = supporting_members } }
    8.25 +      execute.view{ module = "lf2", view = "_avatars", params = { members = supporting_members, issue_id = initiative.issue_id } }
    8.26      end } end }
    8.27  
    8.28  end }
     9.1 --- a/app/main/lf2/interest.lua	Sat Mar 05 15:34:17 2011 +0100
     9.2 +++ b/app/main/lf2/interest.lua	Mon Mar 07 12:15:22 2011 +0100
     9.3 @@ -1,20 +1,27 @@
     9.4  slot.set_layout("lf2")
     9.5  
     9.6 +slot.put_into("leftright_pre", '<div class="sidebar_right">')
     9.7 +slot.put_into("leftright_post", '</div>')
     9.8  
     9.9 -local issue = Issue:by_id(param.get_id())
    9.10 -local member = Member:by_id(param.get("member", atom.integer))
    9.11 +local issue = Issue:by_id(param.get("issue_id", atom.integer))
    9.12 +local member = Member:by_id(param.get("member_id", atom.integer))
    9.13  
    9.14  local area = issue.area
    9.15  
    9.16  -- TODO broken
    9.17  --issue:load("interested_members_snapshot", {}, "interested_members")
    9.18 -issue:load("delegating_interest_snapshot_for_member", { member_id = app.session.member_id }, "delegating_interest")
    9.19 -issue:load("interest_for_member", { member_id = app.session.member_id }, "interest")
    9.20 -issue:load("outgoing_delegations_for_member", { member_id = app.session.member_id }, "outgoing_delegations")
    9.21 +issue:load("delegating_interest_snapshot_for_member", { member_id = member.id }, "delegating_interest")
    9.22 +issue:load("interest_for_member", { member_id = member.id }, "interest")
    9.23 +issue:load("outgoing_delegations_for_member", { member_id = member.id }, "outgoing_delegations")
    9.24 +issue:load("trusters_for_member", { member_id = member.id }, "trusters")
    9.25  
    9.26  local initiatives = issue.initiatives
    9.27  
    9.28 -local interested_members = issue.interested_members
    9.29 +local supported_initiatives = Initiative:new_selector()
    9.30 +  :add_where{ "initiative.issue_id = ?", issue.id }
    9.31 +  :join("supporter", nil, { "supporter.initiative_id = initiative.id AND supporter.member_id = ?", member.id })
    9.32 +  :exec()
    9.33 +
    9.34  
    9.35  local interest = issue.interest
    9.36  
    9.37 @@ -22,7 +29,7 @@
    9.38  
    9.39  local trustees = Member:new_selector()
    9.40    :add_field("delegation_chain.*")
    9.41 -  :join("delegation_chain(" .. tostring(app.session.member.id) .. ", " .. tostring(area_id or "NULL") .. ", " .. tostring(issue_id or "NULL") .. ")", "delegation_chain", "member.id = delegation_chain.member_id")
    9.42 +  :join("delegation_chain(" .. tostring(member.id) .. ", " .. tostring(issue.area_id or "NULL") .. ", " .. tostring(issue_id or "NULL") .. ")", "delegation_chain", "member.id = delegation_chain.member_id")
    9.43    :add_order_by("index")
    9.44    :exec()
    9.45          
    9.46 @@ -45,17 +52,54 @@
    9.47  app.topnav_area_id = issue.area_id
    9.48  
    9.49  slot.select("sidebar", function()
    9.50 -  execute.view{ module = "lf2", view = "_sidebar_unit", params = { current_area_id = issue.area_id } }
    9.51 +  execute.view{ module = "lf2", view = "_sidebar_issue", params = { issue = issue, alternative_initiatives = initiatives } }
    9.52 +
    9.53  end)
    9.54  
    9.55 -execute.view{ module = "lf2", view = "_area", params = { area = area } }
    9.56 -
    9.57 -execute.view{ module = "lf2", view = "_issues", params = { issues = { issue } } }
    9.58 +ui.box{ content = function()
    9.59 +  ui.box_row{ class = "head", content = function() ui.box_col{ class = "head", content = function()
    9.60 +    ui.link{ module = "lf2", view = "member", id = member.id, content = function()
    9.61 +      ui.avatar(member)
    9.62 +      slot.put(" ")
    9.63 +      ui.tag{ content = member.name }
    9.64 +    end }
    9.65 +  end } end }
    9.66 +  if not member.active then
    9.67 +    ui.box_row{ class = "head", content = function() ui.box_col{ class = "head", content = function()
    9.68 +      ui.tag{ content = _"Member is deactivated" }
    9.69 +    end } end }
    9.70 +  end
    9.71 +  ui.box_row{ content = function() ui.box_col{ content = function()
    9.72 +    if interest then
    9.73 +      ui.image{ static = "lf2/icon_star.png" }
    9.74 +      slot.put(" ")
    9.75 +      ui.tag{ content = _"Member is interested in this issue" }
    9.76 +    elseif delegating_interest then
    9.77 +      ui.image{ static = "lf2/icon_delegated_star.png" }
    9.78 +      slot.put(" ")
    9.79 +      ui.tag{ content = _"Someone in members delegation chain is interested" }
    9.80 +    else
    9.81 +      ui.image{ static = "lf2/icon_star_grey.png" }
    9.82 +      slot.put(" ")
    9.83 +      ui.tag{ content = _"Member is not interested" }
    9.84 +    end
    9.85 +  end } end }
    9.86 +  if #trustees > 1 then
    9.87 +    ui.box_row{ content = function() ui.box_col{ content = function()
    9.88 +      execute.view{ module = "lf2", view = "_avatars", params = { members = trustees, arrows = true, size = "small", issue_id = issue.id } }
    9.89 +    end } end }
    9.90 +  end
    9.91  
    9.92 --- TODO bugfix for not working reference loader
    9.93 -interested_members = issue:get_reference_selector("interested_members_snapshot"):exec()
    9.94 +  ui.box_row{ class = "subhead", content = function() ui.box_col{ class = "head", content = _"Statement about issue" } end }  
    9.95 +
    9.96 +  ui.box_row{ class = "subhead", content = function() ui.box_col{ class = "head", content = _"Supported initiatives" } end }
    9.97 +  execute.view{ module = "lf2", view = "_initiatives", params = { initiatives = supported_initiatives } }
    9.98  
    9.99 -execute.view{ module = "lf2", view = "_interested", params = {
   9.100 -  interested_members = interested_members
   9.101 -} }
   9.102 +  ui.box_row{ class = "subhead", content = function() ui.box_col{ class = "head", content = _"Incoming delegations" } end }
   9.103 +  ui.box_row{ content = function() ui.box_col{ content = function()
   9.104 +    execute.view{ module = "lf2", view = "_avatars", params = { members = issue.trusters, size = "small", issue_id = issue.id } }
   9.105 +  end } end }
   9.106  
   9.107 +
   9.108 +end }
   9.109 +
    10.1 --- a/app/main/lf2/issue.lua	Sat Mar 05 15:34:17 2011 +0100
    10.2 +++ b/app/main/lf2/issue.lua	Mon Mar 07 12:15:22 2011 +0100
    10.3 @@ -54,6 +54,6 @@
    10.4  interested_members = issue:get_reference_selector("interested_members_snapshot"):exec()
    10.5  
    10.6  execute.view{ module = "lf2", view = "_interested", params = {
    10.7 -  interested_members = interested_members
    10.8 +  interested_members = interested_members, issue_id = issue.id
    10.9  } }
   10.10  
    11.1 --- a/env/ui/avatar.lua	Sat Mar 05 15:34:17 2011 +0100
    11.2 +++ b/env/ui/avatar.lua	Mon Mar 07 12:15:22 2011 +0100
    11.3 @@ -60,7 +60,7 @@
    11.4      member:save()
    11.5    end
    11.6  
    11.7 -  ui.tag{ tag = "img", attr = { src = "data:image/jpeg;base64," .. base64_string } }
    11.8 +  ui.tag{ tag = "img", attr = { class = "avatar_image", src = "data:image/jpeg;base64," .. base64_string } }
    11.9    
   11.10  end
   11.11  
    12.1 --- a/model/issue.lua	Sat Mar 05 15:34:17 2011 +0100
    12.2 +++ b/model/issue.lua	Mon Mar 07 12:15:22 2011 +0100
    12.3 @@ -236,6 +236,42 @@
    12.4    end
    12.5  }
    12.6  
    12.7 +Issue:add_reference{
    12.8 +  mode          = 'mm',
    12.9 +  to            = "Member",
   12.10 +  this_key      = 'id',
   12.11 +  that_key      = 'mm_ref_',
   12.12 +  ref           = 'trusters_for_member',
   12.13 +  back_ref      = 'issue',
   12.14 +  selector_generator = function(list, options)
   12.15 +
   12.16 +    local member_id = assert(options.member_id)
   12.17 +  
   12.18 +    -- build list of issue ids
   12.19 +    local ids = { sep = ", " }
   12.20 +    for i, object in ipairs(list) do
   12.21 +      local id = object.id
   12.22 +      if id ~= nil then
   12.23 +        ids[#ids+1] = {"?", id}
   12.24 +      end
   12.25 +    end
   12.26 +
   12.27 +    if #ids == 0 then
   12.28 +      return Delegation:new_selector():empty_list_mode()
   12.29 +    end
   12.30 +    
   12.31 +    local selector = Member:new_selector()
   12.32 +    selector:join("delegating_interest_snapshot", nil, { "delegating_interest_snapshot.delegate_member_ids[1] = ? AND delegating_interest_snapshot.member_id = member.id", member_id })
   12.33 +    selector:join("issue", nil, "delegating_interest_snapshot.issue_id = issue.id AND delegating_interest_snapshot.event = issue.latest_snapshot_event")
   12.34 +    selector:add_where{ 'delegating_interest_snapshot.issue_id IN ($)', ids }
   12.35 +    selector:add_field("delegating_interest_snapshot.issue_id", "mm_ref_")
   12.36 +    selector:add_field("delegating_interest_snapshot.weight", "weight")
   12.37 +    selector:add_order_by("delegating_interest_snapshot.weight DESC, member.id")
   12.38 +    return selector
   12.39 +
   12.40 +  end
   12.41 +}
   12.42 +
   12.43  
   12.44  
   12.45  function Issue:get_state_name_for_state(value)
    13.1 --- a/static/lf2.css	Sat Mar 05 15:34:17 2011 +0100
    13.2 +++ b/static/lf2.css	Mon Mar 07 12:15:22 2011 +0100
    13.3 @@ -1,4 +1,6 @@
    13.4 -/* CSS reset */
    13.5 +/* 
    13.6 + * CSS reset 
    13.7 + */
    13.8  
    13.9  html, body, div, span, applet, object, iframe,
   13.10  h1, h2, h3, h4, h5, h6, p, blockquote, pre,
   13.11 @@ -47,210 +49,170 @@
   13.12      quotes: "" "";
   13.13  }
   13.14  
   13.15 -/* end CSS reset */
   13.16 +
   13.17 +/*
   13.18 + * Positioning
   13.19 + */
   13.20 +
   13.21 +.tab1 .right
   13.22 +        { float: right; }
   13.23 +
   13.24 +.tab1 a { float: left; }
   13.25 +
   13.26 +.slot_default
   13.27 +        { position: relative; width: 67%; }
   13.28 +
   13.29 +.slot_sidebar
   13.30 +        { float: left; width: 30%; }
   13.31 +
   13.32 +.sidebar_right .slot_sidebar
   13.33 +        { float: right; width: 30%; }
   13.34 +
   13.35 +.slot_sidebar .box
   13.36 +        { width: 100%; }
   13.37 +
   13.38 +.box 
   13.39 +        { position: relative; width: 100%; }
   13.40 +
   13.41 +.box .row 
   13.42 +        { overflow: auto; }
   13.43 +
   13.44 +.box .row .col.left
   13.45 +        { float: left; }
   13.46 +
   13.47 +.box .row .col.right
   13.48 +        { float: right; }
   13.49  
   13.50  
   13.51  /*
   13.52 -    Global settings
   13.53 -*/
   13.54 -body {
   13.55 -  font-family: sans-serif;
   13.56 -  background-color: #7df;
   13.57 -  xbackground-image: url('lf2/back.jpg');
   13.58 -  color: #000;
   13.59 -}
   13.60 + * Margins und paddings 
   13.61 + */
   13.62 +
   13.63 +.tab1 a
   13.64 +        { margin: 0 0 0 0.5em; padding: 0.5ex 0.5em 0.5ex 0.5em; }
   13.65 +.tab1 .right a
   13.66 +        { margin: 0 0.5em 0 0; }
   13.67 +
   13.68 +.slot_default
   13.69 +        { margin: 2ex 1% 2ex 32%; }
   13.70 +
   13.71 +.sidebar_right .slot_default
   13.72 +        { margin: 2ex 32% 2ex 1%; }
   13.73 +
   13.74 +.slot_sidebar
   13.75 +        { margin: 2ex 1% 2ex 1%; }
   13.76 +
   13.77 +.sidebar_right .slot_sidebar
   13.78 +        { margin: 0 1% 2ex 1%; }
   13.79 +
   13.80 +.box
   13.81 +        { margin: 0 0 2ex 0; }
   13.82 +
   13.83 +
   13.84 +.box .row .col
   13.85 +        { padding: 0.5ex 0.2em 0.5ex 0.2em; }
   13.86 +
   13.87 +.box .row .col:first-child
   13.88 +        { padding-left: 0.5em; }
   13.89 +
   13.90 +.box .row.subhead .col
   13.91 +        { margin-top: 2ex; }
   13.92 +
   13.93  
   13.94 -a {
   13.95 -  color: #000;
   13.96 -}
   13.97 +/* 
   13.98 + * Colors
   13.99 + */
  13.100 +
  13.101 +body,
  13.102 +.tab1 a.active
  13.103 +/*        { background-color: #7df; color: #000 }*/
  13.104 +        { background-color: #27C9FF; color: #000 }
  13.105 +
  13.106 +.tab1,
  13.107 +.tab1 a { background-color: #444; color: #fff;    }
  13.108 +
  13.109 +
  13.110 +.box    { background-color: #fff; }
  13.111 +
  13.112 +.box    { color: #000;    }
  13.113 +
  13.114 +.box a  { color: #068; }
  13.115 +
  13.116 +.box .row.head,
  13.117 +.box .row.head2,
  13.118 +.box .row.active
  13.119 +        { background-color: #D7F5FF;}
  13.120 +
  13.121 +.box .row.head .col.head
  13.122 +        { color: #444;    }
  13.123 +
  13.124 +.draft .authors,
  13.125 +.initiative .authors 
  13.126 +        { color: #777;    }
  13.127 +
  13.128 +.member_content
  13.129 +        { background-color: #fec; }
  13.130  
  13.131  /*
  13.132 -    Main top navigation
  13.133 -*/
  13.134 + * Borders
  13.135 + */
  13.136 +
  13.137 +.box .row
  13.138 +        { border-bottom: 1px solid #ccc; }
  13.139 +.box .row.head 
  13.140 +        { border-bottom-color: #777; }
  13.141 +.box .row.subhead
  13.142 +        { border-bottom-color: #777; }
  13.143 +.box .row:last-child
  13.144 +        { border-bottom: none; }
  13.145 +        
  13.146 +.box.issue .row.unit_name
  13.147 +        { border-bottom-color: #ccc; }
  13.148  
  13.149 -.tab1 {
  13.150 -  background-color: #444;
  13.151 -  color: #000;
  13.152 -}
  13.153 +/* 
  13.154 + * Rounded corners 
  13.155 + */
  13.156 +
  13.157 +.box    { border-radius: 1ex; -moz-border-radius: 1ex;
  13.158 +          -webkit-box-shadow: 2px 2px 3px 0px #444; -moz-box-shadow: 2px 2px 3px 0px #444; }
  13.159  
  13.160 -.tab1 .right {
  13.161 -  float: right;
  13.162 +.box .row:first-child.head,
  13.163 +.box .row:first-child.head2
  13.164 +        { border-radius: 1ex 1ex 0   0  ; }
  13.165 +.box .row:last-child
  13.166 +        { border-radius: 0   0   1ex 1ex; }
  13.167 +
  13.168 +/*
  13.169 + * Text Formatting
  13.170 + */
  13.171 +
  13.172 +body, input, select {
  13.173 +  font-family: sans-serif;
  13.174 +  font-size: 100%;
  13.175  }
  13.176  
  13.177  .tab1 a {
  13.178 -  float: left;
  13.179 -  padding: 0.5ex 0.5em 0.5ex 0.5em;
  13.180 -  margin-left: 0.5em;
  13.181 -  background-color: #444;
  13.182 -  color: #fff;
  13.183    font-weight: bold;
  13.184    text-decoration: none;
  13.185  }
  13.186  
  13.187 -.tab1 .right a {
  13.188 -  margin-left: 0;
  13.189 -  margin-right: 0.5em;
  13.190 -}
  13.191 -
  13.192 -.tab1 a.active {
  13.193 -  background-color: #7df;
  13.194 -  color: #000;
  13.195 -}
  13.196 +.box a  { text-decoration: none; }
  13.197  
  13.198 -/*
  13.199 -    Default slot
  13.200 -*/
  13.201 -
  13.202 -.slot_default {
  13.203 -  margin: 2ex 1% 2ex 32%;
  13.204 -  position: relative;
  13.205 -  width: 67%;
  13.206 -}
  13.207 +.box .row .col
  13.208 +        { line-height: 115%; }
  13.209  
  13.210 -.sidebar_right .slot_default {
  13.211 -  margin: 2ex 32% 2ex 1%;
  13.212 -}
  13.213 -
  13.214 -/*
  13.215 -Sidebar
  13.216 -*/
  13.217 +.box .row.head .col.head,
  13.218 +.box .row.head2 .col.head
  13.219 +        { font-weight: bold; }
  13.220  
  13.221 -.slot_sidebar {
  13.222 -  margin: 2ex 1% 2ex 1%;
  13.223 -  float: left;
  13.224 -  width: 30%;
  13.225 -}
  13.226 +.box .row.subhead .col
  13.227 +        { font-weight: bold; }
  13.228  
  13.229 -.sidebar_right .slot_sidebar {
  13.230 -  margin: 0 1% 2ex 1%;
  13.231 -  float: right;
  13.232 -  width: 30%;
  13.233 -}
  13.234 -
  13.235 -.slot_sidebar .box {
  13.236 -  width: 100%;
  13.237 -}
  13.238  
  13.239  
  13.240  /*
  13.241 -    Boxes
  13.242 -*/
  13.243 -
  13.244 -.box a {
  13.245 -  text-decoration: none;
  13.246 -  color: #46a;
  13.247 -}
  13.248 -
  13.249 -.box {
  13.250 -  /* position */
  13.251 -  position: relative;
  13.252 -  width: 100%;
  13.253 -  margin-bottom: 2ex;
  13.254 -
  13.255 -  /* border and shadow*/
  13.256 -  border-radius: 1ex;
  13.257 -  -moz-border-radius: 1ex;
  13.258 -  -webkit-box-shadow: 2px 2px 3px 0px #444;
  13.259 -  -moz-box-shadow: 2px 2px 3px 0px #444;
  13.260 -
  13.261 -  /* color */
  13.262 -  background-color: #fff;
  13.263 -  color: #000;
  13.264 -
  13.265 -}
  13.266 -
  13.267 -.box .row {
  13.268 -  overflow: auto;
  13.269 -  /* position */
  13.270 -
  13.271 -  /* border */
  13.272 -  border-bottom: 1px solid #ccc;
  13.273 -}
  13.274 -
  13.275 -.box .row .col {
  13.276 -  /* position */
  13.277 -  padding: 0.5ex 0.2em 0.5ex 0.2em;
  13.278 -
  13.279 -  /* text format */
  13.280 -  line-height: 115%;
  13.281 -}
  13.282 -
  13.283 -.box .row .col.left {
  13.284 -  float: left;
  13.285 -}
  13.286 -
  13.287 -.box .row .col.right {
  13.288 -  float: right;
  13.289 -}
  13.290 -
  13.291 -.box .row:last-child {
  13.292 -  /* border */
  13.293 -  border-bottom: none;
  13.294 -}
  13.295 -
  13.296 -.box .row .col:first-child {
  13.297 -  /* position */
  13.298 -  padding-left: 0.5em;
  13.299 -}
  13.300 -
  13.301 -.box .row:first-child.head,
  13.302 -.box .row:first-child.head2 {
  13.303 -  border-radius: 1ex 1ex 0 0;
  13.304 -}
  13.305 -
  13.306 -.box .row.head {
  13.307 -  background-color: #fafcff;
  13.308 -  color: #000;
  13.309 -  border-bottom-color: #777;
  13.310 -}
  13.311 -
  13.312 -.box .row:last-child {
  13.313 -  border-radius: 0 0 1ex 1ex;
  13.314 -}
  13.315 -
  13.316 -.box .row.head .col.head {
  13.317 -  font-weight: bold;
  13.318 -  color: #444;
  13.319 -}
  13.320 -
  13.321 -.box .row.head .col a {
  13.322 -  background-color: #fafcff;
  13.323 -  color: #3B6E7F;
  13.324 -}
  13.325 -
  13.326 -.box .row.head2 {
  13.327 -  background-color: #fafcff;
  13.328 -  color: #000;
  13.329 -}
  13.330 -
  13.331 -.box .row.head2 .col.head {
  13.332 -  font-weight: bold;
  13.333 -}
  13.334 -
  13.335 -.box .row.head2 .col a {
  13.336 -  background-color: #fafcff;
  13.337 -  color: #3B6E7F;
  13.338 -}
  13.339 -
  13.340 -.box .row.subhead .col {
  13.341 -  margin-top: 2ex;
  13.342 -  font-weight: bold;
  13.343 -}
  13.344 -
  13.345 -.box .row.subhead {
  13.346 -  border-bottom-color: #777;
  13.347 -}
  13.348 -
  13.349 -.box .row .col a {
  13.350 -  color: #3B6E7F;
  13.351 -}
  13.352 -
  13.353 -.box .row.active,
  13.354 -.box .row.active a {
  13.355 -  background-color: #DDF7FF;
  13.356 -}
  13.357 -
  13.358 -/* Sidebar hover button */
  13.359 + * Sidebar hover button 
  13.360 + */
  13.361  
  13.362  .hoverbutton_container {
  13.363    position: relative;
  13.364 @@ -312,7 +274,9 @@
  13.365  }
  13.366  
  13.367  
  13.368 -/* Scrolled col */
  13.369 +/*
  13.370 + * Scrolled col 
  13.371 + */
  13.372  
  13.373  .box .row .col.scrolled {
  13.374    padding: 0;
  13.375 @@ -326,8 +290,8 @@
  13.376  }
  13.377  
  13.378  /*
  13.379 -  Bars
  13.380 -*/
  13.381 + * Bars
  13.382 + */
  13.383  
  13.384  .bar {
  13.385    float: right;
  13.386 @@ -348,8 +312,12 @@
  13.387  }
  13.388  
  13.389  /*
  13.390 -    Avatars
  13.391 -*/
  13.392 + * Avatars
  13.393 + */
  13.394 +
  13.395 +.avatar_image {
  13.396 +  border-radius: 1ex;
  13.397 +}
  13.398  
  13.399  .avatars {
  13.400    overflow: auto;
  13.401 @@ -380,16 +348,6 @@
  13.402    margin-top: 0.3ex;
  13.403  }
  13.404  
  13.405 -.avatars .avatar.myweight {
  13.406 -  border-color: #f70;
  13.407 -  background-color: #f70;
  13.408 -}
  13.409 -
  13.410 -.avatars .avatar.autoreject {
  13.411 -  border-color: #f00;
  13.412 -  background-color: #f00;
  13.413 -}
  13.414 -
  13.415  .avatars.small .avatar img {
  13.416    border-radius: 0.25ex;
  13.417    -moz-border-radius: 0.25ex;
  13.418 @@ -436,8 +394,8 @@
  13.419  }
  13.420  
  13.421  /*
  13.422 -  Area
  13.423 -*/
  13.424 + * Area
  13.425 + */
  13.426  
  13.427  .area .name {
  13.428    color: #444;
  13.429 @@ -452,7 +410,9 @@
  13.430    margin-top: -3px;
  13.431  }
  13.432  
  13.433 -/* Initiatives */
  13.434 +/*
  13.435 + * Initiative
  13.436 + */
  13.437  
  13.438  .initiative .name,
  13.439  .initiative a.name {
  13.440 @@ -461,29 +421,20 @@
  13.441  
  13.442  .draft .authors,
  13.443  .initiative .authors {
  13.444 -  /* color */
  13.445 -  color: #777;
  13.446 -
  13.447    /* text format */
  13.448    font-size: 80%;
  13.449    font-style: italic;
  13.450  }
  13.451  
  13.452 -.draft .authors a,
  13.453 -.initiative .authors a {
  13.454 -  /* color */
  13.455 -}
  13.456 -
  13.457  .drafts .draft .created {
  13.458    font-weight: bold;
  13.459  }
  13.460  
  13.461 -.box.issue .row.unit_name {
  13.462 -  border-bottom-color: #ccc;
  13.463 -}
  13.464 -/* Draft */
  13.465 +/*
  13.466 + * Draft
  13.467 + */
  13.468  
  13.469 -.draft {
  13.470 +.initiative .draft {
  13.471    line-height: 135%;
  13.472  }
  13.473  

Impressum / About Us