var UnsignedHelper={
months:['January','February','March','April','May','June','July','August','September','October','November','December'],
makeUnsignedTemplate:function(user,ts,template){
ts=new Date(ts);
var h=ts.getUTCHours(); if(h<10) h='0' h;
var m=ts.getUTCMinutes(); if(m<10) m='0' m;
ts=h ':' m ', ' ts.getUTCDate() ' ' UnsignedHelper.months[ts.getUTCMonth()] ' ' ts.getUTCFullYear() ' (UTC)';
return '\x7b\x7bsubst:' template '|' user '|' ts '\x7d\x7d';
},
addUnsignedTemplate:function(evt){
mw.loader.using(['mediawiki.util','jquery.ui'], function(){
var f=document.getElementById('editform');
var e=f.elements.wpTextbox1;
var pos=$(e).textSelection('getCaretPosition', {startAndEnd:true});
var txt;
if(pos[0]!=pos[1]){
txt=e.value.substring(pos[0],pos[1]);
pos=pos[1];
} else {
pos=pos[1];
if(pos<=0) pos=e.value.length;
txt=e.value.substr(0,pos);
txt=txt.replace(new RegExp('[\\s\\S]*\\d\\d:\\d\\d, \\d (' UnsignedHelper.months.join('|') ') \\d\\d\\d\\d \\(UTC\\)'), '');
txt=txt.replace(/[\s\S]*\n= .*= \s*\n/, '');
}
txt=txt.replace(/^\s |\s $/g, '');
var rvct=1;
var dialog=$('<div>Examining revision 1...</div>').dialog({
buttons:{ Cancel:function(){ dialog.dialog('close'); } },
modal:true,
title:'Adding \x7b\x7bunsigned\x7d\x7d'
});
var revid, user, ts, comment, template;
var q={
url:mw.util.wikiScript('api'),
dataType:'json',
type:'POST',
data:{
format:'json',
action:'query',
titles:mw.config.get('wgPageName'),
prop:'revisions',
rvprop:'ids|timestamp|user|parsedcomment|content',
rvlimit:1,
rawcontinue:1
},
success:function(r,sts,xhr){
if(!dialog.dialog('isOpen')) return;
if(!r.query || !r.query.pages){
dialog.html('<span style="color:red"><b>Error:</b> Bad response from API</span>');
if(window.console && typeof(window.console.error)=='function')
window.console.error("Bad response", r);
return;
}
for(var k in r.query.pages){
var rr=r.query.pages[k].revisions[0];
var cont = function () {
if(r['query-continue'] && r['query-continue'].revisions){
dialog.html('Evaluating revision ' ( rvct) '...');
q.data.rvcontinue=r['query-continue'].revisions.rvcontinue;
$.ajax(q);
} else {
var t=UnsignedHelper.makeUnsignedTemplate(user,ts,template);
var tt=e.value.substr(0,pos).replace(/\s*$/,' ') t;
e.value=tt e.value.substr(pos);
$(e).textSelection('setSelection', { start:tt.length });
dialog.dialog('close');
}
};
if(typeof(rr['*'])!='undefined' && rr['*'].indexOf(txt)<0){
if(!user){
dialog.html('<span style="color:red"><b>Error:</b> Text was not found in the starting revision! Did you edit it?</span>');
return;
}
var cb = function () {
var t=UnsignedHelper.makeUnsignedTemplate(user,ts,template);
var tt=e.value.substr(0,pos).replace(/\s*$/,' ') t;
e.value=tt e.value.substr(pos);
$(e).textSelection('setSelection', { start:tt.length });
dialog.dialog('close');
};
if(/reverted|undid/i.test(comment)){
var dialog2 = $( '<div>' )
.append(
'The ',
$( '<a>' ).prop( { href: '/w/index.php?diff=prev&oldid=' revid, target: '_blank' } ).text( 'found revision' ),
' may be a revert: ',
comment
)
.dialog( {
title: "Possible revert!",
modal: true,
buttons: {
"Use that revision": function () { dialog2.dialog( 'close' ); cb(); },
"Keep looking": function () { dialog2.dialog( 'close' ); cont(); },
"Cancel": function () { dialog2.dialog( 'close' ); dialog.dialog( 'close' ); },
}
} );
} else {
cb();
}
} else {
revid=rr.revid;
user=rr.user;
ts=rr.timestamp;
comment=rr.parsedcomment;
if ( typeof(rr.anon) !== 'undefined' ) {
template = 'Unsigned IP';
} else if ( typeof(rr.temp) !== 'undefined' ) {
// Seems unlikely "temporary" users will have a user page, so this seems the better template for them for now.
template = 'Unsigned IP';
} else {
template = 'Unsigned';
}
cont();
}
return;
}
dialog.html('<span style="color:red"><b>Error:</b> No revisions found in the page!</span>');
},
error:function(xhr,textStatus,errorThrown){
if(!dialog.dialog('isOpen')) return;
dialog.html('<span style="color:red"><b>Error:</b> ' textStatus ' ' errorThrown '</span>');
}
};
if(f.elements.baseRevId) q.data.rvstartid=f.elements.baseRevId.value;
$.ajax(q);
});
evt.preventDefault();
evt.stopPropagation();
return false;
}
};
if(!window.charinsertCustom) window.charinsertCustom={};
if(!window.charinsertCustom['Insert']) window.charinsertCustom['Insert']='';
window.charinsertCustom['Insert'] =' \x7b\x7bunsigned\x7d\x7d\x10UnsignedHelper.addUnsignedTemplate';
if(!window.charinsertCustom['Wiki markup']) window.charinsertCustom['Wiki markup']='';
window.charinsertCustom['Wiki markup'] =' \x7b\x7bunsigned\x7d\x7d\x10UnsignedHelper.addUnsignedTemplate';
if(window.updateEditTools) window.updateEditTools();