From b9b71b2015f6eeaa8d0638bf1eb359bbedb2a212 Mon Sep 17 00:00:00 2001 From: Yuri Kuznetsov Date: Thu, 13 Feb 2025 21:21:20 +0200 Subject: [PATCH 1/6] calendar month title fix --- client/modules/crm/src/views/calendar/calendar.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/modules/crm/src/views/calendar/calendar.js b/client/modules/crm/src/views/calendar/calendar.js index b63257d8ee..3fb8e9cbee 100644 --- a/client/modules/crm/src/views/calendar/calendar.js +++ b/client/modules/crm/src/views/calendar/calendar.js @@ -453,7 +453,7 @@ class CalendarView extends View { start + this.rangeSeparator + end : start; } else { - title = moment(view.currentStart).format(format); + title = this.dateToMoment(view.currentStart).format(format); } if (this.options.userId && this.options.userName) { From 5c7467e4bf229af64468323bf02d38b99891e6a0 Mon Sep 17 00:00:00 2001 From: Yuri Kuznetsov Date: Fri, 14 Feb 2025 12:00:35 +0200 Subject: [PATCH 2/6] select related create fix --- client/src/helpers/record/select-related.js | 18 +++++++++++++++++- client/src/views/modals/select-records.js | 13 +++++++++++++ client/src/views/record/panels/relationship.js | 5 ++++- 3 files changed, 34 insertions(+), 2 deletions(-) diff --git a/client/src/helpers/record/select-related.js b/client/src/helpers/record/select-related.js index d34c0e33d5..c9e4b3baae 100644 --- a/client/src/helpers/record/select-related.js +++ b/client/src/helpers/record/select-related.js @@ -58,6 +58,8 @@ class SelectRelatedHelper { * primaryFilterName?: string, * boolFilterList?: string[]|string, * viewKey?: string, + * hasCreate?: boolean, + * onCreate?: function(): void, * }} options */ process(model, link, options = {}) { @@ -159,10 +161,14 @@ class SelectRelatedHelper { const orderBy = filters.orderBy || panelDefs.selectOrderBy; const orderDirection = filters.orderBy ? filters.order : panelDefs.selectOrderDirection; + const createButton = options.hasCreate === true && options.onCreate !== undefined; + + /** @type {import('views/modals/select-records').default} */ + let modalView; + this.view.createView('dialogSelectRelated', viewName, { scope: scope, multiple: true, - triggerCreateEvent: true, filters: advanced, massRelateEnabled: massRelateEnabled, primaryFilterName: primaryFilterName, @@ -171,7 +177,17 @@ class SelectRelatedHelper { layoutName: panelDefs.selectLayout, orderBy: orderBy, orderDirection: orderDirection, + createButton: createButton, + onCreate: () => { + modalView.close(); + + if (options.onCreate) { + options.onCreate(); + } + }, }, view => { + modalView = view; + view.render(); Espo.Ui.notify(false); diff --git a/client/src/views/modals/select-records.js b/client/src/views/modals/select-records.js index ba17fda9e7..7cb1d8c919 100644 --- a/client/src/views/modals/select-records.js +++ b/client/src/views/modals/select-records.js @@ -100,6 +100,7 @@ class SelectRecordsModalView extends ModalView { * @property {function(): Promise} [createAttributesProvider] Create-attributes provider. * @property {Record} [createAttributes] Create-attributes. * @property {function(import('model').default[])} [onSelect] On record select. As of 9.0.0. + * @property {function(import('model').default[])} [onCreate] On create click. As of 9.0.5. */ /** @@ -113,6 +114,11 @@ class SelectRecordsModalView extends ModalView { /** @private */ this.onSelect = options.onSelect; } + + if (options.onCreate) { + /** @private */ + this.onCreate = options.onCreate; + } } data() { @@ -388,6 +394,13 @@ class SelectRecordsModalView extends ModalView { } create() { + if (this.onCreate) { + this.onCreate(); + + return; + } + + // @todo Remove in v9.1.0. Kept bc. if (this.options.triggerCreateEvent) { this.trigger('create'); diff --git a/client/src/views/record/panels/relationship.js b/client/src/views/record/panels/relationship.js index 087a9dce1a..56f60a2664 100644 --- a/client/src/views/record/panels/relationship.js +++ b/client/src/views/record/panels/relationship.js @@ -885,7 +885,10 @@ class RelationshipPanelView extends BottomPanelView { actionSelectRelated() { const helper = new SelectRelatedHelper(this); - helper.process(this.model, this.link); + helper.process(this.model, this.link, { + hasCreate: this.defs.create, + onCreate: () => this.actionCreateRelated(), + }); } /** From 0e639ef6a8eb894c07b0c88c02c27095f90e067f Mon Sep 17 00:00:00 2001 From: Yuri Kuznetsov Date: Fri, 14 Feb 2025 12:03:57 +0200 Subject: [PATCH 3/6] fix docs --- client/src/views/modals/select-records.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/views/modals/select-records.js b/client/src/views/modals/select-records.js index 7cb1d8c919..9d9e0e3f24 100644 --- a/client/src/views/modals/select-records.js +++ b/client/src/views/modals/select-records.js @@ -100,7 +100,7 @@ class SelectRecordsModalView extends ModalView { * @property {function(): Promise} [createAttributesProvider] Create-attributes provider. * @property {Record} [createAttributes] Create-attributes. * @property {function(import('model').default[])} [onSelect] On record select. As of 9.0.0. - * @property {function(import('model').default[])} [onCreate] On create click. As of 9.0.5. + * @property {function()} [onCreate] On create click. As of 9.0.5. */ /** From 2e9437572dd60e9cbd81d17ec297b70c944434b0 Mon Sep 17 00:00:00 2001 From: Yuri Kuznetsov Date: Fri, 14 Feb 2025 13:15:26 +0200 Subject: [PATCH 4/6] fix list tree where --- application/Espo/Core/Controllers/RecordTree.php | 9 +++------ application/Espo/Services/RecordTree.php | 10 +++++++--- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/application/Espo/Core/Controllers/RecordTree.php b/application/Espo/Core/Controllers/RecordTree.php index 37ee9a797a..66f267056b 100644 --- a/application/Espo/Core/Controllers/RecordTree.php +++ b/application/Espo/Core/Controllers/RecordTree.php @@ -63,15 +63,12 @@ class RecordTree extends Record return (object) $this->actionListTree($request->getRouteParams(), $request->getParsedBody(), $request); } - $where = $request->getQueryParams()['where'] ?? null; + $selectParams = $this->fetchSearchParamsFromRequest($request); + $parentId = $request->getQueryParam('parentId'); $maxDepth = $request->getQueryParam('maxDepth'); $onlyNotEmpty = (bool) $request->getQueryParam('onlyNotEmpty'); - if ($where !== null && !is_array($where)) { - throw new BadRequest(); - } - if ($maxDepth !== null) { $maxDepth = (int) $maxDepth; } @@ -79,7 +76,7 @@ class RecordTree extends Record $collection = $this->getRecordTreeService()->getTree( $parentId, [ - 'where' => $where, + 'where' => $selectParams->getWhere(), 'onlyNotEmpty' => $onlyNotEmpty, ], $maxDepth diff --git a/application/Espo/Services/RecordTree.php b/application/Espo/Services/RecordTree.php index 5ce2b89b26..e24c2afe35 100644 --- a/application/Espo/Services/RecordTree.php +++ b/application/Espo/Services/RecordTree.php @@ -64,7 +64,7 @@ class RecordTree extends Record protected $categoryField = null; /** - * @param array $params + * @param array{where?: ?WhereItem, onlyNotEmpty?: bool} $params * @return ?Collection * @throws Forbidden * @throws BadRequest @@ -84,7 +84,7 @@ class RecordTree extends Record } /** - * @param array $params + * @param array{where?: ?WhereItem, onlyNotEmpty?: bool} $params * @return ?Collection * @throws BadRequest * @throws Forbidden @@ -104,7 +104,11 @@ class RecordTree extends Record return null; } - $searchParams = SearchParams::fromRaw($params); + $searchParams = SearchParams::create(); + + if (isset($params['where'])) { + $searchParams = $searchParams->withWhere($params['where']); + } $selectBuilder = $this->selectBuilderFactory ->create() From cb34377363f1240ca4716bef6ca5b6b04e3a61ed Mon Sep 17 00:00:00 2001 From: Yuri Kuznetsov Date: Fri, 14 Feb 2025 16:18:13 +0200 Subject: [PATCH 5/6] formula field style impr --- client/res/templates/fields/formula/edit.tpl | 11 +++++------ frontend/less/espo/custom.less | 16 ++++++++++++++++ 2 files changed, 21 insertions(+), 6 deletions(-) diff --git a/client/res/templates/fields/formula/edit.tpl b/client/res/templates/fields/formula/edit.tpl index 3a7fb1eb9b..0c74b7dd95 100644 --- a/client/res/templates/fields/formula/edit.tpl +++ b/client/res/templates/fields/formula/edit.tpl @@ -1,16 +1,15 @@ - -
-
+
+
{{value}}
{{#if hasSide}} -
+
{{#if hasCheckSyntax}} @@ -18,7 +17,7 @@ {{#if hasInsert}}