Create a redirect when editing the title of a page.
This commit is contained in:
parent
434fc4b2ff
commit
55729e20f9
6 changed files with 36 additions and 10 deletions
|
|
@ -18,20 +18,43 @@ class Page < ActiveRecord::Base
|
|||
belongs_to :user, :foreign_key => 'updated_by'
|
||||
|
||||
acts_as_versioned :version_column => :lock_version
|
||||
self.non_versioned_columns += ['permalink', 'created_at']
|
||||
self.non_versioned_columns += ['permalink', 'created_at', 'title']
|
||||
|
||||
attr_accessor :old_title # Save title to create redirect page when editing title
|
||||
|
||||
validates_presence_of :title, :body
|
||||
validates_uniqueness_of :permalink
|
||||
validates_uniqueness_of :permalink, :title
|
||||
|
||||
before_validation_on_create :set_permalink
|
||||
before_validation_on_update :update_permalink
|
||||
after_update :create_redirect
|
||||
|
||||
def self.permalink(title)
|
||||
Wikitext::Parser.new.parse "[[#{title}]]"
|
||||
title.gsub(" ", "_")
|
||||
end
|
||||
|
||||
def set_permalink
|
||||
unless self.permalink.blank?
|
||||
unless title.blank?
|
||||
self.permalink = Page.count == 0 ? "Home" : Page.permalink(title)
|
||||
end
|
||||
end
|
||||
|
||||
protected
|
||||
|
||||
def update_permalink
|
||||
if changed.include?("title")
|
||||
set_permalink
|
||||
self.old_title = changes["title"].first # Save title for creating redirect
|
||||
end
|
||||
end
|
||||
|
||||
def create_redirect
|
||||
unless old_title.blank?
|
||||
Page.create :redirect => id,
|
||||
:title => old_title,
|
||||
:body => "Weiterleitung auf [[#{title}]]..",
|
||||
:permalink => Page.permalink(old_title),
|
||||
:updated_by => updated_by
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue