Jump to content

User:DannyS712/Draft no cat.js

From Wikipedia, the free encyclopedia
This is an old revision of this page, as edited by DannyS712 (talk | contribs) at 04:50, 4 July 2021 (starting cleanup - use mw.Api). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.
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.
// Install with:
// <code><nowiki>		{{subst:Iusc|User:DannyS712/Draft no cat.js}}																</nowiki></code>
// or with
// <code><nowiki>		importScript( 'User:DannyS712/Draft no cat.js' ); // Backlink: [[User:DannyS712/Draft no cat.js]]			</nowiki></code> 
//
// Includes contributions by [[User:BrownHairedGirl]]
// If forking this script, please note our contributions / give us credit

var DNC_config = {
	name: '[[User:DannyS712/Draft no cat|Draft no cat]]',
	version: 1.6,
	debug: false
};

var DNC_explain_1 = "Disable the categories on this page while it is still a draft, per [[WP:DRAFTNOCAT]]/[[WP:USERNOCAT]]";
var DNC_explain_2 = " The easiest way to do this is by converting them to links, by adding a colon: \"[[Category:\" → \"[[:Category:\"";
var DNC_advert = ' (using '  + DNC_config.name + " v" + DNC_config.version + ").";
var DNC_summary = DNC_explain_1 + DNC_advert + DNC_explain_2;

// if this is  user page, add a ping to the user
if ( mw.config.get( 'wgNamespaceNumber' ) === 2) {
	var username = mw.config.get( 'wgRelevantUserName' );
	DNC_summary = '@[[User:' + username + '|' + username + ']]: ' + DNC_summary;
}

if (DNC_config.debug) console.log ( DNC_summary );

if ( mw.config.get( 'wgNamespaceNumber' ) === 2 || mw.config.get( 'wgNamespaceNumber' ) === 118) {
    mw.loader.using( 'mediawiki.util', function () {
    $(document).ready( function () { 
        var link = mw.util.addPortletLink( 'p-cactions', '#', 'DNC', 'ca-dnc', 'Draft no cats'); 
        $( link ).click( function ( event ) {
            event.preventDefault();
            mw.loader.using( 'mediawiki.api', draft_no_cat );
        } );
    } );
} );
}
function draft_no_cat(){
	var api = new mw.Api();
	api.get( {
		action: 'query',
		titles: mw.config.get( 'wgPageName' ),
		prop: 'revisions',
		rvprop: 'content',
		rvslots: 'main',
		formatversion: 2
	} ).done(
		function ( response ) {
			console.log( response );
			var text = response.query.pages[0].revisions[0].slots.main.content;
			var newText = text
				.replace( /\[\[\s*Category/gi, '\[\[:Category' ); // Replace categorization with links

			api.postWithEditToken( {
				action: 'edit',
				title: mw.config.get( 'wgPageName' ),
				text: newText,
				summary: DNC_summary
			} ).done(
				function() {
					location.reload();
				}
			);
		}
	);
}