From d3bfbb800c2be68bfa70a1df89fded6fd7bdccc9 Mon Sep 17 00:00:00 2001 From: Jean-Philippe Lang Date: Sat, 21 Jul 2012 06:35:11 +0000 Subject: [PATCH] Removes RJS from MembersController. git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10058 e93f8b46-1217-0410-a6f0-8f06a7374b81 --- app/controllers/members_controller.rb | 48 +++++----------------- app/views/members/create.js.erb | 11 +++++ app/views/members/destroy.js.erb | 2 + app/views/members/update.js.erb | 3 ++ test/functional/members_controller_test.rb | 26 ++++++++---- 5 files changed, 46 insertions(+), 44 deletions(-) create mode 100644 app/views/members/create.js.erb create mode 100644 app/views/members/destroy.js.erb create mode 100644 app/views/members/update.js.erb diff --git a/app/controllers/members_controller.rb b/app/controllers/members_controller.rb index 49aaa2555..520302c8c 100644 --- a/app/controllers/members_controller.rb +++ b/app/controllers/members_controller.rb @@ -63,31 +63,16 @@ class MembersController < ApplicationController end respond_to do |format| - if members.present? && members.all? {|m| m.valid? } - format.html { redirect_to :controller => 'projects', :action => 'settings', :tab => 'members', :id => @project } - format.js { - render(:update) {|page| - page.replace_html "tab-content-members", :partial => 'projects/settings/members' - page << 'hideOnLoad()' - members.each {|member| page.visual_effect(:highlight, "member-#{member.id}") } - } - } - format.api { - @member = members.first + format.html { redirect_to :controller => 'projects', :action => 'settings', :tab => 'members', :id => @project } + format.js { @members = members } + format.api { + @member = members.first + if @member.valid? render :action => 'show', :status => :created, :location => membership_url(@member) - } - else - format.js { - render(:update) {|page| - errors = members.collect {|m| - m.errors.full_messages - }.flatten.uniq - - page.alert(l(:notice_failed_to_save_members, :errors => errors.join(', '))) - } - } - format.api { render_validation_errors(members.first) } - end + else + render_validation_errors(@member) + end + } end end @@ -98,13 +83,7 @@ class MembersController < ApplicationController saved = @member.save respond_to do |format| format.html { redirect_to :controller => 'projects', :action => 'settings', :tab => 'members', :id => @project } - format.js { - render(:update) {|page| - page.replace_html "tab-content-members", :partial => 'projects/settings/members' - page << 'hideOnLoad()' - page.visual_effect(:highlight, "member-#{@member.id}") - } - } + format.js format.api { if saved render_api_ok @@ -121,11 +100,7 @@ class MembersController < ApplicationController end respond_to do |format| format.html { redirect_to :controller => 'projects', :action => 'settings', :tab => 'members', :id => @project } - format.js { render(:update) {|page| - page.replace_html "tab-content-members", :partial => 'projects/settings/members' - page << 'hideOnLoad()' - } - } + format.js format.api { if @member.destroyed? render_api_ok @@ -140,5 +115,4 @@ class MembersController < ApplicationController @principals = Principal.active.not_member_of(@project).like(params[:q]).all(:limit => 100) render :layout => false end - end diff --git a/app/views/members/create.js.erb b/app/views/members/create.js.erb new file mode 100644 index 000000000..c56390fd4 --- /dev/null +++ b/app/views/members/create.js.erb @@ -0,0 +1,11 @@ +Element.update('tab-content-members', '<%= escape_javascript(render :partial => 'projects/settings/members') %>'); +hideOnLoad(); + +<% if @members.present? && @members.all? {|m| m.valid? } %> + <% @members.each do |member| %> + new Effect.Highlight("member-<%= member.id %>"); + <% end %> +<% else %> + <% errors = @members.collect {|m| m.errors.full_messages}.flatten.uniq.join(', ') %> + alert('<%= escape_javascript l(:notice_failed_to_save_members, :errors => errors) %>'); +<% end %> diff --git a/app/views/members/destroy.js.erb b/app/views/members/destroy.js.erb new file mode 100644 index 000000000..ad7ac38d1 --- /dev/null +++ b/app/views/members/destroy.js.erb @@ -0,0 +1,2 @@ +Element.update('tab-content-members', '<%= escape_javascript(render :partial => 'projects/settings/members') %>'); +hideOnLoad(); diff --git a/app/views/members/update.js.erb b/app/views/members/update.js.erb new file mode 100644 index 000000000..01eac2bcd --- /dev/null +++ b/app/views/members/update.js.erb @@ -0,0 +1,3 @@ +Element.update('tab-content-members', '<%= escape_javascript(render :partial => 'projects/settings/members') %>'); +hideOnLoad(); +new Effect.Highlight("member-<%= @member.id %>"); diff --git a/test/functional/members_controller_test.rb b/test/functional/members_controller_test.rb index e661fd550..55bbad5ce 100644 --- a/test/functional/members_controller_test.rb +++ b/test/functional/members_controller_test.rb @@ -51,20 +51,25 @@ class MembersControllerTest < ActionController::TestCase def test_xhr_create assert_difference 'Member.count', 3 do - post :create, :project_id => 1, :membership => {:role_ids => [1], :user_ids => [7, 8, 9]}, :format => "js" + xhr :post, :create, :project_id => 1, :membership => {:role_ids => [1], :user_ids => [7, 8, 9]} + assert_response :success + assert_template 'create' + assert_equal 'text/javascript', response.content_type end - assert_select_rjs :replace_html, 'tab-content-members' assert User.find(7).member_of?(Project.find(1)) assert User.find(8).member_of?(Project.find(1)) assert User.find(9).member_of?(Project.find(1)) + assert_include 'tab-content-members', response.body end def test_xhr_create_with_failure assert_no_difference 'Member.count' do - post :create, :project_id => 1, :membership => {:role_ids => [], :user_ids => [7, 8, 9]}, :format => "js" + xhr :post, :create, :project_id => 1, :membership => {:role_ids => [], :user_ids => [7, 8, 9]} + assert_response :success + assert_template 'create' + assert_equal 'text/javascript', response.content_type end - assert_select '#tab-content-members', 0 - assert @response.body.match(/alert/i), "Alert message not sent" + assert_match /alert/, response.body, "Alert message not sent" end def test_edit @@ -77,11 +82,14 @@ class MembersControllerTest < ActionController::TestCase def test_xhr_edit assert_no_difference 'Member.count' do xhr :put, :update, :id => 2, :membership => {:role_ids => [1], :user_id => 3} + assert_response :success + assert_template 'update' + assert_equal 'text/javascript', response.content_type end - assert_select_rjs :replace_html, 'tab-content-members' member = Member.find(2) assert_equal [1], member.role_ids assert_equal 3, member.user_id + assert_include 'tab-content-members', response.body end def test_destroy @@ -95,8 +103,12 @@ class MembersControllerTest < ActionController::TestCase def test_xhr_destroy assert_difference 'Member.count', -1 do xhr :delete, :destroy, :id => 2 + assert_response :success + assert_template 'destroy' + assert_equal 'text/javascript', response.content_type end - assert_select_rjs :replace_html, 'tab-content-members' + assert_nil Member.find_by_id(2) + assert_include 'tab-content-members', response.body end def test_autocomplete