diff --git a/.gitignore b/.gitignore
index b1fe992b7..633484b68 100644
--- a/.gitignore
+++ b/.gitignore
@@ -25,7 +25,6 @@
# Customization Files
/Web/custom-favicon.png
/Web/img/custom-logo.png
-lang/*/*-custom.tpl
# Upload Directories
/uploads/*
diff --git a/Pages/Admin/ManageEmailTemplatesPage.php b/Pages/Admin/ManageEmailTemplatesPage.php
index 9605f08ac..c9e07a47b 100644
--- a/Pages/Admin/ManageEmailTemplatesPage.php
+++ b/Pages/Admin/ManageEmailTemplatesPage.php
@@ -44,8 +44,6 @@ public function SetSaveResult($saveResult);
* @return string
*/
public function GetUpdatedTemplateName();
-
- public function GetUpdatedLanguage(): string;
}
class ManageEmailTemplatesPage extends ActionPage implements IManageEmailTemplatesPage
@@ -77,11 +75,6 @@ public function ProcessPageLoad()
$this->Display('Admin/Configuration/manage_email_templates.tpl');
}
- public function GetUpdatedLanguage(): string
- {
- return $this->GetForm(FormKeys::EMAIL_TEMPLATE_LANGUAGE);
- }
-
public function GetLanguage()
{
return $this->GetQuerystring(QueryStringKeys::LANGUAGE);
diff --git a/Pages/HelpPage.php b/Pages/HelpPage.php
index d6783b4d4..89d967579 100644
--- a/Pages/HelpPage.php
+++ b/Pages/HelpPage.php
@@ -18,5 +18,20 @@ public function PageLoad()
$this->Set('ServerTimezone', date_default_timezone_get());
$this->DisplayLocalized('support-and-credits.tpl');
+
+ // $helpType = $this->GetQuerystring('ht');
+//
+// if ($helpType == 'about')
+// {
+//
+// }
+// else if ($helpType == 'admin')
+// {
+// $this->DisplayLocalized('help-admin.tpl');
+// }
+// else
+// {
+// $this->DisplayLocalized('help.tpl');
+// }
}
}
diff --git a/Pages/Page.php b/Pages/Page.php
index 11eb6b0e8..1b975d9c5 100644
--- a/Pages/Page.php
+++ b/Pages/Page.php
@@ -395,10 +395,13 @@ protected function DisplayCsv($templateName, $fileName)
/**
* @param string $templateName
+ * @param null $languageCode uses current language is nothing is passed in
*/
- protected function DisplayLocalized($templateName)
+ protected function DisplayLocalized($templateName, $languageCode = null)
{
- $languageCode = $this->GetVar('CurrentLanguage');
+ if (empty($languageCode)) {
+ $languageCode = $this->GetVar('CurrentLanguage');
+ }
$localizedPath = ROOT_DIR . 'lang/' . $languageCode;
$defaultPath = ROOT_DIR . 'lang/en_us/';
diff --git a/Presenters/Admin/ManageEmailTemplatesPresenter.php b/Presenters/Admin/ManageEmailTemplatesPresenter.php
index b5a44afbd..5a09b8e28 100644
--- a/Presenters/Admin/ManageEmailTemplatesPresenter.php
+++ b/Presenters/Admin/ManageEmailTemplatesPresenter.php
@@ -117,7 +117,7 @@ public function UpdateEmailTemplate()
try {
Log::Debug('Updating email template. Template=%s', $templateName);
- $templatePath = Paths::EmailTemplates($this->page->GetUpdatedLanguage());
+ $templatePath = Paths::EmailTemplates($this->GetSelectedLanguage());
$saveResult = $this->filesystem->Save($templatePath, str_replace('.tpl', '-custom.tpl', $templateName), $this->page->GetTemplateContents());
$this->filesystem->FlushSmartyCache();
diff --git a/config/config.dist.php b/config/config.dist.php
index 4b13f843a..08f2c2102 100644
--- a/config/config.dist.php
+++ b/config/config.dist.php
@@ -18,7 +18,6 @@
$conf['settings']['default.page.size'] = '50'; // number of records per page
$conf['settings']['enable.email'] = 'true'; // global configuration to enable if any emails will be sent
$conf['settings']['default.language'] = 'en_us'; // find your language in the lang directory
-$conf['settings']['enforce.custom.mail.template'] = 'false'; // Fallback to default.language for missing custom templates, bu only when custom template is available for default.language
$conf['settings']['script.url'] = ''; // public URL to the Web directory of this instance. this is the URL that appears when you are logging in. leave http: or https: off to auto-detect
$conf['settings']['image.upload.directory'] = 'Web/uploads/images'; // full or relative path to where images will be stored
$conf['settings']['image.upload.url'] = 'uploads/images'; // full or relative path to show uploaded images from
diff --git a/lang/du_nl/AccountCreation-custom.tpl b/lang/du_nl/AccountCreation-custom.tpl
new file mode 100644
index 000000000..0e237d69c
--- /dev/null
+++ b/lang/du_nl/AccountCreation-custom.tpl
@@ -0,0 +1,11 @@
+
{$To},
+
+Een nieuwe gebruiker is geregistreerd met de volgende informatie:
+Email: {$EmailAddress}
+Naam: {$FullName}
+Telefoonnummer: {$Phone}
+Organisatie: {$Organization}
+Positie: {$Position}
+{if !empty($CreatedBy)}
+ Gemaakt door: {$CreatedBy}
+{/if}
diff --git a/lang/en_us/AccountCreation-custom.tpl b/lang/en_us/AccountCreation-custom.tpl
new file mode 100644
index 000000000..d814a8a22
--- /dev/null
+++ b/lang/en_us/AccountCreation-custom.tpl
@@ -0,0 +1,11 @@
+{$To},
+
+A new user has registered with the following information:
+Email: {$EmailAddress}
+Name: {$FullName}
+Phone: {$Phone}
+Organization: {$Organization}
+Position: {$Position}
+{if !empty($CreatedBy)}
+ Created by: {$CreatedBy}
+{/if}
\ No newline at end of file
diff --git a/lang/es/AccountCreation-custom.tpl b/lang/es/AccountCreation-custom.tpl
new file mode 100644
index 000000000..19c5317f6
--- /dev/null
+++ b/lang/es/AccountCreation-custom.tpl
@@ -0,0 +1,11 @@
+{$To},
+
+Se ha registrado un nuevo usuario con la siguiente información:
+Correo electrónico: {$EmailAddress}
+Nombre: {$FullName}
+Teléfono: {$Phone}
+Organización: {$Organization}
+Cargo: {$Position}
+{if !empty($CreatedBy)}
+ Creado por: {$CreatedBy}
+{/if}
\ No newline at end of file
diff --git a/lang/fr_fr/AccountCreation-custom.tpl b/lang/fr_fr/AccountCreation-custom.tpl
new file mode 100644
index 000000000..3920effd2
--- /dev/null
+++ b/lang/fr_fr/AccountCreation-custom.tpl
@@ -0,0 +1,11 @@
+{$To},
+
+Un nouvel utilisateur s'est enregistré avec les informations suivantes:
+Email: {$EmailAddress}
+Nom: {$FullName}
+Téléphone: {$Phone}
+Organisation: {$Organization}
+Position: {$Position}
+{if !empty($CreatedBy)}
+ Créé par: {$CreatedBy}
+{/if}
\ No newline at end of file
diff --git a/lang/pt_br/AccountCreation-custom.tpl b/lang/pt_br/AccountCreation-custom.tpl
new file mode 100644
index 000000000..20fb80b9b
--- /dev/null
+++ b/lang/pt_br/AccountCreation-custom.tpl
@@ -0,0 +1,18 @@
+
+ {$To},
+
+
+
+
+ Um novo usuário se registrou com as seguintes informações:
+
+ E-mail: {$EmailAddress}
+
+ Nome: {$FullName}
+
+ Organização: {$Organization}
+ {if !empty($CreatedBy)}
+
+ Criada por: {$CreatedBy}
+ {/if}
+
diff --git a/lib/Common/SmartyPage.php b/lib/Common/SmartyPage.php
index b8244f77e..54703ed69 100644
--- a/lib/Common/SmartyPage.php
+++ b/lib/Common/SmartyPage.php
@@ -76,41 +76,46 @@ public function AddTemplateDirectory($templateDirectory)
}
/**
- * Fetches template in a specific language. A custom template file might override the default template.
- * In case the template is not available in the target language it will fall back to en_us.
* @param string $templateName
- * @param string $languageCode Will be set to template var CurrentLanguage if null
- * @param bool $enforceCustomTemplate if true uses custom language from default language
- * if custom template of the target language is not available.
+ * @param null $languageCode uses current language is nothing is passed in
+ */
+ public function DisplayLocalized($templateName, $languageCode = null)
+ {
+ if (empty($languageCode)) {
+ $languageCode = $this->getTemplateVars('CurrentLanguage');
+ }
+ $localizedPath = ROOT_DIR . 'lang/' . $languageCode;
+ $defaultPath = ROOT_DIR . 'lang/en_us/' . $templateName;
+
+ if (file_exists($localizedPath . '/' . $templateName)) {
+ $this->AddTemplateDirectory($localizedPath);
+ } else {
+ $this->AddTemplateDirectory($defaultPath);
+ }
+
+ $this->Display($templateName);
+ }
+
+ /**
+ * @param string $templateName
+ * @param null $languageCode uses current language is nothing is passed in
* @return string
*/
- public function FetchLocalized($templateName, bool $enforceCustomTemplate, string $languageCode = null)
+ public function FetchLocalized($templateName, $languageCode = null)
{
- if ($languageCode == null) {
+ if (empty($languageCode)) {
$languageCode = $this->getTemplateVars('CurrentLanguage');
}
- $langPath = ROOT_DIR . 'lang/';
- $localizedPath = $langPath . $languageCode;
+ $localizedPath = ROOT_DIR . 'lang/' . $languageCode;
+ $defaultPath = ROOT_DIR . 'lang/en_us/';
$customTemplateName = str_replace('.tpl', '-custom.tpl', $templateName);
- $hasCustomTemplate = file_exists($localizedPath . '/' . $customTemplateName);
-
- if ($enforceCustomTemplate && !$hasCustomTemplate) {
- $defaultLanguageCode = Configuration::Instance()->GetKey(ConfigKeys::LANGUAGE);
- $defaultLocalizedPath = $langPath . $defaultLanguageCode;
- $hasCustomDefaultTemplate = file_exists($defaultLocalizedPath . '/' . $customTemplateName);
- if ($languageCode != $defaultLanguageCode && $hasCustomDefaultTemplate) {
- $hasCustomTemplate = true;
- $localizedPath = $defaultLocalizedPath;
- }
- }
- if (file_exists($localizedPath . '/' . $templateName) || $hasCustomTemplate) {
+ if (file_exists($localizedPath . '/' . $templateName) || file_exists($localizedPath . '/' . $customTemplateName)) {
$path = $localizedPath;
$this->AddTemplateDirectory($localizedPath);
} else {
- // Fallback path
- $path = ROOT_DIR . 'lang/en_us/';
- $this->AddTemplateDirectory($path);
+ $path = $defaultPath;
+ $this->AddTemplateDirectory($defaultPath);
}
if (file_exists($path . '/' . $customTemplateName)) {
diff --git a/lib/Config/ConfigKeys.php b/lib/Config/ConfigKeys.php
index 8f3c7800d..3d8e7902a 100644
--- a/lib/Config/ConfigKeys.php
+++ b/lib/Config/ConfigKeys.php
@@ -18,7 +18,6 @@ class ConfigKeys
public const HOME_URL = 'home.url';
public const INACTIVITY_TIMEOUT = 'inactivity.timeout';
public const LANGUAGE = 'default.language';
- public const ENFORCE_CUSTOM_MAIL_TEMPLATE = 'enforce.custom.mail.template';
public const LOGOUT_URL = 'logout.url';
public const NAME_FORMAT = 'name.format';
public const SCRIPT_URL = 'script.url';
diff --git a/lib/Email/EmailMessage.php b/lib/Email/EmailMessage.php
index f74193433..f0eaa2de5 100644
--- a/lib/Email/EmailMessage.php
+++ b/lib/Email/EmailMessage.php
@@ -5,7 +5,7 @@ abstract class EmailMessage implements IEmailMessage
/**
* @var SmartyPage
*/
- protected $email;
+ private $email;
/**
* @var string|null
*/
@@ -15,11 +15,8 @@ abstract class EmailMessage implements IEmailMessage
*/
private $attachmentFileName;
- protected bool $enforceCustomTemplate;
-
protected function __construct($languageCode = null)
{
- $this->enforceCustomTemplate = Configuration::Instance()->GetKey(ConfigKeys::ENFORCE_CUSTOM_MAIL_TEMPLATE, new BooleanConverter());
$this->email = new SmartyPage($resources);
$resources = Resources::GetInstance();
if (!empty($languageCode)) {
@@ -40,7 +37,7 @@ protected function Set($var, $value)
protected function FetchTemplate($templateName, $includeHeaders = true)
{
$header = $includeHeaders ? $this->email->fetch('Email/emailheader.tpl') : '';
- $body = $this->email->FetchLocalized($templateName, $this->enforceCustomTemplate);
+ $body = $this->email->FetchLocalized($templateName);
$footer = $includeHeaders ? $this->email->fetch('Email/emailfooter.tpl') : '';
return $header . $body . $footer;
diff --git a/lib/Email/Messages/ReportEmailMessage.php b/lib/Email/Messages/ReportEmailMessage.php
index 5599848a1..c0cd84ef3 100644
--- a/lib/Email/Messages/ReportEmailMessage.php
+++ b/lib/Email/Messages/ReportEmailMessage.php
@@ -32,7 +32,7 @@ public function __construct($report, $definition, $toAddress, $reportUser, $sele
$this->Set('Definition', $definition);
$this->Set('Report', $report);
$this->Set('ReportCsvColumnView', new ReportCsvColumnView($selectedColumns));
- $contents = $this->email->FetchLocalized('Reports/custom-csv.tpl', false);
+ $contents = $this->FetchTemplate('Reports/custom-csv.tpl', false);
$name = $report->ReportName();
if (!empty($name)) {
diff --git a/lib/Email/Messages/ReservationShareEmail.php b/lib/Email/Messages/ReservationShareEmail.php
index 5d6b0adb1..bba5460cd 100644
--- a/lib/Email/Messages/ReservationShareEmail.php
+++ b/lib/Email/Messages/ReservationShareEmail.php
@@ -7,7 +7,7 @@ class ReservationShareEmail extends ReservationEmailMessage
/**
* @var string
*/
- private $emailToShare;
+ private $email;
public function __construct(User $reservationOwner, $emailToShare, ReservationSeries $reservationSeries, IAttributeRepository $attributeRepository, IUserRepository $userRepository)
{
@@ -16,12 +16,12 @@ public function __construct(User $reservationOwner, $emailToShare, ReservationSe
$this->reservationOwner = $reservationOwner;
$this->reservationSeries = $reservationSeries;
$this->timezone = $reservationOwner->Timezone();
- $this->emailToShare = $emailToShare;
+ $this->email = $emailToShare;
}
public function To()
{
- return [new EmailAddress($this->emailToShare)];
+ return [new EmailAddress($this->email)];
}
public function Subject()
diff --git a/lib/Server/FormKeys.php b/lib/Server/FormKeys.php
index 1dc168259..631a3d9fb 100644
--- a/lib/Server/FormKeys.php
+++ b/lib/Server/FormKeys.php
@@ -89,7 +89,6 @@ private function __construct()
public const ENABLE_AUTO_RELEASE = 'ENABLE_AUTO_RELEASE';
public const EMAIL_CONTENTS = 'EMAIL_CONTENTS';
public const EMAIL_TEMPLATE_NAME = 'EMAIL_TEMPLATE_NAME';
- public const EMAIL_TEMPLATE_LANGUAGE = 'EMAIL_TEMPLATE_LANGUAGE';
public const FIRST_NAME = 'fname';
public const FAVICON_FILE = 'FAVICON_FILE';
diff --git a/tests/Presenters/Admin/ManageEmailTemplatesPresenterTest.php b/tests/Presenters/Admin/ManageEmailTemplatesPresenterTest.php
index ed428b983..f90f5e306 100644
--- a/tests/Presenters/Admin/ManageEmailTemplatesPresenterTest.php
+++ b/tests/Presenters/Admin/ManageEmailTemplatesPresenterTest.php
@@ -74,12 +74,11 @@ public function testUpdatesEmailTemplate()
$this->page->_UpdatedTemplateName = $templateName;
$this->page->_TemplateContents = $contents;
$this->page->_Language = 'en_us';
- $this->page->_UpdatedLanguage = 'cz';
$this->presenter->UpdateEmailTemplate();
$this->assertEquals($contents, $this->fileSystem->_AddedFileContents);
- $this->assertEquals(Paths::EmailTemplates('cz'), $this->fileSystem->_AddedFilePath);
+ $this->assertEquals(Paths::EmailTemplates('en_us'), $this->fileSystem->_AddedFilePath);
$this->assertEquals('template-custom.tpl', $this->fileSystem->_AddedFileName);
}
}
@@ -92,7 +91,6 @@ class FakeManageEmailTemplatesPage extends ManageEmailTemplatesPage
public $_BoundTemplateContents;
public $_TemplateContents;
public $_Language;
- public $_UpdatedLanguage;
public $_SaveResult = true;
public function BindTemplateNames($templates)
@@ -125,11 +123,6 @@ public function GetLanguage()
return $this->_Language;
}
- public function GetUpdatedLanguage(): string
- {
- return $this->_UpdatedLanguage;
- }
-
public function SetSaveResult($saveResult)
{
$this->_SaveResult = $saveResult;
diff --git a/tpl/Admin/Configuration/manage_email_templates.tpl b/tpl/Admin/Configuration/manage_email_templates.tpl
index 8a888869b..c7db93147 100644
--- a/tpl/Admin/Configuration/manage_email_templates.tpl
+++ b/tpl/Admin/Configuration/manage_email_templates.tpl
@@ -16,19 +16,19 @@
-