diff options
Diffstat (limited to 'app')
-rw-r--r-- | app/controllers/roles_controller.rb | 16 | ||||
-rw-r--r-- | app/views/roles/permissions.html.erb | 5 |
2 files changed, 12 insertions, 9 deletions
diff --git a/app/controllers/roles_controller.rb b/app/controllers/roles_controller.rb index 985953377..0e29e8cfd 100644 --- a/app/controllers/roles_controller.rb +++ b/app/controllers/roles_controller.rb @@ -109,14 +109,16 @@ class RolesController < ApplicationController end @roles = scope.to_a @permissions = Redmine::AccessControl.permissions.select { |p| !p.public? } - if request.post? - @roles.each do |role| - role.permissions = params[:permissions][role.id.to_s] - role.save - end - flash[:notice] = l(:notice_successful_update) - redirect_to roles_path + end + + def update_permissions + @roles = Role.where(:id => params[:permissions].keys) + @roles.each do |role| + role.permissions = params[:permissions][role.id.to_s] + role.save end + flash[:notice] = l(:notice_successful_update) + redirect_to roles_path end private diff --git a/app/views/roles/permissions.html.erb b/app/views/roles/permissions.html.erb index 16e78f877..34a8b8c04 100644 --- a/app/views/roles/permissions.html.erb +++ b/app/views/roles/permissions.html.erb @@ -21,8 +21,9 @@ </div> <%= form_tag(permissions_roles_path, :id => 'permissions_form') do %> -<%= hidden_field_tag 'permissions[0]', '', :id => nil %> -<%= hidden_field_tag 'ids[]', @roles.map(&:id) %> +<% @roles.each do |role| %> + <%= hidden_field_tag "permissions[#{role.id}][]", '', :id => nil %> +<% end %> <div class="autoscroll"> <table class="list permissions"> <thead> |