Naar inhoud springen

Gebruiker:Sumurai8/templredir.js

Uit Wikipedia, de vrije encyclopedie

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)
               +  "\"> -&gt; <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]]*/