User:1234qwer1234qwer4/BookCat.js

Note: After saving, changes may not occur immediately. Click here to learn how to bypass your browser's cache.
  • Mozilla / Firefox / Safari: hold down Shift while clicking Reload, or press Ctrl-Shift-R (Cmd-Shift-R on Apple Mac);
  • Internet Explorer: hold Ctrl while clicking Refresh, or press Ctrl-F5;
  • Konqueror: simply click the Reload button, or press F5;
  • Opera users may need to completely clear their cache in Tools→Preferences.
// based on https://en.wikipedia.org/wiki/User:DannyS712/Draft_no_cat.js
// Set `var bookCatAJAX = true;` to add BookCat without reloading the page
$(() => {
const bookCat = {};
window.bookCat = bookCat;
bookCat.config = {
	name: '[[User:1234qwer1234qwer4/BookCat.js|BookCat.js]]',
	debug: false
};

bookCat.summary = "Added {{[[Template:BookCat|BookCat]]}} using " + bookCat.config.name;
	
bookCat.run = function () {
	var editSummary = bookCat.summary;
	
	if ( bookCat.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;
			if(text.match(/\{\{\s*Bookcat\s*\}\}/i)){
				return mw.notify("BookCat already present.");
			}
			text += '\n\n{{BookCat}}';
			api.postWithEditToken( {
				action: 'edit',
				minor: true,
				title: mw.config.get( 'wgPageName' ),
				text: text,
				summary: editSummary
			} ).done(
				function() {
					if(bookCatAJAX === undefined || bookCatAJAX == false){
						location.reload();
					}
					else mw.notify("BookCat successfully added.");
				}
			);
		}
	);
};

});

$( document ).ready( () => {
	if ( mw.config.get( 'wgNamespaceNumber' ) === 0 && mw.config.get('wgAction') === 'view' && mw.config.get('wgCategories').every(e => !e.includes("Book:")) ) {
		mw.loader.using(
			[ 'mediawiki.util' ],
			function () {
				var  link = mw.util.addPortletLink( 'p-cactions', '#', 'BookCat', 'ca-bookcat', 'Add BookCat'); 
				$( link ).click( function ( event ) {
					event.preventDefault();
					mw.loader.using( 'mediawiki.api', window.bookCat.run );
				} );
			}
		);
	}
} );