Reinitialize an empty Wiki page after after project wiki is deleted (#34634).

git-svn-id: https://svn.redmine.org/redmine/trunk@22370 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
Marius Balteanu
2023-10-23 17:33:40 +00:00
parent 94da4a33f5
commit f1437b7ec5
5 changed files with 20 additions and 4 deletions

View File

@@ -24,7 +24,9 @@ class WikisController < ApplicationController
# Delete a project's wiki # Delete a project's wiki
def destroy def destroy
if request.post? && params[:confirm] && @project.wiki if request.post? && params[:confirm] && @project.wiki
@project.wiki.destroy if @project.wiki.destroy
Wiki.create_default(@project) unless @wiki
end
redirect_to project_path(@project) redirect_to project_path(@project)
end end
end end

View File

@@ -34,7 +34,7 @@ class EnabledModule < ActiveRecord::Base
when 'wiki' when 'wiki'
# Create a wiki with a default start page # Create a wiki with a default start page
if project && project.wiki.nil? if project && project.wiki.nil?
Wiki.create(:project => project, :start_page => 'Wiki') Wiki.create_default(project)
end end
end end
end end

View File

@@ -97,6 +97,10 @@ class Wiki < ActiveRecord::Base
end end
end end
def self.create_default(project)
create(:project => project, :start_page => 'Wiki')
end
# turn a string into a valid page title # turn a string into a valid page title
def self.titleize(title) def self.titleize(title)
# replace spaces with _ and remove unwanted caracters # replace spaces with _ and remove unwanted caracters

View File

@@ -35,13 +35,17 @@ class WikisControllerTest < Redmine::ControllerTest
end end
end end
def test_post_destroy_should_delete_wiki def test_post_destroy_should_reinitialize_empty_wiki
set_tmp_attachments_directory set_tmp_attachments_directory
@request.session[:user_id] = 1 @request.session[:user_id] = 1
wiki = Project.find(1).wiki
post :destroy, :params => {:id => 1, :confirm => 1} post :destroy, :params => {:id => 1, :confirm => 1}
assert_redirected_to :controller => 'projects', assert_redirected_to :controller => 'projects',
:action => 'show', :id => 'ecookbook' :action => 'show', :id => 'ecookbook'
assert_nil Project.find(1).wiki
new_wiki = Project.find(1).wiki
assert_not_equal wiki, new_wiki
assert_equal "Wiki", new_wiki.start_page
end end
def test_not_found def test_not_found

View File

@@ -35,6 +35,12 @@ class WikiTest < ActiveSupport::TestCase
assert wiki.save assert wiki.save
end end
def test_create_default
wiki = Wiki.create_default(Project.find(1))
assert wiki.save
assert_equal "Wiki", wiki.start_page
end
def test_update def test_update
@wiki = Wiki.find(1) @wiki = Wiki.find(1)
@wiki.start_page = "Another start page" @wiki.start_page = "Another start page"