Florianschmidtwelzow has uploaded a new change for review.

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

Change subject: Convert Special:ConfirmEmail to OOUIHTMLForm
......................................................................

Convert Special:ConfirmEmail to OOUIHTMLForm

Bug: T117792
Change-Id: I41e752d91598e8e00376e8b2a56629bb40a39ac3
---
M includes/specials/SpecialConfirmemail.php
1 file changed, 45 insertions(+), 25 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/core 
refs/changes/83/251283/1

diff --git a/includes/specials/SpecialConfirmemail.php 
b/includes/specials/SpecialConfirmemail.php
index 147f67e..17230c9 100644
--- a/includes/specials/SpecialConfirmemail.php
+++ b/includes/specials/SpecialConfirmemail.php
@@ -78,16 +78,37 @@
                $user = $this->getUser();
                $out = $this->getOutput();
 
-               if ( $this->getRequest()->wasPosted() &&
-                       $user->matchEditToken( $this->getRequest()->getText( 
'token' ) )
-               ) {
-                       $status = $user->sendConfirmationMail();
-                       if ( $status->isGood() ) {
-                               $out->addWikiMsg( 'confirmemail_sent' );
-                       } else {
-                               $out->addWikiText( $status->getWikiText( 
'confirmemail_sendfailed' ) );
+               if ( !$user->isEmailConfirmed() ) {
+                       $descriptor = array();
+                       if ( $user->isEmailConfirmationPending() ) {
+                               $descriptor += array(
+                                       'pending' => array(
+                                               'type' => 'info',
+                                               'raw' => true,
+                                               'default' => "<div 
class=\"error mw-confirmemail-pending\">\n" .
+                                                       $this->msg( 
'confirmemail_pending' )->escaped() .
+                                                       "\n</div>",
+                                       ),
+                               );
                        }
-               } elseif ( $user->isEmailConfirmed() ) {
+
+                       $out->addWikiMsg( 'confirmemail_text' );
+                       $form = HTMLForm::factory( 'ooui', $descriptor, 
$this->getContext() );
+                       $form
+                               ->setMethod( 'post' )
+                               
->setAction($this->getPageTitle()->getLocalURL() )
+                               ->setSubmitTextMsg( 'confirmemail_send' )
+                               ->setSubmitCallback( array( $this, 'submitSend' 
) );
+
+                       $retval = $form->show();
+
+                       if ( $retval === true ) {
+                               // should never happen, but if so, don't let 
the user without any message
+                               $out->addWikiMsg( 'confirmemail_sent' );
+                       } elseif ( $retval instanceof Status && 
$retval->isGood() ) {
+                               $out->addWikiText( $retval->getValue() );
+                       }
+               } else {
                        // date and time are separate parameters to facilitate 
localisation.
                        // $time is kept for backward compat reasons.
                        // 'emailauthenticated' is also used in 
SpecialPreferences.php
@@ -97,23 +118,22 @@
                        $d = $lang->userDate( $emailAuthenticated, $user );
                        $t = $lang->userTime( $emailAuthenticated, $user );
                        $out->addWikiMsg( 'emailauthenticated', $time, $d, $t );
-               } else {
-                       if ( $user->isEmailConfirmationPending() ) {
-                               $out->wrapWikiMsg(
-                                       "<div class=\"error 
mw-confirmemail-pending\">\n$1\n</div>",
-                                       'confirmemail_pending'
-                               );
-                       }
+               }
+       }
 
-                       $out->addWikiMsg( 'confirmemail_text' );
-                       $form = Html::openElement(
-                               'form',
-                               array( 'method' => 'post', 'action' => 
$this->getPageTitle()->getLocalURL() )
-                       ) . "\n";
-                       $form .= Html::hidden( 'token', $user->getEditToken() ) 
. "\n";
-                       $form .= Xml::submitButton( $this->msg( 
'confirmemail_send' )->text() ) . "\n";
-                       $form .= Html::closeElement( 'form' ) . "\n";
-                       $out->addHTML( $form );
+       /**
+        * Callback for HTMLForm send confirmation mail.
+        *
+        * @return Status Status object with the result
+        */
+       public function submitSend() {
+               $status = $this->getUser()->sendConfirmationMail();
+               if ( $status->isGood() ) {
+                       return Status::newGood( $this->msg( 'confirmemail_sent' 
)->text() );
+               } else {
+                       return Status::newFatal( new RawMessage(
+                               $status->getWikiText( 'confirmemail_sendfailed' 
)
+                       ) );
                }
        }
 

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I41e752d91598e8e00376e8b2a56629bb40a39ac3
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/core
Gerrit-Branch: master
Gerrit-Owner: Florianschmidtwelzow <florian.schmidt.stargatewis...@gmail.com>

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

Reply via email to