Это не официальный сайт wikipedia.org 01.01.2023

MediaWiki:Gadget-common-special-newpages.js — Википедия

MediaWiki:Gadget-common-special-newpages.js

Возможно, этот код документирован.

$( function () {
	var nonFlaggedNS = [];
	$.each( mw.config.get( 'wgFormattedNamespaces' ), function ( i, ns ) {
		if ( i > 0 && i !== 6 && i !== 10 && i !== 14 ) {
			nonFlaggedNS.push( ns );
		}
	});
	nonFlaggedNS.push( 'Участница' );
	nonFlaggedNS = new RegExp( '^(' + nonFlaggedNS.join( '|' ) + '):' );

	var title,
		titles = [],
		link = {};
	$( 'a.mw-newpages-pagename' ).each( function ( i, lnk ) {
		title = $( lnk ).attr( 'title' );
		if ( nonFlaggedNS.test( title ) ) {
			return;
		}
		titles.push( title );
		link[ title ] = lnk;
	});

	while ( titles.length ) {
			$.post( // !!! временно из-за [[mediazilla:36839]]
				mw.util.wikiScript( 'api' ),
				{
					action: 'query',
					format: 'json',
					prop: 'info|flagged|categories',
					inprop: 'talkid|watched',
					cllimit: 500,
					titles: titles.splice( 0, 50 ).join( '|' )
				},
				function ( resp ) {
					if ( !resp || !( resp = resp.query ) ) {
						return;
					}
					for ( var id in resp.pages ) {
						markLink( resp.pages[ id ] );
					}
				}
			);
	}
	
	function markLink( pg ) {
		var lnk = $( link[ pg.title ] ),
			li = lnk.closest( 'li' ),
			className,
			catText,
			catColor,
			catTip;

		if ( pg.flagged ) {
			if ( pg.lastrevid == pg.flagged.stable_revid ) {
				className = 'flaggedrevs-color-1';
			} else {
				className = 'flaggedrevs-pending';
				addLink( 'oldid=' + pg.flagged.stable_revid + '&diff=' + pg.lastrevid, 'непров' );
			}
		} else {
			className = 'flaggedrevs-unreviewed';
		}
		li.addClass( className );

		if ( typeof pg.watched === 'string' ) {
			lnk.wrap( '<strong class="mw-watched" />' );
		}

		if ( pg.talkid ) {
			addLink( 'curid=' + pg.talkid, '<b>обс.</b>' );
		}

		if ( pg.categories ) {
			for ( var c = 0; c < pg.categories.length; c++ ) {
				var cat = pg.categories[ c ].title.replace( /^[^:]+:/, '' ); //rm prefix
				if ( /:К быстрому удалению$/.test( cat ) && !catText ) {
					catText = 'КБУ';
					catColor = '#f88';
					catTip = cat;
				} else if ( /:Кандидаты на удаление$/.test( cat ) ) {
					catText = 'К удалению';
					catColor = '#faa';
					catTip = cat;
				} else if ( /^Википедия:БУ:/.test( cat ) ) {
					catText = cat.replace( /^Википедия:/, '' );
					catColor = '#f88';
					catTip = cat;
				} else if ( /^Википедия:К отсроченному удалению$/.test( cat ) ) {
					catText = 'Отсроченное';
					catColor = 'pink';
					catTip = cat;
				} else if ( /:Оспариваемые быстрые удаления$/.test( cat ) ) {
					catText = 'Оспаривается';
					catColor = 'violet';
					catTip = cat;
				}
			}
			if ( catText ) {
				var img = $( '<img>' )
					.css( 'background', catColor )
					.attr( 'title',  '«' + catTip + '»' )
					.text( '(' + catText + ')' );
				li.append( img );
			}
		}

		function addLink( href, content ) {
			var a = $( '<a>' )
				.attr( 'href', mw.config.get( 'wgScript' ) + '?' + href )
				.html( content );
			li
				.find( '.mw-newpages-history a:last' )
				.after( ' | ', a );
		}
	} // markLink
} );