Revision 912:5e80956cc792 app/views/issues

View differences:

app/views/issues/_action_menu.html.erb
1
<div class="contextual">
2
<%= link_to_if_authorized(l(:button_update), {:controller => 'issues', :action => 'edit', :id => @issue }, :onclick => 'showAndScrollTo("update", "notes"); return false;', :class => 'icon icon-edit', :accesskey => accesskey(:edit)) %>
3
<%= link_to_if_authorized l(:button_log_time), {:controller => 'timelog', :action => 'new', :issue_id => @issue}, :class => 'icon icon-time-add' %>
4
<%= watcher_tag(@issue, User.current) %>
5
<%= link_to_if_authorized l(:button_duplicate), {:controller => 'issues', :action => 'new', :project_id => @project, :copy_from => @issue }, :class => 'icon icon-duplicate' %>
6
<%= link_to_if_authorized l(:button_copy), {:controller => 'issue_moves', :action => 'new', :id => @issue, :copy_options => {:copy => 't'}}, :class => 'icon icon-copy' %>
7
<%= link_to_if_authorized l(:button_move), {:controller => 'issue_moves', :action => 'new', :id => @issue}, :class => 'icon icon-move' %>
8
<%= link_to_if_authorized l(:button_delete), {:controller => 'issues', :action => 'destroy', :id => @issue}, :confirm => issues_destroy_confirmation_message(@issue), :method => :post, :class => 'icon icon-del' %>
9
</div>
app/views/issues/_action_menu.rhtml
1
<div class="contextual">
2
<%= link_to_if_authorized(l(:button_update), {:controller => 'issues', :action => 'edit', :id => @issue }, :onclick => 'showAndScrollTo("update", "notes"); return false;', :class => 'icon icon-edit', :accesskey => accesskey(:edit)) %>
3
<%= link_to_if_authorized l(:button_log_time), {:controller => 'timelog', :action => 'new', :issue_id => @issue}, :class => 'icon icon-time-add' %>
4
<%= watcher_tag(@issue, User.current) %>
5
<%= link_to_if_authorized l(:button_duplicate), {:controller => 'issues', :action => 'new', :project_id => @project, :copy_from => @issue }, :class => 'icon icon-duplicate' %>
6
<%= link_to_if_authorized l(:button_copy), {:controller => 'issue_moves', :action => 'new', :id => @issue, :copy_options => {:copy => 't'}}, :class => 'icon icon-copy' %>
7
<%= link_to_if_authorized l(:button_move), {:controller => 'issue_moves', :action => 'new', :id => @issue}, :class => 'icon icon-move' %>
8
<%= link_to_if_authorized l(:button_delete), {:controller => 'issues', :action => 'destroy', :id => @issue}, :confirm => issues_destroy_confirmation_message(@issue), :method => :post, :class => 'icon icon-del' %>
9
</div>
app/views/issues/_attributes.html.erb
1
<% fields_for :issue, @issue, :builder => TabularFormBuilder do |f| %>
2

  
3
<div class="splitcontentleft">
4
<% if @issue.new_record? || @allowed_statuses.any? %>
5
<p><%= f.select :status_id, (@allowed_statuses.collect {|p| [p.name, p.id]}), :required => true %></p>
6
<% else %>
7
<p><label><%= l(:field_status) %></label> <%= h(@issue.status.name) %></p>
8
<% end %>
9

  
10
<p><%= f.select :priority_id, (@priorities.collect {|p| [p.name, p.id]}), {:required => true}, :disabled => !@issue.leaf? %></p>
11
<p><%= f.select :assigned_to_id, principals_options_for_select(@issue.assignable_users, @issue.assigned_to), :include_blank => true %></p>
12
<% unless @project.issue_categories.empty? %>
13
<p><%= f.select :category_id, (@project.issue_categories.collect {|c| [c.name, c.id]}), :include_blank => true %>
14
<%= prompt_to_remote(image_tag('add.png', :style => 'vertical-align: middle;'),
15
                     l(:label_issue_category_new),
16
                     'issue_category[name]',
17
                     {:controller => 'issue_categories', :action => 'create', :project_id => @project},
18
                     :title => l(:label_issue_category_new),
19
                     :tabindex => 199) if authorize_for('issue_categories', 'new') %></p>
20
<% end %>
21
<% unless @issue.assignable_versions.empty? %>
22
<p><%= f.select :fixed_version_id, version_options_for_select(@issue.assignable_versions, @issue.fixed_version), :include_blank => true %>
23
<%= prompt_to_remote(image_tag('add.png', :style => 'vertical-align: middle;'),
24
                     l(:label_version_new),
25
                     'version[name]',
26
                     {:controller => 'versions', :action => 'create', :project_id => @project},
27
                     :title => l(:label_version_new),
28
                     :tabindex => 200) if authorize_for('versions', 'new') %>
29
</p>
30
<% end %>
31
</div>
32

  
33
<div class="splitcontentright">
34
<% if User.current.allowed_to?(:manage_subtasks, @project) %>
35
<p id="parent_issue"><%= f.text_field :parent_issue_id, :size => 10 %></p>
36
<div id="parent_issue_candidates" class="autocomplete"></div>
37
<%= javascript_tag "observeParentIssueField('#{auto_complete_issues_path(:id => @issue, :project_id => @project) }')" %>
38
<% end %>
39
<p><%= f.text_field :start_date, :size => 10, :disabled => !@issue.leaf? %><%= calendar_for('issue_start_date') if @issue.leaf? %></p>
40
<p><%= f.text_field :due_date, :size => 10, :disabled => !@issue.leaf? %><%= calendar_for('issue_due_date') if @issue.leaf? %></p>
41
<p><%= f.text_field :estimated_hours, :size => 3, :disabled => !@issue.leaf? %> <%= l(:field_hours) %></p>
42
<% if @issue.leaf? && Issue.use_field_for_done_ratio? %>
43
<p><%= f.select :done_ratio, ((0..10).to_a.collect {|r| ["#{r*10} %", r*10] }) %></p>
44
<% end %>
45
</div>
46

  
47
<div style="clear:both;"> </div>
48
<%= render :partial => 'issues/form_custom_fields' %>
49

  
50
<% end %>
app/views/issues/_attributes.rhtml
1
<% fields_for :issue, @issue, :builder => TabularFormBuilder do |f| %>
2

  
3
<div class="splitcontentleft">
4
<% if @issue.new_record? || @allowed_statuses.any? %>
5
<p><%= f.select :status_id, (@allowed_statuses.collect {|p| [p.name, p.id]}), :required => true %></p>
6
<% else %>
7
<p><label><%= l(:field_status) %></label> <%= @issue.status.name %></p>
8
<% end %>
9

  
10
<p><%= f.select :priority_id, (@priorities.collect {|p| [p.name, p.id]}), {:required => true}, :disabled => !@issue.leaf? %></p>
11
<p><%= f.select :assigned_to_id, (@issue.assignable_users.collect {|m| [m.name, m.id]}), {:include_blank => true} %></p>
12
<% unless @project.issue_categories.empty? %>
13
<p><%= f.select :category_id, (@project.issue_categories.collect {|c| [c.name, c.id]}), :include_blank => true %>
14
<%= prompt_to_remote(image_tag('add.png', :style => 'vertical-align: middle;'),
15
                     l(:label_issue_category_new),
16
                     'category[name]', 
17
                     {:controller => 'issue_categories', :action => 'new', :project_id => @project},
18
                     :title => l(:label_issue_category_new), 
19
                     :tabindex => 199) if authorize_for('issue_categories', 'new') %></p>
20
<% end %>
21
<% unless @issue.assignable_versions.empty? %>
22
<p><%= f.select :fixed_version_id, version_options_for_select(@issue.assignable_versions, @issue.fixed_version), :include_blank => true %>
23
<%= prompt_to_remote(image_tag('add.png', :style => 'vertical-align: middle;'),
24
                     l(:label_version_new),
25
                     'version[name]', 
26
                     {:controller => 'versions', :action => 'create', :project_id => @project},
27
                     :title => l(:label_version_new), 
28
                     :tabindex => 200) if authorize_for('versions', 'new') %>
29
</p>
30
<% end %>
31
</div>
32

  
33
<div class="splitcontentright">
34
<% if User.current.allowed_to?(:manage_subtasks, @project) %>
35
<p id="parent_issue"><%= f.text_field :parent_issue_id, :size => 10 %></p>
36
<div id="parent_issue_candidates" class="autocomplete"></div>
37
<%= javascript_tag "observeParentIssueField('#{auto_complete_issues_path(:id => @issue, :project_id => @project) }')" %>
38
<% end %>
39
<p><%= f.text_field :start_date, :size => 10, :disabled => !@issue.leaf? %><%= calendar_for('issue_start_date') if @issue.leaf? %></p>
40
<p><%= f.text_field :due_date, :size => 10, :disabled => !@issue.leaf? %><%= calendar_for('issue_due_date') if @issue.leaf? %></p>
41
<p><%= f.text_field :estimated_hours, :size => 3, :disabled => !@issue.leaf? %> <%= l(:field_hours) %></p>
42
<% if @issue.leaf? && Issue.use_field_for_done_ratio? %>
43
<p><%= f.select :done_ratio, ((0..10).to_a.collect {|r| ["#{r*10} %", r*10] }) %></p>
44
<% end %>
45
</div>
46

  
47
<div style="clear:both;"> </div>
48
<%= render :partial => 'issues/form_custom_fields' %>
49

  
50
<% end %>
app/views/issues/_changesets.html.erb
1
<% changesets.each do |changeset| %>
2
    <div class="changeset <%= cycle('odd', 'even') %>">
3
    <p><%= link_to_revision(changeset, changeset.project,
4
                            :text => "#{l(:label_revision)} #{changeset.format_identifier}") %><br />
