diff --git a/app/controllers/workflows_controller.rb b/app/controllers/workflows_controller.rb index 727bde68f..7f397bc4e 100644 --- a/app/controllers/workflows_controller.rb +++ b/app/controllers/workflows_controller.rb @@ -62,17 +62,19 @@ class WorkflowsController < ApplicationController @role = Role.find_by_id(params[:role_id]) if params[:role_id] @tracker = Tracker.find_by_id(params[:tracker_id]) if params[:tracker_id] - if @role && @tracker - if request.post? - WorkflowPermission.replace_permissions(@tracker, @role, params[:permissions] || {}) - redirect_to :action => 'permissions', :role_id => @role, :tracker_id => @tracker - return - end + if request.post? && @role && @tracker + WorkflowPermission.replace_permissions(@tracker, @role, params[:permissions] || {}) + redirect_to :action => 'permissions', :role_id => @role, :tracker_id => @tracker + return + end + @used_statuses_only = (params[:used_statuses_only] == '0' ? false : true) + if @tracker && @used_statuses_only && @tracker.issue_statuses.any? @statuses = @tracker.issue_statuses - if @statuses.empty? - @statuses = IssueStatus.sorted.all - end + end + @statuses ||= IssueStatus.sorted.all + + if @role && @tracker @fields = (Tracker::CORE_FIELDS_ALL - @tracker.disabled_core_fields).map {|field| [field, l("field_"+field.sub(/_id$/, ''))]} @custom_fields = @tracker.custom_fields diff --git a/app/views/workflows/permissions.html.erb b/app/views/workflows/permissions.html.erb index 3f9ea2181..2e7c4e092 100644 --- a/app/views/workflows/permissions.html.erb +++ b/app/views/workflows/permissions.html.erb @@ -20,6 +20,9 @@ <%= select_tag 'tracker_id', options_from_collection_for_select(@trackers, "id", "name", @tracker && @tracker.id) %> <%= submit_tag l(:button_edit), :name => nil %> + + <%= hidden_field_tag 'used_statuses_only', '0' %> +

<% end %> diff --git a/test/functional/workflows_controller_test.rb b/test/functional/workflows_controller_test.rb index 84250d346..0a35df5df 100644 --- a/test/functional/workflows_controller_test.rb +++ b/test/functional/workflows_controller_test.rb @@ -191,6 +191,14 @@ class WorkflowsControllerTest < ActionController::TestCase end end + def test_get_permissions_with_role_and_tracker_and_all_statuses + WorkflowTransition.delete_all + + get :permissions, :role_id => 1, :tracker_id => 2, :used_statuses_only => '0' + assert_response :success + assert_equal IssueStatus.sorted.all, assigns(:statuses) + end + def test_post_permissions WorkflowPermission.delete_all