From 0f22e6ecf5f397709504d7be4bfb9adf19b51bb2 Mon Sep 17 00:00:00 2001 From: Joffrey JAFFEUX Date: Tue, 16 Apr 2024 12:38:27 +0200 Subject: [PATCH] FEATURE: Make it possible to reassign posts on the topic level assign modal 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 now to edit all the assignments in one go. --- .../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 00000000..f8ff6d78 --- /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 9b3bc37e..00000000 --- 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}} - -
- - -