5
        <span class="author"><%= authoring(changeset.committed_on, changeset.author) %></span></p>
6
    <div class="wiki">
7
        <%= textilizable(changeset, :comments) %>
8
    </div>
9
    </div>
10
<% end %>
app/views/issues/_changesets.rhtml
1
<% changesets.each do |changeset| %>
2
    <div class="changeset <%= cycle('odd', 'even') %>">
3
    <p><%= link_to_revision(changeset, changeset.project,
4
                            :text => "#{l(:label_revision)} #{changeset.format_identifier}") %><br />
5
        <span class="author"><%= authoring(changeset.committed_on, changeset.author) %></span></p>
6
    <div class="wiki">
7
        <%= textilizable(changeset, :comments) %>
8
    </div>
9
    </div>
10
<% end %>
app/views/issues/_edit.html.erb
1
<% labelled_tabular_form_for :issue, @issue,
2
                             :url => {:action => 'update', :id => @issue},
3
                             :html => {:id => 'issue-form',
4
                                       :class => nil,
5
                                       :method => :put,
6
                                       :multipart => true} do |f| %>
7
    <%= error_messages_for 'issue', 'time_entry' %>
8
    <div class="box">
9
    <% if @edit_allowed || !@allowed_statuses.empty? %>
10
        <fieldset class="tabular"><legend><%= l(:label_change_properties) %>
11
        <% if !@issue.new_record? && !@issue.errors.any? && @edit_allowed %>
12
        <small>(<%= link_to l(:label_more), {}, :onclick => 'Effect.toggle("issue_descr_fields", "appear", {duration:0.3}); return false;' %>)</small>
13
        <% end %>
14
        </legend>
15
        <%= render :partial => (@edit_allowed ? 'form' : 'form_update'), :locals => {:f => f} %>
16
        </fieldset>
17
    <% end %>
18
    <% if User.current.allowed_to?(:log_time, @project) %>
19
        <fieldset class="tabular"><legend><%= l(:button_log_time) %></legend>
20
        <% fields_for :time_entry, @time_entry, { :builder => TabularFormBuilder, :lang => current_language} do |time_entry| %>
21
        <div class="splitcontentleft">
22
        <p><%= time_entry.text_field :hours, :size => 6, :label => :label_spent_time %> <%= l(:field_hours) %></p>
23
        </div>
24
        <div class="splitcontentright">
25
        <p><%= time_entry.select :activity_id, activity_collection_for_select_options %></p>
26
        </div>
27
        <p><%= time_entry.text_field :comments, :size => 60 %></p>
28
        <% @time_entry.custom_field_values.each do |value| %>
29
          <p><%= custom_field_tag_with_label :time_entry, value %></p>
30
        <% end %>
31
        <% end %>
32
    </fieldset>
33
    <% end %>
34

  
35
    <fieldset><legend><%= l(:field_notes) %></legend>
36
    <%= text_area_tag 'notes', @notes, :cols => 60, :rows => 10, :class => 'wiki-edit' %>
37
    <%= wikitoolbar_for 'notes' %>
38
    <%= call_hook(:view_issues_edit_notes_bottom, { :issue => @issue, :notes => @notes, :form => f }) %>
39

  
40
    <p><%=l(:label_attachment_plural)%><br /><%= render :partial => 'attachments/form' %></p>
41
    </fieldset>
42
    </div>
43

  
44
    <%= f.hidden_field :lock_version %>
45
    <%= submit_tag l(:button_submit) %>
46
    <%= link_to_remote l(:label_preview),
47
                       { :url => preview_issue_path(:project_id => @project, :id => @issue),
48
                         :method => 'post',
49
                         :update => 'preview',
50
                         :with => 'Form.serialize("issue-form")',
51
                         :complete => "Element.scrollTo('preview')"
52
                       }, :accesskey => accesskey(:preview) %>
53
<% end %>
54

  
55
<div id="preview" class="wiki"></div>
app/views/issues/_edit.rhtml
1
<% labelled_tabular_form_for :issue, @issue,
2
                             :url => {:action => 'update', :id => @issue},
3
                             :html => {:id => 'issue-form',
4
                                       :class => nil,
5
                                       :method => :put,
6
                                       :multipart => true} do |f| %>
7
    <%= error_messages_for 'issue', 'time_entry' %>
8
    <div class="box">
9
    <% if @edit_allowed || !@allowed_statuses.empty? %>
10
        <fieldset class="tabular"><legend><%= l(:label_change_properties) %>
11
        <% if !@issue.new_record? && !@issue.errors.any? && @edit_allowed %>
12
        <small>(<%= link_to l(:label_more), {}, :onclick => 'Effect.toggle("issue_descr_fields", "appear", {duration:0.3}); return false;' %>)</small>
13
        <% end %>
14
        </legend>
15
        <%= render :partial => (@edit_allowed ? 'form' : 'form_update'), :locals => {:f => f} %>
16
        </fieldset>
17
    <% end %>
18
    <% if authorize_for('timelog', 'edit') %>
19
        <fieldset class="tabular"><legend><%= l(:button_log_time) %></legend>
20
        <% fields_for :time_entry, @time_entry, { :builder => TabularFormBuilder, :lang => current_language} do |time_entry| %>
21
        <div class="splitcontentleft">
22
        <p><%= time_entry.text_field :hours, :size => 6, :label => :label_spent_time %> <%= l(:field_hours) %></p>
23
        </div>
24
        <div class="splitcontentright">
25
        <p><%= time_entry.select :activity_id, activity_collection_for_select_options %></p>
26
        </div>
27
        <p><%= time_entry.text_field :comments, :size => 60 %></p>
28
        <% @time_entry.custom_field_values.each do |value| %>
29
        	<p><%= custom_field_tag_with_label :time_entry, value %></p>
30
        <% end %>
31
        <% end %>
32
    </fieldset>
33
    <% end %>
34
    
35
    <fieldset><legend><%= l(:field_notes) %></legend>
36
    <%= text_area_tag 'notes', @notes, :cols => 60, :rows => 10, :class => 'wiki-edit' %>
37
    <%= wikitoolbar_for 'notes' %>
38
    <%= call_hook(:view_issues_edit_notes_bottom, { :issue => @issue, :notes => @notes, :form => f }) %>
39
    
40
    <p><%=l(:label_attachment_plural)%><br /><%= render :partial => 'attachments/form' %></p>
41
    </fieldset>
42
    </div>
43
    
44
    <%= f.hidden_field :lock_version %>
45
    <%= submit_tag l(:button_submit) %>
46
    <%= link_to_remote l(:label_preview), 
47
                       { :url => preview_issue_path(:project_id => @project, :id => @issue),
48
                         :method => 'post',
49
                         :update => 'preview',
50
                         :with => 'Form.serialize("issue-form")',
51
                         :complete => "Element.scrollTo('preview')"
52
                       }, :accesskey => accesskey(:preview) %>
53
<% end %>
54

  
55
<div id="preview" class="wiki"></div>
app/views/issues/_form.html.erb
1
<%= call_hook(:view_issues_form_details_top, { :issue => @issue, :form => f }) %>
2

  
3
<div id="issue_descr_fields" <%= 'style="display:none"' unless @issue.new_record? || @issue.errors.any? %>>
4
<% if @issue.safe_attribute_names.include?('is_private') %>
5
<p style="float:right; margin-right:1em;">
6
  <label class="inline" for="issue_is_private" id="issue_is_private_label"><%= f.check_box :is_private, :no_label => true %> <%= l(:field_is_private) %></label>
7
</p>
8
<% end %>
9
<p><%= f.select :tracker_id, @project.trackers.collect {|t| [t.name, t.id]}, :required => true %></p>
10
<%= observe_field :issue_tracker_id, :url => { :action => :new, :project_id => @project, :id => @issue },
11
                                     :update => :attributes,
12
                                     :with => "Form.serialize('issue-form')" %>
13

  
14
<p><%= f.text_field :subject, :size => 80, :required => true %></p>
15

  
16
<p><%= f.text_area :description,
17
                   :cols => 60,
18
                   :rows => (@issue.description.blank? ? 10 : [[10, @issue.description.length / 50].max, 100].min),
19
                   :accesskey => accesskey(:edit),
20
                   :class => 'wiki-edit' %></p>
21
</div>
22

  
23
<div id="attributes" class="attributes">
24
  <%= render :partial => 'issues/attributes' %>
25
</div>
26

  
27
<% if @issue.new_record? %>
28
<p id="attachments_form"><%= label_tag('attachments[1][file]', l(:label_attachment_plural))%><%= render :partial => 'attachments/form' %></p>
29
<% end %>
30

  
31
<% if @issue.new_record? && User.current.allowed_to?(:add_issue_watchers, @project) -%>
32
<p id="watchers_form"><label><%= l(:label_issue_watchers) %></label>
33
<% @issue.project.users.sort.each do |user| -%>
34
<label class="floating"><%= check_box_tag 'issue[watcher_user_ids][]', user.id, !!(@issue.watched_by?(user) or user == User.current) %> <%=h user %></label>
35
<% end -%>
36
</p>
37
<% end %>
38

  
39
<%= call_hook(:view_issues_form_details_bottom, { :issue => @issue, :form => f }) %>
40

  
41
<%= wikitoolbar_for 'issue_description' %>
app/views/issues/_form.rhtml
1
<%= call_hook(:view_issues_form_details_top, { :issue => @issue, :form => f }) %>
2

  
3
<div id="issue_descr_fields" <%= 'style="display:none"' unless @issue.new_record? || @issue.errors.any? %>>
4
<% if @issue.safe_attribute_names.include?('is_private') %>
5
<p style="float:right; margin-right:1em;">
6
  <label class="inline" for="issue_is_private"><%= f.check_box :is_private, :no_label => true %> <%= l(:field_is_private) %></label>
