summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJean-Philippe Lang <jp_lang@yahoo.fr>2011-01-30 06:08:01 +0000
committerJean-Philippe Lang <jp_lang@yahoo.fr>2011-01-30 06:08:01 +0000
commit7be5bf6e4da8affcb73be3302b10c86de66af3be (patch)
tree52e944421be4240707c321346886d7ee289bec2e
parentc73d4042d1c537a7678b192666ce6b44d2158c00 (diff)
downloadredmine-7be5bf6e4da8affcb73be3302b10c86de66af3be.tar.gz
redmine-7be5bf6e4da8affcb73be3302b10c86de66af3be.zip
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
-rw-r--r--app/controllers/issue_relations_controller.rb6
-rw-r--r--app/controllers/issues_controller.rb1
-rw-r--r--app/views/issues/_relations.rhtml4
-rw-r--r--app/views/issues/show.api.rsb4
-rw-r--r--test/functional/issue_relations_controller_test.rb29
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 @@
<p><strong><%=l(:label_related_issues)%></strong></p>
-<% if @issue.relations.any? %>
+<% if @relations.present? %>
<table style="width:100%">
-<% @issue.relations.select {|r| r.other_issue(@issue).visible? }.each do |relation| %>
+<% @relations.each do |relation| %>
<tr>
<td><%= 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