User:Enterprisey/sync-template-sandbox.js
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.
$( function() {
// 10 is "Template:" and 828 is "Module:"
if ( ( mw.config.get( "wgNamespaceNumber" ) === 10 || mw.config.get( "wgNamespaceNumber" ) === 828 ) && mw.config.get( "wgPageName" ).includes( "/sandbox" ) ) {
var link = mw.util.addPortletLink(
"p-cactions",
"#",
"Sync with main",
"ca-sync",
"Overwrite the sandbox code with the code from the main template"
);
mw.loader.using( "mediawiki.api", function () {
link.addEventListener( "click", function () {
var api = new mw.Api();
api.get( {
prop: 'revisions',
rvprop: 'content',
rvlimit: 1,
titles: mw.config.get( "wgPageName" ).replace( "/sandbox", "" )
} ).done( function ( data ) {
if ( !data.query || !data.query.pages ) return;
var pageid = Object.getOwnPropertyNames( data.query.pages )[0],
text = data.query.pages[pageid].revisions[0]["*"];
api.postWithEditToken( {
action: "edit",
title: mw.config.get( "wgPageName" ),
summary: "Syncing sandbox code with main template ([[User:APerson/sync-template-sandbox|sync-template-sandbox.js]])",
text: text
} ).done ( function ( data ) {
if ( data && data.edit && data.edit.result && data.edit.result == 'Success' ) {
mw.notify( "Synced successfully! Reloading in 5 seconds..." );
window.setTimeout( function () {
document.location.reload( true );
}, 5000 );
}
} );
} );
} );
} );
}
} );