7
</p>
8
<% end %>
9
<p><%= f.select :tracker_id, @project.trackers.collect {|t| [t.name, t.id]}, :required => true %></p>
10
<%= observe_field :issue_tracker_id, :url => { :action => :new, :project_id => @project, :id => @issue },
11
                                     :update => :attributes,
12
                                     :with => "Form.serialize('issue-form')" %>
13

  
14
<p><%= f.text_field :subject, :size => 80, :required => true %></p>
15

  
16
<p><%= f.text_area :description,
17
                   :cols => 60,
18
                   :rows => (@issue.description.blank? ? 10 : [[10, @issue.description.length / 50].max, 100].min),
19
                   :accesskey => accesskey(:edit),
20
                   :class => 'wiki-edit' %></p>
21
</div>
22

  
23
<div id="attributes" class="attributes">
24
	<%= render :partial => 'issues/attributes' %>
25
</div>
26

  
27
<% if @issue.new_record? %>
28
<p id="attachments_form"><%= label_tag('attachments[1][file]', l(:label_attachment_plural))%><%= render :partial => 'attachments/form' %></p>
29
<% end %>
30

  
31
<% if @issue.new_record? && User.current.allowed_to?(:add_issue_watchers, @project) -%>
32
<p id="watchers_form"><label><%= l(:label_issue_watchers) %></label>
33
<% @issue.project.users.sort.each do |user| -%>
34
<label class="floating"><%= check_box_tag 'issue[watcher_user_ids][]', user.id, !!(@issue.watched_by?(user) or user == User.current) %> <%=h user %></label>
35
<% end -%>
36
</p>
37
<% end %>
38

  
39
<%= call_hook(:view_issues_form_details_bottom, { :issue => @issue, :form => f }) %>
40

  
41
<%= wikitoolbar_for 'issue_description' %>
app/views/issues/_form_custom_fields.html.erb
1
<div class="splitcontentleft">
2
<% i = 0 %>
3
<% split_on = (@issue.custom_field_values.size / 2.0).ceil - 1 %>
4
<% @issue.custom_field_values.each do |value| %>
5
  <p><%= custom_field_tag_with_label :issue, value %></p>
6
<% if i == split_on -%>
7
</div><div class="splitcontentright">
8
<% end -%>
9
<% i += 1 -%>
10
<% end -%>
11
</div>
12
<div style="clear:both;"> </div>
app/views/issues/_form_custom_fields.rhtml
1
<div class="splitcontentleft">
2
<% i = 0 %>
3
<% split_on = (@issue.custom_field_values.size / 2.0).ceil - 1 %>
4
<% @issue.custom_field_values.each do |value| %>
5
	<p><%= custom_field_tag_with_label :issue, value %></p>
6
<% if i == split_on -%>
7
</div><div class="splitcontentright">
8
<% end -%>
9
<% i += 1 -%>
10
<% end -%>
11
</div>
12
<div style="clear:both;"> </div>
app/views/issues/_form_update.html.erb
1
<div class="attributes">
2
<div class="splitcontentleft">
3
<p><%= f.select :status_id, (@allowed_statuses.collect {|p| [p.name, p.id]}), :required => true %></p>
4
<p><%= f.select :assigned_to_id, principals_options_for_select(@issue.assignable_users, @issue.assigned_to), :include_blank => true %></p>
5
</div>
6
<div class="splitcontentright">
7
<% if Issue.use_field_for_done_ratio? %>
8
<p><%= f.select :done_ratio, ((0..10).to_a.collect {|r| ["#{r*10} %", r*10] }) %></p>
9
<% end %>
10
<% unless @issue.assignable_versions.empty? %>
11
<p><%= f.select :fixed_version_id, (@issue.assignable_versions.collect {|v| [v.name, v.id]}), :include_blank => true %></p>
12
<% end %>
13
</div>
14
</div>
app/views/issues/_form_update.rhtml
1
<div class="attributes">
2
<div class="splitcontentleft">
3
<p><%= f.select :status_id, (@allowed_statuses.collect {|p| [p.name, p.id]}), :required => true %></p>
4
<p><%= f.select :assigned_to_id, (@issue.assignable_users.collect {|m| [m.name, m.id]}), :include_blank => true %></p>
5
</div>
6
<div class="splitcontentright">
7
<% if Issue.use_field_for_done_ratio? %>
8
<p><%= f.select :done_ratio, ((0..10).to_a.collect {|r| ["#{r*10} %", r*10] }) %></p>
9
<% end %>
10
<% unless @issue.assignable_versions.empty? %>
11
<p><%= f.select :fixed_version_id, (@issue.assignable_versions.collect {|v| [v.name, v.id]}), :include_blank => true %></p>
12
<% end %>
13
</div>
14
</div>
app/views/issues/_history.html.erb
1
<% reply_links = authorize_for('issues', 'edit') -%>
2
<% for journal in journals %>
3
  <div id="change-<%= journal.id %>" class="<%= journal.css_classes %>">
4
    <h4><div class="journal-link"><%= link_to "##{journal.indice}", :anchor => "note-#{journal.indice}" %></div>
5
    <%= avatar(journal.user, :size => "24") %>
6
    <%= content_tag('a', '', :name => "note-#{journal.indice}")%>
7
    <%= authoring journal.created_on, journal.user, :label => :label_updated_time_by %></h4>
8

  
9
    <% if journal.details.any? %>
10
    <ul class="details">
11
      <% for detail in journal.details %>
12
       <li><%= show_detail(detail) %></li>
13
      <% end %>
14
    </ul>
15
    <% end %>
16
    <%= render_notes(issue, journal, :reply_links => reply_links) unless journal.notes.blank? %>
17
  </div>
18
  <%= call_hook(:view_issues_history_journal_bottom, { :journal => journal }) %>
19
<% end %>
20

  
21
<% heads_for_wiki_formatter if User.current.allowed_to?(:edit_issue_notes, issue.project) || User.current.allowed_to?(:edit_own_issue_notes, issue.project) %>
app/views/issues/_history.rhtml
1
<% reply_links = authorize_for('issues', 'edit') -%>
2
<% for journal in journals %>
3
  <div id="change-<%= journal.id %>" class="<%= journal.css_classes %>">
4
    <h4><div class="journal-link"><%= link_to "##{journal.indice}", :anchor => "note-#{journal.indice}" %></div>
5
    <%= avatar(journal.user, :size => "24") %>
6
    <%= content_tag('a', '', :name => "note-#{journal.indice}")%>
7
		<%= authoring journal.created_on, journal.user, :label => :label_updated_time_by %></h4>
8
    
9
    <% if journal.details.any? %>
10
    <ul class="details">
11
      <% for detail in journal.details %>
12
       <li><%= show_detail(detail) %></li>
13
      <% end %>
14
    </ul>
15
    <% end %>
16
    <%= render_notes(issue, journal, :reply_links => reply_links) unless journal.notes.blank? %>
17
  </div>
18
  <%= call_hook(:view_issues_history_journal_bottom, { :journal => journal }) %>
19
<% end %>
20

  
21
<% heads_for_wiki_formatter if User.current.allowed_to?(:edit_issue_notes, issue.project) || User.current.allowed_to?(:edit_own_issue_notes, issue.project) %>
app/views/issues/_list.html.erb
1
<% form_tag({}) do -%>
2
<%= hidden_field_tag 'back_url', url_for(params) %>
3
<div class="autoscroll">
4
<table class="list issues">
5
    <thead><tr>
6
        <th class="checkbox hide-when-print"><%= link_to image_tag('toggle_check.png'), {}, :onclick => 'toggleIssuesSelection(Element.up(this, "form")); return false;',
7
                                                           :title => "#{l(:button_check_all)}/#{l(:button_uncheck_all)}" %>
8
        </th>
9
    <%= sort_header_tag('id', :caption => '#', :default_order => 'desc') %>
10
        <% query.columns.each do |column| %>
11
          <%= column_header(column) %>
12
        <% end %>
13
  </tr></thead>
14
  <% previous_group = false %>
15
  <tbody>
16
  <% issue_list(issues) do |issue, level| -%>
17
  <% if @query.grouped? && (group = @query.group_by_column.value(issue)) != previous_group %>
18
    <% reset_cycle %>
19
    <tr class="group open">
20
      <td colspan="<%= query.columns.size + 2 %>">
21
        <span class="expander" onclick="toggleRowGroup(this);">&nbsp;</span>
22
        <%= group.blank? ? 'None' : column_content(@query.group_by_column, issue) %> <span class="count">(<%= @issue_count_by_group[group] %>)</span>
23
        <%= link_to_function("#{l(:button_collapse_all)}/#{l(:button_expand_all)}", "toggleAllRowGroups(this)", :class => 'toggle-all') %>
24
      </td>
25
    </tr>
26
    <% previous_group = group %>
27
  <% end %>
28
  <tr id="issue-<%= issue.id %>" class="hascontextmenu <%= cycle('odd', 'even') %> <%= issue.css_classes %> <%= level > 0 ? "idnt idnt-#{level}" : nil %>">
29
    <td class="checkbox hide-when-print"><%= check_box_tag("ids[]", issue.id, false, :id => nil) %></td>
30
    <td class="id"><%= link_to issue.id, :controller => 'issues', :action => 'show', :id => issue %></td>
31
        <% query.columns.each do |column| %><%= content_tag 'td', column_content(column, issue), :class => column.css_classes %><% end %>
32
  </tr>
33
  <% end -%>
34
  </tbody>
