From c0bcd979e38134989b9023b75738caa743d2e092 Mon Sep 17 00:00:00 2001 From: Krzysztof Kotlarek Date: Mon, 15 Jul 2024 08:48:01 +1000 Subject: [PATCH] FEATURE: custom flag can require additional message (#27706) Allow admin to create custom flag which requires an additional message. I decided to rename the old `custom_flag` into `require_message` as it is more descriptive. --- .../addon/components/admin-flags-form.gjs | 18 +++++++++ .../app/components/flag-action-type.js | 2 +- .../discourse/app/components/modal/flag.js | 8 ++-- .../discourse/app/models/post-action-type.js | 3 +- .../discourse/tests/fixtures/site-fixtures.js | 22 +++++----- .../discourse/tests/helpers/site.js | 16 ++++---- .../stylesheets/common/admin/flags.scss | 9 +++++ .../concerns/reports/moderators_activity.rb | 2 +- app/models/flag.rb | 2 +- app/models/post.rb | 2 +- app/models/post_action_type.rb | 12 +++--- app/models/user.rb | 7 +++- app/serializers/flag_serializer.rb | 2 +- .../post_action_type_serializer.rb | 6 +-- app/services/flags/create_flag.rb | 5 ++- app/services/flags/update_flag.rb | 12 +++++- config/locales/client.en.yml | 2 + db/fixtures/003_flags.rb | 14 +++---- ...me_flags_custom_type_to_require_message.rb | 7 ++++ lib/badge_queries.rb | 2 +- lib/flag_settings.rb | 16 ++++---- lib/guardian/post_guardian.rb | 3 +- lib/post_action_creator.rb | 38 +++++++++--------- lib/post_revisor.rb | 2 +- spec/lib/flag_settings_spec.rb | 10 ++--- spec/models/post_action_spec.rb | 40 ++++++++++++++++++- .../api/schemas/json/site_response.json | 8 ++-- spec/services/flags/create_flag_spec.rb | 5 ++- spec/services/flags/update_flag_spec.rb | 5 ++- 29 files changed, 186 insertions(+), 94 deletions(-) create mode 100644 db/post_migrate/20240703232446_rename_flags_custom_type_to_require_message.rb diff --git a/app/assets/javascripts/admin/addon/components/admin-flags-form.gjs b/app/assets/javascripts/admin/addon/components/admin-flags-form.gjs index 07ffb00a611..7fb2c8dc1df 100644 --- a/app/assets/javascripts/admin/addon/components/admin-flags-form.gjs +++ b/app/assets/javascripts/admin/addon/components/admin-flags-form.gjs @@ -23,6 +23,7 @@ export default class AdminFlagsForm extends Component { @service site; @tracked enabled = true; + @tracked require_message = false; @tracked name; @tracked description; @tracked appliesTo; @@ -33,6 +34,7 @@ export default class AdminFlagsForm extends Component { this.name = this.args.flag.name; this.description = this.args.flag.description; this.appliesTo = this.args.flag.applies_to; + this.require_message = this.args.flag.require_message; this.enabled = this.args.flag.enabled; } } @@ -98,6 +100,7 @@ export default class AdminFlagsForm extends Component { this.args.flag.name = response.flag.name; this.args.flag.description = response.flag.description; this.args.flag.applies_to = response.flag.applies_to; + this.args.flag.require_message = response.flag.require_message; this.args.flag.enabled = response.flag.enabled; this.router.transitionTo("adminConfig.flags"); }) @@ -112,6 +115,7 @@ export default class AdminFlagsForm extends Component { name: this.name, description: this.description, applies_to: this.appliesTo, + require_message: this.require_message, enabled: this.enabled, }; } @@ -164,6 +168,20 @@ export default class AdminFlagsForm extends Component { /> +
+ +
+