diff --git a/extend.php b/extend.php index d715e0e..1eb1dbf 100644 --- a/extend.php +++ b/extend.php @@ -46,6 +46,7 @@ (new Extend\Settings()) ->default('fof-filter.autoDeletePosts', false) ->default('fof-filter.autoMergePosts', false) + ->default('fof-filter.autoMergeDivider', false) ->default('fof-filter.cooldown', 15) ->default('fof-filter.emailWhenFlagged', false), ]; diff --git a/js/src/admin/components/FilterSettingsPage.tsx b/js/src/admin/components/FilterSettingsPage.tsx index 69deae5..126e436 100644 --- a/js/src/admin/components/FilterSettingsPage.tsx +++ b/js/src/admin/components/FilterSettingsPage.tsx @@ -40,6 +40,12 @@ export default class FilterSettingsPage extends ExtensionPage { help: app.translator.trans('fof-filter.admin.help2'), min: 0, })} + {this.buildSettingComponent({ + type: 'boolean', + setting: 'fof-filter.autoMergeDivider', + label: app.translator.trans('fof-filter.admin.input.switch.merge_divider'), + help: app.translator.trans('fof-filter.admin.merge_divider_help'), + })}
{app.translator.trans('fof-filter.admin.input.email_help')}
diff --git a/resources/locale/en.yml b/resources/locale/en.yml index 5711417..ef35681 100644 --- a/resources/locale/en.yml +++ b/resources/locale/en.yml @@ -12,6 +12,7 @@ fof-filter: countLabel: Censor Tolorance cooldownLabel: Merge Post Cooldown auto_merge_title: Auto merge + merge_divider_help: A divider will be inserted between the existing post content and the newly merged content. input: placeholder: Strings to be filtered filter_title: Strings to filter @@ -20,6 +21,7 @@ fof-filter: switch: email: Email user when post is filtered merge: Auto merge double posts + merge_divider: Add a divider when posts are automatically merged delete: Auto delete filtered posts email_subject: Subject email_body: Body @@ -38,3 +40,6 @@ fof-filter: If you believe this was an error, you are in luck, each removed post is reviewed by our moderators. If they find that this was wrongfully removed, they will restore it. Thank you for your understanding. + views: + auto_merged_divider: 'Posts merged automatically: {datetime}' + auto_merged_datetime_format: 'M j, Y, H:i' diff --git a/src/Handler/AutoMergePostReplyHandler.php b/src/Handler/AutoMergePostReplyHandler.php index 240567b..4e19438 100644 --- a/src/Handler/AutoMergePostReplyHandler.php +++ b/src/Handler/AutoMergePostReplyHandler.php @@ -13,6 +13,7 @@ use Flarum\Discussion\DiscussionRepository; use Flarum\Foundation\DispatchEventsTrait; +use Flarum\Locale\Translator; use Flarum\Post\Command\PostReply; use Flarum\Post\Command\PostReplyHandler; use Flarum\Post\CommentPost; @@ -32,19 +33,22 @@ class AutoMergePostReplyHandler protected SettingsRepositoryInterface $settings; protected PostRepository $posts; protected DiscussionRepository $discussions; + protected Translator $translator; public function __construct( PostReplyHandler $original, SettingsRepositoryInterface $settings, PostRepository $posts, DiscussionRepository $discussions, - Dispatcher $events + Dispatcher $events, + Translator $translator ) { $this->original = $original; $this->settings = $settings; $this->posts = $posts; $this->discussions = $discussions; $this->events = $events; + $this->translator = $translator; } /** @@ -85,8 +89,22 @@ public function handle(PostReply $command): CommentPost $actor->assertCan('reply', $discussion); - $newContent = Arr::get($command->data, 'attributes.content', ''); - $mergedContent = $lastPost->content."\n\n".$newContent; + $parts = [$lastPost->content]; + + if ($this->settings->get('fof-filter.autoMergeDivider')) { + $locale = $actor->getPreference('locale') + ?? $this->settings->get('default_locale') + ?? 'en'; + + $label = $this->translator->trans( + 'fof-filter.views.auto_merged_divider', + ['{datetime}' => Carbon::now()->locale($locale)->translatedFormat($this->translator->trans('fof-filter.views.auto_merged_datetime_format'))] + ); + $parts[] = "---\n\n_{$label}_\n\n---"; + } + + $parts[] = Arr::get($command->data, 'attributes.content', ''); + $mergedContent = implode("\n\n", $parts); $lastPost->revise($mergedContent, $actor);