Jump to content

User:DannyS712 test/AD clerk bot.js

From Wikipedia, the free encyclopedia
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
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>
$(function (){
var AD_bot_config = {
	name: '[[User:DannyS712/Abandoned drafts bot|Abandoned drafts bot]]',
//	testing: true,
//	disclaimer: "Bot in trial ([[Wikipedia:Bots/Requests for approval/DannyS712 bot 18|BRFA]])",
	version: 1.8,
	debug: false
};
var AD_bot_summary = 'Task 18: Clerking with ' + AD_bot_config.name + ' (version ' + AD_bot_config.version + ')';
//if (AD_bot_config.testing){
//	AD_bot_summary = AD_bot_config.disclaimer + ": " + AD_bot_summary;
//}

var links_to_remove = [];

mw.loader.using( 'mediawiki.util', function () {
	importScript( 'User:DannyS712 test/page.js' );
    $(document).ready( function () { 
    	if (  mw.config.get('wgPageName').indexOf( 'Wikipedia:WikiProject_Abandoned_Drafts/Stale_drafts') > -1 ){
    		$( '#firstHeading' ).append( '&nbsp; <span id="ca-numberOfRedirectsAndRedlinks" style="font-size: medium !important; color: #000 !important; font-family: sans-serif !important; float: right"> &nbsp;&nbsp;&nbsp;&nbsp;</span> ' );
    		get_links();
    		$( '#ca-numberOfRedirectsAndRedlinks' ).html( 'There are: ' + links_to_remove.length + ' links that can be removed.');
        	$('.mw-redirect').css( {"border": "5px solid yellow", "color": "#006600" } );
        	$('.new').css( "border", "5px solid yellow" );
        	mw.util.addPortletLink ( 'p-tb', 'javascript:void(0)', 'Abandoned drafts', 'ca-AD-clerk', 'TOOLTIP');
	    	$('#ca-AD-clerk').on('click', function() {
	        	AD();
			} );
	    }
    } );
} );
function get_links(){
	// Gather all links with class "new" or "mw-redirect"
	var links = [];
	var link_class = "";
	var a = document.getElementsByTagName('a');
	for (var i = 0; i < a.length; i++) {
		link_class = a[i].getAttribute('class');
		if (link_class){
			if (AD_bot_config.debug) console.log(a[i], link_class);
			if (link_class.indexOf("mw-redirect") > -1) {
				links.push( a[i].getAttribute('title') );
				if (AD_bot_config.debug) console.log( "Will remove:", a[i] );
			} else if (link_class.indexOf("new") > -1) {
				links.push( a[i].getAttribute('title').replace(" (page does not exist)", "") );
				if (AD_bot_config.debug) console.log( "Will remove:", a[i] );
			}
		}
	}
	console.log( links );
	links_to_remove = links;
}

function AD(){
	links = links_to_remove;
	
	var page_name = mw.config.get( 'wgPageName' );
	var page_content = get_page( page_name );
	console.log( page_content );
	
	var lines = page_content.split('\n');
	var new_lines = [];
	for (var jjj = 0; jjj < lines.length; jjj++){
		if (should_keep(links, lines[jjj])) new_lines.push(lines[jjj]);
	}
	console.log( new_lines );
	var new_content = new_lines.join('\n');
	console.log( new_content );
	var with_empty_removed = new_content.replace(/== Section \d* ==\n*(== Section \d* ==)/gi, '$1');
	console.log( with_empty_removed );
	
	set_new( page_name, with_empty_removed );
}
function should_keep( links, line ){
	for (var iii = 0; iii < links.length; iii++){
		if (line.indexOf(links[iii]) > -1) return false;
	}
	return true;
}
function set_new ( page, new_content ){
	if( AD_bot_config.debug) console.log( page, new_content );
    var to_send = {
        action: 'edit',
        title: page,
		//pageid: mw.config.get( 'wgArticleId' ),
        text: new_content,
        notminor: true,
        bot: true,
        summary: AD_bot_summary,
        token: mw.user.tokens.get( 'csrfToken' )
    };
    console.log( to_send );
    
    $.when(
        $.post( scriptUrl, to_send, function(){ } )
    ).done( function() {
        location.reload();
    } );
}
});
//</nowiki>