Gebruiker:Sumurai8/templredir.js
Uiterlijk
Opmerking: na het publiceren is het wellicht nodig uw browsercache te legen om de veranderingen te zien.
- Firefox / Safari: houd Shift ingedrukt terwijl u:je op Vernieuwen klikt of druk op Ctrl-F5 of Ctrl-R (⌘-Shift-R op een Mac)
- Google Chrome: druk op Ctrl-Shift-R (⌘-Shift-R op een Mac)
- Edge: houd Ctrl ingedrukt terwijl u:je op Vernieuwen klikt of druk op Ctrl-F5.
/*<pre>*/
/***************************
* Tool that has to solve redirects
*
* Made by: Sumurai8 (user:Sumurai8 on nlwiki_p)
* Stole some lines from other scripts, so thanks:
* Siebrand: [[Gebruiker:Siebrand/vqd.js]]
* [[en:Wikipedia:WikiProject User scripts/Guide/Ajax]]
* and others who used Ajax in their userscripts
* for releasing your work under GNU FDL ;-)
***************************/
/* These vars can be changed (others can be changed as well, but has no effect ;-) ) */
var trdisabled = false //Set to true, to disable this extension by default
var troutputmsg = true //Should we give a message in the sidebar when not editing?
var trnamespaces = "|0|2|" // Could be a string like "|0|1|3|100|101|"
/* Code starts here */
//Using action=query&prop=templates&titles=<title>&tllimit=500&format=json&tlnamespace=10&indexpageids
//Using action=query&prop=info&titles=<titlelist>&indexpageids&format=json
//Using action=query&prop=links&titles=<titlelist>&format=json&indexpageids
//Using action=query&prop=links&titles=<title>&pllimit=500&plnamespace=0&format=json&indexpageids
//Using action=query&prop=categories&titles=<titlelist>&clcategories=Categorie:Wikipedia:Doorverwijspagina&indexpageids&format=json
//Using action=query&prop=links&pllimit=500&titles=<titlelist>&indexpageids&format=jsonfm
//Using action=query&titles=<title>&generator=links&gpllimit=500&redirects&format=json
var trdone = 0 //define it here, so we can access it everywhere
var tpdone = 0 //define it here, so we can access it everywhere
var templapi = sajax_init_object(); //define it here, so we can access it everywhere
var dplinkapi = sajax_init_object(); //define it here, so we can access it as well
function templredirstart() {
//We have to do some exercises, to know we have to start up or just 'rest in peace'
var tag = document.getElementById('mw-panel')
var tag2 = document.getElementById('p-navigation2')
var temp = "<div id=\"templbg\" style=\"z-index: 2; position: fixed; width: 100%; height: 100%; top: 0; left: 0; opacity: .5; -ms-filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50); filter: alpha(opacity50); display: none; background: #555\"></div><div id=\"templtbl\" style=\"z-index: 3; position: fixed; width: 50%; height: 50%; top: 25%; left: 25%; display: none; border: 2px solid #000; background: #FFF; padding:5px\"><div style=\"height:12%\">Het script wil de volgende wijzigingen doorvoeren. Bevestig de bewerkingen met het knopje en druk daarna op <b>[Sluiten]</b>. Gebruik dit script alleen als je weet waar je mee bezig bent! Vraag de maker van het script waarom :-)</div><div style=\"width:100%;height:80%;overflow-y:auto;border:dotted #000 1px\"><ul id=\"templcontent\" style=\"list-style:none;margin:0;\"></ul></div><div style=\"height:8%\"><input type=\"button\" value=\"[Sluiten]\" onclick=\"templtoggle('close')\"></div></div><div class=\"portal\" id=\"templredir\"><h5>Stats</h5><div class=\"body\"><ul id=\"templul\"></ul><input type=\"button\" value=\"Solve\" onclick=\"templtoggle('open')\" id=\"solvebutton\" style=\"display:none\"></div></div>"
if(tag && tag2 && !trdisabled && (trnamespaces.indexOf("|"+wgNamespaceNumber+"|") != -1) && (((wgAction != 'edit' || wgAction != 'submit') && troutputmsg ) || ( wgAction == 'edit' || wgAction == 'submit') ) ) {
var div = document.createElement('div');
div.innerHTML = temp;
tag.insertBefore(div, tag2);
/**
* templapi.open('GET', wgScriptPath + '/api.php?action=query&prop=templates&titles='
* + 'Overleg_gebruiker:Sumurai8'
* + '&tllimit=500&format=json&tlnamespace=10&indexpageids', true);
* Commented these lines out to test with my user-talk-page (or not)
**/
templapi.open('GET', wgScriptPath + '/api.php?action=query&prop=templates&titles='
+ encodeURIComponent(mw.config.get('wgPageName'))
+ '&tllimit=500&format=json&tlnamespace=10&indexpageids', true);
templapi.onreadystatechange = solvetemplqueryI;
templapi.send(null);
//Query has been send; After completing solvetemplquery1 get's called
dplinkapi.open('GET', wgScriptPath + '/api.php?action=query&generator=links&redirects&titles='
+ encodeURIComponent(mw.config.get('wgPageName'))
+ '&gpllimit=500&gplnamespace=0&format=json&indexpageids', true);
dplinkapi.onreadystatechange = solvedplinkqueryI;
dplinkapi.send(null);
}
}
function solvetemplqueryI() {
//Query has been resolved and been put in qI; First do some exercises
if(templapi.readyState == 4) {
if(templapi.status == 200) {
//Phieeeuw, query has been completed and... exists
var info = eval('('+templapi.responseText+')')
var titlelist = "";
var templ = info['query']['pages'][info['query']['pageids'][0]]['templates']
if(templ) {
for (var c=0;c<templ.length;c++)
{
titlelist += encodeURIComponent( templ[c]['title'] ) + '|'
}
titlelist = titlelist.substring(0,titlelist.length-1)
templapi.open('GET', wgScriptPath + '/api.php?action=query&prop=info&titles='
+ titlelist
+ '&indexpageids&format=json',true)
templapi.onreadystatechange = solvetemplqueryII;
templapi.send(null);
}
}
else {
//ERROR!
document.write('Query didn\'t exist or returned a error; Please report:\n (ERR:Q1:'+wgPageName+':'+templapi.status+')');
}
}
}
function solvetemplqueryII() {
//Query II has been resolved and been put in qII; First do some exercises
if(templapi.readyState == 4) {
if(templapi.status == 200) {
//Oké, second query is really ready and seems to exist; Let's go on then
var info = eval('('+templapi.responseText+')')
var titlelist = ""
var numids = info['query']['pageids']
if(typeof(info['query']) != 'undefined') {
for (var c=0;c<numids.length;c++)
{
if (typeof(info['query']['pages'][info['query']['pageids'][c]]['redirect']) != 'undefined') {
//It IS defined, so lets list it then
titlelist += encodeURIComponent( info['query']['pages'][info['query']['pageids'][c]]['title'] ) + "|"
}
}
}
if(titlelist) {
titlelist = titlelist.substring(0,titlelist.length-1)
templapi.open('GET', wgScriptPath + '/api.php?action=query&prop=links&titles='
+ titlelist
+ '&format=json&indexpageids', true);
templapi.onreadystatechange = solvetemplqueryIII;
templapi.send(null);
//Query send; Wait till queryIIIhandler gets called
}
}
else {
document.write('Query didn\'t exist or returned a error; Please report:\n (ERR:Q2:'+wgPageName+':'+templapi.status+')');
}
}
}
function solvetemplqueryIII() {
//Query III has been resolved and been put in qIII; First do some exercises (again)...
if(templapi.readyState == 4) {
if(templapi.status == 200) {
//Query exist... yeah! It seems I know what I am doing ;-)
var info = eval('('+templapi.responseText+')')
var tag = document.getElementById('templcontent')
var tag2 = document.getElementById('templul')
var numids = info['query']['pageids']
var li = document.createElement('li');
li.innerText = "TR: " + numids.length
tag2.insertBefore(li, null);
if (wgAction == 'edit' || wgAction == 'submit') {
var t1 = ""
var t2 = ""
for (var c=0;c<numids.length;c++) {
t1 = info['query']['pages'][info['query']['pageids'][c]]['title']
t2 = info['query']['pages'][info['query']['pageids'][c]]['links'][0]['title']
var li = document.createElement('li')
li.id = "templ" + c
var temp = "<input type=\"text\" size=\"25\" value=\""
+ t1.substring(9,t1.length)
+ "\"> -> <input type=\"text\" size=\"25\" value=\""
+ t2.substring(9,t2.length)
+ "\"> <input type=\"button\" value=\"[V]\" onclick=\"templsolver(\'"+escape(t1.substring(9,t1.length))+"\',\'"+escape(t2.substring(9,t2.length))+"\',"+c+")\">"
li.innerHTML = temp;
tag.insertBefore(li, null);
document.getElementById('solvebutton').style.display = "block";
}
}
}
else {
//Damn, it was more difficult then I thought :-(
document.write('Query didn\'t exist or returned a error; Please report:\n (ERR:Q3:'+wgPageName+':'+templapi.status+')');
}
}
}
function solvedplinkqueryI() {
//Query has been resolved and been put in qI; First do some exercises
if(dplinkapi.readyState == 4) {
if(dplinkapi.status == 200) {
//Phieeeuw, query has been completed and... exists
if (dplinkapi.responseText != "[]") {
var info = eval('('+dplinkapi.responseText+')')
var titlelist = "";
linkjes = info['query']['pageids']
if (linkjes) {
for(var c=0; c<linkjes.length; c++) {
q = linkjes[c]
if (q > 0) {
titlelist += info['query']['pages'][c]['title'] + "|"
}
}
titlelist = titlelist.substring(0,titlelist.length-1)
if (titlelist) {
console.info("I love cookies and this page loves links");
}
}
redirs = info['query']['redirects']
titlelist = "";
if (redirs) {
for(c=0;c<redirs.length;c++) {
console.info("There are redirects on this page... WHAAAH ("+c+")");
}
}
}
else {
var tag = document.getElementById('templul');
var li = document.createElement('li');
li.innerText = "No links";
tag.insertBefore(li, null);
}
}
else {
//ERROR!
console.error('Query didn\'t exist or returned a error; Please report:\n (ERR:Q4:'+wgPageName+':'+templapi.status+')');
}
}
}
function templsolver(s1,s2,i) {
//Get text
var t1 = document.getElementById('wpTextbox1').value
//When we are doing templatestuff, do this too...
re = new RegExp("\{\{[\t\n\r ]*[Ss]jabloon:[\t\n\r ]*","g")
t1 = t1.replace(re,"{{")
//unescape our strings and make it work with both: lowercasefirst and uppercasefirst
var reg = "[Aa][Bb][Cc][Dd][Ee][Ff][Gg][Hh][Ii][Jj][Kk][Ll][Mm][Nn][Oo][Pp][Qq][Rr][Ss][Tt][Uu][Vv][Ww][Xx][Yy][Zz]"
s1 = unescape(s1)
if(reg.indexOf(s1.charAt(0)) != -1) {
s1 = reg.substr(reg.indexOf(s1.charAt(0))-1,4)+s1.substring(1,s1.length)
}
s2 = unescape(s2)
var re = new RegExp("\{\{[\t\n\r ]*"+s1+"[\t\n\r ]*\}\}","g")
t1 = t1.replace(re,"{{"+s2+"}}")
var re = new RegExp("\{\{[\t\n\r ]*"+s1+"[\t\r ]*[|]","g")
t1 = t1.replace(re,"{{"+s2+"|")
var re = new RegExp("\{\{[\t\n\r ]*"+s1+"[\t\n\r ]*[|]","g")
t1 = t1.replace(re,"{{"+s2+"\n|")
document.getElementById('templ'+i).innerText = "Resolved templredirect "+(i+1*1)+"!"
//And let 'closefunction' know we actually editted!
trdone = 1
//And place my text back....
document.getElementById('wpTextbox1').value = t1
}
function templtoggle(x) {
if(x == 'open') {
document.getElementById('templbg').style.display = "block"
document.getElementById('templtbl').style.display = "block"
trdone = 0
}
else {
//Most likely 'close', because I defined that
document.getElementById('templbg').style.display = "none"
document.getElementById('templtbl').style.display = "none"
if (trdone == 1 && document.getElementById('wpSummary').value.indexOf('- Resolved templredirs') == -1) {
document.getElementById('wpSummary').value += "- Resolved templredirs "
}
}
}
$(templredirstart);
/*</pre>*/
/*
==Todo==
*Finishing script
*Testing
*Make sure it works on the right place
*Use it :-)
*/
/*{{Done}}*/
/*[[WP:R]]*/