35
</table>
36
</div>
37
<% end -%>
app/views/issues/_list.rhtml
1
<% form_tag({}) do -%>	
2
<%= hidden_field_tag 'back_url', url_for(params) %>
3
<div class="autoscroll">
4
<table class="list issues">
5
    <thead><tr>
6
        <th class="checkbox hide-when-print"><%= link_to image_tag('toggle_check.png'), {}, :onclick => 'toggleIssuesSelection(Element.up(this, "form")); return false;',
7
                                                           :title => "#{l(:button_check_all)}/#{l(:button_uncheck_all)}" %>
8
        </th>
9
		<%= sort_header_tag('id', :caption => '#', :default_order => 'desc') %>
10
        <% query.columns.each do |column| %>
11
          <%= column_header(column) %>
12
        <% end %>
13
	</tr></thead>
14
	<% previous_group = false %>
15
	<tbody>
16
	<% issue_list(issues) do |issue, level| -%>
17
  <% if @query.grouped? && (group = @query.group_by_column.value(issue)) != previous_group %>
18
    <% reset_cycle %>
19
    <tr class="group open">
20
    	<td colspan="<%= query.columns.size + 2 %>">
21
    		<span class="expander" onclick="toggleRowGroup(this); return false;">&nbsp;</span>
22
      	<%= group.blank? ? 'None' : column_content(@query.group_by_column, issue) %> <span class="count">(<%= @issue_count_by_group[group] %>)</span>
23
        <%= link_to_function("#{l(:button_collapse_all)}/#{l(:button_expand_all)}", "toggleAllRowGroups(this)", :class => 'toggle-all') %>
24
    	</td>
25
		</tr>
26
		<% previous_group = group %>
27
  <% end %>
28
	<tr id="issue-<%= issue.id %>" class="hascontextmenu <%= cycle('odd', 'even') %> <%= issue.css_classes %> <%= level > 0 ? "idnt idnt-#{level}" : nil %>">
29
	  <td class="checkbox hide-when-print"><%= check_box_tag("ids[]", issue.id, false, :id => nil) %></td>
30
		<td class="id"><%= link_to issue.id, :controller => 'issues', :action => 'show', :id => issue %></td>
31
        <% query.columns.each do |column| %><%= content_tag 'td', column_content(column, issue), :class => column.css_classes %><% end %>
32
	</tr>
33
	<% end -%>
34
	</tbody>
35
</table>
36
</div>
37
<% end -%>
app/views/issues/_list_simple.html.erb
1
<% if issues && issues.any? %>
2
<% form_tag({}) do %>
3
  <table class="list issues">
4
    <thead><tr>
5
    <th>#</th>
6
    <th><%=l(:field_project)%></th>
7
    <th><%=l(:field_tracker)%></th>
8
    <th><%=l(:field_subject)%></th>
9
    </tr></thead>
10
    <tbody>
11
    <% for issue in issues %>
12
    <tr id="issue-<%= h(issue.id) %>" class="hascontextmenu <%= cycle('odd', 'even') %> <%= issue.css_classes %>">
13
      <td class="id">
14
        <%= check_box_tag("ids[]", issue.id, false, :style => 'display:none;') %>
15
        <%= link_to(h(issue.id), :controller => 'issues', :action => 'show', :id => issue) %>
16
      </td>
17
      <td class="project"><%= link_to_project(issue.project) %></td>
18
      <td class="tracker"><%=h issue.tracker %></td>
19
      <td class="subject">
20
        <%= link_to h(truncate(issue.subject, :length => 60)), :controller => 'issues', :action => 'show', :id => issue %> (<%=h issue.status %>)
21
      </td>
22
    </tr>
23
    <% end %>
24
    </tbody>
25
  </table>
26
<% end %>
27
<% else %>
28
  <p class="nodata"><%= l(:label_no_data) %></p>
29
<% end %>
app/views/issues/_list_simple.rhtml
1
<% if issues && issues.any? %>
2
<% form_tag({}) do %>
3
	<table class="list issues">		
4
		<thead><tr>
5
		<th>#</th>
6
		<th><%=l(:field_project)%></th>
7
		<th><%=l(:field_tracker)%></th>
8
		<th><%=l(:field_subject)%></th>
9
		</tr></thead>
10
		<tbody>	
11
		<% for issue in issues %>
12
		<tr id="issue-<%= issue.id %>" class="hascontextmenu <%= cycle('odd', 'even') %> <%= issue.css_classes %>">
13
			<td class="id">
14
			  <%= check_box_tag("ids[]", issue.id, false, :style => 'display:none;') %>
15
				<%= link_to issue.id, :controller => 'issues', :action => 'show', :id => issue %>
16
			</td>
17
			<td class="project"><%= link_to_project(issue.project) %></td>
18
			<td class="tracker"><%=h issue.tracker %></td>
19
			<td class="subject">
20
        <%= link_to h(truncate(issue.subject, :length => 60)), :controller => 'issues', :action => 'show', :id => issue %> (<%=h issue.status %>)
21
      </td>
22
		</tr>
23
		<% end %>
24
		</tbody>
25
	</table>
26
<% end %>
27
<% else %>
28
	<p class="nodata"><%= l(:label_no_data) %></p>
29
<% end %>
app/views/issues/_relations.html.erb
1
<div class="contextual">
2
<% if User.current.allowed_to?(:manage_issue_relations, @project) %>
3
  <%= toggle_link l(:button_add), 'new-relation-form', {:focus => 'relation_issue_to_id'} %>
4
<% end %>
5
</div>
6

  
7
<p><strong><%=l(:label_related_issues)%></strong></p>
8

  
9
<% if @relations.present? %>
10
<form>
11
<table class="list issues">
12
<% @relations.each do |relation| %>
13
<tr class="issue hascontextmenu" id="relation-<%= relation.id %>">
14
<td class="checkbox"><%= check_box_tag("ids[]", relation.other_issue(@issue).id, false, :id => nil) %></td>
15
<td class="subject"><%= l(relation.label_for(@issue)) %> <%= "(#{l('datetime.distance_in_words.x_days', :count => relation.delay)})" if relation.delay && relation.delay != 0 %>
16
    <%= h(relation.other_issue(@issue).project) + ' - ' if Setting.cross_project_issue_relations? %>
17
    <%= link_to_issue(relation.other_issue(@issue), :truncate => 60) %>
18
</td>
19
<td class="status"><%=h relation.other_issue(@issue).status.name %></td>
20
<td class="start_date"><%= format_date(relation.other_issue(@issue).start_date) %></td>
21
<td class="due_date"><%= format_date(relation.other_issue(@issue).due_date) %></td>
22
<td class="buttons"><%= link_to_remote(image_tag('link_break.png'), { :url => {:controller => 'issue_relations', :action => 'destroy', :id => relation},
23
                                                  :method => :delete
24
                                                }, :title => l(:label_relation_delete)) if authorize_for('issue_relations', 'destroy') %></td>
25
</tr>
26
<% end %>
27
</table>
28
</form>
29
<% end %>
30

  
31
<% remote_form_for(:relation, @relation,
32
                 :url => {:controller => 'issue_relations', :action => 'create', :issue_id => @issue},
33
                 :method => :post,
34
                 :complete => "Form.Element.focus('relation_issue_to_id');",
35
                 :html => {:id => 'new-relation-form', :style => (@relation ? '' : 'display: none;')}) do |f| %>
36
<%= render :partial => 'issue_relations/form', :locals => {:f => f}%>
37
<% end %>
app/views/issues/_relations.rhtml
1
<div class="contextual">
2
<% if User.current.allowed_to?(:manage_issue_relations, @project) %>
3
  <%= toggle_link l(:button_add), 'new-relation-form', {:focus => 'relation_issue_to_id'} %>
4
<% end %>
5
</div>
6

  
7
<p><strong><%=l(:label_related_issues)%></strong></p>
8

  
9
<% if @relations.present? %>
10
<form>
11
<table class="list issues">
12
<% @relations.each do |relation| %>
13
<tr class="issue hascontextmenu">
14
<td class="checkbox"><%= check_box_tag("ids[]", relation.other_issue(@issue).id, false, :id => nil) %></td>
15
<td class="subject"><%= l(relation.label_for(@issue)) %> <%= "(#{l('datetime.distance_in_words.x_days', :count => relation.delay)})" if relation.delay && relation.delay != 0 %>
16
    <%= h(relation.other_issue(@issue).project) + ' - ' if Setting.cross_project_issue_relations? %>
17
    <%= link_to_issue(relation.other_issue(@issue), :truncate => 60) %>
18
</td>
19
<td class="status"><%= relation.other_issue(@issue).status.name %></td>
20
<td class="start_date"><%= format_date(relation.other_issue(@issue).start_date) %></td>
21
<td class="due_date"><%= format_date(relation.other_issue(@issue).due_date) %></td>
22
<td class="buttons"><%= link_to_remote(image_tag('link_break.png'), { :url => {:controller => 'issue_relations', :action => 'destroy', :issue_id => @issue, :id => relation},                                              
23
                                                  :method => :post
24
                                                }, :title => l(:label_relation_delete)) if authorize_for('issue_relations', 'destroy') %></td>
25
</tr>
26
<% end %>
27
</table>
28
</form>
29
<% end %>
30

  
31
<% remote_form_for(:relation, @relation, 
32
                 :url => {:controller => 'issue_relations', :action => 'new', :issue_id => @issue},
33
                 :method => :post,
34
                 :complete => "Form.Element.focus('relation_issue_to_id');",
35
                 :html => {:id => 'new-relation-form', :style => (@relation ? '' : 'display: none;')}) do |f| %>
