User:DannyS712/Draft no cat.js

// Install with:

// {{subst:Iusc|User:DannyS712/Draft no cat.js}}

// or with

// importScript( 'User:DannyS712/Draft no cat.js' ); // Backlink: User:DannyS712/Draft no cat.js

//

// Includes contributions by User:BrownHairedGirl

// If forking this script, please note our contributions / give us credit

$(() => {

const DraftNoCat = {};

window.DraftNoCat = DraftNoCat;

DraftNoCat.config = {

name: 'Draft no cat',

version: 1.8,

debug: false

};

DraftNoCat.summary = "Disable the categories on this page while it is still a draft, per WP:DRAFTNOCAT/WP:USERNOCAT" +

' (using ' + DraftNoCat.config.name + " v" + DraftNoCat.config.version + ")." +

" The easiest way to do this is by converting them to links, by adding a colon: \"[[Category:\" → \"[[:Category:\"";

DraftNoCat.run = function () {

var editSummary = DraftNoCat.summary;

// if this is user page, add a ping to the user

if ( mw.config.get( 'wgNamespaceNumber' ) === 2) {

var username = mw.config.get( 'wgRelevantUserName' );

editSummary = '@' + username + ': ' + editSummary;

}

if ( DraftNoCat.config.debug ) {

console.log ( editSummary );

}

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: editSummary,

minor: true

} ).done(

function() {

location.reload();

}

);

}

);

};

});

$( document ).ready( () => {

if ( mw.config.get( 'wgNamespaceNumber' ) === 2 || mw.config.get( 'wgNamespaceNumber' ) === 118 ) {

mw.loader.using(

[ 'mediawiki.util' ],

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', window.DraftNoCat.run );

} );

}

);

}

} );