Commit fa8c0c78136c1a3bcff2bff042affcfee973c6e1
1 parent
f6f72d4b
Exists in
master
and in
4 other branches
Admin area: add multiple users to project
Showing
5 changed files
with
69 additions
and
1 deletions
Show diff stats
app/controllers/admin/projects_controller.rb
@@ -19,6 +19,24 @@ class Admin::ProjectsController < ApplicationController | @@ -19,6 +19,24 @@ class Admin::ProjectsController < ApplicationController | ||
19 | @admin_project = Project.find_by_code(params[:id]) | 19 | @admin_project = Project.find_by_code(params[:id]) |
20 | end | 20 | end |
21 | 21 | ||
22 | + def team | ||
23 | + @admin_project = Project.find_by_code(params[:id]) | ||
24 | + @users = User.not_in_project(@admin_project).all | ||
25 | + end | ||
26 | + | ||
27 | + def team_update | ||
28 | + @admin_project = Project.find_by_code(params[:id]) | ||
29 | + | ||
30 | + UsersProject.bulk_import( | ||
31 | + @admin_project, | ||
32 | + params[:user_ids], | ||
33 | + params[:project_access], | ||
34 | + params[:repo_access] | ||
35 | + ) | ||
36 | + | ||
37 | + redirect_to [:admin, @admin_project], notice: 'Project was successfully updated.' | ||
38 | + end | ||
39 | + | ||
22 | def create | 40 | def create |
23 | @admin_project = Project.new(params[:project]) | 41 | @admin_project = Project.new(params[:project]) |
24 | @admin_project.owner = current_user | 42 | @admin_project.owner = current_user |
app/models/users_project.rb
@@ -13,6 +13,20 @@ class UsersProject < ActiveRecord::Base | @@ -13,6 +13,20 @@ class UsersProject < ActiveRecord::Base | ||
13 | 13 | ||
14 | delegate :name, :email, :to => :user, :prefix => true | 14 | delegate :name, :email, :to => :user, :prefix => true |
15 | 15 | ||
16 | + def self.bulk_import(project, user_ids, project_access, repo_access) | ||
17 | + UsersProject.transaction do | ||
18 | + user_ids.each do |user_id| | ||
19 | + users_project = UsersProject.new( | ||
20 | + :repo_access => repo_access, | ||
21 | + :project_access => project_access, | ||
22 | + :user_id => user_id | ||
23 | + ) | ||
24 | + users_project.project = project | ||
25 | + users_project.save | ||
26 | + end | ||
27 | + end | ||
28 | + end | ||
29 | + | ||
16 | def update_repository | 30 | def update_repository |
17 | Gitlabhq::GitHost.system.new.configure do |c| | 31 | Gitlabhq::GitHost.system.new.configure do |c| |
18 | c.update_project(project.path, project) | 32 | c.update_project(project.path, project) |
app/views/admin/projects/show.html.haml
@@ -57,3 +57,4 @@ | @@ -57,3 +57,4 @@ | ||
57 | %td= link_to 'Destroy', admin_team_member_path(tm), :confirm => 'Are you sure?', :method => :delete | 57 | %td= link_to 'Destroy', admin_team_member_path(tm), :confirm => 'Are you sure?', :method => :delete |
58 | 58 | ||
59 | = link_to 'New Team Member', new_admin_team_member_path(:team_member => {:project_id => @admin_project.id}), :class => "grey-button" | 59 | = link_to 'New Team Member', new_admin_team_member_path(:team_member => {:project_id => @admin_project.id}), :class => "grey-button" |
60 | + .right= link_to 'Bulk Import', team_admin_project_path(@admin_project), :class => "grey-button" |
@@ -0,0 +1,30 @@ | @@ -0,0 +1,30 @@ | ||
1 | += form_tag team_update_admin_project_path(@admin_project), :class => "bulk_import", :method => :put do | ||
2 | + .span-6 | ||
3 | + %b Project Access: | ||
4 | + .span-6 | ||
5 | + = select_tag :project_access, options_for_select(Project.access_options), :class => "project-access-select" | ||
6 | + | ||
7 | + .span-6 | ||
8 | + %b Repository Access: | ||
9 | + .span-6 | ||
10 | + = select_tag :repo_access, options_for_select(Repository.access_options), :class => "repo-access-select" | ||
11 | + | ||
12 | + %br | ||
13 | + = select_tag :user_ids, options_from_collection_for_select(@users , :id, :name), :multiple => true | ||
14 | + | ||
15 | + %br | ||
16 | + .clear | ||
17 | + %br | ||
18 | + .actions | ||
19 | + = submit_tag 'Save', :class => "grey-button" | ||
20 | + | ||
21 | +:css | ||
22 | + form select { | ||
23 | + width:300px; | ||
24 | + } | ||
25 | + | ||
26 | + | ||
27 | +:javascript | ||
28 | + $('select#user_ids').chosen(); | ||
29 | + $('select#repo_access').chosen(); | ||
30 | + $('select#project_access').chosen(); |
config/routes.rb
@@ -10,7 +10,12 @@ Gitlab::Application.routes.draw do | @@ -10,7 +10,12 @@ Gitlab::Application.routes.draw do | ||
10 | 10 | ||
11 | namespace :admin do | 11 | namespace :admin do |
12 | resources :users | 12 | resources :users |
13 | - resources :projects, :constraints => { :id => /[^\/]+/ } | 13 | + resources :projects, :constraints => { :id => /[^\/]+/ } do |
14 | + member do | ||
15 | + get :team | ||
16 | + put :team_update | ||
17 | + end | ||
18 | + end | ||
14 | resources :team_members | 19 | resources :team_members |
15 | get 'emails', :to => 'mailer#preview' | 20 | get 'emails', :to => 'mailer#preview' |
16 | get 'mailer/preview_note' | 21 | get 'mailer/preview_note' |