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 CC_config = {
	name: '[[User:DannyS712/Copy categories|Copy categories.js]]',
	version: 1.0,
	debug: true
};
var CC_summary = 'Correct name parameter with ' + CC_config.name + ' (version ' + CC_config.version + ')';
var scriptUrl = mw.config.get( 'wgScriptPath' ) + '/api.php';

mw.loader.using( 'mediawiki.util', function () {
    $(document).ready( function () { 
    	mw.util.addPortletLink ( 'p-cactions', 'javascript:void(0)', 'Copy categories', 'cat-copy', 'TOOLTIP');
    	$('#cat-copy').on('click', function() {
        	Copy_categories();
    	} );
    } );
} );
function Copy_categories(){
	var name = mw.config.get( 'wgPageName' );
	var base_page = name.replace(/Portal:/, "");
	var base_categories = get_cats ( base_page );
	if (CC_config.debug) console.log ( base_categories );
	var current_portal = get_page( name );
	if (CC_config.debug) console.log ( current_portal );
	//set_new ( name, new_page );
}
function get_cats( name ){
    var page_to_get = {
        action: 'query',
        titles: name,
        prop: 'categories',
        cllimit: 'max',
        clshow: '!hidden',
        format: 'json',
        formatversion: 2
    };
    var result = null;
	$.ajax({
		url: scriptUrl,
		type: 'get',
		data: page_to_get,
		dataType: 'json',
		async: false,
		success: function(cats) {
			if (CC_config.debug) console.log( cats );
			var partial_result = cats.query.pages["0"].categories;
			var categories = [];
			for (var iii = 0; iii < partial_result.length; iii++){
				categories.push(partial_result[iii].title);
			}
			console.log( categories );
			result = categories;
		} 
	});
	return result;
}
function get_page( name ){
    var page_to_get = {
        action: 'query',
        titles: name,
        prop: 'revisions',
        rvprop: 'content',
        format: 'json',
        formatversion: 2
    };
    var result = null;
	$.ajax({
		url: scriptUrl,
		type: 'get',
		data: page_to_get,
		dataType: 'json',
		async: false,
		success: function(page) {
			if (CC_config.debug) console.log( page );
	    	result = page.query.pages["0"].revisions["0"].content;
	    	if (CC_config.debug) console.log( result );
		} 
	});
	return result;
}
function set_new ( page, new_content ){
	console.log( page, new_content );
    var to_send = {
        action: 'edit',
        title: page,
        text: new_content,
        minor: true,
        summary: CC_summary,
        token: mw.user.tokens.get( 'csrfToken' )
    };
    console.log( to_send );
    $.when(
        $.post( scriptUrl, to_send, function( response ){ } )
    ).done( function() {
		location.reload();
    } );
}
});
//</nowiki>