From: Jean-Philippe Lang Date: Sat, 3 Dec 2016 08:42:06 +0000 (+0000) Subject: Merged r15959 (#24311). X-Git-Tag: 3.3.2~16 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=e04ff6fedab794d0c5a2f80b007cd38bb40419b8;p=redmine.git Merged r15959 (#24311). git-svn-id: http://svn.redmine.org/redmine/branches/3.3-stable@16047 e93f8b46-1217-0410-a6f0-8f06a7374b81 --- diff --git a/app/views/issues/_form.html.erb b/app/views/issues/_form.html.erb index 1e82b6f84..a9e6799bf 100644 --- a/app/views/issues/_form.html.erb +++ b/app/views/issues/_form.html.erb @@ -8,7 +8,7 @@

<% end %> -<% if @issue.safe_attribute?('project_id') && (!@issue.new_record? || @project.nil? || @issue.copy?) %> +<% if (@issue.safe_attribute?('project_id') || @issue.project_id_changed?) && (!@issue.new_record? || @project.nil? || @issue.copy?) %>

<%= f.select :project_id, project_tree_options_for_select(@issue.allowed_target_projects, :selected => @issue.project), {:required => true}, :onchange => "updateIssueFrom('#{escape_javascript update_issue_form_path(@project, @issue)}', this)" %>

<% end %> diff --git a/test/functional/issues_controller_test.rb b/test/functional/issues_controller_test.rb index f3812a936..9f34d2a53 100644 --- a/test/functional/issues_controller_test.rb +++ b/test/functional/issues_controller_test.rb @@ -3267,6 +3267,7 @@ class IssuesControllerTest < ActionController::TestCase assert_not_nil assigns(:issue) assert_equal Issue.find(1), assigns(:issue) + assert_select 'select[name=?]', 'issue[project_id]' # Be sure we don't display inactive IssuePriorities assert ! IssuePriority.find(15).active? assert_select 'select[name=?]', 'issue[priority_id]' do @@ -3274,6 +3275,25 @@ class IssuesControllerTest < ActionController::TestCase end end + def test_edit_should_hide_project_if_user_is_not_allowed_to_change_project + WorkflowPermission.create!(:role_id => 1, :tracker_id => 1, :old_status_id => 1, :field_name => 'project_id', :rule => 'readonly') + + @request.session[:user_id] = 2 + get :edit, :id => 1 + assert_response :success + assert_select 'select[name=?]', 'issue[project_id]', 0 + end + + def test_edit_should_not_hide_project_when_user_changes_the_project_even_if_project_is_readonly_on_target_project + WorkflowPermission.create!(:role_id => 1, :tracker_id => 1, :old_status_id => 1, :field_name => 'project_id', :rule => 'readonly') + issue = Issue.generate!(:project_id => 2) + + @request.session[:user_id] = 2 + get :edit, :id => issue.id, :issue => {:project_id => 1} + assert_response :success + assert_select 'select[name=?]', 'issue[project_id]' + end + def test_get_edit_should_display_the_time_entry_form_with_log_time_permission @request.session[:user_id] = 2 Role.find_by_name('Manager').update_attribute :permissions, [:view_issues, :edit_issues, :log_time]