MediaWiki:Gadget-ll-script-userbox-thanks.js
Wygląd
Uwaga: aby zobaczyć zmiany po opublikowaniu, może zajść potrzeba wyczyszczenia pamięci podręcznej przeglądarki.
- Firefox / Safari: Przytrzymaj Shift podczas klikania Odśwież bieżącą stronę, lub naciśnij klawisze Ctrl+F5, lub Ctrl+R (⌘-R na komputerze Mac)
- Google Chrome: Naciśnij Ctrl-Shift-R (⌘-Shift-R na komputerze Mac)
- Edge: Przytrzymaj Ctrl, jednocześnie klikając Odśwież, lub naciśnij klawisze Ctrl+F5.
- Opera: Naciśnij klawisze Ctrl+F5.
// https://pl.wikipedia.org/w/index.php?title=Wikipedia:Kawiarenka/Kwestie_techniczne&oldid=54567115
var api,
config = mw.config.get( [
'wgNamespaceNumber',
'wgNamespaceIds'
] ),
thanksQuery = {
formatversion: 2,
list: 'logevents',
leprop: 'ids',
letype: 'thanks',
lelimit: 'max'
},
exports = {};
function makeRequest( query, cont, acc ) {
return api.get( $.extend( query, cont ) ).then( function ( data ) {
acc( data.query.logevents.length );
if ( data[ 'continue' ] ) {
return makeRequest( query, data[ 'continue' ], acc );
} else {
return undefined;
}
} );
}
function processCallbackChain( $els ) {
var $el = $els.first(),
$loading = $el.find( '.userbox-thanks-in-progress' ),
$results = $el.find( '.userbox-thanks-results' ),
leuser = $el.data( 'leuser' ),
letitle = $el.data( 'letitle' ),
userCount = 0,
titleCount = 0;
$loading.show();
$el.addClass( 'userbox-thanks-loading' );
$.when(
makeRequest( $.extend( {}, thanksQuery, { leuser: leuser } ), {}, function ( count ) {
userCount += count;
} ),
makeRequest( $.extend( {}, thanksQuery, { letitle: letitle } ), {}, function ( count ) {
titleCount += count;
} )
).done( function () {
var thankedToMsg = mw.msg( 'userbox-thanks-thanked-to', userCount ),
thankedByMsg = mw.msg( 'userbox-thanks-thanked-by', titleCount );
$el.find( '.userbox-thanks-thanked-to' ).text( thankedToMsg );
$el.find( '.userbox-thanks-thanked-by' ).text( thankedByMsg );
$loading.hide();
$el.removeClass( 'userbox-thanks-loading' );
$results.show();
// https://stackoverflow.com/a/20979871/10404307
$els.splice( 0, 1 );
if ( $els.length ) {
processCallbackChain( $els );
}
});
}
exports.testPreconditions = function () {
// tylko przestrzeń użytkownika
return config.wgNamespaceNumber === config.wgNamespaceIds.user;
};
exports.initialize = function () {
mw.messages.set( {
'userbox-thanks-thanked-to': '{{FORMATNUM:$1}} {{PLURAL:$1|raz|razy}}',
'userbox-thanks-thanked-by': '{{FORMATNUM:$1}} {{PLURAL:$1|podziękowanie|podziękowania|podziękowań}}'
} );
api = new mw.Api();
};
exports.filter = $.noop;
exports.process = function ( $els ) {
processCallbackChain( $els );
};
module.exports = exports;