From Wikipedia, the free encyclopedia
Note: After saving, you have to bypass your browser's cache to see the changes. Google Chrome, Firefox, Microsoft Edge and Safari: Hold down the ⇧ Shift key and click the Reload toolbar button. For details and instructions about other browsers, see Wikipedia:Bypass your cache.

// <nowiki>



/*

- Check if article is unreviewed

- If so, display a giant "copyright check" button at the top, to remind you to run Earwig's copyvio detector on the article first thing.

- Many submissions are copyright violations, and catching it before you perform a bunch of other steps in the NPP/AFC flowchart saves time.

*/



class DontForgetG12 {

	constructor() {

		this.mw = mw;

		this.$ = $;

	}



	async execute() {

		if ( !await this.shouldRunOnThisPage() ) {

			return;

		}



		// Only run if 1) draft is submitted

		const isDraftspaceOrUserspace =  118, 2 ].includes( this.namespace );

		const draftIsSubmitted = this.wikicode.match( /(?:{{AfC submission}}|{{AfC submission\|}}|{{AfC submission\|\|)/i ) && isDraftspaceOrUserspace;

		if ( draftIsSubmitted ) {

			this.insertButton( this.title );

		}



		// or 2) article is not marked as reviewed by NPP

		this.mw.hook( 'ext.pageTriage.toolbar.ready' ).add( async function () {

			const pageID = this.mw.config.get( 'wgArticleId' );

			if ( !( await this.isReviewed( pageID ) ) ) {

				this.insertButton( this.title );

			}

		}.bind( this ) );

	}



	async shouldRunOnThisPage() {

		// don't run when not viewing articles

		const action = this.mw.config.get( 'wgAction' );

		if ( action !== 'view' ) {

			return false;

		}



		// don't run when viewing diffs

		const isDiff = this.mw.config.get( 'wgDiffNewId' );

		if ( isDiff ) {

			return false;

		}



		const isDeletedPage = ( !this.mw.config.get( 'wgCurRevisionId' ) );

		if ( isDeletedPage ) {

			return false;

		}



		this.namespace = this.mw.config.get( 'wgNamespaceNumber' );

		const isMainspaceDraftspaceOrUserspace =  0, 118, 2 ].includes( this.namespace );

		if ( !isMainspaceDraftspaceOrUserspace ) {

			return false;

		}



		this.title = this.getArticleName();

		this.wikicode = await this.getWikicode( this.title );



		// Don't run on redirect pages

		const isRedirect = this.wikicode.match( /^#REDIRECT \[\[/i );

		if ( isRedirect ) {

			return false;

		}



		return true;

	}



	/**

	 * @return {string} pagename, including the namespace name, but with spaces replaced by underscores

	 */

	getArticleName() {

		return this.mw.config.get( 'wgPageName' );

	}



	async getWikicode( title ) {

		if ( !this.mw.config.get( 'wgCurRevisionId' ) ) {

			return '';

		}

		// if page is deleted, return blank

		let wikicode = '';

		title = encodeURIComponent( title );

		await this.$.ajax( {

			url: `https://en.wikipedia.org/w/api.php?action=parse&page=${ title }&prop=wikitext&formatversion=2&format=json`,

			success: function ( result ) {

				wikicode = result.parse.wikitext;

			},

			dataType: 'json'

		} );

		return wikicode;

	}



	insertButton( title ) {

		this.$( '#contentSub' ).before( `

			<a style="display: inline-block; color: black; margin-top: 0.5em; border: 2px solid black; padding: 0.25em 3em; background-color: #FFDC00; font-size: 1.5em;" href="https://copyvios.toolforge.org/?lang=en&project=wikipedia&title=` + encodeURIComponent( title ) + `" target="_blank">

				Copyvio check

			</a>

		` );

	}



	async isReviewed( pageId ) {

		const api = new this.mw.Api();

		const response = await api.get( {

			action: 'pagetriagelist',

			format: 'json',

			page_id: pageId

		} );



		// no result

		if ( response.pagetriagelist.result !== 'success' || response.pagetriagelist.pages.length === 0 ) {

			return true;

		// 1, 2, or 3

		} else if ( parseInt( response.pagetriagelist.pages 0 ].patrol_status ) > 0 ) {

			return true;

		// 0

		} else {

			return false;

		}

	}

}



$( async function () {

	await mw.loader.using(  'mediawiki.api' ], async () => {

		await ( new DontForgetG12( mw, $ ) ).execute();

	} );

} );



