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 %> +
  • + <%= l(:label_add_user_to_group) %> + <%= sprite_icon('angle-right', rtl: true) %> + +
  • +
  • + <%= l(:label_remove_user_from_group) %> + <%= sprite_icon('angle-right', rtl: true) %> + +
  • Index: app/views/groups/remove_user.js.erb =================================================================== --- app/views/groups/remove_user.js.erb (revision 24239) +++ app/views/groups/remove_user.js.erb (nonexistent) @@ -1 +0,0 @@ -$('#tab-content-users').html('<%= escape_javascript(render :partial => 'groups/users') %>'); Property changes on: app/views/groups/remove_user.js.erb ___________________________________________________________________ Deleted: svn:eol-style ## -1 +0,0 ## -native \ No newline at end of property Index: app/views/groups/remove_users.js.erb =================================================================== Index: config/routes.rb =================================================================== --- config/routes.rb (revision 24239) +++ config/routes.rb (working copy) @@ -344,7 +344,8 @@ get 'groups/:id/users/new', :to => 'groups#new_users', :id => /\d+/, :as => 'new_group_users' post 'groups/:id/users', :to => 'groups#add_users', :id => /\d+/, :as => 'group_users' - delete 'groups/:id/users/:user_id', :to => 'groups#remove_user', :id => /\d+/, :as => 'group_user' + delete 'groups/:id/users/:user_id', :to => 'groups#remove_users', :id => /\d+/, :as => 'group_user' + post 'groups/:id/remove_users', :to => 'groups#remove_users', :id => /\d+/, :as => 'group_remove_users' resources :trackers, :except => :show do collection do