summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJohan Sørensen <johan@johansorensen.com>2009-02-19 13:41:37 +0100
committerJohan Sørensen <johan@johansorensen.com>2009-04-22 15:14:31 +0200
commit0e2a67c7954fd1993d61b9517f8afa76d8b5b65d (patch)
tree95d3510750508a2c582e75530692bd808c9537dd
parent6a4e16ddabb2427fad84f4951015548bbad780b0 (diff)
downloadgitorious-mainline-outdated-0e2a67c7954fd1993d61b9517f8afa76d8b5b65d.zip
gitorious-mainline-outdated-0e2a67c7954fd1993d61b9517f8afa76d8b5b65d.tar.gz
gitorious-mainline-outdated-0e2a67c7954fd1993d61b9517f8afa76d8b5b65d.tar.bz2
Auto complete users as well (via a toggle) on the committerships#create page
-rw-r--r--app/controllers/committerships_controller.rb19
-rw-r--r--app/views/committerships/new.html.erb17
-rw-r--r--config/locales/en.rb4
-rw-r--r--config/routes.rb5
-rw-r--r--test/functional/committerships_controller_test.rb25
5 files changed, 60 insertions, 10 deletions
diff --git a/app/controllers/committerships_controller.rb b/app/controllers/committerships_controller.rb
index 8847d9e..4c4c9ed 100644
--- a/app/controllers/committerships_controller.rb
+++ b/app/controllers/committerships_controller.rb
@@ -16,9 +16,9 @@
#++
class CommittershipsController < ApplicationController
- before_filter :find_repository_owner, :except => [:auto_complete_for_group_name]
- before_filter :find_repository, :except => [:auto_complete_for_group_name]
- before_filter :require_adminship, :except => [:auto_complete_for_group_name]
+ before_filter :find_repository_owner, :except => [:auto_complete_for_group_name, :auto_complete_for_user_login]
+ before_filter :find_repository, :except => [:auto_complete_for_group_name, :auto_complete_for_user_login]
+ before_filter :require_adminship, :except => [:auto_complete_for_group_name, :auto_complete_for_user_login]
def index
@committerships = @repository.committerships.paginate(:all, :page => params[:page])
@@ -31,7 +31,11 @@ class CommittershipsController < ApplicationController
def create
@committership = @repository.committerships.new
- @committership.committer = Group.find_by_name(params[:group][:name])
+ if params[:group][:name].blank? && !params[:user][:login].blank?
+ @committership.committer = User.find_by_login(params[:user][:login])
+ else
+ @committership.committer = Group.find_by_name(params[:group][:name])
+ end
@committership.creator = current_user
if @committership.save
@@ -57,6 +61,13 @@ class CommittershipsController < ApplicationController
render :layout => false
end
+ def auto_complete_for_user_login
+ @users = User.find(:all,
+ :conditions => [ 'LOWER(login) LIKE ?', '%' + params[:user][:login].downcase + '%' ],
+ :limit => 10)
+ render "/memberships/auto_complete_for_user_login", :layout => false
+ end
+
protected
def require_adminship
unless @owner.admin?(current_user)
diff --git a/app/views/committerships/new.html.erb b/app/views/committerships/new.html.erb
index c572874..e65a84f 100644
--- a/app/views/committerships/new.html.erb
+++ b/app/views/committerships/new.html.erb
@@ -27,10 +27,25 @@
<%= error_messages_for :committership -%>
<% form_for [@owner, @repository, @committership] do |f| -%>
+ <div id="add_group">
<p>
- <%= f.label :group_name, t("views.committerships.committer_name") -%>:<br />
+ <%= f.label :group_name, t("views.committerships.group_name") -%>
+ <small class="hint"><a href="#add_user" onclick="$('add_user').show(); $('add_group').hide();return false;">
+ <%= t("views.committerships.add_user_instead") -%>
+ </a></small><br />
<%= text_field_with_auto_complete :group, :name, {}, :skip_style => true, :select => :name -%>
</p>
+ </div>
+ <div id="add_user" style="display:none;">
+ <p>
+ <%= f.label :group_name, t("views.committerships.user_login") -%>
+ <small class="hint"><a href="#add_group" onclick="$('add_user').hide(); $('add_group').show();return false;">
+ <%= t("views.committerships.add_team_instead") -%>
+ </a></small><br />
+ <%= text_field_with_auto_complete :user, :login, {}, :skip_style => true, :select => :login -%>
+ </p>
+ </div>
+
<p class="hint">
<%= t("views.committerships.add_tema_note") -%>
</p>
diff --git a/config/locales/en.rb b/config/locales/en.rb
index 2c281cf..80e5364 100644
--- a/config/locales/en.rb
+++ b/config/locales/en.rb
@@ -459,6 +459,10 @@
:add_new => "Add committers",
:title => "Users &amp; teams with commit rights to {{repo_name}}",
:committer_name => "Committer",
+ :group_name => "Team name",
+ :user_login => "Username",
+ :add_user_instead => "Add a user instead",
+ :add_team_instead => "Add a team instead",
:new_title => "Add a user or team as committers to {{repo_name}}",
:btn_add_as_committer => "Add as committers",
:return_to => "return to",
diff --git a/config/routes.rb b/config/routes.rb
index aff8efd..fe45c09 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -31,7 +31,10 @@ ActionController::Routing::Routes.draw do |map|
:commit_list => :post,
:target_branches => :post,
}
- repo.resources :committerships, :collection => {:auto_complete_for_group_name => :post}
+ repo.resources :committerships, :collection => {
+ :auto_complete_for_group_name => :post,
+ :auto_complete_for_user_login => :post
+ }
repo.formatted_commits_feed "commits/*branch/feed.:format",
:controller => "commits", :action => "feed", :conditions => {:feed => :get}
diff --git a/test/functional/committerships_controller_test.rb b/test/functional/committerships_controller_test.rb
index ea988d7..5d20792 100644
--- a/test/functional/committerships_controller_test.rb
+++ b/test/functional/committerships_controller_test.rb
@@ -98,23 +98,40 @@ class CommittershipsControllerTest < ActionController::TestCase
end
context "POST create" do
- should "adds a group as participant" do
+ should "add a Group as having committership" do
assert_difference("@repository.committerships.count") do
post :create, :project_id => @project.to_param, :repository_id => @repository.to_param,
- :group => {:name => @group.name}
+ :group => {:name => @group.name}, :user => {}
end
assert_response :redirect
assert !assigns(:committership).new_record?, 'new_record? should be false'
assert_equal @group, assigns(:committership).committer
assert_equal @user, assigns(:committership).creator
end
+
+ should "add a User as having committership" do
+ assert_difference("@repository.committerships.count") do
+ post :create, :project_id => @project.to_param, :repository_id => @repository.to_param,
+ :user => {:login => @user.login}, :group => {}
+ end
+ assert_response :redirect
+ assert !assigns(:committership).new_record?, 'new_record? should be false'
+ assert_equal @user, assigns(:committership).committer
+ assert_equal @user, assigns(:committership).creator
+ end
end
- context "autocomplete group name" do
- should "finds user by login" do
+ context "autocompletion" do
+ should "find a group by name" do
post :auto_complete_for_group_name, :group => { :name => "thunder" }, :format => "js"
assert_equal [groups(:team_thunderbird)], assigns(:groups)
end
+
+ should "finds user by login" do
+ post :auto_complete_for_user_login, :user => { :login => "joha" }, :format => "js"
+ assert_equal [users(:johan)], assigns(:users)
+ assert_template "memberships/auto_complete_for_user_login.js.erb"
+ end
end
context "DELETE destroy" do