JSON_config = {
name: "[[User:DannyS712/JSON.js|JSON]]",
version: 1.0,
debug: false,
manual: true
};
mw.loader.using( 'mediawiki.util', function () {
$(document).ready( function () {
if (JSON_config.manual) {
var link = mw.util.addPortletLink( 'p-cactions', null, 'Get JSON', 'ca-get-JSON', 'get the JSON of this page');
$( link ).click( function ( event ) {
event.preventDefault();
console.log( get_JSON( mw.config.get( 'wgPageName' ) ) );
} );
}
} );
} );
function get_JSON ( page ){
if (JSON_config.debug) console.log( location );
var get_page = {
action: 'query',
titles: page,
prop: 'revisions',
rvprop: 'content',
format: 'json',
formatversion: 2
};
var result = null;
var scriptUrl = mw.config.get( 'wgScriptPath' ) + '/api.php';
$.ajax({
url: scriptUrl,
type: 'get',
data: get_page,
dataType: 'json',
async: false,
success: function(data) {
var text = data.query.pages["0"].revisions["0"].content;
if (JSON_config.debug) console.log ( data );
if (JSON_config.debug) console.log( "Text:", text, "End text" );
var JSONed = JSON.parse( text );
var arr_JSONed = [];
for (var reminder in JSONed){
arr_JSONed.push(JSONed[reminder]);
}
if (JSON_config.debug) console.log( arr_JSONed );
result = arr_JSONed;
}
});
return result;
}
function set_JSON ( page, new_content, edit_summary, on_success ){
if (JSON_config.debug) console.log( page, new_content, edit_summary );
$.ajax({
url: mw.util.wikiScript( 'api' ),
data: {
format: 'json',
action: 'edit',
title: page,
text: new_content,
summary: edit_summary,
token: getToken()
},
dataType: 'json',
type: 'POST',
success: function( data ) {
if ( data && data.edit && data.edit.result == 'Success' ) {
if (on_success) alert( on_success );
} else if ( data && data.error ) {
alert( 'Error: API returned error code "' + data.error.code + '": ' + data.error.info );
} else {
alert( 'Error: Unknown result from API.' );
}
},
error: function( xhr ) {
alert( 'Error: Request failed.' );
} } );
}
function getToken() {
var tokenReq = {
action: 'query',
meta: 'tokens',
format: 'json'
};
var result = null;
var scriptUrl = mw.config.get( 'wgScriptPath' ) + '/api.php';
$.ajax({
url: scriptUrl,
type: 'get',
data: tokenReq,
dataType: 'json',
async: false,
success: function(data) {
result = data.query.tokens.csrftoken;
}
});
return result;
}