All I want for Christmas ...
... is to settle these encoding issues once and for all. Let's override the accessor methods, which seems to offer a simpler solution. Now with tests (for whatever that helps)...
This commit is contained in:
parent
6e6bf1a446
commit
0c2bc65e7a
6 changed files with 33 additions and 20 deletions
|
@ -4,6 +4,10 @@ class Page < ActiveRecord::Base
|
|||
has_many :wiki_references, :order => 'referenced_name'
|
||||
has_one :current_revision, :class_name => 'Revision', :order => 'id DESC'
|
||||
|
||||
def name
|
||||
read_attribute(:name).as_utf8
|
||||
end
|
||||
|
||||
def revise(content, name, time, author, renderer)
|
||||
revisions_size = new_record? ? 0 : revisions.size
|
||||
if (revisions_size > 0) and content == current_revision.content and name == self.name
|
||||
|
@ -65,7 +69,7 @@ class Page < ActiveRecord::Base
|
|||
end
|
||||
|
||||
def wiki_words
|
||||
wiki_references.select { |ref| ref.wiki_word? }.map { |ref| ref.referenced_name.as_utf8 }
|
||||
wiki_references.select { |ref| ref.wiki_word? }.map { |ref| ref.referenced_name }
|
||||
end
|
||||
|
||||
def linked_from
|
||||
|
@ -73,7 +77,7 @@ class Page < ActiveRecord::Base
|
|||
end
|
||||
|
||||
def redirects
|
||||
wiki_references.select { |ref| ref.redirected_page? }.map { |ref| ref.referenced_name.as_utf8 }
|
||||
wiki_references.select { |ref| ref.redirected_page? }.map { |ref| ref.referenced_name }
|
||||
end
|
||||
|
||||
def included_from
|
||||
|
@ -82,7 +86,7 @@ class Page < ActiveRecord::Base
|
|||
|
||||
# Returns the original wiki-word name as separate words, so "MyPage" becomes "My Page".
|
||||
def plain_name
|
||||
web.brackets_only? ? CGI.escapeHTML(name) : CGI.escapeHTML(WikiWords.separate(name))
|
||||
web.brackets_only? ? name.escapeHTML : WikiWords.separate(name).escapeHTML
|
||||
end
|
||||
|
||||
LOCKING_PERIOD = 30.minutes
|
||||
|
|
|
@ -1,4 +1,8 @@
|
|||
class Revision < ActiveRecord::Base
|
||||
belongs_to :page
|
||||
composed_of :author, :mapping => [ %w(author name), %w(ip ip) ]
|
||||
|
||||
def content
|
||||
read_attribute(:content).as_utf8
|
||||
end
|
||||
end
|
||||
|
|
|
@ -12,6 +12,10 @@ class WikiReference < ActiveRecord::Base
|
|||
belongs_to :page
|
||||
validates_inclusion_of :link_type, :in => [LINKED_PAGE, WANTED_PAGE, REDIRECTED_PAGE, INCLUDED_PAGE, CATEGORY, AUTHOR, FILE, WANTED_FILE]
|
||||
|
||||
def referenced_name
|
||||
read_attribute(:referenced_name).as_utf8
|
||||
end
|
||||
|
||||
def self.link_type(web, page_name)
|
||||
if web.has_page?(page_name) || self.page_that_redirects_for(web, page_name)
|
||||
LINKED_PAGE
|
||||
|
@ -93,7 +97,7 @@ class WikiReference < ActiveRecord::Base
|
|||
"ON wiki_references.page_id = pages.id " +
|
||||
"WHERE wiki_references.link_type = '#{CATEGORY}' " +
|
||||
"AND pages.web_id = '#{web.id}'"
|
||||
connection.select_all(query).map { |row| row['referenced_name'] }
|
||||
connection.select_all(query).map { |row| row['referenced_name'].as_utf8 }
|
||||
end
|
||||
|
||||
def wiki_word?
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue