diff --git a/application/Espo/Entities/Preferences.php b/application/Espo/Entities/Preferences.php index 1292d7a40d..247e134e72 100644 --- a/application/Espo/Entities/Preferences.php +++ b/application/Espo/Entities/Preferences.php @@ -47,4 +47,9 @@ class Preferences extends \Espo\Core\ORM\Entity { return $this->get('timeZone'); } + + public function getLanguage(): ?string + { + return $this->get('language'); + } } diff --git a/application/Espo/Modules/Crm/Business/Event/Invitations.php b/application/Espo/Modules/Crm/Business/Event/Invitations.php index cddbfc4aef..92eb96d4fd 100644 --- a/application/Espo/Modules/Crm/Business/Event/Invitations.php +++ b/application/Espo/Modules/Crm/Business/Event/Invitations.php @@ -66,6 +66,7 @@ class Invitations /** * Some dependencies are unused to keep backward compatibility. + * @todo Revise. */ public function __construct( private EntityManager $entityManager, @@ -75,6 +76,7 @@ class Invitations private TemplateFileManager $templateFileManager, private HtmlizerFactory $htmlizerFactory, private ApplicationConfig $applicationConfig, + private DateTimeUtil $dateTime, ) {} /** @@ -282,7 +284,10 @@ class Invitations $data['entityType'] = $this->language->translateLabel($entity->getEntityType(), 'scopeNames'); $data['entityTypeLowerFirst'] = Util::mbLowerCaseFirst($data['entityType']); - $data['timeZone'] = $this->getTimeZone($invitee); + [$timeZone, $language] = $this->getTimeZoneAndLanguage($invitee); + + $data['timeZone'] = $timeZone; + $data['dateStartFull'] = $this->prepareDateStartFull($entity, $timeZone, $language); return $data; } @@ -340,9 +345,13 @@ class Invitations return $attendees; } - private function getTimeZone(Entity $invitee): string + /** + * @return array{string, string} + */ + private function getTimeZoneAndLanguage(Entity $invitee): array { $timeZone = $this->applicationConfig->getTimeZone(); + $language = $this->applicationConfig->getLanguage(); if ($invitee instanceof User) { $preferences = $this->entityManager @@ -352,8 +361,36 @@ class Invitations if ($preferences && $preferences->getTimeZone()) { $timeZone = $preferences->getTimeZone(); } + + if ($preferences && $preferences->getLanguage()) { + $language = $preferences->getLanguage(); + } } - return $timeZone; + return [$timeZone, $language]; + } + + /** + * @todo Take into account the invitees time format if a user. + */ + private function prepareDateStartFull(Entity $entity, string $timeZone, string $language): ?string + { + $format = "dddd, MMMM Do, YYYY"; + + if ($entity->get('dateStartDate')) { + $value = $entity->get('dateStartDate'); + + return $this->dateTime->convertSystemDate($value, $format, $language); + } + + $value = $entity->get('dateStart'); + + if (!$value) { + return null; + } + + $format = $this->applicationConfig->getTimeFormat() . ", " . $format; + + return $this->dateTime->convertSystemDateTime($value, $timeZone, $format, $language); } } diff --git a/application/Espo/Modules/Crm/Resources/templates/cancellation/de_DE/body.tpl b/application/Espo/Modules/Crm/Resources/templates/cancellation/de_DE/body.tpl index 503605235c..c61ed6fa85 100644 --- a/application/Espo/Modules/Crm/Resources/templates/cancellation/de_DE/body.tpl +++ b/application/Espo/Modules/Crm/Resources/templates/cancellation/de_DE/body.tpl @@ -1,5 +1,5 @@

Betreff: {{name}}

-

