Usuario:Peter Bowman/rc-speedy-deletion-watcher.js

De Wikcionario, el diccionario libre

Nota: Después de publicar, quizás necesite actualizar la caché de su navegador para ver los cambios.

  • Firefox/Safari: Mantenga presionada la tecla Shift mientras pulsa el botón Actualizar, o presiona Ctrl+F5 o Ctrl+R (⌘+R en Mac)
  • Google Chrome: presione Ctrl+Shift+R (⌘+Shift+R en Mac)
  • Internet Explorer/Edge: mantenga presionada Ctrl mientras pulsa Actualizar, o presione Ctrl+F5
  • Opera: Presiona Ctrl+F5.
if ( mw.config.get( 'wgCanonicalSpecialPageName' ) === 'Recentchanges' ) {
	mw.messages.set( {
		'rc-speedy-deletion-new': 'Hay {{PLURAL:$1|1 nueva página marcada|$1 nuevas páginas marcadas}} para borrado rápido: $2.',
		'rc-merge-request-new': 'Hay {{PLURAL:$1|1 nueva página marcada|$1 nuevas páginas marcadas}} para fusionar: $2.',
		'rc-move-request-new': 'Hay {{PLURAL:$1|1 nueva página marcada|$1 nuevas páginas marcadas}} para traslado: $2.'
	} );

	$.when(
		mw.loader.using( [ 'mediawiki.api', 'mediawiki.jqueryMsg', 'mediawiki.util' ] ),
		$.ready
	).done( function () {
		var api = new mw.Api( { parameters: { formatversion: 2 } } ),
			$speedyDeletioncounter = $( '#rc-speedy-deletion-current-queue-size' ),
			$mergeRequestcounter = $( '#rc-merge-request-current-queue-size' ),
			$moveRequestcounter = $( '#rc-move-request-current-queue-size' ),
			speedyDeletionStorage = [],
			mergeRequestStorage = [],
			moveRequestStorage = [];
		
		function doStuff( type, storage, $counter, data ) {
			var members = data.query.categorymembers.map( function ( obj ) {
					return obj.title;
				} ),
				added = members.filter( function ( pagename ) {
					return !storage.includes( pagename );
				} ).flatMap( function ( pagename ) {
					var $a = $( '<a>' )
						.attr( 'href', mw.util.getUrl( pagename ) )
						.text( pagename );
					
					return [ $a, ', ' ];
				} ).slice( 0, -1 ),
				addedCount = ( added.length + 1 ) / 2;

			if ( added.length ) {
				mw.notify( mw.message( mw.format( 'rc-$1-new', type ), addedCount, added ), {
					autoHide: false,
					type: 'warn'
				} );
			}
			
			if ( $counter.length ) {
				$counter.text( members.length );
			}
			
			// https://stackoverflow.com/a/45383403
			storage.length = 0;
			Array.prototype.push.apply( storage, members );
		}
		
		mw.hook( 'wikipage.content' ).add( function () {
			var queryTemplate = { list: 'categorymembers', cmlimit: 'max' };
			
			api.get( $.extend( {}, queryTemplate, {
				cmtitle: 'Categoría:Wikcionario:Borrar (definitivo)'
			} ) ).done( doStuff.bind( null, 'speedy-deletion', speedyDeletionStorage, $speedyDeletioncounter ) );
			
			api.get( $.extend( {}, queryTemplate, {
				cmtitle: 'Categoría:Wikcionario:Fusionar'
			} ) ).done( doStuff.bind( null, 'merge-request', mergeRequestStorage, $mergeRequestcounter ) );
			
			api.get( $.extend( {}, queryTemplate, {
				cmtitle: 'Categoría:Wikcionario:Solicitudes de traslado'
			} ) ).done( doStuff.bind( null, 'move-request', moveRequestStorage, $moveRequestcounter ) );
		} );
	} );
}