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?
@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})
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