]> source.dussan.org Git - redmine.git/commitdiff
Merged bug fixes r3412 to r3414.
authorJean-Philippe Lang <jp_lang@yahoo.fr>
Sun, 14 Feb 2010 15:55:00 +0000 (15:55 +0000)
committerJean-Philippe Lang <jp_lang@yahoo.fr>
Sun, 14 Feb 2010 15:55:00 +0000 (15:55 +0000)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/0.9-stable@3432 e93f8b46-1217-0410-a6f0-8f06a7374b81

app/controllers/issue_relations_controller.rb
app/models/project.rb
public/stylesheets/application.css
test/fixtures/wiki_contents.yml
test/fixtures/wiki_pages.yml
test/functional/issue_relations_controller_test.rb
test/unit/project_test.rb

index 8a41c3830523665ad846c50fcd3a13ed916586ff..9ce358584db4c74e710369fb400c95a29b454678 100644 (file)
@@ -21,8 +21,8 @@ class IssueRelationsController < ApplicationController
   def new
     @relation = IssueRelation.new(params[:relation])
     @relation.issue_from = @issue
-    if params[:relation] && !params[:relation][:issue_to_id].blank?
-      @relation.issue_to = Issue.visible.find_by_id(params[:relation][:issue_to_id])
+    if params[:relation] && m = params[:relation][:issue_to_id].to_s.match(/^#?(\d+)$/)
+      @relation.issue_to = Issue.visible.find_by_id(m[1].to_i)
     end
     @relation.save if request.post?
     respond_to do |format|
index 58ef811400ab78a021bae244820e183dffbffe37..394173515d999c4e0a1dc13d50e9b7567929bd4e 100644 (file)
@@ -512,11 +512,23 @@ class Project < ActiveRecord::Base
     unless project.wiki.nil?
       self.wiki ||= Wiki.new
       wiki.attributes = project.wiki.attributes.dup.except("id", "project_id")
+      wiki_pages_map = {}
       project.wiki.pages.each do |page|
+        # Skip pages without content
+        next if page.content.nil?
         new_wiki_content = WikiContent.new(page.content.attributes.dup.except("id", "page_id", "updated_on"))
         new_wiki_page = WikiPage.new(page.attributes.dup.except("id", "wiki_id", "created_on", "parent_id"))
         new_wiki_page.content = new_wiki_content
         wiki.pages << new_wiki_page
+        wiki_pages_map[page.id] = new_wiki_page
+      end
+      wiki.save
+      # Reproduce page hierarchy
+      project.wiki.pages.each do |page|
+        if page.parent_id && wiki_pages_map[page.id]
+          wiki_pages_map[page.id].parent = wiki_pages_map[page.parent_id]
+          wiki_pages_map[page.id].save
+        end
       end
     end
   end
index 9d51f6de76c715dc217d9d8bfd224af05ff47a3a..d5dd42c4e8a7bc68d6459a9e6824b9bf6718c6a1 100644 (file)
@@ -728,6 +728,7 @@ background-image:url('../images/close_hl.png');
   padding:0;
   margin:0;
   line-height:0.8em;
+  white-space:nowrap;
 }
 
 .task_late { background:#f66 url(../images/task_late.png); border: 1px solid #f66; }
index 96aa2ccde275a8f329c76bc43246e2be85824408..e0bf1991c35ca1667afd9292d0cbc4d043a98f54 100644 (file)
@@ -71,4 +71,28 @@ wiki_contents_006:
   version: 1
   author_id: 1
   comments: 
+wiki_contents_007: 
+  text: This is a child page
+  updated_on: 2007-03-08 00:18:07 +01:00
+  page_id: 7
+  id: 7
+  version: 1
+  author_id: 1
+  comments: 
+wiki_contents_008: 
+  text: This is a parent page
+  updated_on: 2007-03-08 00:18:07 +01:00
+  page_id: 8
+  id: 8
+  version: 1
+  author_id: 1
+  comments: 
+wiki_contents_009: 
+  text: This is a child page
+  updated_on: 2007-03-08 00:18:07 +01:00
+  page_id: 9
+  id: 9
+  version: 1
+  author_id: 1
+  comments: 
   
\ No newline at end of file
index a0b8b790afc39a39545379f1c5fedb64ab6e8d5d..f1fb1991728a28372d4db037d9697099f4963660 100644 (file)
@@ -41,4 +41,25 @@ wiki_pages_006:
   wiki_id: 1
   protected: false
   parent_id: 2
+wiki_pages_007: 
+  created_on: 2007-03-08 00:18:07 +01:00
+  title: Child_page_1
+  id: 7
+  wiki_id: 2
+  protected: false
+  parent_id: 8
+wiki_pages_008: 
+  created_on: 2007-03-08 00:18:07 +01:00
+  title: Parent_page
+  id: 8
+  wiki_id: 2
+  protected: false
+  parent_id: 
+wiki_pages_009: 
+  created_on: 2007-03-08 00:18:07 +01:00
+  title: Child_page_2
+  id: 9
+  wiki_id: 2
+  protected: false
+  parent_id: 8
   
\ No newline at end of file
index cd7af4eb982561e106949799b85e842894832e1f..e8834f1b770abb5683be9da46e266b0b6f773f8d 100644 (file)
@@ -40,6 +40,24 @@ class IssueRelationsControllerTest < ActionController::TestCase
     end
   end
   
+  def test_new_should_accept_id_with_hash
+    assert_difference 'IssueRelation.count' do
+      @request.session[:user_id] = 3
+      post :new, :issue_id => 1, 
+                 :relation => {:issue_to_id => '#2', :relation_type => 'relates', :delay => ''}
+    end
+  end
+  
+  def test_new_should_not_break_with_non_numerical_id
+    assert_no_difference 'IssueRelation.count' do
+      assert_nothing_raised do
+        @request.session[:user_id] = 3
+        post :new, :issue_id => 1, 
+                   :relation => {:issue_to_id => 'foo', :relation_type => 'relates', :delay => ''}
+      end
+    end
+  end
+  
   def test_should_create_relations_with_visible_issues_only
     Setting.cross_project_issue_relations = '1'
     assert_nil Issue.visible(User.find(3)).find_by_id(4)
index 3bf32d972016c3975cb590d741226867053dfd4c..81fe44a81256b053629ca5f5af6d0420b8c1b40c 100644 (file)
@@ -723,16 +723,24 @@ class ProjectTest < ActiveSupport::TestCase
       assert_equal "Start page", @project.wiki.start_page
     end
 
-    should "copy wiki pages and content" do
-      assert @project.copy(@source_project)
-
+    should "copy wiki pages and content with hierarchy" do
+      assert_difference 'WikiPage.count', @source_project.wiki.pages.size do
+        assert @project.copy(@source_project)
+      end
+      
       assert @project.wiki
-      assert_equal 1, @project.wiki.pages.length
+      assert_equal @source_project.wiki.pages.size, @project.wiki.pages.size
 
       @project.wiki.pages.each do |wiki_page|
         assert wiki_page.content
         assert !@source_project.wiki.pages.include?(wiki_page)
       end
+      
+      parent = @project.wiki.find_page('Parent_page')
+      child1 = @project.wiki.find_page('Child_page_1')
+      child2 = @project.wiki.find_page('Child_page_2')
+      assert_equal parent, child1.parent
+      assert_equal parent, child2.parent
     end
 
     should "copy issue categories" do