| 1 |
class CommittersController < ApplicationController |
| 2 |
|
| 3 |
before_filter :login_required, :only => [:new, :create, :destroy, :list] |
| 4 |
before_filter :find_project |
| 5 |
before_filter :find_repository, |
| 6 |
:only => [:show, :new, :create, :edit, :update, :destroy, :list] |
| 7 |
|
| 8 |
def new |
| 9 |
@committer = User.new |
| 10 |
end |
| 11 |
|
| 12 |
def create |
| 13 |
@committer = User.find_by_login(params[:user][:login]) |
| 14 |
unless @committer |
| 15 |
flash[:error] = "Could not find user by that name" |
| 16 |
respond_to do |format| |
| 17 |
format.html { redirect_to(new_committer_url(@repository.project, @repository)) } |
| 18 |
format.xml { render :text => "Could not a find user by that name", :status => :not_found } |
| 19 |
end |
| 20 |
return |
| 21 |
end |
| 22 |
|
| 23 |
respond_to do |format| |
| 24 |
if @repository.add_committer(@committer) |
| 25 |
format.html { redirect_to([@repository.project, @repository]) } |
| 26 |
format.xml do |
| 27 |
render :xml => @committer |
| 28 |
end |
| 29 |
else |
| 30 |
flash[:error] = "Could not add user or user is already a committer" |
| 31 |
format.html { redirect_to(new_committer_url(@repository.project, @repository)) } |
| 32 |
format.xml { render :text => "Could not add user or user is already a committer", :status => :not_found } |
| 33 |
end |
| 34 |
end |
| 35 |
end |
| 36 |
|
| 37 |
def destroy |
| 38 |
@committership = @repository.committerships.find_by_user_id(params[:id]) |
| 39 |
|
| 40 |
respond_to do |format| |
| 41 |
if @committership.destroy |
| 42 |
flash[:success] = "User removed from repository" |
| 43 |
format.html { redirect_to [@repository.project, @repository] } |
| 44 |
format.xml { render :nothing, :status => :ok } |
| 45 |
else |
| 46 |
flash[:error] = "Could not remove user from repository" |
| 47 |
format.html { redirect_to [@repository.project, @repository] } |
| 48 |
format.xml { render :nothing, :status => :unprocessable_entity } |
| 49 |
end |
| 50 |
|
| 51 |
end |
| 52 |
end |
| 53 |
|
| 54 |
def list |
| 55 |
@committers = @repository.committers |
| 56 |
respond_to do |format| |
| 57 |
format.xml { render :xml => @committers } |
| 58 |
end |
| 59 |
end |
| 60 |
|
| 61 |
def auto_complete_for_user_login |
| 62 |
login = params[:user][:login] |
| 63 |
@users = User.find(:all, |
| 64 |
:conditions => [ 'LOWER(login) LIKE ?', '%' + login.downcase + '%' ], |
| 65 |
:limit => 10) |
| 66 |
render :layout => false |
| 67 |
end |
| 68 |
|
| 69 |
private |
| 70 |
def find_repository |
| 71 |
@repository = @project.repositories.find_by_name!(params[:repository_id]) |
| 72 |
unless @repository.user == current_user |
| 73 |
flash[:error] = "You're not the owner of this repository" |
| 74 |
redirect_to [@repository.project, @repository] |
| 75 |
end |
| 76 |
end |
| 77 |
end |