X-Git-Url: http://git.heureux-cyclage.org/?a=blobdiff_plain;f=includes%2Fspecials%2FSpecialUpload.php;h=b9bd277602d83de773c0c378830447631c2950a8;hb=2c1b2d668fb6769fd0e2a3bd13bcae076a6adfe6;hp=7da76af1427759bcdbe50bb6ad4dec085c710a7d;hpb=c824e30197e40d473e36da488287ae05fa19e646;p=lhc%2Fweb%2Fwiklou.git
diff --git a/includes/specials/SpecialUpload.php b/includes/specials/SpecialUpload.php
index 7da76af142..b9bd277602 100644
--- a/includes/specials/SpecialUpload.php
+++ b/includes/specials/SpecialUpload.php
@@ -70,7 +70,7 @@ class SpecialUpload extends SpecialPage {
$this->mIgnoreWarning = $request->getCheck( 'wpIgnoreWarning' )
|| $request->getCheck( 'wpUploadIgnoreWarning' );
- $this->mWatchthis = $request->getBool( 'wpWatchthis' );
+ $this->mWatchthis = $request->getBool( 'wpWatchthis' ) && $wgUser->isLoggedIn();
$this->mCopyrightStatus = $request->getText( 'wpUploadCopyStatus' );
$this->mCopyrightSource = $request->getText( 'wpUploadSource' );
@@ -190,7 +190,7 @@ class SpecialUpload extends SpecialPage {
# Initialize form
$form = new UploadForm( array(
- 'watch' => $this->watchCheck(),
+ 'watch' => $this->getWatchCheck(),
'forreupload' => $this->mForReUpload,
'sessionkey' => $sessionKey,
'hideignorewarning' => $hideIgnoreWarning,
@@ -199,8 +199,9 @@ class SpecialUpload extends SpecialPage {
# Check the token, but only if necessary
if( !$this->mTokenOk && !$this->mCancelUpload
- && ( $this->mUpload && $this->mUploadClicked ) )
+ && ( $this->mUpload && $this->mUploadClicked ) ) {
$form->addPreText( wfMsgExt( 'session_fail_preview', 'parseinline' ) );
+ }
# Add text to form
$form->addPreText( '
' . wfMsgExt( 'uploadtext', 'parse' ) . '
');
@@ -226,16 +227,19 @@ class SpecialUpload extends SpecialPage {
$title = Title::makeTitleSafe( NS_FILE, $this->mDesiredDestName );
// Show a subtitle link to deleted revisions (to sysops et al only)
- if( $title instanceof Title && ( $count = $title->isDeleted() ) > 0 && $wgUser->isAllowed( 'deletedhistory' ) ) {
- $link = wfMsgExt(
- $wgUser->isAllowed( 'delete' ) ? 'thisisdeleted' : 'viewdeleted',
- array( 'parse', 'replaceafter' ),
- $wgUser->getSkin()->linkKnown(
- SpecialPage::getTitleFor( 'Undelete', $title->getPrefixedText() ),
- wfMsgExt( 'restorelink', array( 'parsemag', 'escape' ), $count )
- )
- );
- $wgOut->addHTML( "{$link}
" );
+ if( $title instanceof Title ) {
+ $count = $title->isDeleted();
+ if ( $count > 0 && $wgUser->isAllowed( 'deletedhistory' ) ) {
+ $link = wfMsgExt(
+ $wgUser->isAllowed( 'delete' ) ? 'thisisdeleted' : 'viewdeleted',
+ array( 'parse', 'replaceafter' ),
+ $wgUser->getSkin()->linkKnown(
+ SpecialPage::getTitleFor( 'Undelete', $title->getPrefixedText() ),
+ wfMsgExt( 'restorelink', array( 'parsemag', 'escape' ), $count )
+ )
+ );
+ $wgOut->addHTML( "{$link}
" );
+ }
}
// Show the relevant lines from deletion log (for still deleted files only)
@@ -255,7 +259,7 @@ class SpecialUpload extends SpecialPage {
*
* @param string $message HTML message to be passed to mainUploadForm
*/
- protected function recoverableUploadError( $message ) {
+ protected function showRecoverableUploadError( $message ) {
$sessionKey = $this->mUpload->stashSession();
$message = '' . wfMsgHtml( 'uploadwarning' ) . "
\n" .
'' . $message . "
\n";
@@ -269,7 +273,7 @@ class SpecialUpload extends SpecialPage {
*
* @param array $warnings
*/
- protected function uploadWarning( $warnings ) {
+ protected function showUploadWarning( $warnings ) {
global $wgUser;
$sessionKey = $this->mUpload->stashSession();
@@ -313,7 +317,7 @@ class SpecialUpload extends SpecialPage {
*
* @param string $message
*/
- protected function uploadError( $message ) {
+ protected function showUploadError( $message ) {
$message = '' . wfMsgHtml( 'uploadwarning' ) . "
\n" .
'' . $message . "
\n";
$this->showUploadForm( $this->getUploadForm( $message ) );
@@ -328,26 +332,34 @@ class SpecialUpload extends SpecialPage {
// Verify permissions
$permErrors = $this->mUpload->verifyPermissions( $wgUser );
- if( $permErrors !== true )
- return $wgOut->showPermissionsErrorPage( $permErrors );
+ if( $permErrors !== true ) {
+ $wgOut->showPermissionsErrorPage( $permErrors );
+ return;
+ }
// Fetch the file if required
$status = $this->mUpload->fetchFile();
- if( !$status->isOK() )
- return $this->mainUploadForm( $wgOut->parse( $status->getWikiText() ) );
+ if( !$status->isOK() ) {
+ $this->showUploadForm( $this->getUploadForm( $wgOut->parse( $status->getWikiText() ) ) );
+ return;
+ }
// Upload verification
$details = $this->mUpload->verifyUpload();
- if ( $details['status'] != UploadBase::OK )
- return $this->processVerificationError( $details );
+ if ( $details['status'] != UploadBase::OK ) {
+ $this->processVerificationError( $details );
+ return;
+ }
$this->mLocalFile = $this->mUpload->getLocalFile();
// Check warnings if necessary
if( !$this->mIgnoreWarning ) {
$warnings = $this->mUpload->checkWarnings();
- if( count( $warnings ) )
- return $this->uploadWarning( $warnings );
+ if( count( $warnings ) ) {
+ $this->showUploadWarning( $warnings );
+ return;
+ }
}
// Get the page text if this is not a reupload
@@ -358,8 +370,10 @@ class SpecialUpload extends SpecialPage {
$pageText = false;
}
$status = $this->mUpload->performUpload( $this->mComment, $pageText, $this->mWatchthis, $wgUser );
- if ( !$status->isGood() )
- return $this->uploadError( $wgOut->parse( $status->getWikiText() ) );
+ if ( !$status->isGood() ) {
+ $this->showUploadError( $wgOut->parse( $status->getWikiText() ) );
+ return;
+ }
// Success, redirect to description page
wfRunHooks( 'SpecialUploadComplete', array( &$this ) );
@@ -404,7 +418,7 @@ class SpecialUpload extends SpecialPage {
* Note that the page target can be changed *on the form*, so our check
* state can get out of sync.
*/
- protected function watchCheck() {
+ protected function getWatchCheck() {
global $wgUser;
if( $wgUser->getOption( 'watchdefault' ) ) {
// Watch all edits!
@@ -435,28 +449,28 @@ class SpecialUpload extends SpecialPage {
/** Statuses that only require name changing **/
case UploadBase::MIN_LENGTH_PARTNAME:
- $this->recoverableUploadError( wfMsgHtml( 'minlength1' ) );
+ $this->showRecoverableUploadError( wfMsgHtml( 'minlength1' ) );
break;
case UploadBase::ILLEGAL_FILENAME:
- $this->recoverableUploadError( wfMsgExt( 'illegalfilename',
+ $this->showRecoverableUploadError( wfMsgExt( 'illegalfilename',
'parseinline', $details['filtered'] ) );
break;
case UploadBase::OVERWRITE_EXISTING_FILE:
- $this->recoverableUploadError( wfMsgExt( $details['overwrite'],
+ $this->showRecoverableUploadError( wfMsgExt( $details['overwrite'],
'parseinline' ) );
break;
case UploadBase::FILETYPE_MISSING:
- $this->recoverableUploadError( wfMsgExt( 'filetype-missing',
+ $this->showRecoverableUploadError( wfMsgExt( 'filetype-missing',
'parseinline' ) );
break;
/** Statuses that require reuploading **/
case UploadBase::EMPTY_FILE:
- $this->mainUploadForm( wfMsgHtml( 'emptyfile' ) );
+ $this->showUploadForm( $this->getUploadForm( wfMsgHtml( 'emptyfile' ) ) );
break;
case UploadBase::FILETYPE_BADTYPE:
$finalExt = $details['finalExt'];
- $this->uploadError(
+ $this->showUploadError(
wfMsgExt( 'filetype-banned-type',
array( 'parseinline' ),
htmlspecialchars( $finalExt ),
@@ -471,11 +485,18 @@ class SpecialUpload extends SpecialPage {
case UploadBase::VERIFICATION_ERROR:
unset( $details['status'] );
$code = array_shift( $details['details'] );
- $this->uploadError( wfMsgExt( $code, 'parseinline', $details['details'] ) );
+ $this->showUploadError( wfMsgExt( $code, 'parseinline', $details['details'] ) );
break;
case UploadBase::HOOK_ABORTED:
- $error = $details['error'];
- $this->uploadError( wfMsgExt( $error, 'parseinline' ) );
+ if ( is_array( $details['error'] ) ) { # allow hooks to return error details in an array
+ $args = $details['error'];
+ $error = array_shift( $args );
+ } else {
+ $error = $details['error'];
+ $args = null;
+ }
+
+ $this->showUploadError( wfMsgExt( $error, 'parseinline', $args ) );
break;
default:
throw new MWException( __METHOD__ . ": Unknown value `{$details['status']}`" );
@@ -720,7 +741,7 @@ class UploadForm extends HTMLForm {
'section' => 'source',
'id' => 'wpUploadFileURL',
'label-message' => 'sourceurl',
- 'upload-type' => 'Url',
+ 'upload-type' => 'url',
'radio' => &$radio,
'help' => wfMsgExt( 'upload-maxfilesize',
array( 'parseinline', 'escapenoentities' ),
@@ -729,7 +750,7 @@ class UploadForm extends HTMLForm {
'checked' => $selectedSourceType == 'url',
);
}
- wfRunHooks( 'UploadFormSourceDescriptors', array( $descriptor, &$radio, $selectedSourceType ) );
+ wfRunHooks( 'UploadFormSourceDescriptors', array( &$descriptor, &$radio, $selectedSourceType ) );
$descriptor['Extensions'] = array(
'type' => 'info',
@@ -850,17 +871,19 @@ class UploadForm extends HTMLForm {
* @return array Descriptor array
*/
protected function getOptionsSection() {
- global $wgOut;
+ global $wgUser, $wgOut;
- $descriptor = array(
- 'Watchthis' => array(
- 'type' => 'check',
- 'id' => 'wpWatchthis',
- 'label-message' => 'watchthisupload',
- 'section' => 'options',
- )
- );
- if ( !$this->mHideIgnoreWarning ) {
+ if( $wgUser->isLoggedIn() ) {
+ $descriptor = array(
+ 'Watchthis' => array(
+ 'type' => 'check',
+ 'id' => 'wpWatchthis',
+ 'label-message' => 'watchthisupload',
+ 'section' => 'options',
+ )
+ );
+ }
+ if( !$this->mHideIgnoreWarning ) {
$descriptor['IgnoreWarning'] = array(
'type' => 'check',
'id' => 'wpIgnoreWarning',
@@ -887,9 +910,8 @@ class UploadForm extends HTMLForm {
* @param bool $autofill Whether or not to autofill the destination
* filename text box
*/
- protected function addUploadJS( $autofill = true ) {
+ protected function addUploadJS( ) {
global $wgUseAjax, $wgAjaxUploadDestCheck, $wgAjaxLicensePreview;
- global $wgEnableFirefogg, $wgEnableJS2system;
global $wgOut;
$useAjaxDestCheck = $wgUseAjax && $wgAjaxUploadDestCheck;
@@ -898,21 +920,15 @@ class UploadForm extends HTMLForm {
$scriptVars = array(
'wgAjaxUploadDestCheck' => $wgUseAjax && $wgAjaxUploadDestCheck,
'wgAjaxLicensePreview' => $wgUseAjax && $wgAjaxLicensePreview,
- 'wgEnableFirefogg' => (bool)$wgEnableFirefogg,
- 'wgUploadAutoFill' => (bool)$autofill,
+ 'wgUploadAutoFill' => !$this->mForReUpload,
'wgUploadSourceIds' => $this->mSourceIds,
);
$wgOut->addScript( Skin::makeVariablesScript( $scriptVars ) );
-
- if ( $wgEnableJS2system ) {
- //js2version of upload page:
- $wgOut->addScriptClass( 'uploadPage' );
- } else {
- //legacy upload code:
- $wgOut->addScriptFile( 'upload.js' );
- $wgOut->addScriptFile( 'edit.js' ); // For support
- }
+
+ // For support
+ $wgOut->addScriptFile( 'edit.js' );
+ $wgOut->addScriptFile( 'upload.js' );
}
/**