##// END OF EJS Templates
remove trailing white-spaces from app/models/wiki_page.rb....
Toshi MARUYAMA -
r6391:ff8af0ea2e4a
parent child
Show More
@@ -5,12 +5,12
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.
@@ -36,27 +36,27 class WikiPage < ActiveRecord::Base
36 :project_key => "#{Wiki.table_name}.project_id"
36 :project_key => "#{Wiki.table_name}.project_id"
37
37
38 attr_accessor :redirect_existing_links
38 attr_accessor :redirect_existing_links
39
39
40 validates_presence_of :title
40 validates_presence_of :title
41 validates_format_of :title, :with => /^[^,\.\/\?\;\|\s]*$/
41 validates_format_of :title, :with => /^[^,\.\/\?\;\|\s]*$/
42 validates_uniqueness_of :title, :scope => :wiki_id, :case_sensitive => false
42 validates_uniqueness_of :title, :scope => :wiki_id, :case_sensitive => false
43 validates_associated :content
43 validates_associated :content
44
44
45 # eager load information about last updates, without loading text
45 # eager load information about last updates, without loading text
46 named_scope :with_updated_on, {
46 named_scope :with_updated_on, {
47 :select => "#{WikiPage.table_name}.*, #{WikiContent.table_name}.updated_on",
47 :select => "#{WikiPage.table_name}.*, #{WikiContent.table_name}.updated_on",
48 :joins => "LEFT JOIN #{WikiContent.table_name} ON #{WikiContent.table_name}.page_id = #{WikiPage.table_name}.id"
48 :joins => "LEFT JOIN #{WikiContent.table_name} ON #{WikiContent.table_name}.page_id = #{WikiPage.table_name}.id"
49 }
49 }
50
50
51 # Wiki pages that are protected by default
51 # Wiki pages that are protected by default
52 DEFAULT_PROTECTED_PAGES = %w(sidebar)
52 DEFAULT_PROTECTED_PAGES = %w(sidebar)
53
53
54 def after_initialize
54 def after_initialize
55 if new_record? && DEFAULT_PROTECTED_PAGES.include?(title.to_s.downcase)
55 if new_record? && DEFAULT_PROTECTED_PAGES.include?(title.to_s.downcase)
56 self.protected = true
56 self.protected = true
57 end
57 end
58 end
58 end
59
59
60 def visible?(user=User.current)
60 def visible?(user=User.current)
61 !user.nil? && user.allowed_to?(:view_wiki_pages, project)
61 !user.nil? && user.allowed_to?(:view_wiki_pages, project)
62 end
62 end
@@ -68,7 +68,7 class WikiPage < ActiveRecord::Base
68 end
68 end
69
69
70 def before_save
70 def before_save
71 self.title = Wiki.titleize(title)
71 self.title = Wiki.titleize(title)
72 # Manage redirects if the title has changed
72 # Manage redirects if the title has changed
73 if !@previous_title.blank? && (@previous_title != title) && !new_record?
73 if !@previous_title.blank? && (@previous_title != title) && !new_record?
74 # Update redirects that point to the old title
74 # Update redirects that point to the old title
@@ -83,51 +83,51 class WikiPage < ActiveRecord::Base
83 @previous_title = nil
83 @previous_title = nil
84 end
84 end
85 end
85 end
86
86
87 def before_destroy
87 def before_destroy
88 # Remove redirects to this page
88 # Remove redirects to this page
89 wiki.redirects.find_all_by_redirects_to(title).each(&:destroy)
89 wiki.redirects.find_all_by_redirects_to(title).each(&:destroy)
90 end
90 end
91
91
92 def pretty_title
92 def pretty_title
93 WikiPage.pretty_title(title)
93 WikiPage.pretty_title(title)
94 end
94 end
95
95
96 def content_for_version(version=nil)
96 def content_for_version(version=nil)
97 result = content.versions.find_by_version(version.to_i) if version
97 result = content.versions.find_by_version(version.to_i) if version
98 result ||= content
98 result ||= content
99 result
99 result
100 end
100 end
101
101
102 def diff(version_to=nil, version_from=nil)
102 def diff(version_to=nil, version_from=nil)
103 version_to = version_to ? version_to.to_i : self.content.version
103 version_to = version_to ? version_to.to_i : self.content.version
104 version_from = version_from ? version_from.to_i : version_to - 1
104 version_from = version_from ? version_from.to_i : version_to - 1
105 version_to, version_from = version_from, version_to unless version_from < version_to
105 version_to, version_from = version_from, version_to unless version_from < version_to
106
106
107 content_to = content.versions.find_by_version(version_to)
107 content_to = content.versions.find_by_version(version_to)
108 content_from = content.versions.find_by_version(version_from)
108 content_from = content.versions.find_by_version(version_from)
109
109
110 (content_to && content_from) ? WikiDiff.new(content_to, content_from) : nil
110 (content_to && content_from) ? WikiDiff.new(content_to, content_from) : nil
111 end
111 end
112
112
113 def annotate(version=nil)
113 def annotate(version=nil)
114 version = version ? version.to_i : self.content.version
114 version = version ? version.to_i : self.content.version
115 c = content.versions.find_by_version(version)
115 c = content.versions.find_by_version(version)
116 c ? WikiAnnotate.new(c) : nil
116 c ? WikiAnnotate.new(c) : nil
117 end
117 end
118
118
119 def self.pretty_title(str)
119 def self.pretty_title(str)
120 (str && str.is_a?(String)) ? str.tr('_', ' ') : str
120 (str && str.is_a?(String)) ? str.tr('_', ' ') : str
121 end
121 end
122
122
123 def project
123 def project
124 wiki.project
124 wiki.project
125 end
125 end
126
126
127 def text
127 def text
128 content.text if content
128 content.text if content
129 end
129 end
130
130
131 def updated_on
131 def updated_on
132 unless @updated_on
132 unless @updated_on
133 if time = read_attribute(:updated_on)
133 if time = read_attribute(:updated_on)
@@ -139,20 +139,20 class WikiPage < ActiveRecord::Base
139 end
139 end
140 @updated_on
140 @updated_on
141 end
141 end
142
142
143 # Returns true if usr is allowed to edit the page, otherwise false
143 # Returns true if usr is allowed to edit the page, otherwise false
144 def editable_by?(usr)
144 def editable_by?(usr)
145 !protected? || usr.allowed_to?(:protect_wiki_pages, wiki.project)
145 !protected? || usr.allowed_to?(:protect_wiki_pages, wiki.project)
146 end
146 end
147
147
148 def attachments_deletable?(usr=User.current)
148 def attachments_deletable?(usr=User.current)
149 editable_by?(usr) && super(usr)
149 editable_by?(usr) && super(usr)
150 end
150 end
151
151
152 def parent_title
152 def parent_title
153 @parent_title || (self.parent && self.parent.pretty_title)
153 @parent_title || (self.parent && self.parent.pretty_title)
154 end
154 end
155
155
156 def parent_title=(t)
156 def parent_title=(t)
157 @parent_title = t
157 @parent_title = t
158 parent_page = t.blank? ? nil : self.wiki.find_page(t)
158 parent_page = t.blank? ? nil : self.wiki.find_page(t)
@@ -160,7 +160,7 class WikiPage < ActiveRecord::Base
160 end
160 end
161
161
162 protected
162 protected
163
163
164 def validate
164 def validate
165 errors.add(:parent_title, :invalid) if !@parent_title.blank? && parent.nil?
165 errors.add(:parent_title, :invalid) if !@parent_title.blank? && parent.nil?
166 errors.add(:parent_title, :circular_dependency) if parent && (parent == self || parent.ancestors.include?(self))
166 errors.add(:parent_title, :circular_dependency) if parent && (parent == self || parent.ancestors.include?(self))
@@ -170,7 +170,7 end
170
170
171 class WikiDiff < Redmine::Helpers::Diff
171 class WikiDiff < Redmine::Helpers::Diff
172 attr_reader :content_to, :content_from
172 attr_reader :content_to, :content_from
173
173
174 def initialize(content_to, content_from)
174 def initialize(content_to, content_from)
175 @content_to = content_to
175 @content_to = content_to
176 @content_from = content_from
176 @content_from = content_from
@@ -180,7 +180,7 end
180
180
181 class WikiAnnotate
181 class WikiAnnotate
182 attr_reader :lines, :content
182 attr_reader :lines, :content
183
183
184 def initialize(content)
184 def initialize(content)
185 @content = content
185 @content = content
186 current = content
186 current = content
@@ -212,7 +212,7 class WikiAnnotate
212 break unless @lines.detect { |line| line[0].nil? }
212 break unless @lines.detect { |line| line[0].nil? }
213 current = current.previous
213 current = current.previous
214 end
214 end
215 @lines.each { |line|
215 @lines.each { |line|
216 line[0] ||= current.version
216 line[0] ||= current.version
217 # if the last known version is > 1 (eg. history was cleared), we don't know the author
217 # if the last known version is > 1 (eg. history was cleared), we don't know the author
218 line[1] ||= current.author if current.version == 1
218 line[1] ||= current.author if current.version == 1
General Comments 0
You need to be logged in to leave comments. Login now