User:DannyS712 test/undo.js

// Install with:

// {{subst:Iusc|User:DannyS712/Force EC.js}}

// or with

// importScript( 'User:DannyS712/Force EC.js' ); // Backlink: User:DannyS712/Force EC.js

//

// If forking this script, please note my contributions / give me credit

//

$(function() {

var EC_config = {

name: 'Force EC.js',

version: 1.0,

debug: false

};

var url = window.location.href;

console.log( url );

if (url.indexOf('action=history') > -1){

if (location.search.includes('action=history')) {

var parent_ids = document.querySelectorAll('li[data-mw-revid]');

var revid, rev_user, links;

for (var iii = 0; iii < parent_ids.length; iii++) {

revid = parent_ids[iii].getAttribute('data-mw-revid');

if (revid && revid != mw.config.get('wgCurRevisionId')) {

rev_user = parent_ids[iii].getElementsByClassName('history-user')[0].getElementsByTagName('a')[0].getAttribute('title').replace('User:','');

var params = $.param({

title: mw.config.get('wgPageName'),

action: 'submit',

summary: 'Partially undo edits starting from revision ' + revid,

from_old: revid

});

links = parent_ids[iii].getElementsByClassName('mw-changeslist-links');

links[links.length - 1].innerHTML += 'Partially undo';

}

}

}

} else if (url.indexOf('submit') > -1 && url.indexOf('from_old') > -1){

var scriptUrl = mw.config.get( 'wgScriptPath' ) + '/api.php';

var revid = url.replace(/.*from_old=/, '');

var old_content = get_page( revid );

var initial_content = '{{subst:void|LEAVE THIS LINE ALONE, IT FORCES THE EDIT CONFLIC}}' + old_content.replace(/=\n/g, '=\n{{subst:void|}}') + '\n{{subst:void|LEAVE THIS LINE ALONE, IT FORCES THE EDIT CONFLIC}}';

var old_time = get_rev( revid );

console.log( revid, old_time );

$('input[name=wpStarttime]').val(old_time);

$('input[name=wpEdittime]').val(old_time);

$('input[name=editRevId]').val(revid);

$('input[name=baseRevId]').val(revid);

$('input[name=parentRevId]').val(revid);

$('#wpTextbox1').val(initial_content);

}

function get_page( old_id ){

var scriptUrl = mw.config.get( 'wgScriptPath' ) + '/api.php';

console.log( old_id );

var page_to_get = {

action: 'parse',

oldid: old_id,

prop: 'wikitext',

format: 'json',

formatversion: 2

};

var result = null;

$.ajax({

url: scriptUrl,

type: 'get',

data: page_to_get,

dataType: 'json',

async: false,

success: function(page) {

console.log( page );

var text = page.parse.wikitext;

//console.log( text );

result = text;

}

});

return result;

}

function get_rev( rev ){

var scriptUrl = mw.config.get( 'wgScriptPath' ) + '/api.php';

console.log( rev );

var rev_to_get = {

action: 'query',

prop: 'revisions',

titles: mw.config.get('wgPageName'),

rvprop: 'timestamp',

rvstartid: rev,

rvlimit: 1,

format: 'json',

formatversion: 2

};

var result = null;

$.ajax({

url: scriptUrl,

type: 'get',

data: rev_to_get,

dataType: 'json',

async: false,

success: function(rev_info) {

console.log( rev_info );

var rev_time = rev_info.query.pages[0].revisions[0].timestamp.replace(/[^0-9]/g, '');

console.log( rev_time );

result = rev_time;

}

});

return result;

}

});

//