Skip to content

Commit

Permalink
Admin area: add multiple users to project
Browse files Browse the repository at this point in the history
  • Loading branch information
dzaporozhets committed Jan 21, 2012
1 parent f6f72d4 commit fa8c0c7
Show file tree
Hide file tree
Showing 5 changed files with 69 additions and 1 deletion.
18 changes: 18 additions & 0 deletions app/controllers/admin/projects_controller.rb
Expand Up @@ -19,6 +19,24 @@ def edit
@admin_project = Project.find_by_code(params[:id])
end

def team
@admin_project = Project.find_by_code(params[:id])
@users = User.not_in_project(@admin_project).all
end

def team_update
@admin_project = Project.find_by_code(params[:id])

UsersProject.bulk_import(
@admin_project,
params[:user_ids],
params[:project_access],
params[:repo_access]
)

redirect_to [:admin, @admin_project], notice: 'Project was successfully updated.'
end

def create
@admin_project = Project.new(params[:project])
@admin_project.owner = current_user
Expand Down
14 changes: 14 additions & 0 deletions app/models/users_project.rb
Expand Up @@ -13,6 +13,20 @@ class UsersProject < ActiveRecord::Base

delegate :name, :email, :to => :user, :prefix => true

def self.bulk_import(project, user_ids, project_access, repo_access)
UsersProject.transaction do
user_ids.each do |user_id|
users_project = UsersProject.new(
:repo_access => repo_access,
:project_access => project_access,
:user_id => user_id
)
users_project.project = project
users_project.save
end
end
end

def update_repository
Gitlabhq::GitHost.system.new.configure do |c|
c.update_project(project.path, project)
Expand Down
1 change: 1 addition & 0 deletions app/views/admin/projects/show.html.haml
Expand Up @@ -57,3 +57,4 @@
%td= link_to 'Destroy', admin_team_member_path(tm), :confirm => 'Are you sure?', :method => :delete

= link_to 'New Team Member', new_admin_team_member_path(:team_member => {:project_id => @admin_project.id}), :class => "grey-button"
.right= link_to 'Bulk Import', team_admin_project_path(@admin_project), :class => "grey-button"
30 changes: 30 additions & 0 deletions app/views/admin/projects/team.html.haml
@@ -0,0 +1,30 @@
= form_tag team_update_admin_project_path(@admin_project), :class => "bulk_import", :method => :put do
.span-6
%b Project Access:
.span-6
= select_tag :project_access, options_for_select(Project.access_options), :class => "project-access-select"

.span-6
%b Repository Access:
.span-6
= select_tag :repo_access, options_for_select(Repository.access_options), :class => "repo-access-select"

%br
= select_tag :user_ids, options_from_collection_for_select(@users , :id, :name), :multiple => true

%br
.clear
%br
.actions
= submit_tag 'Save', :class => "grey-button"

:css
form select {
width:300px;
}


:javascript
$('select#user_ids').chosen();
$('select#repo_access').chosen();
$('select#project_access').chosen();
7 changes: 6 additions & 1 deletion config/routes.rb
Expand Up @@ -10,7 +10,12 @@

namespace :admin do
resources :users
resources :projects, :constraints => { :id => /[^\/]+/ }
resources :projects, :constraints => { :id => /[^\/]+/ } do
member do
get :team
put :team_update
end
end
resources :team_members
get 'emails', :to => 'mailer#preview'
get 'mailer/preview_note'
Expand Down

0 comments on commit fa8c0c7

Please sign in to comment.