comparison app/models/.svn/text-base/wiki_content.rb.svn-base @ 441:cbce1fd3b1b7 redmine-1.2

Update to Redmine 1.2-stable branch (Redmine SVN rev 6000)
author Chris Cannam
date Mon, 06 Jun 2011 14:24:13 +0100
parents 94944d00e43c
children
comparison
equal deleted inserted replaced
245:051f544170fe 441:cbce1fd3b1b7
1 # redMine - project management software 1 # RedMine - project management software
2 # Copyright (C) 2006-2007 Jean-Philippe Lang 2 # Copyright (C) 2006-2011 Jean-Philippe Lang
3 # 3 #
4 # This program is free software; you can redistribute it and/or 4 # This program is free software; you can redistribute it and/or
5 # modify it under the terms of the GNU General Public License 5 # modify it under the terms of the GNU General Public License
6 # as published by the Free Software Foundation; either version 2 6 # as published by the Free Software Foundation; either version 2
7 # of the License, or (at your option) any later version. 7 # of the License, or (at your option) any later version.
8 # 8 #
9 # This program is distributed in the hope that it will be useful, 9 # This program is distributed in the hope that it will be useful,
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of 10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 # GNU General Public License for more details. 12 # GNU General Public License for more details.
13 # 13 #
14 # You should have received a copy of the GNU General Public License 14 # You should have received a copy of the GNU General Public License
15 # along with this program; if not, write to the Free Software 15 # along with this program; if not, write to the Free Software
16 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 16 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
17 17
18 require 'zlib' 18 require 'zlib'
21 set_locking_column :version 21 set_locking_column :version
22 belongs_to :page, :class_name => 'WikiPage', :foreign_key => 'page_id' 22 belongs_to :page, :class_name => 'WikiPage', :foreign_key => 'page_id'
23 belongs_to :author, :class_name => 'User', :foreign_key => 'author_id' 23 belongs_to :author, :class_name => 'User', :foreign_key => 'author_id'
24 validates_presence_of :text 24 validates_presence_of :text
25 validates_length_of :comments, :maximum => 255, :allow_nil => true 25 validates_length_of :comments, :maximum => 255, :allow_nil => true
26 26
27 acts_as_versioned 27 acts_as_versioned
28 28
29 def visible?(user=User.current) 29 def visible?(user=User.current)
30 page.visible?(user) 30 page.visible?(user)
31 end 31 end
32 32
33 def project 33 def project
34 page.project 34 page.project
35 end 35 end
36 36
37 def attachments 37 def attachments
38 page.nil? ? [] : page.attachments 38 page.nil? ? [] : page.attachments
39 end 39 end
40 40
41 # Returns the mail adresses of users that should be notified 41 # Returns the mail adresses of users that should be notified
42 def recipients 42 def recipients
43 notified = project.notified_users 43 notified = project.notified_users
44 notified.reject! {|user| !visible?(user)} 44 notified.reject! {|user| !visible?(user)}
45 notified.collect(&:mail) 45 notified.collect(&:mail)
46 end 46 end
47 47
48 class Version 48 class Version
49 belongs_to :page, :class_name => '::WikiPage', :foreign_key => 'page_id' 49 belongs_to :page, :class_name => '::WikiPage', :foreign_key => 'page_id'
50 belongs_to :author, :class_name => '::User', :foreign_key => 'author_id' 50 belongs_to :author, :class_name => '::User', :foreign_key => 'author_id'
51 attr_protected :data 51 attr_protected :data
52 52
82 self.data = plain 82 self.data = plain
83 self.compression = '' 83 self.compression = ''
84 end 84 end
85 plain 85 plain
86 end 86 end
87 87
88 def text 88 def text
89 @text ||= case compression 89 @text ||= case compression
90 when 'gzip' 90 when 'gzip'
91 Zlib::Inflate.inflate(data) 91 Zlib::Inflate.inflate(data)
92 else 92 else
93 # uncompressed data 93 # uncompressed data
94 data 94 data
95 end 95 end
96 end 96 end
97 97
98 def project 98 def project
99 page.project 99 page.project
100 end 100 end
101 101
102 # Returns the previous version or nil 102 # Returns the previous version or nil
103 def previous 103 def previous
104 @previous ||= WikiContent::Version.find(:first, 104 @previous ||= WikiContent::Version.find(:first,
105 :order => 'version DESC', 105 :order => 'version DESC',
106 :include => :author, 106 :include => :author,
107 :conditions => ["wiki_content_id = ? AND version < ?", wiki_content_id, version]) 107 :conditions => ["wiki_content_id = ? AND version < ?", wiki_content_id, version])
108 end 108 end
109 end 109 end