diff --git a/com.woltlab.wcf/templates/accountManagement.tpl b/com.woltlab.wcf/templates/accountManagement.tpl
index a0ebdc1fdea..8d3f5045dc1 100644
--- a/com.woltlab.wcf/templates/accountManagement.tpl
+++ b/com.woltlab.wcf/templates/accountManagement.tpl
@@ -107,8 +107,8 @@
new PasswordStrength(elById('newPassword'), {
relatedInputs: relatedInputs,
staticDictionary: [
- '{$__wcf->user->username|encodeJS}',
- '{$__wcf->user->email|encodeJS}',
+ '{unsafe:$__wcf->user->username|encodeJS}',
+ '{unsafe:$__wcf->user->email|encodeJS}',
]
});
})
diff --git a/com.woltlab.wcf/templates/headIncludeJavaScript.tpl b/com.woltlab.wcf/templates/headIncludeJavaScript.tpl
index 09a180419e8..d4e3ada4b55 100644
--- a/com.woltlab.wcf/templates/headIncludeJavaScript.tpl
+++ b/com.woltlab.wcf/templates/headIncludeJavaScript.tpl
@@ -102,9 +102,9 @@ window.addEventListener('pageshow', function(event) {
],
{/if}
styleChanger: {if $__wcf->getStyleHandler()->showStyleChanger()}true{else}false{/if},
- {if $__wcf->user->userID && !$__wcf->getMessageQuoteManager()->getRemoveQuoteIDs()|empty}removeQuotes: [{implode from=$__wcf->getMessageQuoteManager()->getRemoveQuoteIDs() item=uuid}'{$uuid|encodeJS}'{/implode}],{/if}
+ {if $__wcf->user->userID && !$__wcf->getMessageQuoteManager()->getRemoveQuoteIDs()|empty}removeQuotes: [{implode from=$__wcf->getMessageQuoteManager()->getRemoveQuoteIDs() item=uuid}'{unsafe:$uuid|encodeJS}'{/implode}],{/if}
{if $__wcf->user->userID && !$__wcf->getMessageQuoteManager()->getUsedQuotes()|empty}usedQuotes: new Map([
- {foreach from=$__wcf->getMessageQuoteManager()->getUsedQuotes() key=editorID item=uuids}['{$editorID|encodeJS}', [{implode from=$uuids item=uuid}'{$uuid|encodeJS}'{/implode}]]{/foreach}
+ {foreach from=$__wcf->getMessageQuoteManager()->getUsedQuotes() key=editorID item=uuids}['{unsafe:$editorID|encodeJS}', [{implode from=$uuids item=uuid}'{unsafe:$uuid|encodeJS}'{/implode}]]{/foreach}
]),
{/if}
});
diff --git a/com.woltlab.wcf/templates/shared_uploadFieldComponent.tpl b/com.woltlab.wcf/templates/shared_uploadFieldComponent.tpl
index 5880348d168..40f48636436 100644
--- a/com.woltlab.wcf/templates/shared_uploadFieldComponent.tpl
+++ b/com.woltlab.wcf/templates/shared_uploadFieldComponent.tpl
@@ -52,7 +52,7 @@
imagePreview: {if !$uploadField->supportMultipleFiles() && $uploadField->isImageOnly()}true{else}false{/if},
{if $uploadField->getAcceptableFiles()}
acceptableFiles: [
- {implode from=$uploadField->getAcceptableFiles() item=accept}'{$accept|encodeJS}'{/implode}
+ {implode from=$uploadField->getAcceptableFiles() item=accept}'{unsafe:$accept|encodeJS}'{/implode}
],
{/if}
});
diff --git a/com.woltlab.wcf/templates/shared_wysiwyg.tpl b/com.woltlab.wcf/templates/shared_wysiwyg.tpl
index bba561a5ed3..4198c2062f7 100644
--- a/com.woltlab.wcf/templates/shared_wysiwyg.tpl
+++ b/com.woltlab.wcf/templates/shared_wysiwyg.tpl
@@ -43,9 +43,9 @@
{include file='mediaJavaScript'}
- const element = document.getElementById('{$wysiwygSelector|encodeJS}');
+ const element = document.getElementById('{unsafe:$wysiwygSelector|encodeJS}');
if (element === null) {
- throw new Error("Unable to find the source element '{$wysiwygSelector|encodeJS}' for the editor.")
+ throw new Error("Unable to find the source element '{unsafe:$wysiwygSelector|encodeJS}' for the editor.")
}
let enableAttachments = element.dataset.disableAttachments !== "true";
diff --git a/com.woltlab.wcf/templates/shared_wysiwygCmsToolbar.tpl b/com.woltlab.wcf/templates/shared_wysiwygCmsToolbar.tpl
index 55911648d80..563db7f7c31 100644
--- a/com.woltlab.wcf/templates/shared_wysiwygCmsToolbar.tpl
+++ b/com.woltlab.wcf/templates/shared_wysiwygCmsToolbar.tpl
@@ -21,7 +21,7 @@
{jsphrase name='wcf.page.search.name'}
{jsphrase name='wcf.page.search.results'}
- const element = document.getElementById('{$wysiwygSelector|encodeJS}');
+ const element = document.getElementById('{unsafe:$wysiwygSelector|encodeJS}');
setupArticle(element);
setupPage(element);
});
diff --git a/com.woltlab.wcf/templates/userException.tpl b/com.woltlab.wcf/templates/userException.tpl
index 0ee3562275b..ff1ed1df89a 100644
--- a/com.woltlab.wcf/templates/userException.tpl
+++ b/com.woltlab.wcf/templates/userException.tpl
@@ -30,7 +30,7 @@
{$stacktrace}
-->
{/if}
diff --git a/ts/WoltLabSuite/Core/Component/Option/Enable.ts b/ts/WoltLabSuite/Core/Component/Option/Enable.ts
index 6d5572f438b..3cc1596ac12 100644
--- a/ts/WoltLabSuite/Core/Component/Option/Enable.ts
+++ b/ts/WoltLabSuite/Core/Component/Option/Enable.ts
@@ -93,13 +93,10 @@ function enableOption(element: HTMLElement, enable: boolean) {
const parentOptionTypeBoolean = element.closest(".optionTypeBoolean");
if (parentOptionTypeBoolean) {
- // escape dots so that they are not recognized as class selectors
- const elementId = element.id.replace(/\./g, "\\.");
-
- const noElement = document.getElementById(elementId + "_no") as HTMLInputElement;
+ const noElement = document.getElementById(element.id + "_no") as HTMLInputElement;
noElement.disabled = !enable;
- const neverElement = document.getElementById(elementId + "_never") as HTMLInputElement;
+ const neverElement = document.getElementById(element.id + "_never") as HTMLInputElement;
if (neverElement) {
neverElement.disabled = !enable;
}
diff --git a/wcfsetup/install/files/acp/templates/__devtoolsProjectInstructionsFormField.tpl b/wcfsetup/install/files/acp/templates/__devtoolsProjectInstructionsFormField.tpl
index 553815e5427..d8302879fc0 100644
--- a/wcfsetup/install/files/acp/templates/__devtoolsProjectInstructionsFormField.tpl
+++ b/wcfsetup/install/files/acp/templates/__devtoolsProjectInstructionsFormField.tpl
@@ -250,7 +250,7 @@
],
pip: '{$instruction[pip]}',
runStandalone: {$instruction[runStandalone]|intval},
- value: '{$instruction[value]|encodeJS}'
+ value: '{unsafe:$instruction[value]|encodeJS}'
}
{/implode}
{/if}
diff --git a/wcfsetup/install/files/acp/templates/articleAdd.tpl b/wcfsetup/install/files/acp/templates/articleAdd.tpl
index 5ac705bb0db..f9587c92e2f 100644
--- a/wcfsetup/install/files/acp/templates/articleAdd.tpl
+++ b/wcfsetup/install/files/acp/templates/articleAdd.tpl
@@ -4,7 +4,7 @@
-
+
diff --git a/wcfsetup/install/files/acp/templates/devtoolsMissingLanguageItemList.tpl b/wcfsetup/install/files/acp/templates/devtoolsMissingLanguageItemList.tpl
index d369cd26fec..a6dbb795d65 100644
--- a/wcfsetup/install/files/acp/templates/devtoolsMissingLanguageItemList.tpl
+++ b/wcfsetup/install/files/acp/templates/devtoolsMissingLanguageItemList.tpl
@@ -57,7 +57,7 @@
{$logEntry->getObjectID()} |
{if $logEntry->getLanguage()}{$logEntry->getLanguage()}{else}{$logEntry->languageID}{/if} |
{$logEntry->languageItem} |
- {@$logEntry->lastTime|time} |
+ {time time=$logEntry->lastTime} |
{/foreach}
diff --git a/wcfsetup/install/files/acp/templates/optionFieldList.tpl b/wcfsetup/install/files/acp/templates/optionFieldList.tpl
index 5dd393fb265..6a6807b1dd2 100644
--- a/wcfsetup/install/files/acp/templates/optionFieldList.tpl
+++ b/wcfsetup/install/files/acp/templates/optionFieldList.tpl
@@ -27,7 +27,7 @@
{/if}
- {@$optionData[html]}
+ {unsafe:$optionData[html]}
{if $error}
{if $error == 'empty'}
diff --git a/wcfsetup/install/files/acp/templates/package.tpl b/wcfsetup/install/files/acp/templates/package.tpl
index 40402e7a1c8..e13391ba28a 100644
--- a/wcfsetup/install/files/acp/templates/package.tpl
+++ b/wcfsetup/install/files/acp/templates/package.tpl
@@ -56,15 +56,15 @@
- {lang}wcf.acp.package.packageDate{/lang}
- - {@$package->packageDate|date}
+ - {time time=$package->packageDate type='plainDate'}
- {lang}wcf.acp.package.installDate{/lang}
- - {@$package->installDate|time}
+ - {time time=$package->installDate}
- {lang}wcf.acp.package.updateDate{/lang}
- - {@$package->updateDate|time}
+ - {time time=$package->updateDate}
{if $package->packageURL != ''}
diff --git a/wcfsetup/install/files/acp/templates/packageEnableUpgradeOverride.tpl b/wcfsetup/install/files/acp/templates/packageEnableUpgradeOverride.tpl
index d131f17ee8e..87e46f5e591 100644
--- a/wcfsetup/install/files/acp/templates/packageEnableUpgradeOverride.tpl
+++ b/wcfsetup/install/files/acp/templates/packageEnableUpgradeOverride.tpl
@@ -15,6 +15,6 @@
-{@$form->getHtml()}
+{unsafe:$form->getHtml()}
{include file='footer'}
diff --git a/wcfsetup/install/files/acp/templates/packageEnableUpgradeOverrideIssues.tpl b/wcfsetup/install/files/acp/templates/packageEnableUpgradeOverrideIssues.tpl
index 11a7bfa8628..5eee57794df 100644
--- a/wcfsetup/install/files/acp/templates/packageEnableUpgradeOverrideIssues.tpl
+++ b/wcfsetup/install/files/acp/templates/packageEnableUpgradeOverrideIssues.tpl
@@ -2,8 +2,8 @@
{foreach from=$issues item='issue'}
-
- {@$issue['title']}
- {@$issue['description']}
+ {unsafe:$issue['title']}
+ {unsafe:$issue['description']}
{/foreach}
diff --git a/wcfsetup/install/files/acp/templates/packageInstallationConfirm.tpl b/wcfsetup/install/files/acp/templates/packageInstallationConfirm.tpl
index f5d28f4b9e9..3f3b2beb3b6 100644
--- a/wcfsetup/install/files/acp/templates/packageInstallationConfirm.tpl
+++ b/wcfsetup/install/files/acp/templates/packageInstallationConfirm.tpl
@@ -1,4 +1,4 @@
-{capture assign='pageTitle'}{lang}wcf.acp.package.{@$queue->action}.title{/lang}: {$archive->getLocalizedPackageInfo('packageName')}{/capture}
+{capture assign='pageTitle'}{lang}wcf.acp.package.{$queue->action}.title{/lang}: {$archive->getLocalizedPackageInfo('packageName')}{/capture}
{include file='header'}
@@ -46,7 +46,7 @@
- {lang}wcf.acp.package.packageDate{/lang}
- - {@$archive->getPackageInfo('date')|date}
+ - {time time=$archive->getPackageInfo('date') type='plainDate'}
{if $archive->getPackageInfo('packageURL') != ''}
@@ -82,7 +82,7 @@
{foreach from=$packageValidationArchives item=packageValidationArchive}
{assign var=exceptionMessage value=$packageValidationArchive->getExceptionMessage()}
- | getDepth()} style="padding-left: {@$packageValidationArchive->getDepth() * 14}px"{/if}>{$packageValidationArchive->getArchive()->getLocalizedPackageInfo('packageName')} |
+ getDepth()} style="padding-left: {$packageValidationArchive->getDepth() * 14}px"{/if}>{$packageValidationArchive->getArchive()->getLocalizedPackageInfo('packageName')} |
{$packageValidationArchive->getArchive()->getPackageInfo('name')} |
{if $exceptionMessage}
@@ -95,7 +95,7 @@
{if $exceptionMessage}
|
- | getDepth()} style="padding-left: {@$packageValidationArchive->getDepth() * 14}px"{/if}>{@$exceptionMessage} |
+ getDepth()} style="padding-left: {$packageValidationArchive->getDepth() * 14}px"{/if}>{unsafe:$exceptionMessage} |
{/if}
{/foreach}
diff --git a/wcfsetup/install/files/acp/templates/packageInstallationSetup.tpl b/wcfsetup/install/files/acp/templates/packageInstallationSetup.tpl
index 78433d5cf7c..783d96ffed0 100644
--- a/wcfsetup/install/files/acp/templates/packageInstallationSetup.tpl
+++ b/wcfsetup/install/files/acp/templates/packageInstallationSetup.tpl
@@ -10,7 +10,7 @@
$(function() {
WCF.Language.add('wcf.acp.package.install.title', '{jslang}wcf.acp.package.install.title{/jslang}');
- var $installation = new WCF.ACP.Package.Installation({@$queueID});
+ var $installation = new WCF.ACP.Package.Installation({$queueID});
$installation.prepareInstallation();
});
diff --git a/wcfsetup/install/files/acp/templates/packageInstallationStepPrepare.tpl b/wcfsetup/install/files/acp/templates/packageInstallationStepPrepare.tpl
index 41851bd8fbe..31202ad7f3f 100644
--- a/wcfsetup/install/files/acp/templates/packageInstallationStepPrepare.tpl
+++ b/wcfsetup/install/files/acp/templates/packageInstallationStepPrepare.tpl
@@ -5,8 +5,8 @@
-
{lang}wcf.acp.package.{@$installationType}.title{/lang}
-
{lang}wcf.acp.package.{@$installationType}.step.prepare{/lang}
+
{lang}wcf.acp.package.{$installationType}.title{/lang}
+
{lang}wcf.acp.package.{$installationType}.step.prepare{/lang}
0%
diff --git a/wcfsetup/install/files/acp/templates/packageSearchResultListItems.tpl b/wcfsetup/install/files/acp/templates/packageSearchResultListItems.tpl
index 4dad6a03c7a..9fea6cbdb03 100644
--- a/wcfsetup/install/files/acp/templates/packageSearchResultListItems.tpl
+++ b/wcfsetup/install/files/acp/templates/packageSearchResultListItems.tpl
@@ -8,11 +8,11 @@
{$package->packageDescription}
{$package->package}
{if $package->pluginStoreFileID}
- {lang}wcf.acp.package.pluginStore.file{/lang}
+ {lang}wcf.acp.package.pluginStore.file{/lang}
{/if}
{if $package->authorURL}{$package->author|truncate:30}{else}{$package->author|truncate:30}{/if} |
{if $package->getAccessibleVersion()->licenseURL}{$package->getAccessibleVersion()->license|truncate:30}{else}{$package->getAccessibleVersion()->license|truncate:30}{/if} |
- {@$package->getAccessibleVersion()->packageDate|time} |
+ {time time=$package->getAccessibleVersion()->packageDate} |
{/foreach}
diff --git a/wcfsetup/install/files/acp/templates/packageStartInstall.tpl b/wcfsetup/install/files/acp/templates/packageStartInstall.tpl
index 1f9bba98029..49c2c187f29 100644
--- a/wcfsetup/install/files/acp/templates/packageStartInstall.tpl
+++ b/wcfsetup/install/files/acp/templates/packageStartInstall.tpl
@@ -28,7 +28,7 @@
{/if}
diff --git a/wcfsetup/install/files/acp/templates/packageUpdateServerAdd.tpl b/wcfsetup/install/files/acp/templates/packageUpdateServerAdd.tpl
index 0c20bc9bcd3..79a322a3d84 100644
--- a/wcfsetup/install/files/acp/templates/packageUpdateServerAdd.tpl
+++ b/wcfsetup/install/files/acp/templates/packageUpdateServerAdd.tpl
@@ -36,7 +36,7 @@
{elseif $errorType[duplicate]|isset}
{lang}wcf.acp.updateServer.serverURL.error.duplicate{/lang}
{else}
- {lang}wcf.acp.updateServer.serverURL.error.{@$errorType}{/lang}
+ {lang}wcf.acp.updateServer.serverURL.error.{$errorType}{/lang}
{/if}
{/if}
diff --git a/wcfsetup/install/files/acp/templates/permissionDenied.tpl b/wcfsetup/install/files/acp/templates/permissionDenied.tpl
index a546b0da720..0b5b17b1e2e 100644
--- a/wcfsetup/install/files/acp/templates/permissionDenied.tpl
+++ b/wcfsetup/install/files/acp/templates/permissionDenied.tpl
@@ -4,7 +4,7 @@
{if ENABLE_DEBUG_MODE}
diff --git a/wcfsetup/install/files/acp/templates/reauthentication.tpl b/wcfsetup/install/files/acp/templates/reauthentication.tpl
index 4a682a73b09..210a9ce9b32 100644
--- a/wcfsetup/install/files/acp/templates/reauthentication.tpl
+++ b/wcfsetup/install/files/acp/templates/reauthentication.tpl
@@ -6,6 +6,6 @@
-{@$form->getHtml()}
+{unsafe:$form->getHtml()}
{include file='footer'}
diff --git a/wcfsetup/install/files/acp/templates/userAdd.tpl b/wcfsetup/install/files/acp/templates/userAdd.tpl
index 3110d965224..a595adc9a1b 100644
--- a/wcfsetup/install/files/acp/templates/userAdd.tpl
+++ b/wcfsetup/install/files/acp/templates/userAdd.tpl
@@ -261,11 +261,11 @@
new PasswordStrength(elById('password'), {
relatedInputs: relatedInputs,
staticDictionary: [
- '{$__wcf->user->username|encodeJS}',
- '{$__wcf->user->email|encodeJS}',
+ '{unsafe:$__wcf->user->username|encodeJS}',
+ '{unsafe:$__wcf->user->email|encodeJS}',
{if $user|isset}
- '{$user->username|encodeJS}',
- '{$user->email|encodeJS}',
+ '{unsafe:$user->username|encodeJS}',
+ '{unsafe:$user->email|encodeJS}',
{/if}
]
});
diff --git a/wcfsetup/install/files/acp/templates/userException.tpl b/wcfsetup/install/files/acp/templates/userException.tpl
index 80f9e7c024c..6f5b4f1d10d 100644
--- a/wcfsetup/install/files/acp/templates/userException.tpl
+++ b/wcfsetup/install/files/acp/templates/userException.tpl
@@ -28,7 +28,7 @@
{$stacktrace}
-->
{/if}
diff --git a/wcfsetup/install/files/acp/templates/userGroupAdd.tpl b/wcfsetup/install/files/acp/templates/userGroupAdd.tpl
index ef2b0ccd82b..34408f14cc6 100644
--- a/wcfsetup/install/files/acp/templates/userGroupAdd.tpl
+++ b/wcfsetup/install/files/acp/templates/userGroupAdd.tpl
@@ -237,7 +237,7 @@
input.disabled = true;
});
- var permissions = [{implode from=$ownerGroupPermissions item=$_ownerPermission}'{$_ownerPermission|encodeJS}'{/implode}];
+ var permissions = [{implode from=$ownerGroupPermissions item=$_ownerPermission}'{unsafe:$_ownerPermission|encodeJS}'{/implode}];
permissions.forEach(function(permission) {
elBySelAll('input[name="values[' + permission + ']"]', undefined, function (input) {
if (input.value === '1') {
diff --git a/wcfsetup/install/files/js/WoltLabSuite/Core/Component/Option/Enable.js b/wcfsetup/install/files/js/WoltLabSuite/Core/Component/Option/Enable.js
index 275c329c76e..a3926cb1287 100644
--- a/wcfsetup/install/files/js/WoltLabSuite/Core/Component/Option/Enable.js
+++ b/wcfsetup/install/files/js/WoltLabSuite/Core/Component/Option/Enable.js
@@ -83,11 +83,9 @@ define(["require", "exports", "WoltLabSuite/Core/Helper/Selector"], function (re
}
const parentOptionTypeBoolean = element.closest(".optionTypeBoolean");
if (parentOptionTypeBoolean) {
- // escape dots so that they are not recognized as class selectors
- const elementId = element.id.replace(/\./g, "\\.");
- const noElement = document.getElementById(elementId + "_no");
+ const noElement = document.getElementById(element.id + "_no");
noElement.disabled = !enable;
- const neverElement = document.getElementById(elementId + "_never");
+ const neverElement = document.getElementById(element.id + "_never");
if (neverElement) {
neverElement.disabled = !enable;
}