]> source.dussan.org Git - redmine.git/commitdiff
Code cleanup.
authorJean-Philippe Lang <jp_lang@yahoo.fr>
Sun, 18 Nov 2012 16:01:07 +0000 (16:01 +0000)
committerJean-Philippe Lang <jp_lang@yahoo.fr>
Sun, 18 Nov 2012 16:01:07 +0000 (16:01 +0000)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10842 e93f8b46-1217-0410-a6f0-8f06a7374b81

app/controllers/wiki_controller.rb
app/models/wiki_page.rb

index 24fae9340b1db80d1289f8115adb2a6a625453b8..5d8d326bac6f7c41ef8bf6cefa85a04ce2d74dbc 100644 (file)
@@ -141,15 +141,6 @@ class WikiController < ApplicationController
     end
     content_params ||= {}
 
-    if !@page.new_record? && content_params.present? && @content.text == content_params[:text]
-      attachments = Attachment.attach_files(@page, params[:attachments])
-      render_attachment_warning_if_needed(@page)
-      # don't save content if text wasn't changed
-      @page.save
-      redirect_to :action => 'show', :project_id => @project, :id => @page.title
-      return
-    end
-
     @content.comments = content_params[:comments]
     @text = content_params[:text]
     if params[:section].present? && Redmine::WikiFormatting.supports_section_edit?
@@ -161,8 +152,8 @@ class WikiController < ApplicationController
       @content.text = @text
     end
     @content.author = User.current
-    @page.content = @content
-    if @page.save
+
+    if @page.save_with_content
       attachments = Attachment.attach_files(@page, params[:attachments])
       render_attachment_warning_if_needed(@page)
       call_hook(:controller_wiki_edit_after_save, { :params => params, :page => @page})
index 17e0a4c4fc3888b2db17e153db5d279d839b0a04..c275cd83ee74fb5f61d50adb24e4e626e32b920a 100644 (file)
@@ -173,6 +173,21 @@ class WikiPage < ActiveRecord::Base
     self.parent = parent_page
   end
 
+  # Saves the page and its content if text was changed
+  def save_with_content
+    ret = nil
+    transaction do
+      if new_record?
+        # Rails automatically saves associated content
+        ret = save
+      else
+        ret = save && (content.text_changed? ? content.save : true)
+      end
+      raise ActiveRecord::Rollback unless ret
+    end
+    ret
+  end
+
   protected
 
   def validate_parent_title