Skip to content

Commit

Permalink
Feature implemented
Browse files Browse the repository at this point in the history
  • Loading branch information
Dmitriy Zaporozhets committed Oct 24, 2012
1 parent 012d62b commit fd0aca1
Show file tree
Hide file tree
Showing 5 changed files with 58 additions and 3 deletions.
8 changes: 8 additions & 0 deletions app/controllers/team_members_controller.rb
Expand Up @@ -43,4 +43,12 @@ def destroy
format.js { render nothing: true }
end
end

def apply_import
giver = Project.find(params[:source_project_id])
status = UsersProject.import_team(giver, project)
notice = status ? "Succesfully imported" : "Import failed"

redirect_to project_team_members_path(project), notice: notice
end
end
16 changes: 16 additions & 0 deletions app/models/users_project.rb
Expand Up @@ -21,6 +21,22 @@ class UsersProject < ActiveRecord::Base
delegate :name, :email, to: :user, prefix: true

class << self
def import_team(source_project, target_project)
UsersProject.transaction do
team = source_project.users_projects.all

team.each do |tm|
# Skip if user already present in team
next if target_project.users.include?(tm.user)

new_tm = tm.dup
new_tm.id = nil
new_tm.project_id = target_project.id
new_tm.save
end
end
end

def bulk_delete(project, user_ids)
UsersProject.transaction do
UsersProject.where(:user_id => user_ids, :project_id => project.id).each do |users_project|
Expand Down
17 changes: 17 additions & 0 deletions app/views/team_members/import.html.haml
@@ -0,0 +1,17 @@
= render "projects/project_head"

%h3.page_title
= "Import team from another project"
%hr
%p.slead
Read more about team import #{link_to "here", '#', class: 'vlink'}.
= form_tag apply_import_project_team_members_path(@project), method: 'post' do
%p.slead Choose project you want to use as team source:
.padded
= label_tag :source_project_id, "Project"
.input= select_tag(:source_project_id, options_from_collection_for_select(current_user.projects, :id, :name), prompt: "Select project", class: "chosen xxlarge", required: true)

.actions
= submit_tag 'Save', class: "btn save-btn"
= link_to "Cancel", project_team_index_path(@project), class: "btn cancel-btn"

9 changes: 7 additions & 2 deletions app/views/team_members/index.html.haml
Expand Up @@ -5,9 +5,14 @@

- if can? current_user, :admin_team_member, @project
%p.slead
= link_to new_project_team_member_path(@project), class: "btn small right", title: "New Team Member" do
New Team Member
Read more about project permissions
%strong= link_to "here", help_permissions_path, class: "vlink"

%span.right
= link_to import_project_team_members_path(@project), class: "btn small grouped", title: "Import team from another project" do
Import team from another project
= link_to new_project_team_member_path(@project), class: "btn success small grouped", title: "New Team Member" do
New Team Member

.clearfix
= render partial: "team_members/team", locals: {project: @project}
11 changes: 10 additions & 1 deletion config/routes.rb
Expand Up @@ -188,7 +188,6 @@
:via => [:get, :post], constraints: {from: /.+/, to: /.+/}

resources :team, controller: 'team_members', only: [:index]
resources :team_members
resources :milestones
resources :labels, only: [:index]
resources :issues do
Expand All @@ -199,6 +198,16 @@
end
end

resources :team_members do
collection do

# Used for import team
# from another project
get :import
post :apply_import
end
end

resources :notes, only: [:index, :create, :destroy] do
collection do
post :preview
Expand Down

0 comments on commit fd0aca1

Please sign in to comment.