User:NKohli (WMF)/megawatch.js

/* Watch/unwatch all pages (up to 500) in a category */

// @param n Number of pages to watch/unwatch // @param act Action: watch or unwatch function watchPages( n, act ) { // Make the ajax request to fetch subpages $.ajax( {			url: mw.util.wikiScript( 'api' ),			data: {				action: 'query',				list: 	'categorymembers',				format: 'json',				cmtitle: mw.config.get( 'wgPageName' ),				formatversion:	2,				cmprop: 'title',				cmtype: 'page',				cmlimit: n			},			success: function( data ) {				subpgs = data.query.categorymembers;				// Check if we got anything				if ( !subpgs ) {					console.log('none found');				} else {					result = [];			 		for( var i = 0; i < subpgs.length; i++) {			 			result.push( subpgs[i].title );			 		}

// Post the watch request if ( act == 'watch' ) { new mw.Api.postWithToken( 'watch', {							action: 'watch',							titles: $.isArray( result ) ? result.join( '|' ) : String( result ),							formatversion: 2,							format: 'json'						} ) .fail( function ( code, errResponse ) { console.log( errResponse ); } ) .done( function { 							$( '#megawatch' ).addClass( 'watched' );						} ); // Or the unwatch request } else { new mw.Api.postWithToken( 'watch', {							action: 'watch',							titles: $.isArray( result ) ? result.join( '|' ) : String( result ),							formatversion: 2,							format: 'json',							unwatch: 'true'						} ) .fail( function ( code, errResponse ) { console.log( errResponse ); } ) .done( function { 							$( '#megawatch' ).removeClass( 'watched' );						} ); }				}			}		} ); }

$( document ).ready( function {	if ( mw.config.get( 'wgCanonicalNamespace' ) == 'Category' ) {		$( '#p-cactions' ).find( 'ul' ).append( "Megawatch\n" );		$( '#megawatch' ).click( function { var n = 500; if ( $( '#megawatch' ).hasClass( 'watched' ) ) { var r = confirm( 'Are you sure you want to unwatch all pages in this category? (Restricted to top 50 pages only)' ); if ( r == true ) { watchPages( n, 'unwatch' ); }			} else { var r = confirm( 'Are you sure you want to watch all pages in this category? (Restricted to top 50 pages only)' ); if ( r == true ) { watchPages( n, 'watch' ); }			}		} );	} } );