Index: app/controllers/groups_controller.rb =================================================================== --- app/controllers/groups_controller.rb (revision 24239) +++ app/controllers/groups_controller.rb (working copy) @@ -23,9 +23,9 @@ before_action :require_admin, :except => [:show] before_action :find_group, :except => [:index, :new, :create] - accept_api_auth :index, :show, :create, :update, :destroy, :add_users, :remove_user + accept_api_auth :index, :show, :create, :update, :destroy, :add_users, :remove_users - require_sudo_mode :add_users, :remove_user, :create, :update, :destroy, :edit_membership, :destroy_membership + require_sudo_mode :add_users, :remove_users, :create, :update, :destroy, :edit_membership, :destroy_membership helper :custom_fields helper :principal_memberships @@ -117,7 +117,14 @@ @users = User.not_in_group(@group).where(:id => (params[:user_id] || params[:user_ids])).to_a @group.users << @users respond_to do |format| - format.html {redirect_to edit_group_path(@group, :tab => 'users')} + format.html do + if request.referer.presence == edit_group_path(@group, :tab => 'users') + redirect_to edit_group_path(@group, :tab => 'users') + else + redirect_back fallback_location: edit_group_path(@group, tab: 'users'), + notice: l(:notice_successful_update) + end + end format.js format.api do if @users.any? @@ -129,12 +136,26 @@ end end - def remove_user - @group.users.delete(User.find(params[:user_id])) if request.delete? + def remove_users + @users = User.in_group(@group).where(:id => (params[:user_id] || params[:user_ids])).to_a + @group.users.delete(@users) respond_to do |format| - format.html {redirect_to edit_group_path(@group, :tab => 'users')} + format.html do + if request.referer.presence == edit_group_path(@group, :tab => 'users') + redirect_to edit_group_path(@group, :tab => 'users') + else + redirect_back fallback_location: edit_group_path(@group, tab: 'users'), + notice: l(:notice_successful_delete) + end + end format.js - format.api {render_api_ok} + format.api do + if @users.any? + render_api_ok + else + render_api_errors "#{l(:label_user)} #{l('activerecord.errors.messages.invalid')}" + end + end end end Index: app/views/context_menus/users.html.erb =================================================================== --- app/views/context_menus/users.html.erb (revision 24239) +++ app/views/context_menus/users.html.erb (working copy) @@ -36,4 +36,33 @@ method: :delete, class: 'icon icon-del' %> <% end %> +