Note: After saving, you have to bypass your browser's cache to see the changes. Google Chrome, Firefox, Microsoft Edge and Safari: Hold down the ⇧ Shift key and click the Reload toolbar button. For details and instructions about other browsers, see Wikipedia:Bypass your cache.
// SEARCH NAMESPACE MENU: <pre><nowiki>
addOnloadHook(function () {
var searchGoButton = document.getElementById('searchGoButton');
var searchInput = document.getElementById('searchInput');
if (!searchGoButton || !searchInput) return;
// Customize project name based on DB name suffix; may need further per-language customization
var siteName = 'Project'; // default name for ns:4
if (/^[a-z]{2,3}(_[_a-z0-9]*)?wiki$/.test(mw.config.get('wgDBname')))
siteName = 'Wikipedia';
else if (/wiktionary$/.test(mw.config.get('wgDBname')))
siteName = 'Wiktionary';
else if (/wiki(books|news|quote|source|versity)$/.test(mw.config.get('wgDBname')))
siteName = mw.config.get('wgDBname').replace(/^.*wiki/, 'Wiki');
// Standard namespaces, common to all MediaWiki wikis
var nameSpaces = {
'-1': '—namespace—', // -1 = NS_SPECIAL, but we use it as a placeholder
'0': '(Main)',
'1': 'Talk',
'2': 'User',
'3': 'User talk',
'4': siteName,
'5': siteName + ' talk',
'6': 'File',
'7': 'File talk',
'8': 'MediaWiki',
'9': 'MediaWiki talk',
'10': 'Template',
'11': 'Template talk',
'12': 'Help',
'13': 'Help talk',
'14': 'Category',
'15': 'Category talk'
};
// Localized default namespaces (per Messages*.php)
if (mw.config.get('wgContentLanguage') == 'fi') {
nameSpaces['-1'] = '—nimiavaruus—';
nameSpaces['0'] = '(Sivut)';
nameSpaces['1'] = 'Keskustelu';
nameSpaces['2'] = 'Käyttäjä';
nameSpaces['3'] = 'Keskustelu käyttäjästä';
// ns:4 and ns:5 may vary, override below as needed
nameSpaces['6'] = 'Kuva';
nameSpaces['7'] = 'Keskustelu kuvasta';
nameSpaces['8'] = 'Järjestelmäviesti';
nameSpaces['9'] = 'Keskustelu järjestelmäviestistä';
nameSpaces['10'] = 'Malline';
nameSpaces['11'] = 'Keskustelu mallineesta';
nameSpaces['12'] = 'Ohje';
nameSpaces['13'] = 'Keskustelu ohjeesta';
nameSpaces['14'] = 'Luokka';
nameSpaces['15'] = 'Keskustelu luokasta';
}
// Site-specific customizations
if (mw.config.get('wgDBname') == 'commonswiki') {
nameSpaces['0'] = '(Gallery)';
nameSpaces['4'] = 'Commons';
nameSpaces['5'] = 'Commons talk';
nameSpaces['100'] = 'Creator';
nameSpaces['101'] = 'Creator talk';
}
else if (mw.config.get('wgDBname') == 'metawiki') {
nameSpaces['4'] = 'Meta';
nameSpaces['5'] = 'Meta talk';
nameSpaces['100'] = 'Hilfe';
nameSpaces['101'] = 'Hilfe Diskussion';
nameSpaces['102'] = 'Aide';
nameSpaces['103'] = 'Discussion Aide';
nameSpaces['104'] = 'Hjælp';
nameSpaces['105'] = 'Hjælp diskussion';
nameSpaces['106'] = 'Helpo';
nameSpaces['107'] = 'Helpa diskuto';
nameSpaces['108'] = 'Hjälp';
nameSpaces['109'] = 'Hjälp diskussion';
nameSpaces['110'] = 'Ayuda';
nameSpaces['111'] = 'Ayuda Discusión';
nameSpaces['112'] = 'Aiuto';
nameSpaces['113'] = 'Discussioni aiuto';
nameSpaces['114'] = 'ヘルプ';
nameSpaces['115'] = 'ヘルプ‐ノート';
nameSpaces['116'] = 'NL Help';
nameSpaces['117'] = 'Overleg help';
nameSpaces['118'] = 'Pomoc';
nameSpaces['119'] = 'Dyskusja pomocy';
nameSpaces['120'] = 'Ajuda';
nameSpaces['121'] = 'Ajuda Discussão';
nameSpaces['122'] = 'CA Ajuda';
nameSpaces['123'] = 'CA Ajuda Discussió';
nameSpaces['124'] = 'Hjelp';
nameSpaces['125'] = 'Hjelp diskusjon';
nameSpaces['126'] = '帮助';
nameSpaces['127'] = '帮助 对话';
nameSpaces['128'] = 'Помощь';
nameSpaces['129'] = 'Помощь Дискуссия';
nameSpaces['130'] = 'Pomoč';
nameSpaces['131'] = 'Pogovor o pomoči';
nameSpaces['132'] = 'مساعدة';
nameSpaces['133'] = 'نقاش المساعدة';
}
if (mw.config.get('wgDBname') == 'mediawikiwiki') {
nameSpaces['100'] = 'Manual';
nameSpaces['101'] = 'Manual talk';
nameSpaces['102'] = 'Extension';
nameSpaces['103'] = 'Extension talk';
}
if (mw.config.get('wgDBname') == 'enwiki') {
nameSpaces['0'] = '(Article)';
nameSpaces['100'] = 'Portal';
nameSpaces['101'] = 'Portal talk';
}
if (mw.config.get('wgDBname') == 'fiwiki') {
nameSpaces['0'] = '(Artikkelit)';
nameSpaces['5'] = 'Keskustelu Wikipediasta';
nameSpaces['100'] = 'Teemasivu';
nameSpaces['101'] = 'Keskustelu teemasivusta';
nameSpaces['102'] = 'Metasivu';
nameSpaces['103'] = 'Keskustelu metasivusta';
}
// Localization ends here, actual code begins
var searchNsHidden = document.createElement('input');
searchNsHidden.id = 'searchNsHidden';
searchNsHidden.type = 'hidden';
searchNsHidden.name = 'defaultns';
searchNsHidden.value = '1';
var searchNsMenu = document.createElement('select');
searchNsMenu.id = 'searchNsMenu';
searchNsMenu.name = 'ns';
var nsOptions = []
for (i in nameSpaces) {
nsOptions[nsOptions.length] = new Option(nameSpaces[i], i);
}
nsOptions.sort(function (a,b) { return a.value - b.value; });
// can't sort searchNsMenu.options, can't assign an array directly to it, must do it like this:
for (var i = 0; i < nsOptions.length; i++) {
searchNsMenu.options[i] = nsOptions[i];
}
addHandler(searchNsMenu, "change", function () {
if (searchNsMenu.selectedIndex > 0) { // first element is placeholder
searchNsHidden.name = 'ns' + searchNsMenu.options[searchNsMenu.selectedIndex].value;
} else {
searchNsHidden.name = 'defaultns'; // dummy value, will be ignored
}
});
// Style menu with CSS to match current skin
appendCSS(
"body.skin-monobook #searchNsMenu { width: 10.9em; margin: 0; font-size: 95%; }\n" +
"body.skin-vector #searchNsMenu { margin:0.4em 0 0; }\n" +
"");
// Adjust placement depending on skin
var skinName = /(^| )skin-([^ ]+)/.exec(document.body.className);
skinName = (skinName ? skinName[2] : "unknown");
var nextElement = (skinName == "vector" ? searchInput : searchGoButton);
// Insert the menu
searchGoButton.parentNode.insertBefore(searchNsHidden, nextElement);
searchGoButton.parentNode.insertBefore(searchNsMenu, nextElement);
searchGoButton.parentNode.insertBefore(document.createTextNode(" "), nextElement);
// Kluge: make the "Go" button prepend the namespace
addHandler(searchGoButton, "click", function () {
if (searchNsMenu.selectedIndex > 1) { // first element is placeholder, second is ns:0
searchInput.value = searchNsMenu.options[searchNsMenu.selectedIndex].text + ":" + searchInput.value;
searchNsMenu.selectedIndex = 0; // reset, just in case
}
});
});
// </nowiki></pre>
You must be logged in to post a comment.