@@ -202,7 +202,7 class IssuesController < ApplicationController | |||||
202 | flash[:notice] = l(:notice_successful_update) |
|
202 | flash[:notice] = l(:notice_successful_update) | |
203 | end |
|
203 | end | |
204 | call_hook(:controller_issues_edit_after_save, { :params => params, :issue => @issue, :time_entry => @time_entry, :journal => journal}) |
|
204 | call_hook(:controller_issues_edit_after_save, { :params => params, :issue => @issue, :time_entry => @time_entry, :journal => journal}) | |
205 |
redirect_t |
|
205 | redirect_back_or_default({:action => 'show', :id => @issue}) | |
206 | end |
|
206 | end | |
207 | end |
|
207 | end | |
208 | rescue ActiveRecord::StaleObjectError |
|
208 | rescue ActiveRecord::StaleObjectError | |
@@ -269,7 +269,7 class IssuesController < ApplicationController | |||||
269 | :total => @issues.size, |
|
269 | :total => @issues.size, | |
270 | :ids => '#' + unsaved_issue_ids.join(', #')) |
|
270 | :ids => '#' + unsaved_issue_ids.join(', #')) | |
271 | end |
|
271 | end | |
272 |
redirect_t |
|
272 | redirect_back_or_default({:controller => 'issues', :action => 'index', :project_id => @project}) | |
273 | return |
|
273 | return | |
274 | end |
|
274 | end | |
275 | @available_statuses = Workflow.available_statuses(@project) |
|
275 | @available_statuses = Workflow.available_statuses(@project) |
@@ -8,7 +8,7 | |||||
8 | <a href="#" class="submenu" onclick="return false;"><%= l(:field_status) %></a> |
|
8 | <a href="#" class="submenu" onclick="return false;"><%= l(:field_status) %></a> | |
9 | <ul> |
|
9 | <ul> | |
10 | <% @statuses.each do |s| -%> |
|
10 | <% @statuses.each do |s| -%> | |
11 |
<li><%= context_menu_link s.name, {:controller => 'issues', :action => 'edit', :id => @issue, :issue => {:status_id => s}, :back_ |
|
11 | <li><%= context_menu_link s.name, {:controller => 'issues', :action => 'edit', :id => @issue, :issue => {:status_id => s}, :back_url => @back}, :method => :post, | |
12 | :selected => (s == @issue.status), :disabled => !(@can[:update] && @allowed_statuses.include?(s)) %></li> |
|
12 | :selected => (s == @issue.status), :disabled => !(@can[:update] && @allowed_statuses.include?(s)) %></li> | |
13 | <% end -%> |
|
13 | <% end -%> | |
14 | </ul> |
|
14 | </ul> | |
@@ -23,7 +23,7 | |||||
23 | <a href="#" class="submenu"><%= l(:field_tracker) %></a> |
|
23 | <a href="#" class="submenu"><%= l(:field_tracker) %></a> | |
24 | <ul> |
|
24 | <ul> | |
25 | <% @trackers.each do |t| -%> |
|
25 | <% @trackers.each do |t| -%> | |
26 |
<li><%= context_menu_link t.name, {:controller => 'issues', :action => 'bulk_edit', :ids => @issues.collect(&:id), 'tracker_id' => t, :back_ |
|
26 | <li><%= context_menu_link t.name, {:controller => 'issues', :action => 'bulk_edit', :ids => @issues.collect(&:id), 'tracker_id' => t, :back_url => @back}, :method => :post, | |
27 | :selected => (@issue && t == @issue.tracker), :disabled => !@can[:edit] %></li> |
|
27 | :selected => (@issue && t == @issue.tracker), :disabled => !@can[:edit] %></li> | |
28 | <% end -%> |
|
28 | <% end -%> | |
29 | </ul> |
|
29 | </ul> | |
@@ -33,7 +33,7 | |||||
33 | <a href="#" class="submenu"><%= l(:field_priority) %></a> |
|
33 | <a href="#" class="submenu"><%= l(:field_priority) %></a> | |
34 | <ul> |
|
34 | <ul> | |
35 | <% @priorities.each do |p| -%> |
|
35 | <% @priorities.each do |p| -%> | |
36 |
<li><%= context_menu_link p.name, {:controller => 'issues', :action => 'bulk_edit', :ids => @issues.collect(&:id), 'priority_id' => p, :back_ |
|
36 | <li><%= context_menu_link p.name, {:controller => 'issues', :action => 'bulk_edit', :ids => @issues.collect(&:id), 'priority_id' => p, :back_url => @back}, :method => :post, | |
37 | :selected => (@issue && p == @issue.priority), :disabled => !@can[:edit] %></li> |
|
37 | :selected => (@issue && p == @issue.priority), :disabled => !@can[:edit] %></li> | |
38 | <% end -%> |
|
38 | <% end -%> | |
39 | </ul> |
|
39 | </ul> | |
@@ -43,10 +43,10 | |||||
43 | <a href="#" class="submenu"><%= l(:field_fixed_version) %></a> |
|
43 | <a href="#" class="submenu"><%= l(:field_fixed_version) %></a> | |
44 | <ul> |
|
44 | <ul> | |
45 | <% @project.shared_versions.open.sort.each do |v| -%> |
|
45 | <% @project.shared_versions.open.sort.each do |v| -%> | |
46 |
<li><%= context_menu_link format_version_name(v), {:controller => 'issues', :action => 'bulk_edit', :ids => @issues.collect(&:id), 'fixed_version_id' => v, :back_ |
|
46 | <li><%= context_menu_link format_version_name(v), {:controller => 'issues', :action => 'bulk_edit', :ids => @issues.collect(&:id), 'fixed_version_id' => v, :back_url => @back}, :method => :post, | |
47 | :selected => (@issue && v == @issue.fixed_version), :disabled => !@can[:update] %></li> |
|
47 | :selected => (@issue && v == @issue.fixed_version), :disabled => !@can[:update] %></li> | |
48 | <% end -%> |
|
48 | <% end -%> | |
49 |
<li><%= context_menu_link l(:label_none), {:controller => 'issues', :action => 'bulk_edit', :ids => @issues.collect(&:id), 'fixed_version_id' => 'none', :back_ |
|
49 | <li><%= context_menu_link l(:label_none), {:controller => 'issues', :action => 'bulk_edit', :ids => @issues.collect(&:id), 'fixed_version_id' => 'none', :back_url => @back}, :method => :post, | |
50 | :selected => (@issue && @issue.fixed_version.nil?), :disabled => !@can[:update] %></li> |
|
50 | :selected => (@issue && @issue.fixed_version.nil?), :disabled => !@can[:update] %></li> | |
51 | </ul> |
|
51 | </ul> | |
52 | </li> |
|
52 | </li> | |
@@ -56,10 +56,10 | |||||
56 | <a href="#" class="submenu"><%= l(:field_assigned_to) %></a> |
|
56 | <a href="#" class="submenu"><%= l(:field_assigned_to) %></a> | |
57 | <ul> |
|
57 | <ul> | |
58 | <% @assignables.each do |u| -%> |
|
58 | <% @assignables.each do |u| -%> | |
59 |
<li><%= context_menu_link u.name, {:controller => 'issues', :action => 'bulk_edit', :ids => @issues.collect(&:id), 'assigned_to_id' => u, :back_ |
|
59 | <li><%= context_menu_link u.name, {:controller => 'issues', :action => 'bulk_edit', :ids => @issues.collect(&:id), 'assigned_to_id' => u, :back_url => @back}, :method => :post, | |
60 | :selected => (@issue && u == @issue.assigned_to), :disabled => !@can[:update] %></li> |
|
60 | :selected => (@issue && u == @issue.assigned_to), :disabled => !@can[:update] %></li> | |
61 | <% end -%> |
|
61 | <% end -%> | |
62 |
<li><%= context_menu_link l(:label_nobody), {:controller => 'issues', :action => 'bulk_edit', :ids => @issues.collect(&:id), 'assigned_to_id' => 'none', :back_ |
|
62 | <li><%= context_menu_link l(:label_nobody), {:controller => 'issues', :action => 'bulk_edit', :ids => @issues.collect(&:id), 'assigned_to_id' => 'none', :back_url => @back}, :method => :post, | |
63 | :selected => (@issue && @issue.assigned_to.nil?), :disabled => !@can[:update] %></li> |
|
63 | :selected => (@issue && @issue.assigned_to.nil?), :disabled => !@can[:update] %></li> | |
64 | </ul> |
|
64 | </ul> | |
65 | </li> |
|
65 | </li> | |
@@ -69,10 +69,10 | |||||
69 | <a href="#" class="submenu"><%= l(:field_category) %></a> |
|
69 | <a href="#" class="submenu"><%= l(:field_category) %></a> | |
70 | <ul> |
|
70 | <ul> | |
71 | <% @project.issue_categories.each do |u| -%> |
|
71 | <% @project.issue_categories.each do |u| -%> | |
72 |
<li><%= context_menu_link u.name, {:controller => 'issues', :action => 'bulk_edit', :ids => @issues.collect(&:id), 'category_id' => u, :back_ |
|
72 | <li><%= context_menu_link u.name, {:controller => 'issues', :action => 'bulk_edit', :ids => @issues.collect(&:id), 'category_id' => u, :back_url => @back}, :method => :post, | |
73 | :selected => (@issue && u == @issue.category), :disabled => !@can[:update] %></li> |
|
73 | :selected => (@issue && u == @issue.category), :disabled => !@can[:update] %></li> | |
74 | <% end -%> |
|
74 | <% end -%> | |
75 |
<li><%= context_menu_link l(:label_none), {:controller => 'issues', :action => 'bulk_edit', :ids => @issues.collect(&:id), 'category_id' => 'none', :back_ |
|
75 | <li><%= context_menu_link l(:label_none), {:controller => 'issues', :action => 'bulk_edit', :ids => @issues.collect(&:id), 'category_id' => 'none', :back_url => @back}, :method => :post, | |
76 | :selected => (@issue && @issue.category.nil?), :disabled => !@can[:update] %></li> |
|
76 | :selected => (@issue && @issue.category.nil?), :disabled => !@can[:update] %></li> | |
77 | </ul> |
|
77 | </ul> | |
78 | </li> |
|
78 | </li> | |
@@ -82,7 +82,7 | |||||
82 | <a href="#" class="submenu"><%= l(:field_done_ratio) %></a> |
|
82 | <a href="#" class="submenu"><%= l(:field_done_ratio) %></a> | |
83 | <ul> |
|
83 | <ul> | |
84 | <% (0..10).map{|x|x*10}.each do |p| -%> |
|
84 | <% (0..10).map{|x|x*10}.each do |p| -%> | |
85 |
<li><%= context_menu_link "#{p}%", {:controller => 'issues', :action => 'bulk_edit', :ids => @issues.collect(&:id), 'done_ratio' => p, :back_ |
|
85 | <li><%= context_menu_link "#{p}%", {:controller => 'issues', :action => 'bulk_edit', :ids => @issues.collect(&:id), 'done_ratio' => p, :back_url => @back}, :method => :post, | |
86 | :selected => (@issue && p == @issue.done_ratio), :disabled => !@can[:edit] %></li> |
|
86 | :selected => (@issue && p == @issue.done_ratio), :disabled => !@can[:edit] %></li> | |
87 | <% end -%> |
|
87 | <% end -%> | |
88 | </ul> |
|
88 | </ul> |
@@ -940,6 +940,36 class IssuesControllerTest < ActionController::TestCase | |||||
940 | assert_equal 4, issue.fixed_version_id |
|
940 | assert_equal 4, issue.fixed_version_id | |
941 | assert_not_equal issue.project_id, issue.fixed_version.project_id |
|
941 | assert_not_equal issue.project_id, issue.fixed_version.project_id | |
942 | end |
|
942 | end | |
|
943 | ||||
|
944 | def test_post_edit_should_redirect_back_using_the_back_url_parameter | |||
|
945 | issue = Issue.find(2) | |||
|
946 | @request.session[:user_id] = 2 | |||
|
947 | ||||
|
948 | post :edit, | |||
|
949 | :id => issue.id, | |||
|
950 | :issue => { | |||
|
951 | :fixed_version_id => 4 | |||
|
952 | }, | |||
|
953 | :back_url => '/issues' | |||
|
954 | ||||
|
955 | assert_response :redirect | |||
|
956 | assert_redirected_to '/issues' | |||
|
957 | end | |||
|
958 | ||||
|
959 | def test_post_edit_should_not_redirect_back_using_the_back_url_parameter_off_the_host | |||
|
960 | issue = Issue.find(2) | |||
|
961 | @request.session[:user_id] = 2 | |||
|
962 | ||||
|
963 | post :edit, | |||
|
964 | :id => issue.id, | |||
|
965 | :issue => { | |||
|
966 | :fixed_version_id => 4 | |||
|
967 | }, | |||
|
968 | :back_url => 'http://google.com' | |||
|
969 | ||||
|
970 | assert_response :redirect | |||
|
971 | assert_redirected_to :controller => 'issues', :action => 'show', :id => issue.id | |||
|
972 | end | |||
943 |
|
973 | |||
944 | def test_get_bulk_edit |
|
974 | def test_get_bulk_edit | |
945 | @request.session[:user_id] = 2 |
|
975 | @request.session[:user_id] = 2 | |
@@ -1046,6 +1076,22 class IssuesControllerTest < ActionController::TestCase | |||||
1046 | end |
|
1076 | end | |
1047 | end |
|
1077 | end | |
1048 |
|
1078 | |||
|
1079 | def test_post_bulk_edit_should_redirect_back_using_the_back_url_parameter | |||
|
1080 | @request.session[:user_id] = 2 | |||
|
1081 | post :bulk_edit, :ids => [1,2], :back_url => '/issues' | |||
|
1082 | ||||
|
1083 | assert_response :redirect | |||
|
1084 | assert_redirected_to '/issues' | |||
|
1085 | end | |||
|
1086 | ||||
|
1087 | def test_post_bulk_edit_should_not_redirect_back_using_the_back_url_parameter_off_the_host | |||
|
1088 | @request.session[:user_id] = 2 | |||
|
1089 | post :bulk_edit, :ids => [1,2], :back_url => 'http://google.com' | |||
|
1090 | ||||
|
1091 | assert_response :redirect | |||
|
1092 | assert_redirected_to :controller => 'issues', :action => 'index', :project_id => Project.find(1).identifier | |||
|
1093 | end | |||
|
1094 | ||||
1049 | def test_move_routing |
|
1095 | def test_move_routing | |
1050 | assert_routing( |
|
1096 | assert_routing( | |
1051 | {:method => :get, :path => '/issues/1/move'}, |
|
1097 | {:method => :get, :path => '/issues/1/move'}, |
General Comments 0
You need to be logged in to leave comments.
Login now