mirror of
https://github.com/discourse/discourse.git
synced 2024-11-22 09:42:02 +08:00
FEATURE: add trigger_with_pms
option to topic tags changed
automation trigger (#29122)
This commit is contained in:
parent
19fb8b8d57
commit
53f9c81790
|
@ -223,6 +223,9 @@ en:
|
||||||
watching_tags:
|
watching_tags:
|
||||||
label: Watching tags
|
label: Watching tags
|
||||||
description: Will trigger only if the topic has any of these tags
|
description: Will trigger only if the topic has any of these tags
|
||||||
|
trigger_with_pms:
|
||||||
|
label: Trigger with PMs
|
||||||
|
description: Will trigger even if the tags were changed in a PM
|
||||||
after_post_cook:
|
after_post_cook:
|
||||||
fields:
|
fields:
|
||||||
valid_trust_levels:
|
valid_trust_levels:
|
||||||
|
|
|
@ -224,6 +224,10 @@ module DiscourseAutomation
|
||||||
DiscourseAutomation::Automation
|
DiscourseAutomation::Automation
|
||||||
.where(trigger: name, enabled: true)
|
.where(trigger: name, enabled: true)
|
||||||
.find_each do |automation|
|
.find_each do |automation|
|
||||||
|
if topic.private_message?
|
||||||
|
next if !automation.trigger_field("trigger_with_pms")["value"]
|
||||||
|
end
|
||||||
|
|
||||||
watching_categories = automation.trigger_field("watching_categories")
|
watching_categories = automation.trigger_field("watching_categories")
|
||||||
if watching_categories["value"]
|
if watching_categories["value"]
|
||||||
next if !watching_categories["value"].include?(topic.category_id)
|
next if !watching_categories["value"].include?(topic.category_id)
|
||||||
|
|
|
@ -3,6 +3,7 @@
|
||||||
DiscourseAutomation::Triggerable.add(DiscourseAutomation::Triggers::TOPIC_TAGS_CHANGED) do
|
DiscourseAutomation::Triggerable.add(DiscourseAutomation::Triggers::TOPIC_TAGS_CHANGED) do
|
||||||
field :watching_categories, component: :categories
|
field :watching_categories, component: :categories
|
||||||
field :watching_tags, component: :tags
|
field :watching_tags, component: :tags
|
||||||
|
field :trigger_with_pms, component: :boolean
|
||||||
|
|
||||||
placeholder :topic_url
|
placeholder :topic_url
|
||||||
placeholder :topic_title
|
placeholder :topic_title
|
||||||
|
|
|
@ -19,6 +19,7 @@ describe DiscourseAutomation::Triggers::TOPIC_TAGS_CHANGED do
|
||||||
SiteSetting.tagging_enabled = true
|
SiteSetting.tagging_enabled = true
|
||||||
SiteSetting.create_tag_allowed_groups = Group::AUTO_GROUPS[:everyone]
|
SiteSetting.create_tag_allowed_groups = Group::AUTO_GROUPS[:everyone]
|
||||||
SiteSetting.tag_topic_allowed_groups = Group::AUTO_GROUPS[:everyone]
|
SiteSetting.tag_topic_allowed_groups = Group::AUTO_GROUPS[:everyone]
|
||||||
|
SiteSetting.pm_tags_allowed_for_groups = Group::AUTO_GROUPS[:everyone]
|
||||||
end
|
end
|
||||||
|
|
||||||
context "when watching a cool tag" do
|
context "when watching a cool tag" do
|
||||||
|
@ -185,5 +186,38 @@ describe DiscourseAutomation::Triggers::TOPIC_TAGS_CHANGED do
|
||||||
expect(list[0]["added_tags"]).to eq([another_tag.name])
|
expect(list[0]["added_tags"]).to eq([another_tag.name])
|
||||||
expect(list[0]["removed_tags"]).to eq([])
|
expect(list[0]["removed_tags"]).to eq([])
|
||||||
end
|
end
|
||||||
|
|
||||||
|
it "should not fire the trigger on PMs by default" do
|
||||||
|
pm = Fabricate(:private_message_topic)
|
||||||
|
list =
|
||||||
|
capture_contexts do
|
||||||
|
DiscourseTagging.tag_topic_by_names(
|
||||||
|
pm,
|
||||||
|
Guardian.new(user),
|
||||||
|
[cool_tag.name, another_tag.name],
|
||||||
|
)
|
||||||
|
end
|
||||||
|
expect(list.length).to eq(0)
|
||||||
|
end
|
||||||
|
|
||||||
|
it "should fire the trigger on PMs if trigger_with_pms is set" do
|
||||||
|
automation.upsert_field!(
|
||||||
|
"trigger_with_pms",
|
||||||
|
"boolean",
|
||||||
|
{ "value" => true },
|
||||||
|
target: "trigger",
|
||||||
|
)
|
||||||
|
|
||||||
|
pm = Fabricate(:private_message_topic)
|
||||||
|
list =
|
||||||
|
capture_contexts do
|
||||||
|
DiscourseTagging.tag_topic_by_names(
|
||||||
|
pm,
|
||||||
|
Guardian.new(user),
|
||||||
|
[cool_tag.name, another_tag.name],
|
||||||
|
)
|
||||||
|
end
|
||||||
|
expect(list.length).to eq(1)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in New Issue
Block a user