Class: ReviewablePost
Constant Summary
Constants inherited
from Reviewable
Reviewable::TYPE_TO_BASIC_SERIALIZER
Instance Attribute Summary
Attributes inherited from Reviewable
#created_new
Class Method Summary
collapse
Instance Method Summary
collapse
Methods inherited from Reviewable
#actions_for, add_custom_filter, #add_score, #basic_serializer, basic_serializers_for_list, #build_editable_fields, bulk_perform_targets, clear_custom_filters!, count_by_date, #create_result, #created_new!, custom_filters, default_visible, #delete_user_actions, #editable_for, #explain_score, #history, list_for, #log_history, lookup_serializer_for, min_score_for_priority, needs_review!, pending_count, #perform, #recalculate_score, score_required_to_hide_post, score_to_auto_close_topic, scores_with_topics, sensitivity_score, sensitivity_score_value, #serializer, serializer_for, set_priorities, spam_score_to_silence_new_user, #transition_to, #type_class, types, typical_sensitivity, unseen_list_for, unseen_reviewable_count, #updatable_reviewable_scores, #update_fields, user_menu_list_for, valid_type?, viewable_by
Class Method Details
.action_aliases ⇒ Object
4
5
6
|
# File 'app/models/reviewable_post.rb', line 4
def self.action_aliases
{ reject_and_silence: :reject_and_suspend }
end
|
.queue_for_review_if_possible(post, created_or_edited_by) ⇒ Object
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
# File 'app/models/reviewable_post.rb', line 8
def self.queue_for_review_if_possible(post, created_or_edited_by)
return unless SiteSetting.review_every_post
return if post.post_type != Post.types[:regular] || post.topic.private_message?
return if Reviewable.pending.where(target: post).exists?
if created_or_edited_by.bot? || created_or_edited_by.staff? ||
created_or_edited_by.has_trust_level?(TrustLevel[4])
return
end
system_user = Discourse.system_user
needs_review!(
target: post,
topic: post.topic,
created_by: system_user,
reviewable_by_moderator: true,
potential_spam: false,
).tap do |reviewable|
reviewable.add_score(system_user, ReviewableScore.types[:needs_approval], force_review: true)
end
end
|
Instance Method Details
#build_actions(actions, guardian, args) ⇒ Object
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
|
# File 'app/models/reviewable_post.rb', line 29
def build_actions(actions, guardian, args)
return unless pending?
if post.trashed? && guardian.can_recover_post?(post)
build_action(actions, :approve_and_restore, icon: "check")
elsif post.hidden?
build_action(actions, :approve_and_unhide, icon: "check")
else
build_action(actions, :approve, icon: "check")
end
reject =
actions.add_bundle(
"#{id}-reject",
icon: "xmark",
label: "reviewables.actions.reject.bundle_title",
)
if post.trashed?
build_action(actions, :reject_and_keep_deleted, icon: "trash-can", bundle: reject)
elsif guardian.can_delete_post_or_topic?(post)
build_action(actions, :reject_and_delete, icon: "trash-can", bundle: reject)
end
if guardian.can_suspend?(target_created_by)
build_action(
actions,
:reject_and_suspend,
icon: "ban",
bundle: reject,
client_action: "suspend",
)
build_action(
actions,
:reject_and_silence,
icon: "microphone-slash",
bundle: reject,
client_action: "silence",
)
end
end
|
71
72
73
|
# File 'app/models/reviewable_post.rb', line 71
def perform_approve(performed_by, _args)
successful_transition :approved, recalculate_score: false
end
|
79
80
81
82
83
|
# File 'app/models/reviewable_post.rb', line 79
def perform_approve_and_restore(performed_by, _args)
PostDestroyer.new(performed_by, post).recover
successful_transition :approved, recalculate_score: false
end
|
85
86
87
88
89
|
# File 'app/models/reviewable_post.rb', line 85
def perform_approve_and_unhide(performed_by, _args)
post.unhide!
successful_transition :approved, recalculate_score: false
end
|
91
92
93
94
95
|
# File 'app/models/reviewable_post.rb', line 91
def perform_reject_and_delete(performed_by, _args)
PostDestroyer.new(performed_by, post, reviewable: self).destroy
successful_transition :rejected, recalculate_score: false
end
|
75
76
77
|
# File 'app/models/reviewable_post.rb', line 75
def perform_reject_and_keep_deleted(performed_by, _args)
successful_transition :rejected, recalculate_score: false
end
|
97
98
99
|
# File 'app/models/reviewable_post.rb', line 97
def perform_reject_and_suspend(performed_by, _args)
successful_transition :rejected, recalculate_score: false
end
|