<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://www.mathepedia.wiki/w/index.php?action=history&amp;feed=atom&amp;title=MediaWiki%3ACommon.js</id>
	<title>MediaWiki:Common.js - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://www.mathepedia.wiki/w/index.php?action=history&amp;feed=atom&amp;title=MediaWiki%3ACommon.js"/>
	<link rel="alternate" type="text/html" href="https://www.mathepedia.wiki/w/index.php?title=MediaWiki:Common.js&amp;action=history"/>
	<updated>2026-07-22T18:13:19Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.45.1</generator>
	<entry>
		<id>https://www.mathepedia.wiki/w/index.php?title=MediaWiki:Common.js&amp;diff=244&amp;oldid=prev</id>
		<title>InfernalAtom683: Created page with &quot;/* Any JavaScript here will be loaded for all users on every page load. */  ( function ( mw, $ ) { 	&#039;use strict&#039;;  	var submissionPage = &#039;Project:Terminology submissions&#039;; 	var otherValue = &#039;__other__&#039;; 	var languages = [ 		&#039;English&#039;, 		&#039;Français&#039;, 		&#039;Deutsch&#039;, 		&#039;日本語&#039;, 		&#039;中文&#039;, 		&#039;Español&#039;, 		&#039;Italiano&#039;, 		&#039;Português&#039;, 		&#039;Ελληνικά&#039;, 		&#039;Русский&#039;, 		&#039;한국어&#039;, 		&#039;العربية&#039;, 		&#039;हिन्दी&#039;, 		&#039;Bahasa Indonesia&#039;, 		&#039;Nederlands&#039;,...&quot;</title>
		<link rel="alternate" type="text/html" href="https://www.mathepedia.wiki/w/index.php?title=MediaWiki:Common.js&amp;diff=244&amp;oldid=prev"/>
		<updated>2026-07-16T18:19:25Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;&lt;span class=&quot;autocomment&quot;&gt;Any JavaScript here will be loaded for all users on every page load.: &lt;/span&gt;  ( function ( mw, $ ) { 	&amp;#039;use strict&amp;#039;;  	var submissionPage = &amp;#039;Project:Terminology submissions&amp;#039;; 	var otherValue = &amp;#039;__other__&amp;#039;; 	var languages = [ 		&amp;#039;English&amp;#039;, 		&amp;#039;Français&amp;#039;, 		&amp;#039;Deutsch&amp;#039;, 		&amp;#039;日本語&amp;#039;, 		&amp;#039;中文&amp;#039;, 		&amp;#039;Español&amp;#039;, 		&amp;#039;Italiano&amp;#039;, 		&amp;#039;Português&amp;#039;, 		&amp;#039;Ελληνικά&amp;#039;, 		&amp;#039;Русский&amp;#039;, 		&amp;#039;한국어&amp;#039;, 		&amp;#039;العربية&amp;#039;, 		&amp;#039;हिन्दी&amp;#039;, 		&amp;#039;Bahasa Indonesia&amp;#039;, 		&amp;#039;Nederlands&amp;#039;,...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;/* Any JavaScript here will be loaded for all users on every page load. */&lt;br /&gt;
&lt;br /&gt;
( function ( mw, $ ) {&lt;br /&gt;
	&amp;#039;use strict&amp;#039;;&lt;br /&gt;
&lt;br /&gt;
	var submissionPage = &amp;#039;Project:Terminology submissions&amp;#039;;&lt;br /&gt;
	var otherValue = &amp;#039;__other__&amp;#039;;&lt;br /&gt;
	var languages = [&lt;br /&gt;
		&amp;#039;English&amp;#039;,&lt;br /&gt;
		&amp;#039;Français&amp;#039;,&lt;br /&gt;
		&amp;#039;Deutsch&amp;#039;,&lt;br /&gt;
		&amp;#039;日本語&amp;#039;,&lt;br /&gt;
		&amp;#039;中文&amp;#039;,&lt;br /&gt;
		&amp;#039;Español&amp;#039;,&lt;br /&gt;
		&amp;#039;Italiano&amp;#039;,&lt;br /&gt;
		&amp;#039;Português&amp;#039;,&lt;br /&gt;
		&amp;#039;Ελληνικά&amp;#039;,&lt;br /&gt;
		&amp;#039;Русский&amp;#039;,&lt;br /&gt;
		&amp;#039;한국어&amp;#039;,&lt;br /&gt;
		&amp;#039;العربية&amp;#039;,&lt;br /&gt;
		&amp;#039;हिन्दी&amp;#039;,&lt;br /&gt;
		&amp;#039;Bahasa Indonesia&amp;#039;,&lt;br /&gt;
		&amp;#039;Nederlands&amp;#039;,&lt;br /&gt;
		&amp;#039;Polski&amp;#039;,&lt;br /&gt;
		&amp;#039;Türkçe&amp;#039;,&lt;br /&gt;
		&amp;#039;Українська&amp;#039;,&lt;br /&gt;
		&amp;#039;Tiếng Việt&amp;#039;,&lt;br /&gt;
		&amp;#039;ไทย&amp;#039;&lt;br /&gt;
	];&lt;br /&gt;
&lt;br /&gt;
	function wrapNowiki( value ) {&lt;br /&gt;
		return &amp;#039;&amp;lt;nowiki&amp;gt;&amp;#039; + String( value ).replace( /&amp;lt;\/nowiki\s*&amp;gt;/gi, &amp;#039;&amp;amp;lt;/nowiki&amp;amp;gt;&amp;#039; ) + &amp;#039;&amp;lt;/nowiki&amp;gt;&amp;#039;;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function setStatus( form, message, type ) {&lt;br /&gt;
		var status = form.querySelector( &amp;#039;.terminology-form-status&amp;#039; );&lt;br /&gt;
		status.className = &amp;#039;terminology-form-status&amp;#039; +&lt;br /&gt;
			( type ? &amp;#039; terminology-form-status--&amp;#039; + type : &amp;#039;&amp;#039; );&lt;br /&gt;
		status.textContent = message;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function option( value, label, disabled, selected ) {&lt;br /&gt;
		var item = document.createElement( &amp;#039;option&amp;#039; );&lt;br /&gt;
		item.value = value;&lt;br /&gt;
		item.textContent = label;&lt;br /&gt;
		item.disabled = !!disabled;&lt;br /&gt;
		item.selected = !!selected;&lt;br /&gt;
		return item;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function initialiseForm( form ) {&lt;br /&gt;
		var controls, languageSelect, otherLanguage, translation, submit, term;&lt;br /&gt;
&lt;br /&gt;
		if ( form.getAttribute( &amp;#039;data-terminology-ready&amp;#039; ) === &amp;#039;yes&amp;#039; ) {&lt;br /&gt;
			return;&lt;br /&gt;
		}&lt;br /&gt;
		form.setAttribute( &amp;#039;data-terminology-ready&amp;#039;, &amp;#039;yes&amp;#039; );&lt;br /&gt;
&lt;br /&gt;
		term = form.querySelector( &amp;#039;.terminology-form-term&amp;#039; ).textContent.trim();&lt;br /&gt;
		controls = form.querySelector( &amp;#039;.terminology-form-controls&amp;#039; );&lt;br /&gt;
		controls.textContent = &amp;#039;&amp;#039;;&lt;br /&gt;
&lt;br /&gt;
		languageSelect = document.createElement( &amp;#039;select&amp;#039; );&lt;br /&gt;
		languageSelect.className = &amp;#039;terminology-language-select&amp;#039;;&lt;br /&gt;
		languageSelect.setAttribute( &amp;#039;aria-label&amp;#039;, &amp;#039;Language&amp;#039; );&lt;br /&gt;
		languageSelect.appendChild( option( &amp;#039;&amp;#039;, &amp;#039;Choose language&amp;#039;, true, true ) );&lt;br /&gt;
		languages.forEach( function ( language ) {&lt;br /&gt;
			languageSelect.appendChild( option( language, language ) );&lt;br /&gt;
		} );&lt;br /&gt;
		languageSelect.appendChild( option( otherValue, &amp;#039;Other language…&amp;#039; ) );&lt;br /&gt;
&lt;br /&gt;
		otherLanguage = document.createElement( &amp;#039;input&amp;#039; );&lt;br /&gt;
		otherLanguage.type = &amp;#039;text&amp;#039;;&lt;br /&gt;
		otherLanguage.className = &amp;#039;terminology-other-language&amp;#039;;&lt;br /&gt;
		otherLanguage.placeholder = &amp;#039;Language name&amp;#039;;&lt;br /&gt;
		otherLanguage.setAttribute( &amp;#039;aria-label&amp;#039;, &amp;#039;Other language name&amp;#039; );&lt;br /&gt;
		otherLanguage.hidden = true;&lt;br /&gt;
&lt;br /&gt;
		translation = document.createElement( &amp;#039;input&amp;#039; );&lt;br /&gt;
		translation.type = &amp;#039;text&amp;#039;;&lt;br /&gt;
		translation.className = &amp;#039;terminology-translation-input&amp;#039;;&lt;br /&gt;
		translation.placeholder = &amp;#039;Enter translation&amp;#039;;&lt;br /&gt;
		translation.setAttribute( &amp;#039;aria-label&amp;#039;, &amp;#039;Translation&amp;#039; );&lt;br /&gt;
&lt;br /&gt;
		submit = document.createElement( &amp;#039;button&amp;#039; );&lt;br /&gt;
		submit.type = &amp;#039;button&amp;#039;;&lt;br /&gt;
		submit.className = &amp;#039;terminology-translation-submit&amp;#039;;&lt;br /&gt;
		submit.textContent = &amp;#039;Submit translation&amp;#039;;&lt;br /&gt;
&lt;br /&gt;
		controls.appendChild( languageSelect );&lt;br /&gt;
		controls.appendChild( otherLanguage );&lt;br /&gt;
		controls.appendChild( translation );&lt;br /&gt;
		controls.appendChild( submit );&lt;br /&gt;
&lt;br /&gt;
		languageSelect.addEventListener( &amp;#039;change&amp;#039;, function () {&lt;br /&gt;
			otherLanguage.hidden = languageSelect.value !== otherValue;&lt;br /&gt;
			if ( !otherLanguage.hidden ) {&lt;br /&gt;
				otherLanguage.focus();&lt;br /&gt;
			}&lt;br /&gt;
		} );&lt;br /&gt;
&lt;br /&gt;
		submit.addEventListener( &amp;#039;click&amp;#039;, function () {&lt;br /&gt;
			var language = languageSelect.value === otherValue ?&lt;br /&gt;
				otherLanguage.value.trim() : languageSelect.value;&lt;br /&gt;
			var translatedTerm = translation.value.trim();&lt;br /&gt;
			var sourcePage = String( mw.config.get( &amp;#039;wgPageName&amp;#039; ) || &amp;#039;&amp;#039; ).replace( /_/g, &amp;#039; &amp;#039; );&lt;br /&gt;
			var sectionTitle;&lt;br /&gt;
			var sectionText;&lt;br /&gt;
&lt;br /&gt;
			if ( !language ) {&lt;br /&gt;
				setStatus( form, &amp;#039;Please choose or enter a language.&amp;#039;, &amp;#039;error&amp;#039; );&lt;br /&gt;
				languageSelect.focus();&lt;br /&gt;
				return;&lt;br /&gt;
			}&lt;br /&gt;
			if ( !translatedTerm ) {&lt;br /&gt;
				setStatus( form, &amp;#039;Please enter a translation.&amp;#039;, &amp;#039;error&amp;#039; );&lt;br /&gt;
				translation.focus();&lt;br /&gt;
				return;&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			sectionTitle = &amp;#039;Translation: &amp;#039; + term + &amp;#039; — &amp;#039; + language;&lt;br /&gt;
			sectionText =&lt;br /&gt;
				&amp;quot;* &amp;#039;&amp;#039;&amp;#039;Source page:&amp;#039;&amp;#039;&amp;#039; [[&amp;quot; + sourcePage + &amp;quot;]]\n&amp;quot; +&lt;br /&gt;
				&amp;quot;* &amp;#039;&amp;#039;&amp;#039;Term:&amp;#039;&amp;#039;&amp;#039; &amp;quot; + wrapNowiki( term ) + &amp;quot;\n&amp;quot; +&lt;br /&gt;
				&amp;quot;* &amp;#039;&amp;#039;&amp;#039;Language:&amp;#039;&amp;#039;&amp;#039; &amp;quot; + wrapNowiki( language ) + &amp;quot;\n&amp;quot; +&lt;br /&gt;
				&amp;quot;* &amp;#039;&amp;#039;&amp;#039;Translation:&amp;#039;&amp;#039;&amp;#039; &amp;quot; + wrapNowiki( translatedTerm ) + &amp;quot;\n&amp;quot; +&lt;br /&gt;
				&amp;quot;* &amp;#039;&amp;#039;&amp;#039;Submitted by:&amp;#039;&amp;#039;&amp;#039; [[User:InfernalAtom683|InfernalAtom683]] ([[User talk:InfernalAtom683|talk]]) 02:19, 17 July 2026 (CST)&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
			submit.disabled = true;&lt;br /&gt;
			setStatus( form, &amp;#039;Submitting…&amp;#039; );&lt;br /&gt;
&lt;br /&gt;
			new mw.Api().postWithToken( &amp;#039;csrf&amp;#039;, {&lt;br /&gt;
				action: &amp;#039;edit&amp;#039;,&lt;br /&gt;
				title: submissionPage,&lt;br /&gt;
				section: &amp;#039;new&amp;#039;,&lt;br /&gt;
				sectiontitle: sectionTitle,&lt;br /&gt;
				text: sectionText,&lt;br /&gt;
				summary: ( &amp;#039;New terminology translation: &amp;#039; + term + &amp;#039; (&amp;#039; + language + &amp;#039;)&amp;#039; ).slice( 0, 240 ),&lt;br /&gt;
				watchlist: &amp;#039;nochange&amp;#039;,&lt;br /&gt;
				formatversion: 2&lt;br /&gt;
			} ).done( function () {&lt;br /&gt;
				translation.value = &amp;#039;&amp;#039;;&lt;br /&gt;
				setStatus( form, &amp;#039;Translation submitted for review. Thank you!&amp;#039;, &amp;#039;success&amp;#039; );&lt;br /&gt;
			} ).fail( function ( code, data ) {&lt;br /&gt;
				var detail = data &amp;amp;&amp;amp; data.error &amp;amp;&amp;amp; data.error.info ? &amp;#039; &amp;#039; + data.error.info : &amp;#039;&amp;#039;;&lt;br /&gt;
				setStatus( form, &amp;#039;Submission failed.&amp;#039; + detail, &amp;#039;error&amp;#039; );&lt;br /&gt;
			} ).always( function () {&lt;br /&gt;
				submit.disabled = false;&lt;br /&gt;
			} );&lt;br /&gt;
		} );&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function initialiseTerminologyForms( $content ) {&lt;br /&gt;
		$content.find( &amp;#039;.terminology-translation-form&amp;#039; ).each( function () {&lt;br /&gt;
			initialiseForm( this );&lt;br /&gt;
		} );&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	mw.loader.using( &amp;#039;mediawiki.api&amp;#039; ).then( function () {&lt;br /&gt;
		mw.hook( &amp;#039;wikipage.content&amp;#039; ).add( initialiseTerminologyForms );&lt;br /&gt;
	} );&lt;br /&gt;
}( mediaWiki, jQuery ) );&lt;/div&gt;</summary>
		<author><name>InfernalAtom683</name></author>
	</entry>
</feed>