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