MediaWiki:Gadget-multiupload.js

// Author: pcj

mw.loader.using(['site']).then(function {	i18n = {		specialpage: "Special:Upload",		multiupload: "Upload multiple files:",		yes: "Yes",		no: "No",		sourcefiles: "Source files:",		uploadfiles: "Upload files",		nofiles: "Please select some files first.",		nolicense: "Please select a valid license first.",		summary: "Summary",		license: "License",		uploading: "Uploading files...",		uploaded: "Uploaded:",		failed: "Failed:",		done: "Done."	};	if (mw.config.get("wgPageName")!==i18n.specialpage) return;		$("#wpUploadFile").parent.parent.addClass("regularFileSelect");	$("tr.regularFileSelect").before(' '+i18n.multiupload+'   '+i18n.yes+'   '+i18n.no+'  ');	$("tr.regularFileSelect").after(''+i18n.sourcefiles+'   '); $("input[name='wpUpload']").addClass("regularFileSelect"); $("#wpDestFile").parent.parent.addClass("regularFileSelect"); $("#wpIgnoreWarning").parent.parent.addClass("regularFileSelect"); $("span.mw-htmlform-submit-buttons").append(''); $("input[name='multipleFiles']").change(function{		if (this.value===i18n.yes) {			$(".regularFileSelect").hide;			$(".multipleFileSelect").show;		}		else {			$(".regularFileSelect").show;			$(".multipleFileSelect").hide;		}	}); $("#multiFileSubmit").click(function {		files = $("#multiupload")[0].files;		if (files.length === 0) {			alert(i18n.nofiles);			return false;		}		if ($("#wpLicense option:selected").val === "") {			alert(i18n.nolicense);			return false;		}		summary = $("#wpUploadDescription").val;		if (summary !== "") summary = "== "+i18n.summary+" ==\n"+summary;		license = "== "+i18n.license+" ==\n"+$("#wpLicense option:selected").prop("title");		text = summary + "\n" + license;		watch = "preferences";		if ($("#wpWatchthis").is(":checked")) watch = "watch";		else watch = "nochange";		curFile = 0;		$("#firstHeading").text(i18n.uploading);		$("#mw-content-text").html(" "+i18n.uploaded+"  "+i18n.failed+"  ");		function gNF {			if(curFile>files.length) {				$("#mw-content-text").append(" "+i18n.done+" ");				return;			}	       if(files[curFile] === undefined) {                curFile++; gNF; return; }			$.ajax({url:'/api.php',data:{action:'query',meta:'tokens',format:'json'},dataType:'json'}).done(function(data) {				fd = new FormData;				fd.append("action","upload");				fd.append("token",data.query.tokens.csrftoken);				fd.append("filename",files[curFile].name);				fd.append("file",files[curFile]);				fd.append("text",text);				fd.append("watchlist",watch);				fd.append("ignorewarnings",1);				fd.append("format","json");				$.ajax({ url:'/api.php', method:'POST', data:fd, cache:false, contentType:false, processData:false, type:'POST' }).done(function(d){ $("#mw-content-text > ul").append(''+d.upload.filename+'</li>'); curFile++; gNF; }).fail(function(d) { $("#multiUploadFailed ul").append('<li>'+files[curFile].name+'</li>'); $("#multiUploadFailed").show; curFile++; gNF; });		   });		}		gNF; }); });