Ricordisamoa has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/233423

Change subject: [WIP] Convert SpecialModifyEntity and subclasses to HTMLForm
......................................................................

[WIP] Convert SpecialModifyEntity and subclasses to HTMLForm

Change-Id: I12339ee9cd9376cd108c49565e794077ac7dc07a
---
M repo/includes/specials/SpecialModifyEntity.php
M repo/includes/specials/SpecialModifyTerm.php
M repo/includes/specials/SpecialSetLabelDescriptionAliases.php
3 files changed, 111 insertions(+), 168 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/Wikibase 
refs/changes/23/233423/1

diff --git a/repo/includes/specials/SpecialModifyEntity.php 
b/repo/includes/specials/SpecialModifyEntity.php
index ed13cdb..301f50d 100644
--- a/repo/includes/specials/SpecialModifyEntity.php
+++ b/repo/includes/specials/SpecialModifyEntity.php
@@ -2,6 +2,7 @@
 
 namespace Wikibase\Repo\Specials;
 
+use HTMLForm;
 use Html;
 use Wikibase\ChangeOp\ChangeOp;
 use Wikibase\ChangeOp\ChangeOpException;
@@ -162,52 +163,29 @@
                        );
                }
 
-               // Form header
-               $this->getOutput()->addHTML(
-                       Html::openElement(
-                               'form',
-                               array(
-                                       'method' => 'post',
-                                       'action' => 
$this->getPageTitle()->getFullUrl(),
-                                       'name' => strtolower( $this->getName() 
),
-                                       'id' => 'wb-' . strtolower( 
$this->getName() ) . '-form1',
-                                       'class' => 'wb-form'
-                               )
-                       )
-                       . Html::openElement(
-                               'fieldset',
-                               array( 'class' => 'wb-fieldset' )
-                       )
-                       . Html::element(
-                               'legend',
-                               array( 'class' => 'wb-legend' ),
-                               $this->msg( 'special-' . strtolower( 
$this->getName() ) )->text()
-                       )
-               );
-
+               $formDescriptor = array();
                // Form elements
-               $this->getOutput()->addHTML( $this->getFormElements( $entity ) 
);
-
-               // Form body
+               list( $intro, $formElements ) = $this->getFormElements( $entity 
);
+               $this->getOutput()->addHTML( Html::rawElement( 'p', array(), 
$intro->parse() ) );
+               $formDescriptor = array_merge( $formDescriptor, $formElements );
                $submitKey = 'wikibase-' . strtolower( $this->getName() ) . 
