diff options
author | Jean-Philippe Lang <jp_lang@yahoo.fr> | 2019-10-25 15:53:27 +0000 |
---|---|---|
committer | Jean-Philippe Lang <jp_lang@yahoo.fr> | 2019-10-25 15:53:27 +0000 |
commit | 0dc7269c8878502744bf825b052ba6e1f37f6e7f (patch) | |
tree | bbf18dc5a10e835ddc6b79e7642e1c06d9adf9d8 | |
parent | 1eca6f9879f2517c59362de5a93add41319ba3f0 (diff) | |
download | redmine-0dc7269c8878502744bf825b052ba6e1f37f6e7f.tar.gz redmine-0dc7269c8878502744bf825b052ba6e1f37f6e7f.zip |
Add roles filter on permissions report (#32343).
git-svn-id: http://svn.redmine.org/redmine/trunk@18861 e93f8b46-1217-0410-a6f0-8f06a7374b81
-rw-r--r-- | app/controllers/roles_controller.rb | 6 | ||||
-rw-r--r-- | app/views/roles/permissions.html.erb | 21 | ||||
-rw-r--r-- | test/functional/roles_controller_test.rb | 11 |
3 files changed, 37 insertions, 1 deletions
diff --git a/app/controllers/roles_controller.rb b/app/controllers/roles_controller.rb index 90b912258..985953377 100644 --- a/app/controllers/roles_controller.rb +++ b/app/controllers/roles_controller.rb @@ -103,7 +103,11 @@ class RolesController < ApplicationController end def permissions - @roles = Role.sorted.to_a + scope = Role.sorted + if params[:ids].present? + scope = scope.where(:id => params[:ids]) + end + @roles = scope.to_a @permissions = Redmine::AccessControl.permissions.select { |p| !p.public? } if request.post? @roles.each do |role| diff --git a/app/views/roles/permissions.html.erb b/app/views/roles/permissions.html.erb index a4b14493d..16e78f877 100644 --- a/app/views/roles/permissions.html.erb +++ b/app/views/roles/permissions.html.erb @@ -1,7 +1,28 @@ <%= title [l(:label_role_plural), roles_path], l(:label_permissions_report) %> +<div class="hide-when-print"> + <fieldset id="filters" class="collapsible collapsed"> + <legend onclick="toggleFieldset(this);" class="icon icon-collapsed"><%= l(:label_filter_plural) %></legend> + <div style="display: none;"> + <%= form_tag({}, :method => :get) do %> + <% Role.sorted.to_a.each do |role| %> + <label> + <%= check_box_tag "ids[]", role.id, @roles.include?(role) %> + <%= role.name %> + </label> + <% end %> + <p> + <%= submit_tag l(:button_apply), :name => nil %> + <%= link_to l(:button_clear), permissions_roles_path, :class => 'icon icon-reload' %> + </p> + <% end %> + </div> + </fieldset> +</div> + <%= form_tag(permissions_roles_path, :id => 'permissions_form') do %> <%= hidden_field_tag 'permissions[0]', '', :id => nil %> +<%= hidden_field_tag 'ids[]', @roles.map(&:id) %> <div class="autoscroll"> <table class="list permissions"> <thead> diff --git a/test/functional/roles_controller_test.rb b/test/functional/roles_controller_test.rb index dccb37fc7..34be7c7b2 100644 --- a/test/functional/roles_controller_test.rb +++ b/test/functional/roles_controller_test.rb @@ -236,6 +236,17 @@ class RolesControllerTest < Redmine::ControllerTest assert_select 'input[name=?][type=checkbox][value=delete_issues]:not([checked])', 'permissions[3][]' end + def test_get_permissions_with_filter + get :permissions, :params => { + :ids => ['2', '3'] + } + assert_response :success + + assert_select 'table.permissions thead th', 3 + assert_select 'input[name=?][type=checkbox][value=add_issues][checked=checked]', 'permissions[3][]' + assert_select 'input[name=?][type=checkbox][value=delete_issues]:not([checked])', 'permissions[3][]' + end + def test_post_permissions post :permissions, :params => { :permissions => { |