<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.you107657.duckdns.org/index.php?action=history&amp;feed=atom&amp;title=MediaWiki%3AGadgets%2FuploadMultipleFiles%2Fmain.js</id>
	<title>MediaWiki:Gadgets/uploadMultipleFiles/main.js - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.you107657.duckdns.org/index.php?action=history&amp;feed=atom&amp;title=MediaWiki%3AGadgets%2FuploadMultipleFiles%2Fmain.js"/>
	<link rel="alternate" type="text/html" href="https://wiki.you107657.duckdns.org/index.php?title=MediaWiki:Gadgets/uploadMultipleFiles/main.js&amp;action=history"/>
	<updated>2026-09-27T00:20:42Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.9</generator>
	<entry>
		<id>https://wiki.you107657.duckdns.org/index.php?title=MediaWiki:Gadgets/uploadMultipleFiles/main.js&amp;diff=12548&amp;oldid=prev</id>
		<title>imported&gt;Merge: merge.py</title>
		<link rel="alternate" type="text/html" href="https://wiki.you107657.duckdns.org/index.php?title=MediaWiki:Gadgets/uploadMultipleFiles/main.js&amp;diff=12548&amp;oldid=prev"/>
		<updated>2026-09-25T10:55:52Z</updated>

		<summary type="html">&lt;p&gt;merge.py&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 10:55, 25 September 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;4&quot; class=&quot;diff-notice&quot; lang=&quot;en&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(No difference)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;!-- diff cache key tensura:diff:1.41:old-4731:rev-12548 --&gt;
&lt;/table&gt;</summary>
		<author><name>imported&gt;Merge</name></author>
	</entry>
	<entry>
		<id>https://wiki.you107657.duckdns.org/index.php?title=MediaWiki:Gadgets/uploadMultipleFiles/main.js&amp;diff=4731&amp;oldid=prev</id>
		<title>imported&gt;Merge: merge.py</title>
		<link rel="alternate" type="text/html" href="https://wiki.you107657.duckdns.org/index.php?title=MediaWiki:Gadgets/uploadMultipleFiles/main.js&amp;diff=4731&amp;oldid=prev"/>
		<updated>2026-09-25T10:55:52Z</updated>

		<summary type="html">&lt;p&gt;merge.py&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;/* Modified version of https://dev.fandom.com/wiki/UploadMultipleFiles&lt;br /&gt;
 * from https://terraria.wiki.gg/wiki/MediaWiki:Gadget-uploadMultipleFiles.js */&lt;br /&gt;
