From 7ab93d141040eea86efb129e8e50a0cb34caf01a Mon Sep 17 00:00:00 2001 From: Arpit Jalan Date: Tue, 2 May 2023 15:00:08 +0530 Subject: [PATCH] FEATURE: allow adding note when bulk assigning topics --- .../discourse-assign/controllers/assign-user.js | 16 ++++++---------- .../initializers/extend-for-assigns.js | 2 +- plugin.rb | 5 ++++- spec/components/topics_bulk_action_spec.rb | 5 ++++- 4 files changed, 15 insertions(+), 13 deletions(-) diff --git a/assets/javascripts/discourse-assign/controllers/assign-user.js b/assets/javascripts/discourse-assign/controllers/assign-user.js index 57d8fe3..f9e4ef1 100644 --- a/assets/javascripts/discourse-assign/controllers/assign-user.js +++ b/assets/javascripts/discourse-assign/controllers/assign-user.js @@ -43,10 +43,11 @@ export default Controller.extend(ModalFunctionality, { } }, - bulkAction(username) { + bulkAction(username, note) { return this.topicBulkActions.performAndRefresh({ type: "assign", username, + note, }); }, @@ -81,7 +82,10 @@ export default Controller.extend(ModalFunctionality, { @action assign() { if (this.isBulkAction) { - return this.bulkAction(this.model.username); + return this.bulkAction( + this.get("model.username"), + this.get("model.note") + ); } if (!this.assigneeName) { @@ -127,10 +131,6 @@ export default Controller.extend(ModalFunctionality, { @action assignUser(name) { - if (this.isBulkAction) { - return this.bulkAction(name); - } - this.setGroupOrUser(name); if (name) { @@ -140,10 +140,6 @@ export default Controller.extend(ModalFunctionality, { @action assignUsername(selected) { - if (this.isBulkAction) { - return this.bulkAction(selected.firstObject); - } - this.setGroupOrUser(selected.firstObject); }, diff --git a/assets/javascripts/discourse-assign/initializers/extend-for-assigns.js b/assets/javascripts/discourse-assign/initializers/extend-for-assigns.js index 2e46b2e..ec2a413 100644 --- a/assets/javascripts/discourse-assign/initializers/extend-for-assigns.js +++ b/assets/javascripts/discourse-assign/initializers/extend-for-assigns.js @@ -945,7 +945,7 @@ export default { actions: { showReAssign() { this.set("assignUser.isBulkAction", true); - this.set("assignUser.model", { username: "" }); + this.set("assignUser.model", { username: "", note: "" }); this.send("changeBulkTemplate", "modal/assign-user"); }, unassignTopics() { diff --git a/plugin.rb b/plugin.rb index 42d6377..1c486d2 100644 --- a/plugin.rb +++ b/plugin.rb @@ -627,7 +627,9 @@ after_initialize do TopicsBulkAction.register_operation("assign") do if @user.can_assign? assign_user = User.find_by_username(@operation[:username]) - topics.each { |topic| Assigner.new(topic, @user).assign(assign_user) } + topics.each do |topic| + Assigner.new(topic, @user).assign(assign_user, note: @operation[:note]) + end end end @@ -638,6 +640,7 @@ after_initialize do end register_permitted_bulk_action_parameter :username + register_permitted_bulk_action_parameter :note add_to_class(:user_bookmark_base_serializer, :assigned_to) do @assigned_to ||= diff --git a/spec/components/topics_bulk_action_spec.rb b/spec/components/topics_bulk_action_spec.rb index 9cff77b..84dd299 100644 --- a/spec/components/topics_bulk_action_spec.rb +++ b/spec/components/topics_bulk_action_spec.rb @@ -22,7 +22,7 @@ describe TopicsBulkAction do TopicsBulkAction.new( user, [post.topic.id, post1.topic.id], - { type: "assign", username: user.username }, + { type: "assign", username: user.username, note: "foobar" }, ).perform! assigned_topics = TopicQuery.new(user, { page: 0 }).list_messages_assigned(user).topics @@ -30,6 +30,9 @@ describe TopicsBulkAction do expect(assigned_topics.length).to eq(2) expect(assigned_topics).to contain_exactly(post.topic, post1.topic) + + expect(post.topic.assignment.note).to eq "foobar" + expect(post1.topic.assignment.note).to eq "foobar" end it "doesn't allows to assign to user not in assign_allowed_group" do