'-submit';
-               $this->getOutput()->addHTML(
-                       Html::input(
-                               $submitKey,
-                               $this->msg( $submitKey )->text(),
-                               'submit',
-                               array(
-                                       'id' => 'wb-' . strtolower( 
$this->getName() ) . '-submit',
-                                       'class' => 'wb-button'
-                               )
-                       )
-                       . Html::input(
-                               'wpEditToken',
-                               $this->getUser()->getEditToken(),
-                               'hidden'
-                       )
-                       . Html::closeElement( 'fieldset' )
-                       . Html::closeElement( 'form' )
+               $formDescriptor[] = array(
+                       'type' => 'submit',
+                       'id' => 'wb-' . strtolower( $this->getName() ) . 
'-submit',
+                       'cssclass' => 'wb-button',
+                       'name' => $submitKey,
+                       'default' => $this->msg( $submitKey )->text()
                );
+               $sectionName = strtolower( $this->getName() );
+               foreach ( $formDescriptor as $name => $field ) {
+                       $formDescriptor[$name]['section'] = $sectionName;
+               }
+               $htmlForm = new HTMLForm( $formDescriptor, $this->getContext(), 
'special' );
+               $htmlForm
+                       ->setId( 'wb-' . strtolower( $this->getName() ) . 
'-form1' )
+                       ->addHiddenField( 'wpEditToken', 
$this->getUser()->getEditToken() )
+                       ->suppressDefaultSubmit()
+                       ->show();
        }
 
        /**
@@ -222,19 +200,15 @@
        protected function getFormElements( Entity $entity = null ) {
                $id = 'wb-modifyentity-id';
 
-               return Html::label(
-                       $this->msg( 'wikibase-modifyentity-id' )->text(),
-                       $id,
-                       array( 'class' => 'wb-label' )
-               )
-               . Html::input(
-                       'id',
-                       $entity === null ? '' : $entity->getId(),
-                       'text',
-                       array(
-                               'class' => 'wb-input',
-                               'id' => $id
-                       )
+               return array(
+                       'id' => array(
+                               'label-message' => 'wikibase-modifyentity-id',
+                               'type' => 'text',
+                               'cssclass' => 'wb-input',
+                               'id' => $id,
+                               'default' => $entity === null ? '' : 
$entity->getId(),
+                               'cssclass' => 'wb-input'
+                       ),
                );
        }
 
diff --git a/repo/includes/specials/SpecialModifyTerm.php 
b/repo/includes/specials/SpecialModifyTerm.php
index 143d03b..af7c639 100644
--- a/repo/includes/specials/SpecialModifyTerm.php
+++ b/repo/includes/specials/SpecialModifyTerm.php
@@ -192,75 +192,60 @@
 
                $this->setValueIfNull( $entity );
 
-               $valueinput = Html::input(
-                       'value',
-                       $this->getRequest()->getVal( 'value' ) ? 
$this->getRequest()->getVal( 'value' ) : $this->value,
-                       'text',
-                       array(
-                               'class' => 'wb-input',
-                               'id' => 'wb-modifyterm-value',
-                       )
+               $valueinput = array(
+                       'name' => 'value',
+                       'cssclass' => 'wb-input',
+                       'id' => 'wb-modifyterm-value',
+                       'type' => 'text',
+                       'default' => $this->getRequest()->getVal( 'value' ) ? 
$this->getRequest()->getVal( 'value' ) : $this->value
                );
 
                $languageName = Language::fetchLanguageName( 
$this->languageCode, $this->getLanguage()->getCode() );
 
                if ( $entity !== null && $this->languageCode !== null && 
$languageName !== '' ) {
-                       return Html::rawElement(
-                               'p',
-                               array(),
-                               // Messages: wikibase-setlabel-introfull, 
wikibase-setdescription-introfull,
-                               // wikibase-setaliases-introfull
-                               $this->msg(
-                                       'wikibase-' . strtolower( 
$this->getName() ) . '-introfull',
-                                       $this->getEntityTitle( $entity->getId() 
)->getPrefixedText(),
-                                       $languageName
-                               )->parse()
-                       )
-                       . Html::input( 'language', $this->languageCode, 
'hidden' )
-                       . Html::input( 'id', 
$entity->getId()->getSerialization(), 'hidden' )
-                       . Html::input( 'remove', 'remove', 'hidden' )
-                       . $valueinput;
+                       // Messages: wikibase-setlabel-introfull, 
wikibase-setdescription-introfull,
+                       // wikibase-setaliases-introfull
+                       $intro = $this->msg(
+                               'wikibase-' . strtolower( $this->getName() ) . 
'-introfull',
+                               $this->getEntityTitle( $entity->getId() 
)->getPrefixedText(),
+                               $languageName
+                       );
+                       $formDescriptor = array(
+                               'language' => array(
+                                       'name' => 'language',
+                                       'type' => 'hidden',
+                                       'default' => $this->languageCode
+                               ),
+                               'id' => array(
+                                       'name' => 'id',
+                                       'type' => 'hidden',
+                                       'default' => 
$entity->getId()->getSerialization()
+                               ),
+                               'remove' => array(
+                                       'name' => 'remove',
+                                       'type' => 'hidden',
+                                       'default' => 'remove'
+                               ),
+                               'value' => $valueinput
+                       );
                } else {
-                       return Html::rawElement(
-                               'p',
-                               array(),
-                               // Messages: wikibase-setlabel-intro, 
wikibase-setdescription-intro,
-                               // wikibase-setaliases-intro
-                               $this->msg( 'wikibase-' . strtolower( 
$this->getName() ) . '-intro' )->parse()
-                       )
-                       . parent::getFormElements( $entity )
-                       . Html::element( 'br' )
-                       . Html::element(
-                               'label',
-                               array(
-                                       'for' => 'wb-modifyterm-language',
-                                       'class' => 'wb-label'
-                               ),
-                               $this->msg( 'wikibase-modifyterm-language' 
)->text()
-                       )
-                       . Html::input(
-                               'language',
-                               $this->languageCode,
-                               'text',
-                               array(
-                                       'class' => 'wb-input',
-                                       'id' => 'wb-modifyterm-language'
-                               )
-                       )
-                       . Html::element( 'br' )
-                       . Html::element(
-                               'label',
-                               array(
-                                       'for' => 'wb-modifyterm-value',
-                                       'class' => 'wb-label'
-                               ),
-                               // Messages: wikibase-setlabel-label, 
wikibase-setdescription-label,
-                               // wikibase-setaliases-label
-                               $this->msg( 'wikibase-' . strtolower( 
$this->getName() ) . '-label' )->text()
-                       )
-                       . $valueinput
-                       . Html::element( 'br' );
+                       // Messages: wikibase-setlabel-intro, 
wikibase-setdescription-intro,
+                       // wikibase-setaliases-intro
+                       $intro = $this->msg( 'wikibase-' . strtolower( 
$this->getName() ) . '-intro' );
+                       $formDescriptor = parent::getFormElements( $entity );
+                       $formDescriptor['language'] = array(
+                               'label-message' => 
'wikibase-modifyterm-language',
+                               'type' => 'text',
+                               'default' => $this->languageCode,
+                               'cssclass' => 'wb-input',
+                               'id' => 'wb-modifyterm-language'
+                       );
+                       // Messages: wikibase-setlabel-label, 
wikibase-setdescription-label,
+                       // wikibase-setaliases-label
+                       $valueinput['label-message'] = 'wikibase-' . 
strtolower( $this->getName() ) . '-label';
+                       $formDescriptor['value'] = $valueinput;
                }
+               return array( $intro, $formDescriptor );
        }
 
        private function setValueIfNull( FingerprintProvider 
$fingerprintProvider = null ) {
diff --git a/repo/includes/specials/SpecialSetLabelDescriptionAliases.php 
b/repo/includes/specials/SpecialSetLabelDescriptionAliases.php
index bf3117d..0f065e6 100644
--- a/repo/includes/specials/SpecialSetLabelDescriptionAliases.php
+++ b/repo/includes/specials/SpecialSetLabelDescriptionAliases.php
@@ -161,51 +161,41 @@
                                $languageName
                        );
 
-                       $html = Html::hidden(
-                                       'id',
-                                       $entity->getId()->getSerialization()
+                       $formDescriptor = array(
+                               'id' => array(
+                                       'name' => 'id',
+                                       'type' => 'hidden',
+                                       'default' => 
$entity->getId()->getSerialization()
+                               ),
+                               'language' => array(
+                                       'name' => 'language',
+                                       'type' => 'hidden',
+                                       'default' => $this->languageCode
                                )
-                               . Html::hidden(
-                                       'language',
-                                       $this->languageCode
-                               )
-                               . $this->getLabeledInputField( 'label', 
$this->label )
-                               . Html::element( 'br' )
-                               . $this->getLabeledInputField( 'description', 
$this->description )
-                               . Html::element( 'br' )
-                               . $this->getLabeledInputField( 'aliases', 
implode( '|', $this->aliases ) );
+                       );
+                       $formDescriptor = array_merge(
+                               $formDescriptor,
+                               $this->getLabeledInputField( 'label', 
$this->label ),
+                               $this->getLabeledInputField( 'description', 
$this->description ),
+                               $this->getLabeledInputField( 'aliases', 
implode( '|', $this->aliases ) )
+                       );
                } else {
                        $intro = $this->msg( 
'wikibase-setlabeldescriptionaliases-intro' );
                        $fieldId = 
'wikibase-setlabeldescriptionaliases-language';
                        $languageCode = $this->languageCode ? : 
$this->getLanguage()->getCode();
 
-                       $html = parent::getFormElements( $entity )
-                               . Html::element( 'br' )
-                               . Html::label(
-                                       $this->msg( 
'wikibase-modifyterm-language' )->text(),
-                                       $fieldId,
-                                       array(
-                                               'class' => 'wb-label',
-                                       )
-                               )
-                               . Html::input(
-                                       'language',
-                                       $languageCode,
-                                       'text',
-                                       array(
-                                               'class' => 'wb-input',
-                                               'id' => $fieldId,
-                                       )
-                               );
+                       $formDescriptor = parent::getFormElements( $entity );
+                       $formDescriptor['language'] = array(
+                               'name' => 'language',
+                               'default' => $languageCode,
+                               'type' => 'text',
+                               'cssclass' => 'wb-input',
+                               'id' => $fieldId,
+                               'label-message' => 
'wikibase-modifyterm-language'
+                       );
                }
 
-               return Html::rawElement(
-                       'p',
-                       array(),
-                       $intro->parse()
-               )
-               . $html
-               . Html::element( 'br' );
+               return array( $intro, $formDescriptor );
        }
 
        /**
@@ -223,21 +213,15 @@
                // wikibase-setlabeldescriptionaliases-label-label
                // wikibase-setlabeldescriptionaliases-description-label
                // wikibase-setlabeldescriptionaliases-aliases-label
-               return Html::label(
-                       $this->msg( $fieldId . '-label' )->text(),
-                       $fieldId,
-                       array(
-                               'class' => 'wb-label',
-                       )
-               )
-               . Html::input(
-                       $termType,
-                       $value,
-                       'text',
-                       array(
-                               'class' => 'wb-input',
+               return array(
+                       $termType => array(
+                               'name' => $termType,
+                               'default' => $value,
+                               'type' => 'text',
+                               'cssclass' => 'wb-input',
                                'id' => $fieldId,
                                'placeholder' => $value,
+                               'label-message' => $fieldId . '-label'
                        )
                );
        }

-- 
To view, visit https://gerrit.wikimedia.org/r/233423
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I12339ee9cd9376cd108c49565e794077ac7dc07a
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/Wikibase
Gerrit-Branch: master
Gerrit-Owner: Ricordisamoa <ricordisa...@openmailbox.org>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to