105 lines
2.6 KiB
Ruby
105 lines
2.6 KiB
Ruby
|
class Admin::TeamsController < AdminController
|
||
|
before_filter :user_team,
|
||
|
only: [ :edit, :show, :update, :destroy,
|
||
|
:delegate_projects, :relegate_project,
|
||
|
:add_members, :remove_member ]
|
||
|
|
||
|
def index
|
||
|
@teams = UserTeam.order('name ASC')
|
||
|
@teams = @teams.search(params[:name]) if params[:name].present?
|
||
|
@teams = @teams.page(params[:page]).per(20)
|
||
|
end
|
||
|
|
||
|
def show
|
||
|
@projects = Project.scoped
|
||
|
@projects = @projects.without_team(@team) if @team.projects.any?
|
||
|
#@projects.reject!(&:empty_repo?)
|
||
|
|
||
|
@users = User.active
|
||
|
@users = @users.not_in_team(@team) if @team.members.any?
|
||
|
@users = UserDecorator.decorate @users
|
||
|
end
|
||
|
|
||
|
def new
|
||
|
@team = UserTeam.new
|
||
|
end
|
||
|
|
||
|
def edit
|
||
|
end
|
||
|
|
||
|
def create
|
||
|
@team = UserTeam.new(params[:user_team])
|
||
|
@team.path = @team.name.dup.parameterize if @team.name
|
||
|
@team.owner = current_user
|
||
|
|
||
|
if @team.save
|
||
|
redirect_to admin_team_path(@team), notice: 'UserTeam was successfully created.'
|
||
|
else
|
||
|
render action: "new"
|
||
|
end
|
||
|
end
|
||
|
|
||
|
def update
|
||
|
user_team_params = params[:user_team].dup
|
||
|
owner_id = user_team_params.delete(:owner_id)
|
||
|
|
||
|
if owner_id
|
||
|
@team.owner = User.find(owner_id)
|
||
|
end
|
||
|
|
||
|
if @team.update_attributes(user_team_params)
|
||
|
redirect_to admin_team_path(@team), notice: 'UserTeam was successfully updated.'
|
||
|
else
|
||
|
render action: "edit"
|
||
|
end
|
||
|
end
|
||
|
|
||
|
def destroy
|
||
|
@team.destroy
|
||
|
|
||
|
redirect_to admin_user_teams_path, notice: 'UserTeam was successfully deleted.'
|
||
|
end
|
||
|
|
||
|
def delegate_projects
|
||
|
unless params[:project_ids].blank?
|
||
|
project_ids = params[:project_ids]
|
||
|
access = params[:greatest_project_access]
|
||
|
@team.assign_to_projects(project_ids, access)
|
||
|
end
|
||
|
|
||
|
redirect_to admin_team_path(@team), notice: 'Projects was successfully added.'
|
||
|
end
|
||
|
|
||
|
def relegate_project
|
||
|
project = params[:project_id]
|
||
|
@team.resign_from_project(project)
|
||
|
|
||
|
redirect_to admin_team_path(@team), notice: 'Project was successfully removed.'
|
||
|
end
|
||
|
|
||
|
def add_members
|
||
|
unless params[:user_ids].blank?
|
||
|
user_ids = params[:user_ids]
|
||
|
access = params[:default_project_access]
|
||
|
is_admin = params[:group_admin]
|
||
|
@team.add_members(user_ids, access, is_admin)
|
||
|
end
|
||
|
|
||
|
redirect_to admin_team_path(@team), notice: 'Members was successfully added.'
|
||
|
end
|
||
|
|
||
|
def remove_member
|
||
|
member = params[:member_id]
|
||
|
@team.remove_member(member)
|
||
|
|
||
|
redirect_to admin_team_path(@team), notice: 'Member was successfully removed.'
|
||
|
end
|
||
|
|
||
|
private
|
||
|
|
||
|
def user_team
|
||
|
@team = UserTeam.find_by_path(params[:id])
|
||
|
end
|
||
|
|
||
|
end
|