diff --git a/application/Espo/Resources/metadata/clientDefs/User.json b/application/Espo/Resources/metadata/clientDefs/User.json index e3286d0c21..fb6984d98a 100644 --- a/application/Espo/Resources/metadata/clientDefs/User.json +++ b/application/Espo/Resources/metadata/clientDefs/User.json @@ -107,6 +107,9 @@ "rowActionsView": "crm:views/record/row-actions/relationship-target", "layout": "listForTarget", "view": "crm:views/record/panels/target-lists" + }, + "contact": { + "selectHandler": "handlers/user/select-contact" } }, "layoutDefaultSidePanelDisabled": true, diff --git a/client/src/handlers/user/select-contact.js b/client/src/handlers/user/select-contact.js new file mode 100644 index 0000000000..3026e27e8b --- /dev/null +++ b/client/src/handlers/user/select-contact.js @@ -0,0 +1,55 @@ +/************************************************************************ + * This file is part of EspoCRM. + * + * EspoCRM – Open Source CRM application. + * Copyright (C) 2014-2025 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko + * Website: https://www.espocrm.com + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + * + * The interactive user interfaces in modified source and object code versions + * of this program must display Appropriate Legal Notices, as required under + * Section 5 of the GNU Affero General Public License version 3. + * + * In accordance with Section 7(b) of the GNU Affero General Public License version 3, + * these Appropriate Legal Notices must retain the display of the "EspoCRM" word. + ************************************************************************/ + +import SelectRelatedHandler from 'handlers/select-related'; + +export default class extends SelectRelatedHandler { + + /** + * @param {import('model').default} model + */ + async getFilters(model) { + /** @type {string[]|null} */ + const accountIds = model.attributes.accountsIds; + + if (accountIds && accountIds.length) { + return { + advanced: { + accounts: { + field: 'accounts', + type: 'linkedWith', + value: accountIds, + data: {nameHash: model.attributes.accountsNames || {}}, + }, + }, + }; + } + + return {}; + } +} diff --git a/client/src/views/user/record/detail.js b/client/src/views/user/record/detail.js index 91ed969433..6efbb274c1 100644 --- a/client/src/views/user/record/detail.js +++ b/client/src/views/user/record/detail.js @@ -346,8 +346,8 @@ class UserDetailRecordView extends DetailRecordView { "label": "Portal", "name": "portal", "rows": [ - [{"name":"portals"}, {"name":"contact"}], - [{"name":"portalRoles"}, {"name":"accounts"}], + [{"name": "portals"}, {"name": "accounts"}], + [{"name": "portalRoles"}, {"name": "contact"}], ] }); diff --git a/client/src/views/user/record/edit.js b/client/src/views/user/record/edit.js index 08396432ec..4de05f830b 100644 --- a/client/src/views/user/record/edit.js +++ b/client/src/views/user/record/edit.js @@ -191,8 +191,8 @@ class UserEditRecordView extends EditRecordView { "label": "Portal", "name": "portal", "rows": [ - [{"name": "portals"}, {"name": "contact"}], - [{"name": "portalRoles"}, {"name": "accounts"}] + [{"name": "portals"}, {"name": "accounts"}], + [{"name": "portalRoles"}, {"name": "contact"}] ] });