approve_article.rb
4.01 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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
class ApproveArticle < Task
validates_presence_of :requestor_id, :target_id
validates :requestor, kind_of: {kind: Person}
validate :allowed_requestor
def allowed_requestor
if target
if target.person? && requestor != target
self.errors.add(:requestor, _('You can not post articles to other users.'))
end
if target.organization? && !target.members.include?(requestor) && target.environment.portal_community != target
self.errors.add(:requestor, _('Only members can post articles on communities.'))
end
end
end
def article_title
article ? article.title : _('(The original text was removed)')
end
def article
Article.find_by id: data[:article_id]
end
def article= value
data[:article_id] = value.id
end
def name
data[:name].blank? ? (article ? article.name : _("Article removed.")) : data[:name]
end
def name= value
data[:name] = value
end
settings_items :closing_statment, :article_parent_id, :highlighted
settings_items :create_link, :type => :boolean, :default => false
def article_parent
Article.find_by id: article_parent_id.to_i
end
def article_parent= value
self.article_parent_id = value.id
end
def abstract= value
data[:abstract] = value
end
def abstract
data[:abstract].blank? ? (article ? article.abstract : '') : data[:abstract]
end
def body= value
data[:body] = value
end
def body
data[:body].blank? ? (article ? article.body : "") : data[:body]
end
def perform
if create_link
LinkArticle.create!(:reference_article => article, :profile => target, :parent => article_parent, :highlighted => highlighted)
else
article.copy!(:name => name, :abstract => abstract, :body => body, :profile => target, :reference_article => article, :parent => article_parent, :highlighted => highlighted, :source => article.source, :last_changed_by_id => article.last_changed_by_id, :created_by_id => article.created_by_id)
end
end
def title
_("New article")
end
def icon
result = {:type => :defined_image, :src => '/images/icons-app/article-minor.png', :name => name}
result.merge({:url => article.url}) if article
return result
end
def linked_subject
{:text => name, :url => article.url} if article
end
def information
if article
{:message => _('%{requestor} wants to publish the article: %{linked_subject}.').html_safe}
else
{:message => _("The article was removed.")}
end
end
def accept_details
true
end
def reject_details
true
end
def default_decision
if article
'skip'
else
'reject'
end
end
def accept_disabled?
article.blank?
end
def target_notification_description
if article
_('%{requestor} wants to publish the article: %{article}.') % {:requestor => requestor.name, :article => article.name}
else
_('%{requestor} wanted to publish an article but it was removed.') % {:requestor => requestor.name}
end
end
def target_notification_message
return nil if target.organization? && !target.moderated_articles?
target_notification_description + "\n\n" +
_('You need to login on %{system} in order to approve or reject this article.') % { :system => target.environment.name }
end
def task_finished_message
if !closing_statment.blank?
_("Your request for publishing the article \"%{article}\" was approved. Here is the comment left by the admin who approved your article:\n\n%{comment} ") % {:article => name, :comment => closing_statment}
else
_('Your request for publishing the article "%{article}" was approved.') % {:article => name}
end
end
def task_cancelled_message
message = _('Your request for publishing the article "%{article}" was rejected.') % {:article => name}
if !reject_explanation.blank?
message += " " + _("Here is the reject explanation left by the administrator who rejected your article: \n\n%{reject_explanation}") % {:reject_explanation => reject_explanation}
end
message
end
end