/* global Uint8Array */
( function ( mw, $ ) {
- var uploadWarning, uploadLicense,
+ var uploadWarning, uploadTemplatePreview,
ajaxUploadDestCheck = mw.config.get( 'wgAjaxUploadDestCheck' ),
$license = $( '#wpLicense' );
timeout: function () {
var $spinnerDestCheck, title;
- if ( !ajaxUploadDestCheck || this.nameToCheck === '' ) {
+ if ( !ajaxUploadDestCheck || this.nameToCheck.trim() === '' ) {
return;
}
$spinnerDestCheck = $.createSpinner().insertAfter( '#wpDestFile' );
// If title is empty, user input is invalid, the API call will produce details about why
titles: title ? title.getPrefixedText() : this.nameToCheck,
prop: 'imageinfo',
- iiprop: 'uploadwarning'
+ iiprop: 'uploadwarning',
+ errorformat: 'html',
+ errorlang: mw.config.get( 'wgUserLanguage' )
} ).done( function ( result ) {
var
resultOut = '',
if ( page.imageinfo ) {
resultOut = page.imageinfo[ 0 ].html;
} else if ( page.invalidreason ) {
- resultOut = mw.html.escape( page.invalidreason );
+ resultOut = page.invalidreason.html;
}
uploadWarning.processResult( resultOut, uploadWarning.nameToCheck );
} ).always( function () {
}
};
- uploadLicense = {
+ window.wgUploadTemplatePreviewObj = uploadTemplatePreview = {
responseCache: { '': '' },
- fetchPreview: function ( license ) {
- var $spinnerLicense;
- if ( !mw.config.get( 'wgAjaxLicensePreview' ) ) {
- return;
- }
- if ( this.responseCache.hasOwnProperty( license ) ) {
- this.showPreview( this.responseCache[ license ] );
+ /**
+ * @param {jQuery} $element The element whose .val() will be previewed
+ * @param {jQuery} $previewContainer The container to display the preview in
+ */
+ getPreview: function ( $element, $previewContainer ) {
+ var template = $element.val(),
+ $spinner;
+
+ if ( this.responseCache.hasOwnProperty( template ) ) {
+ this.showPreview( this.responseCache[ template ], $previewContainer );
return;
}
- $spinnerLicense = $.createSpinner().insertAfter( '#wpLicense' );
+ $spinner = $.createSpinner().insertAfter( $element );
( new mw.Api() ).get( {
formatversion: 2,
action: 'parse',
- text: '{{' + license + '}}',
+ text: '{{' + template + '}}',
title: $( '#wpDestFile' ).val() || 'File:Sample.jpg',
prop: 'text',
pst: true,
uselang: mw.config.get( 'wgUserLanguage' )
} ).done( function ( result ) {
- uploadLicense.processResult( result, license );
+ uploadTemplatePreview.processResult( result, template, $previewContainer );
} ).always( function () {
- $spinnerLicense.remove();
+ $spinner.remove();
} );
},
- processResult: function ( result, license ) {
- this.responseCache[ license ] = result.parse.text;
- this.showPreview( this.responseCache[ license ] );
+ processResult: function ( result, template, $previewContainer ) {
+ this.responseCache[ template ] = result.parse.text;
+ this.showPreview( this.responseCache[ template ], $previewContainer );
},
- showPreview: function ( preview ) {
- $( '#mw-license-preview' ).html( preview );
+ showPreview: function ( preview, $previewContainer ) {
+ $previewContainer.html( preview );
}
};
// License selector check
$license.change( function () {
// We might show a preview
- uploadLicense.fetchPreview( $license.val() );
+ uploadTemplatePreview.getPreview( $license, $( '#mw-license-preview' ) );
} );
// License selector table row
if (
mw.config.get( 'wgCheckFileExtensions' ) &&
mw.config.get( 'wgStrictFileExtensions' ) &&
- mw.config.get( 'wgFileExtensions' ) &&
+ Array.isArray( mw.config.get( 'wgFileExtensions' ) ) &&
$( this ).attr( 'id' ) !== 'wpUploadFileURL'
) {
if (
fname.lastIndexOf( '.' ) === -1 ||
- $.inArray(
- fname.slice( fname.lastIndexOf( '.' ) + 1 ).toLowerCase(),
- $.map( mw.config.get( 'wgFileExtensions' ), function ( element ) {
- return element.toLowerCase();
- } )
- ) === -1
+ mw.config.get( 'wgFileExtensions' ).map( function ( element ) {
+ return element.toLowerCase();
+ } ).indexOf( fname.slice( fname.lastIndexOf( '.' ) + 1 ).toLowerCase() ) === -1
) {
// Not a valid extension
// Clear the upload and set mw-upload-permitted to error
function fileIsPreviewable( file ) {
var known = [ 'image/png', 'image/gif', 'image/jpeg', 'image/svg+xml' ],
tooHuge = 10 * 1024 * 1024;
- return ( $.inArray( file.type, known ) !== -1 ) && file.size > 0 && file.size < tooHuge;
+ return ( known.indexOf( file.type ) !== -1 ) && file.size > 0 && file.size < tooHuge;
}
/**