// </nowiki>
From Wikipedia, the free encyclopedia
Note: After saving, you have to bypass your browser's cache to see the changes. Google Chrome, Firefox, Microsoft Edge and Safari: Hold down the ⇧ Shift key and click the Reload toolbar button. For details and instructions about other browsers, see Wikipedia:Bypass your cache.

// <nowiki>



/*

- Check if article is unreviewed

- If so, display a giant "copyright check" button at the top, to remind you to run Earwig's copyvio detector on the article first thing.

- Many submissions are copyright violations, and catching it before you perform a bunch of other steps in the NPP/AFC flowchart saves time.

*/



class DontForgetG12 {

	constructor() {

		this.mw = mw;

		this.$ = $;

	}



	async execute() {

		if ( !await this.shouldRunOnThisPage() ) {

			return;

		}



		// Only run if 1) draft is submitted

		const isDraftspaceOrUserspace =  118, 2 ].includes( this.namespace );

		const draftIsSubmitted = this.wikicode.match( /(?:{{AfC submission}}|{{AfC submission\|}}|{{AfC submission\|\|)/i ) && isDraftspaceOrUserspace;

		if ( draftIsSubmitted ) {

			this.insertButton( this.title );

		}



		// or 2) article is not marked as reviewed by NPP

		this.mw.hook( 'ext.pageTriage.toolbar.ready' ).add( async function () {

			const pageID = this.mw.config.get( 'wgArticleId' );

			if ( !( await this.isReviewed( pageID ) ) ) {

				this.insertButton( this.title );

			}

		}.bind( this ) );

	}



	async shouldRunOnThisPage() {

		// don't run when not viewing articles

		const action = this.mw.config.get( 'wgAction' );

		if ( action !== 'view' ) {

			return false;

		}



		// don't run when viewing diffs

		const isDiff = this.mw.config.get( 'wgDiffNewId' );

		if ( isDiff ) {

			return false;

		}



		const isDeletedPage = ( !this.mw.config.get( 'wgCurRevisionId' ) );

		if ( isDeletedPage ) {

			return false;

		}



		this.namespace = this.mw.config.get( 'wgNamespaceNumber' );

		const isMainspaceDraftspaceOrUserspace =  0, 118, 2 ].includes( this.namespace );

		if ( !isMainspaceDraftspaceOrUserspace ) {

			return false;

		}



		this.title = this.getArticleName();

		this.wikicode = await this.getWikicode( this.title );



		// Don't run on redirect pages

		const isRedirect = this.wikicode.match( /^#REDIRECT \[\[/i );

		if ( isRedirect ) {

			return false;

		}



		return true;

	}



	/**

	 * @return {string} pagename, including the namespace name, but with spaces replaced by underscores

	 */

	getArticleName() {

		return this.mw.config.get( 'wgPageName' );

	}



	async getWikicode( title ) {

		if ( !this.mw.config.get( 'wgCurRevisionId' ) ) {

			return '';

		}

		// if page is deleted, return blank

		let wikicode = '';

		title = encodeURIComponent( title );

		await this.$.ajax( {

			url: `https://en.wikipedia.org/w/api.php?action=parse&page=${ title }&prop=wikitext&formatversion=2&format=json`,

			success: function ( result ) {

				wikicode = result.parse.wikitext;

			},

			dataType: 'json'

		} );

		return wikicode;

	}



	insertButton( title ) {

		this.$( '#contentSub' ).before( `

			<a style="display: inline-block; color: black; margin-top: 0.5em; border: 2px solid black; padding: 0.25em 3em; background-color: #FFDC00; font-size: 1.5em;" href="https://copyvios.toolforge.org/?lang=en&project=wikipedia&title=` + encodeURIComponent( title ) + `" target="_blank">

				Copyvio check

			</a>

		` );

	}



	async isReviewed( pageId ) {

		const api = new this.mw.Api();

		const response = await api.get( {

			action: 'pagetriagelist',

			format: 'json',

			page_id: pageId

		} );



		// no result

		if ( response.pagetriagelist.result !== 'success' || response.pagetriagelist.pages.length === 0 ) {

			return true;

		// 1, 2, or 3

		} else if ( parseInt( response.pagetriagelist.pages 0 ].patrol_status ) > 0 ) {

			return true;

		// 0

		} else {

			return false;

		}

	}

}



$( async function () {

	await mw.loader.using(  'mediawiki.api' ], async () => {

		await ( new DontForgetG12( mw, $ ) ).execute();

	} );

} );



// </nowiki>

Videos

Youtube | Vimeo | Bing

Websites

Google | Yahoo | Bing

Encyclopedia

Google | Yahoo | Bing

Facebook