From 356840c8deb340bd166c5b893255bde00f8e8d4d Mon Sep 17 00:00:00 2001 From: Matthias Schmidt Date: Sun, 31 Dec 2017 14:03:41 +0100 Subject: [PATCH] Add boolean form field See #2509 --- .../acp/templates/__booleanFormField.tpl | 19 +++++++ .../builder/field/BooleanFormField.class.php | 57 +++++++++++++++++++ wcfsetup/install/lang/de.xml | 2 + wcfsetup/install/lang/en.xml | 2 + 4 files changed, 80 insertions(+) create mode 100644 wcfsetup/install/files/acp/templates/__booleanFormField.tpl create mode 100644 wcfsetup/install/files/lib/system/form/builder/field/BooleanFormField.class.php diff --git a/wcfsetup/install/files/acp/templates/__booleanFormField.tpl b/wcfsetup/install/files/acp/templates/__booleanFormField.tpl new file mode 100644 index 0000000000..cda9ee47a8 --- /dev/null +++ b/wcfsetup/install/files/acp/templates/__booleanFormField.tpl @@ -0,0 +1,19 @@ +getClasses()|empty} class="{implode from=$field->getClasses() item='class'}{$class}{/implode}"{/if}{foreach from=$field->getAttributes() key='attributeName' item='attributeValue'} {$attributeName}="{$attributeValue}"{/foreach}> +
+
+
    +
  1. + isAutofocused()} autofocus{/if}{if $field->isRequired()} required{/if}{if $field->isImmutable()} disabled{/if}{if $field->getValue()} checked{/if}> + +
  2. +
  3. + isImmutable()} disabled{/if}{if !$field->getValue()} checked{/if}> + +
  4. +
+ + {include file='__formFieldDescription'} + + {include file='__formFieldErrors'} +
+ diff --git a/wcfsetup/install/files/lib/system/form/builder/field/BooleanFormField.class.php b/wcfsetup/install/files/lib/system/form/builder/field/BooleanFormField.class.php new file mode 100644 index 0000000000..b5e401b40f --- /dev/null +++ b/wcfsetup/install/files/lib/system/form/builder/field/BooleanFormField.class.php @@ -0,0 +1,57 @@ + + * @package WoltLabSuite\Core\System\Form\Builder\Field + * @since 3.2 + */ +class BooleanFormField extends AbstractFormField { + /** + * @inheritDoc + */ + protected $templateName = '__booleanFormField'; + + /** + * @inheritDoc + */ + public function getSaveValue() { + return $this->__value ? 1 : 0; + } + + /** + * @inheritDoc + */ + public function readValue() { + if (isset($_POST[$this->getPrefixedId()])) { + $this->__value = true; + } + } + + /** + * @inheritDoc + */ + public function validate() { + if ($this->isRequired() && !$this->getValue()) { + $this->addValidationError(new FormFieldValidationError('empty')); + } + + parent::validate(); + } + + /** + * @inheritDoc + */ + public function value($value) { + if (!is_bool($value)) { + throw new \InvalidArgumentException("Given value is no bool, " . gettype($value) . " given."); + } + + return parent::value($value); + } +} diff --git a/wcfsetup/install/lang/de.xml b/wcfsetup/install/lang/de.xml index adbb82ee33..8dcb2607f2 100644 --- a/wcfsetup/install/lang/de.xml +++ b/wcfsetup/install/lang/de.xml @@ -2985,6 +2985,8 @@ Fehler sind beispielsweise: + + diff --git a/wcfsetup/install/lang/en.xml b/wcfsetup/install/lang/en.xml index e4a11a6f3a..8a3f12f09b 100644 --- a/wcfsetup/install/lang/en.xml +++ b/wcfsetup/install/lang/en.xml @@ -2932,6 +2932,8 @@ Errors are: + + -- 2.20.1