MediaWiki:Gadget-common-special-newpages.js

З Вікіпедыі, свабоднай энцыклапедыі

Заўвага: Пасля апублікавання, вам можа спатрэбіцца ачыстка кэшу браўзера, каб убачыць унесеныя змены.

  • Firefox / Safari: націсніце Reload, утрымліваючы Shift, або націсніце Ctrl-F5 ці Ctrl-R (⌘-R на Макінтошах)
  • Google Chrome: Націсніце Ctrl-Shift-R (⌘-Shift-R на Mac)
  • Internet Explorer / Edge: націсніце Refresh, утрымліваючы Ctrl, або націсніце Ctrl-F5
  • Opera: Увайдзіце Menu → Settings (Opera → Preferences на Mac), далей Privacy & security → Clear browsing data → Cached images and files.
$( 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;
				}
			}
			if ( catText ) {
				var span = $( '<span>' )
					.css( 'background', catColor )
					.attr( 'title',  '«' + catTip + '»' )
					.text( '(' + catText + ')' );
				li.append( span );
			}
		}

		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
} );