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 @@

{if $action == 'add'}{lang}wcf.acp.article.add{/lang}{else}{lang}wcf.acp.article.edit{/lang}{/if}

- + 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'}
-

{lang}wcf.acp.package.{@$queue->action}.title{/lang}: {$archive->getLocalizedPackageInfo('packageName')}

+

{lang}wcf.acp.package.{$queue->action}.title{/lang}: {$archive->getLocalizedPackageInfo('packageName')}

{$archive->getLocalizedPackageInfo('packageDescription')}

@@ -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% 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 @@
-

{lang}{@$pageTitle}{/lang}

+

{lang}{$pageTitle}{/lang}

-{@$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; }