<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://ritchieboys.org/index.php?action=history&amp;feed=atom&amp;title=MediaWiki%3AUpload.js</id>
	<title>MediaWiki:Upload.js - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://ritchieboys.org/index.php?action=history&amp;feed=atom&amp;title=MediaWiki%3AUpload.js"/>
	<link rel="alternate" type="text/html" href="https://ritchieboys.org/index.php?title=MediaWiki:Upload.js&amp;action=history"/>
	<updated>2026-09-17T19:44:48Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.9</generator>
	<entry>
		<id>https://ritchieboys.org/index.php?title=MediaWiki:Upload.js&amp;diff=33146&amp;oldid=prev</id>
		<title>Admin: Upload form: guess soldier page and toggle profile vs document</title>
		<link rel="alternate" type="text/html" href="https://ritchieboys.org/index.php?title=MediaWiki:Upload.js&amp;diff=33146&amp;oldid=prev"/>
		<updated>2026-08-20T03:20:34Z</updated>

		<summary type="html">&lt;p&gt;Upload form: guess soldier page and toggle profile vs document&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;/**&lt;br /&gt;
 * Special:Upload helpers — guess soldier page from filename and toggle profile vs document options.&lt;br /&gt;
 */&lt;br /&gt;
$(function () {&lt;br /&gt;
	if (mw.config.get(&amp;#039;wgCanonicalSpecialPageName&amp;#039;) !== &amp;#039;Upload&amp;#039;) {&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	var PHOTO_EXT = /(\.(jpe?g|png|gif|webp))$/i;&lt;br /&gt;
	var DOC_EXT = /(\.(pdf|docx?|txt|rtf|odt|tiff?))$/i;&lt;br /&gt;
&lt;br /&gt;
	function field(name) {&lt;br /&gt;
		return $(&amp;#039;input[name=&amp;quot;wp&amp;#039; + name + &amp;#039;&amp;quot;], textarea[name=&amp;quot;wp&amp;#039; + name + &amp;#039;&amp;quot;]&amp;#039;);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	var $soldier = field(&amp;#039;RitchieSoldierPage&amp;#039;);&lt;br /&gt;
	var $profile = field(&amp;#039;RitchieProfilePhoto&amp;#039;);&lt;br /&gt;
	var $gallery = field(&amp;#039;RitchieAddGallery&amp;#039;);&lt;br /&gt;
	var $filename = $(&amp;#039;#wpUploadFile, input[name=&amp;quot;wpUploadFile&amp;quot;]&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
	if (!$soldier.length || !$filename.length) {&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function basename(path) {&lt;br /&gt;
		path = String(path || &amp;#039;&amp;#039;);&lt;br /&gt;
		var parts = path.replace(/\\/g, &amp;#039;/&amp;#039;).split(&amp;#039;/&amp;#039;);&lt;br /&gt;
		return parts[parts.length - 1] || &amp;#039;&amp;#039;;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function guessSoldier(name) {&lt;br /&gt;
		name = basename(name).replace(PHOTO_EXT, &amp;#039;&amp;#039;).replace(DOC_EXT, &amp;#039;&amp;#039;).replace(/_/g, &amp;#039; &amp;#039;).trim();&lt;br /&gt;
		var parts = name.split(/\s+/);&lt;br /&gt;
		if (parts.length &amp;lt; 2) {&lt;br /&gt;
			return $.Deferred().resolve(&amp;#039;&amp;#039;).promise();&lt;br /&gt;
		}&lt;br /&gt;
		var query = parts[1] + &amp;#039; &amp;#039; + parts[0];&lt;br /&gt;
		return $.getJSON(mw.util.wikiScript(&amp;#039;api&amp;#039;), {&lt;br /&gt;
			action: &amp;#039;query&amp;#039;,&lt;br /&gt;
			list: &amp;#039;search&amp;#039;,&lt;br /&gt;
			srsearch: query,&lt;br /&gt;
			srnamespace: 0,&lt;br /&gt;
			srlimit: 8,&lt;br /&gt;
			format: &amp;#039;json&amp;#039;&lt;br /&gt;
		}).then(function (data) {&lt;br /&gt;
			var hits = (data.query &amp;amp;&amp;amp; data.query.search) || [];&lt;br /&gt;
			var first = parts[0].toLowerCase();&lt;br /&gt;
			var last = parts[1].toLowerCase();&lt;br /&gt;
			for (var i = 0; i &amp;lt; hits.length; i++) {&lt;br /&gt;
				var title = hits[i].title || &amp;#039;&amp;#039;;&lt;br /&gt;
				var lower = title.toLowerCase();&lt;br /&gt;
				if (lower.indexOf(last) !== -1 &amp;amp;&amp;amp; lower.indexOf(first) !== -1 &amp;amp;&amp;amp; /\(\d{5,}\)/.test(title)) {&lt;br /&gt;
					return title;&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
			return hits.length ? hits[0].title : &amp;#039;&amp;#039;;&lt;br /&gt;
		});&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function refreshOptions() {&lt;br /&gt;
		var file = basename($filename.val());&lt;br /&gt;
		var isPhoto = PHOTO_EXT.test(file);&lt;br /&gt;
		var isDoc = DOC_EXT.test(file);&lt;br /&gt;
&lt;br /&gt;
		$profile.closest(&amp;#039;div&amp;#039;).toggle(isPhoto || !file);&lt;br /&gt;
		if (isDoc) {&lt;br /&gt;
			$profile.prop(&amp;#039;checked&amp;#039;, false);&lt;br /&gt;
			$gallery.prop(&amp;#039;checked&amp;#039;, true);&lt;br /&gt;
		} else if (isPhoto) {&lt;br /&gt;
			$gallery.prop(&amp;#039;checked&amp;#039;, false);&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		if (!file) {&lt;br /&gt;
			return;&lt;br /&gt;
		}&lt;br /&gt;
		guessSoldier(file).done(function (title) {&lt;br /&gt;
			if (title &amp;amp;&amp;amp; !$soldier.val()) {&lt;br /&gt;
				$soldier.val(title);&lt;br /&gt;
			}&lt;br /&gt;
			if (isPhoto &amp;amp;&amp;amp; title) {&lt;br /&gt;
				$profile.prop(&amp;#039;checked&amp;#039;, true);&lt;br /&gt;
			}&lt;br /&gt;
		});&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	$filename.on(&amp;#039;change input&amp;#039;, refreshOptions);&lt;br /&gt;
	refreshOptions();&lt;br /&gt;
});&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
</feed>