]> source.dussan.org Git - redmine.git/commitdiff
Adds a combo to select parent on wiki page rename (#5136).
authorJean-Philippe Lang <jp_lang@yahoo.fr>
Sat, 6 Nov 2010 14:30:32 +0000 (14:30 +0000)
committerJean-Philippe Lang <jp_lang@yahoo.fr>
Sat, 6 Nov 2010 14:30:32 +0000 (14:30 +0000)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@4375 e93f8b46-1217-0410-a6f0-8f06a7374b81

app/helpers/wiki_helper.rb
app/views/wiki/rename.rhtml
test/functional/wiki_controller_test.rb

index c25064616dfa0811c362ed4791cba1aa2d23553e..19e252bcb4f12eb578b3da0ec57ca0c542b81469 100644 (file)
@@ -24,7 +24,7 @@ module WikiHelper
       attrs << " selected='selected'" if selected == page
       indent = (level > 0) ? ('&nbsp;' * level * 2 + '&#187; ') : nil
       
-      s << "<option value='#{page.id}'>#{indent}#{h page.pretty_title}</option>\n" + 
+      s << "<option #{attrs}>#{indent}#{h page.pretty_title}</option>\n" + 
              wiki_page_options_for_select(pages, selected, page, level + 1)
     end
     s
index 260f9af8b748115b8f76e04fd7e158c0efc37171..f94b8bc3d665e519e584d29e2fc95708ed89da17 100644 (file)
@@ -6,7 +6,7 @@
 <div class="box">
 <p><%= f.text_field :title, :required => true, :size => 100  %></p>
 <p><%= f.check_box :redirect_existing_links %></p>
-<p><%= f.text_field :parent_title, :size => 100  %></p>
+<p><%= f.select :parent_id, "<option value=''></option>" + wiki_page_options_for_select(@wiki.pages.all(:include => :parent) - @page.self_and_descendants, @page.parent), :label => :field_parent_title %></p>
 </div>
 <%= submit_tag l(:button_rename) %>
 <% end %>
index 4273dddd0615df5f71ad513743f5f4dfaf643e9b..74e9e11b644ba0e2540c9a4e40689083ad7da748 100644 (file)
@@ -170,6 +170,38 @@ class WikiControllerTest < ActionController::TestCase
                              :child => { :tag => 'td', :attributes => {:class => 'author'}, :content => /redMine Admin/ },
                              :child => { :tag => 'td', :content => /Some updated \[\[documentation\]\] here/ }
   end
+
+  def test_get_rename
+    @request.session[:user_id] = 2
+    get :rename, :project_id => 1, :id => 'Another_page'
+    assert_response :success
+    assert_template 'rename'
+    assert_tag 'option',
+      :attributes => {:value => ''},
+      :content => '',
+      :parent => {:tag => 'select', :attributes => {:name => 'wiki_page[parent_id]'}}
+    assert_no_tag 'option',
+      :attributes => {:selected => 'selected'},
+      :parent => {:tag => 'select', :attributes => {:name => 'wiki_page[parent_id]'}}
+  end
+  
+  def test_get_rename_child_page
+    @request.session[:user_id] = 2
+    get :rename, :project_id => 1, :id => 'Child_1'
+    assert_response :success
+    assert_template 'rename'
+    assert_tag 'option',
+      :attributes => {:value => ''},
+      :content => '',
+      :parent => {:tag => 'select', :attributes => {:name => 'wiki_page[parent_id]'}}
+    assert_tag 'option',
+      :attributes => {:value => '2', :selected => 'selected'},
+      :content => /Another page/,
+      :parent => {
+        :tag => 'select',
+        :attributes => {:name => 'wiki_page[parent_id]'}
+      }
+  end
   
   def test_rename_with_redirect
     @request.session[:user_id] = 2
@@ -194,6 +226,22 @@ class WikiControllerTest < ActionController::TestCase
     assert_nil wiki.find_page('Another page')
   end
   
+  def test_rename_with_parent_assignment
+    @request.session[:user_id] = 2
+    post :rename, :project_id => 1, :id => 'Another_page',
+      :wiki_page => { :title => 'Another page', :redirect_existing_links => "0", :parent_id => '4' }
+    assert_redirected_to :action => 'show', :project_id => 'ecookbook', :id => 'Another_page'
+    assert_equal WikiPage.find(4), WikiPage.find_by_title('Another_page').parent
+  end
+
+  def test_rename_with_parent_unassignment
+    @request.session[:user_id] = 2
+    post :rename, :project_id => 1, :id => 'Child_1',
+      :wiki_page => { :title => 'Child 1', :redirect_existing_links => "0", :parent_id => '' }
+    assert_redirected_to :action => 'show', :project_id => 'ecookbook', :id => 'Child_1'
+    assert_nil WikiPage.find_by_title('Child_1').parent
+  end
+  
   def test_destroy_child
     @request.session[:user_id] = 2
     delete :destroy, :project_id => 1, :id => 'Child_1'