From c1d4633ba4646c7aef0c937d59908db21e62af5d Mon Sep 17 00:00:00 2001 From: Andrei Prigorshnev Date: Tue, 16 Apr 2024 16:08:39 +0400 Subject: [PATCH] FEATURE: Make it possible to reassign posts on the topic level assign modal (#562) This adds a new dropdown to the topic level assign modal. A topic may contain several assignments, the topic itself may be assigned and also some of the replies may be assigned. With this new dropdown, it's possible to edit all the assignments from this modal. Co-authored-by: Joffrey JAFFEUX --- .../discourse/components/assign-user-form.gjs | 36 ++++ .../discourse/components/assign-user-form.hbs | 56 ------ .../discourse/components/assign-user-form.js | 63 ------- .../discourse/components/assignment.gjs | 134 ++++++++++++++ .../modal/edit-topic-assignments.gjs | 67 +++++++ .../components/topic-assignments.gjs | 48 +++++ .../components/topic-level-assign-menu.js | 10 +- .../initializers/extend-for-assigns.js | 57 ++---- .../discourse/models/assignment.js | 40 +++++ assets/javascripts/discourse/models/topic.js | 67 +++++++ .../discourse/services/task-actions.js | 14 ++ assets/stylesheets/assigns.scss | 6 + config/locales/client.en.yml | 6 + .../acceptance/edit-assignments-modal-test.js | 169 ++++++++++++++++++ .../acceptance/post-popup-menu-test.js | 4 +- .../topic-level-assign-menu-test.js | 4 +- .../fixtures/topic-with-assigned-post.js | 20 --- .../fixtures/topic-with-assigned-posts.js | 28 +++ 18 files changed, 637 insertions(+), 192 deletions(-) create mode 100644 assets/javascripts/discourse/components/assign-user-form.gjs delete mode 100644 assets/javascripts/discourse/components/assign-user-form.hbs delete mode 100644 assets/javascripts/discourse/components/assign-user-form.js create mode 100644 assets/javascripts/discourse/components/assignment.gjs create mode 100644 assets/javascripts/discourse/components/modal/edit-topic-assignments.gjs create mode 100644 assets/javascripts/discourse/components/topic-assignments.gjs create mode 100644 assets/javascripts/discourse/models/assignment.js create mode 100644 assets/javascripts/discourse/models/topic.js create mode 100644 test/javascripts/acceptance/edit-assignments-modal-test.js delete mode 100644 test/javascripts/fixtures/topic-with-assigned-post.js create mode 100644 test/javascripts/fixtures/topic-with-assigned-posts.js diff --git a/assets/javascripts/discourse/components/assign-user-form.gjs b/assets/javascripts/discourse/components/assign-user-form.gjs new file mode 100644 index 0000000..f8ff6d7 --- /dev/null +++ b/assets/javascripts/discourse/components/assign-user-form.gjs @@ -0,0 +1,36 @@ +import Component from "@glimmer/component"; +import { tracked } from "@glimmer/tracking"; +import { action } from "@ember/object"; +import Assignment from "./assignment"; + +export default class AssignUserForm extends Component { + @tracked showValidationErrors = false; + + constructor() { + super(...arguments); + + this.args.formApi.submit = this.assign; + } + + get assigneeIsEmpty() { + return !this.args.model.username && !this.args.model.group_name; + } + + @action + async assign() { + if (this.assigneeIsEmpty) { + this.showValidationErrors = true; + return; + } + + await this.args.onSubmit(); + } + + +} diff --git a/assets/javascripts/discourse/components/assign-user-form.hbs b/assets/javascripts/discourse/components/assign-user-form.hbs deleted file mode 100644 index 9b3bc37..0000000 --- a/assets/javascripts/discourse/components/assign-user-form.hbs +++ /dev/null @@ -1,56 +0,0 @@ -
- - - - {{#if this.assigneeError}} - - {{d-icon "exclamation-triangle"}} - {{i18n "discourse_assign.assign_modal.choose_assignee"}} - - {{/if}} -
- -{{#if this.siteSettings.enable_assign_status}} -
- - -
-{{/if}} - -
- - -