From 162e05449c2c7fcd4f404341dc1bdea4258ca01c Mon Sep 17 00:00:00 2001 From: Yuri Kuznetsov Date: Wed, 28 May 2025 12:00:59 +0300 Subject: [PATCH 1/6] field view: fromField handling --- client/src/views/fields/base.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/client/src/views/fields/base.js b/client/src/views/fields/base.js index 619887de25..241b33853e 100644 --- a/client/src/views/fields/base.js +++ b/client/src/views/fields/base.js @@ -875,7 +875,7 @@ class BaseFieldView extends View { this.attributeList = this.getAttributeList(); // for backward compatibility, to be removed this.listenTo(this.model, 'change', (model, options) => { - if (options.ui) { + if (options.ui && (!options.fromField || options.fromField === this.name)) { return; } @@ -950,6 +950,7 @@ class BaseFieldView extends View { this.model.set(attributes, { ui: true, fromView: this, + fromField: this.name, action: 'ui', }); }); From 85639451994b3bb0921c8b62f476216c15b58173 Mon Sep 17 00:00:00 2001 From: Yuri Kuznetsov Date: Wed, 28 May 2025 12:26:17 +0300 Subject: [PATCH 2/6] modal list without buttons sticky header fix --- frontend/less/espo/elements/modal.less | 27 +++++++++++++++++++------- 1 file changed, 20 insertions(+), 7 deletions(-) diff --git a/frontend/less/espo/elements/modal.less b/frontend/less/espo/elements/modal.less index 37709af6e5..082b956554 100644 --- a/frontend/less/espo/elements/modal.less +++ b/frontend/less/espo/elements/modal.less @@ -214,13 +214,26 @@ } } -.modal-dialog .modal-body .list-sticky-bar { - top: var(--94px) !important; - width: 100% !important; - right: 0 !important; - left: unset !important; - padding-left: calc(var(--container-padding) - var(--1px)); - padding-right: calc(var(--container-padding) - var(--1px) + var(--scroll-width)); +.modal-dialog { + + .modal-body { + .list-sticky-bar { + top: var(--94px) !important; + width: 100% !important; + right: 0 !important; + left: unset !important; + padding-left: calc(var(--container-padding) - var(--1px)); + padding-right: calc(var(--container-padding) - var(--1px) + var(--scroll-width)); + } + } + + &:not(:has(footer.modal-footer)) { + .modal-body { + .list-sticky-bar { + top: var(--43px) !important; + } + } + } } @media screen and (max-width: @screen-xs-max) { From 34c1cdbe866b1e5cd95d254cb31335fc71f9aba1 Mon Sep 17 00:00:00 2001 From: Yuri Kuznetsov Date: Wed, 28 May 2025 16:40:36 +0300 Subject: [PATCH 3/6] less js compress --- Gruntfile.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/Gruntfile.js b/Gruntfile.js index b31a157c97..85900f47f3 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -185,7 +185,10 @@ module.exports = grunt => { }, beautify: false, mangle: true, - compress: true + compress: { + sequences: false, + collapse_vars: false, + }, }, bundle: { options: { From 1b385f987bc139f90f2bd50ff81822e36a990d65 Mon Sep 17 00:00:00 2001 From: Yuri Kuznetsov Date: Wed, 28 May 2025 17:19:01 +0300 Subject: [PATCH 4/6] js compress to support ios --- Gruntfile.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Gruntfile.js b/Gruntfile.js index 85900f47f3..d09ea23413 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -184,10 +184,11 @@ module.exports = grunt => { comments: /^!/, }, beautify: false, - mangle: true, compress: { sequences: false, collapse_vars: false, + keep_fargs: true, + webkit: true, }, }, bundle: { From 98eb304903977fb0defc81c5240c2f41d85ba875 Mon Sep 17 00:00:00 2001 From: Yuri Kuznetsov Date: Thu, 29 May 2025 09:38:16 +0300 Subject: [PATCH 5/6] fix pgsql interval --- .../Espo/ORM/QueryComposer/PostgresqlQueryComposer.php | 4 ++-- tests/unit/Espo/ORM/PostgresqlQueryComposerTest.php | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/application/Espo/ORM/QueryComposer/PostgresqlQueryComposer.php b/application/Espo/ORM/QueryComposer/PostgresqlQueryComposer.php index c87852d2e0..375f9c002a 100644 --- a/application/Espo/ORM/QueryComposer/PostgresqlQueryComposer.php +++ b/application/Espo/ORM/QueryComposer/PostgresqlQueryComposer.php @@ -196,10 +196,10 @@ class PostgresqlQueryComposer extends BaseQueryComposer $minutes = (int) (floatval($offsetHoursString) * 60); $minutesString = (string) $minutes; - return "$argumentPartList[0] + INTERVAL 'MINUTE $minutesString'"; + return "$argumentPartList[0] + INTERVAL '$minutesString MINUTE'"; } - return "$argumentPartList[0] + INTERVAL 'HOUR $offsetHoursString'"; + return "$argumentPartList[0] + INTERVAL '$offsetHoursString HOUR'"; } if ($function === 'POSITION_IN_LIST') { diff --git a/tests/unit/Espo/ORM/PostgresqlQueryComposerTest.php b/tests/unit/Espo/ORM/PostgresqlQueryComposerTest.php index 247b718783..ec4f7bf837 100644 --- a/tests/unit/Espo/ORM/PostgresqlQueryComposerTest.php +++ b/tests/unit/Espo/ORM/PostgresqlQueryComposerTest.php @@ -296,7 +296,7 @@ class PostgresqlQueryComposerTest extends \PHPUnit\Framework\TestCase $sql = $this->queryComposer->composeSelect($query); $expectedSql = - 'SELECT "comment"."created_at" + INTERVAL \'MINUTE 330\' AS "createdAt" ' . + 'SELECT "comment"."created_at" + INTERVAL \'330 MINUTE\' AS "createdAt" ' . 'FROM "comment"'; $this->assertEquals($expectedSql, $sql); @@ -319,7 +319,7 @@ class PostgresqlQueryComposerTest extends \PHPUnit\Framework\TestCase $sql = $this->queryComposer->composeSelect($query); $expectedSql = - 'SELECT "comment"."created_at" + INTERVAL \'MINUTE -330\' AS "createdAt" ' . + 'SELECT "comment"."created_at" + INTERVAL \'-330 MINUTE\' AS "createdAt" ' . 'FROM "comment"'; $this->assertEquals($expectedSql, $sql); @@ -342,7 +342,7 @@ class PostgresqlQueryComposerTest extends \PHPUnit\Framework\TestCase $sql = $this->queryComposer->composeSelect($query); $expectedSql = - 'SELECT "comment"."created_at" + INTERVAL \'HOUR 5\' AS "createdAt" ' . + 'SELECT "comment"."created_at" + INTERVAL \'5 HOUR\' AS "createdAt" ' . 'FROM "comment"'; $this->assertEquals($expectedSql, $sql); From acf5c2984d34a5ddcbab496f985d02274fc144a8 Mon Sep 17 00:00:00 2001 From: Yuri Kuznetsov Date: Thu, 29 May 2025 10:00:56 +0300 Subject: [PATCH 6/6] 9.1.5 --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index a67976d482..f8e5563c20 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "espocrm", - "version": "9.1.4", + "version": "9.1.5", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "espocrm", - "version": "9.1.4", + "version": "9.1.5", "hasInstallScript": true, "license": "AGPL-3.0-or-later", "dependencies": { diff --git a/package.json b/package.json index a7db4a7ce6..30e54adbf8 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "espocrm", - "version": "9.1.4", + "version": "9.1.5", "description": "Open-source CRM.", "repository": { "type": "git",