summaryrefslogtreecommitdiff
path: root/includes/htmlform/HTMLSelectField.php
diff options
context:
space:
mode:
Diffstat (limited to 'includes/htmlform/HTMLSelectField.php')
-rw-r--r--includes/htmlform/HTMLSelectField.php44
1 files changed, 44 insertions, 0 deletions
diff --git a/includes/htmlform/HTMLSelectField.php b/includes/htmlform/HTMLSelectField.php
new file mode 100644
index 00000000..a198037a
--- /dev/null
+++ b/includes/htmlform/HTMLSelectField.php
@@ -0,0 +1,44 @@
+<?php
+
+/**
+ * A select dropdown field. Basically a wrapper for Xmlselect class
+ */
+class HTMLSelectField extends HTMLFormField {
+ function validate( $value, $alldata ) {
+ $p = parent::validate( $value, $alldata );
+
+ if ( $p !== true ) {
+ return $p;
+ }
+
+ $validOptions = HTMLFormField::flattenOptions( $this->getOptions() );
+
+ if ( in_array( strval( $value ), $validOptions, true ) ) {
+ return true;
+ } else {
+ return $this->msg( 'htmlform-select-badoption' )->parse();
+ }
+ }
+
+ function getInputHTML( $value ) {
+ $select = new XmlSelect( $this->mName, $this->mID, strval( $value ) );
+
+ if ( !empty( $this->mParams['disabled'] ) ) {
+ $select->setAttribute( 'disabled', 'disabled' );
+ }
+
+ $allowedParams = array( 'tabindex', 'size' );
+ $customParams = $this->getAttributes( $allowedParams );
+ foreach ( $customParams as $name => $value ) {
+ $select->setAttribute( $name, $value );
+ }
+
+ if ( $this->mClass !== '' ) {
+ $select->setAttribute( 'class', $this->mClass );
+ }
+
+ $select->addOptions( $this->getOptions() );
+
+ return $select->getHTML();
+ }
+}