diff options
author | Jean-Philippe Lang <jp_lang@yahoo.fr> | 2012-07-15 15:46:14 +0000 |
---|---|---|
committer | Jean-Philippe Lang <jp_lang@yahoo.fr> | 2012-07-15 15:46:14 +0000 |
commit | a7bdc5e0afdfa56f2087faf6463926261713694d (patch) | |
tree | 61a8c765fc9b821431d6a7dc1054a150eef233a8 | |
parent | 712e5be29f9afccfa353d315fc6b664bdcdf8057 (diff) | |
download | redmine-a7bdc5e0afdfa56f2087faf6463926261713694d.tar.gz redmine-a7bdc5e0afdfa56f2087faf6463926261713694d.zip |
Adds option for displaying all statuses on workflow permissions.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9995 e93f8b46-1217-0410-a6f0-8f06a7374b81
-rw-r--r-- | app/controllers/workflows_controller.rb | 20 | ||||
-rw-r--r-- | app/views/workflows/permissions.html.erb | 3 | ||||
-rw-r--r-- | test/functional/workflows_controller_test.rb | 8 |
3 files changed, 22 insertions, 9 deletions
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) %></label> <%= submit_tag l(:button_edit), :name => nil %> + + <%= hidden_field_tag 'used_statuses_only', '0' %> + <label><%= check_box_tag 'used_statuses_only', '1', @used_statuses_only %> <%= l(:label_display_used_statuses_only) %></label> </p> <% 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 |