/**
* @author Nischay Nahata
*/
( function( $, mw, pf ) {
$( ".simpleupload_btn" ).each(function(){
var _this = $(this);
var input = _this.parent().find('#' + _this.data('id'));
input.hide();
if ( input.val() !== '' ) {
_this.val( mw.message( 'pf_forminputs_change_file' ).text() );
$('').insertAfter(input);
_this.parent().find('.simpleupload_rmv_btn').show();
}
});
$( ".simpleupload_rmv_btn" ).click(function () {
var _this = $(this);
var input = _this.parent().find('#' + _this.data('id'));
_this.parent().find('img.simpleupload_prv').remove();
_this.parent().find( "input[type='file']" ).val('');
input.val('');
_this.hide();
_this.parent().find('.simpleupload_btn').val( mw.message( 'pf-simpleupload' ).text() );
});
$( ".simpleupload_btn" ).click(function () {
$(this).parent().find("input[type='file']").trigger('click');
});
$( "input[type='file'].simpleupload" ).change(function(event) {
var _this = $(this);
var input = _this.parent().find('#' + _this.data('id'));
var fileToUpload = event.target.files[0]; // get (first) File
var fileName = event.target.files[0].name;
var formdata = new FormData(); //see https://developer.mozilla.org/en-US/docs/Web/API/FormData/Using_FormData_Objects
formdata.append("action", "upload");
formdata.append("format", "json");
formdata.append("ignorewarnings", "true");
formdata.append("filename", fileName);
formdata.append("token", mw.user.tokens.get( 'editToken' ) );
formdata.append("file", fileToUpload);
_this.parent().find('.simpleupload_btn').hide();
_this.parent().find('img.loading').show();
// As we now have created the data to send, we send it...
$.ajax( { //http://stackoverflow.com/questions/6974684/how-to-send-formdata-objects-with-ajax-requests-in-jquery
url: mw.util.wikiScript( 'api' ), //url to api.php
contentType:false,
processData:false,
type:'POST',
data: formdata,//the formdata object we created above
success:function( data ){
//do what you like, console logs are just for demonstration :-)
if ( !data.error ) {
input.val(fileName);
input.parent().find('img.simpleupload_prv').remove();
var imagePreviewURL = mw.config.get('wgArticlePath').replace( '$1', 'Special:Redirect/file/' + encodeURIComponent( input.val() ) );
imagePreviewURL += ( imagePreviewURL.indexOf('?') === -1 ) ? '?' : '&';
imagePreviewURL += 'width=100';
$('').insertAfter(input);
_this.parent().find('.simpleupload_btn').show().val( mw.message( 'pf_forminputs_change_file' ).text() );
_this.parent().find('img.loading').hide();
_this.parent().find('.simpleupload_rmv_btn').show();
} else {
window.alert("Error: " + data.error.info);
_this.parent().find('.simpleupload_btn').show().val( mw.message( 'pf-simpleupload' ).text() );
_this.parent().find('img.loading').hide();
}
},
error:function( xhr,status, error ){
window.alert('Something went wrong! Please check the log for errors');
_this.parent().find('.simpleupload_btn').show().val( mw.message( 'pf-simpleupload' ).text() );
_this.parent().find('img.loading').hide();
mw.log(error);
}
});
});
}( jQuery, mediaWiki, pf ) );