Mercurial > hg > soundsoftware-site
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 |