]> source.dussan.org Git - redmine.git/commitdiff
Optimistic locking added for wiki edits.
authorJean-Philippe Lang <jp_lang@yahoo.fr>
Sat, 26 May 2007 17:22:27 +0000 (17:22 +0000)
committerJean-Philippe Lang <jp_lang@yahoo.fr>
Sat, 26 May 2007 17:22:27 +0000 (17:22 +0000)
git-svn-id: http://redmine.rubyforge.org/svn/trunk@545 e93f8b46-1217-0410-a6f0-8f06a7374b81

app/controllers/wiki_controller.rb
app/models/wiki_content.rb
app/views/wiki/edit.rhtml

index d8f23cfd100e73bbb81f77b74ba35fa9d55cfc21..f85c719bc8b324a3e10cfafc2f09ffada3f69f9c 100644 (file)
@@ -60,14 +60,18 @@ class WikiController < ApplicationController
         redirect_to :action => 'index', :id => @project, :page => @page.title
         return
       end
-      @content.text = params[:content][:text]
-      @content.comments = params[:content][:comments]
+      #@content.text = params[:content][:text]
+      #@content.comments = params[:content][:comments]
+      @content.attributes = params[:content]
       @content.author = logged_in_user
       # if page is new @page.save will also save content, but not if page isn't a new record
       if (@page.new_record? ? @page.save : @content.save)
         redirect_to :action => 'index', :id => @project, :page => @page.title
       end
     end
+  rescue ActiveRecord::StaleObjectError
+    # Optimistic locking exception
+    flash[:notice] = l(:notice_locking_conflict)
   end
   
   # show page history
index b0382cfaf4db0d2cc4ccfa163fa0b18791bec69c..5b2e7c34e8b7d362ad962fac678a6a79273e2d52 100644 (file)
@@ -18,6 +18,7 @@
 require 'zlib'
 
 class WikiContent < ActiveRecord::Base
+  set_locking_column :version
   belongs_to :page, :class_name => 'WikiPage', :foreign_key => 'page_id'
   belongs_to :author, :class_name => 'User', :foreign_key => 'author_id'
   validates_presence_of :text
index 1c0139e73d3996c92ee35b20375a2bc8c6b265bc..43f2ba5fa7892440c0f65a79900332bda740877e 100644 (file)
@@ -5,6 +5,7 @@
 <h2><%= @page.pretty_title %></h2>
 
 <% form_for :content, @content, :url => {:action => 'edit', :page => @page.title}, :html => {:id => 'wiki_form'} do |f| %>
+<%= f.hidden_field :version %>
 <%= error_messages_for 'content' %>
 <div class="contextual">
 <%= l(:setting_text_formatting) %>: