summaryrefslogtreecommitdiff
path: root/www/wiki/includes/htmlform/fields/HTMLFormFieldWithButton.php
diff options
context:
space:
mode:
Diffstat (limited to 'www/wiki/includes/htmlform/fields/HTMLFormFieldWithButton.php')
-rw-r--r--www/wiki/includes/htmlform/fields/HTMLFormFieldWithButton.php75
1 files changed, 75 insertions, 0 deletions
diff --git a/www/wiki/includes/htmlform/fields/HTMLFormFieldWithButton.php b/www/wiki/includes/htmlform/fields/HTMLFormFieldWithButton.php
new file mode 100644
index 00000000..b2290ce3
--- /dev/null
+++ b/www/wiki/includes/htmlform/fields/HTMLFormFieldWithButton.php
@@ -0,0 +1,75 @@
+<?php
+/**
+ * Enables HTMLFormField elements to be build with a button.
+ */
+class HTMLFormFieldWithButton extends HTMLFormField {
+ /** @var string $mButtonClass CSS class for the button in this field */
+ protected $mButtonClass = '';
+
+ /** @var string|int $mButtonId Element ID for the button in this field */
+ protected $mButtonId = '';
+
+ /** @var string $mButtonName Name the button in this field */
+ protected $mButtonName = '';
+
+ /** @var string $mButtonType Type of the button in this field (e.g. button or submit) */
+ protected $mButtonType = 'submit';
+
+ /** @var string $mButtonType Value for the button in this field */
+ protected $mButtonValue;
+
+ /** @var string $mButtonType Value for the button in this field */
+ protected $mButtonFlags = [ 'progressive' ];
+
+ public function __construct( $info ) {
+ if ( isset( $info['buttonclass'] ) ) {
+ $this->mButtonClass = $info['buttonclass'];
+ }
+ if ( isset( $info['buttonid'] ) ) {
+ $this->mButtonId = $info['buttonid'];
+ }
+ if ( isset( $info['buttonname'] ) ) {
+ $this->mButtonName = $info['buttonname'];
+ }
+ if ( isset( $info['buttondefault'] ) ) {
+ $this->mButtonValue = $info['buttondefault'];
+ }
+ if ( isset( $info['buttontype'] ) ) {
+ $this->mButtonType = $info['buttontype'];
+ }
+ if ( isset( $info['buttonflags'] ) ) {
+ $this->mButtonFlags = $info['buttonflags'];
+ }
+ parent::__construct( $info );
+ }
+
+ public function getInputHTML( $value ) {
+ $attr = [
+ 'class' => 'mw-htmlform-submit ' . $this->mButtonClass,
+ 'id' => $this->mButtonId,
+ ] + $this->getAttributes( [ 'disabled', 'tabindex' ] );
+
+ return Html::input( $this->mButtonName, $this->mButtonValue, $this->mButtonType, $attr );
+ }
+
+ public function getInputOOUI( $value ) {
+ return new OOUI\ButtonInputWidget( [
+ 'name' => $this->mButtonName,
+ 'value' => $this->mButtonValue,
+ 'type' => $this->mButtonType,
+ 'label' => $this->mButtonValue,
+ 'flags' => $this->mButtonFlags,
+ ] + OOUI\Element::configFromHtmlAttributes(
+ $this->getAttributes( [ 'disabled', 'tabindex' ] )
+ ) );
+ }
+
+ /**
+ * Combines the passed element with a button.
+ * @param String $element Element to combine the button with.
+ * @return String
+ */
+ public function getElement( $element ) {
+ return $element . '&#160;' . $this->getInputHTML( '' );
+ }
+}