- * - {lang}wcf.global.form.required{/lang} -
+{unsafe:$form->getHtml()} {include file='footer'} diff --git a/com.woltlab.wcf/templates/shared_selectOptionsFormField.tpl b/com.woltlab.wcf/templates/shared_selectOptionsFormField.tpl new file mode 100644 index 00000000000..bacfd991a7b --- /dev/null +++ b/com.woltlab.wcf/templates/shared_selectOptionsFormField.tpl @@ -0,0 +1,16 @@ +getPrefixedId()}" {* + *}name="{$field->getPrefixedId()}" {* + *}value="{$field->getValue()}"{* +*}> + + diff --git a/ts/WoltLabSuite/Core/Component/Ckeditor/Configuration.ts b/ts/WoltLabSuite/Core/Component/Ckeditor/Configuration.ts index 76507159fce..be6615f857c 100644 --- a/ts/WoltLabSuite/Core/Component/Ckeditor/Configuration.ts +++ b/ts/WoltLabSuite/Core/Component/Ckeditor/Configuration.ts @@ -215,7 +215,7 @@ class ConfigurationBuilder { #setupMention(): void { if (!this.#features.mention) { - this.#removePlugins.push("Mention", "WoltlabMention"); + this.#removePlugins.push("WoltlabMention"); } } diff --git a/ts/WoltLabSuite/Core/Form/Builder/Field/SelectOptions.ts b/ts/WoltLabSuite/Core/Form/Builder/Field/SelectOptions.ts new file mode 100644 index 00000000000..b1ebb8eea60 --- /dev/null +++ b/ts/WoltLabSuite/Core/Form/Builder/Field/SelectOptions.ts @@ -0,0 +1,174 @@ +import { identify } from "WoltLabSuite/Core/Dom/Util"; +import { getPhrase } from "WoltLabSuite/Core/Language"; +import { getValues, init as initI18n } from "WoltLabSuite/Core/Language/Input"; +import Sortable from "sortablejs"; + +type Data = { + key: string; + value: Record' . StringUtil::encodeHTML($value) . ''; + } +} diff --git a/wcfsetup/install/files/lib/system/form/option/formatter/UrlFormatter.class.php b/wcfsetup/install/files/lib/system/form/option/formatter/UrlFormatter.class.php new file mode 100644 index 00000000000..11c7c032da5 --- /dev/null +++ b/wcfsetup/install/files/lib/system/form/option/formatter/UrlFormatter.class.php @@ -0,0 +1,22 @@ + + * @since 6.2 + */ +final class UrlFormatter implements IFormOptionFormatter +{ + #[\Override] + public function format(string $value, int $languageID, array $configuration): string + { + return StringUtil::getAnchorTag($value, $value, true, true); + } +} diff --git a/wcfsetup/install/files/lib/system/form/option/formatter/WysiwygFormatter.class.php b/wcfsetup/install/files/lib/system/form/option/formatter/WysiwygFormatter.class.php new file mode 100644 index 00000000000..0803b2db328 --- /dev/null +++ b/wcfsetup/install/files/lib/system/form/option/formatter/WysiwygFormatter.class.php @@ -0,0 +1,25 @@ + + * @since 6.2 + */ +final class WysiwygFormatter implements IFormOptionFormatter +{ + #[\Override] + public function format(string $value, int $languageID, array $configuration): string + { + $processor = new HtmlOutputProcessor(); + $processor->process($value, 'com.woltlab.wcf.genericFormOption', 0, true, $languageID); + + return $processor->getHtml(); + } +} diff --git a/wcfsetup/install/files/lib/system/form/option/formatter/WysiwygPlainTextFormatter.class.php b/wcfsetup/install/files/lib/system/form/option/formatter/WysiwygPlainTextFormatter.class.php new file mode 100644 index 00000000000..11945644321 --- /dev/null +++ b/wcfsetup/install/files/lib/system/form/option/formatter/WysiwygPlainTextFormatter.class.php @@ -0,0 +1,26 @@ + + * @since 6.2 + */ +final class WysiwygPlainTextFormatter implements IFormOptionFormatter +{ + #[\Override] + public function format(string $value, int $languageID, array $configuration): string + { + $processor = new HtmlOutputProcessor(); + $processor->setOutputType('text/plain'); + $processor->process($value, 'com.woltlab.wcf.genericFormOption', 0, true, $languageID); + + return $processor->getHtml(); + } +} diff --git a/wcfsetup/install/files/lib/system/listView/filter/FormOptionFilter.class.php b/wcfsetup/install/files/lib/system/listView/filter/FormOptionFilter.class.php new file mode 100644 index 00000000000..0bf1c433371 --- /dev/null +++ b/wcfsetup/install/files/lib/system/listView/filter/FormOptionFilter.class.php @@ -0,0 +1,55 @@ + + * @since 6.2 + */ +final class FormOptionFilter extends AbstractFilter +{ + /** + * @param array
E-Mail-Adresse: {$emailAddress}
{foreach from=$options item=option} -{@$option['title']}: {@$option['htmlValue']}
+{unsafe:$option['title']}: {unsafe:$option['htmlValue']}
{/foreach} {if !$attachments|empty}Email: {$emailAddress}
{foreach from=$options item=option} -{@$option['title']}: {@$option['htmlValue']}
+{unsafe:$option['title']}: {unsafe:$option['htmlValue']}
{/foreach} {if !$attachments|empty}