Start: {{#if isAllDay}}{{dateStartDate}}{{else}}{{dateStart}} ({{timeZone}}){{/if}}

+

Start: {{#if isAllDay}}{{dateStartFull}}{{else}}{{dateStartFull}} ({{timeZone}}){{/if}}

{{#if isUser}}

Eintrag öffnen

{{/if}} diff --git a/application/Espo/Modules/Crm/Resources/templates/cancellation/en_US/body.tpl b/application/Espo/Modules/Crm/Resources/templates/cancellation/en_US/body.tpl index 72b3d01cc7..f59f90d642 100644 --- a/application/Espo/Modules/Crm/Resources/templates/cancellation/en_US/body.tpl +++ b/application/Espo/Modules/Crm/Resources/templates/cancellation/en_US/body.tpl @@ -1,5 +1,5 @@

Subject: {{name}}

-

Start: {{#if isAllDay}}{{dateStartDate}}{{else}}{{dateStart}} ({{timeZone}}){{/if}}

+

Start: {{#if isAllDay}}{{dateStartFull}}{{else}}{{dateStartFull}} ({{timeZone}}){{/if}}

{{#if isUser}}

View record

{{/if}} diff --git a/application/Espo/Modules/Crm/Resources/templates/invitation/de_DE/body.tpl b/application/Espo/Modules/Crm/Resources/templates/invitation/de_DE/body.tpl index 871b6ff6ef..681c1cae10 100644 --- a/application/Espo/Modules/Crm/Resources/templates/invitation/de_DE/body.tpl +++ b/application/Espo/Modules/Crm/Resources/templates/invitation/de_DE/body.tpl @@ -1,5 +1,5 @@

Betreff: {{name}}

-

Beginn: {{#if isAllDay}}{{dateStartDate}}{{else}}{{dateStart}} ({{timeZone}}){{/if}}

+

Beginn: {{#if isAllDay}}{{dateStartFull}}{{else}}{{dateStartFull}} ({{timeZone}}){{/if}}

{{#if isUser}} {{#if description}}

{{{description}}}

diff --git a/application/Espo/Modules/Crm/Resources/templates/invitation/en_US/body.tpl b/application/Espo/Modules/Crm/Resources/templates/invitation/en_US/body.tpl index b71112d8a4..ee116a25f5 100644 --- a/application/Espo/Modules/Crm/Resources/templates/invitation/en_US/body.tpl +++ b/application/Espo/Modules/Crm/Resources/templates/invitation/en_US/body.tpl @@ -1,5 +1,5 @@

Subject: {{name}}

-

Start: {{#if isAllDay}}{{dateStartDate}}{{else}}{{dateStart}} ({{timeZone}}){{/if}}

+

Start: {{#if isAllDay}}{{dateStartFull}}{{else}}{{dateStartFull}} ({{timeZone}}){{/if}}

{{#if isUser}} {{#if description}}

{{{description}}}

diff --git a/application/Espo/Modules/Crm/Resources/templates/invitation/es_ES/body.tpl b/application/Espo/Modules/Crm/Resources/templates/invitation/es_ES/body.tpl index 161c53a937..e271842265 100644 --- a/application/Espo/Modules/Crm/Resources/templates/invitation/es_ES/body.tpl +++ b/application/Espo/Modules/Crm/Resources/templates/invitation/es_ES/body.tpl @@ -1,5 +1,5 @@

Asunto: {{name}}

-

Comienzo: {{#if isAllDay}}{{dateStartDate}}{{else}}{{dateStart}} ({{timeZone}}){{/if}}

+

Comienzo: {{#if isAllDay}}{{dateStartFull}}{{else}}{{dateStartFull}} ({{timeZone}}){{/if}}

{{#if isUser}} {{#if description}}

{{{description}}}

diff --git a/application/Espo/Modules/Crm/Resources/templates/invitation/fr_FR/body.tpl b/application/Espo/Modules/Crm/Resources/templates/invitation/fr_FR/body.tpl index d143ae4aba..988f4ad477 100644 --- a/application/Espo/Modules/Crm/Resources/templates/invitation/fr_FR/body.tpl +++ b/application/Espo/Modules/Crm/Resources/templates/invitation/fr_FR/body.tpl @@ -1,5 +1,5 @@

Objet: {{name}}

-

Débute à: {{#if isAllDay}}{{dateStartDate}}{{else}}{{dateStart}} ({{timeZone}}){{/if}}

+

Débute à: {{#if isAllDay}}{{dateStartFull}}{{else}}{{dateStartFull}} ({{timeZone}}){{/if}}

{{#if isUser}} {{#if description}}

{{{description}}}

diff --git a/application/Espo/Modules/Crm/Resources/templates/invitation/ru_RU/body.tpl b/application/Espo/Modules/Crm/Resources/templates/invitation/ru_RU/body.tpl index fc7dce1b2f..7bf0d88b78 100644 --- a/application/Espo/Modules/Crm/Resources/templates/invitation/ru_RU/body.tpl +++ b/application/Espo/Modules/Crm/Resources/templates/invitation/ru_RU/body.tpl @@ -1,5 +1,5 @@

Название: {{name}}

-

Начало: {{#if isAllDay}}{{dateStartDate}}{{else}}{{dateStart}} ({{timeZone}}){{/if}}

+

Начало: {{#if isAllDay}}{{dateStartFull}}{{else}}{{dateStartFull}} ({{timeZone}}){{/if}}

{{#if isUser}} {{#if description}}

{{{description}}}

diff --git a/application/Espo/Modules/Crm/Resources/templates/invitation/uk_UA/body.tpl b/application/Espo/Modules/Crm/Resources/templates/invitation/uk_UA/body.tpl index 4c88fc84ee..a909340134 100644 --- a/application/Espo/Modules/Crm/Resources/templates/invitation/uk_UA/body.tpl +++ b/application/Espo/Modules/Crm/Resources/templates/invitation/uk_UA/body.tpl @@ -1,5 +1,5 @@

Назва: {{name}}

-

Початок: {{#if isAllDay}}{{dateStartDate}}{{else}}{{dateStart}} ({{timeZone}}){{/if}}

+

Початок: {{#if isAllDay}}{{dateStartFull}}{{else}}{{dateStartFull}} ({{timeZone}}){{/if}}

{{#if isUser}} {{#if description}}

{{{description}}}

diff --git a/application/Espo/Modules/Crm/Resources/templates/invitation/zh_CN/body.tpl b/application/Espo/Modules/Crm/Resources/templates/invitation/zh_CN/body.tpl index a4d1017b2e..07b39ee39a 100644 --- a/application/Espo/Modules/Crm/Resources/templates/invitation/zh_CN/body.tpl +++ b/application/Espo/Modules/Crm/Resources/templates/invitation/zh_CN/body.tpl @@ -1,5 +1,5 @@

Subject: {{name}}

-

Start: {{#if isAllDay}}{{dateStartDate}}{{else}}{{dateStart}} ({{timeZone}}){{/if}}

+

Start: {{#if isAllDay}}{{dateStartFull}}{{else}}{{dateStartFull}} ({{timeZone}}){{/if}}

{{#if isUser}} {{#if description}}

{{{description}}}