##// END OF EJS Templates
contextual links redesign...
Jean-Philippe Lang -
r90:236c735d08c0
parent child
Show More
1 NO CONTENT: new file 100644, binary diff hidden
NO CONTENT: new file 100644, binary diff hidden
1 NO CONTENT: new file 100644, binary diff hidden
NO CONTENT: new file 100644, binary diff hidden
1 NO CONTENT: new file 100644, binary diff hidden
NO CONTENT: new file 100644, binary diff hidden
@@ -1,30 +1,32
1 <div class="contextual">
2 <%= link_to l(:label_project_new), {:controller => 'projects', :action => 'add'}, :class => 'pic picAdd' %>
3 </div>
4
1 <h2><%=l(:label_project_plural)%></h2>
5 <h2><%=l(:label_project_plural)%></h2>
2
6
3 <table class="listTableContent">
7 <table class="listTableContent">
4 <tr class="ListHead">
8 <tr class="ListHead">
5 <%= sort_header_tag('name', :caption => l(:label_project)) %>
9 <%= sort_header_tag('name', :caption => l(:label_project)) %>
6 <th><%=l(:field_description)%></th>
10 <th><%=l(:field_description)%></th>
7 <th><%=l(:field_is_public)%></th>
11 <th><%=l(:field_is_public)%></th>
8 <th><%=l(:label_subproject_plural)%></th>
12 <th><%=l(:label_subproject_plural)%></th>
9 <%= sort_header_tag('created_on', :caption => l(:field_created_on)) %>
13 <%= sort_header_tag('created_on', :caption => l(:field_created_on)) %>
10 <th></th>
14 <th></th>
11 </tr>
15 </tr>
12
16
13 <% for project in @projects %>
17 <% for project in @projects %>
14 <tr class="<%= cycle("odd", "even") %>">
18 <tr class="<%= cycle("odd", "even") %>">
15 <td><%= link_to project.name, :controller => 'projects', :action => 'settings', :id => project %>
19 <td><%= link_to project.name, :controller => 'projects', :action => 'settings', :id => project %>
16 <td><%= project.description %>
20 <td><%= project.description %>
17 <td align="center"><%= image_tag 'true' if project.is_public? %>
21 <td align="center"><%= image_tag 'true' if project.is_public? %>
18 <td align="center"><%= project.projects_count %>
22 <td align="center"><%= project.projects_count %>
19 <td align="center"><%= format_date(project.created_on) %>
23 <td align="center"><%= format_date(project.created_on) %>
20 <td align="center">
24 <td align="center">
21 <%= button_to l(:button_delete), { :controller => 'projects', :action => 'destroy', :id => project }, :class => "button-small" %>
25 <%= button_to l(:button_delete), { :controller => 'projects', :action => 'destroy', :id => project }, :class => "button-small" %>
22 </td>
26 </td>
23 </tr>
27 </tr>
24 <% end %>
28 <% end %>
25 </table>
29 </table>
26
30
27 <p><%= pagination_links_full @project_pages %>
31 <p><%= pagination_links_full @project_pages %>
28 [ <%= @project_pages.current.first_item %> - <%= @project_pages.current.last_item %> / <%= @project_count %> ]</p>
32 [ <%= @project_pages.current.first_item %> - <%= @project_pages.current.last_item %> / <%= @project_count %> ]</p> No newline at end of file
29
30 <p><%= link_to ('&#187; ' + l(:label_project_new)), :controller => 'projects', :action => 'add' %></p> No newline at end of file
@@ -1,30 +1,31
1 <div class="contextual">
2 <%= link_to l(:label_auth_source_new), {:action => 'new'}, :class => 'pic picAdd' %>
3 </div>
4
1 <h2><%=l(:label_auth_source_plural)%></h2>
5 <h2><%=l(:label_auth_source_plural)%></h2>
2
6
3 <table class="listTableContent">
7 <table class="listTableContent">
4 <tr class="ListHead">
8 <tr class="ListHead">
5 <th><%=l(:field_name)%></th>
9 <th><%=l(:field_name)%></th>
6 <th><%=l(:field_type)%></th>
10 <th><%=l(:field_type)%></th>
7 <th><%=l(:field_host)%></th>
11 <th><%=l(:field_host)%></th>
8 <th></th>
12 <th></th>
9 <th></th>
13 <th></th>
10 </tr>
14 </tr>
11
15
12 <% for source in @auth_sources %>
16 <% for source in @auth_sources %>
13 <tr class="<%= cycle("odd", "even") %>">
17 <tr class="<%= cycle("odd", "even") %>">
14 <td><%= link_to source.name, :action => 'edit', :id => source%></td>
18 <td><%= link_to source.name, :action => 'edit', :id => source%></td>
15 <td align="center"><%= source.auth_method_name %></td>
19 <td align="center"><%= source.auth_method_name %></td>
16 <td align="center"><%= source.host %></td>
20 <td align="center"><%= source.host %></td>
17 <td align="center">
21 <td align="center">
18 <%= link_to l(:button_test), :action => 'test_connection', :id => source %>
22 <%= link_to l(:button_test), :action => 'test_connection', :id => source %>
19 </td>
23 </td>
20 <td align="center">
24 <td align="center">
21 <%= button_to l(:button_delete), { :action => 'destroy', :id => source }, :confirm => l(:text_are_you_sure), :class => "button-small" %>
25 <%= button_to l(:button_delete), { :action => 'destroy', :id => source }, :confirm => l(:text_are_you_sure), :class => "button-small" %>
22 </td>
26 </td>
23 </tr>
27 </tr>
24 <% end %>
28 <% end %>
25 </table>
29 </table>
26
30
27 <%= pagination_links_full @auth_source_pages %>
31 <%= pagination_links_full @auth_source_pages %>
28 <br />
29 <%= link_to '&#187; ' + l(:label_auth_source_new), :action => 'new' %>
30
@@ -1,48 +1,36
1 <div class="contextual">
2 <%= link_to_if_authorized l(:button_edit), {:controller => 'documents', :action => 'edit', :id => @document}, :class => 'pic picEdit' %>
3 <%= link_to_if_authorized l(:button_delete), {:controller => 'documents', :action => 'destroy', :id => @document}, :confirm => l(:text_are_you_sure), :post => true, :class => 'pic picDelete' %>
4 </div>
5
1 <h2><%= @document.title %></h2>
6 <h2><%= @document.title %></h2>
2
7
3 <p><em><%= @document.category.name %><br />
8 <p><em><%= @document.category.name %><br />
4 <%= format_date @document.created_on %></em></p>
9 <%= format_date @document.created_on %></em></p>
5 <%= textilizable @document.description %>
10 <%= textilizable @document.description %>
6
7
8 <table width="100%">
9 <tr><td><%= link_to_if_authorized l(:button_edit), :controller => 'documents', :action => 'edit', :id => @document %></td>
10 <td align="right">
11 <% if authorize_for('documents', 'destroy') %>
12 <%= start_form_tag({ :controller => 'documents', :action => 'destroy', :id => @document } ) %>
13 <%= submit_tag l(:button_delete) %>
14 <%= end_form_tag %>
15 <% end %>
16 </td></tr>
17 </table>
18 <br />
11 <br />
19
12
20 <h3><%= l(:label_attachment_plural) %></h3>
13 <h3><%= l(:label_attachment_plural) %></h3>
21 <ul>
14 <ul>
22 <% for attachment in @attachments %>
15 <% for attachment in @attachments %>
23 <li>
16 <li>
24 <% if authorize_for('documents', 'destroy_attachment') %>
17 <div class="contextual">
25 <div style="float:right;padding:6px;">
18 <%= link_to_if_authorized l(:button_delete), {:controller => 'documents', :action => 'destroy_attachment', :id => @document, :attachment_id => attachment}, :confirm => l(:text_are_you_sure), :post => true, :class => 'pic picDelete' %>
26 <%= start_form_tag({ :controller => 'documents', :action => 'destroy_attachment', :id => @document, :attachment_id => attachment } ) %>
19 </div>
27 <%= submit_tag l(:button_delete), :class => 'button-small' %>
28 <%= end_form_tag %>
29 </div>
30 <% end %>
31
32 <%= link_to attachment.filename, :action => 'download', :id => @document, :attachment_id => attachment %>
20 <%= link_to attachment.filename, :action => 'download', :id => @document, :attachment_id => attachment %>
33 (<%= human_size attachment.filesize %>)<br />
21 (<%= human_size attachment.filesize %>)<br />
34 <em><%= attachment.author.display_name %>, <%= format_date(attachment.created_on) %></em><br />
22 <em><%= attachment.author.display_name %>, <%= format_date(attachment.created_on) %></em><br />
35 <%= lwr(:label_download, attachment.downloads) %>
23 <%= lwr(:label_download, attachment.downloads) %>
36 </li>
24 </li>
37 <% end %>
25 <% end %>
38 </ul>
26 </ul>
39 <br />
27 <br />
40
28
41
29
42 <% if authorize_for('documents', 'add_attachment') %>
30 <% if authorize_for('documents', 'add_attachment') %>
43 <%= start_form_tag ({ :controller => 'documents', :action => 'add_attachment', :id => @document }, :multipart => true) %>
31 <%= start_form_tag ({ :controller => 'documents', :action => 'add_attachment', :id => @document }, :multipart => true) %>
44 <label><%=l(:label_attachment_new)%></label>&nbsp;&nbsp;
32 <label><%=l(:label_attachment_new)%></label>&nbsp;&nbsp;
45 <%= file_field 'attachment', 'file' %>
33 <%= file_field 'attachment', 'file' %>
46 <%= submit_tag l(:button_add) %>
34 <%= submit_tag l(:button_add) %>
47 <%= end_form_tag %>
35 <%= end_form_tag %>
48 <% end %>
36 <% end %>
@@ -1,28 +1,29
1 <div class="contextual">
2 <%= link_to l(:label_issue_status_new), {:action => 'new'}, :class => 'pic picAdd' %>
3 </div>
4
1 <h2><%=l(:label_issue_status_plural)%></h2>
5 <h2><%=l(:label_issue_status_plural)%></h2>
2
6
3 <table class="listTableContent">
7 <table class="listTableContent">
4 <tr class="ListHead">
8 <tr class="ListHead">
5 <th><%=l(:field_status)%></th>
9 <th><%=l(:field_status)%></th>
6 <th><%=l(:field_is_default)%></th>
10 <th><%=l(:field_is_default)%></th>
7 <th><%=l(:field_is_closed)%></th>
11 <th><%=l(:field_is_closed)%></th>
8 <th><%=l(:field_html_color)%></th>
12 <th><%=l(:field_html_color)%></th>
9 <th></th>
13 <th></th>
10 </tr>
14 </tr>
11
15
12 <% for status in @issue_statuses %>
16 <% for status in @issue_statuses %>
13 <tr class="<%= cycle("odd", "even") %>">
17 <tr class="<%= cycle("odd", "even") %>">
14 <td><%= link_to status.name, :action => 'edit', :id => status %></td>
18 <td><%= link_to status.name, :action => 'edit', :id => status %></td>
15 <td align="center"><%= image_tag 'true' if status.is_default? %></td>
19 <td align="center"><%= image_tag 'true' if status.is_default? %></td>
16 <td align="center"><%= image_tag 'true' if status.is_closed? %></td>
20 <td align="center"><%= image_tag 'true' if status.is_closed? %></td>
17 <td><div style="background-color:#<%= status.html_color %>">&nbsp</div></td>
21 <td><div style="background-color:#<%= status.html_color %>">&nbsp</div></td>
18 <td align="center">
22 <td align="center">
19 <%= button_to l(:button_delete), { :action => 'destroy', :id => status }, :confirm => l(:text_are_you_sure), :class => "button-small" %>
23 <%= button_to l(:button_delete), { :action => 'destroy', :id => status }, :confirm => l(:text_are_you_sure), :class => "button-small" %>
20 </td>
24 </td>
21 </tr>
25 </tr>
22 <% end %>
26 <% end %>
23 </table>
27 </table>
24
28
25 <%= pagination_links_full @issue_status_pages %>
29 <%= pagination_links_full @issue_status_pages %> No newline at end of file
26 <br />
27
28 <%= link_to '&#187; ' + l(:label_issue_status_new), :action => 'new' %>
@@ -1,134 +1,113
1 <h2><%= @issue.tracker.name %> #<%= @issue.id %> - <%= @issue.subject %></h2>
1 <div class="contextual">
2 <div class="topright">
2 <%= l(:label_export_to) %><%= link_to 'PDF', {:action => 'export_pdf', :id => @issue}, :class => 'pic picPdf' %>
3 <small>
4 <%= l(:label_export_to) %>&nbsp;
5 <%= link_to 'PDF', :action => 'export_pdf', :id => @issue %>
6 </small>
7 </div>
3 </div>
4
5 <h2><%= @issue.tracker.name %> #<%= @issue.id %> - <%= @issue.subject %></h2>
8
6
9 <div class="box">
7 <div class="box">
10 <table width="100%">
8 <table width="100%">
11 <tr>
9 <tr>
12 <td width="15%"><b><%=l(:field_status)%> :</b></td><td width="35%"><%= @issue.status.name %></td>
10 <td width="15%"><b><%=l(:field_status)%> :</b></td><td width="35%"><%= @issue.status.name %></td>
13 <td width="15%"><b><%=l(:field_priority)%> :</b></td><td width="35%"><%= @issue.priority.name %></td>
11 <td width="15%"><b><%=l(:field_priority)%> :</b></td><td width="35%"><%= @issue.priority.name %></td>
14 </tr>
12 </tr>
15 <tr>
13 <tr>
16 <td><b><%=l(:field_assigned_to)%> :</b></td><td><%= @issue.assigned_to ? @issue.assigned_to.name : "-" %></td>
14 <td><b><%=l(:field_assigned_to)%> :</b></td><td><%= @issue.assigned_to ? @issue.assigned_to.name : "-" %></td>
17 <td><b><%=l(:field_category)%> :</b></td><td><%= @issue.category ? @issue.category.name : "-" %></td>
15 <td><b><%=l(:field_category)%> :</b></td><td><%= @issue.category ? @issue.category.name : "-" %></td>
18 </tr>
16 </tr>
19 <tr>
17 <tr>
20 <td><b><%=l(:field_author)%> :</b></td><td><%= link_to_user @issue.author %></td>
18 <td><b><%=l(:field_author)%> :</b></td><td><%= link_to_user @issue.author %></td>
21 <td><b><%=l(:field_start_date)%> :</b></td><td><%= format_date(@issue.start_date) %></td>
19 <td><b><%=l(:field_start_date)%> :</b></td><td><%= format_date(@issue.start_date) %></td>
22 </tr>
20 </tr>
23 <tr>
21 <tr>
24 <td><b><%=l(:field_created_on)%> :</b></td><td><%= format_date(@issue.created_on) %></td>
22 <td><b><%=l(:field_created_on)%> :</b></td><td><%= format_date(@issue.created_on) %></td>
25 <td><b><%=l(:field_due_date)%> :</b></td><td><%= format_date(@issue.due_date) %></td>
23 <td><b><%=l(:field_due_date)%> :</b></td><td><%= format_date(@issue.due_date) %></td>
26 </tr>
24 </tr>
27 <tr>
25 <tr>
28 <td><b><%=l(:field_updated_on)%> :</b></td><td><%= format_date(@issue.updated_on) %></td>
26 <td><b><%=l(:field_updated_on)%> :</b></td><td><%= format_date(@issue.updated_on) %></td>
29 <td><b><%=l(:field_done_ratio)%> :</b></td><td><%= @issue.done_ratio %> %</td>
27 <td><b><%=l(:field_done_ratio)%> :</b></td><td><%= @issue.done_ratio %> %</td>
30 </tr>
28 </tr>
31 <tr>
29 <tr>
32 <% n = 0
30 <% n = 0
33 for custom_value in @custom_values %>
31 for custom_value in @custom_values %>
34 <td><b><%= custom_value.custom_field.name %> :</b></td><td><%= show_value custom_value %></td>
32 <td><b><%= custom_value.custom_field.name %> :</b></td><td><%= show_value custom_value %></td>
35 <% n = n + 1
33 <% n = n + 1
36 if (n > 1)
34 if (n > 1)
37 n = 0 %>
35 n = 0 %>
38 </tr><tr>
36 </tr><tr>
39 <%end
37 <%end
40 end %>
38 end %>
41 </tr>
39 </tr>
42 </table>
40 </table>
43 <hr />
41 <hr />
44 <br />
42 <br />
45
43
46 <b><%=l(:field_description)%> :</b><br /><br />
44 <b><%=l(:field_description)%> :</b><br /><br />
47 <%= textilizable @issue.description %>
45 <%= textilizable @issue.description %>
48 <br />
46 <br />
49 <div style="float:left;">
47
50 <% if authorize_for('issues', 'edit') %>
48 <div class="contextual">
51 <%= start_form_tag ({:controller => 'issues', :action => 'edit', :id => @issue}, :method => "get" ) %>
49 <%= link_to_if_authorized l(:button_edit), {:controller => 'issues', :action => 'edit', :id => @issue}, :class => 'pic picEdit' %>
52 <%= submit_tag l(:button_edit) %>
50 <%= link_to_if_authorized l(:button_move), {:controller => 'projects', :action => 'move_issues', :id => @project, "issue_ids[]" => @issue.id }, :class => 'pic picMove' %>
53 <%= end_form_tag %>
51 <%= link_to_if_authorized l(:button_delete), {:controller => 'issues', :action => 'destroy', :id => @issue}, :confirm => l(:text_are_you_sure), :post => true, :class => 'pic picDelete' %>
54 &nbsp;&nbsp;
52 </div>
55 <% end %>
56
53
57 <% if authorize_for('issues', 'change_status') and @status_options and !@status_options.empty? %>
54 <% if authorize_for('issues', 'change_status') and @status_options and !@status_options.empty? %>
58 <%= start_form_tag ({:controller => 'issues', :action => 'change_status', :id => @issue}) %>
55 <%= start_form_tag ({:controller => 'issues', :action => 'change_status', :id => @issue}) %>
59 <%=l(:label_change_status)%> :
56 <%=l(:label_change_status)%> :
60 <select name="new_status_id">
57 <select name="new_status_id">
61 <%= options_from_collection_for_select @status_options, "id", "name" %>
58 <%= options_from_collection_for_select @status_options, "id", "name" %>
62 </select>
59 </select>
63 <%= submit_tag l(:button_change) %>
60 <%= submit_tag l(:button_change) %>
64 <%= end_form_tag %>
61 <%= end_form_tag %>
65 &nbsp;&nbsp;
66 <% end %>
62 <% end %>
67
63
68 <% if authorize_for('projects', 'move_issues') %>
69 <%= start_form_tag ({:controller => 'projects', :action => 'move_issues', :id => @project} ) %>
70 <%= hidden_field_tag "issue_ids[]", @issue.id %>
71 <%= submit_tag l(:button_move) %>
72 <%= end_form_tag %>
73 &nbsp;&nbsp;
74 <% end %>
75 </div>
76 <div style="float:right;">
77 <% if authorize_for('issues', 'destroy') %>
78 <%= start_form_tag ({:controller => 'issues', :action => 'destroy', :id => @issue} ) %>
79 <%= submit_tag l(:button_delete) %>
80 <%= end_form_tag %>
81 &nbsp;&nbsp;
82 <% end %>
83 </div>
84 <div class="clear"></div>
85 </div>
64 </div>
86
65
87 <div id="history" class="box">
66 <div id="history" class="box">
88 <h3><%=l(:label_history)%>
67 <h3><%=l(:label_history)%>
89 <% if @journals_count > @journals.length %>(<%= l(:label_last_changes, @journals.length) %>)<% end %></h3>
68 <% if @journals_count > @journals.length %>(<%= l(:label_last_changes, @journals.length) %>)<% end %></h3>
90 <%= render :partial => 'history', :locals => { :journals => @journals } %>
69 <%= render :partial => 'history', :locals => { :journals => @journals } %>
91 <% if @journals_count > @journals.length %>
70 <% if @journals_count > @journals.length %>
92 <p><center><small>[ <%= link_to l(:label_change_view_all), :action => 'history', :id => @issue %> ]</small></center></p>
71 <p><center><small>[ <%= link_to l(:label_change_view_all), :action => 'history', :id => @issue %> ]</small></center></p>
93 <% end %>
72 <% end %>
94 </div>
73 </div>
95
74
96 <div class="box">
75 <div class="box">
97 <h3><%=l(:label_attachment_plural)%></h3>
76 <h3><%=l(:label_attachment_plural)%></h3>
98 <table width="100%">
77 <table width="100%">
99 <% for attachment in @issue.attachments %>
78 <% for attachment in @issue.attachments %>
100 <tr>
79 <tr>
101 <td><%= image_tag('attachment') %> <%= link_to attachment.filename, :action => 'download', :id => @issue, :attachment_id => attachment %> (<%= human_size(attachment.filesize) %>)</td>
80 <td><%= image_tag('attachment') %> <%= link_to attachment.filename, :action => 'download', :id => @issue, :attachment_id => attachment %> (<%= human_size(attachment.filesize) %>)</td>
102 <td><%= format_date(attachment.created_on) %></td>
81 <td><%= format_date(attachment.created_on) %></td>
103 <td><%= attachment.author.display_name %></td>
82 <td><%= attachment.author.display_name %></td>
104 <% if authorize_for('issues', 'destroy_attachment') %>
83 <% if authorize_for('issues', 'destroy_attachment') %>
105 <td>
84 <td>
106 <%= start_form_tag :action => 'destroy_attachment', :id => @issue, :attachment_id => attachment %>
85 <%= start_form_tag :action => 'destroy_attachment', :id => @issue, :attachment_id => attachment %>
107 <%= submit_tag l(:button_delete), :class => "button-small" %>
86 <%= submit_tag l(:button_delete), :class => "button-small" %>
108 <%= end_form_tag %>
87 <%= end_form_tag %>
109 </td>
88 </td>
110 <% end %>
89 <% end %>
111 </tr>
90 </tr>
112 <% end %>
91 <% end %>
113 </table>
92 </table>
114 <br />
93 <br />
115 <% if authorize_for('issues', 'add_attachment') %>
94 <% if authorize_for('issues', 'add_attachment') %>
116 <%= start_form_tag ({ :controller => 'issues', :action => 'add_attachment', :id => @issue }, :multipart => true, :class => "tabular") %>
95 <%= start_form_tag ({ :controller => 'issues', :action => 'add_attachment', :id => @issue }, :multipart => true, :class => "tabular") %>
117 <p id="attachments_p"><label><%=l(:label_attachment_new)%>&nbsp;
96 <p id="attachments_p"><label><%=l(:label_attachment_new)%>&nbsp;
118 <%= link_to_function image_tag('add'), "addFileField()" %></label>
97 <%= link_to_function image_tag('add'), "addFileField()" %></label>
119 <%= file_field_tag 'attachments[]', :size => 30 %></p>
98 <%= file_field_tag 'attachments[]', :size => 30 %></p>
120 <%= submit_tag l(:button_add) %>
99 <%= submit_tag l(:button_add) %>
121 <%= end_form_tag %>
100 <%= end_form_tag %>
122 <% end %>
101 <% end %>
123 </div>
102 </div>
124
103
125 <% if authorize_for('issues', 'add_note') %>
104 <% if authorize_for('issues', 'add_note') %>
126 <div class="box">
105 <div class="box">
127 <h3><%= l(:label_add_note) %></h3>
106 <h3><%= l(:label_add_note) %></h3>
128 <%= start_form_tag ({:controller => 'issues', :action => 'add_note', :id => @issue}, :class => "tabular" ) %>
107 <%= start_form_tag ({:controller => 'issues', :action => 'add_note', :id => @issue}, :class => "tabular" ) %>
129 <p><label for="notes"><%=l(:field_notes)%></label>
108 <p><label for="notes"><%=l(:field_notes)%></label>
130 <%= text_area_tag 'notes', '', :cols => 60, :rows => 10 %></p>
109 <%= text_area_tag 'notes', '', :cols => 60, :rows => 10 %></p>
131 <%= submit_tag l(:button_add) %>
110 <%= submit_tag l(:button_add) %>
132 <%= end_form_tag %>
111 <%= end_form_tag %>
133 </div>
112 </div>
134 <% end %>
113 <% end %>
@@ -1,38 +1,34
1 <div class="contextual">
2 <%= link_to_if_authorized l(:button_edit), {:controller => 'news', :action => 'edit', :id => @news}, :class => 'pic picEdit' %>
3 <%= link_to_if_authorized l(:button_delete), {:controller => 'news', :action => 'destroy', :id => @news}, :confirm => l(:text_are_you_sure), :post => true, :class => 'pic picDelete' %>
4 </div>
5
1 <h2><%= @news.title %></h2>
6 <h2><%= @news.title %></h2>
2
7
3 <p><em><%= @news.summary %><br />
8 <p><em><%= @news.summary %><br />
4 <%= @news.author.display_name %>, <%= format_time(@news.created_on) %></em></p>
9 <%= @news.author.display_name %>, <%= format_time(@news.created_on) %></em></p>
5 <br />
10 <br />
6 <%= textilizable auto_link @news.description %>
11 <%= textilizable auto_link @news.description %>
7
12 <br />
8 <div style="float:right;">
9 <% if authorize_for('news', 'destroy') %>
10 <%= start_form_tag ({:controller => 'news', :action => 'destroy', :id => @news}) %>
11 <%= submit_tag l(:button_delete) %>
12 <%= end_form_tag %>
13 <% end %>
14 </div>
15
16 <p><%= link_to_if_authorized l(:button_edit), :controller => 'news', :action => 'edit', :id => @news %></p>
17
13
18 <div id="comments" style="margin-bottom:16px;">
14 <div id="comments" style="margin-bottom:16px;">
19 <h3><%= l(:label_comment_plural) %></h3>
15 <h3><%= l(:label_comment_plural) %></h3>
20 <% @news.comments.each do |comment| %>
16 <% @news.comments.each do |comment| %>
21 <% next if comment.new_record? %>
17 <% next if comment.new_record? %>
22 <h4><%= format_time(comment.created_on) %> - <%= comment.author.name %></h4>
18 <h4><%= format_time(comment.created_on) %> - <%= comment.author.name %></h4>
23 <div style="float:right;">
19 <div class="contextual">
24 <small><%= link_to_if_authorized l(:button_delete), {:controller => 'news', :action => 'destroy_comment', :id => @news, :comment_id => comment}, :confirm => l(:text_are_you_sure), :post => true %></small>
20 <%= link_to_if_authorized l(:button_delete), {:controller => 'news', :action => 'destroy_comment', :id => @news, :comment_id => comment}, :confirm => l(:text_are_you_sure), :post => true, :class => 'pic picDelete' %>
25 </div>
21 </div>
26 <%= simple_format(auto_link(h comment.comment))%>
22 <%= simple_format(auto_link(h comment.comment))%>
27 <% end if @news.comments_count > 0 %>
23 <% end if @news.comments_count > 0 %>
28 </div>
24 </div>
29
25
30 <% if authorize_for 'news', 'add_comment' %>
26 <% if authorize_for 'news', 'add_comment' %>
31 <h3><%= l(:label_comment_add) %></h3>
27 <h3><%= l(:label_comment_add) %></h3>
32 <%= start_form_tag :action => 'add_comment', :id => @news %>
28 <%= start_form_tag :action => 'add_comment', :id => @news %>
33 <%= error_messages_for 'comment' %>
29 <%= error_messages_for 'comment' %>
34 <p><label for="comment_comment"><%= l(:field_comment) %></label><br />
30 <p><label for="comment_comment"><%= l(:field_comment) %></label><br />
35 <%= text_area 'comment', 'comment', :cols => 60, :rows => 6 %></p>
31 <%= text_area 'comment', 'comment', :cols => 60, :rows => 6 %></p>
36 <%= submit_tag l(:button_add) %>
32 <%= submit_tag l(:button_add) %>
37 <%= end_form_tag %>
33 <%= end_form_tag %>
38 <% end %> No newline at end of file
34 <% end %>
@@ -1,241 +1,241
1 <h2><%= l(:label_gantt) %></h2>
1 <div class="contextual">
2 <div class="topright">
2 <%= l(:label_export_to) %>
3 <small>
3 <%= link_to 'PDF', {:zoom => @zoom, :year => @year_from, :month => @month_from, :months => @months, :output => 'pdf'}, :class => 'pic picPdf' %>
4 <%= l(:label_export_to) %>&nbsp;&nbsp;<%= link_to 'PDF', :zoom => @zoom, :year => @year_from, :month => @month_from, :months => @months, :output => 'pdf' %>
5 </small>
6 </div>
4 </div>
7
5
6 <h2><%= l(:label_gantt) %></h2>
7
8 <table width="100%">
8 <table width="100%">
9 <tr>
9 <tr>
10 <td align="left">
10 <td align="left">
11 <%= start_form_tag %>
11 <%= start_form_tag %>
12 <input type="text" name="months" size="2" value="<%= @months %>">
12 <input type="text" name="months" size="2" value="<%= @months %>">
13 <%= l(:label_months_from) %>
13 <%= l(:label_months_from) %>
14 <%= select_month(@month_from, :prefix => "month", :discard_type => true) %>
14 <%= select_month(@month_from, :prefix => "month", :discard_type => true) %>
15 <%= select_year(@year_from, :prefix => "year", :discard_type => true) %>
15 <%= select_year(@year_from, :prefix => "year", :discard_type => true) %>
16 <%= hidden_field_tag 'zoom', @zoom %>
16 <%= hidden_field_tag 'zoom', @zoom %>
17 <%= submit_tag l(:button_submit), :class => "button-small" %>
17 <%= submit_tag l(:button_submit), :class => "button-small" %>
18 <%= end_form_tag %>
18 <%= end_form_tag %>
19 </td>
19 </td>
20 <td align="right">
20 <td align="right">
21 <%= if @zoom < 4
21 <%= if @zoom < 4
22 link_to image_tag('zoom_in'), {:zoom => (@zoom+1), :year => @year_from, :month => @month_from, :months => @months}
22 link_to image_tag('zoom_in'), {:zoom => (@zoom+1), :year => @year_from, :month => @month_from, :months => @months}
23 else
23 else
24 image_tag 'zoom_in_g'
24 image_tag 'zoom_in_g'
25 end %>
25 end %>
26 <%= if @zoom > 1
26 <%= if @zoom > 1
27 link_to image_tag('zoom_out'), :zoom => (@zoom-1), :year => @year_from, :month => @month_from, :months => @months
27 link_to image_tag('zoom_out'), :zoom => (@zoom-1), :year => @year_from, :month => @month_from, :months => @months
28 else
28 else
29 image_tag 'zoom_out_g'
29 image_tag 'zoom_out_g'
30 end %>
30 end %>
31 </td>
31 </td>
32 </tr>
32 </tr>
33 </table>
33 </table>
34 <br />
34 <br />
35
35
36 <style>
36 <style>
37 .m_bg {
37 .m_bg {
38 position:absolute;
38 position:absolute;
39 top:0;
39 top:0;
40 height:16px;
40 height:16px;
41 border-top: 1px solid #c0c0c0;
41 border-top: 1px solid #c0c0c0;
42 border-bottom: 1px solid #c0c0c0;
42 border-bottom: 1px solid #c0c0c0;
43 border-right: 1px solid #c0c0c0;
43 border-right: 1px solid #c0c0c0;
44 text-align: center;
44 text-align: center;
45 }
45 }
46
46
47 .task {
47 .task {
48 position: absolute;
48 position: absolute;
49 height:8px;
49 height:8px;
50 font-size:0.8em;
50 font-size:0.8em;
51 color:#888;
51 color:#888;
52 background:#aaa;
52 background:#aaa;
53 padding:0;
53 padding:0;
54 margin:0;
54 margin:0;
55 line-height:0.8em;
55 line-height:0.8em;
56 }
56 }
57
57
58 .task_late {
58 .task_late {
59 background:#f66;
59 background:#f66;
60 }
60 }
61
61
62 .task_done {
62 .task_done {
63 background:#66f;
63 background:#66f;
64 }
64 }
65 </style>
65 </style>
66
66
67 <% zoom = 1
67 <% zoom = 1
68 @zoom.times { zoom = zoom * 2 }
68 @zoom.times { zoom = zoom * 2 }
69
69
70 subject_width = 260
70 subject_width = 260
71 header_heigth = 18
71 header_heigth = 18
72
72
73 headers_heigth = header_heigth
73 headers_heigth = header_heigth
74 show_weeks = false
74 show_weeks = false
75 show_days = false
75 show_days = false
76
76
77 if @zoom >1
77 if @zoom >1
78 show_weeks = true
78 show_weeks = true
79 headers_heigth = 2*header_heigth
79 headers_heigth = 2*header_heigth
80 if @zoom > 2
80 if @zoom > 2
81 show_days = true
81 show_days = true
82 headers_heigth = 3*header_heigth
82 headers_heigth = 3*header_heigth
83 end
83 end
84 end
84 end
85
85
86 g_width = (@date_to - @date_from + 1)*zoom
86 g_width = (@date_to - @date_from + 1)*zoom
87 g_height = [(20 * @issues.length + 6), 206].max
87 g_height = [(20 * @issues.length + 6), 206].max
88 t_height = g_height + headers_heigth
88 t_height = g_height + headers_heigth
89 %>
89 %>
90
90
91 <table width="100%" border=0 cellspacing=0 cellpading=0>
91 <table width="100%" border=0 cellspacing=0 cellpading=0>
92 <tr>
92 <tr>
93 <td width=260>
93 <td width=260>
94
94
95 <div style="position:relative;height:<%= t_height + 24 %>px;width:<%= subject_width + 1 %>px;">
95 <div style="position:relative;height:<%= t_height + 24 %>px;width:<%= subject_width + 1 %>px;">
96 <div style="right:-2px;width:<%= subject_width %>px;height:<%= headers_heigth %>px;" class="m_bg"></div>
96 <div style="right:-2px;width:<%= subject_width %>px;height:<%= headers_heigth %>px;" class="m_bg"></div>
97 <div style="right:-2px;width:<%= subject_width %>px;height:<%= t_height %>px;border-left: 1px solid #c0c0c0;" class="m_bg"></div>
97 <div style="right:-2px;width:<%= subject_width %>px;height:<%= t_height %>px;border-left: 1px solid #c0c0c0;" class="m_bg"></div>
98 <%
98 <%
99 #
99 #
100 # Tasks subjects
100 # Tasks subjects
101 #
101 #
102 top = headers_heigth + 8
102 top = headers_heigth + 8
103 @issues.each do |i| %>
103 @issues.each do |i| %>
104 <div style="position: absolute;line-height:1em;height:16px;top:<%= top %>px;left:4px;width:<%= subject_width - 5 %>px;overflow:hidden;">
104 <div style="position: absolute;line-height:1em;height:16px;top:<%= top %>px;left:4px;width:<%= subject_width - 5 %>px;overflow:hidden;">
105 <small><%= link_to "#{i.tracker.name} ##{i.id}", :controller => 'issues', :action => 'show', :id => i %>:
105 <small><%= link_to "#{i.tracker.name} ##{i.id}", :controller => 'issues', :action => 'show', :id => i %>:
106 <%= i.subject.sub(/^(.{30}[^\s]*\s).*$/, '\1 (...)') %></small>
106 <%= i.subject.sub(/^(.{30}[^\s]*\s).*$/, '\1 (...)') %></small>
107 </div>
107 </div>
108 <% top = top + 20
108 <% top = top + 20
109 end %>
109 end %>
110 </div>
110 </div>
111 </td>
111 </td>
112 <td>
112 <td>
113
113
114 <div style="position:relative;height:<%= t_height + 24 %>px;width:<%= subject_width %>;overflow:auto;">
114 <div style="position:relative;height:<%= t_height + 24 %>px;width:<%= subject_width %>;overflow:auto;">
115 <div style="width:<%= g_width-1 %>px;height:<%= headers_heigth %>px;" class="m_bg">&nbsp;</div>
115 <div style="width:<%= g_width-1 %>px;height:<%= headers_heigth %>px;" class="m_bg">&nbsp;</div>
116 <%
116 <%
117 #
117 #
118 # Months headers
118 # Months headers
119 #
119 #
120 month_f = @date_from
120 month_f = @date_from
121 left = 0
121 left = 0
122 height = (show_weeks ? header_heigth : header_heigth + g_height)
122 height = (show_weeks ? header_heigth : header_heigth + g_height)
123 @months.times do
123 @months.times do
124 width = ((month_f >> 1) - month_f) * zoom - 1
124 width = ((month_f >> 1) - month_f) * zoom - 1
125 %>
125 %>
126 <div style="left:<%= left %>px;width:<%= width %>px;height:<%= height %>px;" class="m_bg">
126 <div style="left:<%= left %>px;width:<%= width %>px;height:<%= height %>px;" class="m_bg">
127 <%= link_to "#{month_f.year}-#{month_f.month}", :year => month_f.year, :month => month_f.month, :zoom => @zoom, :months => @months %>
127 <%= link_to "#{month_f.year}-#{month_f.month}", :year => month_f.year, :month => month_f.month, :zoom => @zoom, :months => @months %>
128 </div>
128 </div>
129 <%
129 <%
130 left = left + width + 1
130 left = left + width + 1
131 month_f = month_f >> 1
131 month_f = month_f >> 1
132 end %>
132 end %>
133
133
134 <%
134 <%
135 #
135 #
136 # Weeks headers
136 # Weeks headers
137 #
137 #
138 if show_weeks
138 if show_weeks
139 left = 0
139 left = 0
140 height = (show_days ? header_heigth-1 : header_heigth-1 + g_height)
140 height = (show_days ? header_heigth-1 : header_heigth-1 + g_height)
141 if @date_from.cwday == 1
141 if @date_from.cwday == 1
142 # @date_from is monday
142 # @date_from is monday
143 week_f = @date_from
143 week_f = @date_from
144 else
144 else
145 # find next monday after @date_from
145 # find next monday after @date_from
146 week_f = @date_from + (7 - @date_from.cwday + 1)
146 week_f = @date_from + (7 - @date_from.cwday + 1)
147 width = (7 - @date_from.cwday + 1) * zoom-1
147 width = (7 - @date_from.cwday + 1) * zoom-1
148 %>
148 %>
149 <div style="left:<%= left %>px;top:19px;width:<%= width %>px;height:<%= height %>px;" class="m_bg">&nbsp;</div>
149 <div style="left:<%= left %>px;top:19px;width:<%= width %>px;height:<%= height %>px;" class="m_bg">&nbsp;</div>
150 <%
150 <%
151 left = left + width+1
151 left = left + width+1
152 end %>
152 end %>
153 <%
153 <%
154 while week_f < @date_to
154 while week_f < @date_to
155 width = (week_f + 6 <= @date_to) ? 7 * zoom -1 : (@date_to - week_f + 1) * zoom-1
155 width = (week_f + 6 <= @date_to) ? 7 * zoom -1 : (@date_to - week_f + 1) * zoom-1
156 %>
156 %>
157 <div style="left:<%= left %>px;top:19px;width:<%= width %>px;height:<%= height %>px;" class="m_bg">
157 <div style="left:<%= left %>px;top:19px;width:<%= width %>px;height:<%= height %>px;" class="m_bg">
158 <small><%= week_f.cweek %></small>
158 <small><%= week_f.cweek %></small>
159 </div>
159 </div>
160 <%
160 <%
161 left = left + width+1
161 left = left + width+1
162 week_f = week_f+7
162 week_f = week_f+7
163 end
163 end
164 end %>
164 end %>
165
165
166 <%
166 <%
167 #
167 #
168 # Days headers
168 # Days headers
169 #
169 #
170 if show_days
170 if show_days
171 left = 0
171 left = 0
172 height = g_height + header_heigth - 1
172 height = g_height + header_heigth - 1
173 wday = @date_from.cwday
173 wday = @date_from.cwday
174 (@date_to - @date_from + 1).to_i.times do
174 (@date_to - @date_from + 1).to_i.times do
175 width = zoom - 1
175 width = zoom - 1
176 %>
176 %>
177 <div style="left:<%= left %>px;top:37px;width:<%= width %>px;height:<%= height %>px;font-size:0.7em;<%= "background:#f1f1f1;" if wday > 5 %>" class="m_bg">
177 <div style="left:<%= left %>px;top:37px;width:<%= width %>px;height:<%= height %>px;font-size:0.7em;<%= "background:#f1f1f1;" if wday > 5 %>" class="m_bg">
178 <%= day_name(wday)[0,1] %>
178 <%= day_name(wday)[0,1] %>
179 </div>
179 </div>
180 <%
180 <%
181 left = left + width+1
181 left = left + width+1
182 wday = wday + 1
182 wday = wday + 1
183 wday = 1 if wday > 7
183 wday = 1 if wday > 7
184 end
184 end
185 end %>
185 end %>
186
186
187 <%
187 <%
188 #
188 #
189 # Today red line
189 # Today red line
190 #
190 #
191 if Date.today >= @date_from and Date.today <= @date_to %>
191 if Date.today >= @date_from and Date.today <= @date_to %>
192 <div style="position: absolute;height:<%= g_height %>px;top:<%= headers_heigth + 1 %>px;left:<%= ((Date.today-@date_from+1)*zoom).floor()-1 %>px;width:10px;border-left: 1px dashed red;">&nbsp;</div>
192 <div style="position: absolute;height:<%= g_height %>px;top:<%= headers_heigth + 1 %>px;left:<%= ((Date.today-@date_from+1)*zoom).floor()-1 %>px;width:10px;border-left: 1px dashed red;">&nbsp;</div>
193 <% end %>
193 <% end %>
194
194
195 <%
195 <%
196 #
196 #
197 # Tasks
197 # Tasks
198 #
198 #
199 top = headers_heigth + 12
199 top = headers_heigth + 12
200 @issues.each do |i| %>
200 @issues.each do |i| %>
201 <%
201 <%
202 i_start_date = (i.start_date >= @date_from ? i.start_date : @date_from )
202 i_start_date = (i.start_date >= @date_from ? i.start_date : @date_from )
203 i_end_date = (i.due_date <= @date_to ? i.due_date : @date_to )
203 i_end_date = (i.due_date <= @date_to ? i.due_date : @date_to )
204
204
205 i_done_date = i.start_date + ((i.due_date - i.start_date+1)*i.done_ratio/100).floor
205 i_done_date = i.start_date + ((i.due_date - i.start_date+1)*i.done_ratio/100).floor
206 i_done_date = (i_done_date <= @date_from ? @date_from : i_done_date )
206 i_done_date = (i_done_date <= @date_from ? @date_from : i_done_date )
207 i_done_date = (i_done_date >= @date_to ? @date_to : i_done_date )
207 i_done_date = (i_done_date >= @date_to ? @date_to : i_done_date )
208
208
209 i_late_date = [i_end_date, Date.today].min if i_start_date < Date.today
209 i_late_date = [i_end_date, Date.today].min if i_start_date < Date.today
210
210
211 i_left = ((i_start_date - @date_from)*zoom).floor
211 i_left = ((i_start_date - @date_from)*zoom).floor
212 i_width = ((i_end_date - i_start_date + 1)*zoom).floor
212 i_width = ((i_end_date - i_start_date + 1)*zoom).floor
213 d_width = ((i_done_date - i_start_date)*zoom).floor
213 d_width = ((i_done_date - i_start_date)*zoom).floor
214 l_width = ((i_late_date - i_start_date+1)*zoom).floor if i_late_date
214 l_width = ((i_late_date - i_start_date+1)*zoom).floor if i_late_date
215 l_width ||= 0
215 l_width ||= 0
216 %>
216 %>
217 <div style="top:<%= top %>px;left:<%= i_left %>px;width:<%= i_width %>px;" class="task">&nbsp;</div>
217 <div style="top:<%= top %>px;left:<%= i_left %>px;width:<%= i_width %>px;" class="task">&nbsp;</div>
218 <% if l_width > 0 %>
218 <% if l_width > 0 %>
219 <div style="top:<%= top %>px;left:<%= i_left %>px;width:<%= l_width %>px;" class="task task_late">&nbsp;</div>
219 <div style="top:<%= top %>px;left:<%= i_left %>px;width:<%= l_width %>px;" class="task task_late">&nbsp;</div>
220 <% end %>
220 <% end %>
221 <% if d_width > 0 %>
221 <% if d_width > 0 %>
222 <div style="top:<%= top %>px;left:<%= i_left %>px;width:<%= d_width %>px;" class="task task_done">&nbsp;</div>
222 <div style="top:<%= top %>px;left:<%= i_left %>px;width:<%= d_width %>px;" class="task task_done">&nbsp;</div>
223 <% end %>
223 <% end %>
224 <div style="top:<%= top %>px;left:<%= i_left + i_width + 5 %>px;background:#fff;" class="task">
224 <div style="top:<%= top %>px;left:<%= i_left + i_width + 5 %>px;background:#fff;" class="task">
225 <%= i.status.name %>
225 <%= i.status.name %>
226 <%= (i.done_ratio).to_i %>%
226 <%= (i.done_ratio).to_i %>%
227 </div>
227 </div>
228 <% top = top + 20
228 <% top = top + 20
229 end %>
229 end %>
230 </div>
230 </div>
231 </td>
231 </td>
232 </tr>
232 </tr>
233 </table>
233 </table>
234
234
235 <table width="100%">
235 <table width="100%">
236 <tr>
236 <tr>
237 <td align="left"><%= link_to ('&#171; ' + l(:label_previous)), :year => (@date_from << @months).year, :month => (@date_from << @months).month, :zoom => @zoom, :months => @months %></td>
237 <td align="left"><%= link_to ('&#171; ' + l(:label_previous)), :year => (@date_from << @months).year, :month => (@date_from << @months).month, :zoom => @zoom, :months => @months %></td>
238 <td>
238 <td>
239 <td align="right"><%= link_to (l(:label_next) + ' &#187;'), :year => (@date_from >> @months).year, :month => (@date_from >> @months).month, :zoom => @zoom, :months => @months %></td>
239 <td align="right"><%= link_to (l(:label_next) + ' &#187;'), :year => (@date_from >> @months).year, :month => (@date_from >> @months).month, :zoom => @zoom, :months => @months %></td>
240 </tr>
240 </tr>
241 </table> No newline at end of file
241 </table>
@@ -1,23 +1,23
1 <div class="contextual">
2 <%= link_to_if_authorized l(:label_document_new), {:controller => 'projects', :action => 'add_document', :id => @project}, :class => 'pic picAdd' %>
3 </div>
4
1 <h2><%=l(:label_document_plural)%></h2>
5 <h2><%=l(:label_document_plural)%></h2>
2
6
3 <% if @documents.empty? %><p><i><%= l(:label_no_data) %></i></p><% end %>
7 <% if @documents.empty? %><p><i><%= l(:label_no_data) %></i></p><% end %>
4
8
5 <% documents = @documents.group_by {|d| d.category } %>
9 <% documents = @documents.group_by {|d| d.category } %>
6 <% documents.each do |category, docs| %>
10 <% documents.each do |category, docs| %>
7 <h3><%= category.name %></h3>
11 <h3><%= category.name %></h3>
8 <ul>
12 <ul>
9 <% docs.each do |d| %>
13 <% docs.each do |d| %>
10 <li>
14 <li>
11 <b><%= link_to d.title, :controller => 'documents', :action => 'show', :id => d %></b>
15 <b><%= link_to d.title, :controller => 'documents', :action => 'show', :id => d %></b>
12 <br />
16 <br />
13 <%= truncate d.description, 250 %><br />
17 <%= truncate d.description, 250 %><br />
14 <em><%= format_time(d.created_on) %></em><br />&nbsp;
18 <em><%= format_time(d.created_on) %></em><br />&nbsp;
15 </li>
19 </li>
16
20
17 <% end %>
21 <% end %>
18 </ul>
22 </ul>
19 <% end %>
23 <% end %> No newline at end of file
20
21 <p>
22 <%= link_to_if_authorized '&#187; ' + l(:label_document_new), :controller => 'projects', :action => 'add_document', :id => @project %>
23 </p>
@@ -1,46 +1,43
1 <div class="contextual">
2 <%= link_to_if_authorized l(:label_attachment_new), {:controller => 'projects', :action => 'add_file', :id => @project}, :class => 'pic picAdd' %>
3 </div>
4
1 <h2><%=l(:label_attachment_plural)%></h2>
5 <h2><%=l(:label_attachment_plural)%></h2>
2
6
3 <% delete_allowed = authorize_for('versions', 'destroy_file') %>
7 <% delete_allowed = authorize_for('versions', 'destroy_file') %>
4
8
5 <table class="listTableContent">
9 <table class="listTableContent">
6 <tr class="ListHead">
10 <tr class="ListHead">
7 <th><%=l(:field_version)%></th>
11 <th><%=l(:field_version)%></th>
8 <th><%=l(:field_filename)%></th>
12 <th><%=l(:field_filename)%></th>
9 <th><%=l(:label_date)%></th>
13 <th><%=l(:label_date)%></th>
10 <th><%=l(:field_filesize)%></th>
14 <th><%=l(:field_filesize)%></th>
11 <th>D/L</th>
15 <th>D/L</th>
12 <th>MD5</th>
16 <th>MD5</th>
13 <% if delete_allowed %><th></th><% end %>
17 <% if delete_allowed %><th></th><% end %>
14 </tr>
18 </tr>
15
19
16 <% for version in @versions %>
20 <% for version in @versions %>
17 <% unless version.attachments.empty? %>
21 <% unless version.attachments.empty? %>
18 <tr><td colspan="7"><%= image_tag 'package' %> <b><%= version.name %></b></td></tr>
22 <tr><td colspan="7"><%= image_tag 'package' %> <b><%= version.name %></b></td></tr>
19 <% for file in version.attachments %>
23 <% for file in version.attachments %>
20 <tr class="<%= cycle("odd", "even") %>">
24 <tr class="<%= cycle("odd", "even") %>">
21 <td></td>
25 <td></td>
22 <td><%= link_to file.filename, :controller => 'versions', :action => 'download', :id => version, :attachment_id => file %></td>
26 <td><%= link_to file.filename, :controller => 'versions', :action => 'download', :id => version, :attachment_id => file %></td>
23 <td align="center"><%= format_date(file.created_on) %></td>
27 <td align="center"><%= format_date(file.created_on) %></td>
24 <td align="center"><%= human_size(file.filesize) %></td>
28 <td align="center"><%= human_size(file.filesize) %></td>
25 <td align="center"><%= file.downloads %></td>
29 <td align="center"><%= file.downloads %></td>
26 <td align="center"><small><%= file.digest %></small></td>
30 <td align="center"><small><%= file.digest %></small></td>
27 <% if delete_allowed %>
31 <% if delete_allowed %>
28 <td align="center">
32 <td align="center">
29 <%= start_form_tag :controller => 'versions', :action => 'destroy_file', :id => version, :attachment_id => file %>
33 <div class="contextual">
30 <%= submit_tag l(:button_delete), :class => "button-small" %>
34 <%= link_to_if_authorized l(:button_delete), {:controller => 'versions', :action => 'destroy_file', :id => version, :attachment_id => file}, :confirm => l(:text_are_you_sure), :post => true, :class => 'pic picDelete' %>
31 <%= end_form_tag %>
35 </div>
32 </td>
36 </td>
33 <% end %>
37 <% end %>
34 </tr>
38 </tr>
35 <% end
39 <% end
36 reset_cycle %>
40 reset_cycle %>
37 <% end %>
41 <% end %>
38 <% end %>
42 <% end %>
39 </table>
43 </table> No newline at end of file
40
41 <br />
42 <p>
43 <%= link_to_if_authorized '&#187; ' + l(:label_attachment_new), :controller => 'projects', :action => 'add_file', :id => @project %>
44 </p>
45
46
@@ -1,76 +1,75
1 <h2><%=l(:label_issue_plural)%></h2>
1 <div class="contextual">
2 <div class="topright">
2 <%= l(:label_export_to) %>
3 <small>
3 <%= link_to 'CSV', {:action => 'export_issues_csv', :id => @project}, :class => 'pic picCsv' %>,
4 <%= l(:label_export_to) %>&nbsp;
4 <%= link_to 'PDF', {:action => 'export_issues_pdf', :id => @project}, :class => 'pic picPdf' %>
5 <%= link_to 'CSV', :action => 'export_issues_csv', :id => @project %>,
6 <%= link_to 'PDF', :action => 'export_issues_pdf', :id => @project %>
7 </small>
8 </div>
5 </div>
9
6
7 <h2><%=l(:label_issue_plural)%></h2>
8
10 <%= start_form_tag :action => 'list_issues' %>
9 <%= start_form_tag :action => 'list_issues' %>
11 <table cellpadding=2>
10 <table cellpadding=2>
12 <tr>
11 <tr>
13 <td valign="bottom"><small><%=l(:field_status)%>:</small><br /><%= search_filter_tag 'status_id', :class => 'select-small' %></td>
12 <td valign="bottom"><small><%=l(:field_status)%>:</small><br /><%= search_filter_tag 'status_id', :class => 'select-small' %></td>
14 <td valign="bottom"><small><%=l(:field_tracker)%>:</small><br /><%= search_filter_tag 'tracker_id', :class => 'select-small' %></td>
13 <td valign="bottom"><small><%=l(:field_tracker)%>:</small><br /><%= search_filter_tag 'tracker_id', :class => 'select-small' %></td>
15 <td valign="bottom"><small><%=l(:field_priority)%>:</small><br /><%= search_filter_tag 'priority_id', :class => 'select-small' %></td>
14 <td valign="bottom"><small><%=l(:field_priority)%>:</small><br /><%= search_filter_tag 'priority_id', :class => 'select-small' %></td>
16 <td valign="bottom"><small><%=l(:field_category)%>:</small><br /><%= search_filter_tag 'category_id', :class => 'select-small' %></td>
15 <td valign="bottom"><small><%=l(:field_category)%>:</small><br /><%= search_filter_tag 'category_id', :class => 'select-small' %></td>
17 <td valign="bottom"><small><%=l(:field_fixed_version)%>:</small><br /><%= search_filter_tag 'fixed_version_id', :class => 'select-small' %></td>
16 <td valign="bottom"><small><%=l(:field_fixed_version)%>:</small><br /><%= search_filter_tag 'fixed_version_id', :class => 'select-small' %></td>
18 <td valign="bottom"><small><%=l(:field_author)%>:</small><br /><%= search_filter_tag 'author_id', :class => 'select-small' %></td>
17 <td valign="bottom"><small><%=l(:field_author)%>:</small><br /><%= search_filter_tag 'author_id', :class => 'select-small' %></td>
19 <td valign="bottom"><small><%=l(:field_assigned_to)%>:</small><br /><%= search_filter_tag 'assigned_to_id', :class => 'select-small' %></td>
18 <td valign="bottom"><small><%=l(:field_assigned_to)%>:</small><br /><%= search_filter_tag 'assigned_to_id', :class => 'select-small' %></td>
20 <td valign="bottom"><small><%=l(:label_subproject_plural)%>:</small><br /><%= search_filter_tag 'subproject_id', :class => 'select-small' %></td>
19 <td valign="bottom"><small><%=l(:label_subproject_plural)%>:</small><br /><%= search_filter_tag 'subproject_id', :class => 'select-small' %></td>
21 <td valign="bottom">
20 <td valign="bottom">
22 <%= hidden_field_tag 'set_filter', 1 %>
21 <%= hidden_field_tag 'set_filter', 1 %>
23 <%= submit_tag l(:button_apply), :class => 'button-small' %>
22 <%= submit_tag l(:button_apply), :class => 'button-small' %>
24 </td>
23 </td>
25 <td valign="bottom">
24 <td valign="bottom">
26 <%= link_to l(:button_clear), :action => 'list_issues', :id => @project, :set_filter => 1 %>
25 <%= link_to l(:button_clear), :action => 'list_issues', :id => @project, :set_filter => 1 %>
27 </td>
26 </td>
28 </tr>
27 </tr>
29 </table>
28 </table>
30 <%= end_form_tag %>
29 <%= end_form_tag %>
31
30
32 &nbsp;
31 &nbsp;
33 <table class="listTableContent">
32 <table class="listTableContent">
34 <tr>
33 <tr>
35 <td colspan="6" align="left"><small><%= check_all_links 'issues_form' %></small></td>
34 <td colspan="6" align="left"><small><%= check_all_links 'issues_form' %></small></td>
36 <td colspan="2" align="right">
35 <td colspan="2" align="right">
37 <small><%= l(:label_per_page) %>:</small>
36 <small><%= l(:label_per_page) %>:</small>
38 <%= start_form_tag %>
37 <%= start_form_tag %>
39 <%= select_tag 'per_page', options_for_select(@results_per_page_options, @results_per_page), :class => 'select-small'%>
38 <%= select_tag 'per_page', options_for_select(@results_per_page_options, @results_per_page), :class => 'select-small'%>
40 <%= submit_tag l(:button_apply), :class => 'button-small'%>
39 <%= submit_tag l(:button_apply), :class => 'button-small'%>
41 <%= end_form_tag %>
40 <%= end_form_tag %>
42 </td>
41 </td>
43 </tr>
42 </tr>
44 </table>
43 </table>
45 <%= start_form_tag({:controller => 'projects', :action => 'move_issues', :id => @project}, :id => 'issues_form' ) %>
44 <%= start_form_tag({:controller => 'projects', :action => 'move_issues', :id => @project}, :id => 'issues_form' ) %>
46 <table class="listTableContent">
45 <table class="listTableContent">
47
46
48 <tr class="ListHead">
47 <tr class="ListHead">
49 <td></td>
48 <td></td>
50 <%= sort_header_tag('issues.id', :caption => '#') %>
49 <%= sort_header_tag('issues.id', :caption => '#') %>
51 <%= sort_header_tag('issue_statuses.name', :caption => l(:field_status)) %>
50 <%= sort_header_tag('issue_statuses.name', :caption => l(:field_status)) %>
52 <%= sort_header_tag('issues.tracker_id', :caption => l(:field_tracker)) %>
51 <%= sort_header_tag('issues.tracker_id', :caption => l(:field_tracker)) %>
53 <th><%=l(:field_subject)%></th>
52 <th><%=l(:field_subject)%></th>
54 <%= sort_header_tag('users.lastname', :caption => l(:field_author)) %>
53 <%= sort_header_tag('users.lastname', :caption => l(:field_author)) %>
55 <%= sort_header_tag('issues.created_on', :caption => l(:field_created_on)) %>
54 <%= sort_header_tag('issues.created_on', :caption => l(:field_created_on)) %>
56 <%= sort_header_tag('issues.updated_on', :caption => l(:field_updated_on)) %>
55 <%= sort_header_tag('issues.updated_on', :caption => l(:field_updated_on)) %>
57 </tr>
56 </tr>
58 <% for issue in @issues %>
57 <% for issue in @issues %>
59 <tr class="<%= cycle("odd", "even") %>">
58 <tr class="<%= cycle("odd", "even") %>">
60 <td width="15"><%= check_box_tag "issue_ids[]", issue.id %></td>
59 <td width="15"><%= check_box_tag "issue_ids[]", issue.id %></td>
61 <td align="center"><%= link_to issue.long_id, :controller => 'issues', :action => 'show', :id => issue %></td>
60 <td align="center"><%= link_to issue.long_id, :controller => 'issues', :action => 'show', :id => issue %></td>
62 <td align="center" style="font-weight:bold;color:#<%= issue.status.html_color %>;"><%= issue.status.name %></font></td>
61 <td align="center" style="font-weight:bold;color:#<%= issue.status.html_color %>;"><%= issue.status.name %></font></td>
63 <td align="center"><%= issue.tracker.name %></td>
62 <td align="center"><%= issue.tracker.name %></td>
64 <td><%= link_to issue.subject, :controller => 'issues', :action => 'show', :id => issue %></td>
63 <td><%= link_to issue.subject, :controller => 'issues', :action => 'show', :id => issue %></td>
65 <td align="center"><%= issue.author.display_name %></td>
64 <td align="center"><%= issue.author.display_name %></td>
66 <td align="center"><%= format_time(issue.created_on) %></td>
65 <td align="center"><%= format_time(issue.created_on) %></td>
67 <td align="center"><%= format_time(issue.updated_on) %></td>
66 <td align="center"><%= format_time(issue.updated_on) %></td>
68 </tr>
67 </tr>
69 <% end %>
68 <% end %>
70 </table>
69 </table>
71 <p>
70 <p>
72 <%= pagination_links_full @issue_pages %>
71 <%= pagination_links_full @issue_pages %>
73 [ <%= @issue_pages.current.first_item %> - <%= @issue_pages.current.last_item %> / <%= @issue_count %> ]
72 [ <%= @issue_pages.current.first_item %> - <%= @issue_pages.current.last_item %> / <%= @issue_count %> ]
74 </p>
73 </p>
75 <%= submit_tag l(:button_move) %>
74 <%= submit_tag l(:button_move) %>
76 <%= end_form_tag %> No newline at end of file
75 <%= end_form_tag %>
@@ -1,19 +1,20
1 <div class="contextual">
2 <%= link_to_if_authorized l(:label_news_new), {:controller => 'projects', :action => 'add_news', :id => @project}, :class => 'pic picAdd' %>
3 </div>
4
1 <h2><%=l(:label_news_plural)%></h2>
5 <h2><%=l(:label_news_plural)%></h2>
2
6
3 <% if @news.empty? %><p><i><%= l(:label_no_data) %></i></p><% end %>
7 <% if @news.empty? %><p><i><%= l(:label_no_data) %></i></p><% end %>
4
8
5 <ul>
9 <ul>
6 <% for news in @news %>
10 <% for news in @news %>
7 <li><%= link_to news.title, :controller => 'news', :action => 'show', :id => news %><br />
11 <li><%= link_to news.title, :controller => 'news', :action => 'show', :id => news %><br />
8 <% unless news.summary.empty? %><%= news.summary %><br /><% end %>
12 <% unless news.summary.empty? %><%= news.summary %><br /><% end %>
9 <em><%= news.author.name %>, <%= format_time(news.created_on) %></em><br />
13 <em><%= news.author.name %>, <%= format_time(news.created_on) %></em><br />
10 <%= news.comments_count %> <%= lwr(:label_comment, news.comments_count).downcase %><br />&nbsp;
14 <%= news.comments_count %> <%= lwr(:label_comment, news.comments_count).downcase %><br />&nbsp;
11 </li>
15 </li>
12 <% end %>
16 <% end %>
13 </ul>
17 </ul>
14
18
15
19
16 <%= pagination_links_full @news_pages %>
20 <%= pagination_links_full @news_pages %>
17 <p>
18 <%= link_to_if_authorized '&#187; ' + l(:label_news_new), :controller => 'projects', :action => 'add_news', :id => @project %>
19 </p>
@@ -1,21 +1,22
1 <div class="contextual">
2 <%= link_to l(:label_role_new), {:action => 'new'}, :class => 'pic picAdd' %>
3 </div>
4
1 <h2><%=l(:label_role_plural)%></h2>
5 <h2><%=l(:label_role_plural)%></h2>
2
6
3 <table class="listTableContent">
7 <table class="listTableContent">
4 <tr class="ListHead">
8 <tr class="ListHead">
5 <th><%=l(:label_role)%></th>
9 <th><%=l(:label_role)%></th>
6 <th></th>
10 <th></th>
7 </tr>
11 </tr>
8
12
9 <% for role in @roles %>
13 <% for role in @roles %>
10 <tr class="<%= cycle("odd", "even") %>">
14 <tr class="<%= cycle("odd", "even") %>">
11 <td><%= link_to role.name, :action => 'edit', :id => role %></td>
15 <td><%= link_to role.name, :action => 'edit', :id => role %></td>
12 <td align="center">
16 <td align="center">
13 <%= button_to l(:button_delete), { :action => 'destroy', :id => role }, :confirm => l(:text_are_you_sure), :class => "button-small" %>
17 <%= button_to l(:button_delete), { :action => 'destroy', :id => role }, :confirm => l(:text_are_you_sure), :class => "button-small" %>
14 </tr>
18 </tr>
15 <% end %>
19 <% end %>
16 </table>
20 </table>
17
21
18 <%= pagination_links_full @role_pages %>
22 <%= pagination_links_full @role_pages %> No newline at end of file
19 <br />
20
21 <%= link_to '&#187; ' + l(:label_role_new), :action => 'new' %>
@@ -1,22 +1,23
1 <div class="contextual">
2 <%= link_to l(:label_tracker_new), {:action => 'new'}, :class => 'pic picAdd' %>
3 </div>
4
1 <h2><%=l(:label_tracker_plural)%></h2>
5 <h2><%=l(:label_tracker_plural)%></h2>
2
6
3 <table class="listTableContent">
7 <table class="listTableContent">
4 <tr class="ListHead">
8 <tr class="ListHead">
5 <th><%=l(:label_tracker)%></th>
9 <th><%=l(:label_tracker)%></th>
6 <th></th>
10 <th></th>
7 </tr>
11 </tr>
8
12
9 <% for tracker in @trackers %>
13 <% for tracker in @trackers %>
10 <tr class="<%= cycle("odd", "even") %>">
14 <tr class="<%= cycle("odd", "even") %>">
11 <td><%= link_to tracker.name, :action => 'edit', :id => tracker %></td>
15 <td><%= link_to tracker.name, :action => 'edit', :id => tracker %></td>
12 <td align="center">
16 <td align="center">
13 <%= button_to l(:button_delete), { :action => 'destroy', :id => tracker }, :confirm => l(:text_are_you_sure), :class => "button-small" %>
17 <%= button_to l(:button_delete), { :action => 'destroy', :id => tracker }, :confirm => l(:text_are_you_sure), :class => "button-small" %>
14 </td>
18 </td>
15 </tr>
19 </tr>
16 <% end %>
20 <% end %>
17 </table>
21 </table>
18
22
19 <%= pagination_links_full @tracker_pages %>
23 <%= pagination_links_full @tracker_pages %> No newline at end of file
20 <br />
21
22 <%= link_to '&#187; ' + l(:label_tracker_new), :action => 'new' %>
@@ -1,46 +1,46
1 <div class="contextual">
2 <%= link_to l(:label_user_new), {:action => 'add'}, :class => 'pic picAdd' %>
3 </div>
4
1 <h2><%=l(:label_user_plural)%></h2>
5 <h2><%=l(:label_user_plural)%></h2>
2
6
3 <table class="listTableContent">
7 <table class="listTableContent">
4 <tr class="ListHead">
8 <tr class="ListHead">
5 <%= sort_header_tag('login', :caption => l(:field_login)) %>
9 <%= sort_header_tag('login', :caption => l(:field_login)) %>
6 <%= sort_header_tag('firstname', :caption => l(:field_firstname)) %>
10 <%= sort_header_tag('firstname', :caption => l(:field_firstname)) %>
7 <%= sort_header_tag('lastname', :caption => l(:field_lastname)) %>
11 <%= sort_header_tag('lastname', :caption => l(:field_lastname)) %>
8 <th><%=l(:field_mail)%></th>
12 <th><%=l(:field_mail)%></th>
9 <%= sort_header_tag('admin', :caption => l(:field_admin)) %>
13 <%= sort_header_tag('admin', :caption => l(:field_admin)) %>
10 <%= sort_header_tag('status', :caption => l(:field_status)) %>
14 <%= sort_header_tag('status', :caption => l(:field_status)) %>
11 <%= sort_header_tag('created_on', :caption => l(:field_created_on)) %>
15 <%= sort_header_tag('created_on', :caption => l(:field_created_on)) %>
12 <%= sort_header_tag('last_login_on', :caption => l(:field_last_login_on)) %>
16 <%= sort_header_tag('last_login_on', :caption => l(:field_last_login_on)) %>
13 <th></th>
17 <th></th>
14 </tr>
18 </tr>
15 <% for user in @users %>
19 <% for user in @users %>
16 <tr class="<%= cycle("odd", "even") %>">
20 <tr class="<%= cycle("odd", "even") %>">
17 <td><%= link_to user.login, :action => 'edit', :id => user %></td>
21 <td><%= link_to user.login, :action => 'edit', :id => user %></td>
18 <td><%= user.firstname %></td>
22 <td><%= user.firstname %></td>
19 <td><%= user.lastname %></td>
23 <td><%= user.lastname %></td>
20 <td><%= user.mail %></td>
24 <td><%= user.mail %></td>
21 <td align="center"><%= image_tag 'true' if user.admin? %></td>
25 <td align="center"><%= image_tag 'true' if user.admin? %></td>
22 <td align="center"><%= image_tag 'locked' if user.locked? %><%= image_tag 'user_new' if user.registered? %></td>
26 <td align="center"><%= image_tag 'locked' if user.locked? %><%= image_tag 'user_new' if user.registered? %></td>
23 <td align="center"><%= format_time(user.created_on) %></td>
27 <td align="center"><%= format_time(user.created_on) %></td>
24 <td align="center"><%= format_time(user.last_login_on) unless user.last_login_on.nil? %></td>
28 <td align="center"><%= format_time(user.last_login_on) unless user.last_login_on.nil? %></td>
25 <td align="center">
29 <td align="center">
26 <%= start_form_tag :action => 'edit', :id => user %>
30 <%= start_form_tag :action => 'edit', :id => user %>
27 <% if user.locked? %>
31 <% if user.locked? %>
28 <%= hidden_field_tag 'user[status]', User::STATUS_ACTIVE %>
32 <%= hidden_field_tag 'user[status]', User::STATUS_ACTIVE %>
29 <%= submit_tag l(:button_unlock), :class => "button-small" %>
33 <%= submit_tag l(:button_unlock), :class => "button-small" %>
30 <% else %>
34 <% else %>
31 <%= hidden_field_tag 'user[status]', User::STATUS_LOCKED %>
35 <%= hidden_field_tag 'user[status]', User::STATUS_LOCKED %>
32 <%= submit_tag l(:button_lock), :class => "button-small" %>
36 <%= submit_tag l(:button_lock), :class => "button-small" %>
33 <% end %>
37 <% end %>
34 <%= end_form_tag %>
38 <%= end_form_tag %>
35 </td>
39 </td>
36 </tr>
40 </tr>
37 <% end %>
41 <% end %>
38 </table>
42 </table>
39
43
40 <p><%= pagination_links_full @user_pages %>
44 <p><%= pagination_links_full @user_pages %>
41 [ <%= @user_pages.current.first_item %> - <%= @user_pages.current.last_item %> / <%= @user_count %> ]
45 [ <%= @user_pages.current.first_item %> - <%= @user_pages.current.last_item %> / <%= @user_count %> ]
42 </p>
43
44 <p>
45 <%= link_to '&#187; ' + l(:label_user_new), :action => 'add' %>
46 </p> No newline at end of file
46 </p>
@@ -1,96 +1,97
1 == redMine changelog
1 == redMine changelog
2
2
3 redMine - project management software
3 redMine - project management software
4 Copyright (C) 2006 Jean-Philippe Lang
4 Copyright (C) 2006 Jean-Philippe Lang
5 http://redmine.org/
5 http://redmine.org/
6
6
7
7
8 == xx/xx/2006 v0.x.x
8 == xx/xx/2006 v0.x.x
9
9
10 * comments can now be added on news
10 * "my page" is now customizable
11 * "my page" is now customizable
11 * improved issues change history
12 * improved issues change history
12 * new functionality: move an issue to another project or tracker
13 * new functionality: move an issue to another project or tracker
13 * new functionality: add a note to an issue
14 * new functionality: add a note to an issue
14 * new report: project activity
15 * new report: project activity
15 * "start date" and "% done" fields added on issues
16 * "start date" and "% done" fields added on issues
16 * project calendar added
17 * project calendar added
17 * gantt chart added (exportable to pdf)
18 * gantt chart added (exportable to pdf)
18 * single/multiple issues pdf export added
19 * single/multiple issues pdf export added
19 * issues reports improvements
20 * issues reports improvements
20 * multiple file upload for issues attachments
21 * multiple file upload for issues attachments
21 * textile formating of issue and news descritions (RedCloth required)
22 * textile formating of issue and news descritions (RedCloth required)
22 * integration of DotClear jstoolbar for textile formatting
23 * integration of DotClear jstoolbar for textile formatting
23 * calendar date picker for date fields (LGPL DHTML Calendar http://sourceforge.net/projects/jscalendar)
24 * calendar date picker for date fields (LGPL DHTML Calendar http://sourceforge.net/projects/jscalendar)
24 * new filter in issues list: Author
25 * new filter in issues list: Author
25 * ajaxified paginators
26 * ajaxified paginators
26 * option to set number of results per page on issues list
27 * option to set number of results per page on issues list
27 * localized csv separator (comma/semicolon)
28 * localized csv separator (comma/semicolon)
28 * csv output encoded to ISO-8859-1
29 * csv output encoded to ISO-8859-1
29 * user custom field displayed on account/show
30 * user custom field displayed on account/show
30 * default configuration improved (default roles, trackers, status, permissions and workflows)
31 * default configuration improved (default roles, trackers, status, permissions and workflows)
31 * fixed: custom fields not in csv exports
32 * fixed: custom fields not in csv exports
32 * fixed: project settings now displayed according to user's permissions
33 * fixed: project settings now displayed according to user's permissions
33
34
34 == 10/08/2006 v0.3.0
35 == 10/08/2006 v0.3.0
35
36
36 * user authentication against multiple LDAP (optional)
37 * user authentication against multiple LDAP (optional)
37 * token based "lost password" functionality
38 * token based "lost password" functionality
38 * user self-registration functionality (optional)
39 * user self-registration functionality (optional)
39 * custom fields now available for issues, users and projects
40 * custom fields now available for issues, users and projects
40 * new custom field format "text" (displayed as a textarea field)
41 * new custom field format "text" (displayed as a textarea field)
41 * project & administration drop down menus in navigation bar for quicker access
42 * project & administration drop down menus in navigation bar for quicker access
42 * text formatting is preserved for long text fields (issues, projects and news descriptions)
43 * text formatting is preserved for long text fields (issues, projects and news descriptions)
43 * urls and emails are turned into clickable links in long text fields
44 * urls and emails are turned into clickable links in long text fields
44 * "due date" field added on issues
45 * "due date" field added on issues
45 * tracker selection filter added on change log
46 * tracker selection filter added on change log
46 * Localization plugin replaced with GLoc 1.1.0 (iconv required)
47 * Localization plugin replaced with GLoc 1.1.0 (iconv required)
47 * error messages internationalization
48 * error messages internationalization
48 * german translation added (thanks to Karim Trott)
49 * german translation added (thanks to Karim Trott)
49 * data locking for issues to prevent update conflicts (using ActiveRecord builtin optimistic locking)
50 * data locking for issues to prevent update conflicts (using ActiveRecord builtin optimistic locking)
50 * new filter in issues list: "Fixed version"
51 * new filter in issues list: "Fixed version"
51 * active filters are displayed with colored background on issues list
52 * active filters are displayed with colored background on issues list
52 * custom configuration is now defined in config/config_custom.rb
53 * custom configuration is now defined in config/config_custom.rb
53 * user object no more stored in session (only user_id)
54 * user object no more stored in session (only user_id)
54 * news summary field is no longer required
55 * news summary field is no longer required
55 * tables and forms redesign
56 * tables and forms redesign
56 * Fixed: boolean custom field not working
57 * Fixed: boolean custom field not working
57 * Fixed: error messages for custom fields are not displayed
58 * Fixed: error messages for custom fields are not displayed
58 * Fixed: invalid custom fields should have a red border
59 * Fixed: invalid custom fields should have a red border
59 * Fixed: custom fields values are not validated on issue update
60 * Fixed: custom fields values are not validated on issue update
60 * Fixed: unable to choose an empty value for 'List' custom fields
61 * Fixed: unable to choose an empty value for 'List' custom fields
61 * Fixed: no issue categories sorting
62 * Fixed: no issue categories sorting
62 * Fixed: incorrect versions sorting
63 * Fixed: incorrect versions sorting
63
64
64
65
65 == 07/12/2006 - v0.2.2
66 == 07/12/2006 - v0.2.2
66
67
67 * Fixed: bug in "issues list"
68 * Fixed: bug in "issues list"
68
69
69
70
70 == 07/09/2006 - v0.2.1
71 == 07/09/2006 - v0.2.1
71
72
72 * new databases supported: Oracle, PostgreSQL, SQL Server
73 * new databases supported: Oracle, PostgreSQL, SQL Server
73 * projects/subprojects hierarchy (1 level of subprojects only)
74 * projects/subprojects hierarchy (1 level of subprojects only)
74 * environment information display in admin/info
75 * environment information display in admin/info
75 * more filter options in issues list (rev6)
76 * more filter options in issues list (rev6)
76 * default language based on browser settings (Accept-Language HTTP header)
77 * default language based on browser settings (Accept-Language HTTP header)
77 * issues list exportable to CSV (rev6)
78 * issues list exportable to CSV (rev6)
78 * simple_format and auto_link on long text fields
79 * simple_format and auto_link on long text fields
79 * more data validations
80 * more data validations
80 * Fixed: error when all mail notifications are unchecked in admin/mail_options
81 * Fixed: error when all mail notifications are unchecked in admin/mail_options
81 * Fixed: all project news are displayed on project summary
82 * Fixed: all project news are displayed on project summary
82 * Fixed: Can't change user password in users/edit
83 * Fixed: Can't change user password in users/edit
83 * Fixed: Error on tables creation with PostgreSQL (rev5)
84 * Fixed: Error on tables creation with PostgreSQL (rev5)
84 * Fixed: SQL error in "issue reports" view with PostgreSQL (rev5)
85 * Fixed: SQL error in "issue reports" view with PostgreSQL (rev5)
85
86
86
87
87 == 06/25/2006 - v0.1.0
88 == 06/25/2006 - v0.1.0
88
89
89 * multiple users/multiple projects
90 * multiple users/multiple projects
90 * role based access control
91 * role based access control
91 * issue tracking system
92 * issue tracking system
92 * fully customizable workflow
93 * fully customizable workflow
93 * documents/files repository
94 * documents/files repository
94 * email notifications on issue creation and update
95 * email notifications on issue creation and update
95 * multilanguage support (except for error messages):english, french, spanish
96 * multilanguage support (except for error messages):english, french, spanish
96 * online manual in french (unfinished) No newline at end of file
97 * online manual in french (unfinished)
1 NO CONTENT: modified file, binary diff hidden
NO CONTENT: modified file, binary diff hidden
1 NO CONTENT: modified file, binary diff hidden
NO CONTENT: modified file, binary diff hidden
@@ -1,489 +1,505
1 /* andreas08 - an open source xhtml/css website layout by Andreas Viklund - http://andreasviklund.com . Free to use in any way and for any purpose as long as the proper credits are given to the original designer. Version: 1.0, November 28, 2005 */
1 /* andreas08 - an open source xhtml/css website layout by Andreas Viklund - http://andreasviklund.com . Free to use in any way and for any purpose as long as the proper credits are given to the original designer. Version: 1.0, November 28, 2005 */
2 /* Edited by Jean-Philippe Lang *>
2 /* Edited by Jean-Philippe Lang *>
3 /**************** Body and tag styles ****************/
3 /**************** Body and tag styles ****************/
4
4
5
5
6 #header * {margin:0; padding:0;}
6 #header * {margin:0; padding:0;}
7 p, ul, ol, li {margin:0; padding:0;}
7 p, ul, ol, li {margin:0; padding:0;}
8
8
9
9
10 body{
10 body{
11 font:76% Verdana,Tahoma,Arial,sans-serif;
11 font:76% Verdana,Tahoma,Arial,sans-serif;
12 line-height:1.4em;
12 line-height:1.4em;
13 text-align:center;
13 text-align:center;
14 color:#303030;
14 color:#303030;
15 background:#e8eaec;
15 background:#e8eaec;
16 margin:0;
16 margin:0;
17 }
17 }
18
18
19
19
20 a{
20 a{
21 color:#467aa7;
21 color:#467aa7;
22 font-weight:bold;
22 font-weight:bold;
23 text-decoration:none;
23 text-decoration:none;
24 background-color:inherit;
24 background-color:inherit;
25 }
25 }
26
26
27 a:hover{color:#2a5a8a; text-decoration:none; background-color:inherit;}
27 a:hover{color:#2a5a8a; text-decoration:none; background-color:inherit;}
28 a img{border:none;}
28 a img{border:none;}
29
29
30 p{padding:0 0 1em 0;}
30 p{padding:0 0 1em 0;}
31 p form{margin-top:0; margin-bottom:20px;}
31 p form{margin-top:0; margin-bottom:20px;}
32
32
33 img.left,img.center,img.right{padding:4px; border:1px solid #a0a0a0;}
33 img.left,img.center,img.right{padding:4px; border:1px solid #a0a0a0;}
34 img.left{float:left; margin:0 12px 5px 0;}
34 img.left{float:left; margin:0 12px 5px 0;}
35 img.center{display:block; margin:0 auto 5px auto;}
35 img.center{display:block; margin:0 auto 5px auto;}
36 img.right{float:right; margin:0 0 5px 12px;}
36 img.right{float:right; margin:0 0 5px 12px;}
37
37
38 /**************** Header and navigation styles ****************/
38 /**************** Header and navigation styles ****************/
39
39
40 #container{
40 #container{
41 width:100%;
41 width:100%;
42 min-width: 800px;
42 min-width: 800px;
43 margin:0;
43 margin:0;
44 padding:0;
44 padding:0;
45 text-align:left;
45 text-align:left;
46 background:#ffffff;
46 background:#ffffff;
47 color:#303030;
47 color:#303030;
48 }
48 }
49
49
50 #header{
50 #header{
51 height:4.5em;
51 height:4.5em;
52 /*width:758px;*/
52 /*width:758px;*/
53 margin:0;
53 margin:0;
54 background:#467aa7;
54 background:#467aa7;
55 color:#ffffff;
55 color:#ffffff;
56 margin-bottom:1px;
56 margin-bottom:1px;
57 }
57 }
58
58
59 #header h1{
59 #header h1{
60 padding:10px 0 0 20px;
60 padding:10px 0 0 20px;
61 font-size:2em;
61 font-size:2em;
62 background-color:inherit;
62 background-color:inherit;
63 color:#fff; /*rgb(152, 26, 33);*/
63 color:#fff; /*rgb(152, 26, 33);*/
64 letter-spacing:-1px;
64 letter-spacing:-1px;
65 font-weight:bold;
65 font-weight:bold;
66 font-family: Trebuchet MS,Georgia,"Times New Roman",serif;
66 font-family: Trebuchet MS,Georgia,"Times New Roman",serif;
67 }
67 }
68
68
69 #header h2{
69 #header h2{
70 margin:3px 0 0 40px;
70 margin:3px 0 0 40px;
71 font-size:1.5em;
71 font-size:1.5em;
72 background-color:inherit;
72 background-color:inherit;
73 color:#f0f2f4;
73 color:#f0f2f4;
74 letter-spacing:-1px;
74 letter-spacing:-1px;
75 font-weight:normal;
75 font-weight:normal;
76 font-family: Trebuchet MS,Georgia,"Times New Roman",serif;
76 font-family: Trebuchet MS,Georgia,"Times New Roman",serif;
77 }
77 }
78
78
79 #navigation{
79 #navigation{
80 height:2.2em;
80 height:2.2em;
81 line-height:2.2em;
81 line-height:2.2em;
82 /*width:758px;*/
82 /*width:758px;*/
83 margin:0;
83 margin:0;
84 background:#578bb8;
84 background:#578bb8;
85 color:#ffffff;
85 color:#ffffff;
86 }
86 }
87
87
88 #navigation li{
88 #navigation li{
89 float:left;
89 float:left;
90 list-style-type:none;
90 list-style-type:none;
91 border-right:1px solid #ffffff;
91 border-right:1px solid #ffffff;
92 white-space:nowrap;
92 white-space:nowrap;
93 }
93 }
94
94
95 #navigation li.right {
95 #navigation li.right {
96 float:right;
96 float:right;
97 list-style-type:none;
97 list-style-type:none;
98 border-right:0;
98 border-right:0;
99 border-left:1px solid #ffffff;
99 border-left:1px solid #ffffff;
100 white-space:nowrap;
100 white-space:nowrap;
101 }
101 }
102
102
103 #navigation li a{
103 #navigation li a{
104 display:block;
104 display:block;
105 padding:0px 10px 0px 22px;
105 padding:0px 10px 0px 22px;
106 font-size:0.8em;
106 font-size:0.8em;
107 font-weight:normal;
107 font-weight:normal;
108 /*text-transform:uppercase;*/
108 /*text-transform:uppercase;*/
109 text-decoration:none;
109 text-decoration:none;
110 background-color:inherit;
110 background-color:inherit;
111 color: #ffffff;
111 color: #ffffff;
112 }
112 }
113
113
114 * html #navigation a {width:1%;}
114 * html #navigation a {width:1%;}
115
115
116 #navigation .selected,#navigation a:hover{
116 #navigation .selected,#navigation a:hover{
117 color:#ffffff;
117 color:#ffffff;
118 text-decoration:none;
118 text-decoration:none;
119 background-color: #80b0da;
119 background-color: #80b0da;
120 }
120 }
121
121
122 /**************** Icons links *******************/
122 /**************** Icons links *******************/
123 .picHome { background: url(../images/home.png) no-repeat 4px 50%; }
123 .picHome { background: url(../images/home.png) no-repeat 4px 50%; }
124 .picUser { background: url(../images/user.png) no-repeat 4px 50%; }
124 .picUser { background: url(../images/user.png) no-repeat 4px 50%; }
125 .picUserPage { background: url(../images/user_page.png) no-repeat 4px 50%; }
125 .picUserPage { background: url(../images/user_page.png) no-repeat 4px 50%; }
126 .picAdmin { background: url(../images/admin.png) no-repeat 4px 50%; }
126 .picAdmin { background: url(../images/admin.png) no-repeat 4px 50%; }
127 .picProject { background: url(../images/projects.png) no-repeat 4px 50%; }
127 .picProject { background: url(../images/projects.png) no-repeat 4px 50%; }
128 .picLogout { background: url(../images/logout.png) no-repeat 4px 50%; }
128 .picLogout { background: url(../images/logout.png) no-repeat 4px 50%; }
129 .picHelp { background: url(../images/help.png) no-repeat 4px 50%; }
129 .picHelp { background: url(../images/help.png) no-repeat 4px 50%; }
130
130
131 .picEdit { background: url(../images/edit_small.png) no-repeat 4px 50%; }
132 .picDelete { background: url(../images/delete.png) no-repeat 4px 50%; }
133 .picAdd { background: url(../images/add.png) no-repeat 4px 50%; }
134 .picMove { background: url(../images/move.png) no-repeat 4px 50%; }
135 .picPdf { background: url(../images/pdf.png) no-repeat 4px 50%;}
136 .picCsv { background: url(../images/csv.png) no-repeat 4px 50%;}
137
138 .pic { padding-left: 18px; margin-left: 3px; }
131 /**************** Content styles ****************/
139 /**************** Content styles ****************/
132
140
133 html>body #content {
141 html>body #content {
134 height: auto;
142 height: auto;
135 min-height: 500px;
143 min-height: 500px;
136 }
144 }
137
145
138 #content{
146 #content{
139 /*float:right;*/
147 /*float:right;*/
140 /*width:530px;*/
148 /*width:530px;*/
141 width: auto;
149 width: auto;
142 height:500px;
150 height:500px;
143 font-size:0.9em;
151 font-size:0.9em;
144 padding:20px 10px 10px 20px;
152 padding:20px 10px 10px 20px;
145 /*position: absolute;*/
153 /*position: absolute;*/
146 margin-left: 120px;
154 margin-left: 120px;
147 border-left: 1px dashed #c0c0c0;
155 border-left: 1px dashed #c0c0c0;
148
156
149 }
157 }
150
158
151 #content h2{
159 #content h2{
152 display:block;
160 display:block;
153 margin:0 0 16px 0;
161 margin:0 0 16px 0;
154 font-size:1.7em;
162 font-size:1.7em;
155 font-weight:normal;
163 font-weight:normal;
156 letter-spacing:-1px;
164 letter-spacing:-1px;
157 color:#606060;
165 color:#606060;
158 background-color:inherit;
166 background-color:inherit;
159 font-family: Trebuchet MS,Georgia,"Times New Roman",serif;
167 font-family: Trebuchet MS,Georgia,"Times New Roman",serif;
160 }
168 }
161
169
162 #content h2 a{font-weight:normal;}
170 #content h2 a{font-weight:normal;}
163 #content h3{margin:0 0 12px 0; font-size:1.4em;color:#707070;font-family: Trebuchet MS,Georgia,"Times New Roman",serif;}
171 #content h3{margin:0 0 12px 0; font-size:1.4em;color:#707070;font-family: Trebuchet MS,Georgia,"Times New Roman",serif;}
164 #content a:hover,#subcontent a:hover{text-decoration:underline;}
172 #content a:hover,#subcontent a:hover{text-decoration:underline;}
165 #content ul,#content ol{margin:0 5px 16px 35px;}
173 #content ul,#content ol{margin:0 5px 16px 35px;}
166 #content dl{margin:0 5px 10px 25px;}
174 #content dl{margin:0 5px 10px 25px;}
167 #content dt{font-weight:bold; margin-bottom:5px;}
175 #content dt{font-weight:bold; margin-bottom:5px;}
168 #content dd{margin:0 0 10px 15px;}
176 #content dd{margin:0 0 10px 15px;}
169
177
170
178
171 /***********************************************/
179 /***********************************************/
172
180
173 /*
181 /*
174 form{
182 form{
175 padding:15px;
183 padding:15px;
176 margin:0 0 20px 0;
184 margin:0 0 20px 0;
177 border:1px solid #c0c0c0;
185 border:1px solid #c0c0c0;
178 background-color:#CEE1ED;
186 background-color:#CEE1ED;
179 width:600px;
187 width:600px;
180 }
188 }
181 */
189 */
182
190
183 form {
191 form {
184 display: inline;
192 display: inline;
185 }
193 }
186
194
187 .noborder {
195 .noborder {
188 border:0px;
196 border:0px;
189 background-color:#fff;
197 background-color:#fff;
190 width:100%;
198 width:100%;
191 }
199 }
192
200
193 textarea {
201 textarea {
194 padding:0;
202 padding:0;
195 margin:0;
203 margin:0;
196 }
204 }
197
205
198 blockquote {
206 blockquote {
199 padding-left: 6px;
207 padding-left: 6px;
200 border-left: 2px solid #ccc;
208 border-left: 2px solid #ccc;
201 }
209 }
202
210
203 input {
211 input {
204 vertical-align: middle;
212 vertical-align: middle;
205 }
213 }
206
214
207 input.button-small
215 input.button-small
208 {
216 {
209 font-size: 0.8em;
217 font-size: 0.8em;
210 }
218 }
211
219
212 select {
220 select {
213 vertical-align: middle;
221 vertical-align: middle;
214 }
222 }
215
223
216 select.select-small
224 select.select-small
217 {
225 {
218 border: 1px solid #7F9DB9;
226 border: 1px solid #7F9DB9;
219 padding: 1px;
227 padding: 1px;
220 font-size: 0.8em;
228 font-size: 0.8em;
221 }
229 }
222
230
223 .active-filter
231 .active-filter
224 {
232 {
225 background-color: #F9FA9E;
233 background-color: #F9FA9E;
226
234
227 }
235 }
228
236
229 label {
237 label {
230 font-weight: bold;
238 font-weight: bold;
231 font-size: 1em;
239 font-size: 1em;
232 }
240 }
233
241
234 fieldset {
242 fieldset {
235 border:1px solid #7F9DB9;
243 border:1px solid #7F9DB9;
236 padding: 6px;
244 padding: 6px;
237 }
245 }
238
246
239 legend {
247 legend {
240 color: #505050;
248 color: #505050;
241
249
242 }
250 }
243
251
244 .required {
252 .required {
245 color: #bb0000;
253 color: #bb0000;
246 }
254 }
247
255
248 table.listTableContent {
256 table.listTableContent {
249 border:1px solid #578bb8;
257 border:1px solid #578bb8;
250 width:99%;
258 width:100%;
251 border-collapse: collapse;
259 border-collapse: collapse;
252 }
260 }
253
261
254 table.listTableContent td {
262 table.listTableContent td {
255 padding:2px;
263 padding:2px;
256 }
264 }
257
265
258 tr.ListHead {
266 tr.ListHead {
259 background-color:#467aa7;
267 background-color:#467aa7;
260 color:#FFFFFF;
268 color:#FFFFFF;
261 text-align:center;
269 text-align:center;
262 }
270 }
263
271
264 tr.ListHead a {
272 tr.ListHead a {
265 color:#FFFFFF;
273 color:#FFFFFF;
266 text-decoration:underline;
274 text-decoration:underline;
267 }
275 }
268
276
269 .odd {
277 .odd {
270 background-color:#f0f1f2;
278 background-color:#f0f1f2;
271 }
279 }
272 .even {
280 .even {
273 background-color: #fff;
281 background-color: #fff;
274 }
282 }
275
283
276 table.reportTableContent {
284 table.reportTableContent {
277 border:1px solid #c0c0c0;
285 border:1px solid #c0c0c0;
278 width:99%;
286 width:99%;
279 border-collapse: collapse;
287 border-collapse: collapse;
280 }
288 }
281
289
282 table.reportTableContent td {
290 table.reportTableContent td {
283 padding:2px;
291 padding:2px;
284 }
292 }
285
293
286 table.calenderTable {
294 table.calenderTable {
287 border:1px solid #578bb8;
295 border:1px solid #578bb8;
288 width:99%;
296 width:99%;
289 border-collapse: collapse;
297 border-collapse: collapse;
290 }
298 }
291
299
292 table.calenderTable td {
300 table.calenderTable td {
293 border:1px solid #578bb8;
301 border:1px solid #578bb8;
294 }
302 }
295
303
296 hr { border:none; border-bottom: dotted 1px #c0c0c0; }
304 hr { border:none; border-bottom: dotted 1px #c0c0c0; }
297
305
298
306
299 /**************** Sidebar styles ****************/
307 /**************** Sidebar styles ****************/
300
308
301 #subcontent{
309 #subcontent{
302 position: absolute;
310 position: absolute;
303 left: 0px;
311 left: 0px;
304 width:110px;
312 width:110px;
305 padding:20px 20px 10px 5px;
313 padding:20px 20px 10px 5px;
306 }
314 }
307
315
308 #subcontent h2{
316 #subcontent h2{
309 display:block;
317 display:block;
310 margin:0 0 5px 0;
318 margin:0 0 5px 0;
311 font-size:1.0em;
319 font-size:1.0em;
312 font-weight:bold;
320 font-weight:bold;
313 text-align:left;
321 text-align:left;
314 color:#606060;
322 color:#606060;
315 background-color:inherit;
323 background-color:inherit;
316 font-family: Trebuchet MS,Georgia,"Times New Roman",serif;
324 font-family: Trebuchet MS,Georgia,"Times New Roman",serif;
317 }
325 }
318
326
319 #subcontent p{margin:0 0 16px 0; font-size:0.9em;}
327 #subcontent p{margin:0 0 16px 0; font-size:0.9em;}
320
328
321 /**************** Menublock styles ****************/
329 /**************** Menublock styles ****************/
322
330
323 .menublock{margin:0 0 20px 8px; font-size:0.8em;}
331 .menublock{margin:0 0 20px 8px; font-size:0.8em;}
324 .menublock li{list-style:none; display:block; padding:1px; margin-bottom:0px;}
332 .menublock li{list-style:none; display:block; padding:1px; margin-bottom:0px;}
325 .menublock li a{font-weight:bold; text-decoration:none;}
333 .menublock li a{font-weight:bold; text-decoration:none;}
326 .menublock li a:hover{text-decoration:none;}
334 .menublock li a:hover{text-decoration:none;}
327 .menublock li ul{margin:0; font-size:1em; font-weight:normal;}
335 .menublock li ul{margin:0; font-size:1em; font-weight:normal;}
328 .menublock li ul li{margin-bottom:0;}
336 .menublock li ul li{margin-bottom:0;}
329 .menublock li ul a{font-weight:normal;}
337 .menublock li ul a{font-weight:normal;}
330
338
331 /**************** Searchbar styles ****************/
339 /**************** Searchbar styles ****************/
332
340
333 #searchbar{margin:0 0 20px 0;}
341 #searchbar{margin:0 0 20px 0;}
334 #searchbar form fieldset{margin-left:10px; border:0 solid;}
342 #searchbar form fieldset{margin-left:10px; border:0 solid;}
335
343
336 #searchbar #s{
344 #searchbar #s{
337 height:1.2em;
345 height:1.2em;
338 width:110px;
346 width:110px;
339 margin:0 5px 0 0;
347 margin:0 5px 0 0;
340 border:1px solid #a0a0a0;
348 border:1px solid #a0a0a0;
341 }
349 }
342
350
343 #searchbar #searchbutton{
351 #searchbar #searchbutton{
344 width:auto;
352 width:auto;
345 padding:0 1px;
353 padding:0 1px;
346 border:1px solid #808080;
354 border:1px solid #808080;
347 font-size:0.9em;
355 font-size:0.9em;
348 text-align:center;
356 text-align:center;
349 }
357 }
350
358
351 /**************** Footer styles ****************/
359 /**************** Footer styles ****************/
352
360
353 #footer{
361 #footer{
354 clear:both;
362 clear:both;
355 /*width:758px;*/
363 /*width:758px;*/
356 padding:5px 0;
364 padding:5px 0;
357 margin:0;
365 margin:0;
358 font-size:0.9em;
366 font-size:0.9em;
359 color:#f0f0f0;
367 color:#f0f0f0;
360 background:#467aa7;
368 background:#467aa7;
361 }
369 }
362
370
363 #footer p{padding:0; margin:0; text-align:center;}
371 #footer p{padding:0; margin:0; text-align:center;}
364 #footer a{color:#f0f0f0; background-color:inherit; font-weight:bold;}
372 #footer a{color:#f0f0f0; background-color:inherit; font-weight:bold;}
365 #footer a:hover{color:#ffffff; background-color:inherit; text-decoration: underline;}
373 #footer a:hover{color:#ffffff; background-color:inherit; text-decoration: underline;}
366
374
367 /**************** Misc classes and styles ****************/
375 /**************** Misc classes and styles ****************/
368
376
369 .splitcontentleft{float:left; width:49%;}
377 .splitcontentleft{float:left; width:49%;}
370 .splitcontentright{float:right; width:49%;}
378 .splitcontentright{float:right; width:49%;}
371 .clear{clear:both;}
379 .clear{clear:both;}
372 .small{font-size:0.8em;line-height:1.4em;padding:0 0 0 0;}
380 .small{font-size:0.8em;line-height:1.4em;padding:0 0 0 0;}
373 .hide{display:none;}
381 .hide{display:none;}
374 .textcenter{text-align:center;}
382 .textcenter{text-align:center;}
375 .textright{text-align:right;}
383 .textright{text-align:right;}
376 .important{color:#f02025; background-color:inherit; font-weight:bold;}
384 .important{color:#f02025; background-color:inherit; font-weight:bold;}
377
385
378 .box{
386 .box{
379 margin:0 0 20px 0;
387 margin:0 0 20px 0;
380 padding:10px;
388 padding:10px;
381 border:1px solid #c0c0c0;
389 border:1px solid #c0c0c0;
382 background-color:#fafbfc;
390 background-color:#fafbfc;
383 color:#505050;
391 color:#505050;
384 line-height:1.5em;
392 line-height:1.5em;
385 }
393 }
386
394
387 a.close-icon {
395 a.close-icon {
388 display:block;
396 display:block;
389 margin-top:3px;
397 margin-top:3px;
390 overflow:hidden;
398 overflow:hidden;
391 width:12px;
399 width:12px;
392 height:12px;
400 height:12px;
393 background-repeat: no-repeat;
401 background-repeat: no-repeat;
394 cursor:hand;
402 cursor:hand;
395 cursor:pointer;
403 cursor:pointer;
396 background-image:url('../images/close.png');
404 background-image:url('../images/close.png');
397 }
405 }
398
406
399 a.close-icon:hover {
407 a.close-icon:hover {
400 background-image:url('../images/close_hl.png');
408 background-image:url('../images/close_hl.png');
401 }
409 }
402
410
403 .rightbox{
411 .rightbox{
404 background: #fafbfc;
412 background: #fafbfc;
405 border: 1px solid #c0c0c0;
413 border: 1px solid #c0c0c0;
406 float: right;
414 float: right;
407 padding: 8px;
415 padding: 8px;
408 position: relative;
416 position: relative;
409 margin: 0 5px 5px;
417 margin: 0 5px 5px;
410 }
418 }
411
419
412 .layout-active {
420 .layout-active {
413 background: #ECF3E1;
421 background: #ECF3E1;
414 }
422 }
415
423
416 .block-receiver {
424 .block-receiver {
417 border:1px dashed #c0c0c0;
425 border:1px dashed #c0c0c0;
418 margin-bottom: 20px;
426 margin-bottom: 20px;
419 padding: 15px 0 15px 0;
427 padding: 15px 0 15px 0;
420 }
428 }
421
429
422 .mypage-box {
430 .mypage-box {
423 margin:0 0 20px 0;
431 margin:0 0 20px 0;
424 color:#505050;
432 color:#505050;
425 line-height:1.5em;
433 line-height:1.5em;
426 }
434 }
427
435
428 .handle {
436 .handle {
429 cursor: move;
437 cursor: move;
430 }
438 }
431
439
432 .topright{
440 .topright{
433 position: absolute;
441 position: absolute;
434 right: 25px;
442 right: 25px;
435 top: 100px;
443 top: 100px;
436 }
444 }
437
445
438 .login {
446 .login {
439 width: 50%;
447 width: 50%;
440 text-align: left;
448 text-align: left;
441 }
449 }
442
450
443 img.calendar-trigger {
451 img.calendar-trigger {
444 cursor: pointer;
452 cursor: pointer;
445 vertical-align: middle;
453 vertical-align: middle;
446 margin-left: 4px;
454 margin-left: 4px;
447 }
455 }
448
456
449 #history h4, #comments h4 {
457 #history h4, #comments h4 {
450 font-size: 1em;
458 font-size: 1em;
451 margin-bottom: 12px;
459 margin-bottom: 12px;
452 margin-top: 20px;
460 margin-top: 20px;
453 font-weight: normal;
461 font-weight: normal;
454 border-bottom: dotted 1px #c0c0c0;
462 border-bottom: dotted 1px #c0c0c0;
455 }
463 }
456
464
457 #history p {
465 #history p {
458 margin-left: 34px;
466 margin-left: 34px;
459 }
467 }
460
468
469 /***** Contextual links div *****/
470 .contextual {
471 float: right;
472 font-size: 0.8em;
473 }
474
475
476
461 /***** CSS FORM ******/
477 /***** CSS FORM ******/
462 .tabular p{
478 .tabular p{
463 margin: 0;
479 margin: 0;
464 padding: 5px 0 8px 0;
480 padding: 5px 0 8px 0;
465 padding-left: 180px; /*width of left column containing the label elements*/
481 padding-left: 180px; /*width of left column containing the label elements*/
466 height: 1%;
482 height: 1%;
467 }
483 }
468
484
469 .tabular label{
485 .tabular label{
470 font-weight: bold;
486 font-weight: bold;
471 float: left;
487 float: left;
472 margin-left: -180px; /*width of left column*/
488 margin-left: -180px; /*width of left column*/
473 width: 175px; /*width of labels. Should be smaller than left column to create some right
489 width: 175px; /*width of labels. Should be smaller than left column to create some right
474 margin*/
490 margin*/
475 }
491 }
476
492
477 .error {
493 .error {
478 color: #cc0000;
494 color: #cc0000;
479 }
495 }
480
496
481
497
482 /*.threepxfix class below:
498 /*.threepxfix class below:
483 Targets IE6- ONLY. Adds 3 pixel indent for multi-line form contents.
499 Targets IE6- ONLY. Adds 3 pixel indent for multi-line form contents.
484 to account for 3 pixel bug: http://www.positioniseverything.net/explorer/threepxtest.html
500 to account for 3 pixel bug: http://www.positioniseverything.net/explorer/threepxtest.html
485 */
501 */
486
502
487 * html .threepxfix{
503 * html .threepxfix{
488 margin-left: 3px;
504 margin-left: 3px;
489 } No newline at end of file
505 }
General Comments 0
You need to be logged in to leave comments. Login now