Blob of app/controllers/committers_controller.rb (raw blob data)

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