##// END OF EJS Templates
Slight changes on users list view and hide Anonymous user....
Jean-Philippe Lang -
r1104:4e244be21cc1
parent child
Show More
@@ -1,112 +1,112
1 # redMine - project management software
1 # redMine - project management software
2 # Copyright (C) 2006-2007 Jean-Philippe Lang
2 # Copyright (C) 2006-2007 Jean-Philippe Lang
3 #
3 #
4 # This program is free software; you can redistribute it and/or
4 # This program is free software; you can redistribute it and/or
5 # modify it under the terms of the GNU General Public License
5 # modify it under the terms of the GNU General Public License
6 # as published by the Free Software Foundation; either version 2
6 # as published by the Free Software Foundation; either version 2
7 # of the License, or (at your option) any later version.
7 # of the License, or (at your option) any later version.
8 #
8 #
9 # This program is distributed in the hope that it will be useful,
9 # This program is distributed in the hope that it will be useful,
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 # GNU General Public License for more details.
12 # GNU General Public License for more details.
13 #
13 #
14 # You should have received a copy of the GNU General Public License
14 # You should have received a copy of the GNU General Public License
15 # along with this program; if not, write to the Free Software
15 # along with this program; if not, write to the Free Software
16 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
16 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
17
17
18 class UsersController < ApplicationController
18 class UsersController < ApplicationController
19 layout 'base'
19 layout 'base'
20 before_filter :require_admin
20 before_filter :require_admin
21
21
22 helper :sort
22 helper :sort
23 include SortHelper
23 include SortHelper
24 helper :custom_fields
24 helper :custom_fields
25 include CustomFieldsHelper
25 include CustomFieldsHelper
26
26
27 def index
27 def index
28 list
28 list
29 render :action => 'list' unless request.xhr?
29 render :action => 'list' unless request.xhr?
30 end
30 end
31
31
32 def list
32 def list
33 sort_init 'login', 'asc'
33 sort_init 'login', 'asc'
34 sort_update
34 sort_update
35
35
36 @status = params[:status] ? params[:status].to_i : 1
36 @status = params[:status] ? params[:status].to_i : 1
37 conditions = nil
37 conditions = "status <> 0"
38 conditions = ["status=?", @status] unless @status == 0
38 conditions = ["status=?", @status] unless @status == 0
39
39
40 @user_count = User.count(:conditions => conditions)
40 @user_count = User.count(:conditions => conditions)
41 @user_pages = Paginator.new self, @user_count,
41 @user_pages = Paginator.new self, @user_count,
42 per_page_option,
42 per_page_option,
43 params['page']
43 params['page']
44 @users = User.find :all,:order => sort_clause,
44 @users = User.find :all,:order => sort_clause,
45 :conditions => conditions,
45 :conditions => conditions,
46 :limit => @user_pages.items_per_page,
46 :limit => @user_pages.items_per_page,
47 :offset => @user_pages.current.offset
47 :offset => @user_pages.current.offset
48
48
49 render :action => "list", :layout => false if request.xhr?
49 render :action => "list", :layout => false if request.xhr?
50 end
50 end
51
51
52 def add
52 def add
53 if request.get?
53 if request.get?
54 @user = User.new(:language => Setting.default_language)
54 @user = User.new(:language => Setting.default_language)
55 @custom_values = UserCustomField.find(:all, :order => "#{CustomField.table_name}.position").collect { |x| CustomValue.new(:custom_field => x, :customized => @user) }
55 @custom_values = UserCustomField.find(:all, :order => "#{CustomField.table_name}.position").collect { |x| CustomValue.new(:custom_field => x, :customized => @user) }
56 else
56 else
57 @user = User.new(params[:user])
57 @user = User.new(params[:user])
58 @user.admin = params[:user][:admin] || false
58 @user.admin = params[:user][:admin] || false
59 @user.login = params[:user][:login]
59 @user.login = params[:user][:login]
60 @user.password, @user.password_confirmation = params[:password], params[:password_confirmation] unless @user.auth_source_id
60 @user.password, @user.password_confirmation = params[:password], params[:password_confirmation] unless @user.auth_source_id
61 @custom_values = UserCustomField.find(:all, :order => "#{CustomField.table_name}.position").collect { |x| CustomValue.new(:custom_field => x, :customized => @user, :value => (params[:custom_fields] ? params["custom_fields"][x.id.to_s] : nil)) }
61 @custom_values = UserCustomField.find(:all, :order => "#{CustomField.table_name}.position").collect { |x| CustomValue.new(:custom_field => x, :customized => @user, :value => (params[:custom_fields] ? params["custom_fields"][x.id.to_s] : nil)) }
62 @user.custom_values = @custom_values
62 @user.custom_values = @custom_values
63 if @user.save
63 if @user.save
64 Mailer.deliver_account_information(@user, params[:password]) if params[:send_information]
64 Mailer.deliver_account_information(@user, params[:password]) if params[:send_information]
65 flash[:notice] = l(:notice_successful_create)
65 flash[:notice] = l(:notice_successful_create)
66 redirect_to :action => 'list'
66 redirect_to :action => 'list'
67 end
67 end
68 end
68 end
69 @auth_sources = AuthSource.find(:all)
69 @auth_sources = AuthSource.find(:all)
70 end
70 end
71
71
72 def edit
72 def edit
73 @user = User.find(params[:id])
73 @user = User.find(params[:id])
74 if request.get?
74 if request.get?
75 @custom_values = UserCustomField.find(:all, :order => "#{CustomField.table_name}.position").collect { |x| @user.custom_values.find_by_custom_field_id(x.id) || CustomValue.new(:custom_field => x) }
75 @custom_values = UserCustomField.find(:all, :order => "#{CustomField.table_name}.position").collect { |x| @user.custom_values.find_by_custom_field_id(x.id) || CustomValue.new(:custom_field => x) }
76 else
76 else
77 @user.admin = params[:user][:admin] if params[:user][:admin]
77 @user.admin = params[:user][:admin] if params[:user][:admin]
78 @user.login = params[:user][:login] if params[:user][:login]
78 @user.login = params[:user][:login] if params[:user][:login]
79 @user.password, @user.password_confirmation = params[:password], params[:password_confirmation] unless params[:password].nil? or params[:password].empty? or @user.auth_source_id
79 @user.password, @user.password_confirmation = params[:password], params[:password_confirmation] unless params[:password].nil? or params[:password].empty? or @user.auth_source_id
80 if params[:custom_fields]
80 if params[:custom_fields]
81 @custom_values = UserCustomField.find(:all, :order => "#{CustomField.table_name}.position").collect { |x| CustomValue.new(:custom_field => x, :customized => @user, :value => params["custom_fields"][x.id.to_s]) }
81 @custom_values = UserCustomField.find(:all, :order => "#{CustomField.table_name}.position").collect { |x| CustomValue.new(:custom_field => x, :customized => @user, :value => params["custom_fields"][x.id.to_s]) }
82 @user.custom_values = @custom_values
82 @user.custom_values = @custom_values
83 end
83 end
84 if @user.update_attributes(params[:user])
84 if @user.update_attributes(params[:user])
85 flash[:notice] = l(:notice_successful_update)
85 flash[:notice] = l(:notice_successful_update)
86 redirect_to :action => 'list'
86 redirect_to :action => 'list'
87 end
87 end
88 end
88 end
89 @auth_sources = AuthSource.find(:all)
89 @auth_sources = AuthSource.find(:all)
90 @roles = Role.find_all_givable
90 @roles = Role.find_all_givable
91 @projects = Project.find(:all, :order => 'name', :conditions => "status=#{Project::STATUS_ACTIVE}") - @user.projects
91 @projects = Project.find(:all, :order => 'name', :conditions => "status=#{Project::STATUS_ACTIVE}") - @user.projects
92 @membership ||= Member.new
92 @membership ||= Member.new
93 end
93 end
94
94
95 def edit_membership
95 def edit_membership
96 @user = User.find(params[:id])
96 @user = User.find(params[:id])
97 @membership = params[:membership_id] ? Member.find(params[:membership_id]) : Member.new(:user => @user)
97 @membership = params[:membership_id] ? Member.find(params[:membership_id]) : Member.new(:user => @user)
98 @membership.attributes = params[:membership]
98 @membership.attributes = params[:membership]
99 if request.post? and @membership.save
99 if request.post? and @membership.save
100 flash[:notice] = l(:notice_successful_update)
100 flash[:notice] = l(:notice_successful_update)
101 end
101 end
102 redirect_to :action => 'edit', :id => @user and return
102 redirect_to :action => 'edit', :id => @user and return
103 end
103 end
104
104
105 def destroy_membership
105 def destroy_membership
106 @user = User.find(params[:id])
106 @user = User.find(params[:id])
107 if request.post? and Member.find(params[:membership_id]).destroy
107 if request.post? and Member.find(params[:membership_id]).destroy
108 flash[:notice] = l(:notice_successful_update)
108 flash[:notice] = l(:notice_successful_update)
109 end
109 end
110 redirect_to :action => 'edit', :id => @user and return
110 redirect_to :action => 'edit', :id => @user and return
111 end
111 end
112 end
112 end
@@ -1,25 +1,25
1 # redMine - project management software
1 # redMine - project management software
2 # Copyright (C) 2006 Jean-Philippe Lang
2 # Copyright (C) 2006 Jean-Philippe Lang
3 #
3 #
4 # This program is free software; you can redistribute it and/or
4 # This program is free software; you can redistribute it and/or
5 # modify it under the terms of the GNU General Public License
5 # modify it under the terms of the GNU General Public License
6 # as published by the Free Software Foundation; either version 2
6 # as published by the Free Software Foundation; either version 2
7 # of the License, or (at your option) any later version.
7 # of the License, or (at your option) any later version.
8 #
8 #
9 # This program is distributed in the hope that it will be useful,
9 # This program is distributed in the hope that it will be useful,
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 # GNU General Public License for more details.
12 # GNU General Public License for more details.
13 #
13 #
14 # You should have received a copy of the GNU General Public License
14 # You should have received a copy of the GNU General Public License
15 # along with this program; if not, write to the Free Software
15 # along with this program; if not, write to the Free Software
16 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
16 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
17
17
18 module UsersHelper
18 module UsersHelper
19 def status_options_for_select(selected)
19 def status_options_for_select(selected)
20 options_for_select([[l(:label_all), "*"],
20 options_for_select([[l(:label_all), ''],
21 [l(:status_active), 1],
21 [l(:status_active), 1],
22 [l(:status_registered), 2],
22 [l(:status_registered), 2],
23 [l(:status_locked), 3]], selected)
23 [l(:status_locked), 3]], selected)
24 end
24 end
25 end
25 end
@@ -1,60 +1,54
1 <div class="contextual">
1 <div class="contextual">
2 <%= link_to l(:label_user_new), {:action => 'add'}, :class => 'icon icon-add' %>
2 <%= link_to l(:label_user_new), {:action => 'add'}, :class => 'icon icon-add' %>
3 </div>
3 </div>
4
4
5 <h2><%=l(:label_user_plural)%></h2>
5 <h2><%=l(:label_user_plural)%></h2>
6
6
7 <% form_tag() do %>
7 <% form_tag({}, :method => :get) do %>
8 <fieldset><legend><%= l(:label_filter_plural) %></legend>
8 <fieldset><legend><%= l(:label_filter_plural) %></legend>
9 <label><%= l(:field_status) %> :</label>
9 <label><%= l(:field_status) %> :</label>
10 <%= select_tag 'status', status_options_for_select(@status), :class => "small", :onchange => "this.form.submit(); return false;" %>
10 <%= select_tag 'status', status_options_for_select(@status), :class => "small", :onchange => "this.form.submit(); return false;" %>
11 <%= submit_tag l(:button_apply), :class => "small" %>
12 </fieldset>
11 </fieldset>
13 <% end %>
12 <% end %>
14 &nbsp;
13 &nbsp;
15
14
16 <table class="list">
15 <table class="list">
17 <thead><tr>
16 <thead><tr>
18 <%= sort_header_tag('login', :caption => l(:field_login)) %>
17 <%= sort_header_tag('login', :caption => l(:field_login)) %>
19 <%= sort_header_tag('firstname', :caption => l(:field_firstname)) %>
18 <%= sort_header_tag('firstname', :caption => l(:field_firstname)) %>
20 <%= sort_header_tag('lastname', :caption => l(:field_lastname)) %>
19 <%= sort_header_tag('lastname', :caption => l(:field_lastname)) %>
21 <th><%=l(:field_mail)%></th>
20 <th><%=l(:field_mail)%></th>
22 <%= sort_header_tag('admin', :caption => l(:field_admin)) %>
21 <%= sort_header_tag('admin', :caption => l(:field_admin)) %>
23 <%= sort_header_tag('status', :caption => l(:field_status)) %>
24 <%= sort_header_tag('created_on', :caption => l(:field_created_on)) %>
22 <%= sort_header_tag('created_on', :caption => l(:field_created_on)) %>
25 <%= sort_header_tag('last_login_on', :caption => l(:field_last_login_on)) %>
23 <%= sort_header_tag('last_login_on', :caption => l(:field_last_login_on)) %>
26 <th></th>
24 <th></th>
27 </tr></thead>
25 </tr></thead>
28 <tbody>
26 <tbody>
29 <% for user in @users %>
27 <% for user in @users -%>
30 <tr class="<%= cycle("odd", "even") %>">
28 <tr class="user <%= cycle("odd", "even") %> <%= %w(anon active registered locked)[user.status] %>">
31 <td><%= link_to user.login, :action => 'edit', :id => user %></td>
29 <td class="username"><%= link_to user.login, :action => 'edit', :id => user %></td>
32 <td><%= user.firstname %></td>
30 <td class="firstname"><%= user.firstname %></td>
33 <td><%= user.lastname %></td>
31 <td class="lastname"><%= user.lastname %></td>
34 <td><%= user.mail %></td>
32 <td class="email"><%= user.mail %></td>
35 <td align="center"><%= image_tag 'true.png' if user.admin? %></td>
33 <td align="center"><%= image_tag('true.png') if user.admin? %></td>
36 <td align="center"><%= image_tag 'locked.png' if user.locked? %><%= image_tag 'user_new.png' if user.registered? %></td>
34 <td class="created_on" align="center"><%= format_time(user.created_on) %></td>
37 <td align="center"><%= format_time(user.created_on) %></td>
35 <td class="last_login_on" align="center"><%= format_time(user.last_login_on) unless user.last_login_on.nil? %></td>
38 <td align="center"><%= format_time(user.last_login_on) unless user.last_login_on.nil? %></td>
36 <td>
39 <td align="center">
37 <small>
40 <% form_tag({:action => 'edit', :id => user}) do %>
38 <% if user.locked? -%>
41 <% if user.locked? %>
39 <%= link_to l(:button_unlock), {:action => 'edit', :id => user, :user => {:status => User::STATUS_ACTIVE}}, :method => :post, :class => 'icon icon-unlock' %>
42 <%= hidden_field_tag 'user[status]', User::STATUS_ACTIVE %>
40 <% elsif user.registered? -%>
43 <%= submit_tag l(:button_unlock), :class => "button-small" %>
41 <%= link_to l(:button_activate), {:action => 'edit', :id => user, :user => {:status => User::STATUS_ACTIVE}}, :method => :post, :class => 'icon icon-unlock' %>
44 <% elsif user.registered? %>
42 <% else -%>
45 <%= hidden_field_tag 'user[status]', User::STATUS_ACTIVE %>
43 <%= link_to l(:button_lock), {:action => 'edit', :id => user, :user => {:status => User::STATUS_LOCKED}}, :method => :post, :class => 'icon icon-lock' %>
46 <%= submit_tag l(:button_activate), :class => "button-small" %>
44 <% end -%>
47 <% else %>
45 </small>
48 <%= hidden_field_tag 'user[status]', User::STATUS_LOCKED %>
46 </td>
49 <%= submit_tag l(:button_lock), :class => "button-small" %>
50 <% end %>
51 <% end %>
52 </td>
53 </tr>
47 </tr>
54 <% end %>
48 <% end -%>
55 </tbody>
49 </tbody>
56 </table>
50 </table>
57
51
58 <p class="pagination"><%= pagination_links_full @user_pages, @user_count %></p>
52 <p class="pagination"><%= pagination_links_full @user_pages, @user_count %></p>
59
53
60 <% html_title(l(:label_user_plural)) -%>
54 <% html_title(l(:label_user_plural)) -%>
@@ -1,525 +1,531
1 body { font-family: Verdana, sans-serif; font-size: 12px; color:#484848; margin: 0; padding: 0; min-width: 900px; }
1 body { font-family: Verdana, sans-serif; font-size: 12px; color:#484848; margin: 0; padding: 0; min-width: 900px; }
2
2
3 h1, h2, h3, h4 { font-family: "Trebuchet MS", Verdana, sans-serif;}
3 h1, h2, h3, h4 { font-family: "Trebuchet MS", Verdana, sans-serif;}
4 h1 {margin:0; padding:0; font-size: 24px;}
4 h1 {margin:0; padding:0; font-size: 24px;}
5 h2, .wiki h1 {font-size: 20px;padding: 2px 10px 1px 0px;margin: 0 0 10px 0; border-bottom: 1px solid #bbbbbb; color: #444;}
5 h2, .wiki h1 {font-size: 20px;padding: 2px 10px 1px 0px;margin: 0 0 10px 0; border-bottom: 1px solid #bbbbbb; color: #444;}
6 h3, .wiki h2 {font-size: 16px;padding: 2px 10px 1px 0px;margin: 0 0 10px 0; border-bottom: 1px solid #bbbbbb; color: #444;}
6 h3, .wiki h2 {font-size: 16px;padding: 2px 10px 1px 0px;margin: 0 0 10px 0; border-bottom: 1px solid #bbbbbb; color: #444;}
7 h4, .wiki h3 {font-size: 12px;padding: 2px 10px 1px 0px;margin-bottom: 5px; border-bottom: 1px dotted #bbbbbb; color: #444;}
7 h4, .wiki h3 {font-size: 12px;padding: 2px 10px 1px 0px;margin-bottom: 5px; border-bottom: 1px dotted #bbbbbb; color: #444;}
8
8
9 /***** Layout *****/
9 /***** Layout *****/
10 #wrapper {background: white;}
10 #wrapper {background: white;}
11
11
12 #top-menu {background: #2C4056;color: #fff;height:1.5em; padding: 2px 6px 0px 6px;}
12 #top-menu {background: #2C4056;color: #fff;height:1.5em; padding: 2px 6px 0px 6px;}
13 #top-menu a {color: #fff; padding-right: 4px;}
13 #top-menu a {color: #fff; padding-right: 4px;}
14 #account {float:right;}
14 #account {float:right;}
15
15
16 #header {height:5.3em;margin:0;background-color:#507AAA;color:#f8f8f8; padding: 4px 8px 0px 6px; position:relative;}
16 #header {height:5.3em;margin:0;background-color:#507AAA;color:#f8f8f8; padding: 4px 8px 0px 6px; position:relative;}
17 #header a {color:#f8f8f8;}
17 #header a {color:#f8f8f8;}
18 #quick-search {float:right;}
18 #quick-search {float:right;}
19
19
20 #main-menu {position: absolute; bottom: 0px; left:6px; margin-right: -500px;}
20 #main-menu {position: absolute; bottom: 0px; left:6px; margin-right: -500px;}
21 #main-menu ul {margin: 0; padding: 0;}
21 #main-menu ul {margin: 0; padding: 0;}
22 #main-menu li {
22 #main-menu li {
23 float:left;
23 float:left;
24 list-style-type:none;
24 list-style-type:none;
25 margin: 0px 10px 0px 0px;
25 margin: 0px 10px 0px 0px;
26 padding: 0px 0px 0px 0px;
26 padding: 0px 0px 0px 0px;
27 white-space:nowrap;
27 white-space:nowrap;
28 }
28 }
29 #main-menu li a {
29 #main-menu li a {
30 display: block;
30 display: block;
31 color: #fff;
31 color: #fff;
32 text-decoration: none;
32 text-decoration: none;
33 margin: 0;
33 margin: 0;
34 padding: 4px 4px 4px 4px;
34 padding: 4px 4px 4px 4px;
35 background: #2C4056;
35 background: #2C4056;
36 }
36 }
37 #main-menu li a:hover, #main-menu li a.selected {background:#759FCF;}
37 #main-menu li a:hover, #main-menu li a.selected {background:#759FCF;}
38
38
39 #main {background: url(../images/mainbg.png) repeat-x; background-color:#EEEEEE;}
39 #main {background: url(../images/mainbg.png) repeat-x; background-color:#EEEEEE;}
40
40
41 #sidebar{ float: right; width: 17%; position: relative; z-index: 9; min-height: 600px; padding: 0; margin: 0;}
41 #sidebar{ float: right; width: 17%; position: relative; z-index: 9; min-height: 600px; padding: 0; margin: 0;}
42 * html #sidebar{ width: 17%; }
42 * html #sidebar{ width: 17%; }
43 #sidebar h3{ font-size: 14px; margin-top:14px; color: #666; }
43 #sidebar h3{ font-size: 14px; margin-top:14px; color: #666; }
44 #sidebar hr{ width: 100%; margin: 0 auto; height: 1px; background: #ccc; border: 0; }
44 #sidebar hr{ width: 100%; margin: 0 auto; height: 1px; background: #ccc; border: 0; }
45 * html #sidebar hr{ width: 95%; position: relative; left: -6px; color: #ccc; }
45 * html #sidebar hr{ width: 95%; position: relative; left: -6px; color: #ccc; }
46
46
47 #content { width: 80%; background: url(../images/contentbg.png) repeat-x; background-color: #fff; margin: 0px; border-right: 1px solid #ddd; padding: 6px 10px 10px 10px; z-index: 10; height:600px; min-height: 600px;}
47 #content { width: 80%; background: url(../images/contentbg.png) repeat-x; background-color: #fff; margin: 0px; border-right: 1px solid #ddd; padding: 6px 10px 10px 10px; z-index: 10; height:600px; min-height: 600px;}
48 * html #content{ width: 80%; padding-left: 0; margin-top: 0px; padding: 6px 10px 10px 10px;}
48 * html #content{ width: 80%; padding-left: 0; margin-top: 0px; padding: 6px 10px 10px 10px;}
49 html>body #content {
49 html>body #content {
50 height: auto;
50 height: auto;
51 min-height: 600px;
51 min-height: 600px;
52 }
52 }
53
53
54 #main.nosidebar #sidebar{ display: none; }
54 #main.nosidebar #sidebar{ display: none; }
55 #main.nosidebar #content{ width: auto; border-right: 0; }
55 #main.nosidebar #content{ width: auto; border-right: 0; }
56
56
57 #footer {clear: both; border-top: 1px solid #bbb; font-size: 0.9em; color: #aaa; padding: 5px; text-align:center; background:#fff;}
57 #footer {clear: both; border-top: 1px solid #bbb; font-size: 0.9em; color: #aaa; padding: 5px; text-align:center; background:#fff;}
58
58
59 #login-form table {margin-top:5em; padding:1em; margin-left: auto; margin-right: auto; border: 2px solid #FDBF3B; background-color:#FFEBC1; }
59 #login-form table {margin-top:5em; padding:1em; margin-left: auto; margin-right: auto; border: 2px solid #FDBF3B; background-color:#FFEBC1; }
60 #login-form table td {padding: 6px;}
60 #login-form table td {padding: 6px;}
61 #login-form label {font-weight: bold;}
61 #login-form label {font-weight: bold;}
62
62
63 .clear:after{ content: "."; display: block; height: 0; clear: both; visibility: hidden; }
63 .clear:after{ content: "."; display: block; height: 0; clear: both; visibility: hidden; }
64
64
65 /***** Links *****/
65 /***** Links *****/
66 a, a:link, a:visited{ color: #2A5685; text-decoration: none; }
66 a, a:link, a:visited{ color: #2A5685; text-decoration: none; }
67 a:hover, a:active{ color: #c61a1a; text-decoration: underline;}
67 a:hover, a:active{ color: #c61a1a; text-decoration: underline;}
68 a img{ border: 0; }
68 a img{ border: 0; }
69
69
70 /***** Tables *****/
70 /***** Tables *****/
71 table.list { border: 1px solid #e4e4e4; border-collapse: collapse; width: 100%; margin-bottom: 4px; }
71 table.list { border: 1px solid #e4e4e4; border-collapse: collapse; width: 100%; margin-bottom: 4px; }
72 table.list th { background-color:#EEEEEE; padding: 4px; white-space:nowrap; }
72 table.list th { background-color:#EEEEEE; padding: 4px; white-space:nowrap; }
73 table.list td { overflow: hidden; text-overflow: ellipsis; vertical-align: top;}
73 table.list td { overflow: hidden; text-overflow: ellipsis; vertical-align: top;}
74 table.list td.id { width: 2%; text-align: center;}
74 table.list td.id { width: 2%; text-align: center;}
75 table.list td.checkbox { width: 15px; padding: 0px;}
75 table.list td.checkbox { width: 15px; padding: 0px;}
76
76
77 tr.issue { text-align: center; white-space: nowrap; }
77 tr.issue { text-align: center; white-space: nowrap; }
78 tr.issue td.subject, tr.issue td.category { white-space: normal; }
78 tr.issue td.subject, tr.issue td.category { white-space: normal; }
79 tr.issue td.subject { text-align: left; }
79 tr.issue td.subject { text-align: left; }
80 tr.issue td.done_ratio table.progress { margin-left:auto; margin-right: auto;}
80 tr.issue td.done_ratio table.progress { margin-left:auto; margin-right: auto;}
81
81
82 tr.entry { border: 1px solid #f8f8f8; }
82 tr.entry { border: 1px solid #f8f8f8; }
83 tr.entry td { white-space: nowrap; }
83 tr.entry td { white-space: nowrap; }
84 tr.entry td.filename { width: 30%; }
84 tr.entry td.filename { width: 30%; }
85 tr.entry td.size { text-align: right; font-size: 90%; }
85 tr.entry td.size { text-align: right; font-size: 90%; }
86 tr.entry td.revision, tr.entry td.author { text-align: center; }
86 tr.entry td.revision, tr.entry td.author { text-align: center; }
87 tr.entry td.age { text-align: right; }
87 tr.entry td.age { text-align: right; }
88
88
89 tr.changeset td.author { text-align: center; width: 15%; }
89 tr.changeset td.author { text-align: center; width: 15%; }
90 tr.changeset td.committed_on { text-align: center; width: 15%; }
90 tr.changeset td.committed_on { text-align: center; width: 15%; }
91
91
92 tr.message { height: 2.6em; }
92 tr.message { height: 2.6em; }
93 tr.message td.last_message { font-size: 80%; }
93 tr.message td.last_message { font-size: 80%; }
94 tr.message.locked td.subject a { background-image: url(../images/locked.png); }
94 tr.message.locked td.subject a { background-image: url(../images/locked.png); }
95 tr.message.sticky td.subject a { background-image: url(../images/sticky.png); font-weight: bold; }
95 tr.message.sticky td.subject a { background-image: url(../images/sticky.png); font-weight: bold; }
96
96
97 tr.user td { width:13%; }
98 tr.user td.email { width:18%; }
99 tr.user td { white-space: nowrap; }
100 tr.user.locked, tr.user.registered { color: #aaa; }
101 tr.user.locked a, tr.user.registered a { color: #aaa; }
102
97 table.list tbody tr:hover { background-color:#ffffdd; }
103 table.list tbody tr:hover { background-color:#ffffdd; }
98 table td {padding:2px;}
104 table td {padding:2px;}
99 table p {margin:0;}
105 table p {margin:0;}
100 .odd {background-color:#f6f7f8;}
106 .odd {background-color:#f6f7f8;}
101 .even {background-color: #fff;}
107 .even {background-color: #fff;}
102
108
103 .highlight { background-color: #FCFD8D;}
109 .highlight { background-color: #FCFD8D;}
104 .highlight.token-1 { background-color: #faa;}
110 .highlight.token-1 { background-color: #faa;}
105 .highlight.token-2 { background-color: #afa;}
111 .highlight.token-2 { background-color: #afa;}
106 .highlight.token-3 { background-color: #aaf;}
112 .highlight.token-3 { background-color: #aaf;}
107
113
108 .box{
114 .box{
109 padding:6px;
115 padding:6px;
110 margin-bottom: 10px;
116 margin-bottom: 10px;
111 background-color:#f6f6f6;
117 background-color:#f6f6f6;
112 color:#505050;
118 color:#505050;
113 line-height:1.5em;
119 line-height:1.5em;
114 border: 1px solid #e4e4e4;
120 border: 1px solid #e4e4e4;
115 }
121 }
116
122
117 div.square {
123 div.square {
118 border: 1px solid #999;
124 border: 1px solid #999;
119 float: left;
125 float: left;
120 margin: .3em .4em 0 .4em;
126 margin: .3em .4em 0 .4em;
121 overflow: hidden;
127 overflow: hidden;
122 width: .6em; height: .6em;
128 width: .6em; height: .6em;
123 }
129 }
124
130
125 .contextual {float:right; white-space: nowrap; line-height:1.4em;margin-top:5px; padding-left: 10px; font-size:0.9em;}
131 .contextual {float:right; white-space: nowrap; line-height:1.4em;margin-top:5px; padding-left: 10px; font-size:0.9em;}
126 .contextual input {font-size:0.9em;}
132 .contextual input {font-size:0.9em;}
127
133
128 .splitcontentleft{float:left; width:49%;}
134 .splitcontentleft{float:left; width:49%;}
129 .splitcontentright{float:right; width:49%;}
135 .splitcontentright{float:right; width:49%;}
130 form {display: inline;}
136 form {display: inline;}
131 input, select {vertical-align: middle; margin-top: 1px; margin-bottom: 1px;}
137 input, select {vertical-align: middle; margin-top: 1px; margin-bottom: 1px;}
132 fieldset {border: 1px solid #e4e4e4; margin:0;}
138 fieldset {border: 1px solid #e4e4e4; margin:0;}
133 legend {color: #484848;}
139 legend {color: #484848;}
134 hr { width: 100%; height: 1px; background: #ccc; border: 0;}
140 hr { width: 100%; height: 1px; background: #ccc; border: 0;}
135 textarea.wiki-edit { width: 99%; }
141 textarea.wiki-edit { width: 99%; }
136 li p {margin-top: 0;}
142 li p {margin-top: 0;}
137 div.issue {background:#ffffdd; padding:6px; margin-bottom:6px;border: 1px solid #d7d7d7;}
143 div.issue {background:#ffffdd; padding:6px; margin-bottom:6px;border: 1px solid #d7d7d7;}
138
144
139 div#issue-changesets {float:right; width:45%; margin-left: 1em; margin-bottom: 1em; background: #fff; padding-left: 1em; font-size: 90%;}
145 div#issue-changesets {float:right; width:45%; margin-left: 1em; margin-bottom: 1em; background: #fff; padding-left: 1em; font-size: 90%;}
140 div#issue-changesets .changeset { padding: 4px;}
146 div#issue-changesets .changeset { padding: 4px;}
141 div#issue-changesets .changeset { border-bottom: 1px solid #ddd; }
147 div#issue-changesets .changeset { border-bottom: 1px solid #ddd; }
142 div#issue-changesets p { margin-top: 0; margin-bottom: 1em;}
148 div#issue-changesets p { margin-top: 0; margin-bottom: 1em;}
143
149
144 .autoscroll {overflow-x: auto; padding:1px; width:100%; margin-bottom: 1.2em;}
150 .autoscroll {overflow-x: auto; padding:1px; width:100%; margin-bottom: 1.2em;}
145 #user_firstname, #user_lastname, #user_mail, #my_account_form select { width: 90%; }
151 #user_firstname, #user_lastname, #user_mail, #my_account_form select { width: 90%; }
146
152
147 .pagination {font-size: 90%}
153 .pagination {font-size: 90%}
148 p.pagination {margin-top:8px;}
154 p.pagination {margin-top:8px;}
149
155
150 /***** Tabular forms ******/
156 /***** Tabular forms ******/
151 .tabular p{
157 .tabular p{
152 margin: 0;
158 margin: 0;
153 padding: 5px 0 8px 0;
159 padding: 5px 0 8px 0;
154 padding-left: 180px; /*width of left column containing the label elements*/
160 padding-left: 180px; /*width of left column containing the label elements*/
155 height: 1%;
161 height: 1%;
156 clear:left;
162 clear:left;
157 }
163 }
158
164
159 .tabular label{
165 .tabular label{
160 font-weight: bold;
166 font-weight: bold;
161 float: left;
167 float: left;
162 text-align: right;
168 text-align: right;
163 margin-left: -180px; /*width of left column*/
169 margin-left: -180px; /*width of left column*/
164 width: 175px; /*width of labels. Should be smaller than left column to create some right
170 width: 175px; /*width of labels. Should be smaller than left column to create some right
165 margin*/
171 margin*/
166 }
172 }
167
173
168 .tabular label.floating{
174 .tabular label.floating{
169 font-weight: normal;
175 font-weight: normal;
170 margin-left: 0px;
176 margin-left: 0px;
171 text-align: left;
177 text-align: left;
172 width: 200px;
178 width: 200px;
173 }
179 }
174
180
175 #preview fieldset {margin-top: 1em; background: url(../images/draft.png)}
181 #preview fieldset {margin-top: 1em; background: url(../images/draft.png)}
176
182
177 .tabular.settings p{ padding-left: 300px; }
183 .tabular.settings p{ padding-left: 300px; }
178 .tabular.settings label{ margin-left: -300px; width: 295px; }
184 .tabular.settings label{ margin-left: -300px; width: 295px; }
179
185
180 .required {color: #bb0000;}
186 .required {color: #bb0000;}
181 .summary {font-style: italic;}
187 .summary {font-style: italic;}
182
188
183 div.attachments p { margin:4px 0 2px 0; }
189 div.attachments p { margin:4px 0 2px 0; }
184
190
185 /***** Flash & error messages ****/
191 /***** Flash & error messages ****/
186 #errorExplanation, div.flash, .nodata {
192 #errorExplanation, div.flash, .nodata {
187 padding: 4px 4px 4px 30px;
193 padding: 4px 4px 4px 30px;
188 margin-bottom: 12px;
194 margin-bottom: 12px;
189 font-size: 1.1em;
195 font-size: 1.1em;
190 border: 2px solid;
196 border: 2px solid;
191 }
197 }
192
198
193 div.flash {margin-top: 8px;}
199 div.flash {margin-top: 8px;}
194
200
195 div.flash.error, #errorExplanation {
201 div.flash.error, #errorExplanation {
196 background: url(../images/false.png) 8px 5px no-repeat;
202 background: url(../images/false.png) 8px 5px no-repeat;
197 background-color: #ffe3e3;
203 background-color: #ffe3e3;
198 border-color: #dd0000;
204 border-color: #dd0000;
199 color: #550000;
205 color: #550000;
200 }
206 }
201
207
202 div.flash.notice {
208 div.flash.notice {
203 background: url(../images/true.png) 8px 5px no-repeat;
209 background: url(../images/true.png) 8px 5px no-repeat;
204 background-color: #dfffdf;
210 background-color: #dfffdf;
205 border-color: #9fcf9f;
211 border-color: #9fcf9f;
206 color: #005f00;
212 color: #005f00;
207 }
213 }
208
214
209 .nodata {
215 .nodata {
210 text-align: center;
216 text-align: center;
211 background-color: #FFEBC1;
217 background-color: #FFEBC1;
212 border-color: #FDBF3B;
218 border-color: #FDBF3B;
213 color: #A6750C;
219 color: #A6750C;
214 }
220 }
215
221
216 #errorExplanation ul { font-size: 0.9em;}
222 #errorExplanation ul { font-size: 0.9em;}
217
223
218 /***** Ajax indicator ******/
224 /***** Ajax indicator ******/
219 #ajax-indicator {
225 #ajax-indicator {
220 position: absolute; /* fixed not supported by IE */
226 position: absolute; /* fixed not supported by IE */
221 background-color:#eee;
227 background-color:#eee;
222 border: 1px solid #bbb;
228 border: 1px solid #bbb;
223 top:35%;
229 top:35%;
224 left:40%;
230 left:40%;
225 width:20%;
231 width:20%;
226 font-weight:bold;
232 font-weight:bold;
227 text-align:center;
233 text-align:center;
228 padding:0.6em;
234 padding:0.6em;
229 z-index:100;
235 z-index:100;
230 filter:alpha(opacity=50);
236 filter:alpha(opacity=50);
231 opacity: 0.5;
237 opacity: 0.5;
232 -khtml-opacity: 0.5;
238 -khtml-opacity: 0.5;
233 }
239 }
234
240
235 html>body #ajax-indicator { position: fixed; }
241 html>body #ajax-indicator { position: fixed; }
236
242
237 #ajax-indicator span {
243 #ajax-indicator span {
238 background-position: 0% 40%;
244 background-position: 0% 40%;
239 background-repeat: no-repeat;
245 background-repeat: no-repeat;
240 background-image: url(../images/loading.gif);
246 background-image: url(../images/loading.gif);
241 padding-left: 26px;
247 padding-left: 26px;
242 vertical-align: bottom;
248 vertical-align: bottom;
243 }
249 }
244
250
245 /***** Calendar *****/
251 /***** Calendar *****/
246 table.cal {border-collapse: collapse; width: 100%; margin: 8px 0 6px 0;border: 1px solid #d7d7d7;}
252 table.cal {border-collapse: collapse; width: 100%; margin: 8px 0 6px 0;border: 1px solid #d7d7d7;}
247 table.cal thead th {width: 14%;}
253 table.cal thead th {width: 14%;}
248 table.cal tbody tr {height: 100px;}
254 table.cal tbody tr {height: 100px;}
249 table.cal th { background-color:#EEEEEE; padding: 4px; }
255 table.cal th { background-color:#EEEEEE; padding: 4px; }
250 table.cal td {border: 1px solid #d7d7d7; vertical-align: top; font-size: 0.9em;}
256 table.cal td {border: 1px solid #d7d7d7; vertical-align: top; font-size: 0.9em;}
251 table.cal td p.day-num {font-size: 1.1em; text-align:right;}
257 table.cal td p.day-num {font-size: 1.1em; text-align:right;}
252 table.cal td.odd p.day-num {color: #bbb;}
258 table.cal td.odd p.day-num {color: #bbb;}
253 table.cal td.today {background:#ffffdd;}
259 table.cal td.today {background:#ffffdd;}
254 table.cal td.today p.day-num {font-weight: bold;}
260 table.cal td.today p.day-num {font-weight: bold;}
255
261
256 /***** Tooltips ******/
262 /***** Tooltips ******/
257 .tooltip{position:relative;z-index:24;}
263 .tooltip{position:relative;z-index:24;}
258 .tooltip:hover{z-index:25;color:#000;}
264 .tooltip:hover{z-index:25;color:#000;}
259 .tooltip span.tip{display: none; text-align:left;}
265 .tooltip span.tip{display: none; text-align:left;}
260
266
261 div.tooltip:hover span.tip{
267 div.tooltip:hover span.tip{
262 display:block;
268 display:block;
263 position:absolute;
269 position:absolute;
264 top:12px; left:24px; width:270px;
270 top:12px; left:24px; width:270px;
265 border:1px solid #555;
271 border:1px solid #555;
266 background-color:#fff;
272 background-color:#fff;
267 padding: 4px;
273 padding: 4px;
268 font-size: 0.8em;
274 font-size: 0.8em;
269 color:#505050;
275 color:#505050;
270 }
276 }
271
277
272 /***** Progress bar *****/
278 /***** Progress bar *****/
273 table.progress {
279 table.progress {
274 border: 1px solid #D7D7D7;
280 border: 1px solid #D7D7D7;
275 border-collapse: collapse;
281 border-collapse: collapse;
276 border-spacing: 0pt;
282 border-spacing: 0pt;
277 empty-cells: show;
283 empty-cells: show;
278 text-align: center;
284 text-align: center;
279 float:left;
285 float:left;
280 margin: 1px 6px 1px 0px;
286 margin: 1px 6px 1px 0px;
281 }
287 }
282
288
283 table.progress td { height: 0.9em; }
289 table.progress td { height: 0.9em; }
284 table.progress td.closed { background: #BAE0BA none repeat scroll 0%; }
290 table.progress td.closed { background: #BAE0BA none repeat scroll 0%; }
285 table.progress td.done { background: #DEF0DE none repeat scroll 0%; }
291 table.progress td.done { background: #DEF0DE none repeat scroll 0%; }
286 table.progress td.open { background: #FFF none repeat scroll 0%; }
292 table.progress td.open { background: #FFF none repeat scroll 0%; }
287 p.pourcent {font-size: 80%;}
293 p.pourcent {font-size: 80%;}
288 p.progress-info {clear: left; font-style: italic; font-size: 80%;}
294 p.progress-info {clear: left; font-style: italic; font-size: 80%;}
289
295
290 div#status_by { float:right; width:380px; margin-left: 16px; margin-bottom: 16px; }
296 div#status_by { float:right; width:380px; margin-left: 16px; margin-bottom: 16px; }
291
297
292 /***** Tabs *****/
298 /***** Tabs *****/
293 #content .tabs {height: 2.6em; border-bottom: 1px solid #bbbbbb; margin-bottom:1.2em; position:relative;}
299 #content .tabs {height: 2.6em; border-bottom: 1px solid #bbbbbb; margin-bottom:1.2em; position:relative;}
294 #content .tabs ul {margin:0; position:absolute; bottom:-2px; padding-left:1em;}
300 #content .tabs ul {margin:0; position:absolute; bottom:-2px; padding-left:1em;}
295 #content .tabs>ul { bottom:-1px; } /* others */
301 #content .tabs>ul { bottom:-1px; } /* others */
296 #content .tabs ul li {
302 #content .tabs ul li {
297 float:left;
303 float:left;
298 list-style-type:none;
304 list-style-type:none;
299 white-space:nowrap;
305 white-space:nowrap;
300 margin-right:8px;
306 margin-right:8px;
301 background:#fff;
307 background:#fff;
302 }
308 }
303 #content .tabs ul li a{
309 #content .tabs ul li a{
304 display:block;
310 display:block;
305 font-size: 0.9em;
311 font-size: 0.9em;
306 text-decoration:none;
312 text-decoration:none;
307 line-height:1.3em;
313 line-height:1.3em;
308 padding:4px 6px 4px 6px;
314 padding:4px 6px 4px 6px;
309 border: 1px solid #ccc;
315 border: 1px solid #ccc;
310 border-bottom: 1px solid #bbbbbb;
316 border-bottom: 1px solid #bbbbbb;
311 background-color: #eeeeee;
317 background-color: #eeeeee;
312 color:#777;
318 color:#777;
313 font-weight:bold;
319 font-weight:bold;
314 }
320 }
315
321
316 #content .tabs ul li a:hover {
322 #content .tabs ul li a:hover {
317 background-color: #ffffdd;
323 background-color: #ffffdd;
318 text-decoration:none;
324 text-decoration:none;
319 }
325 }
320
326
321 #content .tabs ul li a.selected {
327 #content .tabs ul li a.selected {
322 background-color: #fff;
328 background-color: #fff;
323 border: 1px solid #bbbbbb;
329 border: 1px solid #bbbbbb;
324 border-bottom: 1px solid #fff;
330 border-bottom: 1px solid #fff;
325 }
331 }
326
332
327 #content .tabs ul li a.selected:hover {
333 #content .tabs ul li a.selected:hover {
328 background-color: #fff;
334 background-color: #fff;
329 }
335 }
330
336
331 /***** Diff *****/
337 /***** Diff *****/
332 .diff_out { background: #fcc; }
338 .diff_out { background: #fcc; }
333 .diff_in { background: #cfc; }
339 .diff_in { background: #cfc; }
334
340
335 /***** Wiki *****/
341 /***** Wiki *****/
336 div.wiki table {
342 div.wiki table {
337 border: 1px solid #505050;
343 border: 1px solid #505050;
338 border-collapse: collapse;
344 border-collapse: collapse;
339 }
345 }
340
346
341 div.wiki table, div.wiki td, div.wiki th {
347 div.wiki table, div.wiki td, div.wiki th {
342 border: 1px solid #bbb;
348 border: 1px solid #bbb;
343 padding: 4px;
349 padding: 4px;
344 }
350 }
345
351
346 div.wiki .external {
352 div.wiki .external {
347 background-position: 0% 60%;
353 background-position: 0% 60%;
348 background-repeat: no-repeat;
354 background-repeat: no-repeat;
349 padding-left: 12px;
355 padding-left: 12px;
350 background-image: url(../images/external.png);
356 background-image: url(../images/external.png);
351 }
357 }
352
358
353 div.wiki a.new {
359 div.wiki a.new {
354 color: #b73535;
360 color: #b73535;
355 }
361 }
356
362
357 div.wiki pre {
363 div.wiki pre {
358 margin: 1em 1em 1em 1.6em;
364 margin: 1em 1em 1em 1.6em;
359 padding: 2px;
365 padding: 2px;
360 background-color: #fafafa;
366 background-color: #fafafa;
361 border: 1px solid #dadada;
367 border: 1px solid #dadada;
362 width:95%;
368 width:95%;
363 overflow-x: auto;
369 overflow-x: auto;
364 }
370 }
365
371
366 div.wiki div.toc {
372 div.wiki div.toc {
367 background-color: #ffffdd;
373 background-color: #ffffdd;
368 border: 1px solid #e4e4e4;
374 border: 1px solid #e4e4e4;
369 padding: 4px;
375 padding: 4px;
370 line-height: 1.2em;
376 line-height: 1.2em;
371 margin-bottom: 12px;
377 margin-bottom: 12px;
372 margin-right: 12px;
378 margin-right: 12px;
373 display: table
379 display: table
374 }
380 }
375 * html div.wiki div.toc { width: 50%; } /* IE6 doesn't autosize div */
381 * html div.wiki div.toc { width: 50%; } /* IE6 doesn't autosize div */
376
382
377 div.wiki div.toc.right { float: right; margin-left: 12px; margin-right: 0; width: auto; }
383 div.wiki div.toc.right { float: right; margin-left: 12px; margin-right: 0; width: auto; }
378 div.wiki div.toc.left { float: left; margin-right: 12px; margin-left: 0; width: auto; }
384 div.wiki div.toc.left { float: left; margin-right: 12px; margin-left: 0; width: auto; }
379
385
380 div.wiki div.toc a {
386 div.wiki div.toc a {
381 display: block;
387 display: block;
382 font-size: 0.9em;
388 font-size: 0.9em;
383 font-weight: normal;
389 font-weight: normal;
384 text-decoration: none;
390 text-decoration: none;
385 color: #606060;
391 color: #606060;
386 }
392 }
387 div.wiki div.toc a:hover { color: #c61a1a; text-decoration: underline;}
393 div.wiki div.toc a:hover { color: #c61a1a; text-decoration: underline;}
388
394
389 div.wiki div.toc a.heading2 { margin-left: 6px; }
395 div.wiki div.toc a.heading2 { margin-left: 6px; }
390 div.wiki div.toc a.heading3 { margin-left: 12px; font-size: 0.8em; }
396 div.wiki div.toc a.heading3 { margin-left: 12px; font-size: 0.8em; }
391
397
392 /***** My page layout *****/
398 /***** My page layout *****/
393 .block-receiver {
399 .block-receiver {
394 border:1px dashed #c0c0c0;
400 border:1px dashed #c0c0c0;
395 margin-bottom: 20px;
401 margin-bottom: 20px;
396 padding: 15px 0 15px 0;
402 padding: 15px 0 15px 0;
397 }
403 }
398
404
399 .mypage-box {
405 .mypage-box {
400 margin:0 0 20px 0;
406 margin:0 0 20px 0;
401 color:#505050;
407 color:#505050;
402 line-height:1.5em;
408 line-height:1.5em;
403 }
409 }
404
410
405 .handle {
411 .handle {
406 cursor: move;
412 cursor: move;
407 }
413 }
408
414
409 a.close-icon {
415 a.close-icon {
410 display:block;
416 display:block;
411 margin-top:3px;
417 margin-top:3px;
412 overflow:hidden;
418 overflow:hidden;
413 width:12px;
419 width:12px;
414 height:12px;
420 height:12px;
415 background-repeat: no-repeat;
421 background-repeat: no-repeat;
416 cursor:pointer;
422 cursor:pointer;
417 background-image:url('../images/close.png');
423 background-image:url('../images/close.png');
418 }
424 }
419
425
420 a.close-icon:hover {
426 a.close-icon:hover {
421 background-image:url('../images/close_hl.png');
427 background-image:url('../images/close_hl.png');
422 }
428 }
423
429
424 /***** Gantt chart *****/
430 /***** Gantt chart *****/
425 .gantt_hdr {
431 .gantt_hdr {
426 position:absolute;
432 position:absolute;
427 top:0;
433 top:0;
428 height:16px;
434 height:16px;
429 border-top: 1px solid #c0c0c0;
435 border-top: 1px solid #c0c0c0;
430 border-bottom: 1px solid #c0c0c0;
436 border-bottom: 1px solid #c0c0c0;
431 border-right: 1px solid #c0c0c0;
437 border-right: 1px solid #c0c0c0;
432 text-align: center;
438 text-align: center;
433 overflow: hidden;
439 overflow: hidden;
434 }
440 }
435
441
436 .task {
442 .task {
437 position: absolute;
443 position: absolute;
438 height:8px;
444 height:8px;
439 font-size:0.8em;
445 font-size:0.8em;
440 color:#888;
446 color:#888;
441 padding:0;
447 padding:0;
442 margin:0;
448 margin:0;
443 line-height:0.8em;
449 line-height:0.8em;
444 }
450 }
445
451
446 .task_late { background:#f66 url(../images/task_late.png); border: 1px solid #f66; }
452 .task_late { background:#f66 url(../images/task_late.png); border: 1px solid #f66; }
447 .task_done { background:#66f url(../images/task_done.png); border: 1px solid #66f; }
453 .task_done { background:#66f url(../images/task_done.png); border: 1px solid #66f; }
448 .task_todo { background:#aaa url(../images/task_todo.png); border: 1px solid #aaa; }
454 .task_todo { background:#aaa url(../images/task_todo.png); border: 1px solid #aaa; }
449 .milestone { background-image:url(../images/milestone.png); background-repeat: no-repeat; border: 0; }
455 .milestone { background-image:url(../images/milestone.png); background-repeat: no-repeat; border: 0; }
450
456
451 /***** Icons *****/
457 /***** Icons *****/
452 .icon {
458 .icon {
453 background-position: 0% 40%;
459 background-position: 0% 40%;
454 background-repeat: no-repeat;
460 background-repeat: no-repeat;
455 padding-left: 20px;
461 padding-left: 20px;
456 padding-top: 2px;
462 padding-top: 2px;
457 padding-bottom: 3px;
463 padding-bottom: 3px;
458 }
464 }
459
465
460 .icon22 {
466 .icon22 {
461 background-position: 0% 40%;
467 background-position: 0% 40%;
462 background-repeat: no-repeat;
468 background-repeat: no-repeat;
463 padding-left: 26px;
469 padding-left: 26px;
464 line-height: 22px;
470 line-height: 22px;
465 vertical-align: middle;
471 vertical-align: middle;
466 }
472 }
467
473
468 .icon-add { background-image: url(../images/add.png); }
474 .icon-add { background-image: url(../images/add.png); }
469 .icon-edit { background-image: url(../images/edit.png); }
475 .icon-edit { background-image: url(../images/edit.png); }
470 .icon-copy { background-image: url(../images/copy.png); }
476 .icon-copy { background-image: url(../images/copy.png); }
471 .icon-del { background-image: url(../images/delete.png); }
477 .icon-del { background-image: url(../images/delete.png); }
472 .icon-move { background-image: url(../images/move.png); }
478 .icon-move { background-image: url(../images/move.png); }
473 .icon-save { background-image: url(../images/save.png); }
479 .icon-save { background-image: url(../images/save.png); }
474 .icon-cancel { background-image: url(../images/cancel.png); }
480 .icon-cancel { background-image: url(../images/cancel.png); }
475 .icon-pdf { background-image: url(../images/pdf.png); }
481 .icon-pdf { background-image: url(../images/pdf.png); }
476 .icon-csv { background-image: url(../images/csv.png); }
482 .icon-csv { background-image: url(../images/csv.png); }
477 .icon-html { background-image: url(../images/html.png); }
483 .icon-html { background-image: url(../images/html.png); }
478 .icon-image { background-image: url(../images/image.png); }
484 .icon-image { background-image: url(../images/image.png); }
479 .icon-txt { background-image: url(../images/txt.png); }
485 .icon-txt { background-image: url(../images/txt.png); }
480 .icon-file { background-image: url(../images/file.png); }
486 .icon-file { background-image: url(../images/file.png); }
481 .icon-folder { background-image: url(../images/folder.png); }
487 .icon-folder { background-image: url(../images/folder.png); }
482 .open .icon-folder { background-image: url(../images/folder_open.png); }
488 .open .icon-folder { background-image: url(../images/folder_open.png); }
483 .icon-package { background-image: url(../images/package.png); }
489 .icon-package { background-image: url(../images/package.png); }
484 .icon-home { background-image: url(../images/home.png); }
490 .icon-home { background-image: url(../images/home.png); }
485 .icon-user { background-image: url(../images/user.png); }
491 .icon-user { background-image: url(../images/user.png); }
486 .icon-mypage { background-image: url(../images/user_page.png); }
492 .icon-mypage { background-image: url(../images/user_page.png); }
487 .icon-admin { background-image: url(../images/admin.png); }
493 .icon-admin { background-image: url(../images/admin.png); }
488 .icon-projects { background-image: url(../images/projects.png); }
494 .icon-projects { background-image: url(../images/projects.png); }
489 .icon-logout { background-image: url(../images/logout.png); }
495 .icon-logout { background-image: url(../images/logout.png); }
490 .icon-help { background-image: url(../images/help.png); }
496 .icon-help { background-image: url(../images/help.png); }
491 .icon-attachment { background-image: url(../images/attachment.png); }
497 .icon-attachment { background-image: url(../images/attachment.png); }
492 .icon-index { background-image: url(../images/index.png); }
498 .icon-index { background-image: url(../images/index.png); }
493 .icon-history { background-image: url(../images/history.png); }
499 .icon-history { background-image: url(../images/history.png); }
494 .icon-feed { background-image: url(../images/feed.png); }
500 .icon-feed { background-image: url(../images/feed.png); }
495 .icon-time { background-image: url(../images/time.png); }
501 .icon-time { background-image: url(../images/time.png); }
496 .icon-stats { background-image: url(../images/stats.png); }
502 .icon-stats { background-image: url(../images/stats.png); }
497 .icon-warning { background-image: url(../images/warning.png); }
503 .icon-warning { background-image: url(../images/warning.png); }
498 .icon-fav { background-image: url(../images/fav.png); }
504 .icon-fav { background-image: url(../images/fav.png); }
499 .icon-fav-off { background-image: url(../images/fav_off.png); }
505 .icon-fav-off { background-image: url(../images/fav_off.png); }
500 .icon-reload { background-image: url(../images/reload.png); }
506 .icon-reload { background-image: url(../images/reload.png); }
501 .icon-lock { background-image: url(../images/locked.png); }
507 .icon-lock { background-image: url(../images/locked.png); }
502 .icon-unlock { background-image: url(../images/unlock.png); }
508 .icon-unlock { background-image: url(../images/unlock.png); }
503 .icon-note { background-image: url(../images/note.png); }
509 .icon-note { background-image: url(../images/note.png); }
504 .icon-checked { background-image: url(../images/true.png); }
510 .icon-checked { background-image: url(../images/true.png); }
505
511
506 .icon22-projects { background-image: url(../images/22x22/projects.png); }
512 .icon22-projects { background-image: url(../images/22x22/projects.png); }
507 .icon22-users { background-image: url(../images/22x22/users.png); }
513 .icon22-users { background-image: url(../images/22x22/users.png); }
508 .icon22-tracker { background-image: url(../images/22x22/tracker.png); }
514 .icon22-tracker { background-image: url(../images/22x22/tracker.png); }
509 .icon22-role { background-image: url(../images/22x22/role.png); }
515 .icon22-role { background-image: url(../images/22x22/role.png); }
510 .icon22-workflow { background-image: url(../images/22x22/workflow.png); }
516 .icon22-workflow { background-image: url(../images/22x22/workflow.png); }
511 .icon22-options { background-image: url(../images/22x22/options.png); }
517 .icon22-options { background-image: url(../images/22x22/options.png); }
512 .icon22-notifications { background-image: url(../images/22x22/notifications.png); }
518 .icon22-notifications { background-image: url(../images/22x22/notifications.png); }
513 .icon22-authent { background-image: url(../images/22x22/authent.png); }
519 .icon22-authent { background-image: url(../images/22x22/authent.png); }
514 .icon22-info { background-image: url(../images/22x22/info.png); }
520 .icon22-info { background-image: url(../images/22x22/info.png); }
515 .icon22-comment { background-image: url(../images/22x22/comment.png); }
521 .icon22-comment { background-image: url(../images/22x22/comment.png); }
516 .icon22-package { background-image: url(../images/22x22/package.png); }
522 .icon22-package { background-image: url(../images/22x22/package.png); }
517 .icon22-settings { background-image: url(../images/22x22/settings.png); }
523 .icon22-settings { background-image: url(../images/22x22/settings.png); }
518 .icon22-plugin { background-image: url(../images/22x22/plugin.png); }
524 .icon22-plugin { background-image: url(../images/22x22/plugin.png); }
519
525
520 /***** Media print specific styles *****/
526 /***** Media print specific styles *****/
521 @media print {
527 @media print {
522 #top-menu, #header, #main-menu, #sidebar, #footer, .contextual { display:none; }
528 #top-menu, #header, #main-menu, #sidebar, #footer, .contextual { display:none; }
523 #main { background: #fff; }
529 #main { background: #fff; }
524 #content { width: 99%; margin: 0; padding: 0; border: 0; background: #fff; }
530 #content { width: 99%; margin: 0; padding: 0; border: 0; background: #fff; }
525 }
531 }
General Comments 0
You need to be logged in to leave comments. Login now