36
<%= render :partial => 'issue_relations/form', :locals => {:f => f}%>
37
<% end %>
app/views/issues/_sidebar.html.erb
1
<h3><%= l(:label_issue_plural) %></h3>
2
<%= link_to l(:label_issue_view_all), { :controller => 'issues', :action => 'index', :project_id => @project, :set_filter => 1 } %><br />
3
<% if @project %>
4
<%= link_to l(:field_summary), :controller => 'reports', :action => 'issue_report', :id => @project %><br />
5
<% end %>
6
<%= call_hook(:view_issues_sidebar_issues_bottom) %>
7

  
8
<% if User.current.allowed_to?(:view_calendar, @project, :global => true) %>
9
  <%= link_to(l(:label_calendar), :controller => 'calendars', :action => 'show', :project_id => @project) %><br />
10
<% end %>
11
<% if User.current.allowed_to?(:view_gantt, @project, :global => true) %>
12
  <%= link_to(l(:label_gantt), :controller => 'gantts', :action => 'show', :project_id => @project) %><br />
13
<% end %>
14
<%= call_hook(:view_issues_sidebar_planning_bottom) %>
15

  
16
<%= render_sidebar_queries %>
17
<%= call_hook(:view_issues_sidebar_queries_bottom) %>
app/views/issues/_sidebar.rhtml
1
<h3><%= l(:label_issue_plural) %></h3>
2
<%= link_to l(:label_issue_view_all), { :controller => 'issues', :action => 'index', :project_id => @project, :set_filter => 1 } %><br />
3
<% if @project %>
4
<%= link_to l(:field_summary), :controller => 'reports', :action => 'issue_report', :id => @project %><br />
5
<% end %>
6
<%= call_hook(:view_issues_sidebar_issues_bottom) %>
7

  
8
<% if User.current.allowed_to?(:view_calendar, @project, :global => true) %>
9
	<%= link_to(l(:label_calendar), :controller => 'calendars', :action => 'show', :project_id => @project) %><br />
10
<% end %>
11
<% if User.current.allowed_to?(:view_gantt, @project, :global => true) %>
12
	<%= link_to(l(:label_gantt), :controller => 'gantts', :action => 'show', :project_id => @project) %><br />
13
<% end %>
14
<%= call_hook(:view_issues_sidebar_planning_bottom) %>
15

  
16
<%= render_sidebar_queries %>
17
<%= call_hook(:view_issues_sidebar_queries_bottom) %>
app/views/issues/bulk_edit.html.erb
1
<h2><%= l(:label_bulk_edit_selected_issues) %></h2>
2

  
3
<ul><%= @issues.collect {|i| content_tag('li', link_to(h("#{i.tracker} ##{i.id}"), { :action => 'show', :id => i }) + h(": #{i.subject}")) }.join("\n") %></ul>
4

  
5
<% form_tag(:action => 'bulk_update') do %>
6
<%= @issues.collect {|i| hidden_field_tag('ids[]', i.id)}.join %>
7
<div class="box tabular">
8
<fieldset class="attributes">
9
<legend><%= l(:label_change_properties) %></legend>
10

  
11
<div class="splitcontentleft">
12
<p>
13
  <label for="issue_tracker_id"><%= l(:field_tracker) %></label>
14
  <%= select_tag('issue[tracker_id]', "<option value=\"\">#{l(:label_no_change_option)}</option>" + options_from_collection_for_select(@trackers, :id, :name)) %>
15
</p>
16
<% if @available_statuses.any? %>
17
<p>
18
  <label for='issue_status_id'><%= l(:field_status) %></label>
19
  <%= select_tag('issue[status_id]', "<option value=\"\">#{l(:label_no_change_option)}</option>" + options_from_collection_for_select(@available_statuses, :id, :name)) %>
20
</p>
21
<% end %>
22
<p>
23
  <label for='issue_priority_id'><%= l(:field_priority) %></label>
24
  <%= select_tag('issue[priority_id]', "<option value=\"\">#{l(:label_no_change_option)}</option>" + options_from_collection_for_select(IssuePriority.active, :id, :name)) %>
25
</p>
26
<p>
27
  <label for='issue_assigned_to_id'><%= l(:field_assigned_to) %></label>
28
  <%= select_tag('issue[assigned_to_id]', content_tag('option', l(:label_no_change_option), :value => '') +
29
                                 content_tag('option', l(:label_nobody), :value => 'none') +
30
                                 principals_options_for_select(@assignables)) %>
31
</p>
32
<% if @project %>
33
<p>
34
  <label for='issue_category_id'><%= l(:field_category) %></label>
35
  <%= select_tag('issue[category_id]', content_tag('option', l(:label_no_change_option), :value => '') +
36
                                content_tag('option', l(:label_none), :value => 'none') +
37
                                options_from_collection_for_select(@project.issue_categories, :id, :name)) %>
38
</p>
39
<% end %>
40
<% #TODO: allow editing versions when multiple projects %>
41
<% if @project %>
42
<p>
43
  <label for='issue_fixed_version_id'><%= l(:field_fixed_version) %></label>
44
  <%= select_tag('issue[fixed_version_id]', content_tag('option', l(:label_no_change_option), :value => '') +
45
                                   content_tag('option', l(:label_none), :value => 'none') +
46
                                   version_options_for_select(@project.shared_versions.open.sort)) %>
47
</p>
48
<% end %>
49

  
50
<% @custom_fields.each do |custom_field| %>
51
  <p><label><%= h(custom_field.name) %> <%= custom_field_tag_for_bulk_edit('issue', custom_field, @projects) %></label></p>
52
<% end %>
53

  
54
<%= call_hook(:view_issues_bulk_edit_details_bottom, { :issues => @issues }) %>
55
</div>
56

  
57
<div class="splitcontentright">
58
<% if @project && User.current.allowed_to?(:manage_subtasks, @project) %>
59
<p>
60
  <label for='issue_parent_issue_id'><%= l(:field_parent_issue) %></label>
61
  <%= text_field_tag 'issue[parent_issue_id]', '', :size => 10 %>
62
</p>
63
<div id="parent_issue_candidates" class="autocomplete"></div>
64
<%= javascript_tag "observeParentIssueField('#{auto_complete_issues_path(:project_id => @project) }')" %>
65
<% end %>
66
<p>
67
  <label for='issue_start_date'><%= l(:field_start_date) %></label>
68
  <%= text_field_tag 'issue[start_date]', '', :size => 10 %><%= calendar_for('issue_start_date') %>
69
</p>
70
<p>
71
  <label for='issue_due_date'><%= l(:field_due_date) %></label>
72
  <%= text_field_tag 'issue[due_date]', '', :size => 10 %><%= calendar_for('issue_due_date') %>
73
</p>
74
<% if Issue.use_field_for_done_ratio? %>
75
<p>
76
  <label for='issue_done_ratio'><%= l(:field_done_ratio) %></label>
77
  <%= select_tag 'issue[done_ratio]', options_for_select([[l(:label_no_change_option), '']] + (0..10).to_a.collect {|r| ["#{r*10} %", r*10] }) %>
78
</p>
79
<% end %>
80
</div>
81

  
82
</fieldset>
83

  
84
<fieldset><legend><%= l(:field_notes) %></legend>
85
<%= text_area_tag 'notes', @notes, :cols => 60, :rows => 10, :class => 'wiki-edit' %>
86
<%= wikitoolbar_for 'notes' %>
87
</fieldset>
88
</div>
89

  
90
<p><%= submit_tag l(:button_submit) %></p>
91
<% end %>
app/views/issues/bulk_edit.rhtml
1
<h2><%= l(:label_bulk_edit_selected_issues) %></h2>
2

  
3
<ul><%= @issues.collect {|i| content_tag('li', link_to(h("#{i.tracker} ##{i.id}"), { :action => 'show', :id => i }) + h(": #{i.subject}")) }.join("\n") %></ul>
4

  
5
<% form_tag(:action => 'bulk_update') do %>
6
<%= @issues.collect {|i| hidden_field_tag('ids[]', i.id)}.join %>
7
<div class="box tabular">
8
<fieldset class="attributes">
9
<legend><%= l(:label_change_properties) %></legend>
10

  
11
<div class="splitcontentleft">
12
<p>
13
	<label><%= l(:field_tracker) %></label>
14
	<%= select_tag('issue[tracker_id]', "<option value=\"\">#{l(:label_no_change_option)}</option>" + options_from_collection_for_select(@trackers, :id, :name)) %>
15
</p>
16
<% if @available_statuses.any? %>
17
<p>
18
	<label><%= l(:field_status) %></label>
19
	<%= select_tag('issue[status_id]', "<option value=\"\">#{l(:label_no_change_option)}</option>" + options_from_collection_for_select(@available_statuses, :id, :name)) %>
20
</p>
21
<% end %>
22
<p>
23
	<label><%= l(:field_priority) %></label> 
24
	<%= select_tag('issue[priority_id]', "<option value=\"\">#{l(:label_no_change_option)}</option>" + options_from_collection_for_select(IssuePriority.all, :id, :name)) %>
25
</p>
26
<p>
27
	<label><%= l(:field_assigned_to) %></label> 
28
	<%= select_tag('issue[assigned_to_id]', content_tag('option', l(:label_no_change_option), :value => '') +
29
                                 content_tag('option', l(:label_nobody), :value => 'none') +
30
                                 options_from_collection_for_select(@assignables, :id, :name)) %>
31
</p>
32
<% if @project %>
33
<p>
34
	<label><%= l(:field_category) %></label> 
35
	<%= select_tag('issue[category_id]', content_tag('option', l(:label_no_change_option), :value => '') +
36
                                content_tag('option', l(:label_none), :value => 'none') +
37
                                options_from_collection_for_select(@project.issue_categories, :id, :name)) %>
38
</p>
39
<% end %>
40
<% #TODO: allow editing versions when multiple projects %>
41
<% if @project %>
42
<p>
43
	<label><%= l(:field_fixed_version) %></label> 
