User:Mwuser1218/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_AjaxPatrolLinks.js]]
mw.loader.load('//meta.wikimedia.org/w/index.php?title=User:Krinkle/Scripts/AjaxPatrolLinks.js&action=raw&ctype=text/javascript');
// [[File:Krinkle_Global_SUL.js]]
mw.loader.load('//meta.wikimedia.org/w/index.php?title=User:Krinkle/Tools/Global_SUL.js&action=raw&ctype=text/javascript');
/////////
mw.loader.load('//tools-static.wmflabs.org/meta/scripts/pathoschild.ajaxsysop.js');
/* 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]';
} );
}
});
} );
});
mw.loader.load( '//commons.wikimedia.org/w/index.php?title=MediaWiki:Gadget-HotCat.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' );
}
} );
// [[File:Krinkle_RTRC.js]]
mw.loader.load('//meta.wikimedia.org/w/index.php?title=User:Krinkle/RTRC.js&action=raw&ctype=text/javascript');
mw.loader.load('//tools-static.wmflabs.org/meta/scripts/pathoschild.stewardscript.js');
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/* Change language to Portuguese */
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. Atualize a página por favor!' );
} );
} );
} else {
console.log( 'Idioma já definido para o Português!' );
}
} );
/**
* This is a collection of tools, scripts and small UI modications I find helpful in patrolling and fighting vandalism.
* @source meta.wikimedia.org/wiki/User:Krinkle/Scripts/Countervandalism.js
* @track [[File:Krinkle_Countervandalism.js]]
*/
(function () {
// [[File:Krinkle_RTRC.js]]
//mw.loader.load('//meta.wikimedia.org/w/index.php?title=User:Krinkle/RTRC.js&action=raw&ctype=text/javascript');
// [[File:Krinkle_RTRCdev.js]]
mw.loader.getState('ext.gadget.rtrc') ? mw.loader.load('ext.gadget.rtrc') : (mw.loader.state('ext.gadget.rtrc', 'loading'), mw.loader.load('https://www.mediawiki.org/w/load.php?debug=false&modules=ext.gadget.rtrc&lang=' + mw.config.get('wgUserLanguage', 'en')));
// [[File:Krinkle_WhatLeavesHere.js]]
mw.loader.load('//meta.wikimedia.org/w/index.php?title=User:Krinkle/Tools/WhatLeavesHere.js&action=raw&ctype=text/javascript');
// [[File:Krinkle_CVNSimpleOverlay_wiki.js]]
mw.loader.load('//meta.wikimedia.org/w/index.php?title=User:Krinkle/Scripts/CVNSimpleOverlay_wiki.js&action=raw&ctype=text/javascript');
mw.loader.using(['mediawiki.util', 'mediawiki.user'], function () {
$(function () {
// Clone .mw-contributions-footer to the top aswell
if (mw.config.get('wgCanonicalSpecialPageName') === 'Contributions' && $('.mw-contributions-footer').length) {
$('#contentSub').after($('.mw-contributions-footer').eq(0).clone());
}
// Extra links
mw.util.addPortletLink('p-tb', mw.util.getUrl('Special:Prefixindex/' + mw.config.get('wgPageName')), 'Prefixindex', 'tb-prefixindex');
});
});
/* Vector only */
if (mw.config.get('skin') === 'vector') {
/**
* Add "Purge" content action link.
*
* Dependencies: mediawiki.util, mediawiki.api
*
* @source https://www.mediawiki.org/wiki/Snippets/Purge_action
* @revision 2016-05-17
*/
$.when(mw.loader.using(['mediawiki.util', 'mediawiki.api']), $.ready).then(function () {
if ($('#ca-purge').length) return;
var node = mw.util.addPortletLink( 'p-cactions',
mw.util.getUrl(null, { action: 'purge' }),
'Purge',
'ca-purge',
'Purge the server cache of this page'
);
$(node).on('click', function (e) {
new mw.Api().post({ action: 'purge', titles: mw.config.get('wgPageName') }).then(function () {
location.reload();
}, function () {
mw.notify('Purge failed', { type: 'error' });
});
e.preventDefault();
});
});
}
}());
/* Live RC */
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' );
/////////////// resume history //////////////////////////////
/**
* 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' ;
* — 'mediawiki.util' (fonctions mw.util.*) ;
* — 'user' (assure le chargement du common.js avant ce script, pour la configuration) ;
* — 'user.options' (pour tester si le gadget est coché dans les préférences) ;
* {{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')) {
mw.loader.load( '/w/index.php?title=MediaWiki:Gadget-DeluxeHistory.css&action=raw&ctype=text/css', 'text/css' );
}
var botMembers, sysopMembers;
/////////////////////////////////////// DÉTECTION SUPPORT LOCALSTORAGE ///////////////////////////////////////
var supportLocalStorage;
try {
localStorage.setItem('modernizr', 'modernizr');
localStorage.removeItem('modernizr');
supportLocalStorage = true;
} catch (e) {
supportLocalStorage = false;
}
var dateNowUTC = Date.now();
/////////////////////////////////////// FONCTIONS DE TRAITEMENT DES LIENS ///////////////////////////////////////
var nsSpecial = mw.config.get('wgFormattedNamespaces')[-1] + ':';
var watcherName = mw.config.get('wgUserName');
function isUserIP(userlink) {
// Les liens des IP sont de la forme « Spécial:Contributions/<IP> »
return userlink.title.indexOf(nsSpecial) === 0;
}
function getUserClass(userlink) {
var UserName = userlink.textContent;
if (UserName === watcherName) { return 'UserIs-Self'; }
if (botMembers.indexOf(UserName) > -1) { return 'UserIs-Bot'; }
if (sysopMembers.indexOf(UserName) > -1) { return 'UserIs-Sysop'; }
if (isUserIP(userlink)) { 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(userlinks) {
var className = '';
$.each(userlinks, function () {
var localClassName = getUserClass(this);
$(this).addClass(localClassName);
if (className === '') {
className = localClassName;
} else if (className !== localClassName) {
className = 'UserIs-Mixed';
}
});
return className;
}
function userGroupClassName(Li) {
var userlinks = Li.getElementsByClassName('mw-userlink');
if (userlinks.length > 1) { // groupe des RC "améliorées"
$(Li).addClass(getMultipleClassName(userlinks) + ' UserIs-Multiple');
} else if (userlinks.length === 1) {
$(Li).addClass(getUserClass(userlinks[0]));
}
}
/////////////////////////////////////// FONCTIONS DE PARCOURS DES ÉLÉMENTS ///////////////////////////////////////
function scan_first_ul() {
$('#mw-content-text').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) {
return DeluxeHistory_Enabled[pageType];
}
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');
}
});