mw.loader.using([&amp;quot;site&amp;quot;, &amp;quot;mediawiki.util&amp;quot;]).then(function() {&lt;br /&gt;
	if (mw.config.get(&amp;quot;wgCanonicalSpecialPageName&amp;quot;) !== &amp;quot;Upload&amp;quot;)&lt;br /&gt;
		return;&lt;br /&gt;
	&lt;br /&gt;
	if (window.__wgg_UploadMultipleFiles_IsLoaded) {&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
	window.__wgg_UploadMultipleFiles_IsLoaded = true;&lt;br /&gt;
&lt;br /&gt;
	var l10nFactory = l10nFactory || function($lang, $data) {&lt;br /&gt;
		return function ($key) {&lt;br /&gt;
			// (null == undefined) is true, (null === undefined) is false&lt;br /&gt;
			return ($data[$lang] &amp;amp;&amp;amp; $data[$lang][$key] != null) ? $data[$lang][$key] : $data.en[$key];&lt;br /&gt;
		};&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	const l10n = l10nFactory(mw.config.get(&amp;quot;wgUserLanguage&amp;quot;), {&lt;br /&gt;
		en: {&lt;br /&gt;
			multiupload: &amp;quot;Upload multiple files:&amp;quot;,&lt;br /&gt;
			yes: &amp;quot;Yes&amp;quot;,&lt;br /&gt;
			no: &amp;quot;No&amp;quot;,&lt;br /&gt;
			sourcefiles: &amp;quot;Source files:&amp;quot;,&lt;br /&gt;
			categoryname: &amp;quot;Category name:&amp;quot;,&lt;br /&gt;
			categorynamehint: &amp;quot;Page name of the category the files will automatically be added to, e.g. Item images&amp;quot;,&lt;br /&gt;
			categorynamespace: &amp;quot;Category&amp;quot;,&lt;br /&gt;
			uploadfiles: &amp;quot;Upload files&amp;quot;,&lt;br /&gt;
			nofiles: &amp;quot;Please select some files first.&amp;quot;,&lt;br /&gt;
			nolicense: &amp;quot;Please select a valid license first.&amp;quot;,&lt;br /&gt;
			summary: &amp;quot;Summary&amp;quot;,&lt;br /&gt;
			license: &amp;quot;Licensing&amp;quot;,&lt;br /&gt;
			categories: &amp;quot;Categories&amp;quot;,&lt;br /&gt;
			uploading: &amp;quot;Uploading files...&amp;quot;,&lt;br /&gt;
			uploaded: &amp;quot;Uploaded:&amp;quot;,&lt;br /&gt;
			failed: &amp;quot;Failed:&amp;quot;,&lt;br /&gt;
			done: &amp;quot;Done.&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
	});&lt;br /&gt;
&lt;br /&gt;
	const getUploadDescription = function() {&lt;br /&gt;
		var sections = [];&lt;br /&gt;
&lt;br /&gt;
		var summary = $(&amp;quot;#wpUploadDescription&amp;quot;).val();&lt;br /&gt;
		var licenseDisplayName = $(&amp;quot;#wpLicense option:selected&amp;quot;).val();&lt;br /&gt;
		var categoryName = $(&amp;quot;#multiFileCategory&amp;quot;).val();&lt;br /&gt;
&lt;br /&gt;
		if (summary !== &amp;quot;&amp;quot;)&lt;br /&gt;
			sections.push(summary);&lt;br /&gt;
&lt;br /&gt;
		if (licenseDisplayName !== &amp;quot;&amp;quot;) {&lt;br /&gt;
			var licenseTemplateText = $(&amp;quot;#wpLicense option:selected&amp;quot;).prop(&amp;quot;title&amp;quot;);&lt;br /&gt;
			sections.push(&amp;quot;== &amp;quot; + l10n(&amp;quot;license&amp;quot;) + &amp;quot; ==\n&amp;quot; + licenseTemplateText);&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		if (categoryName !== &amp;quot;&amp;quot;)&lt;br /&gt;
			sections.push(&amp;quot;[[&amp;quot; + l10n(&amp;quot;categorynamespace&amp;quot;) + &amp;quot;:&amp;quot; + categoryName + &amp;quot;]]&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
		return sections.join(&amp;quot;\n\n&amp;quot;);&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	const getWatchlistPreference = function() {&lt;br /&gt;
		if ($(&amp;quot;#wpWatchthis&amp;quot;).is(&amp;quot;:checked&amp;quot;)) {&lt;br /&gt;
			return &amp;quot;watch&amp;quot;;&lt;br /&gt;
		} else {&lt;br /&gt;
			return &amp;quot;nochange&amp;quot;;&lt;br /&gt;
		}&lt;br /&gt;
	};&lt;br /&gt;
	&lt;br /&gt;
	$(function(){&lt;br /&gt;
		$(&amp;quot;#wpUploadFile&amp;quot;).parent().parent().addClass(&amp;quot;regularFileSelect&amp;quot;);&lt;br /&gt;
		$(&amp;quot;tr.regularFileSelect&amp;quot;).before(&amp;#039;&amp;lt;tr&amp;gt;&amp;lt;td class=&amp;quot;mw-label&amp;quot;&amp;gt;&amp;#039;+ l10n(&amp;quot;multiupload&amp;quot;) + &amp;#039;&amp;lt;/td&amp;gt;&amp;lt;td class=&amp;quot;mw-input&amp;quot;&amp;gt;&amp;lt;label&amp;gt;&amp;lt;input type=&amp;quot;radio&amp;quot; name=&amp;quot;multipleFiles&amp;quot; value=&amp;quot;&amp;#039;+ l10n(&amp;quot;yes&amp;quot;) + &amp;#039;&amp;quot; /&amp;gt; &amp;#039;+ l10n(&amp;quot;yes&amp;quot;) + &amp;#039;&amp;lt;/label&amp;gt; &amp;amp;nbsp; &amp;lt;label&amp;gt;&amp;lt;input type=&amp;quot;radio&amp;quot; name=&amp;quot;multipleFiles&amp;quot; value=&amp;quot;&amp;#039;+ l10n(&amp;quot;no&amp;quot;) + &amp;#039;&amp;quot; checked=&amp;quot;&amp;quot; /&amp;gt; &amp;#039;+ l10n(&amp;quot;no&amp;quot;) + &amp;#039;&amp;lt;/label&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;#039;);&lt;br /&gt;
		$(&amp;quot;tr.regularFileSelect&amp;quot;).after(&amp;#039;&amp;lt;tr class=&amp;quot;multipleFileSelect&amp;quot; style=&amp;quot;display:none;&amp;quot;&amp;gt;&amp;lt;td class=&amp;quot;mw-label&amp;quot;&amp;gt;&amp;#039; + l10n(&amp;quot;sourcefiles&amp;quot;) + &amp;#039;&amp;lt;/td&amp;gt;&amp;lt;td class=&amp;quot;mw-input&amp;quot;&amp;gt;&amp;lt;input type=&amp;quot;file&amp;quot; id=&amp;quot;multiupload&amp;quot; multiple /&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;#039;);&lt;br /&gt;
		$(&amp;quot;input[name=&amp;#039;wpUpload&amp;#039;]&amp;quot;).addClass(&amp;quot;regularFileSelect&amp;quot;);&lt;br /&gt;
		$(&amp;quot;#wpDestFile&amp;quot;).parent().parent().addClass(&amp;quot;regularFileSelect&amp;quot;);&lt;br /&gt;
		$(&amp;quot;#wpIgnoreWarning&amp;quot;).parent().parent().addClass(&amp;quot;regularFileSelect&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
		// Append &amp;quot;category name&amp;quot; textbox to multiupload section&lt;br /&gt;
		$(&amp;quot;#mw-upload-form #mw-htmlform-description tbody&amp;quot;).append(&amp;#039;&amp;lt;tr class=&amp;quot;mw-htmlform-field-HTMLTextField multipleFileSelect&amp;quot; style=&amp;quot;display:none;&amp;quot;&amp;gt;&amp;lt;td class=&amp;quot;mw-label&amp;quot;&amp;gt;&amp;lt;label for=&amp;quot;multiFileCategory&amp;quot;&amp;gt;&amp;lt;abbr title=&amp;quot;&amp;#039; + l10n(&amp;quot;categorynamehint&amp;quot;) + &amp;#039;&amp;quot;&amp;gt;&amp;#039; + l10n(&amp;quot;categoryname&amp;quot;) + &amp;#039;&amp;lt;/abbr&amp;gt;&amp;lt;/label&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td class=&amp;quot;mw-input&amp;quot;&amp;gt;&amp;lt;input id=&amp;quot;multiFileCategory&amp;quot; name=&amp;quot;multiFileCategory&amp;quot; size=&amp;quot;60&amp;quot;&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
		$(&amp;quot;input[name=&amp;#039;wpUpload&amp;#039;]&amp;quot;).after(&amp;#039;&amp;lt;input type=&amp;quot;button&amp;quot; value=&amp;quot;&amp;#039; + l10n(&amp;quot;uploadfiles&amp;quot;) + &amp;#039;&amp;quot; class=&amp;quot;multipleFileSelect&amp;quot; style=&amp;quot;display:none;&amp;quot; id=&amp;quot;multiFileSubmit&amp;quot; /&amp;gt;&amp;#039;);&lt;br /&gt;
		$(&amp;quot;input[name=&amp;#039;multipleFiles&amp;#039;]&amp;quot;).change(function() {&lt;br /&gt;
			if (this.value === l10n(&amp;quot;yes&amp;quot;)) {&lt;br /&gt;
				$(&amp;quot;.regularFileSelect&amp;quot;).hide();&lt;br /&gt;
				$(&amp;quot;.multipleFileSelect&amp;quot;).show();&lt;br /&gt;
			} else {&lt;br /&gt;
				$(&amp;quot;.regularFileSelect&amp;quot;).show();&lt;br /&gt;
				$(&amp;quot;.multipleFileSelect&amp;quot;).hide();&lt;br /&gt;
			}&lt;br /&gt;
		});&lt;br /&gt;
&lt;br /&gt;
		$(&amp;quot;#multiFileSubmit&amp;quot;).click(function() {&lt;br /&gt;
			var files = $(&amp;quot;#multiupload&amp;quot;)[0].files;&lt;br /&gt;
&lt;br /&gt;
			// Cancel upload if no files are selected&lt;br /&gt;
			if (files.length === 0) {&lt;br /&gt;
				alert(l10n(&amp;quot;nofiles&amp;quot;));&lt;br /&gt;
				return false;&lt;br /&gt;
			}&lt;br /&gt;
			// Cancel upload if no license is selected&lt;br /&gt;
			if ($(&amp;quot;#wpLicense option:selected&amp;quot;).val() === &amp;quot;&amp;quot; &amp;amp;&amp;amp; !mw.config.get(&amp;quot;UMFBypassLicenseCheck&amp;quot;)) {&lt;br /&gt;
				alert(l10n(&amp;quot;nolicense&amp;quot;));&lt;br /&gt;
				return false;&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			// Description is summary + license + category&lt;br /&gt;
			var description = getUploadDescription();&lt;br /&gt;
			var watch = getWatchlistPreference();&lt;br /&gt;
&lt;br /&gt;
			$(&amp;quot;#firstHeading&amp;quot;).text(l10n(&amp;quot;uploading&amp;quot;));&lt;br /&gt;
			$(&amp;quot;#mw-content-text&amp;quot;).html(&amp;quot;&amp;lt;h3&amp;gt;&amp;quot; + l10n(&amp;quot;uploaded&amp;quot;)  + &amp;quot;&amp;lt;/h3&amp;gt;&amp;lt;ul&amp;gt;&amp;lt;/ul&amp;gt;&amp;lt;div style=&amp;#039;display:none;&amp;#039; id=&amp;#039;multiUploadFailed&amp;#039;&amp;gt;&amp;lt;h3&amp;gt;&amp;quot; + l10n(&amp;quot;failed&amp;quot;) + &amp;quot;&amp;lt;/h3&amp;gt;&amp;lt;ul&amp;gt;&amp;lt;/ul&amp;gt;&amp;lt;/div&amp;gt;&amp;quot;);&lt;br /&gt;
			&lt;br /&gt;
			var currentFileIdx = 0;&lt;br /&gt;
			var uploadCurrentFile;&lt;br /&gt;
			uploadCurrentFile = function() {&lt;br /&gt;
				if (currentFileIdx &amp;gt; files.length) {&lt;br /&gt;
					$(&amp;quot;#mw-content-text&amp;quot;).append(&amp;quot;&amp;lt;h3&amp;gt;&amp;quot;+ l10n(&amp;quot;done&amp;quot;) + &amp;quot;&amp;lt;/h3&amp;gt;&amp;quot;);&lt;br /&gt;
					return;&lt;br /&gt;
				}&lt;br /&gt;
&lt;br /&gt;
				if (files[currentFileIdx] === undefined) {&lt;br /&gt;
					currentFileIdx++;&lt;br /&gt;
					uploadCurrentFile();&lt;br /&gt;
					return;&lt;br /&gt;
				}&lt;br /&gt;
&lt;br /&gt;
				fd = new FormData();&lt;br /&gt;
				fd.append(&amp;quot;action&amp;quot;, &amp;quot;upload&amp;quot;);&lt;br /&gt;
				fd.append(&amp;quot;token&amp;quot;, mw.user.tokens.get(&amp;quot;csrfToken&amp;quot;));&lt;br /&gt;
				fd.append(&amp;quot;filename&amp;quot;, files[currentFileIdx].name);&lt;br /&gt;
				fd.append(&amp;quot;file&amp;quot;, files[currentFileIdx]);&lt;br /&gt;
				fd.append(&amp;quot;text&amp;quot;, description);&lt;br /&gt;
				fd.append(&amp;quot;watchlist&amp;quot;, watch);&lt;br /&gt;
				fd.append(&amp;quot;ignorewarnings&amp;quot;, 1);&lt;br /&gt;
				fd.append(&amp;quot;format&amp;quot;, &amp;quot;json&amp;quot;);&lt;br /&gt;
				&lt;br /&gt;
				$.ajax({&lt;br /&gt;
					url: mw.util.wikiScript(&amp;quot;api&amp;quot;),&lt;br /&gt;
					method: &amp;quot;POST&amp;quot;,&lt;br /&gt;
					data: fd,&lt;br /&gt;
					cache: false,&lt;br /&gt;
					contentType: false,&lt;br /&gt;
					processData: false,&lt;br /&gt;
					type: &amp;quot;POST&amp;quot;&lt;br /&gt;
				}).done(function(d) {&lt;br /&gt;
					if (d.error == undefined) {&lt;br /&gt;
						$(&amp;quot;#mw-content-text &amp;gt; ul&amp;quot;).append(&amp;#039;&amp;lt;li&amp;gt;&amp;lt;a href=&amp;quot;&amp;#039; + d.upload.imageinfo.descriptionurl + &amp;#039;&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;&amp;#039; + d.upload.filename + &amp;#039;&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&amp;#039;);&lt;br /&gt;
					} else {&lt;br /&gt;
						$(&amp;quot;#multiUploadFailed ul&amp;quot;).append(&amp;#039;&amp;lt;li&amp;gt;&amp;#039; + files[currentFileIdx].name + &amp;#039;&amp;lt;/li&amp;gt;&amp;#039;);&lt;br /&gt;
						$(&amp;quot;#multiUploadFailed&amp;quot;).show();&lt;br /&gt;
					}&lt;br /&gt;
					currentFileIdx++;&lt;br /&gt;
					uploadCurrentFile();&lt;br /&gt;
				}).fail(function() {&lt;br /&gt;
					$(&amp;quot;#multiUploadFailed ul&amp;quot;).append(&amp;#039;&amp;lt;li&amp;gt;&amp;#039; + files[currentFileIdx].name + &amp;#039;&amp;lt;/li&amp;gt;&amp;#039;);&lt;br /&gt;
					$(&amp;quot;#multiUploadFailed&amp;quot;).show();&lt;br /&gt;
					currentFileIdx++;&lt;br /&gt;
					uploadCurrentFile();&lt;br /&gt;
				});&lt;br /&gt;
			};&lt;br /&gt;
			uploadCurrentFile();&lt;br /&gt;
		});&lt;br /&gt;
	});&lt;br /&gt;
});&lt;/div&gt;</summary>
		<author><name>imported&gt;Merge</name></author>
	</entry>
</feed>