diff --git a/wcfsetup/install/files/lib/system/form/option/AbstractNumericFormOption.class.php b/wcfsetup/install/files/lib/system/form/option/AbstractNumericFormOption.class.php index 7afddb41f0c..b65352c0000 100644 --- a/wcfsetup/install/files/lib/system/form/option/AbstractNumericFormOption.class.php +++ b/wcfsetup/install/files/lib/system/form/option/AbstractNumericFormOption.class.php @@ -43,13 +43,17 @@ public function applyFilter(DatabaseObjectList $list, string $columnName, mixed public function renderFilterValue(string $value, array $configuration = []): string { $values = $this->parseFilterValue($value); + $suffix = $this->getSuffix($configuration); + if ($suffix !== '') { + $suffix = ' ' . $suffix; + } if ($values['from'] && $values['to']) { - return $values['from'] . ' ‐ ' . $values['to']; + return $values['from'] . ' ‐ ' . $values['to'] . $suffix; } else if ($values['from']) { - return '>= ' . $values['from']; + return '>= ' . $values['from'] . $suffix; } else if ($values['to']) { - return '<= ' . $values['to']; + return '<= ' . $values['to'] . $suffix; } return ''; @@ -74,4 +78,12 @@ protected function parseFilterValue(string $value): array 'to' => $to, ]; } + + /** + * @param array $configuration + */ + protected function getSuffix(array $configuration): string + { + return ''; + } } diff --git a/wcfsetup/install/files/lib/system/form/option/CurrencyFormOption.class.php b/wcfsetup/install/files/lib/system/form/option/CurrencyFormOption.class.php index 9537559cbb3..78b073f942c 100644 --- a/wcfsetup/install/files/lib/system/form/option/CurrencyFormOption.class.php +++ b/wcfsetup/install/files/lib/system/form/option/CurrencyFormOption.class.php @@ -9,6 +9,7 @@ use wcf\system\form\builder\field\CurrencyFormField; use wcf\system\form\option\formatter\CurrencyFormatter; use wcf\system\form\option\formatter\IFormOptionFormatter; +use wcf\util\StringUtil; /** * Implementation of a form field for currency values. @@ -82,4 +83,14 @@ public function getDatabaseTableColumn(string $name): AbstractDatabaseTableColum { return IntDatabaseTableColumn::create($name); } + + #[\Override] + protected function getSuffix(array $configuration): string + { + if (!empty($configuration['currency'])) { + return StringUtil::encodeHTML($configuration['currency']); + } + + return ''; + } } diff --git a/wcfsetup/install/files/lib/system/form/option/FloatFormOption.class.php b/wcfsetup/install/files/lib/system/form/option/FloatFormOption.class.php index cdb808738da..1183b7a8022 100644 --- a/wcfsetup/install/files/lib/system/form/option/FloatFormOption.class.php +++ b/wcfsetup/install/files/lib/system/form/option/FloatFormOption.class.php @@ -8,6 +8,7 @@ use wcf\system\form\builder\field\FloatFormField; use wcf\system\form\option\formatter\FloatFormatter; use wcf\system\form\option\formatter\IFormOptionFormatter; +use wcf\util\StringUtil; /** * Implementation of a form field for float values. @@ -42,7 +43,7 @@ public function getFormField(string $id, array $configuration = []): AbstractFor #[\Override] public function getConfigurationFormFields(): array { - return ['minFloatValue', 'maxFloatValue', 'required']; + return ['unit', 'minFloatValue', 'maxFloatValue', 'required']; } #[\Override] @@ -62,4 +63,14 @@ public function getDatabaseTableColumn(string $name): AbstractDatabaseTableColum { return FloatDatabaseTableColumn::create($name); } + + #[\Override] + protected function getSuffix(array $configuration): string + { + if (!empty($configuration['unit'])) { + return StringUtil::encodeHTML($configuration['unit']); + } + + return ''; + } } diff --git a/wcfsetup/install/files/lib/system/form/option/IntegerFormOption.class.php b/wcfsetup/install/files/lib/system/form/option/IntegerFormOption.class.php index 2b1b454e846..6036cac6d66 100644 --- a/wcfsetup/install/files/lib/system/form/option/IntegerFormOption.class.php +++ b/wcfsetup/install/files/lib/system/form/option/IntegerFormOption.class.php @@ -9,6 +9,7 @@ use wcf\system\form\builder\field\NumericRangeFormField; use wcf\system\form\option\formatter\IFormOptionFormatter; use wcf\system\form\option\formatter\IntegerFormatter; +use wcf\util\StringUtil; /** * Implementation of a form field for integer values. @@ -51,7 +52,7 @@ public function getFilterFormField(string $id, array $configuration = []): Abstr #[\Override] public function getConfigurationFormFields(): array { - return ['minIntegerValue', 'maxIntegerValue', 'required']; + return ['unit', 'minIntegerValue', 'maxIntegerValue', 'required']; } #[\Override] @@ -71,4 +72,14 @@ public function getDatabaseTableColumn(string $name): AbstractDatabaseTableColum { return IntDatabaseTableColumn::create($name); } + + #[\Override] + protected function getSuffix(array $configuration): string + { + if (!empty($configuration['unit'])) { + return StringUtil::encodeHTML($configuration['unit']); + } + + return ''; + } } diff --git a/wcfsetup/install/files/lib/system/form/option/SharedConfigurationFormFields.class.php b/wcfsetup/install/files/lib/system/form/option/SharedConfigurationFormFields.class.php index ad9f0711dcf..e0fcdd345a9 100644 --- a/wcfsetup/install/files/lib/system/form/option/SharedConfigurationFormFields.class.php +++ b/wcfsetup/install/files/lib/system/form/option/SharedConfigurationFormFields.class.php @@ -61,6 +61,9 @@ private function getDefaultFormFields(): array 'required' => BooleanFormField::create('required') ->label('wcf.form.option.shared.required') ->value(false), + 'unit' => TextFormField::create('unit') + ->label('wcf.form.option.shared.unit') + ->addFieldClass('short') ]; } diff --git a/wcfsetup/install/files/lib/system/form/option/formatter/FloatFormatter.class.php b/wcfsetup/install/files/lib/system/form/option/formatter/FloatFormatter.class.php index a5b0d81af1e..de2a17cf3a6 100644 --- a/wcfsetup/install/files/lib/system/form/option/formatter/FloatFormatter.class.php +++ b/wcfsetup/install/files/lib/system/form/option/formatter/FloatFormatter.class.php @@ -17,6 +17,11 @@ final class FloatFormatter implements IFormOptionFormatter #[\Override] public function format(string $value, int $languageID, array $configuration): string { - return StringUtil::formatNumeric(\floatval($value)); + $suffix = ''; + if (!empty($configuration['unit'])) { + $suffix = ' ' . StringUtil::encodeHTML($configuration['unit']); + } + + return StringUtil::formatNumeric(\floatval($value)) . $suffix; } } diff --git a/wcfsetup/install/files/lib/system/form/option/formatter/IntegerFormatter.class.php b/wcfsetup/install/files/lib/system/form/option/formatter/IntegerFormatter.class.php index 9a6a9d54741..fb31c938c4b 100644 --- a/wcfsetup/install/files/lib/system/form/option/formatter/IntegerFormatter.class.php +++ b/wcfsetup/install/files/lib/system/form/option/formatter/IntegerFormatter.class.php @@ -17,6 +17,11 @@ final class IntegerFormatter implements IFormOptionFormatter #[\Override] public function format(string $value, int $languageID, array $configuration): string { - return StringUtil::formatNumeric(\intval($value)); + $suffix = ''; + if (!empty($configuration['unit'])) { + $suffix = ' ' . StringUtil::encodeHTML($configuration['unit']); + } + + return StringUtil::formatNumeric(\intval($value)) . $suffix; } } diff --git a/wcfsetup/install/lang/de.xml b/wcfsetup/install/lang/de.xml index b3f63e057a2..0d56d83eca1 100644 --- a/wcfsetup/install/lang/de.xml +++ b/wcfsetup/install/lang/de.xml @@ -4176,6 +4176,7 @@ Dateianhänge: + diff --git a/wcfsetup/install/lang/en.xml b/wcfsetup/install/lang/en.xml index 1d8ce721caa..f629fb46982 100644 --- a/wcfsetup/install/lang/en.xml +++ b/wcfsetup/install/lang/en.xml @@ -4122,6 +4122,7 @@ Attachments: +