משתמש:Guycn2/Sandbox.js

מתוך ויקיפדיה, האנציקלופדיה החופשית

הערה: לאחר הפרסום, ייתכן שיהיה צורך לנקות את זיכרון המטמון (cache) של הדפדפן כדי להבחין בשינויים.

  • פיירפוקס / ספארי: להחזיק את המקש Shift בעת לחיצה על טעינה מחדש (Reload) או ללחוץ על צירוף המקשים Ctrl-F5 או Ctrl-R (במחשב מק: ⌘-R).
  • גוגל כרום: ללחוץ על צירוף המקשים Ctrl-Shift-R (במחשב מק: ⌘-Shift-R).
  • אינטרנט אקספלורר / אדג': להחזיק את המקש Ctrl בעת לחיצה על רענן (Refresh) או ללחוץ על צירוף המקשים Ctrl-F5.
  • אופרה: ללחוץ על Ctrl-F5.
(async()=>{"use strict";let t=mw.config.get("wgRelevantUserName");if(!t||"Contributions"!==mw.config.get("wgCanonicalSpecialPageName"))return;await $.when($.ready,mw.loader.using("mediawiki.util"));let e=mw.util.addPortletLink("p-cactions","#","Revert!");if(!e)return;e.onclick=s;let i,r,n,o=!0;async function s(t){if(t.preventDefault(),!confirm("Are you sure you want to perform this operation?"))return;this.remove(),r=$("<div>").addClass("mw-content-ltr").css({position:"relative",border:"1px solid black",padding:".2rem .5rem .5rem",margin:".6rem 0 .5rem",minHeight:"1rem",fontSize:"85%",maxHeight:"16rem",overflowY:"auto"}),$("#contentSub").after(r);let e=$("<button>").css("margin-right",".3rem").attr("type","button").text("toggle scroll").click(a),o=$("<button>").attr("type","button").text("stop").click(l);$("<div>").css({position:"sticky",float:"right",top:".5rem"}).append(e,o).appendTo(r),n=$("<ul>").appendTo(r),await mw.loader.using("mediawiki.api"),i=new mw.Api,p()}function a(){o=!o}function l(){i.abort(),location.reload(!0)}function c(){return`<span style="color: gray;font-size:91%;">( ${new Date().toLocaleString("he-il",{timeStyle:"medium"})} )</span>`}function u(t){$("<li>").hide().html(`${c()} ${t}`).appendTo(n).fadeIn("slow"),o&&(r[0].scrollTop=r[0].scrollHeight)}async function p(){u("Getting pages...");let e=await i.get({list:"usercontribs",uclimit:"max",ucuser:t,ucprop:"title",ucshow:"!new|top"});if(e&&e.query&&e.query.usercontribs&&e.query.usercontribs.length){let r=e.query.usercontribs.map(t=>t.title);await m(r)}else u("No new edits found.");await g(2700),p()}function g(t){let e=$.Deferred();return setTimeout(()=>e.resolve(),t),e}async function m(t){for(let e of t)await f(e),await g(300)}async function f(t){u(`Reverting page ${t}...`);let e=await y(t);if("string"!=typeof e)return d(t,'<span style="color:red;">Failed</span>');try{let r=await i.postWithEditToken({action:"edit",title:t,nocreate:!0,text:e,summary:"he"===mw.config.get("wgUserLanguage")?"שחזור":"Revert"});if(r&&r.edit&&"Success"==r.edit.result)return d(t,'<span style="color:green;">Success</span>');return d(t,'<span style="color:red;">Failed</span>')}catch(n){return d(t,`<span style="color:red;">Failed (${n})</span>`)}}function d(t,e){let i=n.children("li:last-child").eq(0),r=i.html(),o=mw.util.getUrl(t,{action:"history"}),s=mw.util.wikiScript("api")+`?action=query&format=rawfm&titles=${encodeURIComponent(t)}&prop=revisions&rvprop=user%7Ccomment%7Ctimestamp&rvlimit=25`;i.html(`${r} ${e} (<a target="_blank" href="${o}">hist</a> | <a target="_blank" href="${s}">insight</a>)`)}async function y(e){let r=await i.get({titles:e,prop:"revisions",rvexcludeuser:t,rvprop:"content",rvslots:"*",rvlimit:1});if(!r||!r.query||"object"!=typeof r.query.pages)return!1;let n=Object.keys(r.query.pages)[0],o=r.query.pages[n];return"object"==typeof o&&!!o.revisions&&!!o.revisions[0]&&!!o.revisions[0].slots&&!!o.revisions[0].slots.main&&"string"==typeof o.revisions[0].slots.main["*"]&&o.revisions[0].slots.main["*"]}})();