From: Florian Date: Thu, 5 Nov 2015 17:28:54 +0000 (+0100) Subject: Convert Special:ConfirmEmail to OOUIHTMLForm X-Git-Tag: 1.31.0-rc.0~8482 X-Git-Url: http://git.cyclocoop.org/%22%2C%20generer_url_ecrire%28?a=commitdiff_plain;h=c3ccae5631c460f7a67a9947275fd6d0c3be3997;p=lhc%2Fweb%2Fwiklou.git Convert Special:ConfirmEmail to OOUIHTMLForm Bug: T117792 Change-Id: I41e752d91598e8e00376e8b2a56629bb40a39ac3 --- diff --git a/includes/specials/SpecialConfirmemail.php b/includes/specials/SpecialConfirmemail.php index 147f67e8d2..ea26ada08a 100644 --- a/includes/specials/SpecialConfirmemail.php +++ b/includes/specials/SpecialConfirmemail.php @@ -78,16 +78,37 @@ class EmailConfirmation extends UnlistedSpecialPage { $user = $this->getUser(); $out = $this->getOutput(); - if ( $this->getRequest()->wasPosted() && - $user->matchEditToken( $this->getRequest()->getText( 'token' ) ) - ) { - $status = $user->sendConfirmationMail(); - if ( $status->isGood() ) { + if ( !$user->isEmailConfirmed() ) { + $descriptor = array(); + if ( $user->isEmailConfirmationPending() ) { + $descriptor += array( + 'pending' => array( + 'type' => 'info', + 'raw' => true, + 'default' => "
\n" . + $this->msg( 'confirmemail_pending' )->escaped() . + "\n
", + ), + ); + } + + $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' ); - } else { - $out->addWikiText( $status->getWikiText( 'confirmemail_sendfailed' ) ); + } elseif ( $retval instanceof Status && $retval->isGood() ) { + $out->addWikiText( $retval->getValue() ); } - } elseif ( $user->isEmailConfirmed() ) { + } 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 @@ class EmailConfirmation extends UnlistedSpecialPage { $d = $lang->userDate( $emailAuthenticated, $user ); $t = $lang->userTime( $emailAuthenticated, $user ); $out->addWikiMsg( 'emailauthenticated', $time, $d, $t ); - } else { - if ( $user->isEmailConfirmationPending() ) { - $out->wrapWikiMsg( - "
\n$1\n
", - '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' ) + ) ); } }