diff --git a/app/controllers/wiki_controller.rb b/app/controllers/wiki_controller.rb index 1347c3dc00b..75902d542d3 100644 --- a/app/controllers/wiki_controller.rb +++ b/app/controllers/wiki_controller.rb @@ -79,7 +79,7 @@ def edit attachments = Attachment.attach_files(@page, params[:attachments]) render_attachment_warning_if_needed(@page) # don't save if text wasn't changed - redirect_to :action => 'index', :id => @project, :page => @page.title + redirect_to :action => 'index', :project_id => @project, :page => @page.title return end #@content.text = params[:content][:text] @@ -91,7 +91,7 @@ def edit attachments = Attachment.attach_files(@page, params[:attachments]) render_attachment_warning_if_needed(@page) call_hook(:controller_wiki_edit_after_save, { :params => params, :page => @page}) - redirect_to :action => 'index', :id => @project, :page => @page.title + redirect_to :action => 'index', :project_id => @project, :page => @page.title end end rescue ActiveRecord::StaleObjectError @@ -107,13 +107,13 @@ def rename @original_title = @page.pretty_title if request.post? && @page.update_attributes(params[:wiki_page]) flash[:notice] = l(:notice_successful_update) - redirect_to :action => 'index', :id => @project, :page => @page.title + redirect_to :action => 'index', :project_id => @project, :page => @page.title end end def protect @page.update_attribute :protected, params[:protected] - redirect_to :action => 'index', :id => @project, :page => @page.title + redirect_to :action => 'index', :project_id => @project, :page => @page.title end # show page history @@ -166,7 +166,7 @@ def destroy end end @page.destroy - redirect_to :action => 'page_index', :id => @project + redirect_to :action => 'page_index', :project_id => @project end # Export wiki to a single html file @@ -176,7 +176,7 @@ def export export = render_to_string :action => 'export_multiple', :layout => false send_data(export, :type => 'text/html', :filename => "wiki.html") else - redirect_to :action => 'index', :id => @project, :page => nil + redirect_to :action => 'index', :project_id => @project, :page => nil end end @@ -210,7 +210,7 @@ def add_attachment private def find_wiki - @project = Project.find(params[:id]) + @project = Project.find(params[:project_id]) @wiki = @project.wiki render_404 unless @wiki rescue ActiveRecord::RecordNotFound diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index e2255da3094..2ac301d534c 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -182,7 +182,7 @@ def render_page_hierarchy(pages, node=nil) content << "
<%=h line[2] %>
<%= submit_tag l(:button_save) %> <%= link_to_remote l(:label_preview), - { :url => { :controller => 'wiki', :action => 'preview', :id => @project, :page => @page.title }, + { :url => { :controller => 'wiki', :action => 'preview', :project_id => @project, :page => @page.title }, :method => 'post', :update => 'preview', :with => "Form.serialize('wiki_form')", diff --git a/app/views/wiki/history.rhtml b/app/views/wiki/history.rhtml index e3c4ecc6b87..3f07d55e6ff 100644 --- a/app/views/wiki/history.rhtml +++ b/app/views/wiki/history.rhtml @@ -3,6 +3,7 @@
# | diff --git a/config/routes.rb b/config/routes.rb index 7bfb5b62196..764d540c800 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -29,18 +29,18 @@ map.connect 'projects/:id/wiki/destroy', :controller => 'wikis', :action => 'destroy', :conditions => {:method => :post} map.with_options :controller => 'wiki' do |wiki_routes| wiki_routes.with_options :conditions => {:method => :get} do |wiki_views| - wiki_views.connect 'projects/:id/wiki/export', :action => 'export' - wiki_views.connect 'projects/:id/wiki/page_index', :action => 'page_index' - wiki_views.connect 'projects/:id/wiki/date_index', :action => 'date_index' - wiki_views.connect 'projects/:id/wiki/:page', :action => 'index', :page => nil - wiki_views.connect 'projects/:id/wiki/:page/edit', :action => 'edit' - wiki_views.connect 'projects/:id/wiki/:page/rename', :action => 'rename' - wiki_views.connect 'projects/:id/wiki/:page/history', :action => 'history' - wiki_views.connect 'projects/:id/wiki/:page/diff/:version/vs/:version_from', :action => 'diff' - wiki_views.connect 'projects/:id/wiki/:page/annotate/:version', :action => 'annotate' + wiki_views.connect 'projects/:project_id/wiki/export', :action => 'export' + wiki_views.connect 'projects/:project_id/wiki/page_index', :action => 'page_index' + wiki_views.connect 'projects/:project_id/wiki/date_index', :action => 'date_index' + wiki_views.connect 'projects/:project_id/wiki/:page', :action => 'index', :page => nil + wiki_views.connect 'projects/:project_id/wiki/:page/edit', :action => 'edit' + wiki_views.connect 'projects/:project_id/wiki/:page/rename', :action => 'rename' + wiki_views.connect 'projects/:project_id/wiki/:page/history', :action => 'history' + wiki_views.connect 'projects/:project_id/wiki/:page/diff/:version/vs/:version_from', :action => 'diff' + wiki_views.connect 'projects/:project_id/wiki/:page/annotate/:version', :action => 'annotate' end - wiki_routes.connect 'projects/:id/wiki/:page/:action', + wiki_routes.connect 'projects/:project_id/wiki/:page/:action', :action => /edit|rename|destroy|preview|protect/, :conditions => {:method => :post} end diff --git a/lib/redmine.rb b/lib/redmine.rb index 51c865452cf..7fe09082667 100644 --- a/lib/redmine.rb +++ b/lib/redmine.rb @@ -195,7 +195,7 @@ menu.push :calendar, { :controller => 'calendars', :action => 'show' }, :param => :project_id, :caption => :label_calendar menu.push :news, { :controller => 'news', :action => 'index' }, :param => :project_id, :caption => :label_news_plural menu.push :documents, { :controller => 'documents', :action => 'index' }, :param => :project_id, :caption => :label_document_plural - menu.push :wiki, { :controller => 'wiki', :action => 'index', :page => nil }, + menu.push :wiki, { :controller => 'wiki', :action => 'index', :page => nil }, :param => :project_id, :if => Proc.new { |p| p.wiki && !p.wiki.new_record? } menu.push :boards, { :controller => 'boards', :action => 'index', :id => nil }, :param => :project_id, :if => Proc.new { |p| p.boards.any? }, :caption => :label_board_plural diff --git a/test/functional/wiki_controller_test.rb b/test/functional/wiki_controller_test.rb index 7aea1b4caf6..4eb33ca371e 100644 --- a/test/functional/wiki_controller_test.rb +++ b/test/functional/wiki_controller_test.rb @@ -32,7 +32,7 @@ def setup end def test_show_start_page - get :index, :id => 'ecookbook' + get :index, :project_id => 'ecookbook' assert_response :success assert_template 'show' assert_tag :tag => 'h1', :content => /CookBook documentation/ @@ -45,7 +45,7 @@ def test_show_start_page end def test_show_page_with_name - get :index, :id => 1, :page => 'Another_page' + get :index, :project_id => 1, :page => 'Another_page' assert_response :success assert_template 'show' assert_tag :tag => 'h1', :content => /Another page/ @@ -60,32 +60,32 @@ def test_show_with_sidebar page.content = WikiContent.new(:text => 'Side bar content for test_show_with_sidebar') page.save! - get :index, :id => 1, :page => 'Another_page' + get :index, :project_id => 1, :page => 'Another_page' assert_response :success assert_tag :tag => 'div', :attributes => {:id => 'sidebar'}, :content => /Side bar content for test_show_with_sidebar/ end def test_show_unexistent_page_without_edit_right - get :index, :id => 1, :page => 'Unexistent page' + get :index, :project_id => 1, :page => 'Unexistent page' assert_response 404 end def test_show_unexistent_page_with_edit_right @request.session[:user_id] = 2 - get :index, :id => 1, :page => 'Unexistent page' + get :index, :project_id => 1, :page => 'Unexistent page' assert_response :success assert_template 'edit' end def test_create_page @request.session[:user_id] = 2 - post :edit, :id => 1, + post :edit, :project_id => 1, :page => 'New page', :content => {:comments => 'Created the page', :text => "h1. New page\n\nThis is a new page", :version => 0} - assert_redirected_to :action => 'index', :id => 'ecookbook', :page => 'New_page' + assert_redirected_to :action => 'index', :project_id => 'ecookbook', :page => 'New_page' page = Project.find(1).wiki.find_page('New page') assert !page.new_record? assert_not_nil page.content @@ -96,7 +96,7 @@ def test_create_page_with_attachments @request.session[:user_id] = 2 assert_difference 'WikiPage.count' do assert_difference 'Attachment.count' do - post :edit, :id => 1, + post :edit, :project_id => 1, :page => 'New page', :content => {:comments => 'Created the page', :text => "h1. New page\n\nThis is a new page", @@ -111,7 +111,7 @@ def test_create_page_with_attachments def test_preview @request.session[:user_id] = 2 - xhr :post, :preview, :id => 1, :page => 'CookBook_documentation', + xhr :post, :preview, :project_id => 1, :page => 'CookBook_documentation', :content => { :comments => '', :text => 'this is a *previewed text*', :version => 3 } @@ -122,7 +122,7 @@ def test_preview def test_preview_new_page @request.session[:user_id] = 2 - xhr :post, :preview, :id => 1, :page => 'New page', + xhr :post, :preview, :project_id => 1, :page => 'New page', :content => { :text => 'h1. New page', :comments => '', :version => 0 } @@ -132,7 +132,7 @@ def test_preview_new_page end def test_history - get :history, :id => 1, :page => 'CookBook_documentation' + get :history, :project_id => 1, :page => 'CookBook_documentation' assert_response :success assert_template 'history' assert_not_nil assigns(:versions) @@ -141,7 +141,7 @@ def test_history end def test_history_with_one_version - get :history, :id => 1, :page => 'Another_page' + get :history, :project_id => 1, :page => 'Another_page' assert_response :success assert_template 'history' assert_not_nil assigns(:versions) @@ -150,7 +150,7 @@ def test_history_with_one_version end def test_diff - get :diff, :id => 1, :page => 'CookBook_documentation', :version => 2, :version_from => 1 + get :diff, :project_id => 1, :page => 'CookBook_documentation', :version => 2, :version_from => 1 assert_response :success assert_template 'diff' assert_tag :tag => 'span', :attributes => { :class => 'diff_in'}, @@ -158,7 +158,7 @@ def test_diff end def test_annotate - get :annotate, :id => 1, :page => 'CookBook_documentation', :version => 2 + get :annotate, :project_id => 1, :page => 'CookBook_documentation', :version => 2 assert_response :success assert_template 'annotate' # Line 1 @@ -173,10 +173,10 @@ def test_annotate def test_rename_with_redirect @request.session[:user_id] = 2 - post :rename, :id => 1, :page => 'Another_page', + post :rename, :project_id => 1, :page => 'Another_page', :wiki_page => { :title => 'Another renamed page', :redirect_existing_links => 1 } - assert_redirected_to :action => 'index', :id => 'ecookbook', :page => 'Another_renamed_page' + assert_redirected_to :action => 'index', :project_id => 'ecookbook', :page => 'Another_renamed_page' wiki = Project.find(1).wiki # Check redirects assert_not_nil wiki.find_page('Another page') @@ -185,10 +185,10 @@ def test_rename_with_redirect def test_rename_without_redirect @request.session[:user_id] = 2 - post :rename, :id => 1, :page => 'Another_page', + post :rename, :project_id => 1, :page => 'Another_page', :wiki_page => { :title => 'Another renamed page', :redirect_existing_links => "0" } - assert_redirected_to :action => 'index', :id => 'ecookbook', :page => 'Another_renamed_page' + assert_redirected_to :action => 'index', :project_id => 'ecookbook', :page => 'Another_renamed_page' wiki = Project.find(1).wiki # Check that there's no redirects assert_nil wiki.find_page('Another page') @@ -196,14 +196,14 @@ def test_rename_without_redirect def test_destroy_child @request.session[:user_id] = 2 - post :destroy, :id => 1, :page => 'Child_1' - assert_redirected_to :action => 'page_index', :id => 'ecookbook' + post :destroy, :project_id => 1, :page => 'Child_1' + assert_redirected_to :action => 'page_index', :project_id => 'ecookbook' end def test_destroy_parent @request.session[:user_id] = 2 assert_no_difference('WikiPage.count') do - post :destroy, :id => 1, :page => 'Another_page' + post :destroy, :project_id => 1, :page => 'Another_page' end assert_response :success assert_template 'destroy' @@ -212,18 +212,18 @@ def test_destroy_parent def test_destroy_parent_with_nullify @request.session[:user_id] = 2 assert_difference('WikiPage.count', -1) do - post :destroy, :id => 1, :page => 'Another_page', :todo => 'nullify' + post :destroy, :project_id => 1, :page => 'Another_page', :todo => 'nullify' end - assert_redirected_to :action => 'page_index', :id => 'ecookbook' + assert_redirected_to :action => 'page_index', :project_id => 'ecookbook' assert_nil WikiPage.find_by_id(2) end def test_destroy_parent_with_cascade @request.session[:user_id] = 2 assert_difference('WikiPage.count', -3) do - post :destroy, :id => 1, :page => 'Another_page', :todo => 'destroy' + post :destroy, :project_id => 1, :page => 'Another_page', :todo => 'destroy' end - assert_redirected_to :action => 'page_index', :id => 'ecookbook' + assert_redirected_to :action => 'page_index', :project_id => 'ecookbook' assert_nil WikiPage.find_by_id(2) assert_nil WikiPage.find_by_id(5) end @@ -231,15 +231,15 @@ def test_destroy_parent_with_cascade def test_destroy_parent_with_reassign @request.session[:user_id] = 2 assert_difference('WikiPage.count', -1) do - post :destroy, :id => 1, :page => 'Another_page', :todo => 'reassign', :reassign_to_id => 1 + post :destroy, :project_id => 1, :page => 'Another_page', :todo => 'reassign', :reassign_to_id => 1 end - assert_redirected_to :action => 'page_index', :id => 'ecookbook' + assert_redirected_to :action => 'page_index', :project_id => 'ecookbook' assert_nil WikiPage.find_by_id(2) assert_equal WikiPage.find(1), WikiPage.find_by_id(5).parent end def test_page_index - get :page_index, :id => 'ecookbook' + get :page_index, :project_id => 'ecookbook' assert_response :success assert_template 'page_index' pages = assigns(:pages) @@ -261,7 +261,7 @@ def test_page_index context "with an authorized user to export the wiki" do setup do @request.session[:user_id] = 2 - get :export, :id => 'ecookbook' + get :export, :project_id => 'ecookbook' end should_respond_with :success @@ -277,17 +277,17 @@ def test_page_index context "with an unauthorized user" do setup do - get :export, :id => 'ecookbook' + get :export, :project_id => 'ecookbook' should_respond_with :redirect - should_redirect_to('wiki index') { {:action => 'index', :id => @project, :page => nil} } + should_redirect_to('wiki index') { {:action => 'index', :project_id => @project, :page => nil} } end end end context "GET :date_index" do setup do - get :date_index, :id => 'ecookbook' + get :date_index, :project_id => 'ecookbook' end should_respond_with :success @@ -298,7 +298,7 @@ def test_page_index end def test_not_found - get :index, :id => 999 + get :index, :project_id => 999 assert_response 404 end @@ -306,8 +306,8 @@ def test_protect_page page = WikiPage.find_by_wiki_id_and_title(1, 'Another_page') assert !page.protected? @request.session[:user_id] = 2 - post :protect, :id => 1, :page => page.title, :protected => '1' - assert_redirected_to :action => 'index', :id => 'ecookbook', :page => 'Another_page' + post :protect, :project_id => 1, :page => page.title, :protected => '1' + assert_redirected_to :action => 'index', :project_id => 'ecookbook', :page => 'Another_page' assert page.reload.protected? end @@ -315,14 +315,14 @@ def test_unprotect_page page = WikiPage.find_by_wiki_id_and_title(1, 'CookBook_documentation') assert page.protected? @request.session[:user_id] = 2 - post :protect, :id => 1, :page => page.title, :protected => '0' - assert_redirected_to :action => 'index', :id => 'ecookbook', :page => 'CookBook_documentation' + post :protect, :project_id => 1, :page => page.title, :protected => '0' + assert_redirected_to :action => 'index', :project_id => 'ecookbook', :page => 'CookBook_documentation' assert !page.reload.protected? end def test_show_page_with_edit_link @request.session[:user_id] = 2 - get :index, :id => 1 + get :index, :project_id => 1 assert_response :success assert_template 'show' assert_tag :tag => 'a', :attributes => { :href => '/projects/1/wiki/CookBook_documentation/edit' } @@ -330,7 +330,7 @@ def test_show_page_with_edit_link def test_show_page_without_edit_link @request.session[:user_id] = 4 - get :index, :id => 1 + get :index, :project_id => 1 assert_response :success assert_template 'show' assert_no_tag :tag => 'a', :attributes => { :href => '/projects/1/wiki/CookBook_documentation/edit' } @@ -339,7 +339,7 @@ def test_show_page_without_edit_link def test_edit_unprotected_page # Non members can edit unprotected wiki pages @request.session[:user_id] = 4 - get :edit, :id => 1, :page => 'Another_page' + get :edit, :project_id => 1, :page => 'Another_page' assert_response :success assert_template 'edit' end @@ -347,19 +347,19 @@ def test_edit_unprotected_page def test_edit_protected_page_by_nonmember # Non members can't edit protected wiki pages @request.session[:user_id] = 4 - get :edit, :id => 1, :page => 'CookBook_documentation' + get :edit, :project_id => 1, :page => 'CookBook_documentation' assert_response 403 end def test_edit_protected_page_by_member @request.session[:user_id] = 2 - get :edit, :id => 1, :page => 'CookBook_documentation' + get :edit, :project_id => 1, :page => 'CookBook_documentation' assert_response :success assert_template 'edit' end def test_history_of_non_existing_page_should_return_404 - get :history, :id => 1, :page => 'Unknown_page' + get :history, :project_id => 1, :page => 'Unknown_page' assert_response 404 end end diff --git a/test/integration/routing_test.rb b/test/integration/routing_test.rb index ccb15bd5351..00ab7b38f7e 100644 --- a/test/integration/routing_test.rb +++ b/test/integration/routing_test.rb @@ -311,22 +311,22 @@ class RoutingTest < ActionController::IntegrationTest end context "wiki (singular, project's pages)" do - should_route :get, "/projects/567/wiki", :controller => 'wiki', :action => 'index', :id => '567' - should_route :get, "/projects/567/wiki/lalala", :controller => 'wiki', :action => 'index', :id => '567', :page => 'lalala' - should_route :get, "/projects/567/wiki/my_page/edit", :controller => 'wiki', :action => 'edit', :id => '567', :page => 'my_page' - should_route :get, "/projects/1/wiki/CookBook_documentation/history", :controller => 'wiki', :action => 'history', :id => '1', :page => 'CookBook_documentation' - should_route :get, "/projects/1/wiki/CookBook_documentation/diff/2/vs/1", :controller => 'wiki', :action => 'diff', :id => '1', :page => 'CookBook_documentation', :version => '2', :version_from => '1' - should_route :get, "/projects/1/wiki/CookBook_documentation/annotate/2", :controller => 'wiki', :action => 'annotate', :id => '1', :page => 'CookBook_documentation', :version => '2' - should_route :get, "/projects/22/wiki/ladida/rename", :controller => 'wiki', :action => 'rename', :id => '22', :page => 'ladida' - should_route :get, "/projects/567/wiki/page_index", :controller => 'wiki', :action => 'page_index', :id => '567' - should_route :get, "/projects/567/wiki/date_index", :controller => 'wiki', :action => 'date_index', :id => '567' - should_route :get, "/projects/567/wiki/export", :controller => 'wiki', :action => 'export', :id => '567' + should_route :get, "/projects/567/wiki", :controller => 'wiki', :action => 'index', :project_id => '567' + should_route :get, "/projects/567/wiki/lalala", :controller => 'wiki', :action => 'index', :project_id => '567', :page => 'lalala' + should_route :get, "/projects/567/wiki/my_page/edit", :controller => 'wiki', :action => 'edit', :project_id => '567', :page => 'my_page' + should_route :get, "/projects/1/wiki/CookBook_documentation/history", :controller => 'wiki', :action => 'history', :project_id => '1', :page => 'CookBook_documentation' + should_route :get, "/projects/1/wiki/CookBook_documentation/diff/2/vs/1", :controller => 'wiki', :action => 'diff', :project_id => '1', :page => 'CookBook_documentation', :version => '2', :version_from => '1' + should_route :get, "/projects/1/wiki/CookBook_documentation/annotate/2", :controller => 'wiki', :action => 'annotate', :project_id => '1', :page => 'CookBook_documentation', :version => '2' + should_route :get, "/projects/22/wiki/ladida/rename", :controller => 'wiki', :action => 'rename', :project_id => '22', :page => 'ladida' + should_route :get, "/projects/567/wiki/page_index", :controller => 'wiki', :action => 'page_index', :project_id => '567' + should_route :get, "/projects/567/wiki/date_index", :controller => 'wiki', :action => 'date_index', :project_id => '567' + should_route :get, "/projects/567/wiki/export", :controller => 'wiki', :action => 'export', :project_id => '567' - should_route :post, "/projects/567/wiki/my_page/edit", :controller => 'wiki', :action => 'edit', :id => '567', :page => 'my_page' - should_route :post, "/projects/567/wiki/CookBook_documentation/preview", :controller => 'wiki', :action => 'preview', :id => '567', :page => 'CookBook_documentation' - should_route :post, "/projects/22/wiki/ladida/rename", :controller => 'wiki', :action => 'rename', :id => '22', :page => 'ladida' - should_route :post, "/projects/22/wiki/ladida/destroy", :controller => 'wiki', :action => 'destroy', :id => '22', :page => 'ladida' - should_route :post, "/projects/22/wiki/ladida/protect", :controller => 'wiki', :action => 'protect', :id => '22', :page => 'ladida' + should_route :post, "/projects/567/wiki/my_page/edit", :controller => 'wiki', :action => 'edit', :project_id => '567', :page => 'my_page' + should_route :post, "/projects/567/wiki/CookBook_documentation/preview", :controller => 'wiki', :action => 'preview', :project_id => '567', :page => 'CookBook_documentation' + should_route :post, "/projects/22/wiki/ladida/rename", :controller => 'wiki', :action => 'rename', :project_id => '22', :page => 'ladida' + should_route :post, "/projects/22/wiki/ladida/destroy", :controller => 'wiki', :action => 'destroy', :project_id => '22', :page => 'ladida' + should_route :post, "/projects/22/wiki/ladida/protect", :controller => 'wiki', :action => 'protect', :project_id => '22', :page => 'ladida' end context "wikis (plural, admin setup)" do
---|