]> source.dussan.org Git - redmine.git/commitdiff
Reinitialize an empty Wiki page after after project wiki is deleted (#34634).
authorMarius Balteanu <marius.balteanu@zitec.com>
Mon, 23 Oct 2023 17:33:40 +0000 (17:33 +0000)
committerMarius Balteanu <marius.balteanu@zitec.com>
Mon, 23 Oct 2023 17:33:40 +0000 (17:33 +0000)
git-svn-id: https://svn.redmine.org/redmine/trunk@22370 e93f8b46-1217-0410-a6f0-8f06a7374b81

app/controllers/wikis_controller.rb
app/models/enabled_module.rb
app/models/wiki.rb
test/functional/wikis_controller_test.rb
test/unit/wiki_test.rb

index 4469e3627fbbbf68c6a69c235e9532f9dc88d25c..5b753b13b15329dc7c5e072df19b1a80e2826adc 100644 (file)
@@ -24,7 +24,9 @@ class WikisController < ApplicationController
   # Delete a project's wiki
   def destroy
     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)
     end
   end
index 237563228a726513ad75f7cba10460765d035a98..1b97903fb4f1592123ac128fa30fbe8593cf824b 100644 (file)
@@ -34,7 +34,7 @@ class EnabledModule < ActiveRecord::Base
     when 'wiki'
       # Create a wiki with a default start page
       if project && project.wiki.nil?
-        Wiki.create(:project => project, :start_page => 'Wiki')
+        Wiki.create_default(project)
       end
     end
   end
index 726dcea7e68b46be07eb786e7f28d5e46e407726..0fddeb3a95dce807d893e78006e05d2524080a4c 100644 (file)
@@ -97,6 +97,10 @@ class Wiki < ActiveRecord::Base
     end
   end
 
+  def self.create_default(project)
+    create(:project => project, :start_page => 'Wiki')
+  end
+
   # turn a string into a valid page title
   def self.titleize(title)
     # replace spaces with _ and remove unwanted caracters
index 9f3f9bffbd4cab9012e3d24ca7834562237f3e46..ecad3a4a4d682a21d45cf2a799dc1510666e0d34 100644 (file)
@@ -35,13 +35,17 @@ class WikisControllerTest < Redmine::ControllerTest
     end
   end
 
-  def test_post_destroy_should_delete_wiki
+  def test_post_destroy_should_reinitialize_empty_wiki
     set_tmp_attachments_directory
     @request.session[:user_id] = 1
+    wiki = Project.find(1).wiki
     post :destroy, :params => {:id => 1, :confirm => 1}
     assert_redirected_to :controller => 'projects',
                          :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
 
   def test_not_found
index da791dff4f0828c586c8b6955f5a80155a1c1ac8..eeb6aa2bbd7f384f484053ae9024e99f14f1401f 100644 (file)
@@ -35,6 +35,12 @@ class WikiTest < ActiveSupport::TestCase
     assert wiki.save
   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
     @wiki = Wiki.find(1)
     @wiki.start_page = "Another start page"