MediaWiki:MainPages.js

From Wikimedia Commons, the free media repository
Jump to navigation Jump to search
Note: After saving, you have to bypass your browser's cache to see the changes. Internet Explorer: press Ctrl-F5, Mozilla: hold down Shift while clicking Reload (or press Ctrl-Shift-R), Opera/Konqueror: press F5, Safari: hold down Shift + Alt while clicking Reload, Chrome: hold down Shift while clicking Reload.
/**
 * MainPages.js
 *
 * - Add the "mw-mainpage" class to the <html> element. This is for a small number of
 *   sitewide styles on [[MediaWiki:Common.css]] that cannot be converted to use TemplateStyles
 *   and yet should apply to all custom Main Pages without having to maintain duplicate .page-Pagename
 *   selectors there.
 *
 * - Change the content tab on local Main Pages from "Gallery" (or "Page") to "Main page".
 *   For the default [[Main Page]] this happens automatically via [[MediaWiki:mainpage-nstab]]
 *   and [[MediaWiki:nstab-main]]. But this does not work for the custom Main Pages on Commons.
 */
/* global mw, $ */
(function () {
	'use strict';
	var conf = mw.config.get([
		'wgNamespaceNumber',
		'wgUserLanguage',
		'wgTitle'
	]);

	// List of all main page titles on Commons. Copied from [[Template:Lang-mp]] / [[Module:MainPages]].
	var localizedMainPageTitles = [
		'Tuisblad',
		'Houptsyte',
		'Portalada',
		'Hēafodtramet',
		'मुख्य पृष्ठ (anp)',
		'الصفحة الرئيسية',
		'Entamu',
		'БетӀераб гьумер',
		'Hauptsaitn',
		'Першая старонка',
		'Галоўная старонка',
		'Начална страница',
		'मुख्य पन्ना',
		'Tungkaran Tatambaian',
		'প্রধান পাতা',
		'Degemer',
		'Početna strana',
		'Pàgina principal',
		'Tàu-hiĕk',
		'دەستپێک',
		'Hlavní strana',
		'Hafan',
		'Forside',
		'Hauptseite',
		'Pela Seri',
		'Κύρια Σελίδα',
		'Main Page',
		'Ĉefpaĝo',
		'Portada',
		'Esileht',
		'Azala',
		'Páhina prencipal',
		'صفحهٔ اصلی',
		'Etusivu',
		'Forsíða/fo',
		'Accueil',
		'Haadside',
		'Príomhleathanach',
		'Portada galega',
		'Κυρία Δέλτος',
		'મુખપૃષ્ઠ',
		'Thèu-ya̍p',
		'עמוד ראשי',
		'मुखपृष्ठ (hi)',
		'Glavna stranica',
		'Hłowna strona',
		'Kezdőlap',
		'Գլխավոր Էջ',
		'Pagina principal',
		'Halaman Utama',
		'Principal págine',
		'Forsíða/is',
		'Pagina principale',
		'メインページ',
		'Kaca Utama',
		'მთავარი გვერდი',
		'Басты бет',
		'ទំព័រដើម',
		'ಮುಖ್ಯ ಪುಟ',
		'대문',
		'첫페지',
		'Destpêk',
		'Pagina prima',
		'Haaptsäit',
		'Pagrindinis puslapis',
		'Sākumlapa',
		'सम्मुख पन्ना',
		'Fandraisana',
		'Главна страница',
		'പ്രധാന താൾ',
		'मुखपृष्ठ (mr)',
		'Laman Utama',
		'Il-Paġna prinċipali',
		'Páigina percipal',
		'ဗဟိုစာမျက်နှာ',
		'گت ولگ',
		'Calīxatl',
		'Paggena prencepale',
		'Hööftsiet',
		'Vöärblad',
		'मुख्य पृष्ठ',
		'Hoofdpagina',
		'Hovudside',
		'Hovedside',
		'Acuèlh',
		'ପ୍ରଧାନ ପୃଷ୍ଠା',
		'Сæйраг фарс',
		'ਮੁੱਖ ਸਫ਼ਾ',
		'Pamuklat',
		'Pache picarte',
		'Strona główna',
		'لومړی مخ',
		'Página principal',
		'Qhapaq p\'anqa',
		'Pagina principală',
		'Заглавная страница',
		'मुखपुटम्',
		'ᱢᱩᱬᱩᱛ ᱥᱟᱦᱴᱟ',
		'Pàgina printzipale',
		'Pàggina principali',
		'Scots Commons',
		'Glavna stranica (sh)',
		'මුල් පිටුව',
		'Simple English',
		'Hlavná stránka',
		'Glavna stran',
		'Bogga Hore',
		'Faqja kryesore',
		'Главна страна',
		'Haudsiede Commons',
		'Tepas',
		'Huvudsida',
		'Przodniŏ zajta',
		'మొదటి పేజీ',
		'முதற் பக்கம்',
		'Саҳифаи Аслӣ',
		'หน้าหลัก',
		'Unang Pahina',
		'Anasayfa',
		'Кутскон бам',
		'Головна сторінка',
		'صفحۂ_اول',
		'Pajina prinsipałe',
		'Trang Chính',
		'Cifapad',
		'Syahan nga Pakli',
		'ערשטע זײַט',
		'Ojúewé Àkọ́kọ́',
		'頭版',
		'卷首',
		'首页',
		'首頁',
		'Thâu-ia̍h'
	];

	// Callback for API request
	function setNstabText(data) {
		var title;
		try {
			title = data.query.allmessages[0]['*'];
		} catch (e) {
			// Ignore API error
			return;
		}

		var link = document.querySelector('#ca-nstab-main a');
		if (link) {
			link.textContent = title;
		}
	}

	// If we're on any of the main pages, replace the main page tab title with the [[MediaWiki:Mainpage-description]] message
	if (conf.wgNamespaceNumber < 2 && localizedMainPageTitles.indexOf(conf.wgTitle) !== -1) {
		// Apply mw-mainpage when viewing the main page (but not when editing it or viewing the talk page)
		// See [[MediaWiki:Common.css]]
		if (conf.wgNamespaceNumber === 0) {
			document.documentElement.classList.add('mw-mainpage');
		}
		// Optimisation: Avoid needless web request when message matches the default
		if (conf.wgUserLanguage !== 'en') {
			$.get(mw.util.wikiScript('api'), {
				format: 'json',
				action: 'query',
				meta: 'allmessages',
				ammessages: 'mainpage-description',
				amlang: conf.wgUserLanguage,
				maxage: '2592000',
				smaxage: '2592000'
			}, setNstabText);
		}
	}
}());