From ad45c6703f0f20b60966a8d6f21f1d75f8bc3b65 Mon Sep 17 00:00:00 2001 From: Nat Date: Wed, 20 Apr 2022 02:15:36 +0800 Subject: [PATCH] Add ability to select priority in modal And also disable immediately triggering assign when user is selected --- .../controllers/assign-user.js | 26 +++++++++++++------ .../initializers/extend-for-assigns.js | 1 + .../discourse/services/task-actions.js | 1 + .../discourse/templates/modal/assign-user.hbs | 11 ++++++++ config/locales/client.en.yml | 9 ++++++- 5 files changed, 39 insertions(+), 9 deletions(-) diff --git a/assets/javascripts/discourse-assign/controllers/assign-user.js b/assets/javascripts/discourse-assign/controllers/assign-user.js index 7d6b826..577d76e 100644 --- a/assets/javascripts/discourse-assign/controllers/assign-user.js +++ b/assets/javascripts/discourse-assign/controllers/assign-user.js @@ -1,10 +1,18 @@ import Controller, { inject as controller } from "@ember/controller"; +import { action } from "@ember/object"; +import { not, or } from "@ember/object/computed"; import { inject as service } from "@ember/service"; +import { isEmpty } from "@ember/utils"; import { ajax } from "discourse/lib/ajax"; import { popupAjaxError } from "discourse/lib/ajax-error"; -import { not, or } from "@ember/object/computed"; -import { isEmpty } from "@ember/utils"; -import { action } from "@ember/object"; +import I18n from "I18n"; + +const PRIORITIES = [ + { name: I18n.t("discourse_assign.priorities.low"), value: 4 }, + { name: I18n.t("discourse_assign.priorities.medium"), value: 3 }, + { name: I18n.t("discourse_assign.priorities.high"), value: 2 }, + { name: I18n.t("discourse_assign.priorities.urgent"), value: 1 }, +]; export default Controller.extend({ topicBulkActions: controller(), @@ -13,6 +21,7 @@ export default Controller.extend({ taskActions: service(), autofocus: not("capabilities.touch"), assigneeName: or("model.username", "model.group_name"), + priorities: PRIORITIES, init() { this._super(...arguments); @@ -63,7 +72,6 @@ export default Controller.extend({ } this.send("closeModal"); - return ajax(path, { type: "PUT", data: { @@ -71,6 +79,7 @@ export default Controller.extend({ group_name: this.get("model.group_name"), target_id: this.get("model.target.id"), target_type: this.get("model.targetType"), + priority: this.get("model.priority"), }, }) .then(() => { @@ -99,14 +108,15 @@ export default Controller.extend({ "model.allowedGroups": this.taskActions.allowedGroups, }); } - - if (name) { - return this.assign(); - } }, @action assignUsername(selected) { this.assignUser(selected.firstObject); }, + + @action + assignPriority(priority) { + this.set("model.priority", priority); + }, }); diff --git a/assets/javascripts/discourse-assign/initializers/extend-for-assigns.js b/assets/javascripts/discourse-assign/initializers/extend-for-assigns.js index 3ef81b7..d036aaa 100644 --- a/assets/javascripts/discourse-assign/initializers/extend-for-assigns.js +++ b/assets/javascripts/discourse-assign/initializers/extend-for-assigns.js @@ -23,6 +23,7 @@ const DEPENDENT_KEYS = [ "topic.assigned_to_group", "currentUser.can_assign", "topic.assigned_to_user.username", + "topic.assignment_priority", ]; function titleForState(name) { diff --git a/assets/javascripts/discourse/services/task-actions.js b/assets/javascripts/discourse/services/task-actions.js index c7cae11..4eec129 100644 --- a/assets/javascripts/discourse/services/task-actions.js +++ b/assets/javascripts/discourse/services/task-actions.js @@ -38,6 +38,7 @@ export default Service.extend({ group_name: target.assigned_to_group?.name, target, targetType: options.targetType, + priority: target.assignment_priority, }, }); }, diff --git a/assets/javascripts/discourse/templates/modal/assign-user.hbs b/assets/javascripts/discourse/templates/modal/assign-user.hbs index 1043095..7144e26 100644 --- a/assets/javascripts/discourse/templates/modal/assign-user.hbs +++ b/assets/javascripts/discourse/templates/modal/assign-user.hbs @@ -25,6 +25,17 @@ {{/each}} + + {{combo-box + name="assign-priority" + content=priorities + value=model.priority + valueProperty="value" + onChange=(action "assignPriority") + options=(hash + none="discourse_assign.priorities.none" + ) + }} {{/d-modal-body}} diff --git a/config/locales/client.en.yml b/config/locales/client.en.yml index 629b81f..ade1a77 100644 --- a/config/locales/client.en.yml +++ b/config/locales/client.en.yml @@ -47,12 +47,13 @@ en: help: "Reassign Topic to a different user" reassign_modal: title: "Reassign Topic" - description: "Enter the name of the user you'd like to Reassign this topic" + description: "Enter the name of the user you'd like to reassign this topic" assign_modal: title: "Assign Topic" reassign_title: "Reassign Topic" description: "Enter the name of the user you'd like to assign this topic" assign: "Assign" + priority_label: Set a priority (Optional) assign_post_modal: title: "Assign Post" description: "Enter the name of the user you'd like to assign this post" @@ -79,6 +80,12 @@ en: assign: "Assign" assignable_levels: title: "Who can assign this group" + priorities: + none: None + low: Low + medium: Medium + high: High + urgent: Urgent user: messages: assigned_title: "Assigned (%{count})"