diff --git a/app/helpers/wiki_helper.rb b/app/helpers/wiki_helper.rb
index c2506461..19e252bc 100644
--- a/app/helpers/wiki_helper.rb
+++ b/app/helpers/wiki_helper.rb
@@ -24,7 +24,7 @@ module WikiHelper
attrs << " selected='selected'" if selected == page
indent = (level > 0) ? (' ' * level * 2 + '» ') : nil
- s << "\n" +
+ s << "\n" +
wiki_page_options_for_select(pages, selected, page, level + 1)
end
s
diff --git a/app/views/wiki/rename.rhtml b/app/views/wiki/rename.rhtml
index 260f9af8..f94b8bc3 100644
--- a/app/views/wiki/rename.rhtml
+++ b/app/views/wiki/rename.rhtml
@@ -6,7 +6,7 @@
<%= f.text_field :title, :required => true, :size => 100 %>
<%= f.check_box :redirect_existing_links %>
-
<%= f.text_field :parent_title, :size => 100 %>
+
<%= f.select :parent_id, "" + wiki_page_options_for_select(@wiki.pages.all(:include => :parent) - @page.self_and_descendants, @page.parent), :label => :field_parent_title %>
<%= submit_tag l(:button_rename) %>
<% end %>
diff --git a/test/functional/wiki_controller_test.rb b/test/functional/wiki_controller_test.rb
index 4273dddd..74e9e11b 100644
--- a/test/functional/wiki_controller_test.rb
+++ b/test/functional/wiki_controller_test.rb
@@ -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'