44
	<%= select_tag('issue[fixed_version_id]', content_tag('option', l(:label_no_change_option), :value => '') +
45
                                   content_tag('option', l(:label_none), :value => 'none') +
46
                                   version_options_for_select(@project.shared_versions.open.sort)) %>
47
</p>
48
<% end %>
49

  
50
<% @custom_fields.each do |custom_field| %>
51
	<p><label><%= h(custom_field.name) %></label> <%= custom_field_tag_for_bulk_edit('issue', custom_field, @projects) %></p>
52
<% end %>
53

  
54
<%= call_hook(:view_issues_bulk_edit_details_bottom, { :issues => @issues }) %>
55
</div>
56

  
57
<div class="splitcontentright">
58
<% if @project && User.current.allowed_to?(:manage_subtasks, @project) %>
59
<p>
60
	<label><%= l(:field_parent_issue) %></label>
61
	<%= text_field_tag 'issue[parent_issue_id]', '', :size => 10 %>
62
</p>
63
<div id="parent_issue_candidates" class="autocomplete"></div>
64
<%= javascript_tag "observeParentIssueField('#{auto_complete_issues_path(:project_id => @project) }')" %>
65
<% end %>
66
<p>
67
	<label><%= l(:field_start_date) %></label>
68
	<%= text_field_tag 'issue[start_date]', '', :size => 10 %><%= calendar_for('issue_start_date') %>
69
</p>
70
<p>
71
	<label><%= l(:field_due_date) %></label> 
72
	<%= text_field_tag 'issue[due_date]', '', :size => 10 %><%= calendar_for('issue_due_date') %>
73
</p>
74
<% if Issue.use_field_for_done_ratio? %>
75
<p>
76
	<label><%= l(:field_done_ratio) %></label> 
77
	<%= select_tag 'issue[done_ratio]', options_for_select([[l(:label_no_change_option), '']] + (0..10).to_a.collect {|r| ["#{r*10} %", r*10] }) %>
78
</p>
79
<% end %>
80
</div>
81

  
82
</fieldset>
83

  
84
<fieldset><legend><%= l(:field_notes) %></legend>
85
<%= text_area_tag 'notes', @notes, :cols => 60, :rows => 10, :class => 'wiki-edit' %>
86
<%= wikitoolbar_for 'notes' %>
87
</fieldset>
88
</div>
89

  
90
<p><%= submit_tag l(:button_submit) %></p>
91
<% end %>
app/views/issues/destroy.html.erb
1
<h2><%= l(:label_confirmation) %></h2>
2

  
3
<% form_tag do %>
4
<%= @issues.collect {|i| hidden_field_tag 'ids[]', i.id } %>
5
<div class="box">
6
<p><strong><%= l(:text_destroy_time_entries_question, :hours => number_with_precision(@hours, :precision => 2)) %></strong></p>
7
<p>
8
<label><%= radio_button_tag 'todo', 'destroy', true %> <%= l(:text_destroy_time_entries) %></label><br />
9
<label><%= radio_button_tag 'todo', 'nullify', false %> <%= l(:text_assign_time_entries_to_project) %></label><br />
10
<label><%= radio_button_tag 'todo', 'reassign', false, :onchange => 'if (this.checked) { $("reassign_to_id").focus(); }' %> <%= l(:text_reassign_time_entries) %></label>
11
<%= text_field_tag 'reassign_to_id', params[:reassign_to_id], :size => 6, :onfocus => '$("todo_reassign").checked=true;' %>
12
</p>
13
</div>
14
<%= submit_tag l(:button_apply) %>
15
<% end %>
app/views/issues/destroy.rhtml
1
<h2><%= l(:label_confirmation) %></h2>
2

  
3
<% form_tag do %>
4
<%= @issues.collect {|i| hidden_field_tag 'ids[]', i.id } %>
5
<div class="box">
6
<p><strong><%= l(:text_destroy_time_entries_question, :hours => number_with_precision(@hours, :precision => 2)) %></strong></p>
7
<p>
8
<label><%= radio_button_tag 'todo', 'destroy', true %> <%= l(:text_destroy_time_entries) %></label><br />
9
<label><%= radio_button_tag 'todo', 'nullify', false %> <%= l(:text_assign_time_entries_to_project) %></label><br />
10
<label><%= radio_button_tag 'todo', 'reassign', false, :onchange => 'if (this.checked) { $("reassign_to_id").focus(); }' %> <%= l(:text_reassign_time_entries) %></label>
11
<%= text_field_tag 'reassign_to_id', params[:reassign_to_id], :size => 6, :onfocus => '$("todo_reassign").checked=true;' %>
12
</p>
13
</div>
14
<%= submit_tag l(:button_apply) %>
15
<% end %>
app/views/issues/edit.html.erb
1
<h2><%=h "#{@issue.tracker.name} ##{@issue.id}" %></h2>
2

  
3
<%= render :partial => 'edit' %>
4
<% content_for :header_tags do %>
5
    <%= robot_exclusion_tag %>
6
<% end %>
app/views/issues/edit.rhtml
1
<h2><%=h "#{@issue.tracker.name} ##{@issue.id}" %></h2>
2

  
3
<%= render :partial => 'edit' %>
4
<% content_for :header_tags do %>
5
    <%= robot_exclusion_tag %>
6
<% end %>
app/views/issues/index.api.rsb
11 11
      api.category(:id => issue.category_id, :name => issue.category.name) unless issue.category.nil?
12 12
      api.fixed_version(:id => issue.fixed_version_id, :name => issue.fixed_version.name) unless issue.fixed_version.nil?
13 13
      api.parent(:id => issue.parent_id) unless issue.parent.nil?
14
      
15
      api.subject 		issue.subject
14

  
15
      api.subject     issue.subject
16 16
      api.description issue.description
17
      api.start_date 	issue.start_date
18
      api.due_date 		issue.due_date
19
      api.done_ratio 	issue.done_ratio
17
      api.start_date  issue.start_date
18
      api.due_date    issue.due_date
19
      api.done_ratio  issue.done_ratio
20 20
      api.estimated_hours issue.estimated_hours
21
      
21

  
22 22
      render_api_custom_values issue.custom_field_values, api
23
      
23

  
24 24
      api.created_on issue.created_on
25 25
      api.updated_on issue.updated_on
26

  
27
      api.array :relations do
28
        issue.relations.each do |relation|
29
          api.relation(:id => relation.id, :issue_id => relation.issue_from_id, :issue_to_id => relation.issue_to_id, :relation_type => relation.relation_type, :delay => relation.delay)
30
        end
31
      end if include_in_api_response?('relations')
26 32
    end
27 33
  end
28 34
end
app/views/issues/index.html.erb
1
<div class="contextual">
2
<% if !@query.new_record? && @query.editable_by?(User.current) %>
3
  <%= link_to l(:button_edit), edit_query_path(@query), :class => 'icon icon-edit' %>
4
  <%= link_to l(:button_delete), query_path(@query), :confirm => l(:text_are_you_sure), :method => :delete, :class => 'icon icon-del' %>
5
<% end %>
6
</div>
7

  
8
<h2><%= @query.new_record? ? l(:label_issue_plural) : h(@query.name) %></h2>
9
<% html_title(@query.new_record? ? l(:label_issue_plural) : @query.name) %>
10

  
11
<% form_tag({ :controller => 'issues', :action => 'index', :project_id => @project }, :method => :get, :id => 'query_form') do %>
12
    <%= hidden_field_tag 'set_filter', '1' %>
13
    <div id="query_form_content" class="hide-when-print">
14
    <fieldset id="filters" class="collapsible <%= @query.new_record? ? "" : "collapsed" %>">
15
      <legend onclick="toggleFieldset(this);"><%= l(:label_filter_plural) %></legend>
16
      <div style="<%= @query.new_record? ? "" : "display: none;" %>">
17
        <%= render :partial => 'queries/filters', :locals => {:query => @query} %>
18
      </div>
19
    </fieldset>
20
    <fieldset class="collapsible collapsed">
21
      <legend onclick="toggleFieldset(this);"><%= l(:label_options) %></legend>
22
      <div style="display: none;">
23
        <table>
24
          <tr>
25
            <td><%= l(:field_column_names) %></td>
26
            <td><%= render :partial => 'queries/columns', :locals => {:query => @query} %></td>
27
          </tr>
28
          <tr>
29
            <td><label for='group_by'><%= l(:field_group_by) %></label></td>
30
            <td><%= select_tag('group_by', options_for_select([[]] + @query.groupable_columns.collect {|c| [c.caption, c.name.to_s]}, @query.group_by)) %></td>
31
          </tr>
32
        </table>
33
      </div>
34
    </fieldset>
35
    </div>
36
    <p class="buttons hide-when-print">
37

  
38
    <%= link_to_function l(:button_apply), 'submit_query_form("query_form")', :class => 'icon icon-checked' %>
39
    <%= link_to l(:button_clear), { :set_filter => 1, :project_id => @project }, :class => 'icon icon-reload'  %>
40
    <% if @query.new_record? && User.current.allowed_to?(:save_queries, @project, :global => true) %>
41
        <%= link_to_function l(:button_save), "$('query_form').action='#{ @project ? new_project_query_path : new_query_path }'; submit_query_form('query_form')", :class => 'icon icon-save' %>
42
    <% end %>
43
    </p>
44
<% end %>
45

  
46
<%= error_messages_for 'query' %>
47
<% if @query.valid? %>
48
<% if @issues.empty? %>
49
<p class="nodata"><%= l(:label_no_data) %></p>
50
<% else %>
51
<%= render :partial => 'issues/list', :locals => {:issues => @issues, :query => @query} %>
52
<p class="pagination"><%= pagination_links_full @issue_pages, @issue_count %></p>
53
<% end %>
54

  
55
<% other_formats_links do |f| %>
56
  <%= f.link_to 'Atom', :url => params.merge(:key => User.current.rss_key) %>
