From d6c19e856dc9863f84e267efc55077a06b40a957 Mon Sep 17 00:00:00 2001 From: Abdeali Chharchhodawala <99460106+Abdeali099@users.noreply.github.com> Date: Thu, 18 Dec 2025 18:45:01 +0530 Subject: [PATCH] refactor: proper msg for users with role (#35099) * refactor: proper msg for users with role * refactor: better UI for showing users with role * refactor: filter with role name instead usernames * chore: simplify user list display in permission manager --- .../permission_manager/permission_manager.js | 67 ++++++++++++++++--- 1 file changed, 56 insertions(+), 11 deletions(-) diff --git a/frappe/core/page/permission_manager/permission_manager.js b/frappe/core/page/permission_manager/permission_manager.js index 129f1aea4a..09b400ae9b 100644 --- a/frappe/core/page/permission_manager/permission_manager.js +++ b/frappe/core/page/permission_manager/permission_manager.js @@ -344,23 +344,68 @@ frappe.PermissionEngine = class PermissionEngine { .find("a") .attr("data-role", role) .click(function () { - let role = $(this).attr("data-role"); + const role = $(this).attr("data-role"); frappe.call({ module: "frappe.core", page: "permission_manager", method: "get_users_with_role", - args: { - role: role, - }, + args: { role }, callback: function (r) { - r.message = $.map(r.message, function (p) { - return $.format('{1}', [p, p]); + let message_html = ""; + + const role_label = __(role); + const users = (r.message || []).filter(Boolean); + const user_count = users.length; + const display_count = Math.min(user_count, 5); + + if (user_count === 0) { + message_html = __("No user has the role {0}", [ + role_label, + ]); + } else { + const user_text = user_count === 1 ? __("User") : __("Users"); + const display_users = users.slice(0, display_count); + + const user_list = display_users + .map( + (user) => + `