article.rb
1.75 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
class Article < ActiveRecord::Base
belongs_to :profile
validates_presence_of :profile_id, :name, :slug, :path
validates_uniqueness_of :slug, :scope => ['profile_id', 'parent_id'], :message => _('%{fn} (the code generated from the article name) is already being used by another article.')
belongs_to :last_changed_by, :class_name => Person.name, :foreign_key => 'last_changed_by_id'
acts_as_taggable
N_('Tag list')
acts_as_filesystem
acts_as_versioned
acts_as_searchable :fields => [ :name, :abstract, :body, :tag_list ]
# retrieves all articles belonging to the given +profile+ that are not
# sub-articles of any other article.
def self.top_level_for(profile)
self.find(:all, :conditions => [ 'parent_id is null and profile_id = ?', profile.id ])
end
# retrieves the latest +limit+ articles in profile +profile+, sorted from the
# most recent to the oldest.
def self.recent(profile, limit)
self.find(:all, :limit => limit, :order => 'created_on')
end
# produces the HTML code that is to be displayed as this article's contents.
#
# The implementation in this class just provides the +body+ attribute as the
# HTML. Other article types can override this method to provide customized
# views of themselves.
def to_html
body
end
# provides the icon name to be used for this article. In this class this
# method just returns 'text-html', but subclasses may (and should) override
# to return their specific icons.
#
# FIXME use mime_type and generate this name dinamically
def icon_name
'text-html'
end
def mime_type
'text/html'
end
def mime_type_description
_('HTML Text document')
end
def title
name
end
def public_path
"/" + [profile.identifier, path].join('/')
end
end