Project

General

Profile

Patch #43640 » 01-group-controller-remove_users.patch

Florian Walchshofer, 2026-01-02 00:07

View differences:

app/controllers/groups_controller.rb (working copy)
23 23

  
24 24
  before_action :require_admin, :except => [:show]
25 25
  before_action :find_group, :except => [:index, :new, :create]
26
  accept_api_auth :index, :show, :create, :update, :destroy, :add_users, :remove_user
26
  accept_api_auth :index, :show, :create, :update, :destroy, :add_users, :remove_users
27 27

  
28
  require_sudo_mode :add_users, :remove_user, :create, :update, :destroy, :edit_membership, :destroy_membership
28
  require_sudo_mode :add_users, :remove_users, :create, :update, :destroy, :edit_membership, :destroy_membership
29 29

  
30 30
  helper :custom_fields
31 31
  helper :principal_memberships
......
117 117
    @users = User.not_in_group(@group).where(:id => (params[:user_id] || params[:user_ids])).to_a
118 118
    @group.users << @users
119 119
    respond_to do |format|
120
      format.html {redirect_to edit_group_path(@group, :tab => 'users')}
120
      format.html do
121
        if request.referer.presence == edit_group_path(@group, :tab => 'users')
122
          redirect_to edit_group_path(@group, :tab => 'users')
123
        else
124
          redirect_back fallback_location: edit_group_path(@group, tab: 'users'),
125
                        notice: l(:notice_successful_update)
126
        end
127
      end
121 128
      format.js
122 129
      format.api do
123 130
        if @users.any?
......
129 136
    end
130 137
  end
131 138

  
132
  def remove_user
133
    @group.users.delete(User.find(params[:user_id])) if request.delete?
139
  def remove_users
140
    @users = User.in_group(@group).where(:id => (params[:user_id] || params[:user_ids])).to_a
141
    @group.users.delete(@users)
134 142
    respond_to do |format|
135
      format.html {redirect_to edit_group_path(@group, :tab => 'users')}
143
      format.html do
144
        if request.referer.presence == edit_group_path(@group, :tab => 'users')
145
          redirect_to edit_group_path(@group, :tab => 'users')
146
        else
147
          redirect_back fallback_location: edit_group_path(@group, tab: 'users'),
148
                        notice: l(:notice_successful_delete)
149
        end
150
      end
136 151
      format.js
137
      format.api {render_api_ok}
152
      format.api do
153
        if @users.any?
154
          render_api_ok
155
        else
156
          render_api_errors "#{l(:label_user)} #{l('activerecord.errors.messages.invalid')}"
157
        end
158
      end
138 159
    end
139 160
  end
140 161

  
app/views/context_menus/users.html.erb (working copy)
36 36
                            method: :delete, class: 'icon icon-del' %>
37 37
    </li>
38 38
  <% end %>
39
  <li class="folder">
40
    <a href="#" class="submenu"><%= l(:label_add_user_to_group) %></a>
41
    <span class="icon-only"><%= sprite_icon('angle-right', rtl: true) %></span>
42
    <ul>
43
      <% Group.givable.order(:name).each do |group| %>
44
        <li>
45
          <%= context_menu_link group.name,
46
              group_users_path(user_ids: @users.map(&:id), id: group.id),
47
              :method => :post,
48
              :disabled => false %>
49
        </li>
50
      <% end %>
51
    </ul>
52
  </li>
53
  <li class="folder">
54
    <a href="#" class="submenu"><%= l(:label_remove_user_from_group) %></a>
55
    <span class="icon-only"><%= sprite_icon('angle-right', rtl: true) %></span>
56
    <ul>
57
      <% Group.givable.order(:name).each do |group| %>
58
        <li>
59
          <%= context_menu_link group.name,
60
              group_remove_users_path(user_ids: @users.map(&:id), id: group.id),
61
              :method => :post,
62
              :disabled => false,
63
              :data => { confirm: l(:text_are_you_sure) } %>
64
        </li>
65
      <% end %>
66
    </ul>
67
  </li>
39 68
</ul>
40 69

  
app/views/groups/remove_user.js.erb (nonexistent)
1
$('#tab-content-users').html('<%= escape_javascript(render :partial => 'groups/users') %>');
2 0

  
config/routes.rb (working copy)
344 344

  
345 345
  get 'groups/:id/users/new', :to => 'groups#new_users', :id => /\d+/, :as => 'new_group_users'
346 346
  post 'groups/:id/users', :to => 'groups#add_users', :id => /\d+/, :as => 'group_users'
347
  delete 'groups/:id/users/:user_id', :to => 'groups#remove_user', :id => /\d+/, :as => 'group_user'
347
  delete 'groups/:id/users/:user_id', :to => 'groups#remove_users', :id => /\d+/, :as => 'group_user'
348
  post 'groups/:id/remove_users', :to => 'groups#remove_users', :id => /\d+/, :as => 'group_remove_users'
348 349

  
349 350
  resources :trackers, :except => :show do
350 351
    collection do
(1-1/4)