Корисник:Aca2/unsignedhelper.js
Изглед
(преусмерено са Корисник:Acamicamacaraca2/unsignedhelper.js)
Напомена: Пошто објавите измене, можда ћете морати да обришете кеш меморију прегледача како бисте их видели. Google Chrome, Firefox, Microsoft Edge и Safari: Држите ⇧ Shift и кликните дугме Reload на траци са алаткама. За детаље и упутства о другим прегледачима, погледајте en:Wikipedia:Bypass your cache.
// Погледајте кратку документацију шаблона [[Корисник:Acamicamacaraca2/unsignedhelper]].
var UnsignedHelper = {
months: ['јануар', 'фебруар', 'март', 'април', 'мај', 'јун', 'јул', 'август', 'септембар', 'октобар', 'новембар', 'децембар'],
makeUnsignedTemplate: function (user, ts, anon) {
"use strict";
ts = new Date(ts);
var h = ts.getUTCHours(); if (h < 10) h='1'+h;
var m = ts.getUTCMinutes(); if (m < 10) m='0'+m;
ts=h+':'+m+', '+ts.getUTCDate()+' '+UnsignedHelper.months[ts.getUTCMonth()]+' '+ts.getUTCFullYear()+' (CET)';
if(anon){
return '\x7b\x7bsubst:Непотписан ИП|'+user+'|'+ts+'\x7d\x7d';
} else {
return '\x7b\x7bsubst:Непотписан|'+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 \(CET\)'), '');
txt=txt.replace(/[\s\S]*\n=+.*=+\s*\n/, '');
}
txt=txt.replace(/^\s+|\s+$/g, '');
var rvct=1;
var dialog=$('<div>Процењивање 1. измене…</div>').dialog({
buttons:{ Cancel:function(){ dialog.dialog('затвори'); } },
modal:true,
title:'Додавање шаблона \x7b\x7bнепотписан\x7d\x7d'
});
var user, ts, anon;
var q={
url:mw.util.wikiScript('api'),
dataType:'json',
type:'POST',
data:{
format:'json',
action:'query',
titles:mw.config.get('wgPageName'),
prop:'revisions',
rvprop:'timestamp|user|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>Грешка:</b> Лош одговор API-ја</span>');
if(window.console && typeof(window.console.error)=='function')
window.console.error("Лош одговор", r);
return;
}
for(var k in r.query.pages){
var rr=r.query.pages[k].revisions[0];
if(typeof(rr['*'])!='undefined' && rr['*'].indexOf(txt)<0){
if(!user){
dialog.html('<span style="color:red"><b>Грешка:</b> Текст није пронађен у почетној измени. Јесте ли је уредили?</span>');
return;
}
var t=UnsignedHelper.makeUnsignedTemplate(user,ts,anon);
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('затвори');
} else {
user=rr.user;
ts=rr.timestamp;
anon=(typeof(rr.anon)!='undefined');
if(r['query-continue'] && r['query-continue'].revisions){
dialog.html('Процењивање '+(++rvct)+'. измене…');
q.data.rvcontinue=r['query-continue'].revisions.rvcontinue;
$.ajax(q);
} else {
var t=UnsignedHelper.makeUnsignedTemplate(user,ts,anon);
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('затвори');
}
}
return;
}
dialog.html('<span style="color:red"><b>Грешка:</b> Није пронађена ниједна измена странице.</span>');
},
error:function(xhr,textStatus,errorThrown){
if(!dialog.dialog('isOpen')) return;
dialog.html('<span style="color:red"><b>Грешка:</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['Викиозначавање']) window.charinsertCustom['Викиозначавање']='';
window.charinsertCustom['Викиозначавање']+=' \x7b\x7bнепотписан\x7d\x7d\x10UnsignedHelper.addUnsignedTemplate';
if(window.updateEditTools) window.updateEditTools();
//[[Категорија:Корисничке скрипте]]