diff options
author | Johan Sørensen <johan@johansorensen.com> | 2009-02-19 13:41:37 +0100 |
---|---|---|
committer | Johan Sørensen <johan@johansorensen.com> | 2009-04-22 15:14:31 +0200 |
commit | 0e2a67c7954fd1993d61b9517f8afa76d8b5b65d (patch) | |
tree | 95d3510750508a2c582e75530692bd808c9537dd | |
parent | 6a4e16ddabb2427fad84f4951015548bbad780b0 (diff) | |
download | gitorious-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.rb | 19 | ||||
-rw-r--r-- | app/views/committerships/new.html.erb | 17 | ||||
-rw-r--r-- | config/locales/en.rb | 4 | ||||
-rw-r--r-- | config/routes.rb | 5 | ||||
-rw-r--r-- | test/functional/committerships_controller_test.rb | 25 |
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 & 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 |