Diferencia entre revisiones de «MediaWiki:Gadget-DeletionHelper.js»
(Página creada con «→* <nowiki> * DeletionHelper.js by User:Ricordisamoa * uses jQuery & Ajax * helps sysops (and not) on Wikidata with DRs: $(document).ready(function(){ if((wgPag...») |
(Sin diferencias)
|
Revisión actual del 09:10 9 abr 2014
/** <nowiki> * DeletionHelper.js by [[User:Ricordisamoa]] * uses jQuery & Ajax * helps sysops (and not) on Wikidata with DRs */ $(document).ready(function(){ if((wgPageName!="Wikidata:Requests_for_deletions"&&wgPageName!="Wikidata:Requests_for_deletions/all")||wgAction=="view") return; // the page is 'Wikidata:Request for deletions' in 'view' mode $("h2 .mw-headline").not(":has(a.new)")// items not already deleted .each(function(i,e){ var entityId=$(e).text(); $.getJSON( mw.util.wikiScript("api"), { format:"json", action:"wbgetentities", ids:$(e).text() }, function(data){ if(data.success&&data.entities[Object.keys(data.entities)[0]]){ var entity=data.entities[Object.keys(data.entities)[0]]; var length=0; if(typeof(entity.sitelinks)=="object") length=Object.keys(entity.sitelinks).length; if(length===0) $(e).children("a").first().css("color","teal"); $("<span>") .html(" ("+(length>0?length+" sitelink"+(length>1?"s":""):"empty")+")") .css("font-size","50%") .appendTo(e); } } ); $.getJSON( mw.util.wikiScript("api"), { action:"query", format:"json", prop:"revisions", titles:entityId, rvprop:"content|user|ids", rvlimit:"max" }, function(data){ try { var pages = data.query.pages; pages = pages[Object.keys(pages)[0]].revisions; pages.length; } catch(e) { // Give up silently return; } var remL={}; $.each(pages,function(y,z){ var links=Object.keys(JSON.parse(z["*"]).links); if(y<pages.length-1&&typeof(JSON.parse(pages[y+1]["*"]).links)==="object"){ var nextLinks=Object.keys(JSON.parse(pages[y+1]["*"]).links); var removedLinks=$(nextLinks).not(links).get(); removedLinks=$.map(removedLinks,function(e){return e.replace(/wiki$/,"");}); if(removedLinks.length>0){ var rl={revid:z.revid,parentid:z.parentid,links:removedLinks}; if(typeof(remL[z.user])!="undefined") remL[z.user].push(rl); else remL[z.user]=[rl]; } } }); var p=$("<p>").css("color","#630");// change color, according to Reza1615 if(Object.keys(remL).length===0) p.append("No sitelinks were removed"); else $.each(remL,function(k,v){ p.append("Removed "); var abcd=false; $.each(v,function(o,j){ p.append( $("<a>") .text(j.links.join(", ")) .attr("href", mw.util.wikiScript()+"?"+ $.param({ title:entityId, oldid:j.parentid, diff:j.revid }) ) ); if(o<v.length-1){ abcd=true; p.append(", "); } }); p.append(" link"+(abcd===true?"s":"")+" by ") .append( $("<a>") .text(k) .attr("href",mw.util.getUrl("User:"+k)) ); }); $(e).parent().next("p").find("span.plainlinks").first()// (delete | history | links | log) .after(p); } ); }); $("li").not(":has(a.new)")// items not already deleted .each(function(i,e){ if(/[Qq](\d*) \(delete \| history \| links \| log\)/.test($(e).text()) === true){ var entityId=$(e).text().replace(/(.*) \(delete \| history \| links \| log\)/,"$1"); $.getJSON( mw.util.wikiScript("api"), { format:"json", action:"wbgetentities", ids:entityId }, function(data){ if(data.success&&data.entities[Object.keys(data.entities)[0]]){ var entity=data.entities[Object.keys(data.entities)[0]]; var length=0; if(typeof(entity.sitelinks)=="object") length=Object.keys(entity.sitelinks).length; if(length===0) $(e).children("a").first().css("color","teal"); $("<span>") .html(" ("+(length>0?length+" <i>sitelink"+(length>1?"s":""):"empty")+"</i>)") .css("font-size","70%") .css("vertical-align","middle") .appendTo(e); } } ); } }); var work = []; $("h2>span.mw-editsection").each(function(i,e){ var index=parseInt($(e).children("a").first().attr("href").replace(/^.+[\?&]section=(T\-)?([0-9]+)$/,"$2")); $(e).parent().attr("id","section"+index); work[index] = false; $.get( mw.util.wikiScript(), {title:"Wikidata:Requests_for_deletions",action:"raw",section:index} ) .done(function(d){ if(/\{\{([Nn]ot )?[Dd](eleted|one)(\|admin=[^\{\}]+)?\}\}/.test(d)===false){ $("<a>") .html(" Yes ") .attr("href", "javascript:;") .attr("title","Mark as deleted") .attr("style",'background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAWCAMAAAA2GAaYAAAAQlBMVEUpflI7tXYxl2MujVwqgFQ1omk2pWwoeU8vkF4sh1gwlGA5rnI7s3Uzm2U3qG4oe1A0n2c4q3AtilovfVUrg1Y6sXPiEyGEAAAAKElEQVR4XgXAhQ2AMAAAsM4Ft/9fJYLVZ3HZVcVpE01dchteGYfm+QEULwDomj1/qwAAAABJRU5ErkJggg==") repeat-x scroll 50% 100% #3365BA !important; color: white; float: right; font-size: 0.7em; padding: 1px; position: relative; bottom: 12px; border-radius: 0px 0px 0px 6px;border-bottom:1px solid black;border-left:1px solid black;text-decoration:none;') .click(function(event){ location.hash = "#" + $(e).siblings(".mw-headline").first().attr("id"); event.preventDefault(); send("Wikidata:Requests_for_deletions",index,e,d,"","d"); }) .insertAfter($(e).parent()) .tipsy({ gravity: 'ne', fade: true }); $("<a>") .html(" No ") .attr("href", "javascript:;") .attr("title","Mark as not deleted") .attr("style",'Background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAWCAMAAAA2GAaYAAAAQlBMVEWUAACeAACIAADIAACQAACKAACaAADDAAC8AACxAACFAADFAADAAACuAACXAACqAACmAAC5AACiAACNAADKAAC1AAB6LXXpAAAAKElEQVR4XgXAhQ2AMAAAsM4Ft/9fJV7Joll1l8+wOZxuQbUjexTR/AEV+QDoUwTrkQAAAABJRU5ErkJggg==") repeat-x scroll 50% 100% #CB0000 !important; color: white; float: right; font-size: 0.7em; padding: 1px; position: relative; bottom: 12px;border-bottom:1px solid black;text-decoration:none;') .click(function(event){ if(/^.*#.*$/.test(document.location) === false){ document.location = document.location + "#" + $(e).siblings(".mw-headline").first().attr("id");} location.hash = "#" + $(e).siblings(".mw-headline").first().attr("id"); event.preventDefault(); send("Wikidata:Requests_for_deletions",index,e,d,"","n"); }) .insertAfter($(e).parent()) .tipsy({ gravity: 'ne', fade: true }); $("<a>") .html(" # ") .attr("href", "javascript:;") .attr("title","Write a comment") .attr("style",'background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAWCAMAAAA2GAaYAAAAQlBMVEUuXKkmS4ozZbkkSIQtW6YiRHwrV58hQ3owYLAxY7UnTY0jRoEqVZsyZLcvXq0oT5EqU5gxYbMsWaMlSocjRX8pUZU8hDFrAAAAKElEQVR4XgXAhQ2AMAAAsM4Ft/9fJaLNcOl2ZLdqdfocpuCRLF5F+wETiQDocXjMfwAAAABJRU5ErkJggg==") repeat-x scroll 50% 100% #3365BA !important; color: white; float: right; font-size: 0.7em; padding: 1px; position: relative; bottom: 12px; border-radius: 0px 0px 6px 0px;border-bottom:1px solid black;border-right:1px solid black;text-decoration:none;') .click(function(event){ if(/^.*#.*$/.test(document.location) === false){ document.location = document.location + "#" + $(e).siblings(".mw-headline").first().attr("id");} location.hash = "#" + $(e).siblings(".mw-headline").first().attr("id"); event.preventDefault(); var c = prompt("Type the text to send to this request:\n\n* If you want to set a template\n TEMPLATE|option1|option2#My Text\n\n* If you want to indent the text, add a colon at the beginning of the text\n :TEMPLATE#My Text :My Text\n\n* If you leave the template option blank, it will set the default template (deleted or not deleted)\n #My Text :#My Text"); if(c)send("Wikidata:Requests_for_deletions",index,e,d,c,"c"); }) .insertAfter($(e).parent()) .tipsy({ gravity: 'ne', fade: true }); }else{ $("<a>") .html(" # ") .attr("href", "javascript:;") .attr("title","Write a comment") .attr("style",'background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAWCAMAAAA2GAaYAAAAQlBMVEUuXKkmS4ozZbkkSIQtW6YiRHwrV58hQ3owYLAxY7UnTY0jRoEqVZsyZLcvXq0oT5EqU5gxYbMsWaMlSocjRX8pUZU8hDFrAAAAKElEQVR4XgXAhQ2AMAAAsM4Ft/9fJaLNcOl2ZLdqdfocpuCRLF5F+wETiQDocXjMfwAAAABJRU5ErkJggg==") repeat-x scroll 50% 100% #3365BA !important; color: white; float: right; font-size: 0.7em; padding: 1px; position: relative; bottom: 12px; border-radius: 0px 0px 6px 6px;border-bottom:1px solid black;border-right:1px solid black;border-left:1px solid black;text-decoration:none;') .click(function(event){ if(/^.*#.*$/.test(document.location) === false){ document.location = document.location + "#" + $(e).siblings(".mw-headline").first().attr("id");} location.hash = "#" + $(e).siblings(".mw-headline").first().attr("id"); event.preventDefault(); send("Wikidata:Requests_for_deletions",index,e,d,prompt("Type the text to send to this request:\n\n* If you want to set a template\n TEMPLATE|option1|option2#My Text\n\n* If you want to indent the text, add a colon at the beginning of the text\n :TEMPLATE#My Text :My Text\n\n* If you leave the template option blank, it will set the default template (deleted or not deleted)\n #My Text :#My Text"),"c"); }) .insertAfter($(e).parent()) .tipsy({ gravity: 'ne', fade: true }); } }); }); function send(wgPageName,index,e,d,c,m){ //CREATE SPINNER var spinner = '<pre id="rfdSpinner' + index + '"></pre>'; var nextindex = index+1; if(document.getElementById("section"+nextindex) == null){ $("#mw-content-text").append(spinner); }else{ $("#section"+nextindex).before(spinner); } $.createSpinner( { size: 'small', id: 'rfdSpinner'+index } ).appendTo( "#rfdSpinner"+index ); //CREATE SPINNER work[index] = true; if( /==\s*\[\[(.*)\]\]\s*==/.test(d) === true ){ var title = d.match(/==.*==/)[0].replace(/^==\s*\[\[(.*)\]\]\s*==/,"$1"); if(m == "d"){var template = "Deleted";var resume = "deleted";} if(m == "n"){var template = "Not deleted";var resume = "not deleted";} $.ajax({ url: mw.util.wikiScript( 'api' ), async: false, type: 'GET', dataType: 'json', data: { action: 'query', format: 'json', list: 'logevents', leprop: 'type|user', letitle: title, lelimit: '1' }, success: function ( data ) { if(data.query.logevents.hasOwnProperty(0)){ if(data.query.logevents[0].action == "delete"){ if(m == "d"){ if(data.query.logevents[0].user != mw.config.get( 'wgUserName' )){ if(confirm("We have detected that this page has been deleted by :\n\n\t" + data.query.logevents[0].user + "\n\nIs it correct ?")){ template = "deleted|admin=" + data.query.logevents[0].user; resume = "deleted by " + data.query.logevents[0].user; } } }else if(m == "n"){ if(!confirm("This page has been deleted! Are you sure you want to mark this request as not deleted?")){ m="c";c=""; } }else{ if(data.query.logevents[0].user == mw.config.get( 'wgUserName' )){ template = "deleted"; resume = "deleted"; }else{ if(confirm("We have detected that this page has been deleted by :\n\n\t" + data.query.logevents[0].user + "\n\nIs it correct ?")){ template = "deleted|admin=" + data.query.logevents[0].user; resume = "deleted by " + data.query.logevents[0].user; }else{ template = "deleted"; resume = "deleted"; } } } }else{ if(m == "d"){ if(!confirm("This page has not been deleted! Are you sure you want to mark this request as deleted?")){ m="c";c=""; } }else{ template = "not deleted"; resume = "not deleted"; } } } } }); }else{ if(m == "d"){var template = "Done";var resume = "done";} if(m == "n"){var template = "Not done";var resume = "not done";} if(m == "c"){var template = "Done";var resume = "done";} } if(c == null){c = "";} if(m == "c" && c == ""){ $( "#mw-spinner-rfdSpinner"+index ).append('<img src="//upload.wikimedia.org/wikipedia/commons/thumb/a/a2/X_mark.svg/20px-X_mark.svg.png" style="">'); $("#rfdSpinner"+index).append('<span style="color:red;float:right"><strong>Aborted</strong></span>'); work[index] = false; setTimeout(function(){$("#rfdSpinner"+index).remove()},3000); return; } if( /:*(.*)#(.*)/.test(c) === true ){ if(c.replace(/^:*(.*)#(.*)$/,"$1") != ""){ var template = c.replace(/^:*(.*)#(.*)$/,"$1"); var resume = template; } }else if(c != ""){ template="User:Jitrixis/void"; resume = "commented"; } point = c.replace(/^(:*).*$/,"$1") c = c.replace(/^:*(.*#)?(.*)$/,"$2"); var n = d.match(/^:+/gm); if(point == "" && n != null){ point = n[n.length-1]; if(point.length >= 10){ var size = point.length - 1; point = "{{od|" + size + "}}"; } } point = ":" + point; template = "{{" + template + "}}"; if(template == "{{User:Jitrixis/void}}"){template = "";} //CREATE SPINNER var spinner = " " + point + " " + template + " " + c + " --~~~~" $("#rfdSpinner"+index).append(spinner); //CREATE SPINNER $.post( mw.util.wikiScript("api"), { action:"edit", appendtext: "\n" + point + " " + template + " " + c + " --~~~~", title:wgPageName, section:index, summary:"/* "+$(e).siblings(".mw-headline").first().attr("id")+" */ tagging as '" + resume + "' ([[MediaWiki:Gadget-DeletionHelper|DH]])", token:mw.user.tokens.get("editToken") } ) .done(function(data){ if(/error/.test(data) === true){ $( "#mw-spinner-rfdSpinner"+index ).append('<img src="//upload.wikimedia.org/wikipedia/commons/thumb/a/a2/X_mark.svg/20px-X_mark.svg.png" style="">'); $("#rfdSpinner"+index).append('<span style="color:red;float:right"><strong>Edit conflict detected</strong></span>'); }else{ $("#rfdSpinner"+index).append('<span style="color:green;float:right"><strong>Correctly sent</strong></span>'); $( "#mw-spinner-rfdSpinner"+index ).append('<img style="margin-left:1px" src="//upload.wikimedia.org/wikipedia/commons/thumb/f/fb/Yes_check.svg/20px-Yes_check.svg.png">'); } work[index] = false; setTimeout(function(){rld();},2500); }) .fail(function(){ $( "#mw-spinner-rfdSpinner"+index ).append('<img src="//upload.wikimedia.org/wikipedia/commons/thumb/a/a2/X_mark.svg/20px-X_mark.svg.png" style="">'); $("#rfdSpinner"+index).append('<span style="color:green;float:right"><strong>The ajax request failed.</strong></span>'); work[index] = false; setTimeout(function(){rld();},2500); }); } function rld(){ var reload = true; for(var nb in work){ if(work[nb] === true){ reload = false; } } if(reload === true){ document.location.reload(true); } } }); /* </nowiki> */