1
|
<%= render :partial => 'action_menu' %>
|
2
|
|
3
|
<h2><%= @issue.tracker.name %> #<%= @issue.id %></h2>
|
4
|
|
5
|
<div class="<%= @issue.css_classes %> details">
|
6
|
<%= avatar(@issue.author, :size => "50") %>
|
7
|
<div class="subject">
|
8
|
<%= render_issue_subject_with_tree(@issue) %>
|
9
|
</div>
|
10
|
<p class="author">
|
11
|
<%= authoring @issue.created_on, @issue.author %>.
|
12
|
<% if @issue.created_on != @issue.updated_on %>
|
13
|
<%= l(:label_updated_time, time_tag(@issue.updated_on)) %>.
|
14
|
<% end %>
|
15
|
</p>
|
16
|
|
17
|
<table class="attributes">
|
18
|
<tr>
|
19
|
<th class="status"><%=l(:field_status)%>:</th><td class="status"><%= @issue.status.name %></td>
|
20
|
<th class="start-date"><%=l(:field_start_date)%>:</th><td class="start-date"><%= format_date(@issue.start_date) %></td>
|
21
|
</tr>
|
22
|
<tr>
|
23
|
<th class="priority"><%=l(:field_priority)%>:</th><td class="priority"><%= @issue.priority.name %></td>
|
24
|
<th class="due-date"><%=l(:field_due_date)%>:</th><td class="due-date"><%= format_date(@issue.due_date) %></td>
|
25
|
</tr>
|
26
|
<tr>
|
27
|
<th class="assigned-to"><%=l(:field_assigned_to)%>:</th><td class="assigned-to"><%= avatar(@issue.assigned_to, :size => "14") %><%= @issue.assigned_to ? link_to_user(@issue.assigned_to) : "-" %></td>
|
28
|
<th class="progress"><%=l(:field_done_ratio)%>:</th><td class="progress"><%= progress_bar @issue.done_ratio, :width => '80px', :legend => "#{@issue.done_ratio}%" %></td>
|
29
|
</tr>
|
30
|
<tr>
|
31
|
<th class="category"><%=l(:field_category)%>:</th><td class="category"><%=h @issue.category ? @issue.category.name : "-" %></td>
|
32
|
<% if User.current.allowed_to?(:view_time_entries, @project) %>
|
33
|
<th class="spent-time"><%=l(:label_spent_time)%>:</th>
|
34
|
<td class="spent-time"><%= @issue.spent_hours > 0 ? (link_to l_hours(@issue.spent_hours), {:controller => 'timelog', :action => 'details', :project_id => @project, :issue_id => @issue}) : "-" %></td>
|
35
|
<% end %>
|
36
|
</tr>
|
37
|
<tr>
|
38
|
<th class="fixed-version"><%=l(:field_fixed_version)%>:</th><td class="fixed-version"><%= @issue.fixed_version ? link_to_version(@issue.fixed_version) : "-" %></td>
|
39
|
<% if @issue.estimated_hours %>
|
40
|
<th class="estimated-hours"><%=l(:field_estimated_hours)%>:</th><td class="estimated-hours"><%= l_hours(@issue.estimated_hours) %></td>
|
41
|
<% end %>
|
42
|
</tr>
|
43
|
<tr>
|
44
|
<%- milestones = @issue.fixed_version ? @issue.fixed_version.milestones.sort : []
|
45
|
milestones = milestones.collect {|m| link_to(m.name, {:controller => :milestones, :action => :show, :id => m.id})}.join(", ") -%>
|
46
|
<th class="fixed-version"><%=l(:label_milestone_plural)%>:</th><td class="fixed-version"><%= milestones %></td>
|
47
|
<% if @issue.rest_hours > 0 %>
|
48
|
<th class="estimated-hours"><%=l(:label_roadmap_due_in, "")%>:</th><td><%= l_hours(@issue.rest_hours) %></td>
|
49
|
<% end %>
|
50
|
</tr>
|
51
|
<%= render_custom_fields_rows(@issue) %>
|
52
|
<%= call_hook(:view_issues_show_details_bottom, :issue => @issue) %>
|
53
|
</table>
|
54
|
<hr />
|
55
|
|
56
|
<div class="contextual">
|
57
|
<%= link_to_remote_if_authorized(l(:button_quote), { :url => {:action => 'reply', :id => @issue} }, :class => 'icon icon-comment') unless @issue.description.blank? %>
|
58
|
</div>
|
59
|
|
60
|
<p><strong><%=l(:field_description)%></strong></p>
|
61
|
<div class="wiki">
|
62
|
<%= textilizable @issue, :description, :attachments => @issue.attachments %>
|
63
|
</div>
|
64
|
|
65
|
<%= link_to_attachments @issue %>
|
66
|
|
67
|
<%= call_hook(:view_issues_show_description_bottom, :issue => @issue) %>
|
68
|
|
69
|
<% if !@issue.leaf? || User.current.allowed_to?(:manage_subtasks, @project) %>
|
70
|
<hr />
|
71
|
<div id="issue_tree">
|
72
|
<div class="contextual">
|
73
|
<%= link_to(l(:button_add), {:controller => 'issues', :action => 'new', :project_id => @project, :issue => {:parent_issue_id => @issue}}) if User.current.allowed_to?(:manage_subtasks, @project) %>
|
74
|
</div>
|
75
|
<p><strong><%=l(:label_subtask_plural)%></strong></p>
|
76
|
<%= render_descendants_tree(@issue) unless @issue.leaf? %></div>
|
77
|
<% end %>
|
78
|
<% if authorize_for('issue_relations', 'new') || @issue.relations.present? %>
|
79
|
<hr />
|
80
|
<div id="relations">
|
81
|
<%= render :partial => 'relations' %>
|
82
|
</div>
|
83
|
<% end %>
|
84
|
|
85
|
</div>
|
86
|
|
87
|
<% if @changesets.present? %>
|
88
|
<div id="issue-changesets">
|
89
|
<h3><%=l(:label_associated_revisions)%></h3>
|
90
|
<%= render :partial => 'changesets', :locals => { :changesets => @changesets} %>
|
91
|
</div>
|
92
|
<% end %>
|
93
|
|
94
|
<% if @journals.present? %>
|
95
|
<div id="history">
|
96
|
<h3><%=l(:label_history)%></h3>
|
97
|
<%= render :partial => 'history', :locals => { :issue => @issue, :journals => @journals } %>
|
98
|
</div>
|
99
|
<% end %>
|
100
|
|
101
|
<div style="clear: both;"></div>
|
102
|
<%= render :partial => 'action_menu', :locals => {:replace_watcher => 'watcher2' } %>
|
103
|
|
104
|
<div style="clear: both;"></div>
|
105
|
|
106
|
<% if authorize_for('issues', 'edit') %>
|
107
|
<div id="update" style="display:none;">
|
108
|
<h3><%= l(:button_update) %></h3>
|
109
|
<%= render :partial => 'edit' %>
|
110
|
</div>
|
111
|
<% end %>
|
112
|
|
113
|
<% other_formats_links do |f| %>
|
114
|
<%= f.link_to 'Atom', :url => {:key => User.current.rss_key} %>
|
115
|
<%= f.link_to 'PDF' %>
|
116
|
<% end %>
|
117
|
|
118
|
<% html_title "#{@issue.tracker.name} ##{@issue.id}: #{@issue.subject}" %>
|
119
|
|
120
|
<% content_for :sidebar do %>
|
121
|
<%= render :partial => 'issues/sidebar' %>
|
122
|
|
123
|
<% if User.current.allowed_to?(:add_issue_watchers, @project) ||
|
124
|
(@issue.watchers.present? && User.current.allowed_to?(:view_issue_watchers, @project)) %>
|
125
|
<div id="watchers">
|
126
|
<%= render :partial => 'watchers/watchers', :locals => {:watched => @issue} %>
|
127
|
</div>
|
128
|
<% end %>
|
129
|
<% end %>
|
130
|
|
131
|
<% content_for :header_tags do %>
|
132
|
<%= auto_discovery_link_tag(:atom, {:format => 'atom', :key => User.current.rss_key}, :title => "#{@issue.project} - #{@issue.tracker} ##{@issue.id}: #{@issue.subject}") %>
|
133
|
<%= stylesheet_link_tag 'scm' %>
|
134
|
<%= javascript_include_tag 'context_menu' %>
|
135
|
<%= stylesheet_link_tag 'context_menu' %>
|
136
|
<% end %>
|
137
|
<div id="context-menu" style="display: none;"></div>
|
138
|
<%= javascript_tag "new ContextMenu('#{url_for(:controller => 'issues', :action => 'context_menu')}')" %>
|
139
|
|