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
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|
--- /dev/null
+= 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"
+
- 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}
: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
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