##// END OF EJS Templates
Introduce virtual MenuNodes (#15880)....
Introduce virtual MenuNodes (#15880). They are characterized by having a blank url. they will only be rendered if the user is authorized to see at least one of its children. they render as links which do nothing when clicked. Patch by Jan Schulz-Hofen. git-svn-id: http://svn.redmine.org/redmine/trunk@15501 e93f8b46-1217-0410-a6f0-8f06a7374b81

File last commit:

r14856:cda9c63d9c21
r15119:53710d80fc88
Show More
wiki_content.rb
170 lines | 5.7 KiB | text/x-ruby | RubyLexer
Toshi MARUYAMA
fix typo "RedMine" at app/models/wiki_content.rb...
r9182 # Redmine - project management software
Jean-Philippe Lang
Updates copyright for 2016....
r14856 # Copyright (C) 2006-2016 Jean-Philippe Lang
Jean-Philippe Lang
wiki branch merged into trunk...
r320 #
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
Toshi MARUYAMA
remove trailing white-spaces from WikiContent model source....
r5675 #
Jean-Philippe Lang
wiki branch merged into trunk...
r320 # This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
Toshi MARUYAMA
remove trailing white-spaces from WikiContent model source....
r5675 #
Jean-Philippe Lang
wiki branch merged into trunk...
r320 # You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
require 'zlib'
class WikiContent < ActiveRecord::Base
Jean-Philippe Lang
set_table_name and set_locking_column are deprecated....
r9367 self.locking_column = 'version'
Jean-Philippe Lang
Removed unneeded :foreign_key option on belongs_to associations....
r13102 belongs_to :page, :class_name => 'WikiPage'
belongs_to :author, :class_name => 'User'
Jean-Philippe Lang
wiki branch merged into trunk...
r320 validates_presence_of :text
Jean-Philippe Lang
Raises wiki edits comments limit to 1024 (#19886)....
r14240 validates_length_of :comments, :maximum => 1024, :allow_nil => true
Jean-Philippe Lang
Merged rails-4.1 branch (#14534)....
r13100 attr_protected :id
Toshi MARUYAMA
remove trailing white-spaces from WikiContent model source....
r5675
Jean-Philippe Lang
wiki branch merged into trunk...
r320 acts_as_versioned
Toshi MARUYAMA
remove trailing white-spaces from WikiContent model source....
r5675
Jean-Philippe Lang
Use AR callbacks instead of observers (removed in Rails4) for notifications....
r11791 after_save :send_notification
Jean-Philippe Lang
Replaces a piggy back query with an association for loading wiki pages updates....
r14243 scope :without_text, lambda {select(:id, :page_id, :version, :updated_on)}
Jean-Philippe Lang
Make sure users don't get notified for thing they can not view (#3589)....
r3055 def visible?(user=User.current)
page.visible?(user)
end
Toshi MARUYAMA
remove trailing white-spaces from WikiContent model source....
r5675
Jean-Philippe Lang
Adds email notification on wiki changes (#413). It's disabled by default and can be enabled in application settings....
r2650 def project
page.project
end
Toshi MARUYAMA
remove trailing white-spaces from WikiContent model source....
r5675
Jean-Philippe Lang
Makes the wiki sidebar editable (#5208)....
r3518 def attachments
page.nil? ? [] : page.attachments
end
Toshi MARUYAMA
remove trailing white-spaces from WikiContent model source....
r5675
Jean-Philippe Lang
Add support for multiple email addresses per user (#4244)....
r13504 def notified_users
project.notified_users.reject {|user| !visible?(user)}
end
Toshi MARUYAMA
fix typos of source comments at WikiContent model...
r12783 # Returns the mail addresses of users that should be notified
Jean-Philippe Lang
Make sure users don't get notified for thing they can not view (#3589)....
r3055 def recipients
Jean-Philippe Lang
Add support for multiple email addresses per user (#4244)....
r13504 notified_users.collect(&:mail)
Jean-Philippe Lang
Make sure users don't get notified for thing they can not view (#3589)....
r3055 end
Toshi MARUYAMA
remove trailing white-spaces from WikiContent model source....
r5675
Jean-Philippe Lang
Adds #current_version? method to wiki content....
r7852 # Return true if the content is the current page content
def current_version?
true
end
Jean-Philippe Lang
wiki branch merged into trunk...
r320 class Version
Jean-Philippe Lang
Removed unneeded :foreign_key option on belongs_to associations....
r13102 belongs_to :page, :class_name => '::WikiPage'
belongs_to :author, :class_name => '::User'
Jean-Philippe Lang
wiki branch merged into trunk...
r320 attr_protected :data
Jean-Philippe Lang
Merged 0.6 branch into trunk....
r663
acts_as_event :title => Proc.new {|o| "#{l(:label_wiki_edit)}: #{o.page.title} (##{o.version})"},
:description => :comments,
:datetime => :updated_on,
Jean-Philippe Lang
Add an icon to each event on the activity view....
r1327 :type => 'wiki-page',
Jean-Philippe Lang
Group events in the activity view (#12542)....
r10724 :group => :page,
Eric Davis
Refactor: use :id instead of :page when linking to Wiki Pages...
r4182 :url => Proc.new {|o| {:controller => 'wiki', :action => 'show', :project_id => o.page.wiki.project, :id => o.page.title, :version => o.version}}
Jean-Philippe Lang
Merged 0.6 branch into trunk....
r663
Jean-Philippe Lang
Adds a permission 'view wiki edits' so that wiki history can be hidden to certain users (#1154)....
r1813 acts_as_activity_provider :type => 'wiki_edits',
Jean-Philippe Lang
Activity refactoring....
r1692 :timestamp => "#{WikiContent.versioned_table_name}.updated_on",
Jean-Philippe Lang
Display latest user's activity on account/show view....
r2064 :author_key => "#{WikiContent.versioned_table_name}.author_id",
Jean-Philippe Lang
Adds a permission 'view wiki edits' so that wiki history can be hidden to certain users (#1154)....
r1813 :permission => :view_wiki_edits,
Jean-Philippe Lang
Merged rails-4.1 branch (#14534)....
r13100 :scope => select("#{WikiContent.versioned_table_name}.updated_on, #{WikiContent.versioned_table_name}.comments, " +
"#{WikiContent.versioned_table_name}.#{WikiContent.version_column}, #{WikiPage.table_name}.title, " +
"#{WikiContent.versioned_table_name}.page_id, #{WikiContent.versioned_table_name}.author_id, " +
"#{WikiContent.versioned_table_name}.id").
joins("LEFT JOIN #{WikiPage.table_name} ON #{WikiPage.table_name}.id = #{WikiContent.versioned_table_name}.page_id " +
"LEFT JOIN #{Wiki.table_name} ON #{Wiki.table_name}.id = #{WikiPage.table_name}.wiki_id " +
"LEFT JOIN #{Project.table_name} ON #{Project.table_name}.id = #{Wiki.table_name}.project_id")
Jean-Philippe Lang
Activity refactoring....
r1692
Jean-Philippe Lang
Ability to delete a version from a wiki page history (#10852)....
r10493 after_destroy :page_update_after_destroy
Jean-Philippe Lang
wiki branch merged into trunk...
r320 def text=(plain)
case Setting.wiki_compression
when 'gzip'
begin
self.data = Zlib::Deflate.deflate(plain, Zlib::BEST_COMPRESSION)
self.compression = 'gzip'
rescue
self.data = plain
self.compression = ''
end
else
self.data = plain
self.compression = ''
end
plain
end
Toshi MARUYAMA
remove trailing white-spaces from WikiContent model source....
r5675
Jean-Philippe Lang
wiki branch merged into trunk...
r320 def text
Jean-Philippe Lang
WikiContent::Version#text may return ascii-8bit encoded string (#10590)....
r9195 @text ||= begin
str = case compression
when 'gzip'
Zlib::Inflate.inflate(data)
else
# uncompressed data
data
end
Jean-Philippe Lang
Merged rails-4.1 branch (#14534)....
r13100 str.force_encoding("UTF-8")
Toshi MARUYAMA
Ruby 1.9: fix encoding error on wiki diffs (#4050)...
r7807 str
Toshi MARUYAMA
remove trailing white-spaces from WikiContent model source....
r5675 end
Jean-Philippe Lang
wiki branch merged into trunk...
r320 end
Toshi MARUYAMA
remove trailing white-spaces from WikiContent model source....
r5675
Jean-Philippe Lang
Activity enhancements:...
r1213 def project
page.project
end
Toshi MARUYAMA
remove trailing white-spaces from WikiContent model source....
r5675
Jean-Philippe Lang
Adds #current_version? method to wiki content....
r7852 # Return true if the content is the current page content
def current_version?
page.content.version == self.version
end
Jean-Philippe Lang
Added wiki annotate view. It's accessible for each version from the page history view. ...
r1007 # Returns the previous version or nil
def previous
Jean-Philippe Lang
Handle deleted wiki page versions (#10852)....
r10473 @previous ||= WikiContent::Version.
reorder('version DESC').
includes(:author).
where("wiki_content_id = ? AND version < ?", wiki_content_id, version).first
end
# Returns the next version or nil
def next
@next ||= WikiContent::Version.
reorder('version ASC').
includes(:author).
where("wiki_content_id = ? AND version > ?", wiki_content_id, version).first
Jean-Philippe Lang
Added wiki annotate view. It's accessible for each version from the page history view. ...
r1007 end
Jean-Philippe Lang
Ability to delete a version from a wiki page history (#10852)....
r10493
private
# Updates page's content if the latest version is removed
# or destroys the page if it was the only version
def page_update_after_destroy
latest = page.content.versions.reorder("#{self.class.table_name}.version DESC").first
if latest && page.content.version != latest.version
raise ActiveRecord::Rollback unless page.content.revert_to!(latest)
elsif latest.nil?
raise ActiveRecord::Rollback unless page.destroy
end
end
Jean-Philippe Lang
wiki branch merged into trunk...
r320 end
Jean-Philippe Lang
Use AR callbacks instead of observers (removed in Rails4) for notifications....
r11791
private
def send_notification
# new_record? returns false in after_save callbacks
if id_changed?
if Setting.notified_events.include?('wiki_content_added')
Mailer.wiki_content_added(self).deliver
end
elsif text_changed?
if Setting.notified_events.include?('wiki_content_updated')
Mailer.wiki_content_updated(self).deliver
end
end
end
Jean-Philippe Lang
wiki branch merged into trunk...
r320 end