Difference between revisions of "MediaWiki:Gadget-multiupload.js"

From Dream Cancel Wiki
Jump to navigation Jump to search
m (1 revision imported)
Line 1: Line 1:
mw.loader.using(['site']).then(function() {
mw.loader.using(['site', 'mediawiki.util']).then(function() {
i18n = {
i18n = {
multiupload: "Upload multiple files:",
multiupload: "Upload multiple files:",
yes: "Yes",
yes: "Yes",
no: "No",
no: "No",
warning: "Note:",
note: " Please ensure files are named properly. The multiple file upload will overwrite any files with the same name without warning.",
sourcefiles: "Source files:",
sourcefiles: "Source files:",
uploadfiles: "Upload files",
uploadfiles: "Upload files",
Line 11: Line 9:
nolicense: "Please select a valid license first.",
nolicense: "Please select a valid license first.",
summary: "Summary",
summary: "Summary",
license: "License",
license: "Licensing",
uploading: "Uploading files...",
uploading: "Uploading files...",
uploaded: "Uploaded:",
uploaded: "Uploaded:",
Line 20: Line 18:
$("#wpUploadFile").parent().parent().addClass("regularFileSelect");
$("#wpUploadFile").parent().parent().addClass("regularFileSelect");
$("tr.regularFileSelect").before('<tr><td class="mw-label">'+i18n.multiupload+'</td><td class="mw-input"><label><input type="radio" name="multipleFiles" value="'+i18n.yes+'" /> '+i18n.yes+'</label> &nbsp; <label><input type="radio" name="multipleFiles" value="'+i18n.no+'" checked="" /> '+i18n.no+'</label></td></tr>');
$("tr.regularFileSelect").before('<tr><td class="mw-label">'+i18n.multiupload+'</td><td class="mw-input"><label><input type="radio" name="multipleFiles" value="'+i18n.yes+'" /> '+i18n.yes+'</label> &nbsp; <label><input type="radio" name="multipleFiles" value="'+i18n.no+'" checked="" /> '+i18n.no+'</label></td></tr>');
$("tr.regularFileSelect").before('<tr class="multipleFileSelect" style="display:none;"><td class="mw-label" style="font-weight:bold; color:red;">'+i18n.warning+'</td><td style="color:red;">'+i18n.note+'</td></tr>');
$("tr.regularFileSelect").after('<tr class="multipleFileSelect" style="display:none;"><td class="mw-label">'+i18n.sourcefiles+'</td><td class="mw-input"><input type="file" id="multiupload" multiple /></td></tr>');
$("tr.regularFileSelect").after('<tr class="multipleFileSelect" style="display:none;"><td class="mw-label">'+i18n.sourcefiles+'</td><td class="mw-input"><input type="file" id="multiupload" multiple /></td></tr>');
$("input[name='wpUpload']").addClass("regularFileSelect");
$("input[name='wpUpload']").addClass("regularFileSelect");
$("#wpDestFile").parent().parent().addClass("regularFileSelect");
$("#wpDestFile").parent().parent().addClass("regularFileSelect");
$("#wpIgnoreWarning").parent().parent().addClass("regularFileSelect");
$("#wpIgnoreWarning").parent().parent().addClass("regularFileSelect");
$("span.mw-htmlform-submit-buttons").append('<input type="button" value="'+i18n.uploadfiles+'" class="multipleFileSelect" style="display:none;" id="multiFileSubmit" />');
$("input[name='wpUpload']").after('<input type="button" value="'+i18n.uploadfiles+'" class="multipleFileSelect" style="display:none;" id="multiFileSubmit" />');
$("input[name='multipleFiles']").change(function(){
$("input[name='multipleFiles']").change(function(){
if (this.value===i18n.yes) {
if (this.value===i18n.yes) {
Line 61: Line 58:
return;
return;
}
}
        if(files[curFile] === undefined) {
if(files[curFile] === undefined) {
                curFile++;
curFile++;
                gNF();
gNF();
                return;
return;
        }
}
$.ajax({url:'/api.php',data:{action:'query',meta:'tokens',format:'json'},dataType:'json'}).done(function(data) {
fd = new FormData();
fd = new FormData();
fd.append("action","upload");
fd.append("action","upload");
fd.append("token",mw.user.tokens.get('editToken'));
fd.append("token",data.query.tokens.csrftoken);
fd.append("filename",files[curFile].name);
fd.append("filename",files[curFile].name);
fd.append("file",files[curFile]);
fd.append("file",files[curFile]);
fd.append("text",text);
fd.append("text",text);
fd.append("watchlist",watch);
fd.append("watchlist",watch);
fd.append("ignorewarnings",1);
fd.append("ignorewarnings",1);
fd.append("format","json");
fd.append("format","json");
$.ajax({
$.ajax({
url: mw.util.wikiScript('api'),
url:'/api.php',
method:'POST',
method:'POST',
data:fd,
data:fd,
cache:false,
cache:false,
contentType:false,
contentType:false,
processData:false,
processData:false,
type:'POST'
type:'POST'
}).done(function(d){
      }).done(function(d){
if (d.error === undefined) {
      if (d.error == undefined) {
$("#mw-content-text > ul").append('<li><a href="'+d.upload.imageinfo.descriptionurl+'" target="_blank">'+d.upload.filename+'</a></li>');
      $("#mw-content-text > ul").append('<li><a href="'+d.upload.imageinfo.descriptionurl+'" target="_blank">'+d.upload.filename+'</a></li>');
}
      }
else {
      else {
$("#multiUploadFailed ul").append('<li>'+files[curFile].name+'</li>');
      $("#multiUploadFailed ul").append('<li>'+files[curFile].name+'</li>');
$("#multiUploadFailed").show();
        $("#multiUploadFailed").show();
}
      }
curFile++;
curFile++;
gNF();
gNF();
}).fail(function(d) {
        }).fail(function(d) {
$("#multiUploadFailed ul").append('<li>'+files[curFile].name+'</li>');
        $("#multiUploadFailed ul").append('<li>'+files[curFile].name+'</li>');
$("#multiUploadFailed").show();
        $("#multiUploadFailed").show();
curFile++;
        curFile++;
gNF();
        gNF();
});
        });
    });
}
}
gNF();
gNF();
});
});
});
});

