From d30c04430e1a955ab8625cd6ba1d2b5f96a67f68 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Rijaniaina=20Elie=20Fid=C3=A8le?= <elierijaniaina@gmail.com>
Date: Tue, 25 Feb 2025 14:27:57 +0300
Subject: [PATCH] feat: create action with mention

---
 assets/js/aap/aap.js | 10 ++++++++++
 assets/js/co.js      | 41 +++++++++++++++++++++++++++++++----------
 2 files changed, 41 insertions(+), 10 deletions(-)

diff --git a/assets/js/aap/aap.js b/assets/js/aap/aap.js
index d76c4e10a..e55daccb0 100755
--- a/assets/js/aap/aap.js
+++ b/assets/js/aap/aap.js
@@ -5923,6 +5923,16 @@ var aapObj = {
 							canAddCard: isContributor,
 							canEditHeader: isContributor,
 							editable: isContributor,
+							enableMention: true,
+							canContributes: Object.keys(projectContributors).map(key => {
+								const contributor = projectContributors[key];
+								return {
+									id: key,
+									name: contributor.name,
+									alias: contributor.username,
+									image: contributor.image
+								};
+							}),
 							onParticipate: function (data) {
 								var contributors = data.contributors.map(contributor => contributor.id);
 								var index = contributors.indexOf(userId);
diff --git a/assets/js/co.js b/assets/js/co.js
index 89af83918..ee55bfba3 100755
--- a/assets/js/co.js
+++ b/assets/js/co.js
@@ -1837,20 +1837,21 @@ var coInterface = {
 			});
 		},
 		request_create_action: function (post) {
-			var url = baseUrl;
+			var url = "/costum/project/action/request/new";
 
 			return new Promise(function (resolve, reject) {
 				if (typeof post !== 'object' || !post)
 					reject({
-						success: false,
-						data: 'Empty parameter'
+						side: "client",
+						msg: 'Empty parameter',
+						fn: "request_create_action",
 					});
 				else {
-					if (post.serverUrl) {
-						url = post.serverUrl;
-						delete post.serverUrl;
-					}
-					url += '/costum/project/action/request/new';
+					if (post.server_url) {
+						url = post.server_url + url;
+						delete post.server_url;
+					} else
+						url = baseUrl + url;
 					var key_list = ['name', 'status', 'parentId', 'parentType'];
 					var ft = { success: true, data: [] };
 					key_list.forEach(function (key_item) {
@@ -1862,8 +1863,28 @@ var coInterface = {
 					if (!ft.success)
 						ft.data = 'Missing parameters : ' + ft.data.join(', ') + '.';
 					if (!ft.success)
-						reject(ft);
-					ajaxPost(null, url, post, resolve, reject);
+						reject({
+							side: "client",
+							msg: ft.data,
+							fn: "request_create_action",
+						});
+					else
+						ajaxPost(null, url, post, response => {
+							if (response.success)
+								resolve(response.content);
+							else
+								reject({
+									side: "server",
+									msg: response.content,
+									fn: "request_create_action",
+								});
+						}, (xhr, status, error) => {
+							reject({
+								side: "server",
+								msg: error,
+								fn: "request_create_action",
+							});
+						});
 				}
 			});
 		},
-- 
GitLab