From 76825391140aae76555d1140c2d787b46296fa20 Mon Sep 17 00:00:00 2001 From: Yuri Kuznetsov Date: Mon, 10 Jun 2024 12:15:29 +0300 Subject: [PATCH 01/23] fix submit reminders --- .../Espo/Modules/Crm/Jobs/SubmitPopupReminders.php | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/application/Espo/Modules/Crm/Jobs/SubmitPopupReminders.php b/application/Espo/Modules/Crm/Jobs/SubmitPopupReminders.php index 49beda5e8f..3e2cd1c233 100644 --- a/application/Espo/Modules/Crm/Jobs/SubmitPopupReminders.php +++ b/application/Espo/Modules/Crm/Jobs/SubmitPopupReminders.php @@ -120,14 +120,14 @@ class SubmitPopupReminders implements JobDataLess } } - $dateAttribute = 'dateStart'; + $dateField = 'dateStart'; $entityDefs = $this->entityManager->getDefs()->getEntity($entityType); if ($entityDefs->hasField('reminders')) { - $dateAttribute = $entityDefs + $dateField = $entityDefs ->getField('reminders') - ->getParam('dateField') ?? $dateAttribute; + ->getParam('dateField') ?? $dateField; } $submitData[$userId] ??= []; @@ -137,8 +137,12 @@ class SubmitPopupReminders implements JobDataLess 'data' => (object) [ 'id' => $entity->getId(), 'entityType' => $entityType, - $dateAttribute => $entity->get($dateAttribute), 'name' => $entity->get('name'), + 'dateField' => $dateField, + 'attributes' => (object) [ + $dateField => $entity->get($dateField), + $dateField . 'Date' => $entity->get($dateField . 'Date'), + ], ], ];; From 808e2f8788d954872409136fc1aecd3f8bee7f00 Mon Sep 17 00:00:00 2001 From: Yuri Kuznetsov Date: Mon, 10 Jun 2024 14:34:38 +0300 Subject: [PATCH 02/23] ref --- .../Espo/Modules/Crm/Tools/Activities/UpcomingService.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/application/Espo/Modules/Crm/Tools/Activities/UpcomingService.php b/application/Espo/Modules/Crm/Tools/Activities/UpcomingService.php index d8470aec50..e095180dda 100644 --- a/application/Espo/Modules/Crm/Tools/Activities/UpcomingService.php +++ b/application/Espo/Modules/Crm/Tools/Activities/UpcomingService.php @@ -33,6 +33,7 @@ use Espo\Core\Acl; use Espo\Core\Exceptions\BadRequest; use Espo\Core\Exceptions\NotFound; use Espo\Core\Exceptions\Forbidden; +use Espo\Core\Select\Bool\Filters\OnlyMy; use Espo\Core\Utils\Config; use Espo\Core\Utils\DateTime as DateTimeUtil; use Espo\Core\Utils\Metadata; @@ -192,7 +193,7 @@ class UpcomingService ->create() ->from($entityType) ->forUser($user) - ->withBoolFilter('onlyMy') + ->withBoolFilter(OnlyMy::NAME) ->withStrictAccessControl(); $primaryFilter = Planned::NAME; From 7ecc0dc6a9c068675b94221741fb1d50a5205826 Mon Sep 17 00:00:00 2001 From: Yuri Kuznetsov Date: Mon, 10 Jun 2024 14:50:59 +0300 Subject: [PATCH 03/23] upcoming activities order impr --- .../Espo/Modules/Crm/Tools/Activities/UpcomingService.php | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/application/Espo/Modules/Crm/Tools/Activities/UpcomingService.php b/application/Espo/Modules/Crm/Tools/Activities/UpcomingService.php index e095180dda..0b4aaa8766 100644 --- a/application/Espo/Modules/Crm/Tools/Activities/UpcomingService.php +++ b/application/Espo/Modules/Crm/Tools/Activities/UpcomingService.php @@ -146,6 +146,8 @@ class UpcomingService $maxSize = $params->maxSize ?? 0; $unionQuery = $builder + ->order('dateEndIsNull') + ->order('order') ->order('dateStart') ->order('dateEnd') ->order('name') @@ -196,9 +198,11 @@ class UpcomingService ->withBoolFilter(OnlyMy::NAME) ->withStrictAccessControl(); + $orderField = 'dateStart'; $primaryFilter = Planned::NAME; if ($entityType === Task::ENTITY_TYPE) { + $orderField = 'dateEnd'; $primaryFilter = Actual::NAME; } @@ -214,6 +218,8 @@ class UpcomingService 'dateStart', 'dateEnd', ['"' . $entityType . '"', 'entityType'], + ['IS_NULL:(dateEnd)', 'dateEndIsNull'], + [$orderField, 'order'], ]); return $queryBuilder->build(); From e56c64dba4cc2af32cea8159c1428f95842504e5 Mon Sep 17 00:00:00 2001 From: Yuri Kuznetsov Date: Wed, 12 Jun 2024 09:15:35 +0300 Subject: [PATCH 04/23] schema --- schema/metadata/entityDefs.json | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/schema/metadata/entityDefs.json b/schema/metadata/entityDefs.json index c847abf7ae..42e298f4bb 100644 --- a/schema/metadata/entityDefs.json +++ b/schema/metadata/entityDefs.json @@ -390,6 +390,31 @@ } } }, + { + "if": { + "properties": { + "type": { + "anyOf": [ + {"const": "date"}, + {"const": "datetime"}, + {"const": "datetimeOptional"} + ] + } + } + }, + "then": { + "properties": { + "before": { + "type": "string", + "description": "Before a field. To validate that the date should be before the date specified in another field." + }, + "after": { + "type": "string", + "description": "After a field. To validate that the date should be after the date specified in another field." + } + } + } + }, { "if": { "properties": { @@ -874,7 +899,7 @@ }, "orderDisabled": { "type": "boolean", - "default": "Disables the ability to order by the field." + "description": "Disables the ability to order by the field." }, "textFilterDisabled": { "type": "boolean", From 91177fc0d22e1d7b52cf0aa1881f0455cc27471d Mon Sep 17 00:00:00 2001 From: Yuri Kuznetsov Date: Wed, 12 Jun 2024 11:58:28 +0300 Subject: [PATCH 05/23] schema --- schema/metadata/aclDefs.json | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/schema/metadata/aclDefs.json b/schema/metadata/aclDefs.json index 6de9251542..d0adb0da8f 100644 --- a/schema/metadata/aclDefs.json +++ b/schema/metadata/aclDefs.json @@ -35,6 +35,10 @@ "additionalProperties": { "type": "string" } + }, + "link": { + "type": "string", + "description": "A link name to check access to a related record instead of an actual record. Actual if access checker is Espo\\Core\\Acl\\AccessChecker\\AccessCheckers\\Foreign." } } } From b05697d874cd41329304ab0d629edf71edd2a0a8 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 12 Jun 2024 19:57:07 +0000 Subject: [PATCH 06/23] Bump braces from 3.0.2 to 3.0.3 Bumps [braces](https://github.com/micromatch/braces) from 3.0.2 to 3.0.3. - [Changelog](https://github.com/micromatch/braces/blob/master/CHANGELOG.md) - [Commits](https://github.com/micromatch/braces/compare/3.0.2...3.0.3) --- updated-dependencies: - dependency-name: braces dependency-type: indirect ... Signed-off-by: dependabot[bot] --- package-lock.json | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/package-lock.json b/package-lock.json index 70e5304250..c4040b9907 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2498,11 +2498,11 @@ } }, "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "dependencies": { - "fill-range": "^7.0.1" + "fill-range": "^7.1.1" }, "engines": { "node": ">=8" @@ -3410,9 +3410,9 @@ } }, "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "dependencies": { "to-regex-range": "^5.0.1" }, @@ -9186,11 +9186,11 @@ } }, "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "requires": { - "fill-range": "^7.0.1" + "fill-range": "^7.1.1" } }, "browserslist": { @@ -9856,9 +9856,9 @@ } }, "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "requires": { "to-regex-range": "^5.0.1" } From df30678484d0945c4a62011f90733983a0aba755 Mon Sep 17 00:00:00 2001 From: Yuri Kuznetsov Date: Fri, 14 Jun 2024 16:58:22 +0300 Subject: [PATCH 07/23] css fix --- frontend/less/espo/elements/form.less | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/frontend/less/espo/elements/form.less b/frontend/less/espo/elements/form.less index 21f2277993..562c7b6cc2 100644 --- a/frontend/less/espo/elements/form.less +++ b/frontend/less/espo/elements/form.less @@ -236,6 +236,10 @@ .input-group-addon { background-color: var(--select-item-bg); color: var(--select-item-text-color); + + &.small { + line-height: 1.4; + } } .input-group-addon:not(:first-child):not(:last-child), From 19638dd649797a580db146e667064dd05b3ce939 Mon Sep 17 00:00:00 2001 From: Yuri Kuznetsov Date: Sat, 15 Jun 2024 16:14:16 +0300 Subject: [PATCH 08/23] activities panel update-all --- client/modules/crm/src/views/record/panels/activities.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/client/modules/crm/src/views/record/panels/activities.js b/client/modules/crm/src/views/record/panels/activities.js index ded349f70a..1c21fc726a 100644 --- a/client/modules/crm/src/views/record/panels/activities.js +++ b/client/modules/crm/src/views/record/panels/activities.js @@ -161,6 +161,8 @@ class ActivitiesPanelView extends RelationshipPanelView { this.collection.order = this.order; this.collection.maxSize = this.getConfig().get('recordsPerPageSmall') || 5; + this.listenTo(this.model, 'update-all', () => this.collection.fetch()); + this.setFilter(this.filter); this.once('show', () => { From ee7c7046acaea502ce35b19c8dbfd323eea93f8c Mon Sep 17 00:00:00 2001 From: Yuri Kuznetsov Date: Sun, 16 Jun 2024 10:38:15 +0300 Subject: [PATCH 09/23] wysiwyg escape insert link --- client/src/helpers/misc/summernote-custom.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/client/src/helpers/misc/summernote-custom.js b/client/src/helpers/misc/summernote-custom.js index 5ca47c4451..8125d14905 100644 --- a/client/src/helpers/misc/summernote-custom.js +++ b/client/src/helpers/misc/summernote-custom.js @@ -29,6 +29,7 @@ import $ from 'jquery'; import EditTableModalView from 'views/wysiwyg/modals/edit-table'; import EditCellModalView from 'views/wysiwyg/modals/edit-cell'; +import Handlebars from 'handlebars'; /** * @type {{ @@ -721,6 +722,7 @@ function init(langSets) { }; }, + // Not used? 'linkDialog': function (context) { const options = context.options; const self = options.espoView; @@ -745,6 +747,8 @@ function init(langSets) { view.render(); self.listenToOnce(view, 'insert', (data) => { + data.text = Handlebars.Utils.escapeExpression(data.text); + self.$summernote.summernote('createLink', data); }); @@ -815,6 +819,8 @@ function init(langSets) { container.scrollY : container.scrollTop; + data.text = Handlebars.Utils.escapeExpression(data.text); + self.$summernote.summernote('createLink', data); setTimeout(() => container.scroll(0, scrollY), 20); From 1de65689183609b8196439ac4261e60fa0fcfce2 Mon Sep 17 00:00:00 2001 From: Yuri Kuznetsov Date: Mon, 17 Jun 2024 09:09:27 +0300 Subject: [PATCH 10/23] v --- package-lock.json | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index c4040b9907..ba1a579a7c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "espocrm", - "version": "8.2.5", + "version": "8.3.0", "lockfileVersion": 2, "requires": true, "packages": { diff --git a/package.json b/package.json index c3fc924414..848b861e48 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "espocrm", - "version": "8.2.5", + "version": "8.3.0", "description": "Open-source CRM.", "repository": { "type": "git", From 1092b17a136cb45da40f990cf80f34962293015d Mon Sep 17 00:00:00 2001 From: Yuri Kuznetsov Date: Mon, 17 Jun 2024 12:50:10 +0300 Subject: [PATCH 11/23] orm mapper: check deleted when update --- application/Espo/ORM/Mapper/BaseMapper.php | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/application/Espo/ORM/Mapper/BaseMapper.php b/application/Espo/ORM/Mapper/BaseMapper.php index 5e9a53a182..f88736247a 100644 --- a/application/Espo/ORM/Mapper/BaseMapper.php +++ b/application/Espo/ORM/Mapper/BaseMapper.php @@ -837,6 +837,8 @@ class BaseMapper implements RDBMapper $key = $relationName . 'Id'; $foreignRelationName = $this->getRelationParam($entity, $relationName, 'foreign'); + // @todo Check 'deleted' attribute exists. Apply for all usages further. + if ( $foreignRelationName && $this->getRelationParam($relEntity, $foreignRelationName, 'type') === Entity::HAS_ONE @@ -1425,13 +1427,16 @@ class BaseMapper implements RDBMapper return; } + $where = [self::ATTR_ID => $entity->getId()]; + + if ($entity->hasAttribute(self::ATTR_DELETED)) { + $where[self::ATTR_DELETED] = false; + } + $query = UpdateBuilder::create() ->in($entity->getEntityType()) ->set($valueMap) - ->where([ - self::ATTR_ID => $entity->getId(), - self::ATTR_DELETED => false, - ]) + ->where($where) ->build(); $this->queryExecutor->execute($query); @@ -1500,7 +1505,7 @@ class BaseMapper implements RDBMapper */ public function delete(Entity $entity): void { - if (!$entity->hasAttribute('deleted')) { + if (!$entity->hasAttribute(self::ATTR_DELETED)) { $this->deleteFromDb($entity->getEntityType(), $entity->getId()); return; From 80fa391daa5eeaad308807617d30f090083548ab Mon Sep 17 00:00:00 2001 From: Yuri Kuznetsov Date: Mon, 17 Jun 2024 12:51:28 +0300 Subject: [PATCH 12/23] css fix --- frontend/less/espo/elements/navbar.less | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/frontend/less/espo/elements/navbar.less b/frontend/less/espo/elements/navbar.less index 79a1dd8689..0697ea73f7 100644 --- a/frontend/less/espo/elements/navbar.less +++ b/frontend/less/espo/elements/navbar.less @@ -329,18 +329,6 @@ } } -body[data-navbar="top"] { - #navbar { - .navbar-right { - > li { - .icon { - color: var(--navbar-link-icon-color); // @todo Check. - } - } - } - } -} - body[data-navbar="side"] { #navbar > .navbar { .minimizer { From c35d934ba70befc20be47bc1f1cb44a556f46c82 Mon Sep 17 00:00:00 2001 From: Yuri Kuznetsov Date: Mon, 17 Jun 2024 13:23:04 +0300 Subject: [PATCH 13/23] import array, trim --- application/Espo/Tools/Import/Import.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/application/Espo/Tools/Import/Import.php b/application/Espo/Tools/Import/Import.php index 737bf62b9f..298977d060 100644 --- a/application/Espo/Tools/Import/Import.php +++ b/application/Espo/Tools/Import/Import.php @@ -1033,7 +1033,7 @@ class Import return Json::decode($value); } - return explode(',', $value); + return array_map(fn ($it) => trim($it), explode(',', $value)); } return $this->prepareAttributeValue($entity, $attribute, $value); From 61e51bfb31d11ed7210536cfd9f26ee79028841f Mon Sep 17 00:00:00 2001 From: Yuri Kuznetsov Date: Mon, 17 Jun 2024 16:54:21 +0300 Subject: [PATCH 14/23] ref --- client/src/views/fields/phone.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/client/src/views/fields/phone.js b/client/src/views/fields/phone.js index f9b67cf8f4..0b3c9565da 100644 --- a/client/src/views/fields/phone.js +++ b/client/src/views/fields/phone.js @@ -250,7 +250,7 @@ class PhoneFieldView extends VarcharFieldView { if (element) { const obj = this.intlTelInputMap.get(element); - const isPossible = obj.isPossibleNumber(); + const isPossible = obj && obj.isPossibleNumber(); if (obj && !isPossible) { notValid = true; @@ -290,7 +290,7 @@ class PhoneFieldView extends VarcharFieldView { const numberClean = String(number).replace(/[\s+]/g, ''); - if (~numberList.indexOf(numberClean)) { + if (numberList.includes(numberClean)) { this.showValidationMessage(msg, 'div.phone-number-block:nth-child(' + (i + 1) .toString() + ') input.phone-number'); From 3e7326f605fc4eff6f3370b34804f747a9b32e5b Mon Sep 17 00:00:00 2001 From: Yuri Kuznetsov Date: Mon, 17 Jun 2024 16:56:13 +0300 Subject: [PATCH 15/23] ref --- client/src/views/fields/phone.js | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/client/src/views/fields/phone.js b/client/src/views/fields/phone.js index 0b3c9565da..7d555b5553 100644 --- a/client/src/views/fields/phone.js +++ b/client/src/views/fields/phone.js @@ -589,7 +589,7 @@ class PhoneFieldView extends VarcharFieldView { this.dataFieldName = this.name + 'Data'; this.defaultType = this.defaultType || this.getMetadata() - .get('entityDefs.' + this.model.entityType + '.fields.' + this.name + '.defaultType'); + .get(`entityDefs.${this.model.entityType}.fields.${this.name}.defaultType`); this.isOptedOutFieldName = this.name + 'IsOptedOut'; this.isInvalidFieldName = this.name + 'IsInvalid'; @@ -623,9 +623,7 @@ class PhoneFieldView extends VarcharFieldView { } this.erasedPlaceholder = 'ERASED:'; - - this.itemMaxLength = this.getMetadata() - .get(['entityDefs', 'PhoneNumber', 'fields', 'name', 'maxLength']); + this.itemMaxLength = this.getMetadata().get(['entityDefs', 'PhoneNumber', 'fields', 'name', 'maxLength']); this.intlTelInputMap = new Map(); @@ -635,7 +633,7 @@ class PhoneFieldView extends VarcharFieldView { } this.intlTelInputMap.clear(); - }) + }); } /** From bdf7d56e0cda0ef87240b10e038cb2a3d693214a Mon Sep 17 00:00:00 2001 From: Yuri Kuznetsov Date: Mon, 17 Jun 2024 17:13:59 +0300 Subject: [PATCH 16/23] phone validation ref --- client/src/views/fields/phone.js | 146 ++++++++++++++++++------------- 1 file changed, 87 insertions(+), 59 deletions(-) diff --git a/client/src/views/fields/phone.js b/client/src/views/fields/phone.js index 7d555b5553..24b4743221 100644 --- a/client/src/views/fields/phone.js +++ b/client/src/views/fields/phone.js @@ -75,6 +75,12 @@ class PhoneFieldView extends VarcharFieldView { maxExtensionLength = 6 + /** + * @private + * @type {RegExp} + */ + validationRegExp + events = { /** @this PhoneFieldView */ 'click [data-action="switchPhoneProperty"]': function (e) { @@ -221,76 +227,25 @@ class PhoneFieldView extends VarcharFieldView { } /** @var {string} */ - const pattern = '^' + this.getMetadata().get(['app', 'regExpPatterns', 'phoneNumberLoose', 'pattern']) + '$'; - const regExp = new RegExp(pattern); + const pattern = '^' + this.getMetadata().get('app.regExpPatterns.phoneNumberLoose.pattern') + '$'; + this.validationRegExp = new RegExp(pattern); const numberList = []; let notValid = false; data.forEach((row, i) => { - const msg = this.translate('fieldValueDuplicate', 'messages') - .replace('{field}', this.getLabelText()); const number = row.phoneNumber; - const n = (i + 1).toString(); - const selector = `div.phone-number-block:nth-child(${n}) input.phone-number`; - - if (!regExp.test(number)) { + if (this.itemValidate(row, i)) { notValid = true; - - const msg = this.translate('fieldPhoneInvalidCharacters', 'messages') - .replace('{field}', this.getLabelText()); - - this.showValidationMessage(msg, selector); - } - - if (this.useInternational) { - const element = this.$el.find(selector).get(0); - - if (element) { - const obj = this.intlTelInputMap.get(element); - - const isPossible = obj && obj.isPossibleNumber(); - - if (obj && !isPossible) { - notValid = true; - - const code = obj.getValidationError(); - - const key = [ - 'fieldPhoneInvalid', - 'fieldPhoneInvalidCode', - 'fieldPhoneTooShort', - 'fieldPhoneTooLong', - ][code || 0] || 'fieldPhoneInvalid'; - - const msg = this.translate(key, 'messages') - .replace('{field}', this.getLabelText()); - - this.showValidationMessage(msg, selector); - } - - if ( - obj && - isPossible && - this.allowExtensions && - obj.getExtension() && - obj.getExtension().length > this.maxExtensionLength - ) { - const msg = this.translate('fieldPhoneExtensionTooLong', 'messages') - .replace('{maxLength}', this.maxExtensionLength.toString()) - .replace('{field}', this.getLabelText()); - - this.showValidationMessage(msg, selector); - - notValid = true; - } - } } const numberClean = String(number).replace(/[\s+]/g, ''); if (numberList.includes(numberClean)) { + const msg = this.translate('fieldValueDuplicate', 'messages') + .replace('{field}', this.getLabelText()); + this.showValidationMessage(msg, 'div.phone-number-block:nth-child(' + (i + 1) .toString() + ') input.phone-number'); @@ -302,9 +257,82 @@ class PhoneFieldView extends VarcharFieldView { numberList.push(numberClean); }); - if (notValid) { - return true; + return notValid; + } + + /** + * @protected + * @param {{number: string, type: string}} item A data item. + * @param {number} i An index. + * @return {boolean} + * @internal Called in an extension. Do not change the signature. + */ + itemValidate(item, i) { + const number = item.number; + + const n = (i + 1).toString(); + const selector = `div.phone-number-block:nth-child(${n}) input.phone-number`; + + let notValid = false; + + if (!this.validationRegExp.test(number)) { + notValid = true; + + const msg = this.translate('fieldPhoneInvalidCharacters', 'messages') + .replace('{field}', this.getLabelText()); + + this.showValidationMessage(msg, selector); } + + if (!this.useInternational) { + return notValid; + } + + const element = this.$el.find(selector).get(0); + + if (!element) { + return notValid; + } + + const intlObj = this.intlTelInputMap.get(element); + + const isPossible = intlObj && intlObj.isPossibleNumber(); + + if (intlObj && !isPossible) { + notValid = true; + + const code = intlObj.getValidationError(); + + const key = [ + 'fieldPhoneInvalid', + 'fieldPhoneInvalidCode', + 'fieldPhoneTooShort', + 'fieldPhoneTooLong', + ][code || 0] || 'fieldPhoneInvalid'; + + const msg = this.translate(key, 'messages') + .replace('{field}', this.getLabelText()); + + this.showValidationMessage(msg, selector); + } + + if ( + intlObj && + isPossible && + this.allowExtensions && + intlObj.getExtension() && + intlObj.getExtension().length > this.maxExtensionLength + ) { + const msg = this.translate('fieldPhoneExtensionTooLong', 'messages') + .replace('{maxLength}', this.maxExtensionLength.toString()) + .replace('{field}', this.getLabelText()); + + this.showValidationMessage(msg, selector); + + notValid = true; + } + + return notValid; } data() { From c033cb171e87f41d18af3fdd37368c4f60efded3 Mon Sep 17 00:00:00 2001 From: Yuri Kuznetsov Date: Mon, 17 Jun 2024 18:48:27 +0300 Subject: [PATCH 17/23] avatar color combined field --- .../Resources/metadata/clientDefs/User.json | 3 +- client/src/views/user/fields/avatar.js | 87 ++++++++++++++++++- frontend/less/espo/custom.less | 4 + 3 files changed, 91 insertions(+), 3 deletions(-) diff --git a/application/Espo/Resources/metadata/clientDefs/User.json b/application/Espo/Resources/metadata/clientDefs/User.json index e6f5316381..6688b13c09 100644 --- a/application/Espo/Resources/metadata/clientDefs/User.json +++ b/application/Espo/Resources/metadata/clientDefs/User.json @@ -56,8 +56,7 @@ "lastAccess" ], "edit": [ - "avatar", - "avatarColor" + "avatar" ], "editSmall": [ "avatar" diff --git a/client/src/views/user/fields/avatar.js b/client/src/views/user/fields/avatar.js index fd1a80a0de..29082c23e8 100644 --- a/client/src/views/user/fields/avatar.js +++ b/client/src/views/user/fields/avatar.js @@ -27,12 +27,14 @@ ************************************************************************/ import ImageFieldView from 'views/fields/image'; +import Model from 'model'; +import ColorpickerFieldView from 'views/fields/colorpicker'; class UserAvatarFieldView extends ImageFieldView { getAttributeList() { if (this.isEditMode()) { - return super.getAttributeList(); + return [...super.getAttributeList(), 'avatarColor']; } return []; @@ -46,6 +48,89 @@ class UserAvatarFieldView extends ImageFieldView { this.reRender(); }); + + this.setupSub(); + } + + setupSub() { + this.subModel = new Model(); + + const syncModels = () => { + this.subModel.set({color: this.model.attributes.avatarColor}); + }; + + syncModels(); + + this.listenTo(this.model, 'change:avatarColor', (m, v, o) => { + if (!o.ui) { + syncModels(); + } + }); + + this.listenTo(this.subModel, 'change', (m, o) => { + if (o.ui) { + this.trigger('change'); + } + }); + } + + onEditModeSet() { + if (!this.hasColor()) { + return; + } + + this.colorView = new ColorpickerFieldView({ + name: 'color', + model: this.subModel, + labelText: this.translate('avatarColor', 'fields', 'User'), + mode: 'edit', + }); + + return this.assignView('colorField', this.colorView, '[data-sub-field="color"]') + } + + afterRender() { + super.afterRender(); + + if (this.isEditMode()) { + const colorEl = document.createElement('div'); + colorEl.setAttribute('data-sub-field', 'color'); + colorEl.classList.add('avatar-field-color'); + + // noinspection JSCheckFunctionSignatures + this.element.appendChild(colorEl); + + if (this.colorView) { + this.colorView.reRender() + .then(() => { + const el = this.colorView.element.querySelector('input'); + + el.placeholder = this.translate('avatarColor', 'fields', 'User'); + }); + } + } + } + + hasColor() { + const userType = this.model.get('type'); + + return [ + 'regular', + 'admin', + 'api', + ].includes(userType); + } + + fetch() { + if (!this.hasColor()) { + return super.fetch(); + } + + // noinspection JSValidateTypes + return { + ...super.fetch(), + avatarColor: this.subModel.attributes.color, + }; } /** diff --git a/frontend/less/espo/custom.less b/frontend/less/espo/custom.less index 6a6b0e95dc..3e16461577 100644 --- a/frontend/less/espo/custom.less +++ b/frontend/less/espo/custom.less @@ -3717,6 +3717,10 @@ body > .autocomplete-suggestions.text-search-suggestions { } } +.avatar-field-color { + margin-top: 3px; +} + @import "misc/kanban.less"; @import "misc/wysiwyg.less"; From 6c8e9b129a9000ab161faf77372837f348c6e4ed Mon Sep 17 00:00:00 2001 From: Yuri Kuznetsov Date: Tue, 18 Jun 2024 08:54:05 +0300 Subject: [PATCH 18/23] avatar color attribute in avatar field --- application/Espo/Resources/metadata/app/acl.json | 6 +----- application/Espo/Resources/metadata/entityDefs/User.json | 3 +++ 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/application/Espo/Resources/metadata/app/acl.json b/application/Espo/Resources/metadata/app/acl.json index 09b0880a0f..92df22fd81 100644 --- a/application/Espo/Resources/metadata/app/acl.json +++ b/application/Espo/Resources/metadata/app/acl.json @@ -119,11 +119,7 @@ }, "scopeFieldLevel": { "User": { - "gender": false, - "avatarColor": { - "read": "yes", - "edit": "no" - } + "gender": false } } }, diff --git a/application/Espo/Resources/metadata/entityDefs/User.json b/application/Espo/Resources/metadata/entityDefs/User.json index e6f5dbddba..834242b084 100644 --- a/application/Espo/Resources/metadata/entityDefs/User.json +++ b/application/Espo/Resources/metadata/entityDefs/User.json @@ -404,6 +404,9 @@ "defaultAttributes": { "avatarId": null }, + "additionalAttributeList": [ + "avatarColor" + ], "layoutAvailabilityList": [] }, "avatarColor": { From f4cbb5e56a26842defdea9fa482493b2c39ad351 Mon Sep 17 00:00:00 2001 From: Yuri Kuznetsov Date: Tue, 18 Jun 2024 09:03:46 +0300 Subject: [PATCH 19/23] avatar color, use read only state --- application/Espo/Resources/metadata/app/acl.json | 6 +++++- application/Espo/Resources/metadata/entityDefs/User.json | 3 --- client/src/views/user/fields/avatar.js | 4 ++++ 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/application/Espo/Resources/metadata/app/acl.json b/application/Espo/Resources/metadata/app/acl.json index 92df22fd81..09b0880a0f 100644 --- a/application/Espo/Resources/metadata/app/acl.json +++ b/application/Espo/Resources/metadata/app/acl.json @@ -119,7 +119,11 @@ }, "scopeFieldLevel": { "User": { - "gender": false + "gender": false, + "avatarColor": { + "read": "yes", + "edit": "no" + } } } }, diff --git a/application/Espo/Resources/metadata/entityDefs/User.json b/application/Espo/Resources/metadata/entityDefs/User.json index 834242b084..e6f5dbddba 100644 --- a/application/Espo/Resources/metadata/entityDefs/User.json +++ b/application/Espo/Resources/metadata/entityDefs/User.json @@ -404,9 +404,6 @@ "defaultAttributes": { "avatarId": null }, - "additionalAttributeList": [ - "avatarColor" - ], "layoutAvailabilityList": [] }, "avatarColor": { diff --git a/client/src/views/user/fields/avatar.js b/client/src/views/user/fields/avatar.js index 29082c23e8..a57e1cb70f 100644 --- a/client/src/views/user/fields/avatar.js +++ b/client/src/views/user/fields/avatar.js @@ -112,6 +112,10 @@ class UserAvatarFieldView extends ImageFieldView { } hasColor() { + if (this.recordHelper && this.recordHelper.getFieldStateParam('avatarColor', 'readOnly')) { + return false; + } + const userType = this.model.get('type'); return [ From f86479afdc8cccc831bf7522d4fce4da6b117c3c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 18 Jun 2024 06:38:31 +0000 Subject: [PATCH 20/23] Bump ws from 8.13.0 to 8.17.1 Bumps [ws](https://github.com/websockets/ws) from 8.13.0 to 8.17.1. - [Release notes](https://github.com/websockets/ws/releases) - [Commits](https://github.com/websockets/ws/compare/8.13.0...8.17.1) --- updated-dependencies: - dependency-name: ws dependency-type: indirect ... Signed-off-by: dependabot[bot] --- package-lock.json | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/package-lock.json b/package-lock.json index ba1a579a7c..e9f3bd64c7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -6,7 +6,7 @@ "packages": { "": { "name": "espocrm", - "version": "8.2.5", + "version": "8.3.0", "hasInstallScript": true, "license": "AGPL-3.0-or-later", "dependencies": { @@ -7359,9 +7359,9 @@ "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" }, "node_modules/ws": { - "version": "8.13.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz", - "integrity": "sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==", + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz", + "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==", "dev": true, "engines": { "node": ">=10.0.0" @@ -12723,9 +12723,9 @@ "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" }, "ws": { - "version": "8.13.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz", - "integrity": "sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==", + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz", + "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==", "dev": true, "requires": {} }, From 0050f44a8a5c51a5b305daf23e8bf0b2e4dd6d50 Mon Sep 17 00:00:00 2001 From: Yuri Kuznetsov Date: Tue, 18 Jun 2024 11:08:44 +0300 Subject: [PATCH 21/23] lang --- .../Crm/Resources/i18n/it_IT/Campaign.json | 2 +- .../Crm/Resources/i18n/it_IT/Case.json | 4 +- .../Resources/i18n/it_IT/EmailQueueItem.json | 4 +- .../Crm/Resources/i18n/nl_NL/Case.json | 3 +- .../Crm/Resources/i18n/nl_NL/Contact.json | 3 +- .../Crm/Resources/i18n/nl_NL/Lead.json | 3 +- .../Crm/Resources/i18n/nl_NL/TargetList.json | 3 +- .../Resources/i18n/de_DE/AddressCountry.json | 19 ++++++ .../Espo/Resources/i18n/de_DE/Admin.json | 21 ++++-- .../Resources/i18n/de_DE/AppLogRecord.json | 14 ++++ .../Resources/i18n/de_DE/AuthLogRecord.json | 4 +- .../Espo/Resources/i18n/de_DE/Email.json | 3 +- .../Resources/i18n/de_DE/EmailAccount.json | 9 ++- .../Resources/i18n/de_DE/EntityManager.json | 6 +- .../Resources/i18n/de_DE/FieldManager.json | 4 +- .../Espo/Resources/i18n/de_DE/Global.json | 67 +++++++++++++++---- .../Resources/i18n/de_DE/InboundEmail.json | 10 ++- .../Resources/i18n/de_DE/LayoutManager.json | 3 +- .../Espo/Resources/i18n/de_DE/Note.json | 11 ++- .../Espo/Resources/i18n/de_DE/Portal.json | 4 +- .../Resources/i18n/de_DE/Preferences.json | 7 +- .../Espo/Resources/i18n/de_DE/Role.json | 8 ++- .../Espo/Resources/i18n/de_DE/Settings.json | 25 +++++-- .../Espo/Resources/i18n/de_DE/Team.json | 3 +- .../Espo/Resources/i18n/de_DE/User.json | 10 +-- .../i18n/de_DE/WorkingTimeCalendar.json | 5 +- .../i18n/de_DE/WorkingTimeRange.json | 4 +- .../Resources/i18n/it_IT/AddressCountry.json | 1 + .../Espo/Resources/i18n/it_IT/Admin.json | 10 ++- .../Resources/i18n/it_IT/AppLogRecord.json | 1 + .../i18n/it_IT/DashboardTemplate.json | 4 +- .../Espo/Resources/i18n/it_IT/Email.json | 13 ++-- .../Resources/i18n/it_IT/FieldManager.json | 2 +- .../Espo/Resources/i18n/it_IT/Global.json | 38 ++++++++--- .../Espo/Resources/i18n/it_IT/Note.json | 8 ++- .../Resources/i18n/it_IT/Preferences.json | 2 +- .../Espo/Resources/i18n/it_IT/Settings.json | 5 +- .../Espo/Resources/i18n/it_IT/Team.json | 2 +- .../Espo/Resources/i18n/it_IT/User.json | 4 +- .../i18n/it_IT/WorkingTimeCalendar.json | 6 +- .../i18n/it_IT/WorkingTimeRange.json | 1 - .../Resources/i18n/nl_NL/AddressCountry.json | 1 + .../Espo/Resources/i18n/nl_NL/Admin.json | 4 +- .../Resources/i18n/nl_NL/AppLogRecord.json | 1 + .../Resources/i18n/nl_NL/EntityManager.json | 13 +++- .../Espo/Resources/i18n/nl_NL/Global.json | 26 ++++--- .../Resources/i18n/nl_NL/LayoutManager.json | 7 +- .../Resources/i18n/nl_NL/Preferences.json | 8 ++- .../Espo/Resources/i18n/nl_NL/Role.json | 6 +- .../Espo/Resources/i18n/nl_NL/Settings.json | 9 ++- .../Espo/Resources/i18n/nl_NL/User.json | 1 - .../i18n/nl_NL/WebhookQueueItem.json | 18 ++++- .../i18n/nl_NL/WorkingTimeCalendar.json | 6 +- .../i18n/nl_NL/WorkingTimeRange.json | 1 - install/core/i18n/nl_NL/install.json | 5 +- 55 files changed, 329 insertions(+), 133 deletions(-) create mode 100644 application/Espo/Resources/i18n/de_DE/AddressCountry.json create mode 100644 application/Espo/Resources/i18n/de_DE/AppLogRecord.json create mode 100644 application/Espo/Resources/i18n/it_IT/AddressCountry.json create mode 100644 application/Espo/Resources/i18n/it_IT/AppLogRecord.json create mode 100644 application/Espo/Resources/i18n/nl_NL/AddressCountry.json create mode 100644 application/Espo/Resources/i18n/nl_NL/AppLogRecord.json diff --git a/application/Espo/Modules/Crm/Resources/i18n/it_IT/Campaign.json b/application/Espo/Modules/Crm/Resources/i18n/it_IT/Campaign.json index 48130a707a..7c61f0ef40 100644 --- a/application/Espo/Modules/Crm/Resources/i18n/it_IT/Campaign.json +++ b/application/Espo/Modules/Crm/Resources/i18n/it_IT/Campaign.json @@ -62,7 +62,7 @@ "Email Templates": "Modelli Email", "Subscribe again": "Iscriviti di nuovo", "Create Target List": "Crea Lista di Destinazione", - "Mail Merge": "Stampa unione", + "Mail Merge": "Unione Mail", "Generate Mail Merge PDF": "Genera Stampa unione pdf" }, "presetFilters": { diff --git a/application/Espo/Modules/Crm/Resources/i18n/it_IT/Case.json b/application/Espo/Modules/Crm/Resources/i18n/it_IT/Case.json index d478e7f3e1..380ca759fc 100644 --- a/application/Espo/Modules/Crm/Resources/i18n/it_IT/Case.json +++ b/application/Espo/Modules/Crm/Resources/i18n/it_IT/Case.json @@ -9,7 +9,7 @@ "type": "Tipo", "description": "Descrizione", "attachments": "Allegati", - "inboundEmail": "Gruppo Account Email", + "inboundEmail": "Account Email di Gruppo", "originalEmail": "Email Originale" }, "links": { @@ -21,7 +21,7 @@ "emails": "Email", "articles": "Articoli della Base di Conoscenza", "attachments": "Allegati", - "inboundEmail": "Gruppo Account Email" + "inboundEmail": "Account Email di Gruppo" }, "options": { "status": { diff --git a/application/Espo/Modules/Crm/Resources/i18n/it_IT/EmailQueueItem.json b/application/Espo/Modules/Crm/Resources/i18n/it_IT/EmailQueueItem.json index 45cb4824e0..b5c9c3ad19 100644 --- a/application/Espo/Modules/Crm/Resources/i18n/it_IT/EmailQueueItem.json +++ b/application/Espo/Modules/Crm/Resources/i18n/it_IT/EmailQueueItem.json @@ -5,11 +5,11 @@ "sentAt": "Data invio", "attemptCount": "Prove", "emailAddress": "Indirizzo email", - "massEmail": "Email massiva", + "massEmail": "Email Massiva", "isTest": "È un test" }, "links": { - "massEmail": "Email massiva" + "massEmail": "Email Massiva" }, "options": { "status": { diff --git a/application/Espo/Modules/Crm/Resources/i18n/nl_NL/Case.json b/application/Espo/Modules/Crm/Resources/i18n/nl_NL/Case.json index dfdac7b924..d6358fbb5e 100644 --- a/application/Espo/Modules/Crm/Resources/i18n/nl_NL/Case.json +++ b/application/Espo/Modules/Crm/Resources/i18n/nl_NL/Case.json @@ -7,7 +7,8 @@ "priority": "Prioriteit", "description": "Beschrijving", "attachments": "Bijlagen", - "inboundEmail": "Groep e-mailaccount" + "inboundEmail": "Groep e-mailaccount", + "originalEmail": "Originele e-mail" }, "links": { "account": "Relatie", diff --git a/application/Espo/Modules/Crm/Resources/i18n/nl_NL/Contact.json b/application/Espo/Modules/Crm/Resources/i18n/nl_NL/Contact.json index 537fab2d5d..b8147141a4 100644 --- a/application/Espo/Modules/Crm/Resources/i18n/nl_NL/Contact.json +++ b/application/Espo/Modules/Crm/Resources/i18n/nl_NL/Contact.json @@ -21,7 +21,8 @@ "acceptanceStatusMeetings": "Acceptatiestatus (vergaderingen)", "acceptanceStatusCalls": "Acceptatiestatus (oproepen)", "title": "Relatie titel", - "hasPortalUser": "Heeft portaal toegang" + "hasPortalUser": "Heeft portaal toegang", + "originalEmail": "Originele e-mail" }, "links": { "opportunities": "Kansen", diff --git a/application/Espo/Modules/Crm/Resources/i18n/nl_NL/Lead.json b/application/Espo/Modules/Crm/Resources/i18n/nl_NL/Lead.json index 5f231eecd6..3cb1bef9e2 100644 --- a/application/Espo/Modules/Crm/Resources/i18n/nl_NL/Lead.json +++ b/application/Espo/Modules/Crm/Resources/i18n/nl_NL/Lead.json @@ -27,7 +27,8 @@ "opportunityAmountCurrency": "Kans bedrag valuta", "acceptanceStatusMeetings": "Acceptatiestatus (vergaderingen)", "acceptanceStatusCalls": "Acceptatiestatus (oproepen)", - "convertedAt": "Geconverteerd op" + "convertedAt": "Geconverteerd op", + "originalEmail": "Originele e-mail" }, "links": { "targetLists": "Doellijsten", diff --git a/application/Espo/Modules/Crm/Resources/i18n/nl_NL/TargetList.json b/application/Espo/Modules/Crm/Resources/i18n/nl_NL/TargetList.json index 82a7191bdd..5c512536cf 100644 --- a/application/Espo/Modules/Crm/Resources/i18n/nl_NL/TargetList.json +++ b/application/Espo/Modules/Crm/Resources/i18n/nl_NL/TargetList.json @@ -10,7 +10,8 @@ "excludingActionList": "Exclusief", "optedOutCount": "Afgemeld aantal", "targetStatus": "Doel status", - "isOptedOut": "Is afgemeld" + "isOptedOut": "Is afgemeld", + "sourceCampaign": "Bron Campagne" }, "links": { "accounts": "Relaties", diff --git a/application/Espo/Resources/i18n/de_DE/AddressCountry.json b/application/Espo/Resources/i18n/de_DE/AddressCountry.json new file mode 100644 index 0000000000..6e7cb971bd --- /dev/null +++ b/application/Espo/Resources/i18n/de_DE/AddressCountry.json @@ -0,0 +1,19 @@ +{ + "labels": { + "Create AddressCountry": "Länderliste erstellen", + "Populate": "Befüllen" + }, + "fields": { + "isPreferred": "Wird bevorzugt" + }, + "tooltips": { + "code": "ISO 3166-1 alpha-2-Code.", + "isPreferred": "Die bevorzugten Länder erscheinen zuerst in der Auswahlliste." + }, + "messages": { + "confirmPopulateDefaults": "Alle vorhandenen Länder werden gelöscht, die Standard-Länderliste wird erstellt. Es ist nicht möglich, den Vorgang rückgängig zu machen.\n\nSind Sie sicher?" + }, + "strings": { + "populateDefaults": "Mit Standard-Länderliste befüllen" + } +} \ No newline at end of file diff --git a/application/Espo/Resources/i18n/de_DE/Admin.json b/application/Espo/Resources/i18n/de_DE/Admin.json index 3b32a91eeb..95c43850b1 100644 --- a/application/Espo/Resources/i18n/de_DE/Admin.json +++ b/application/Espo/Resources/i18n/de_DE/Admin.json @@ -75,7 +75,8 @@ "Working Time Calendars": "Arbeitszeitkalender", "Group Email Folders": "E-Mail Gruppenordner", "Authentication Providers": "Authentifizierungsanbieter", - "Setup": "Einrichtung" + "Setup": "Einrichtung", + "Address Countries": "Adresse Länder" }, "layouts": { "list": "Liste", @@ -175,7 +176,7 @@ "readOnly": "Schreibgeschützt", "noEmptyString": "Keine leere Zeichenkette", "maxFileSize": "Max. Dateigröße (Mb)", - "isPersonalData": "Ist Persönliche Daten", + "isPersonalData": "Enthält personenbezogene Daten", "useIframe": "Iframe verwenden", "useNumericFormat": "Verwenden Sie das numerische Format", "cutHeight": "Höhe abkürzen", @@ -206,7 +207,9 @@ "autocompleteOnEmpty": "Autovervollständigung bei leerer Eingabe", "relateOnImport": "Beim Import verknüpfen", "aclScope": "ACL Geltungsbereich", - "onlyAdmin": "Nur für Administrator" + "onlyAdmin": "Nur für Administrator", + "activeOptions": "Aktive Optionen", + "labelType": "Bezeichnungstyp" }, "messages": { "selectEntityType": "Entitätstyp im linken Menü auswählen.", @@ -228,7 +231,9 @@ "upgradeRecommendation": "Diese Art der Aktualisierung wird nicht empfohlen. Es ist besser, ein Upgrade per CLI durchzuführen.", "newVersionIsAvailable": "Es ist eine neue EspoCRM-Version {latestVersion} verfügbar. Bitte folgen Sie den [Instruktionen](https://www.espocrm.com/documentation/administration/upgrading/), um Ihre Instanz zu aktualisieren.", "formulaFunctions": "Weitere Funktionen finden Sie in [documentation]({documentationUrl}).", - "rebuildRequired": "Sie müssen Rebuild aus CLI ausführen." + "rebuildRequired": "Sie müssen Rebuild aus CLI ausführen.", + "cacheIsDisabled": "Wenn der Cache deaktiviert ist, wird die Anwendung langsam laufen. Aktivieren Sie den Cache in den [settings](#Admin/settings).", + "cronIsDisabled": "Cron ist deaktiviert, die Anwendung ist nicht voll funktionsfähig. Aktivieren Sie Cron in den [settings](#Admin/settings)." }, "descriptions": { "settings": "Systemeinstellungen der Applikation.", @@ -278,7 +283,9 @@ "formulaSandbox": "Schreibe und teste Formula Skripte", "workingTimeCalendars": "Arbeitszeitpläne", "groupEmailFolders": "E-Mail Ordner, die mit Teams geteilt sind.", - "authenticationProviders": "Zusätzliche Authentifizierungsanbieter für Portale." + "authenticationProviders": "Zusätzliche Authentifizierungsanbieter für Portale.", + "appLog": "Anwendungsprotokoll.", + "addressCountries": "Verfügbare Länder für Adressfelder." }, "options": { "previewSize": { @@ -287,6 +294,10 @@ "medium": "Mittel", "large": "Groß", "": "Standardmäßig" + }, + "labelType": { + "state": "Zustand", + "regular": "Normalerweise" } }, "systemRequirements": { diff --git a/application/Espo/Resources/i18n/de_DE/AppLogRecord.json b/application/Espo/Resources/i18n/de_DE/AppLogRecord.json new file mode 100644 index 0000000000..ff396e8e9a --- /dev/null +++ b/application/Espo/Resources/i18n/de_DE/AppLogRecord.json @@ -0,0 +1,14 @@ +{ + "fields": { + "message": "Nachricht", + "level": "Stufe", + "exceptionClass": "Ausnahmeklasse", + "file": "Datei", + "line": "Zeile", + "requestMethod": "Anfrage-Methode", + "requestResourcePath": "Angeforderter Ressourcenpfad" + }, + "presetFilters": { + "errors": "Fehler" + } +} \ No newline at end of file diff --git a/application/Espo/Resources/i18n/de_DE/AuthLogRecord.json b/application/Espo/Resources/i18n/de_DE/AuthLogRecord.json index d63adc41a7..1613454654 100644 --- a/application/Espo/Resources/i18n/de_DE/AuthLogRecord.json +++ b/application/Espo/Resources/i18n/de_DE/AuthLogRecord.json @@ -28,7 +28,9 @@ "INACTIVE_USER": "Inaktiver Benutzer", "IS_PORTAL_USER": "Portal Benutzer", "IS_NOT_PORTAL_USER": "Kein Portalbenutzer", - "USER_IS_NOT_IN_PORTAL": "Der Benutzer ist nicht mit dem Portal verbunden" + "USER_IS_NOT_IN_PORTAL": "Der Benutzer ist nicht mit dem Portal verbunden", + "IS_SYSTEM_USER": "Ist Systembenutzer", + "FORBIDDEN": "Verboten" } } } \ No newline at end of file diff --git a/application/Espo/Resources/i18n/de_DE/Email.json b/application/Espo/Resources/i18n/de_DE/Email.json index 830f518c3c..9953f6c019 100644 --- a/application/Espo/Resources/i18n/de_DE/Email.json +++ b/application/Espo/Resources/i18n/de_DE/Email.json @@ -108,7 +108,8 @@ "No Subject": "Kein Betreff", "Insert Field": "Feld einfügen", "Moving to folder": "Verschiebe in Ordner", - "Group Folders": "Gruppenordner" + "Group Folders": "Gruppenordner", + "View Attachments": "Anhänge anzeigen" }, "messages": { "testEmailSent": "Eine Test E-Mail wurde gesendet", diff --git a/application/Espo/Resources/i18n/de_DE/EmailAccount.json b/application/Espo/Resources/i18n/de_DE/EmailAccount.json index 57065d2adb..939d1cef68 100644 --- a/application/Espo/Resources/i18n/de_DE/EmailAccount.json +++ b/application/Espo/Resources/i18n/de_DE/EmailAccount.json @@ -18,7 +18,8 @@ "smtpPassword": "SMTP-Passwort", "useImap": "E-Mails abholen", "smtpAuthMechanism": "SMTP-Auth-Mechanismus", - "security": "Sicherheit" + "security": "Sicherheit", + "connectedAt": "Verbunden mit" }, "links": { "filters": "Filter", @@ -38,12 +39,16 @@ }, "messages": { "couldNotConnectToImap": "Kann keine Verbindung zum IMAP Server herstellen", - "connectionIsOk": "Verbindung ist in Ordnung" + "connectionIsOk": "Verbindung ist in Ordnung", + "imapNotConnected": "Konnte keine Verbindung zu [IMAP account](#EmailAccount/view/{id}) herstellen." }, "tooltips": { "monitoredFolders": "Mehrere Ordner sollten durch ein Komma getrennt werden.\n\nSie können einen 'Gesendet' Ordner hinzufügen, um E-Mails zu synchronisieren, die von einem externen Programm gesendet wurden.", "storeSentEmails": "Gesendete E-Mail werden auf einem IMAP Server gespeichert. Die E-Mail Adresse muss jene sein, von der die E-Mail gesendet wurde.", "useSmtp": "Die Möglichkeit, E-Mails zu versenden.", "emailAddress": "Der Benutzerdatensatz (zugeordneter Benutzer) sollte die gleiche E-Mail-Adresse haben, um dieses E-Mail-Konto zum Senden verwenden zu können." + }, + "presetFilters": { + "active": "Aktiv" } } \ No newline at end of file diff --git a/application/Espo/Resources/i18n/de_DE/EntityManager.json b/application/Espo/Resources/i18n/de_DE/EntityManager.json index 9edad997b1..272a8f02a1 100644 --- a/application/Espo/Resources/i18n/de_DE/EntityManager.json +++ b/application/Espo/Resources/i18n/de_DE/EntityManager.json @@ -41,7 +41,8 @@ "author": "Autor", "module": "Modul", "selectFilter": "Filter auswählen", - "primaryFilters": "Primäre Filter" + "primaryFilters": "Primäre Filter", + "stars": "Sterne" }, "options": { "type": { @@ -95,6 +96,7 @@ "optimisticConcurrencyControl": "Verhindert Schreibkonflikte.", "duplicateCheckFieldList": "Welche Felder bei der Überprüfung auf Duplikate zu prüfen sind.", "updateDuplicateCheck": "Prüfung auf Duplikate beim Aktualisieren eines Datensatzes.", - "linkSelectFilter": "Ein primärer Filter, der standardmäßig bei der Auswahl eines Datensatzes angewendet wird." + "linkSelectFilter": "Ein primärer Filter, der standardmäßig bei der Auswahl eines Datensatzes angewendet wird.", + "stars": "Die Möglichkeit, Datensätze mit Sternen zu versehen. Sterne können von Benutzern als Lesezeichen für Datensätze verwendet werden." } } \ No newline at end of file diff --git a/application/Espo/Resources/i18n/de_DE/FieldManager.json b/application/Espo/Resources/i18n/de_DE/FieldManager.json index ca23d16b4a..dda05806e5 100644 --- a/application/Espo/Resources/i18n/de_DE/FieldManager.json +++ b/application/Espo/Resources/i18n/de_DE/FieldManager.json @@ -146,8 +146,8 @@ "number": "Eine automatisch inkrementierende Nummer des Zeichenkettentyps mit einem möglichen Präfix und einer bestimmten Länge.", "autoincrement": "Eine generierte schreibgeschützte, automatisch inkrementierende Ganzzahl.", "barcode": "Ein Strichcode. Kann als PDF ausgedruckt werden.", - "email": "Eine Reihe von E-Mail-Adressen mit ihren Parametern: Ausgewählt, Ungültig, Primär.", - "phone": "Eine Reihe von Telefonnummern mit ihren Parametern: Typ, Ausgewählt, Ungültig, Primär.", + "email": "Eine Reihe von E-Mail-Adressen mit ihren Parametern: Opted-Out, Ungültig, Primär.", + "phone": "Eine Reihe von Telefonnummern mit ihren Parametern: Typ, Opted-Out, Ungültig, Primär.", "foreign": "Ein Feld eines Bezugsdatensatzes. Schreibgeschützt.", "link": "Ein Datensatz, der durch eine Belongs-To-Beziehung (Viele-zu-Eins- oder Eins-zu-Eins-Beziehung) verbunden ist.", "linkParent": "Ein Datensatz, der über die Beziehung zwischen Eltern und Angehörigen in Beziehung steht. Kann von verschiedenen Entitätstypen sein.", diff --git a/application/Espo/Resources/i18n/de_DE/Global.json b/application/Espo/Resources/i18n/de_DE/Global.json index 8b8ce54191..5bbc761606 100644 --- a/application/Espo/Resources/i18n/de_DE/Global.json +++ b/application/Espo/Resources/i18n/de_DE/Global.json @@ -46,11 +46,13 @@ "Note": "Notiz", "ImportError": "Fehler beim Importieren", "WorkingTimeCalendar": "Arbeitszeitkalender", - "WorkingTimeRange": "Arbeitszeitzeitraum", "GroupEmailFolder": "E-Mail Gruppenordner", "AuthenticationProvider": "Authentifizierungsanbieter", "GlobalStream": "Globales Ereignis", - "WebhookQueueItem": "Webhook-Warteschlangeelement" + "WebhookQueueItem": "Webhook-Warteschlangeelement", + "AppLogRecord": "App Log Datensatz", + "WorkingTimeRange": "Arbeitszeitausnahme", + "AddressCountry": "Adresse Land" }, "scopeNamesPlural": { "Email": "E-Mails", @@ -92,11 +94,12 @@ "Note": "Notiz", "ImportError": "Fehler beim Importieren", "WorkingTimeCalendar": "Arbeitszeitkalender", - "WorkingTimeRange": "Arbeitszeitzeiträume", "GroupEmailFolder": "E-Mail Gruppenordner", "AuthenticationProvider": "Authentifizierungsanbieter", "GlobalStream": "Globale Ereignisse", - "WebhookQueueItem": "Webhook-Warteschlangenelemente" + "WebhookQueueItem": "Webhook-Warteschlangenelemente", + "WorkingTimeRange": "Arbeitszeitausnahmen", + "AddressCountry": "Adresse Länder" }, "labels": { "Misc": "Verschiedenes", @@ -235,8 +238,8 @@ "Manage Categories": "Kategorien verwalten", "Manage Folders": "Ordner verwalten", "Convert to": "Umgewandelt zu", - "View Personal Data": "Persönliche Daten anzeigen", - "Personal Data": "Persönliche Daten", + "View Personal Data": "Personenbezogene Daten anzeigen", + "Personal Data": "Personenbezogene Daten", "Erase": "Löschen", "Move Over": "Verschiebe nach", "Restore": "Wiederherstellen", @@ -269,7 +272,10 @@ "Next Page": "Nächste Seite", "First Page": "Erste Seite", "Last Page": "Letzte Seite", - "Page": "Seite" + "Page": "Seite", + "Star": "Stern setzen", + "Unstar": "Stern entfernen", + "Starred": "Mit Stern markiert" }, "messages": { "pleaseWait": "Bitte warten...", @@ -372,7 +378,13 @@ "noLinkAccess": "Kann nicht mit dem Datensatz {foreignEntityType} über den Link '{link}' verknüpft werden. Kein Zugriff.", "attemptIntervalFailure": "Der Vorgang ist während eines bestimmten Zeitintervalls nicht erlaubt. Warten Sie vor dem nächsten Versuch einige Zeit.", "confirmRestoreFromAudit": "Die vorherigen Werte werden in ein Formular eingetragen. Dann können Sie den Datensatz speichern, um die vorherigen Werte wiederherzustellen.", - "pageNumberIsOutOfBound": "Die Seitenzahl liegt außerhalb des Bereichs" + "pageNumberIsOutOfBound": "Die Seitenzahl liegt außerhalb des Bereichs", + "fieldPhoneExtensionTooLong": "Die Durchwahl sollte nicht länger sein als {maxLength}", + "cannotLinkAlreadyLinked": "Ein bereits verknüpfter Datensatz kann nicht verknüpft werden.", + "starsLimitExceeded": "Die Anzahl der Sterne hat das Limit überschritten.", + "select2OrMoreRecords": "Wählen Sie 2 oder mehr Datensätze", + "selectNotMoreThanNumberRecords": "Wählen Sie nicht mehr als {number} Datensätze aus", + "selectAtLeastOneRecord": "Wählen Sie mindestens einen Datensatz aus" }, "boolFilters": { "onlyMy": "Nur meine", @@ -381,7 +393,8 @@ }, "presetFilters": { "followed": "Abonniert", - "all": "Alle" + "all": "Alle", + "starred": "Mit Stern markiert" }, "massActions": { "remove": "Löschen", @@ -423,10 +436,10 @@ "emailAddressData": "E-Mail-Adressdaten", "phoneNumberData": "Telefonnummer Daten", "names": "Namen", - "emailAddressIsOptedOut": "E-Mail-Adresse ist Opt-Out gesetzt", + "emailAddressIsOptedOut": "E-Mail-Adresse ist Opted-Out gesetzt", "targetListIsOptedOut": "Ist Opt-Out gesetzt (Kontaktliste)", "type": "Typ", - "phoneNumberIsOptedOut": "Telefonnummer ist Opt-Out gesetzt", + "phoneNumberIsOptedOut": "Telefonnummer ist Opted-Out gesetzt", "types": "Typen", "middleName": "Zweiter Vorname", "emailAddressIsInvalid": "E-Mail-Adresse ist ungültig", @@ -789,10 +802,10 @@ "emailAddress": "Gültige E-Mail-Adresse", "phoneNumber": "Gültige Telefonnummer", "arrayOfString": "Array von Zeichenketten", - "valid": "Gültig", "noEmptyString": "Keine leere Zeichenkette", "max": "Maximal Wert", - "min": "Minimal Wert" + "min": "Minimal Wert", + "valid": "Gültigkeit" }, "fieldValidationExplanations": { "url_valid": "Ungültige URL.", @@ -807,9 +820,35 @@ "enum_valid": "Ungültiger Auswahlwert. Der Wert muss eine der definierten Auswahloptionen sein. Ein leerer Wert ist nur zulässig, wenn das Feld eine leere Option hat.", "multiEnum_valid": "Ungültiger Mehrfachauswahlwert. Werte müssen einer der definierten Feldoptionen entsprechen.", "int_valid": "Ungültiger ganzzahliger Zahlenwert.", - "float_valid": "Ungültiger Zahlenwert." + "float_valid": "Ungültiger Zahlenwert.", + "valid": "Ungültiger Wert.", + "maxLength": "Die Länge des Wertes überschreitet den Maximalwert.", + "phone_valid": "Die Telefonnummer ist ungültig. Dies kann durch eine falsche oder leere Landesvorwahl verursacht werden." }, "navbarTabs": { "Activities": "Aktivitäten" + }, + "wysiwygLabels": { + "cell": "Zelle", + "align": "Ausrichtung", + "width": "Breite", + "height": "Höhe", + "borderWidth": "Randbreite", + "borderColor": "Randfarbe", + "cellPadding": "Zelleninnenabstand", + "backgroundColor": "Hintergrundfarbe", + "verticalAlign": "Vertikale Ausrichtung" + }, + "wysiwygOptions": { + "align": { + "left": "Links", + "center": "Zentriert", + "right": "Rechts" + }, + "verticalAlign": { + "top": "Oben", + "middle": "Mitte", + "bottom": "Unten" + } } } \ No newline at end of file diff --git a/application/Espo/Resources/i18n/de_DE/InboundEmail.json b/application/Espo/Resources/i18n/de_DE/InboundEmail.json index 73e32a7f8c..87144dd460 100644 --- a/application/Espo/Resources/i18n/de_DE/InboundEmail.json +++ b/application/Espo/Resources/i18n/de_DE/InboundEmail.json @@ -34,7 +34,9 @@ "keepFetchedEmailsUnread": "Geholte E-Mails ungelesen halten", "smtpAuthMechanism": "SMTP-Auth-Mechanismus", "security": "Sicherheit", - "groupEmailFolder": "E-Mail Gruppenordner" + "groupEmailFolder": "E-Mail Gruppenordner", + "connectedAt": "Verbunden mit", + "excludeFromReply": "Von Antwort ausschließen" }, "tooltips": { "reply": "Benachrichtigt E-Mail Empfänger beim Empfang der Nachrichten.\n\n Nur eine E-Mail pro Empfänger wird zu einer Zeit versendet, um eine Endlosschleife zu verhindern.", @@ -51,7 +53,8 @@ "smtpIsForMassEmail": "Wenn diese Option aktiviert ist, steht SMTP für Massen-E-Mail zur Verfügung.", "storeSentEmails": "Gesendete E-Mails werden auf dem IMAP-Server gespeichert.", "useSmtp": "Die Möglichkeit, E-Mails zu versenden.", - "groupEmailFolder": "Eingehende E-Mails in einem Gruppenordner ablegen." + "groupEmailFolder": "Eingehende E-Mails in einem Gruppenordner ablegen.", + "excludeFromReply": "Beim Beantworten von E-Mails, die an die E-Mail-Adresse dieses Kontos gesendet werden, wird dessen E-Mail-Adresse nicht zur Kopie (CC-Feld) hinzugefügt.\n\nBeachten Sie, dass durch die Aktivierung dieses Parameters die E-Mail-Adresse dieses Kontos für Benutzer, die Zugriff auf das Senden von E-Mails haben, sichtbar wird." }, "links": { "filters": "Filter", @@ -77,6 +80,7 @@ "Main": "Hauptteil" }, "messages": { - "couldNotConnectToImap": "Kann keine Verbindung zum IMAP Server herstellen" + "couldNotConnectToImap": "Kann keine Verbindung zum IMAP Server herstellen", + "imapNotConnected": "Konnte keine Verbindung zum Gruppen-[IMAP account](#InboundEmail/view/{id}) herstellen." } } \ No newline at end of file diff --git a/application/Espo/Resources/i18n/de_DE/LayoutManager.json b/application/Espo/Resources/i18n/de_DE/LayoutManager.json index 919c3afaa6..fdfb6a8786 100644 --- a/application/Espo/Resources/i18n/de_DE/LayoutManager.json +++ b/application/Espo/Resources/i18n/de_DE/LayoutManager.json @@ -12,7 +12,8 @@ "tabBreak": "Registerkartenumbruch", "width": "Breite", "noteText": "Notiztext", - "noteStyle": "Notizstil" + "noteStyle": "Notizstil", + "isMuted": "Gedeckte Farbe" }, "options": { "align": { diff --git a/application/Espo/Resources/i18n/de_DE/Note.json b/application/Espo/Resources/i18n/de_DE/Note.json index f42a745ead..1a7e13e5f4 100644 --- a/application/Espo/Resources/i18n/de_DE/Note.json +++ b/application/Espo/Resources/i18n/de_DE/Note.json @@ -11,7 +11,8 @@ "related": "Verbunden", "createdByGender": "Erstellt von Geschlecht", "data": "Daten", - "number": "Nummer" + "number": "Nummer", + "isPinned": "Ist angeheftet" }, "filters": { "all": "Alle", @@ -19,7 +20,8 @@ "activity": "Aktivität" }, "messages": { - "writeMessage": "Schreiben Sie hier Ihre Nachricht" + "writeMessage": "Schreiben Sie hier Ihre Nachricht", + "pinnedMaxCountExceeded": "Es können nicht mehr Notizen angeheftet werden. Die maximal zulässige Anzahl ist {count}." }, "options": { "targetType": { @@ -49,6 +51,9 @@ }, "labels": { "View Posts": "Nachrichten anzeigen", - "View Activity": "Aktivitäten anzeigen" + "View Activity": "Aktivitäten anzeigen", + "Pin": "Anheften", + "Unpin": "Lösen", + "Pinned": "Angeheftet" } } \ No newline at end of file diff --git a/application/Espo/Resources/i18n/de_DE/Portal.json b/application/Espo/Resources/i18n/de_DE/Portal.json index 660f2b486d..e4a80932d9 100644 --- a/application/Espo/Resources/i18n/de_DE/Portal.json +++ b/application/Espo/Resources/i18n/de_DE/Portal.json @@ -15,7 +15,9 @@ "customUrl": "Benutzerdefinierte URL", "customId": "Benutzerdefinierte ID", "layoutSet": "Layout-Set", - "authenticationProvider": "Authentifizierungsanbieter" + "authenticationProvider": "Authentifizierungsanbieter", + "authTokenLifetime": "Auth Token-Lebensdauer (Stunden)", + "authTokenMaxIdleTime": "Auth Token Maximale Leerlaufzeit (Stunden)" }, "links": { "users": "Benutzer", diff --git a/application/Espo/Resources/i18n/de_DE/Preferences.json b/application/Espo/Resources/i18n/de_DE/Preferences.json index 08a6810955..303565b016 100644 --- a/application/Espo/Resources/i18n/de_DE/Preferences.json +++ b/application/Espo/Resources/i18n/de_DE/Preferences.json @@ -32,7 +32,9 @@ "dashboardLocked": "Dashboard sperren", "textSearchStoringDisabled": "Textfilterspeicherung deaktivieren", "calendarSlotDuration": "Kalender - Dauer des Zeitfensters", - "calendarScrollHour": "Kalender - Zur Stunde springen" + "calendarScrollHour": "Kalender - Zur Stunde springen", + "defaultRemindersTask": "Standard-Erinnerungen für Aufgaben", + "addCustomTabs": "Benutzerdefinierte Registerkarten hinzufügen" }, "options": { "weekStart": { @@ -51,7 +53,8 @@ "autoFollowEntityTypeList": "Der Benutzer abonniert automatisch alle neuen Einträge der gewählten Entitätstypen, sieht Neuigkeiten im Ereignisverlauf und erhält Benachrichtigungen.", "doNotFillAssignedUserIfNotRequired": "Beim Erstellen eines Datensatzes wird der zugewiesene Benutzer nicht mit dem eigenen Benutzer ausgefüllt, es sei denn, das Feld ist erforderlich.", "followCreatedEntities": "Wenn neue Datensätze erstellt werden, werden diese automatisch gefolgt, auch wenn sie einem anderen Benutzer zugewiesen sind.", - "followCreatedEntityTypeList": "Wenn neue Datensätze von ausgewählten Entitätstypen erstellt werden, werden diese automatisch gefolgt, auch wenn sie einem anderen Benutzer zugewiesen sind." + "followCreatedEntityTypeList": "Wenn neue Datensätze von ausgewählten Entitätstypen erstellt werden, werden diese automatisch gefolgt, auch wenn sie einem anderen Benutzer zugewiesen sind.", + "addCustomTabs": "Wenn diese Option aktiviert ist, werden benutzerdefinierte Registerkarten an die Standardregisterkarten angehängt. Andernfalls werden benutzerdefinierte Registerkarten anstelle der Standardregisterkarten verwendet." }, "tabFields": { "label": "Bezeichnung", diff --git a/application/Espo/Resources/i18n/de_DE/Role.json b/application/Espo/Resources/i18n/de_DE/Role.json index 01c31766b9..5851dde99e 100644 --- a/application/Espo/Resources/i18n/de_DE/Role.json +++ b/application/Espo/Resources/i18n/de_DE/Role.json @@ -12,7 +12,8 @@ "data": "Daten", "fieldData": "Felddaten", "messagePermission": "Nachrichtenberechtigung", - "auditPermission": "Audit-Erlaubnis" + "auditPermission": "Audit-Erlaubnis", + "mentionPermission": "Erwähnungsberechtigung" }, "links": { "users": "Benutzer" @@ -51,7 +52,7 @@ "changesAfterClearCache": "Alle Änderungen werden erst nach Leeren des Caches wirksam." }, "tooltips": { - "dataPrivacyPermission": "Ermöglicht das Anzeigen und Löschen persönlicher Daten.", + "dataPrivacyPermission": "Ermöglicht die Anzeige und Löschung von personenbezogenen Daten.", "followerManagementPermission": "Ermöglicht die Verwaltung von Abonnenten bestimmter Datensätze.", "messagePermission": "Erlaubt das Senden von Nachrichten an andere Benutzer.\n\n* Alle - kann an alle senden\n* Team - kann nur an Teammitglieder senden\n* Nein - kann nicht senden", "assignmentPermission": "Erlaubt die Zuweisung von Datensätzen an andere Benutzer.\n\n* Alle - keine Einschränkung\n* Team - kann nur Teammitgliedern zuweisen\n* Nein - kann nur sich selbst zuweisen", @@ -60,6 +61,7 @@ "groupEmailAccountPermission": "Zugang zu Gruppen-E-Mail-Konten und die Möglichkeit, E-Mails über Gruppen-SMTP zu versenden.", "exportPermission": "Erlaubt den Export von Datensätzen.", "massUpdatePermission": "Die Berechtigung, Massenaktualisierungen von Datensätzen durchzuführen.", - "auditPermission": "Gewährt die Ansicht des Audit-Protokolls." + "auditPermission": "Gewährt die Ansicht des Audit-Protokolls.", + "mentionPermission": "Ermöglicht die Erwähnung anderer Benutzer in Ereignissen.\n\n* Alle - kann alle erwähnen\n* Team - kann nur Teammitglieder erwähnen\n* Nein - kann nicht erwähnen" } } \ No newline at end of file diff --git a/application/Espo/Resources/i18n/de_DE/Settings.json b/application/Espo/Resources/i18n/de_DE/Settings.json index a985dbbbfd..84375171af 100644 --- a/application/Espo/Resources/i18n/de_DE/Settings.json +++ b/application/Espo/Resources/i18n/de_DE/Settings.json @@ -91,14 +91,13 @@ "tabColorsDisabled": "Tabfarben deaktivieren", "tabIconsDisabled": "Tab Icon deaktivieren", "textFilterUseContainsForVarchar": "Verwenden Sie den Operator 'enthält', wenn Sie Varchar-Felder filtern", - "emailAddressIsOptedOutByDefault": "Neue E-Mail-Adressen als Opt-Out markieren", + "emailAddressIsOptedOutByDefault": "Neue E-Mail-Adressen als Opted-Out markieren", "outboundEmailBccAddress": "BCC-Adresse für externe Clients", "adminNotificationsNewExtensionVersion": "Benachrichtigung anzeigen, wenn neue Versionen von Erweiterungen verfügbar sind", "cleanupDeletedRecords": "Gelöschte Datensätze aufräumen", "ldapPortalUserLdapAuth": "LDAP-Authentifizierung für Portalbenutzer verwenden", "ldapPortalUserPortals": "Standardportale für einen Portalbenutzer", "ldapPortalUserRoles": "Standardrollen für einen Portalbenutzer", - "addressCountryList": "Adresse Land Autovervollständigungsliste", "fiscalYearShift": "Beginn des Geschäftsjahres", "jobRunInParallel": "Jobs werden parallel ausgeführt", "jobMaxPortion": "Maximale Anzahl von Jobs", @@ -160,7 +159,13 @@ "phoneNumberInternational": "Internationale Telefonnummern", "phoneNumberPreferredCountryList": "Bevorzugte Ländervorwahlen", "jobForceUtc": "UTC-Zeitzone erzwingen", - "emailAddressSelectEntityTypeList": "Auswahlbereiche für E-Mail-Adressen" + "emailAddressSelectEntityTypeList": "Auswahlbereiche für E-Mail-Adressen", + "phoneNumberExtensions": "Telefonnummer mit Nebenstellen", + "oidcAuthorizationPrompt": "OIDC-Autorisierungsanfrage", + "quickSearchFullTextAppendWildcard": "Platzhalter in der Schnellsuche einfügen", + "authIpAddressCheck": "Zugriff nach IP-Adresse einschränken", + "authIpAddressWhitelist": "IP-Adressen-Whitelist", + "authIpAddressCheckExcludedUsers": "Von der Überprüfung ausgeschlossene Benutzer" }, "tooltips": { "recordsPerPage": "Anzahl Sätze In Listenansichten (Standard) ", @@ -198,7 +203,6 @@ "textFilterUseContainsForVarchar": "Wenn nicht aktiviert, wird der Operator \"beginnt mit\" verwendet. Sie können den Platzhalter '%' verwenden.", "streamEmailNotificationsEntityList": "E-Mail-Benachrichtigungen über neuen Ereignisse von gefolgten Datensätzen. Benutzer erhalten E-Mail-Benachrichtigungen nur für bestimmte Entitätstypen.", "authTokenPreventConcurrent": "Benutzer können nicht gleichzeitig auf mehreren Geräten angemeldet sein.", - "emailAddressIsOptedOutByDefault": "Beim Erstellen eines neuen Datensatzes wird die E-Mail-Adresse als Opt-Out markiert.", "cleanupDeletedRecords": "Gelöschte Datensätze werden nach einiger Zeit aus der Datenbank gelöscht.", "ldapPortalUserLdapAuth": "Zulassen, dass Portalbenutzer die LDAP-Authentifizierung anstelle der Espo-Authentifizierung verwenden.", "ldapPortalUserPortals": "Standardportale für erstellte Portalbenutzer", @@ -235,7 +239,6 @@ "busyRangesEntityList": "Was wird bei der Anzeige belegter Zeitbereiche in Scheduler & Timeline berücksichtigt.", "recordsPerPageSelect": "Anzahl der Datensätze, die initial bei der Auswahl von Datensätzen angezeigt werden.", "workingTimeCalendar": "Ein Arbeitszeitkalender, der standardmäßig auf alle Benutzer angewendet wird.", - "oidcGroupClaim": "Ein Claim an den Benutzer für Team-Zuordnung.", "oidcFallback": "Anmeldung mit Benutzernamen/Passwort erlauben.", "oidcCreateUser": "Erstellen Sie einen neuen Benutzer in Espo, wenn kein passender Benutzer gefunden wurde.", "oidcSync": "Benutzerdaten synchronisieren (bei jeder Anmeldung).", @@ -245,7 +248,12 @@ "oidcLogoutUrl": "Eine URL, an die der Browser nach der Abmeldung von Espo weitergeleitet wird. Sie dient dazu, die Sitzungsinformationen im Browser zu löschen und die Abmeldung auf der Anbieterseite durchzuführen. Normalerweise enthält die URL einen redirect-URL Parameter, um zu Espo zurückzukehren.\n\nVerfügbare Platzhalter:\n* `{siteUrl}`\n* `{clientId}`", "recordsPerPageKanban": "Anzahl der Datensätze, die initial in den Kanban-Spalten angezeigt werden.", "jobForceUtc": "Verwenden Sie die UTC-Zeitzone für geplante Jobs. Andernfalls wird die in den Einstellungen festgelegte Zeitzone verwendet.", - "emailAddressSelectEntityTypeList": "Entitätstypen, die bei der Suche nach einer E-Mail-Adresse in einem Modal verfügbar sind." + "emailAddressSelectEntityTypeList": "Entitätstypen, die bei der Suche nach einer E-Mail-Adresse in einem Modal verfügbar sind.", + "authIpAddressCheckExcludedUsers": "Benutzer, die sich unabhängig davon anmelden können, ob ihre IP-Adresse auf der Whitelist steht.", + "authIpAddressWhitelist": "Eine Liste von IP-Adressen oder Bereichen in CIDR-Notation.\n\nPortale sind von der Einschränkung nicht betroffen.", + "emailAddressIsOptedOutByDefault": "Beim Erstellen eines neuen Datensatzes wird die E-Mail-Adresse als Opted-Out markiert.", + "oidcGroupClaim": "Ein Claim, der für die Teamzuordnung genutzt wird.", + "quickSearchFullTextAppendWildcard": "Fügen Sie einen Platzhalter an eine Autovervollständigung-Suchanfrage an, wenn die Volltextsuche aktiviert ist. Verringert die Suchleistung." }, "labels": { "Locale": "Lokale Einstellungen", @@ -269,7 +277,10 @@ "Divider": "Trenner", "General": "Allgemein", "Navbar": "Navigationsleiste", - "Phone Numbers": "Telefonnummern" + "Phone Numbers": "Telefonnummern", + "Access": "Zugriff", + "Strength": "Stärke", + "Recovery": "Wiederherstellung" }, "messages": { "ldapTestConnection": "Die Verbindung wurde erfolgreich hergestellt." diff --git a/application/Espo/Resources/i18n/de_DE/Team.json b/application/Espo/Resources/i18n/de_DE/Team.json index 5e39613ea1..04e31d1aa4 100644 --- a/application/Espo/Resources/i18n/de_DE/Team.json +++ b/application/Espo/Resources/i18n/de_DE/Team.json @@ -3,7 +3,8 @@ "roles": "Rollen", "positionList": "Positionsbezeichnungen", "layoutSet": "Layout-Set", - "workingTimeCalendar": "Arbeitszeitkalender" + "workingTimeCalendar": "Arbeitszeitkalender", + "userRole": "Benutzerrolle" }, "links": { "users": "Benutzer", diff --git a/application/Espo/Resources/i18n/de_DE/User.json b/application/Espo/Resources/i18n/de_DE/User.json index 9d28dc500f..5ad2f0ac83 100644 --- a/application/Espo/Resources/i18n/de_DE/User.json +++ b/application/Espo/Resources/i18n/de_DE/User.json @@ -36,7 +36,8 @@ "auth2FAMethod": "2FA Methode", "auth2FATotpSecret": "2FA TOTP Geheimnis", "workingTimeCalendar": "Arbeitszeitkalender", - "layoutSet": "Layout-Satz" + "layoutSet": "Layout-Satz", + "avatarColor": "Farbe des Avatars" }, "links": { "roles": "Rollen", @@ -51,8 +52,8 @@ "dashboardTemplate": "Dashboard-Vorlage", "userData": "Benutzerdaten", "workingTimeCalendar": "Arbeitszeitkalender", - "workingTimeRanges": "Arbeitszeitzeiträume", - "layoutSet": "Layout-Satz" + "layoutSet": "Layout-Satz", + "workingTimeRanges": "Arbeitszeitausnahmen" }, "labels": { "Create User": "Benutzer erstellen", @@ -126,7 +127,8 @@ "loginAs": "Öffnen Sie den Anmeldelink in einem Inkognito-Fenster, um Ihre aktuelle Sitzung beizubehalten. Melden Sie sich mit Ihren Administrator-Anmeldedaten an.", "failedToLogIn": "Anmeldung fehlgeschlagen", "2faMethodNotConfigured": "Die 2FA-Methode ist im System nicht vollständig konfiguriert.", - "loginError": "Ein Fehler ist aufgetreten" + "loginError": "Ein Fehler ist aufgetreten", + "defaultTeamIsNotUsers": "Das Standardteam sollte eines der Teams des Benutzers sein" }, "boolFilters": { "onlyMyTeam": "Nur mein Team" diff --git a/application/Espo/Resources/i18n/de_DE/WorkingTimeCalendar.json b/application/Espo/Resources/i18n/de_DE/WorkingTimeCalendar.json index ba7fb10cdf..7ebe06b08e 100644 --- a/application/Espo/Resources/i18n/de_DE/WorkingTimeCalendar.json +++ b/application/Espo/Resources/i18n/de_DE/WorkingTimeCalendar.json @@ -1,7 +1,6 @@ { "labels": { - "Create WorkingTimeCalendar": "Kalender erstellen", - "Ranges": "Zeiträume" + "Create WorkingTimeCalendar": "Kalender erstellen" }, "fields": { "timeZone": "Zeitzone", @@ -22,6 +21,6 @@ "weekday6TimeRanges": "Sa Zeitplan" }, "links": { - "ranges": "Zeiträume" + "ranges": "Ausnahmen" } } \ No newline at end of file diff --git a/application/Espo/Resources/i18n/de_DE/WorkingTimeRange.json b/application/Espo/Resources/i18n/de_DE/WorkingTimeRange.json index b5dc4bf1fd..7eec5b1c62 100644 --- a/application/Espo/Resources/i18n/de_DE/WorkingTimeRange.json +++ b/application/Espo/Resources/i18n/de_DE/WorkingTimeRange.json @@ -1,7 +1,7 @@ { "labels": { - "Create WorkingTimeRange": "Zeitraum erstellen", - "Calendars": "Kalender" + "Calendars": "Kalender", + "Create WorkingTimeRange": "Ausnahme erstellen" }, "fields": { "timeRanges": "Zeitplan", diff --git a/application/Espo/Resources/i18n/it_IT/AddressCountry.json b/application/Espo/Resources/i18n/it_IT/AddressCountry.json new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/application/Espo/Resources/i18n/it_IT/AddressCountry.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/application/Espo/Resources/i18n/it_IT/Admin.json b/application/Espo/Resources/i18n/it_IT/Admin.json index 5e687d0d03..90106d9a89 100644 --- a/application/Espo/Resources/i18n/it_IT/Admin.json +++ b/application/Espo/Resources/i18n/it_IT/Admin.json @@ -21,7 +21,7 @@ "Portals": "Portali", "Portal Roles": "Ruoli Portale", "Outbound Emails": "Email in Uscita", - "Group Email Accounts": "Gruppi Account Email", + "Group Email Accounts": "Account Email di Gruppo", "Personal Email Accounts": "Account Email PersonalI", "Inbound Emails": "Email in Entrata", "Email Templates": "Modelli Email", @@ -175,7 +175,7 @@ "isPersonalData": "Sono dati personali", "useIframe": "Usa Iframe", "useNumericFormat": "Usa formato numerico", - "strip": "Striscia", + "strip": "Rimuovi Protocollo", "cutHeight": "Altezza di taglio (px)", "minuteStep": "Minuti Step", "inlineEditDisabled": "Disabilita modifica in linea", @@ -315,5 +315,11 @@ "templateManager": "notifiche", "authentication": "password,sicurezza,ldap", "labelManager": "lingua,traduzione" + }, + "options": { + "labelType": { + "state": "Stato", + "regular": "Regolare" + } } } \ No newline at end of file diff --git a/application/Espo/Resources/i18n/it_IT/AppLogRecord.json b/application/Espo/Resources/i18n/it_IT/AppLogRecord.json new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/application/Espo/Resources/i18n/it_IT/AppLogRecord.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/application/Espo/Resources/i18n/it_IT/DashboardTemplate.json b/application/Espo/Resources/i18n/it_IT/DashboardTemplate.json index d4f67e76af..1ed9e81949 100644 --- a/application/Espo/Resources/i18n/it_IT/DashboardTemplate.json +++ b/application/Espo/Resources/i18n/it_IT/DashboardTemplate.json @@ -4,7 +4,7 @@ }, "labels": { "Create DashboardTemplate": "Crea modello", - "Deploy to Users": "Distribuire agli utenti", - "Deploy to Team": "Distribuire al team" + "Deploy to Users": "Distribuisci agli utenti", + "Deploy to Team": "Distribuisci al team" } } \ No newline at end of file diff --git a/application/Espo/Resources/i18n/it_IT/Email.json b/application/Espo/Resources/i18n/it_IT/Email.json index 4176276daa..0bd65bc185 100644 --- a/application/Espo/Resources/i18n/it_IT/Email.json +++ b/application/Espo/Resources/i18n/it_IT/Email.json @@ -90,7 +90,7 @@ "Original message": "Messaggio originale", "Forwarded message": "Messaggio inoltrato", "Email Accounts": "Account Email Personali", - "Inbound Emails": "Gruppi Account Email", + "Inbound Emails": "Account Email di Gruppo", "Email Templates": "Modelli Email", "Send Test Email": "Invia Email di Prova", "Send": "Invia", @@ -101,18 +101,19 @@ "Mark all as read": "Segna Tutte Come Lette", "Show Plain Text": "Visualizza Testo Normale", "Mark as Important": "Segna Come Importante", - "Unmark Importance": "Deseleziona come Importante", + "Unmark Importance": "Rimuovi Importante", "Move to Trash": "Sposta nel Cestino", "Retrieve from Trash": "Ripristina da Cestino", "Move to Folder": "Sposta nella Cartella", "Filters": "Filtri", "Folders": "Cartelle", - "View Users": "Visualizza utenti", + "View Users": "Visualizza Utenti", "No Subject": "Nessun Oggetto", "Insert Field": "Inserisci Campo", "Event": "Evento", "Moving to folder": "Sposta in una Cartella", - "Group Folders": "Cartelle di Gruppo" + "Group Folders": "Cartelle di Gruppo", + "View Attachments": "Vedi Allegati" }, "messages": { "testEmailSent": "L'email di prova è stata inviata", @@ -139,10 +140,10 @@ "markAsRead": "Segna Come Letto", "markAsNotRead": "Segna Come Non Letto", "markAsImportant": "Segna Come Importante", - "markAsNotImportant": "Deseleziona come Importante", + "markAsNotImportant": "Rimuovi Importante", "moveToTrash": "Sposta nel Cestino", "moveToFolder": "Sposta nella Cartella", - "retrieveFromTrash": "Recupera dal cestino" + "retrieveFromTrash": "Recupera dal Cestino" }, "strings": { "sendingFailed": "Invio email fallito" diff --git a/application/Espo/Resources/i18n/it_IT/FieldManager.json b/application/Espo/Resources/i18n/it_IT/FieldManager.json index 601e9bb197..93072edb0a 100644 --- a/application/Espo/Resources/i18n/it_IT/FieldManager.json +++ b/application/Espo/Resources/i18n/it_IT/FieldManager.json @@ -143,7 +143,7 @@ "attachmentMultiple": "Consente il caricamento di più file.", "number": "Un numero autoincrementante di tipo stringa con un possibile prefisso e una lunghezza specifica.", "autoincrement": "Un numero intero di sola lettura e autoincrementante.", - "barcode": "Un codice a barre. Può essere stampato in PDF.", + "barcode": "Un codice a barre. Può essere stampato in un PDF.", "email": "Un insieme di indirizzi email con i relativi parametri: Escluso, Invalido, Primario.", "phone": "Un insieme di numeri di telefono con i relativi parametri: Tipo, Escluso, Invalido, Primario.", "foreign": "Campo di un record correlato. Di Sola Lettura.", diff --git a/application/Espo/Resources/i18n/it_IT/Global.json b/application/Espo/Resources/i18n/it_IT/Global.json index 1021b3833e..8beabb156e 100644 --- a/application/Espo/Resources/i18n/it_IT/Global.json +++ b/application/Espo/Resources/i18n/it_IT/Global.json @@ -9,7 +9,7 @@ "ScheduledJob": "Lavoro programmato", "ExternalAccount": "Account Esterno", "Extension": "Estensione", - "InboundEmail": "Gruppo Account Email", + "InboundEmail": "Account Email di Gruppo", "Stream": "Flusso Attività", "Import": "Importa", "Template": "Modello", @@ -52,7 +52,6 @@ "Note": "Nota", "ImportError": "Errore di importazione", "WorkingTimeCalendar": "Calendario Lavorativo", - "WorkingTimeRange": "Intervallo di Lavoro", "GroupEmailFolder": "Cartella Email di Gruppo", "AuthenticationProvider": "Provider di Autenticazione", "GlobalStream": "Flusso Attività Globale", @@ -64,13 +63,13 @@ "Team": "Team", "Role": "Ruoli", "EmailTemplate": "Modelli Email", - "EmailAccount": "Account Email Personale", - "EmailAccountScope": "Account Email Personale", + "EmailAccount": "Account Email Personali", + "EmailAccountScope": "Account Email Personali", "OutboundEmail": "Email in Uscita", "ScheduledJob": "Lavori Pianificati", "ExternalAccount": "Account Esterni", "Extension": "Estensioni", - "InboundEmail": "Gruppi Account Email", + "InboundEmail": "Account Email di Gruppo", "Stream": "Flusso Attività", "Template": "Modelli", "Job": "Lavori", @@ -102,7 +101,6 @@ "Note": "Note", "ImportError": "Errori di importazione", "WorkingTimeCalendar": "Calendari Lavorativi", - "WorkingTimeRange": "Intervalli di Lavoro", "GroupEmailFolder": "Cartelle Email di Gruppo", "AuthenticationProvider": "Provider di Autenticazione", "GlobalStream": "Flusso Attività Globale", @@ -793,10 +791,10 @@ "emailAddress": "Indirizzo Email Valido", "phoneNumber": "Numero di Telefono Valido", "arrayOfString": "Array di Stringhe", - "valid": "Valido", "noEmptyString": "Nessuna Stringa Vuota", "max": "Valore Max", - "min": "Valore Min" + "min": "Valore Min", + "valid": "Validità" }, "fieldValidationExplanations": { "url_valid": "Valore URL non valido.", @@ -811,10 +809,32 @@ "enum_valid": "Valore enum non valido. Il valore deve essere una delle opzioni enum definite. Un valore vuoto è consentito solo se il campo ha un'opzione vuota.", "multiEnum_valid": "Valore multi-enum non valido. I valori devono rientrare tra le opzioni di campo stabilite.", "int_valid": "Valore numerico intero non valido.", - "float_valid": "Valore numerico non valido." + "float_valid": "Valore numerico non valido.", + "valid": "Valore non valido." }, "navbarTabs": { "Support": "Supporto", "Activities": "Attività" + }, + "wysiwygLabels": { + "align": "Allinea", + "width": "Larghezza", + "height": "Altezza", + "borderWidth": "Larghezza Bordo", + "borderColor": "Colore Bordo", + "backgroundColor": "Colore Sfondo", + "verticalAlign": "Allineamento Verticale" + }, + "wysiwygOptions": { + "align": { + "left": "Sinistra", + "center": "Centro", + "right": "Destra" + }, + "verticalAlign": { + "top": "Superiore", + "middle": "Medio", + "bottom": "Inferiore" + } } } \ No newline at end of file diff --git a/application/Espo/Resources/i18n/it_IT/Note.json b/application/Espo/Resources/i18n/it_IT/Note.json index a0d2505007..6057f6e611 100644 --- a/application/Espo/Resources/i18n/it_IT/Note.json +++ b/application/Espo/Resources/i18n/it_IT/Note.json @@ -11,7 +11,8 @@ "related": "Correlato", "createdByGender": "Creato da genere", "data": "Dati", - "number": "Numero" + "number": "Numero", + "isPinned": "è Fissato" }, "filters": { "all": "Tutti", @@ -50,6 +51,9 @@ }, "labels": { "View Posts": "Vedi Post", - "View Activity": "Vedi Attività" + "View Activity": "Vedi Attività", + "Pin": "Fissa", + "Unpin": "Stacca", + "Pinned": "Fissato" } } \ No newline at end of file diff --git a/application/Espo/Resources/i18n/it_IT/Preferences.json b/application/Espo/Resources/i18n/it_IT/Preferences.json index c22b5b0a9c..ffd425ae79 100644 --- a/application/Espo/Resources/i18n/it_IT/Preferences.json +++ b/application/Espo/Resources/i18n/it_IT/Preferences.json @@ -18,7 +18,7 @@ "useCustomTabList": "Elenco Schede Personalizzato", "receiveAssignmentEmailNotifications": "Notifiche via email al momento dell' assegnazione", "receiveMentionEmailNotifications": "Notifiche via email in caso di menzioni nei post", - "receiveStreamEmailNotifications": "Notifiche via email per i messaggi e gli aggiornamenti di stato", + "receiveStreamEmailNotifications": "Notifiche email per i messaggi e gli aggiornamenti di stato", "dashboardLayout": "Layout Dashboard", "emailReplyForceHtml": "Email di Risposta in HTML", "autoFollowEntityTypeList": "Auto-follow globale", diff --git a/application/Espo/Resources/i18n/it_IT/Settings.json b/application/Espo/Resources/i18n/it_IT/Settings.json index fb3c48a201..80f0e26ed5 100644 --- a/application/Espo/Resources/i18n/it_IT/Settings.json +++ b/application/Espo/Resources/i18n/it_IT/Settings.json @@ -96,7 +96,6 @@ "ldapPortalUserLdapAuth": "Utilizza l'autenticazione LDAP per gli utenti del portale", "ldapPortalUserPortals": "Portali predefiniti per un utente del portale", "ldapPortalUserRoles": "Ruoli predefiniti per un utente del portale\n", - "addressCountryList": "Elenco Paesi Completamento Automatico", "fiscalYearShift": "Inizio dell'anno fiscale\n", "jobRunInParallel": "Lavori Eseguiti in Parallelo", "jobMaxPortion": "Porzione massima di lavori", @@ -183,7 +182,6 @@ "textFilterUseContainsForVarchar": "Se non selezionata, viene utilizzato l'operatore ' inizia con '. È possibile utilizzare il carattere jolly '%'.", "streamEmailNotificationsEntityList": "Notifiche via Email sugli aggiornamenti del flusso attività dei record seguiti. Gli utenti riceveranno notifiche via e-mail solo per i tipi di entità specificati.", "authTokenPreventConcurrent": "Gli utenti non potranno essere collegati simultaneamente su più dispositivi.", - "emailAddressIsOptedOutByDefault": "Quando si crea un nuovo record, l'indirizzo e-mail sarà contrassegnato come escluso.", "cleanupDeletedRecords": "I record rimossi verranno eliminati dal database dopo un po' di tempo.", "ldapPortalUserLdapAuth": "Consentire agli utenti del portale di utilizzare l'autenticazione LDAP anziché l'autenticazione Espo.", "ldapPortalUserPortals": "Portali predefiniti per l'utente del portale creato", @@ -220,7 +218,6 @@ "busyRangesEntityList": "Cosa viene preso in considerazione quando vengono mostrati gli intervalli di tempo occupati nello scheduler e nella timeline.", "recordsPerPageSelect": "Numero di record visualizzati inizialmente quando si selezionano i record.", "workingTimeCalendar": "Un Calendario Lavorativo che sarà applicato a tutti gli utenti per impostazione predefinita.", - "oidcGroupClaim": "Una richiesta all'utente per la mappatura del team.", "oidcFallback": "Consente l'accesso tramite nome utente/password.", "oidcCreateUser": "Crea un nuovo utente in Espo quando non viene trovato nessun utente corrispondente.", "oidcSync": "Sincronizza dati utenti (a ogni accesso).", @@ -240,7 +237,7 @@ "Email Notifications": "Notifiche Email", "Currency Settings": "Impostazioni di valuta", "Currency Rates": "Tassi di Cambio", - "Mass Email": "Email massiva", + "Mass Email": "Email Massiva", "Test Connection": "Prova della connessione", "Connecting": "Connessione...", "Activities": "Attività", diff --git a/application/Espo/Resources/i18n/it_IT/Team.json b/application/Espo/Resources/i18n/it_IT/Team.json index 6938a1fc9b..3e4713fd19 100644 --- a/application/Espo/Resources/i18n/it_IT/Team.json +++ b/application/Espo/Resources/i18n/it_IT/Team.json @@ -10,7 +10,7 @@ "users": "Utenti", "notes": "Note", "roles": "Ruoli", - "inboundEmails": "Gruppi Account Email", + "inboundEmails": "Account Email di Gruppo", "layoutSet": "Layout", "workingTimeCalendar": "Calendario Lavorativo", "groupEmailFolders": "Cartelle Email di Gruppo" diff --git a/application/Espo/Resources/i18n/it_IT/User.json b/application/Espo/Resources/i18n/it_IT/User.json index 3562af256a..e3ca88150d 100644 --- a/application/Espo/Resources/i18n/it_IT/User.json +++ b/application/Espo/Resources/i18n/it_IT/User.json @@ -36,7 +36,8 @@ "auth2FAMethod": "Metodo 2FA", "auth2FATotpSecret": "2FA TOTP Secret\n", "workingTimeCalendar": "Calendario Lavorativo", - "layoutSet": "Layout" + "layoutSet": "Layout", + "avatarColor": "Colore Avatar" }, "links": { "teams": "Team", @@ -52,7 +53,6 @@ "dashboardTemplate": "Modello Dashboard", "userData": "Dati Utente", "workingTimeCalendar": "Calendario Lavorativo", - "workingTimeRanges": "Intervalli di Lavoro", "layoutSet": "Layout" }, "labels": { diff --git a/application/Espo/Resources/i18n/it_IT/WorkingTimeCalendar.json b/application/Espo/Resources/i18n/it_IT/WorkingTimeCalendar.json index 5a780ca08e..4ae8788aeb 100644 --- a/application/Espo/Resources/i18n/it_IT/WorkingTimeCalendar.json +++ b/application/Espo/Resources/i18n/it_IT/WorkingTimeCalendar.json @@ -1,7 +1,6 @@ { "labels": { - "Create WorkingTimeCalendar": "Crea Calendario", - "Ranges": "Intervalli" + "Create WorkingTimeCalendar": "Crea Calendario" }, "fields": { "timeZone": "Fuso Orario", @@ -20,8 +19,5 @@ "weekday4TimeRanges": "Orario Gio", "weekday5TimeRanges": "Orario Ven", "weekday6TimeRanges": "Orario Sab" - }, - "links": { - "ranges": "Intervalli" } } \ No newline at end of file diff --git a/application/Espo/Resources/i18n/it_IT/WorkingTimeRange.json b/application/Espo/Resources/i18n/it_IT/WorkingTimeRange.json index 948fcc3b79..8d4501820b 100644 --- a/application/Espo/Resources/i18n/it_IT/WorkingTimeRange.json +++ b/application/Espo/Resources/i18n/it_IT/WorkingTimeRange.json @@ -1,6 +1,5 @@ { "labels": { - "Create WorkingTimeRange": "Crea Intervallo", "Calendars": "Calendari" }, "fields": { diff --git a/application/Espo/Resources/i18n/nl_NL/AddressCountry.json b/application/Espo/Resources/i18n/nl_NL/AddressCountry.json new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/application/Espo/Resources/i18n/nl_NL/AddressCountry.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/application/Espo/Resources/i18n/nl_NL/Admin.json b/application/Espo/Resources/i18n/nl_NL/Admin.json index 7513bab620..560f654427 100644 --- a/application/Espo/Resources/i18n/nl_NL/Admin.json +++ b/application/Espo/Resources/i18n/nl_NL/Admin.json @@ -202,7 +202,9 @@ "readOnlyAfterCreate": "Alleen lezen na aanmaken", "createButton": "Knop aanmaken", "autocompleteOnEmpty": "Autoaanvullen bij lege invoer", - "relateOnImport": "Relateer op import" + "relateOnImport": "Relateer op import", + "aclScope": "ACL Toepassing", + "onlyAdmin": "Alleen voor Admin" }, "messages": { "selectEntityType": "Selecteer de eenheid soort in het linker menu.", diff --git a/application/Espo/Resources/i18n/nl_NL/AppLogRecord.json b/application/Espo/Resources/i18n/nl_NL/AppLogRecord.json new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/application/Espo/Resources/i18n/nl_NL/AppLogRecord.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/application/Espo/Resources/i18n/nl_NL/EntityManager.json b/application/Espo/Resources/i18n/nl_NL/EntityManager.json index b767eaead0..353cd835a2 100644 --- a/application/Espo/Resources/i18n/nl_NL/EntityManager.json +++ b/application/Espo/Resources/i18n/nl_NL/EntityManager.json @@ -39,7 +39,9 @@ "duplicateCheckFieldList": "Duplicaat controlevelden", "layout": "Lay-out", "author": "Auteur", - "version": "Versie" + "version": "Versie", + "selectFilter": "Select filter", + "primaryFilters": "Primaire filters" }, "options": { "type": { @@ -63,6 +65,9 @@ "sortDirection": { "asc": "Oplopend", "desc": "Aflopend" + }, + "module": { + "Custom": "Aangepast" } }, "messages": { @@ -75,7 +80,8 @@ "nameIsAlreadyUsed": "Naam '{name}' wordt al gebruikt.", "nameIsNotAllowed": "Naam '{name}' is niet toegestaan.", "nameIsTooLong": "Naam is te lang.", - "confirmRemoveLink": "Weet je zeker dat je de *{link}* relatie wilt verwijderen?" + "confirmRemoveLink": "Weet je zeker dat je de *{link}* relatie wilt verwijderen?", + "urlHashCopiedToClipboard": "Een URL-fragment voor de *{name}* filter wordt gekopieerd naar het klembord. Je kunt het toevoegen aan de navigatiebalk." }, "tooltips": { "statusField": "Updates van dit veld zijn gelogd in stream.", @@ -89,6 +95,7 @@ "countDisabled": "Het totale aantal wordt niet weergegeven in de lijstweergave. Kan de laadtijd verkorten wanneer de DB-tabel groot is.", "optimisticConcurrencyControl": "Voorkomt schrijfconflicten.", "duplicateCheckFieldList": "Welke velden te controleren bij het controleren op duplicaten.", - "updateDuplicateCheck": "Controleren op duplicaten bij het bijwerken van een record." + "updateDuplicateCheck": "Controleren op duplicaten bij het bijwerken van een record.", + "linkSelectFilter": "Een primair filter dat standaard wordt toegepast bij het selecteren van een record." } } \ No newline at end of file diff --git a/application/Espo/Resources/i18n/nl_NL/Global.json b/application/Espo/Resources/i18n/nl_NL/Global.json index 65c3f95698..ac78a1272d 100644 --- a/application/Espo/Resources/i18n/nl_NL/Global.json +++ b/application/Espo/Resources/i18n/nl_NL/Global.json @@ -51,10 +51,10 @@ "Note": "Opmerking", "ImportError": "Importfout", "WorkingTimeCalendar": "Werktijd Kalender", - "WorkingTimeRange": "Werktijdbereik", "GroupEmailFolder": "Groep e-mail map", "AuthenticationProvider": "Authenticatie aanbieder", - "GlobalStream": "Globale stroming" + "GlobalStream": "Globale stroming", + "WebhookQueueItem": "Webhook wachtrij item" }, "scopeNamesPlural": { "Email": "E-mails", @@ -97,10 +97,10 @@ "Note": "Opmerkingen", "ImportError": "Importfouten", "WorkingTimeCalendar": "Werktijd kalenders", - "WorkingTimeRange": "Werktijdbereiken", "GroupEmailFolder": "Groep e-mailmappen", "AuthenticationProvider": "Authenticatie aanbieders", - "GlobalStream": "Globale stroming" + "GlobalStream": "Globale stroming", + "WebhookQueueItem": "Webhook wachtrij items" }, "labels": { "Misc": "Overig", @@ -258,7 +258,14 @@ "Show Navigation Panel": "Toon navigatiepaneel", "Hide Navigation Panel": "Verberg navigatiepaneel", "Copy to Clipboard": "Kopiëren naar klembord", - "Copied to clipboard": "Gekopieerd naar klembord" + "Copied to clipboard": "Gekopieerd naar klembord", + "Audit Log": "Controlelog", + "View Audit Log": "Bekijk controlelog", + "Previous Page": "Vorige pagina", + "Next Page": "Volgende pagina", + "First Page": "Eerste pagina", + "Last Page": "Laatste pagina", + "Page": "Pagina" }, "messages": { "pleaseWait": "Even geduld...", @@ -359,7 +366,9 @@ "fieldPhoneTooLong": "{field} is te lang", "barcodeInvalid": "{field} is ongeldig {type}", "noLinkAccess": "Kan geen relatie leggen met {foreignEntityType} record via de link '{link}'. Geen toegang.", - "attemptIntervalFailure": "De bewerking is niet toegestaan tijdens een bepaald tijdsinterval. Wacht enige tijd voor de volgende poging." + "attemptIntervalFailure": "De bewerking is niet toegestaan tijdens een bepaald tijdsinterval. Wacht enige tijd voor de volgende poging.", + "confirmRestoreFromAudit": "De vorige waarden worden ingesteld in een formulier. Daarna kun je het record opslaan om de vorige waarden te herstellen.", + "pageNumberIsOutOfBound": "Paginanummer buiten limiet" }, "boolFilters": { "onlyMy": "Alleen mijn", @@ -417,7 +426,9 @@ "types": "Typen", "middleName": "Tussenvoegsel", "emailAddressIsInvalid": "E-mailadres is ongeldig", - "phoneNumberIsInvalid": "Telefoonnummer is ongeldig" + "phoneNumberIsInvalid": "Telefoonnummer is ongeldig", + "users": "Gebruikers", + "childList": "Sublijst" }, "links": { "assignedUser": "Toegewezen gebruiker", @@ -765,7 +776,6 @@ "phoneNumber": "Geldig telefoonnummer", "array": "Reeks", "arrayOfString": "Reeks tekens", - "valid": "Geldig", "noEmptyString": "Geen lege string", "max": "Max. waarde", "min": "Min. waarde" diff --git a/application/Espo/Resources/i18n/nl_NL/LayoutManager.json b/application/Espo/Resources/i18n/nl_NL/LayoutManager.json index 39d6e61e19..72d00d0de4 100644 --- a/application/Espo/Resources/i18n/nl_NL/LayoutManager.json +++ b/application/Espo/Resources/i18n/nl_NL/LayoutManager.json @@ -10,7 +10,9 @@ "hidden": "Verborgen", "dynamicLogicStyled": "Voorwaarden voor toegepaste stijl", "noLabel": "Geen label", - "width": "Breedte" + "width": "Breedte", + "noteText": "Noot tekst", + "noteStyle": "Noot stijl" }, "options": { "align": { @@ -39,7 +41,8 @@ "tabBreak": "Een apart tabblad voor het paneel en alle volgende panelen tot de volgende tab-break.", "noLabel": "Toon geen kolomlabel in de kop.", "notSortable": "Schakelt de mogelijkheid uit om te sorteren op de kolom.", - "width": "Een kolombreedte. Het is aanbevolen om één kolom te hebben zonder gespecificeerde breedte, meestal moet dit het veld *Name* zijn." + "width": "Een kolombreedte. Het is aanbevolen om één kolom te hebben zonder gespecificeerde breedte, meestal moet dit het veld *Name* zijn.", + "noteText": "Een tekst die moet worden weergegeven in het paneel. Markdown wordt ondersteund." }, "messages": { "cantBeEmpty": "Lay-out kan niet leeg zijn.", diff --git a/application/Espo/Resources/i18n/nl_NL/Preferences.json b/application/Espo/Resources/i18n/nl_NL/Preferences.json index d2f52b258d..ea27981aab 100644 --- a/application/Espo/Resources/i18n/nl_NL/Preferences.json +++ b/application/Espo/Resources/i18n/nl_NL/Preferences.json @@ -31,7 +31,9 @@ "assignmentNotificationsIgnoreEntityTypeList": "Kennisgevingen van toewijzing in de applicatie", "assignmentEmailNotificationsIgnoreEntityTypeList": "Kennisgevingen van e-mailtoewijzingen", "dashboardLocked": "Dashboard vergrendelen", - "textSearchStoringDisabled": "Tekstfilter opslaan uitschakelen" + "textSearchStoringDisabled": "Tekstfilter opslaan uitschakelen", + "calendarSlotDuration": "Kalender duur", + "calendarScrollHour": "Kalender blader naar uur" }, "options": { "weekStart": { @@ -51,5 +53,9 @@ "doNotFillAssignedUserIfNotRequired": "Bij het aanmaken van een record toegewezen gebruiker zal de gebruiker niet worden ingevuld met een eigen gebruikersnaam, tenzij het veld verplicht is.", "followCreatedEntities": "Bij het aanmaken van nieuwe records worden deze automatisch gevolgd, zelfs als ze aan een andere gebruiker worden toegewezen.", "followCreatedEntityTypeList": "Wanneer nieuwe records van geselecteerde entiteittypes worden aanmaakt, worden deze automatisch gevolgd zelfs als ze aan een andere gebruiker worden toegewezen." + }, + "tabFields": { + "iconClass": "Icoon", + "color": "Kleur" } } \ No newline at end of file diff --git a/application/Espo/Resources/i18n/nl_NL/Role.json b/application/Espo/Resources/i18n/nl_NL/Role.json index ad9e9826f2..a3631542d3 100644 --- a/application/Espo/Resources/i18n/nl_NL/Role.json +++ b/application/Espo/Resources/i18n/nl_NL/Role.json @@ -12,7 +12,8 @@ "followerManagementPermission": "Volgersbeheer Toestemming", "data": "Gegevens", "fieldData": "Veldgegevens", - "messagePermission": "Toestemming voor berichten" + "messagePermission": "Toestemming voor berichten", + "auditPermission": "Controle Toestemming" }, "links": { "users": "Gebruikers", @@ -58,6 +59,7 @@ "portalPermission": "Toegang tot portaalinformatie, de mogelijkheid om berichten te posten voor portaalgebruikers.", "groupEmailAccountPermission": "Toegang tot e-mailaccounts van groepen, de mogelijkheid om e-mails te versturen via SMTP van groepen.", "exportPermission": "Het kunnen exporteren van records.", - "massUpdatePermission": "Het uitvoeren van massale updates van records." + "massUpdatePermission": "Het uitvoeren van massale updates van records.", + "auditPermission": "Hiermee kan het auditlogboek worden bekeken." } } \ No newline at end of file diff --git a/application/Espo/Resources/i18n/nl_NL/Settings.json b/application/Espo/Resources/i18n/nl_NL/Settings.json index 946a31fed8..1e0ece3624 100644 --- a/application/Espo/Resources/i18n/nl_NL/Settings.json +++ b/application/Espo/Resources/i18n/nl_NL/Settings.json @@ -97,7 +97,6 @@ "ldapPortalUserLdapAuth": "Gebruik LDAP-authenticatie voor gebruikers van het portaal", "ldapPortalUserPortals": "Standaardportalen voor een portaalgebruiker", "ldapPortalUserRoles": "Standaard functies voor een portaalgebruiker", - "addressCountryList": "Automatisch aanvullen land lijst", "fiscalYearShift": "Start financieel jaar", "jobRunInParallel": "Parallel gelijktijdige opdrachten", "jobMaxPortion": "Opdrachten Max. portie", @@ -156,7 +155,8 @@ "phoneNumberNumericSearch": "Numeriek telefoonnummer zoeken", "phoneNumberInternational": "Internationale telefoonnummers", "phoneNumberPreferredCountryList": "Voorkeur telefoon landcodes", - "jobForceUtc": "UTC-tijdzone afdwingen" + "jobForceUtc": "UTC-tijdzone afdwingen", + "emailAddressSelectEntityTypeList": "Bereik voor selecteren e-mailadres" }, "tooltips": { "recordsPerPage": "Aantal zichtbare records in lijsten.", @@ -194,7 +194,6 @@ "textFilterUseContainsForVarchar": "Indien niet aangevinkt, dan wordt de 'begint met'-operator gebruikt. U kunt het jokerteken '%' gebruiken.", "streamEmailNotificationsEntityList": "E-mailnotificaties over stream-updates van gevolgde records. Gebruikers ontvangen alleen e-mailberichten voor specifieke typen entiteiten.", "authTokenPreventConcurrent": "Gebruikers kunnen niet op meerdere apparaten tegelijk worden ingelogd.", - "emailAddressIsOptedOutByDefault": "Bij het creëren van een nieuw record zal e-mailadres worden gemarkeerd als niet-aangemeld.", "cleanupDeletedRecords": "Verwijderde records worden na een tijdje uit de database verwijderd.", "ldapPortalUserLdapAuth": "Sta gebruikers van het portaal toe om LDAP-authenticatie te gebruiken in plaats van Espo-authenticatie.", "ldapPortalUserPortals": "Standaardportalen voor gemaakte portalen voor de gebruiker", @@ -231,7 +230,6 @@ "busyRangesEntityList": "Waarmee rekening wordt gehouden bij het tonen van bezette tijden in planner en tijdlijn.", "recordsPerPageSelect": "Aantal records dat aanvankelijk wordt weergegeven bij het selecteren van records.", "workingTimeCalendar": "Een werktijd kalender die standaard op alle gebruikers wordt toegepast.", - "oidcGroupClaim": "Een claim naar de gebruiker voor team mapping.", "oidcFallback": "Aanmelding met gebruikersnaam/wachtwoord toestaan.", "oidcCreateUser": "Maak een nieuwe gebruiker aan in Espo als er geen overeenkomende gebruiker is gevonden.", "oidcSync": "Gebruikersgegevens synchroniseren (bij elke aanmelding).", @@ -240,7 +238,8 @@ "oidcTeams": "Espo-teams gemapt tegen groepen/teams/rollen van de identity provider. Teams met een lege mapping waarde worden altijd toegewezen aan een gebruiker (bij het aanmaken of synchroniseren).", "oidcLogoutUrl": "Een URL waarnaar de browser zal doorverwijzen na het afmelden bij Espo. Bedoeld voor het wissen van de sessiegegevens in de browser en het afmelden aan de providerzijde. Meestal bevat de URL een redirect-URL parameter, om terug te keren naar Espo.\n\nBeschikbare plaatshouders:\n* `{siteUrl}`\n* `{clientId}`", "recordsPerPageKanban": "Aantal records dat aanvankelijk in kanban-kolommen wordt weergegeven.", - "jobForceUtc": "Gebruik de UTC-tijdzone voor geplande taken. Anders wordt de tijdzone gebruikt die is ingesteld in de instellingen." + "jobForceUtc": "Gebruik de UTC-tijdzone voor geplande taken. Anders wordt de tijdzone gebruikt die is ingesteld in de instellingen.", + "emailAddressSelectEntityTypeList": "Beschikbare entiteittypes bij het zoeken naar een e-mailadres vanuit een formulier." }, "labels": { "System": "Systeem", diff --git a/application/Espo/Resources/i18n/nl_NL/User.json b/application/Espo/Resources/i18n/nl_NL/User.json index 0d5503900a..1729d05c92 100644 --- a/application/Espo/Resources/i18n/nl_NL/User.json +++ b/application/Espo/Resources/i18n/nl_NL/User.json @@ -52,7 +52,6 @@ "dashboardTemplate": "Dashboard sjabloon", "userData": "Gebruikers gegevens", "workingTimeCalendar": "Werktijd Kalender", - "workingTimeRanges": "Werktijd Bereiken", "layoutSet": "Lay-out Set" }, "labels": { diff --git a/application/Espo/Resources/i18n/nl_NL/WebhookQueueItem.json b/application/Espo/Resources/i18n/nl_NL/WebhookQueueItem.json index 9e26dfeeb6..912b71466c 100644 --- a/application/Espo/Resources/i18n/nl_NL/WebhookQueueItem.json +++ b/application/Espo/Resources/i18n/nl_NL/WebhookQueueItem.json @@ -1 +1,17 @@ -{} \ No newline at end of file +{ + "fields": { + "event": "Evenement", + "target": "Doel", + "data": "Gegevens", + "processedAt": "Verwerkt op", + "attempts": "Pogingen", + "processAt": "Verwerking bij" + }, + "options": { + "status": { + "Pending": "In behandeling", + "Success": "Succes", + "Failed": "Mislukt" + } + } +} \ No newline at end of file diff --git a/application/Espo/Resources/i18n/nl_NL/WorkingTimeCalendar.json b/application/Espo/Resources/i18n/nl_NL/WorkingTimeCalendar.json index 59a71e54da..7aa66da346 100644 --- a/application/Espo/Resources/i18n/nl_NL/WorkingTimeCalendar.json +++ b/application/Espo/Resources/i18n/nl_NL/WorkingTimeCalendar.json @@ -1,7 +1,6 @@ { "labels": { - "Create WorkingTimeCalendar": "Kalender maken", - "Ranges": "Bereiken" + "Create WorkingTimeCalendar": "Kalender maken" }, "fields": { "timeZone": "Tijdzone", @@ -20,8 +19,5 @@ "weekday4TimeRanges": "Do Schema", "weekday5TimeRanges": "Vr Schema", "weekday6TimeRanges": "Zat Schema" - }, - "links": { - "ranges": "Bereiken" } } \ No newline at end of file diff --git a/application/Espo/Resources/i18n/nl_NL/WorkingTimeRange.json b/application/Espo/Resources/i18n/nl_NL/WorkingTimeRange.json index 9ce93fda58..9c32708006 100644 --- a/application/Espo/Resources/i18n/nl_NL/WorkingTimeRange.json +++ b/application/Espo/Resources/i18n/nl_NL/WorkingTimeRange.json @@ -1,6 +1,5 @@ { "labels": { - "Create WorkingTimeRange": "Bereik creëren", "Calendars": "Kalenders" }, "fields": { diff --git a/install/core/i18n/nl_NL/install.json b/install/core/i18n/nl_NL/install.json index 0e2a72e3b4..0c9ac22297 100644 --- a/install/core/i18n/nl_NL/install.json +++ b/install/core/i18n/nl_NL/install.json @@ -40,7 +40,10 @@ "extension is missing": "extensie ontbreekt", "headerTitle": "EspoCRM-installatie", "Crontab setup instructions": "Zonder het uitvoeren van geplande taken zullen inkomende e-mails, meldingen en herinneringen niet werken. Hier kunt u {SETUP_INSTRUCTIONS} lezen.", - "Setup instructions": "setup-instructies" + "Setup instructions": "setup-instructies", + "requiredMysqlVersion": "MySQL Versie", + "requiredMariadbVersion": "MariaDB versie", + "requiredPostgresqlVersion": "PostgreSQL versie" }, "fields": { "Choose your language": "Kies uw taal", From c35b5c5aa5ab20793fcec7d7f3df320f0c45ac88 Mon Sep 17 00:00:00 2001 From: Yuri Kuznetsov Date: Tue, 18 Jun 2024 11:29:01 +0300 Subject: [PATCH 22/23] label --- application/Espo/Resources/i18n/en_US/Email.json | 1 + 1 file changed, 1 insertion(+) diff --git a/application/Espo/Resources/i18n/en_US/Email.json b/application/Espo/Resources/i18n/en_US/Email.json index 0064ad380c..64fbab3ca1 100644 --- a/application/Espo/Resources/i18n/en_US/Email.json +++ b/application/Espo/Resources/i18n/en_US/Email.json @@ -71,6 +71,7 @@ "ccEmailAddresses": "CC EmailAddresses", "bccEmailAddresses": "BCC EmailAddresses", "replyToEmailAddresses": "Reply-To EmailAddresses", + "createdEvent": "Created Event", "groupFolder": "Group Folder" }, "options": { From 3f6f718cd96be4f0f797bae0443be7f8ca75f606 Mon Sep 17 00:00:00 2001 From: Yuri Kuznetsov Date: Tue, 18 Jun 2024 11:30:17 +0300 Subject: [PATCH 23/23] schema --- schema/metadata/entityDefs.json | 3 +++ 1 file changed, 3 insertions(+) diff --git a/schema/metadata/entityDefs.json b/schema/metadata/entityDefs.json index 42e298f4bb..9cf117e133 100644 --- a/schema/metadata/entityDefs.json +++ b/schema/metadata/entityDefs.json @@ -430,6 +430,9 @@ {"const": "datetime"}, {"const": "datetimeOptional"}, {"const": "link"}, + {"const": "linkParent"}, + {"const": "linkOne"}, + {"const": "linkMultiple"}, {"const": "multiEnum"}, {"const": "urlMultiple"}, {"const": "checklist"},