Jump to content

User:DannyS712 test/AD clerk bot.js

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>
$(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>