User:Wikinsbr/global.js
Note: After publishing, you may have to bypass your browser's cache to see the changes.
- Firefox / Safari: Hold Shift while clicking Reload, or press either Ctrl-F5 or Ctrl-R (⌘-R on a Mac)
- Google Chrome: Press Ctrl-Shift-R (⌘-Shift-R on a Mac)
- Internet Explorer / Edge: Hold Ctrl while clicking Refresh, or press Ctrl-F5
- Opera: Press Ctrl-F5.
// [[File:Krinkle_RTRC.js]]
mw.loader.load('//meta.wikimedia.org/w/index.php?title=User:Krinkle/RTRC.js&action=raw&ctype=text/javascript');
/* Change language */
mw.loader.using( 'mediawiki.user', function() {
if ( mw.user.options.get( 'language' ) !== 'pt' ) {
( new mw.Api() ).postWithToken( 'csrf', {
action: 'options',
change: 'language=pt'
} ).done( function() {
mw.loader.using( [], function() {
mw.notify( 'O idioma foi alterado para o português. Reinicie a página para a mudança.' );
} );
} );
} else {
console.log( 'O idioma foi alterado para o português!' );
}
} );
// <nowiki>
/*#############################################
### Ajax sysop
### DO NOT COPY AND PASTE, instead see http://meta.wikimedia.org/wiki/User:Pathoschild/Scripts/Ajax_sysop#Installation
### (it is occasionally updated with bug fixes and new features).
### By [[user:Pathoschild]] (Jesse Plamondon-Willard)
##############################################*/
/*************
*** import required libraries
*************/
mw.loader.load('//meta.wikimedia.org/w/index.php?title=User:Pathoschild/Scripts/MooTools.js&action=raw&ctype=text/javascript&9');
/*************
*** initialize
*************/
// configuration options:
// disable_patrol:true
if(!ajax_sysop_config)
var ajax_sysop_config = {};
// global for calling functions on user action
var ajax_sysop = {};
/*************
*** Debug function (never called by code)
*************/
function ajax_sysop_debug() {
return 'Ajax sysop version: 0.2.10';
}
/*************
*** Main (run each page load)
*************/
function ajax_sysop_main() {
/*****************
** Error-checking
*****************/
// WikiMooTools not loaded yet
if(!window.$chk) {
setTimeout('ajax_sysop_main()', 500);
return;
}
/*************
*** Add CSS
*************/
mw.util.addCSS(
// formatted box
'.as_box { position:relative; margin-top:2em; padding:0.5em; border:1px solid #CCC; background:#EEE; }\n'
+ '.as_box_title { position:absolute; top:-1em; left:0.5em; padding:0 0.5em; border:1px solid #CCC; border-bottom:0; background:#EEE; }\n'
// deletion form
+ '.as_del_sublist li { font-weight:bold; }\n'
+ '.as_del_sublist li ul { font-weight:normal; }\n'
+ '.as_del_empty { color:gray; }\n'
// fix shifting line-heights in lists
+ '.smallloader img { height:16px; width:16px; }\n'
);
/*****************
** variables
*****************/
var body = $('bodyContent');
var path = mw.config.get('wgServer') + '/wiki/';
// create trackers
ajax_sysop.src_fail = '//upload.wikimedia.org/wikipedia/commons/thumb/d/dd/Achtung.svg/32px-Achtung.svg.png';
/*****************
** AJAX patrolling
** - one-click patrol link (on Special:Watchlist, Special:Recentchanges, and diff/newpage view with rcid)
*****************/
if(!ajax_sysop_config.disable_patrol) {
/* get list of potential patrol links */
var text;
var links = [];
if(mw.config.get('wgCanonicalSpecialPageName')=='Watchlist' || mw.config.get('wgCanonicalSpecialPageName')=='Recentchanges') {
text = 'patrol';
links = body.getElements('a');
}
else if(location.href.match('rcid')) {
text = 'AJAX';
var box = body.getElements('.patrollink');
if(box.length>0)
links = box[0].getElements('a');
}
/* add ajax if patrol links */
for(var len=links.length, i=0; i<len; i++) {
var href = links[i].getProperty('href');
if(href && href.match('rcid')) {
var rcid = href.replace(/^.*rcid=(\d+).*$/, '$1');
// add ajax patrol link
var box = new Element('sup', {'id':'as_patrol_'+rcid});
box.appendChild(
new Element('a', {
'html':'(' + text + ')',
'href':'javascript:ajax_sysop.patrol("' + rcid + '");',
'id':'as_patrol_link'
}
)
);
box.inject(links[i], 'after');
}
}
/* patrol page on click of AJAX link */
ajax_sysop.patrol = function(rcid) {
/* get references */
var span = $('as_patrol_'+rcid);
// display error message
function asp_error(text) {
// re-add AJAX link
span.text += '(';
span.adopt(link);
span.text += ')';
// display error message
span.adopt(new Element('br'));
span.adopt(
new Element('img', {
'src':ajax_sysop.src_fail,
'height':'16px',
'width':'16px'
})
);
span.text += 'AJAX patrol failed: ' + api.status + ', "' + api.statusText + '".';
}
/* show loading indicator */
span.empty();
span.adopt(wmt_loader({'class':'smallloader'}));
/* get edit token */
if(ajax_sysop.token)
cPatrol();
else
wmt_token({onSuccess:cToken});
function cToken(token) {
ajax_sysop.token = token;
cPatrol();
}
/* patrol page */
function cPatrol() {
var request = new Request({
url: mw.config.get('wgServer')+mw.config.get('wgScriptPath')+'/api.php?format=xml&action=patrol&token='+encodeURIComponent(ajax_sysop.token)+'&rcid='+rcid,
method: 'GET',
onSuccess: function(responseText, responseXML) {
// if API errors
var errors = responseXML.getElementsByTagName('error');
if(errors.length)
asp_error('AJAX patrol error: "' + errors[0].getAttribute('info') + '".');
// else success!
else {
span.empty();
span.adopt(document.createTextNode(' (patrolled)'));
}
},
onFailure: function(xhr) {
asp_error('AJAX patrol error: ' + xhr.status + ' (' + xhr.statusText + ')');
}
});
request.send();
}
};
}
/*****************
** AJAX rollback
** - one-click rollback (on Special:Contributions, action=history)
*****************/
if(mw.config.get('wgCanonicalSpecialPageName')=='Contributions' || mw.config.get('wgAction')=='history') {
/* add links */
var rbspans = ajax_sysop.rbspans = $$('#bodyContent .mw-rollback-link');
for(var i=0; i<rbspans.length; i++) {
rbspans[i].adopt(
new Element('sup', {
'id':'ass_rb_' + i
}).adopt(
new Element('a', {
'text':'(AJAX)',
'href':'javascript:ajax_sysop.rollback(' + i + ');'
})
)
);
}
/* rollback functions */
ajax_sysop.rollback = function(i) {
/* generate query URL */
var href = ajax_sysop.rbspans[i].getElement('a').get('href');
var query = mw.config.get('wgServer') + mw.config.get('wgScriptPath') + '/api.php?format=xml&action=rollback'
+ '&title=' + href.match(/title=([^&]+)/)[1]
+ '&user=' + href.match(/from=([^&]+)/)[1]
+ '&token=' + href.match(/token=([^&]+)/)[1]
+ '&markbot=' + ($('bot') && $('bot').get('value') ? 1 : 0);
/* add placeholder */
var span = $('ass_rb_' + i);
span.empty();
span.adopt(wmt_loader({'class':'smallloader'}));
/* send query */
new Request({
'url':query,
'method':'POST',
'onSuccess':function(responseText, responseXML) {
span.empty();
// API errors
var errors = responseXML.getElementsByTagName('error');
if(errors.length)
span.set('text', 'AJAX patrol error: "' + errors[0].getAttribute('info') + '".');
// success
else
span.set('text', '(rollbacked)');
},
onFailure: function(xhr) {
span.empty();
span.set('text', 'AJAX patrol error: ' + xhr.status + ' (' + xhr.statusText + ')');
}
}).send();
};
}
/*****************
** Special contributions
** - link to enable/disable bot mode
*****************/
if(mw.config.get('wgCanonicalSpecialPageName')=='Contributions') {
var toggleTo = false;
var form = $('newbie').getParent('form');
/* if bot=1, note and remove hidden field */
if(document.getElementsByName('bot').length) {
toggleTo = true;
var field = document.getElementsByName('bot')[0];
$(field).getParent().removeChild(field);
}
/* add options box */
var box;
form.adopt(
// main box
box = ajax_sysop.formattedBox().adopt(
// bot mode checkbox
new Element('input', {
'type':'checkbox',
'id':'bot',
'name':'bot',
'checked':toggleTo,
'events':{
'click':function() {
var enable = $('bot').get('checked');
$$('#bodyContent .mw-rollback-link').each(function(link) {
link.getElementsByTagName('a')[0].href += '&bot=' + (enable?1:0);
});
}
}
})
).adopt(
// bot mode label
new Element('label', {
'for':'bot',
'text':'Bot rollback flag (hide rollbacks on watchlists and Special:RecentChanges)'
})
)
);
}
/*****************
** deletion form
** - list of subpages
** - block log (on user & user talk pages)
*****************/
if(mw.config.get('wgAction')=='delete') {
var form;
if(mw.config.get('wgNamespaceNumber')==6)
form = $('mw-img-deleteconfirm');
else
form = $('deleteconfirm').getParent();
/**********
* Prepare output
**********/
var box = ajax_sysop.formattedBox();
form.adopt(box);
/**********
* determine namespace
**********/
if((mw.config.get('wgNamespaceNumber')%2)==0)
var ns_main = mw.config.get('wgNamespaceNumber');
else
var ns_main = mw.config.get('wgNamespaceNumber')-1;
var ns_talk = ns_main+1;
/**********
* List subpages
**********/
// prepare output
var e = {
/* headers */
// 'Subpages'
'h_subpages':new Element('h2', {
'text':'Subpages'
}),
// 'main pages'
'sh_main':new Element('li', {
'text':'main pages'
}),
// 'talk pages'
'sh_talk':new Element('li', {
'text':'talk pages'
}),
/* lists */
// main list
'ul':new Element('ul', {
'class':'as_del_sublist'
}),
// main pages
'ul_main':new Element('ul'),
// talk pages
'ul_talk':new Element('ul')
};
e.ul_main.adopt(wmt_loader({container:new Element('li')}));
e.ul_talk.adopt(wmt_loader({container:new Element('li')}));
e.ul.adopt(e.sh_main);
e.ul.adopt(e.ul_main);
e.ul.adopt(e.sh_talk);
e.ul.adopt(e.ul_talk);
box.adopt(e.box_label);
box.adopt(e.h_subpages);
box.adopt(e.ul);
var list_main = e.ul_main;
var list_talk = e.ul_talk;
delete e;
/* page list */
function cListPages(titles, box) {
box.empty();
var length = titles.length;
if(length==0)
box.adopt(new Element('li', {'text':'None', 'class':'as_del_empty'}));
else {
for(var i=0; i<length; i++) {
box.adopt(
new Element('li').adopt(
new Element('a', {
'href':mw.config.get('wgServer') + mw.config.get('wgArticlePath').replace('$1', titles[i]), text:titles[i]
})
)
);
}
}
}
function cListFailed(xhr, box) {
box.empty();
box.adopt(new Element('li', {'text':'error ' + xhr.status + ' (' + xhr.statusText + ').'}));
}
// send queries
wmt_prefixindex({'namespace':ns_main, 'onSuccess':cListPages, 'onFailure':cListFailed, 'subpagesOnly':true, 'passOn':list_main});
wmt_prefixindex({'namespace':ns_talk, 'onSuccess':cListPages, 'onFailure':cListFailed, 'subpagesOnly':true, 'passOn':list_talk});
/**********
* Block log
**********/
if(mw.config.get('wgNamespaceNumber')==2 || mw.config.get('wgNamespaceNumber')==3) {
// prepare output
box.adopt(new Element('h2', {'text':'Block log'}));
var log = new Element('ul');
box.adopt(log);
log.adopt(new Element('li').adopt(wmt_loader()));
// add block log after query
function cBlockLog(responseText, responseXML) {
log.empty();
var entries = responseXML.getElementsByTagName('item');
var length = entries.length;
if(length==0)
log.adopt(new Element('li', {'text':'Never blocked', 'class':'as_del_empty'}));
else {
// list entries
var entry;
for(var i=0; i<length; i++) {
// alias values
var blocker = entries[i].getAttribute('user');
var timestamp = entries[i].getAttribute('timestamp');
var action = entries[i].getAttribute('action');
var reason = entries[i].getAttribute('comment');
if(action=='block') {
var duration = entries[i].getElementsByTagName('block')[0].getAttribute('duration');
var flags = entries[i].getElementsByTagName('block')[0].getAttribute('flags');
}
// block details string
var date = timestamp.replace(/^(\d+-\d+-\d+)T(\d+:\d+).+$/, '$1 $2') + ' ';
var block_details = '';
if(action=='block') {
// block length
if(duration=='indefinite')
block_details += ' blocked indefinitely ';
else
block_details += ' blocked for ' + duration + ' ';
// block flags
if(flags!='')
block_details += '[' + flags + '] ';
else
block_details += ' unblocked ';
// output
var item = new Element('li');
item.adopt(document.createTextNode(' '));
item.adopt(
new Element('a', {
'href':mw.config.get('wgServer') + mw.config.get('wgArticlePath') + 'user:' + blocker,
'text':blocker
})
);
item.adopt(document.createTextNode(block_details + '('));
item.adopt(new Element('small', {'text':reason}));
item.adopt(document.createTextNode(')'));
log.adopt(item);
}
}
}
}
function cBlockLogFailure(xhr) {
log.empty();
log.adopt(new Element('li', {'text':'error ' + xhr.status + ' (' + xhr.statusText + ').'}));
}
// send query
new Request({
'url':mw.config.get('wgServer')+mw.config.get('wgScriptPath')+'/api.php?format=xml&lelimit=500&action=query&list=logevents&letype=block&letitle=User:' + mw.config.get('wgTitle').match(/^[^\/]+/),
'onSuccess':cBlockLog,
'onFailure':cBlockLogFailure
}).send();
}
}
}
/*****************
** Return formatted box to make ajax sysop options stand out
*****************/
ajax_sysop.formattedBox = function(o) {
/* defaults */
if(!o) var o = {};
if(!o.id) o.id = '';
if(!o.tag) o.tag = 'div';
if(!o.box_styles) o.box_styles = {};
/* create & return element */
return new Element(o.tag, {
'id':o.id,
'class':'as_box',
'styles':o.box_styles
}).adopt(
new Element('div', {
'text':'Ajax sysop',
'class':'as_box_title'
})
);
}
$(ajax_sysop_main);
// </nowiki>
/* Warning! Global gadget file! */
$( function($) {
$( '.mw-rollback-link a' ).click( function(e) {
e.preventDefault();
var $el = $(this);
$.ajax({
url: $el.attr('href'),
success: function() {
// [[phab:T29606]]
var user = mw.util.getParamValue( 'from', $el.attr('href') ).replace(/\+/g, '_');
location.href = mw.util.getUrl( 'Special:Contributions/' + user );
},
error: function(){
$el.text(function( i, val ) {
return val + ' [failed]';
} );
}
});
} );
});
/** userRights (for Bureaucrats only) **/
$( function() {
if ( wgNamespaceNumber != 2 && wgNamespaceNumber != 3 ) { // User or User talk
return;
}
var user = wgTitle.split( '/' )[0];
var url = wgScript + '?title=Special:UserRights&user=' + encodeURIComponent( user );
mw.util.addPortletLink( 'p-tb', url, 'User rights', 't-userrights', 'List of user groups for ' + user );
});
mw.loader.load( '//commons.wikimedia.org/w/index.php?title=MediaWiki:Gadget-HotCat.js&action=raw&ctype=text/javascript' );
/**
* Nom : DeluxeHistory
* Implémentation originale de Dake, basée sur du code Ajax de GôTô
* Réécriture complète par Dr Brains et Od1n, avec améliorations de Ltrlg
* Dépendances :
* — les habituelles implicites 'mediawiki' & 'jquery' ;
* — 'user' (chargement du common.js).
* {{Catégorisation JS|DeluxeHistory}}
*/
/*global document, localStorage, mw, $ */
/*jslint vars: true, plusplus: true */
mw.loader.using(['mediawiki.util', 'user', 'user.options'], function () {
'use strict';
if (!mw.user.options.get('gadget-DeluxeHistory')) {
importStylesheet('MediaWiki:Gadget-DeluxeHistory.css');
}
var botMembers, sysopMembers;
/////////////////////////////////////// DÉTECTION SUPPORT LOCALSTORAGE ///////////////////////////////////////
var supportLocalStorage, dateNow, dateNowUTC;
try {
localStorage.setItem('modernizr', 'modernizr');
localStorage.removeItem('modernizr');
supportLocalStorage = true;
} catch (e) {
supportLocalStorage = false;
}
if (supportLocalStorage) {
dateNow = new Date();
dateNowUTC = dateNow.getTime() + dateNow.getTimezoneOffset() * 60000;
}
/////////////////////////////////////// FONCTIONS DE TRAITEMENT DES LIENS ///////////////////////////////////////
var nsSpecial = mw.config.get('wgFormattedNamespaces')[-1] + ':';
var watcherName = mw.config.get('wgUserName');
function isUserIP(jUserlink) {
// Les liens des IP sont de la forme « Spécial:Contributions/<IP> »
return jUserlink[0].title.indexOf(nsSpecial) === 0;
}
function getUserClass(jUserlink) {
var UserName = jUserlink.text();
if (UserName === watcherName) { return 'UserIs-Self'; }
if (botMembers.indexOf(UserName) > -1) { return 'UserIs-Bot'; }
if (sysopMembers.indexOf(UserName) > -1) { return 'UserIs-Sysop'; }
if (isUserIP(jUserlink)) { return 'UserIs-IP'; }
return 'UserIs-User';
}
// Renvoie 'UserIs-…' si un seul type, 'UserIs-Mixed' sinon (RC "améliorée").
// Colore les liens vers les utilisateurs pour disposer de la différentiation même si historique mixte.
function getMultipleClassName(jUserlinks) {
var className = '';
var localClassName;
jUserlinks.each(function() {
var $this = $(this);
localClassName = getUserClass($this);
$this.addClass(localClassName);
if (className === '') {
className = localClassName;
} else if (className !== localClassName) {
className = 'UserIs-Mixed';
}
});
return className;
}
function userGroupClassName(Li) {
var jLi = $(Li);
var jUserlink = jLi.find('a.mw-userlink');
if (jUserlink.length > 0) {
if (jLi.find('.changedby').length === 0) { // groupe des RC "améliorées"
jLi.addClass(getUserClass(jUserlink));
} else {
jLi.addClass(getMultipleClassName(jUserlink) + ' UserIs-Multiple');
}
}
}
/////////////////////////////////////// FONCTIONS DE PARCOURS DES ÉLÉMENTS ///////////////////////////////////////
function get_bodyContent() {
var Content = document.getElementById('bodyContent');
if (!Content) { Content = document.getElementById('mw_contentholder'); }
if (!Content) { Content = document.getElementById('article'); }
return Content;
}
function scan_first_ul() {
var Content = get_bodyContent();
$(Content).find('ul').eq(0).find('li').each(function () {
userGroupClassName(this);
});
}
function scan_ul_special_li() {
$('ul.special li').each(function () {
userGroupClassName(this);
});
}
function scan_td() {
$('td').each(function () {
userGroupClassName(this);
});
}
/////////////////////////////////////// FONCTIONS DE SÉLECTION DES FILTRES ///////////////////////////////////////
function process_History() {
$('#pagehistory, .flow-board-history').find('li').each(function () {
userGroupClassName(this);
});
}
function process_Watchlist() {
scan_ul_special_li(); // Liste de suivi normale
scan_td(); // Liste de suivi "améliorée"
}
function process_Recentchanges() {
scan_ul_special_li(); // RC normale
scan_td(); // RC "améliorées"
}
function process_Recentchangeslinked() {
scan_ul_special_li(); // RC liées normales
scan_td(); // RC liées "améliorées"
}
function process_Newpages() {
scan_first_ul();
}
function process_Log() {
scan_first_ul();
}
function process_AbuseLog() {
scan_first_ul();
}
function process_OtherPages() {
scan_ul_special_li();
}
/////////////////////////////////////// LANCEMENTS ///////////////////////////////////////
var DeluxeHistory_ClassesApplied = false;
var DeluxeHistory_Enabled = $.extend({
"history": true,
"watchlist": true,
"recentchanges": true,
"recentchangeslinked": true,
"newpages": true,
"log": true,
"abuseLog": true,
"other": true
}, window.DeluxeHistory_Enabled);
function enabled(pageType) {
switch( $.type(DeluxeHistory_Enabled[pageType]) ) {
case 'boolean':
return DeluxeHistory_Enabled[pageType];
case 'function':
return DeluxeHistory_Enabled[pageType]();
default:
return false;
}
}
function applyClasses() {
if (botMembers && sysopMembers && !DeluxeHistory_ClassesApplied) {
DeluxeHistory_ClassesApplied = true;
var paramAction = mw.config.get('wgAction');
var paramCanonicalSpecialPageName = mw.config.get('wgCanonicalSpecialPageName');
if ( paramAction === 'history' ) {
if( enabled("history") ) {
$(document).ready(process_History);
}
} else if ( paramCanonicalSpecialPageName === 'Watchlist' ) {
if( enabled("watchlist") ) {
$(document).ready(process_Watchlist);
}
} else if ( paramCanonicalSpecialPageName === 'Recentchanges' ) {
if( enabled("recentchanges") ) {
$(document).ready(process_Recentchanges);
}
} else if ( paramCanonicalSpecialPageName === 'Recentchangeslinked' ) {
if( enabled("recentchangeslinked") ) {
$(document).ready(process_Recentchangeslinked);
}
} else if ( paramCanonicalSpecialPageName === 'Newpages' ) {
if( enabled("newpages") ) {
$(document).ready(process_Newpages);
mw.util.addCSS('.not-patrolled { text-decoration: underline !important; }');
}
} else if ( paramCanonicalSpecialPageName === 'Log' ) {
if( enabled("log") ) {
$(document).ready(process_Log);
}
} else if ( paramCanonicalSpecialPageName === 'AbuseLog' ) {
if( enabled("abuseLog") ) {
$(document).ready(process_AbuseLog);
}
} else {
if( enabled("other") ) {
$(document).ready(process_OtherPages);
}
}
}
}
/////////////////////////////////////// RÉCUPÉRATION DE LA LISTE DES BOTS ET SYSOPS ///////////////////////////////////////
var validCache;
function updateUserList(Group, UserList, UserContinue) {
if (!UserList) { UserList = []; }
var paramUserGroups = mw.config.get('wgUserGroups');
var APILimit = paramUserGroups.indexOf('sysop') > -1 || paramUserGroups.indexOf('bot') > -1
? 5000 : 500;
var params = {
'format' : 'json',
'action' : 'query',
'list' : 'allusers',
'aulimit' : APILimit,
'augroup' : Group,
'continue' : '' // https://www.mediawiki.org/wiki/API:Query#Continuing_queries
};
if (UserContinue) {
$.extend(params, UserContinue);
}
$.get(mw.util.wikiScript('api'), params, function (data) {
$.each(data.query.allusers, function () {
UserList.push(this.name);
});
if (data['continue']) {
updateUserList(Group, UserList, data['continue']);
} else {
if (supportLocalStorage) {
var storedValue = UserList.join('|');
localStorage.setItem('HistoryDeluxe_' + Group, storedValue);
localStorage.setItem('HistoryDeluxe_lastUpdate', dateNowUTC);
}
if (Group === 'bot') {
botMembers = UserList;
} else if (Group === 'sysop') {
sysopMembers = UserList;
}
applyClasses();
}
});
}
function testCacheValidity() {
var lastUpdate;
if (supportLocalStorage) {
lastUpdate = localStorage.getItem('HistoryDeluxe_lastUpdate');
validCache = lastUpdate && dateNowUTC - lastUpdate < 1000 * 3600 * 24 && dateNowUTC - lastUpdate > 0;
} else {
validCache = false;
}
}
// Exécutée si validCache, ie. si (supportLocalStorage && lastUpdate pas trop loin)
function getUserList(Group) {
var storedValue;
storedValue = localStorage.getItem('HistoryDeluxe_' + Group);
return storedValue ? storedValue.split('|') : null;
}
/////////////////////////////////////// INITIALISATION ///////////////////////////////////////
testCacheValidity();
if (validCache) {
botMembers = getUserList('bot');
sysopMembers = getUserList('sysop');
applyClasses();
} else {
updateUserList('bot');
updateUserList('sysop');
}
});
window.LiveRC_getSiteCustom = function (){
// Here comes the configuration
}
mw.loader.load( '//fr.wikipedia.org/w/index.php?title=MediaWiki:Gadget-LiveRC.js&action=raw&ctype=text/javascript' );
/** subpages **/
$( function () {
var NSWithoutSubpages = [ -1, 6, 8, 12, 13, 14, 15, 104, 105 ];
if ( NSWithoutSubpages.indexOf( mw.config.get( 'wgNamespaceNumber' ) ) === -1 ) {
var subpagesLink = mw.util.getUrl( 'Special:PrefixIndex/' + mw.config.get( 'wgPageName' ) + '/' );
mw.util.addPortletLink( 'p-tb', subpagesLink, 'Subpages', 't-subpages', 'Subpages of this page' );
}
} );