Revision as of 16:03, 18 April 2021

mw.loader.using(['site', 'mediawiki.util']).then(function() {
	i18n = {
		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: "Licensing",
		uploading: "Uploading files...",
		uploaded: "Uploaded:",
		failed: "Failed:",
		done: "Done."
	};
	if (mw.config.get("wgCanonicalSpecialPageName")!=="Upload") return;	
	$("#wpUploadFile").parent().parent().addClass("regularFileSelect");
	$("tr.regularFileSelect").before('<tr><td class="mw-label">'+i18n.multiupload+'</td><td class="mw-input"><label><input type="radio" name="multipleFiles" value="'+i18n.yes+'" /> '+i18n.yes+'</label> &nbsp; <label><input type="radio" name="multipleFiles" value="'+i18n.no+'" checked="" /> '+i18n.no+'</label></td></tr>');
	$("tr.regularFileSelect").after('<tr class="multipleFileSelect" style="display:none;"><td class="mw-label">'+i18n.sourcefiles+'</td><td class="mw-input"><input type="file" id="multiupload" multiple /></td></tr>');
	$("input[name='wpUpload']").addClass("regularFileSelect");
	$("#wpDestFile").parent().parent().addClass("regularFileSelect");
	$("#wpIgnoreWarning").parent().parent().addClass("regularFileSelect");
	$("input[name='wpUpload']").after('<input type="button" value="'+i18n.uploadfiles+'" class="multipleFileSelect" style="display:none;" id="multiFileSubmit" />');
	$("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("<h3>"+i18n.uploaded+"</h3><ul></ul><div style='display:none;' id='multiUploadFailed'><h3>"+i18n.failed+"</h3><ul></ul></div>");
		function gNF() {
			if(curFile>files.length) {
				$("#mw-content-text").append("<h3>"+i18n.done+"</h3>");
				return;
			}
			if(files[curFile] === undefined) {
				curFile++;
				gNF();
				return;
			}
			fd = new FormData();
			fd.append("action","upload");
			fd.append("token",mw.user.tokens.get('editToken'));
			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: mw.util.wikiScript('api'),
				method:'POST',
				data:fd,
				cache:false,
				contentType:false,
				processData:false,
				type:'POST'
			}).done(function(d){
				if (d.error === undefined) {
					$("#mw-content-text > ul").append('<li><a href="'+d.upload.imageinfo.descriptionurl+'" target="_blank">'+d.upload.filename+'</a></li>');
				}
				else {
					$("#multiUploadFailed ul").append('<li>'+files[curFile].name+'</li>');
				$("#multiUploadFailed").show();
				}
				curFile++;
				gNF();
			}).fail(function(d) {
				$("#multiUploadFailed ul").append('<li>'+files[curFile].name+'</li>');
				$("#multiUploadFailed").show();
				curFile++;
				gNF();
			});
		}
		gNF();
	});
});