57
  <%= f.link_to 'CSV', :url => params, :onclick => "showModal('csv-export-options', '330px'); return false;" %>
58
  <%= f.link_to 'PDF', :url => params %>
59
<% end %>
60

  
61
<div id="csv-export-options" style="display:none;">
62
  <h3 class="title"><%= l(:label_export_options, :export_format => 'CSV') %></h3>
63
  <% form_tag(params.merge({:format => 'csv',:page=>nil}), :method => :get, :id => 'csv-export-form') do %>
64
  <p>
65
    <label><%= radio_button_tag 'columns', '', true %> <%= l(:description_selected_columns) %></label><br />
66
    <label><%= radio_button_tag 'columns', 'all' %> <%= l(:description_all_columns) %></label>
67
  </p>
68
  <p>
69
    <label><%= check_box_tag 'description', '1' %> <%= l(:field_description) %></label>
70
  </p>
71
  <p class="buttons">
72
    <%= submit_tag l(:button_export), :name => nil, :onclick => "hideModal(this);" %>
73
    <%= submit_tag l(:button_cancel), :name => nil, :onclick => "hideModal(this);", :type => 'button' %>
74
  </p>
75
  <% end %>
76
</div>
77

  
78
<% end %>
79
<%= call_hook(:view_issues_index_bottom, { :issues => @issues, :project => @project, :query => @query }) %>
80

  
81
<% content_for :sidebar do %>
82
    <%= render :partial => 'issues/sidebar' %>
83
<% end %>
84

  
85
<% content_for :header_tags do %>
86
    <%= auto_discovery_link_tag(:atom, {:query_id => @query, :format => 'atom', :page => nil, :key => User.current.rss_key}, :title => l(:label_issue_plural)) %>
87
    <%= auto_discovery_link_tag(:atom, {:controller => 'journals', :action => 'index', :query_id => @query, :format => 'atom', :page => nil, :key => User.current.rss_key}, :title => l(:label_changes_details)) %>
88
<% end %>
89

  
90
<%= context_menu issues_context_menu_path %>
app/views/issues/index.rhtml
1
<div class="contextual">
2
<% if !@query.new_record? && @query.editable_by?(User.current) %>
3
	<%= link_to l(:button_edit), {:controller => 'queries', :action => 'edit', :id => @query}, :class => 'icon icon-edit' %>
4
	<%= link_to l(:button_delete), {:controller => 'queries', :action => 'destroy', :id => @query}, :confirm => l(:text_are_you_sure), :method => :post, :class => 'icon icon-del' %>
5
<% end %>
6
</div>
7

  
8
<h2><%= @query.new_record? ? l(:label_issue_plural) : h(@query.name) %></h2>
9
<% html_title(@query.new_record? ? l(:label_issue_plural) : @query.name) %>
10

  
11
<% form_tag({ :controller => 'issues', :action => 'index', :project_id => @project }, :method => :get, :id => 'query_form') do %>
12
    <%= hidden_field_tag 'set_filter', '1' %>
13
		<div id="query_form_content" class="hide-when-print">
14
    <fieldset id="filters" class="collapsible <%= @query.new_record? ? "" : "collapsed" %>">
15
    	<legend onclick="toggleFieldset(this);"><%= l(:label_filter_plural) %></legend>
16
    	<div style="<%= @query.new_record? ? "" : "display: none;" %>">
17
    		<%= render :partial => 'queries/filters', :locals => {:query => @query} %>
18
    	</div>
19
    </fieldset>
20
    <fieldset class="collapsible collapsed">
21
    	<legend onclick="toggleFieldset(this);"><%= l(:label_options) %></legend>
22
    	<div style="display: none;">
23
    		<table>
24
    			<tr>
25
    				<td><%= l(:field_column_names) %></td>
26
						<td><%= render :partial => 'queries/columns', :locals => {:query => @query} %></td>
27
					</tr>
28
					<tr>
29
						<td><%= l(:field_group_by) %></td>
30
						<td><%= select_tag('group_by', options_for_select([[]] + @query.groupable_columns.collect {|c| [c.caption, c.name.to_s]}, @query.group_by)) %></td>
31
					</tr>
32
				</table>
33
			</div>
34
		</fieldset>
35
		</div>
36
    <p class="buttons hide-when-print">
37

  
38
    <%= link_to_function l(:button_apply), 'submit_query_form("query_form")', :class => 'icon icon-checked' %>
39
    <%= link_to l(:button_clear), { :set_filter => 1, :project_id => @project }, :class => 'icon icon-reload'  %>
40
    <% if @query.new_record? && User.current.allowed_to?(:save_queries, @project, :global => true) %>
41
    <%= link_to_function l(:button_save), "$('query_form').action='#{ url_for :controller => 'queries', :action => 'new', :project_id => @project }'; submit_query_form('query_form')", :class => 'icon icon-save' %>
42
    <% end %>
43
    </p>
44
<% end %>
45

  
46
<%= error_messages_for 'query' %>
47
<% if @query.valid? %>
48
<% if @issues.empty? %>
49
<p class="nodata"><%= l(:label_no_data) %></p>
50
<% else %>
51
<%= render :partial => 'issues/list', :locals => {:issues => @issues, :query => @query} %>
52
<p class="pagination"><%= pagination_links_full @issue_pages, @issue_count %></p>
53
<% end %>
54

  
55
<% other_formats_links do |f| %>
56
	<%= f.link_to 'Atom', :url => params.merge(:key => User.current.rss_key) %>
57
	<%= f.link_to 'CSV', :url => params %>
58
	<%= f.link_to 'PDF', :url => params %>
59
<% end %>
60

  
61
<% end %>
62
<%= call_hook(:view_issues_index_bottom, { :issues => @issues, :project => @project, :query => @query }) %>
63

  
64
<% content_for :sidebar do %>
65
    <%= render :partial => 'issues/sidebar' %>
66
<% end %>
67

  
68
<% content_for :header_tags do %>
69
    <%= auto_discovery_link_tag(:atom, {:query_id => @query, :format => 'atom', :page => nil, :key => User.current.rss_key}, :title => l(:label_issue_plural)) %>
70
    <%= auto_discovery_link_tag(:atom, {:controller => 'journals', :action => 'index', :query_id => @query, :format => 'atom', :page => nil, :key => User.current.rss_key}, :title => l(:label_changes_details)) %>
71
<% end %>
72

  
73
<%= context_menu issues_context_menu_path %>
app/views/issues/new.html.erb
1
<h2><%=l(:label_issue_new)%></h2>
2

  
3
<% labelled_tabular_form_for :issue, @issue, :url => {:controller => 'issues', :action => 'create', :project_id => @project},
4
                             :html => {:multipart => true, :id => 'issue-form', :class => 'tabular new-issue-form'} do |f| %>
5
    <%= error_messages_for 'issue' %>
6
    <div class="box">
7
    <%= render :partial => 'issues/form', :locals => {:f => f} %>
8
    </div>
9
    <%= submit_tag l(:button_create) %>
10
    <%= submit_tag l(:button_create_and_continue), :name => 'continue' %>
11
    <%= link_to_remote l(:label_preview),
12
                       { :url => preview_issue_path(:project_id => @project),
13
                         :method => 'post',
14
                         :update => 'preview',
15
                         :with => "Form.serialize('issue-form')",
16
                         :complete => "Element.scrollTo('preview')"
17
                       }, :accesskey => accesskey(:preview) %>
18

  
19
    <%= javascript_tag "Form.Element.focus('issue_subject');" %>
20
<% end %>
21

  
22
<div id="preview" class="wiki"></div>
23

  
24
<% content_for :header_tags do %>
25
    <%= stylesheet_link_tag 'scm' %>
26
    <%= robot_exclusion_tag %>
27
<% end %>
app/views/issues/new.rhtml
1
<h2><%=l(:label_issue_new)%></h2>
2

  
3
<% labelled_tabular_form_for :issue, @issue, :url => {:controller => 'issues', :action => 'create', :project_id => @project},
4
                             :html => {:multipart => true, :id => 'issue-form', :class => 'tabular new-issue-form'} do |f| %>
5
    <%= error_messages_for 'issue' %>
6
    <div class="box">
7
    <%= render :partial => 'issues/form', :locals => {:f => f} %>
8
    </div>
9
    <%= submit_tag l(:button_create) %>
10
    <%= submit_tag l(:button_create_and_continue), :name => 'continue' %>
11
    <%= link_to_remote l(:label_preview), 
12
                       { :url => preview_issue_path(:project_id => @project),
13
                         :method => 'post',
14
                         :update => 'preview',
15
                         :with => "Form.serialize('issue-form')",
16
                         :complete => "Element.scrollTo('preview')"
17
                       }, :accesskey => accesskey(:preview) %>
18
											 
19
		<%= javascript_tag "Form.Element.focus('issue_subject');" %>
20
<% end %>
21

  
22
<div id="preview" class="wiki"></div>
23

  
24
<% content_for :header_tags do %>
25
    <%= stylesheet_link_tag 'scm' %>
26
    <%= robot_exclusion_tag %>
27
<% end %>
app/views/issues/show.api.rsb
9 9
  api.category(:id => @issue.category_id, :name => @issue.category.name) unless @issue.category.nil?
10 10
  api.fixed_version(:id => @issue.fixed_version_id, :name => @issue.fixed_version.name) unless @issue.fixed_version.nil?
11 11
  api.parent(:id => @issue.parent_id) unless @issue.parent.nil?
12
  
12

  
13 13
  api.subject @issue.subject
14 14
  api.description @issue.description
15 15
  api.start_date @issue.start_date
