MediaWiki:Common.js: Difference between revisions
Appearance
No edit summary Tag: Reverted |
No edit summary Tag: Reverted |
||
| Line 1: | Line 1: | ||
mw.loader.using(['mediawiki.api'],function(){ | mw.loader.using(['mediawiki.api'],function(){ | ||
if(!$('.build-layout-container .vote').length)return; | |||
var api=new mw.Api(),title=mw.config.get('wgPageName')||'',THROTTLE=30,last=0; | |||
function touch(){ | |||
var now=Date.now();if(now-last<THROTTLE*1000)return;last=now; | |||
api.get({action:'query',prop:'revisions',rvprop:'content|timestamp',rvslots:'main',titles:title,format:'json'}).done(function(r){ | |||
var pages=r.query&&r.query.pages;if(!pages)return;var p=pages[Object.keys(pages)[0]]; | |||
if(!p||!p.revisions||!p.revisions.length)return;var rev=p.revisions[0]; | |||
var text=(rev.slots&&rev.slots.main&&rev.slots.main['*'])||rev['*']||'';var ts=rev.timestamp; | |||
var m=/<!--\s*VOTE_TOUCH:\s*([^>]*)\s*-->/i;var d=new Date(),z=function(n){return n<10?'0'+n:n;}; | |||
return | |||
api | |||
function | |||
api.get({action:'query',prop:'revisions',rvprop:'content|timestamp',rvslots:'main',titles:title,format:'json' | |||
var pages= | |||
if(!p||!p.revisions||!p.revisions.length)return; | |||
var rev=p.revisions[0] | |||
var m=/<!--\s*VOTE_TOUCH:\s*([^>]*)\s*-->/i | |||
var stamp=''+d.getUTCFullYear()+z(d.getUTCMonth()+1)+z(d.getUTCDate())+z(d.getUTCHours())+z(d.getUTCMinutes())+z(d.getUTCSeconds()); | var stamp=''+d.getUTCFullYear()+z(d.getUTCMonth()+1)+z(d.getUTCDate())+z(d.getUTCHours())+z(d.getUTCMinutes())+z(d.getUTCSeconds()); | ||
if(m.test(text)) | if(m.test(text))text=text.replace(m,'<!-- VOTE_TOUCH: '+stamp+' -->');else text+='\n<!-- VOTE_TOUCH: '+stamp+' -->\n'; | ||
api.postWithToken('csrf',{action:'edit',title:title,text:text,summary:' | api.postWithToken('csrf',{action:'edit',title:title,text:text,summary:'Refresh build votes (auto)',minor:1,bot:1,basetimestamp:ts}); | ||
}); | }); | ||
} | } | ||
var | var t=null,obs=new MutationObserver(function(){if(t)clearTimeout(t);t=setTimeout(touch,600);}); | ||
if( | |||
}); | |||
obs.observe(document.body,{childList:true,subtree:true,characterData:true}); | obs.observe(document.body,{childList:true,subtree:true,characterData:true}); | ||
}); | }); | ||
Revision as of 23:09, 4 October 2025
mw.loader.using(['mediawiki.api'],function(){
if(!$('.build-layout-container .vote').length)return;
var api=new mw.Api(),title=mw.config.get('wgPageName')||'',THROTTLE=30,last=0;
function touch(){
var now=Date.now();if(now-last<THROTTLE*1000)return;last=now;
api.get({action:'query',prop:'revisions',rvprop:'content|timestamp',rvslots:'main',titles:title,format:'json'}).done(function(r){
var pages=r.query&&r.query.pages;if(!pages)return;var p=pages[Object.keys(pages)[0]];
if(!p||!p.revisions||!p.revisions.length)return;var rev=p.revisions[0];
var text=(rev.slots&&rev.slots.main&&rev.slots.main['*'])||rev['*']||'';var ts=rev.timestamp;
var m=/<!--\s*VOTE_TOUCH:\s*([^>]*)\s*-->/i;var d=new Date(),z=function(n){return n<10?'0'+n:n;};
var stamp=''+d.getUTCFullYear()+z(d.getUTCMonth()+1)+z(d.getUTCDate())+z(d.getUTCHours())+z(d.getUTCMinutes())+z(d.getUTCSeconds());
if(m.test(text))text=text.replace(m,'<!-- VOTE_TOUCH: '+stamp+' -->');else text+='\n<!-- VOTE_TOUCH: '+stamp+' -->\n';
api.postWithToken('csrf',{action:'edit',title:title,text:text,summary:'Refresh build votes (auto)',minor:1,bot:1,basetimestamp:ts});
});
}
var t=null,obs=new MutationObserver(function(){if(t)clearTimeout(t);t=setTimeout(touch,600);});
obs.observe(document.body,{childList:true,subtree:true,characterData:true});
});