##// END OF EJS Templates
Merged r4059 from trunk....
Eric Davis -
r4015:c48e40af3157
parent child
Show More
@@ -1,39 +1,39
1 1 class ContextMenusController < ApplicationController
2 2 helper :watchers
3 3
4 4 def issues
5 5 @issues = Issue.find_all_by_id(params[:ids], :include => :project)
6 6 if (@issues.size == 1)
7 7 @issue = @issues.first
8 8 @allowed_statuses = @issue.new_statuses_allowed_to(User.current)
9 9 else
10 10 @allowed_statuses = @issues.map do |i|
11 11 i.new_statuses_allowed_to(User.current)
12 12 end.inject do |memo,s|
13 13 memo & s
14 14 end
15 15 end
16 projects = @issues.collect(&:project).compact.uniq
17 @project = projects.first if projects.size == 1
16 @projects = @issues.collect(&:project).compact.uniq
17 @project = @projects.first if @projects.size == 1
18 18
19 19 @can = {:edit => (@project && User.current.allowed_to?(:edit_issues, @project)),
20 20 :log_time => (@project && User.current.allowed_to?(:log_time, @project)),
21 21 :update => (@project && (User.current.allowed_to?(:edit_issues, @project) || (User.current.allowed_to?(:change_status, @project) && @allowed_statuses && !@allowed_statuses.empty?))),
22 22 :move => (@project && User.current.allowed_to?(:move_issues, @project)),
23 23 :copy => (@issue && @project.trackers.include?(@issue.tracker) && User.current.allowed_to?(:add_issues, @project)),
24 24 :delete => (@project && User.current.allowed_to?(:delete_issues, @project))
25 25 }
26 26 if @project
27 27 @assignables = @project.assignable_users
28 28 @assignables << @issue.assigned_to if @issue && @issue.assigned_to && !@assignables.include?(@issue.assigned_to)
29 29 @trackers = @project.trackers
30 30 end
31 31
32 32 @priorities = IssuePriority.all.reverse
33 33 @statuses = IssueStatus.find(:all, :order => 'position')
34 34 @back = back_url
35 35
36 36 render :layout => false
37 37 end
38 38
39 39 end
@@ -1,116 +1,122
1 1 <ul>
2 2 <%= call_hook(:view_issues_context_menu_start, {:issues => @issues, :can => @can, :back => @back }) %>
3 3
4 4 <% if !@issue.nil? -%>
5 5 <li><%= context_menu_link l(:button_edit), {:controller => 'issues', :action => 'edit', :id => @issue},
6 6 :class => 'icon-edit', :disabled => !@can[:edit] %></li>
7 7 <% else %>
8 8 <li><%= context_menu_link l(:button_edit), {:controller => 'issues', :action => 'bulk_edit', :ids => @issues.collect(&:id)},
9 9 :class => 'icon-edit', :disabled => !@can[:edit] %></li>
10 10 <% end %>
11 11
12 12 <% unless @allowed_statuses.empty? %>
13 13 <li class="folder">
14 14 <a href="#" class="submenu" onclick="return false;"><%= l(:field_status) %></a>
15 15 <ul>
16 16 <% @statuses.each do |s| -%>
17 17 <li><%= context_menu_link s.name, {:controller => 'issues', :action => 'bulk_edit', :ids => @issues.collect(&:id), :issue => {:status_id => s}, :back_url => @back}, :method => :post,
18 18 :selected => (@issue && s == @issue.status), :disabled => !(@can[:update] && @allowed_statuses.include?(s)) %></li>
19 19 <% end -%>
20 20 </ul>
21 21 </li>
22 22 <% end %>
23 23
24 24 <% unless @trackers.nil? %>
25 25 <li class="folder">
26 26 <a href="#" class="submenu"><%= l(:field_tracker) %></a>
27 27 <ul>
28 28 <% @trackers.each do |t| -%>
29 29 <li><%= context_menu_link t.name, {:controller => 'issues', :action => 'bulk_edit', :ids => @issues.collect(&:id), :issue => {'tracker_id' => t}, :back_url => @back}, :method => :post,
30 30 :selected => (@issue && t == @issue.tracker), :disabled => !@can[:edit] %></li>
31 31 <% end -%>
32 32 </ul>
33 33 </li>
34 34 <% end %>
35
36 <% if @projects.size == 1 %>
35 37 <li class="folder">
36 38 <a href="#" class="submenu"><%= l(:field_priority) %></a>
37 39 <ul>
38 40 <% @priorities.each do |p| -%>
39 41 <li><%= context_menu_link p.name, {:controller => 'issues', :action => 'bulk_edit', :ids => @issues.collect(&:id), :issue => {'priority_id' => p}, :back_url => @back}, :method => :post,
40 42 :selected => (@issue && p == @issue.priority), :disabled => (!@can[:edit] || @issues.detect {|i| !i.leaf?}) %></li>
41 43 <% end -%>
42 44 </ul>
43 45 </li>
46 <% end %>
47
44 48 <% unless @project.nil? || @project.shared_versions.open.empty? -%>
45 49 <li class="folder">
46 50 <a href="#" class="submenu"><%= l(:field_fixed_version) %></a>
47 51 <ul>
48 52 <% @project.shared_versions.open.sort.each do |v| -%>
49 53 <li><%= context_menu_link format_version_name(v), {:controller => 'issues', :action => 'bulk_edit', :ids => @issues.collect(&:id), :issue => {'fixed_version_id' => v}, :back_url => @back}, :method => :post,
50 54 :selected => (@issue && v == @issue.fixed_version), :disabled => !@can[:update] %></li>
51 55 <% end -%>
52 56 <li><%= context_menu_link l(:label_none), {:controller => 'issues', :action => 'bulk_edit', :ids => @issues.collect(&:id), :issue => {'fixed_version_id' => 'none'}, :back_url => @back}, :method => :post,
53 57 :selected => (@issue && @issue.fixed_version.nil?), :disabled => !@can[:update] %></li>
54 58 </ul>
55 59 </li>
56 60 <% end %>
57 61 <% unless @assignables.nil? || @assignables.empty? -%>
58 62 <li class="folder">
59 63 <a href="#" class="submenu"><%= l(:field_assigned_to) %></a>
60 64 <ul>
61 65 <% @assignables.each do |u| -%>
62 66 <li><%= context_menu_link u.name, {:controller => 'issues', :action => 'bulk_edit', :ids => @issues.collect(&:id), :issue => {'assigned_to_id' => u}, :back_url => @back}, :method => :post,
63 67 :selected => (@issue && u == @issue.assigned_to), :disabled => !@can[:update] %></li>
64 68 <% end -%>
65 69 <li><%= context_menu_link l(:label_nobody), {:controller => 'issues', :action => 'bulk_edit', :ids => @issues.collect(&:id), :issue => {'assigned_to_id' => 'none'}, :back_url => @back}, :method => :post,
66 70 :selected => (@issue && @issue.assigned_to.nil?), :disabled => !@can[:update] %></li>
67 71 </ul>
68 72 </li>
69 73 <% end %>
70 74 <% unless @project.nil? || @project.issue_categories.empty? -%>
71 75 <li class="folder">
72 76 <a href="#" class="submenu"><%= l(:field_category) %></a>
73 77 <ul>
74 78 <% @project.issue_categories.each do |u| -%>
75 79 <li><%= context_menu_link u.name, {:controller => 'issues', :action => 'bulk_edit', :ids => @issues.collect(&:id), :issue => {'category_id' => u}, :back_url => @back}, :method => :post,
76 80 :selected => (@issue && u == @issue.category), :disabled => !@can[:update] %></li>
77 81 <% end -%>
78 82 <li><%= context_menu_link l(:label_none), {:controller => 'issues', :action => 'bulk_edit', :ids => @issues.collect(&:id), :issue => {'category_id' => 'none'}, :back_url => @back}, :method => :post,
79 83 :selected => (@issue && @issue.category.nil?), :disabled => !@can[:update] %></li>
80 84 </ul>
81 85 </li>
82 86 <% end -%>
83 <% if Issue.use_field_for_done_ratio? %>
87
88 <% if Issue.use_field_for_done_ratio? && @projects.size == 1 %>
84 89 <li class="folder">
85 90 <a href="#" class="submenu"><%= l(:field_done_ratio) %></a>
86 91 <ul>
87 92 <% (0..10).map{|x|x*10}.each do |p| -%>
88 93 <li><%= context_menu_link "#{p}%", {:controller => 'issues', :action => 'bulk_edit', :ids => @issues.collect(&:id), :issue => {'done_ratio' => p}, :back_url => @back}, :method => :post,
89 94 :selected => (@issue && p == @issue.done_ratio), :disabled => (!@can[:edit] || @issues.detect {|i| !i.leaf?}) %></li>
90 95 <% end -%>
91 96 </ul>
92 97 </li>
93 98 <% end %>
99
94 100 <% if !@issue.nil? %>
95 101 <% if @can[:log_time] -%>
96 102 <li><%= context_menu_link l(:button_log_time), {:controller => 'timelog', :action => 'edit', :issue_id => @issue},
97 103 :class => 'icon-time-add' %></li>
98 104 <% end %>
99 105 <% if User.current.logged? %>
100 106 <li><%= watcher_link(@issue, User.current) %></li>
101 107 <% end %>
102 108 <% end %>
103 109
104 110 <% if @issue.present? %>
105 111 <li><%= context_menu_link l(:button_duplicate), {:controller => 'issues', :action => 'new', :project_id => @project, :copy_from => @issue},
106 112 :class => 'icon-duplicate', :disabled => !@can[:copy] %></li>
107 113 <% end %>
108 114 <li><%= context_menu_link l(:button_copy), new_issue_move_path(:ids => @issues.collect(&:id), :copy_options => {:copy => 't'}),
109 115 :class => 'icon-copy', :disabled => !@can[:move] %></li>
110 116 <li><%= context_menu_link l(:button_move), new_issue_move_path(:ids => @issues.collect(&:id)),
111 117 :class => 'icon-move', :disabled => !@can[:move] %></li>
112 118 <li><%= context_menu_link l(:button_delete), {:controller => 'issues', :action => 'destroy', :ids => @issues.collect(&:id)},
113 119 :method => :post, :confirm => l(:text_issues_destroy_confirmation), :class => 'icon-del', :disabled => !@can[:delete] %></li>
114 120
115 121 <%= call_hook(:view_issues_context_menu_end, {:issues => @issues, :can => @can, :back => @back }) %>
116 122 </ul>
General Comments 0
You need to be logged in to leave comments. Login now