......
17 17
  api.done_ratio @issue.done_ratio
18 18
  api.estimated_hours @issue.estimated_hours
19 19
  api.spent_hours(@issue.spent_hours) if User.current.allowed_to?(:view_time_entries, @project)
20
  
20

  
21 21
  render_api_custom_values @issue.custom_field_values, api
22
  
22

  
23 23
  api.created_on @issue.created_on
24 24
  api.updated_on @issue.updated_on
25
  
25

  
26 26
  render_api_issue_children(@issue, api) if include_in_api_response?('children')
27
  
27

  
28
  api.array :attachments do
29
    @issue.attachments.each do |attachment|
30
      render_api_attachment(attachment, api)
31
    end
32
  end if include_in_api_response?('attachments')
33

  
28 34
  api.array :relations do
29 35
    @relations.each do |relation|
30
      api.relation(:id => relation.id, :issue_id => relation.other_issue(@issue).id, :relation_type => relation.relation_type_for(@issue), :delay => relation.delay)
36
      api.relation(:id => relation.id, :issue_id => relation.issue_from_id, :issue_to_id => relation.issue_to_id, :relation_type => relation.relation_type, :delay => relation.delay)
31 37
    end
32 38
  end if include_in_api_response?('relations') && @relations.present?
33
  
39

  
34 40
  api.array :changesets do
35 41
    @issue.changesets.each do |changeset|
36 42
      api.changeset :revision => changeset.revision do
......
40 46
      end
41 47
    end
42 48
  end if include_in_api_response?('changesets') && User.current.allowed_to?(:view_changesets, @project)
43
  
49

  
44 50
  api.array :journals do
45 51
    @issue.journals.each do |journal|
46 52
      api.journal :id => journal.id do
app/views/issues/show.html.erb
1
<%= render :partial => 'action_menu' %>
2

  
3
<h2><%= issue_heading(@issue) %></h2>
4

  
5
<div class="<%= @issue.css_classes %> details">
6
        <%= avatar(@issue.author, :size => "50") %>
7

  
8
<div class="subject">
9
<%= render_issue_subject_with_tree(@issue) %>
10
</div>
11
        <p class="author">
12
        <%= authoring @issue.created_on, @issue.author %>.
13
        <% if @issue.created_on != @issue.updated_on %>
14
        <%= l(:label_updated_time, time_tag(@issue.updated_on)) %>.
15
        <% end %>
16
        </p>
17

  
18
<table class="attributes">
19
<tr>
20
    <th class="status"><%=l(:field_status)%>:</th><td class="status"><%= h(@issue.status.name) %></td>
21
    <th class="start-date"><%=l(:field_start_date)%>:</th><td class="start-date"><%= format_date(@issue.start_date) %></td>
22
</tr>
23
<tr>
24
    <th class="priority"><%=l(:field_priority)%>:</th><td class="priority"><%= h(@issue.priority.name) %></td>
25
    <th class="due-date"><%=l(:field_due_date)%>:</th><td class="due-date"><%= format_date(@issue.due_date) %></td>
26
</tr>
27
<tr>
28
    <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>
29
    <th class="progress"><%=l(:field_done_ratio)%>:</th><td class="progress"><%= progress_bar @issue.done_ratio, :width => '80px', :legend => "#{@issue.done_ratio}%" %></td>
30
</tr>
31
<tr>
32
    <th class="category"><%=l(:field_category)%>:</th><td class="category"><%=h(@issue.category ? @issue.category.name : "-") %></td>
33
    <% if User.current.allowed_to?(:view_time_entries, @project) %>
34
    <th class="spent-time"><%=l(:label_spent_time)%>:</th>
35
    <td class="spent-time"><%= @issue.spent_hours > 0 ? (link_to l_hours(@issue.spent_hours), {:controller => 'timelog', :action => 'index', :project_id => @project, :issue_id => @issue}) : "-" %></td>
36
    <% end %>
37
</tr>
38
<tr>
39
    <th class="fixed-version"><%=l(:field_fixed_version)%>:</th><td class="fixed-version"><%= @issue.fixed_version ? link_to_version(@issue.fixed_version) : "-" %></td>
40
    <% if @issue.estimated_hours %>
41
    <th class="estimated-hours"><%=l(:field_estimated_hours)%>:</th><td class="estimated-hours"><%= l_hours(@issue.estimated_hours) %></td>
42
    <% end %>
43
</tr>
44
<%= render_custom_fields_rows(@issue) %>
45
<%= call_hook(:view_issues_show_details_bottom, :issue => @issue) %>
46
</table>
47

  
48
<% if @issue.description? || @issue.attachments.any? -%>
49
<hr />
50
<% if @issue.description? %>
51
  <div class="contextual">
52
  <%= link_to_remote_if_authorized(l(:button_quote), { :url => {:controller => 'journals', :action => 'new', :id => @issue} }, :class => 'icon icon-comment') %>
53
  </div>
54

  
55
  <p><strong><%=l(:field_description)%></strong></p>
56
  <div class="wiki">
57
  <%= textilizable @issue, :description, :attachments => @issue.attachments %>
58
  </div>
59
<% end %>
60
<%= link_to_attachments @issue %>
61
<% end -%>
62

  
63
<%= call_hook(:view_issues_show_description_bottom, :issue => @issue) %>
64

  
65
<% if !@issue.leaf? || User.current.allowed_to?(:manage_subtasks, @project) %>
66
<hr />
67
<div id="issue_tree">
68
<div class="contextual">
69
  <%= 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) %>
70
</div>
71
<p><strong><%=l(:label_subtask_plural)%></strong></p>
72
<%= render_descendants_tree(@issue) unless @issue.leaf? %>
73
</div>
74
<% end %>
75

  
76
<% if @relations.present? || User.current.allowed_to?(:manage_issue_relations, @project) %>
77
<hr />
78
<div id="relations">
79
<%= render :partial => 'relations' %>
80
</div>
81
<% end %>
82

  
83
</div>
84

  
85
<% if @changesets.present? %>
86
<div id="issue-changesets">
87
<h3><%=l(:label_associated_revisions)%></h3>
88
<%= render :partial => 'changesets', :locals => { :changesets => @changesets} %>
89
</div>
90
<% end %>
91

  
92
<% if @journals.present? %>
93
<div id="history">
94
<h3><%=l(:label_history)%></h3>
95
<%= render :partial => 'history', :locals => { :issue => @issue, :journals => @journals } %>
96
</div>
97
<% end %>
98

  
99

  
100
<div style="clear: both;"></div>
101
<%= render :partial => 'action_menu' %>
102

  
103
<div style="clear: both;"></div>
104
<% if authorize_for('issues', 'edit') %>
105
  <div id="update" style="display:none;">
106
  <h3><%= l(:button_update) %></h3>
107
  <%= render :partial => 'edit' %>
108
  </div>
109
<% end %>
110

  
111
<% other_formats_links do |f| %>
112
  <%= f.link_to 'Atom', :url => {:key => User.current.rss_key} %>
113
  <%= f.link_to 'PDF' %>
114
<% end %>
115

  
116
<% html_title "#{@issue.tracker.name} ##{@issue.id}: #{@issue.subject}" %>
117

  
118
<% content_for :sidebar do %>
119
  <%= render :partial => 'issues/sidebar' %>
120

  
121
  <% if User.current.allowed_to?(:add_issue_watchers, @project) ||
122
    (@issue.watchers.present? && User.current.allowed_to?(:view_issue_watchers, @project)) %>
123
    <div id="watchers">
124
      <%= render :partial => 'watchers/watchers', :locals => {:watched => @issue} %>
125
    </div>
126
  <% end %>
127
<% end %>
128

  
129
<% content_for :header_tags do %>
130
    <%= auto_discovery_link_tag(:atom, {:format => 'atom', :key => User.current.rss_key}, :title => "#{@issue.project} - #{@issue.tracker} ##{@issue.id}: #{@issue.subject}") %>
131
    <%= stylesheet_link_tag 'scm' %>
132
    <%= javascript_include_tag 'context_menu' %>
133
    <%= stylesheet_link_tag 'context_menu' %>
134
    <%= stylesheet_link_tag 'context_menu_rtl' if l(:direction) == 'rtl' %>
135
<% end %>
136
<div id="context-menu" style="display: none;"></div>
137
<%= javascript_tag "new ContextMenu('#{issues_context_menu_path}')" %>
app/views/issues/show.rhtml
1
<%= render :partial => 'action_menu' %>
2

  
3
<h2><%= issue_heading(@issue) %></h2>
4

  
5
<div class="<%= @issue.css_classes %> details">
6
        <%= avatar(@issue.author, :size => "50") %>
7
      
8
<div class="subject">      
9
<%= render_issue_subject_with_tree(@issue) %>
10
</div>
11
        <p class="author">
12
        <%= authoring @issue.created_on, @issue.author %>.
13
        <% if @issue.created_on != @issue.updated_on %>
14
        <%= l(:label_updated_time, time_tag(@issue.updated_on)) %>.
15
        <% end %>
16
        </p>
17

  
18
<table class="attributes">
19
<tr>
20
    <th class="status"><%=l(:field_status)%>:</th><td class="status"><%= @issue.status.name %></td>
21
    <th class="start-date"><%=l(:field_start_date)%>:</th><td class="start-date"><%= format_date(@issue.start_date) %></td>
22
</tr>
23
<tr>
24
    <th class="priority"><%=l(:field_priority)%>:</th><td class="priority"><%= @issue.priority.name %></td>
25
    <th class="due-date"><%=l(:field_due_date)%>:</th><td class="due-date"><%= format_date(@issue.due_date) %></td>
26
</tr>
... This diff was truncated because it exceeds the maximum size that can be displayed.

Also available in: Unified diff