From c29cb2bda0befd77ba4ced96cfe4122d1503661b Mon Sep 17 00:00:00 2001 From: Purodha B Blissenbach Date: Tue, 12 Apr 2011 12:49:56 +0000 Subject: [PATCH] (bug 13879) Special:Emailuser now asks for suitable target user if called without. --- RELEASE-NOTES | 1 + includes/specials/SpecialEmailuser.php | 40 +++++++++++++++++++------- languages/messages/MessagesEn.php | 4 +++ 3 files changed, 35 insertions(+), 10 deletions(-) diff --git a/RELEASE-NOTES b/RELEASE-NOTES index 1f537f860f..7f1b5c88fa 100644 --- a/RELEASE-NOTES +++ b/RELEASE-NOTES @@ -130,6 +130,7 @@ PHP if you have not done so prior to upgrading MediaWiki. to avoid loops and confusion; auth plugins like CentralAuth need to handle AbortNewAccount separately. * Special:ListFiles is now transcludable. +* (bug 13879) Special:Emailuser asks for suitable target user if called without. === Bug fixes in 1.18 === diff --git a/includes/specials/SpecialEmailuser.php b/includes/specials/SpecialEmailuser.php index 098d936c46..851be6be20 100644 --- a/includes/specials/SpecialEmailuser.php +++ b/includes/specials/SpecialEmailuser.php @@ -89,19 +89,10 @@ class SpecialEmailUser extends UnlistedSpecialPage { $this->setHeaders(); $this->outputHeader(); $wgOut->addModuleStyles( 'mediawiki.special' ); - $this->mTarget = is_null( $par ) ? $wgRequest->getVal( 'wpTarget', $wgRequest->getVal( 'target', '' ) ) : $par; - - $ret = self::getTarget( $this->mTarget ); - if( $ret instanceof User ){ - $this->mTargetObj = $ret; - } else { - $wgOut->showErrorPage( "{$ret}title", "{$ret}text" ); - return false; - } - + // error out if sending user cannot do this $error = self::getPermissionsError( $wgUser, $wgRequest->getVal( 'wpEditToken' ) ); switch ( $error ) { case null: @@ -126,6 +117,18 @@ class SpecialEmailUser extends UnlistedSpecialPage { $wgOut->showErrorPage( $title, $msg, $params ); return; } + // Got a valid target user name? Else ask for one. + $ret = self::getTarget( $this->mTarget ); + if( ! $ret instanceof User ){ + if( $this->mTarget != '' ) { + $ret = ( $ret == 'notarget' ) ? 'emailnotarget' : ( $ret . 'text' ) ; + $wgOut->addHtml ( '

' . wfMessage( $ret )->parse() . '

' ); + } + $wgOut->addHtml (self::userForm( $this->mTarget ) ); + return false; + } + + $this->mTargetObj = $ret; $form = new HTMLForm( $this->getFormFields() ); $form->addPreText( wfMsgExt( 'emailpagetext', 'parseinline' ) ); @@ -216,6 +219,23 @@ class SpecialEmailUser extends UnlistedSpecialPage { return null; } + + /** + * Form to ask for target user name. + * @author purodha + * @param $name string User name submitted. + * @return string form asking for user name. + */ + static function userForm( $name ) { + $string = Xml::openElement( 'form', array( 'method' => 'get', 'action' => '', 'id' => 'askusername' ) ) . + Xml::openElement( 'fieldset' ) . + Html::rawElement( 'legend', null, wfMessage( 'emailtarget' )->parse() ) . + Xml::inputLabel( wfMessage('emailusername')->text(), 'target', 'emailusertarget', 30, $name ) . ' ' . + Xml::submitButton( wfMessage('emailusernamesubmit')->text() ) . + Xml::closeElement( 'fieldset' ) . + Xml::closeElement( 'form' ) . "\n"; + return $string; + } /** * Really send a mail. Permissions should have been checked using diff --git a/languages/messages/MessagesEn.php b/languages/messages/MessagesEn.php index 46f5faf8e4..6859bc5207 100644 --- a/languages/messages/MessagesEn.php +++ b/languages/messages/MessagesEn.php @@ -2679,6 +2679,10 @@ The e-mail address you entered in [[Special:Preferences|your user preferences]] 'noemailtext' => 'This user has not specified a valid e-mail address.', 'nowikiemailtitle' => 'No e-mail allowed', 'nowikiemailtext' => 'This user has chosen not to receive e-mail from other users.', +'emailnotarget' => 'Nonexistent or invalid user name to receive e-mail.', +'emailtarget' => 'Enter user to receive e-mail', +'emailusername' => 'User name:', +'emailusernamesubmit' => 'Submit', 'email-legend' => 'Send an e-mail to another {{SITENAME}} user', 'emailfrom' => 'From:', 'emailto' => 'To:', -- 2.20.1