From 7be5bf6e4da8affcb73be3302b10c86de66af3be Mon Sep 17 00:00:00 2001 From: Jean-Philippe Lang Date: Sun, 30 Jan 2011 06:08:01 +0000 Subject: [PATCH] Merged r4741 and r4764 from trunk. git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/1.1-stable@4770 e93f8b46-1217-0410-a6f0-8f06a7374b81 --- app/controllers/issue_relations_controller.rb | 6 +++- app/controllers/issues_controller.rb | 1 + app/views/issues/_relations.rhtml | 4 +-- app/views/issues/show.api.rsb | 4 +-- .../issue_relations_controller_test.rb | 29 +++++++++++++++++++ 5 files changed, 39 insertions(+), 5 deletions(-) diff --git a/app/controllers/issue_relations_controller.rb b/app/controllers/issue_relations_controller.rb index 7462adca8..b095df37a 100644 --- a/app/controllers/issue_relations_controller.rb +++ b/app/controllers/issue_relations_controller.rb @@ -28,6 +28,7 @@ class IssueRelationsController < ApplicationController respond_to do |format| format.html { redirect_to :controller => 'issues', :action => 'show', :id => @issue } format.js do + @relations = @issue.relations.select {|r| r.other_issue(@issue) && r.other_issue(@issue).visible? } render :update do |page| page.replace_html "relations", :partial => 'issues/relations' if @relation.errors.empty? @@ -47,7 +48,10 @@ class IssueRelationsController < ApplicationController end respond_to do |format| format.html { redirect_to :controller => 'issues', :action => 'show', :id => @issue } - format.js { render(:update) {|page| page.replace_html "relations", :partial => 'issues/relations'} } + format.js { + @relations = @issue.relations.select {|r| r.other_issue(@issue) && r.other_issue(@issue).visible? } + render(:update) {|page| page.replace_html "relations", :partial => 'issues/relations'} + } end end diff --git a/app/controllers/issues_controller.rb b/app/controllers/issues_controller.rb index 3d1dbe9f1..051f89107 100644 --- a/app/controllers/issues_controller.rb +++ b/app/controllers/issues_controller.rb @@ -108,6 +108,7 @@ class IssuesController < ApplicationController @journals.reverse! if User.current.wants_comments_in_reverse_order? @changesets = @issue.changesets.visible.all @changesets.reverse! if User.current.wants_comments_in_reverse_order? + @relations = @issue.relations.select {|r| r.other_issue(@issue) && r.other_issue(@issue).visible? } @allowed_statuses = @issue.new_statuses_allowed_to(User.current) @edit_allowed = User.current.allowed_to?(:edit_issues, @project) @priorities = IssuePriority.all diff --git a/app/views/issues/_relations.rhtml b/app/views/issues/_relations.rhtml index 5b27fa6a5..f8535b827 100644 --- a/app/views/issues/_relations.rhtml +++ b/app/views/issues/_relations.rhtml @@ -6,9 +6,9 @@

<%=l(:label_related_issues)%>

-<% if @issue.relations.any? %> +<% if @relations.present? %> -<% @issue.relations.select {|r| r.other_issue(@issue).visible? }.each do |relation| %> +<% @relations.each do |relation| %>
<%= l(relation.label_for(@issue)) %> <%= "(#{l('datetime.distance_in_words.x_days', :count => relation.delay)})" if relation.delay && relation.delay != 0 %> <%= h(relation.other_issue(@issue).project) + ' - ' if Setting.cross_project_issue_relations? %> diff --git a/app/views/issues/show.api.rsb b/app/views/issues/show.api.rsb index a6461ff83..170aeb375 100644 --- a/app/views/issues/show.api.rsb +++ b/app/views/issues/show.api.rsb @@ -26,10 +26,10 @@ api.issue do render_api_issue_children(@issue, api) if include_in_api_response?('children') api.array :relations do - @issue.relations.select {|r| r.other_issue(@issue).visible? }.each do |relation| + @relations.each do |relation| api.relation(:id => relation.id, :issue_id => relation.other_issue(@issue).id, :relation_type => relation.relation_type_for(@issue), :delay => relation.delay) end - end if include_in_api_response?('relations') + end if include_in_api_response?('relations') && @relations.present? api.array :changesets do @issue.changesets.each do |changeset| diff --git a/test/functional/issue_relations_controller_test.rb b/test/functional/issue_relations_controller_test.rb index 6c50b707f..ff3bb8d0d 100644 --- a/test/functional/issue_relations_controller_test.rb +++ b/test/functional/issue_relations_controller_test.rb @@ -33,6 +33,19 @@ class IssueRelationsControllerTest < ActionController::TestCase end end + def test_new_xhr + assert_difference 'IssueRelation.count' do + @request.session[:user_id] = 3 + xhr :post, :new, + :issue_id => 3, + :relation => {:issue_to_id => '1', :relation_type => 'relates', :delay => ''} + assert_select_rjs 'relations' do + assert_select 'table', 1 + assert_select 'tr', 2 # relations + end + end + end + def test_new_should_accept_id_with_hash assert_difference 'IssueRelation.count' do @request.session[:user_id] = 3 @@ -68,4 +81,20 @@ class IssueRelationsControllerTest < ActionController::TestCase post :destroy, :id => '2', :issue_id => '3' end end + + def test_destroy_xhr + IssueRelation.create!(:relation_type => IssueRelation::TYPE_RELATES) do |r| + r.issue_from_id = 3 + r.issue_to_id = 1 + end + + assert_difference 'IssueRelation.count', -1 do + @request.session[:user_id] = 3 + xhr :post, :destroy, :id => '2', :issue_id => '3' + assert_select_rjs 'relations' do + assert_select 'table', 1 + assert_select 'tr', 1 # relation left + end + end + end end