Monchoman45

InterwikiEdit

Dec 5th, 2012
4,947
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. window.InterwikiEdit = {
  2.     buffer: true,
  3.     threads: 5,
  4.  
  5.     running: 0,
  6.     queue: []
  7. };
  8.  
  9. InterwikiEdit.onload = function() {
  10.     if(wgCanonicalSpecialPageName == 'InterwikiEdit' && !mw.util.getParamValue('action')) {
  11.         var gui = document.createElement('div');
  12.         gui.innerHTML = '<h2>Multiple</h2><div>List each domain (eg. <code>es.wiki</code>), one on each line. This will link each specified wiki to every other specified wiki.</div><textarea id="interwiki-multiple-textarea" style="width:660px; height:300px;"></textarea><div><input id="interwiki-multiple-button" type="submit" value="Link wikis" onclick="InterwikiEdit.linkAll(document.getElementById(\'interwiki-multiple-textarea\').value.split(\'\\n\')); document.getElementById(\'interwiki-multiple-textarea\').value = \'\';"></div><pre id="interwiki-multiple-output" style="width:660px; height:200px; overflow-y:scroll;"></pre>';
  13.         document.getElementById('mw-content-text').appendChild(gui);
  14.     }
  15. }
  16. $(InterwikiEdit.onload);
  17.  
  18. InterwikiEdit.linkAll = function(wikis) {
  19.     for(var i = 0; i < wikis.length - 1; i++) {
  20.         for(var j = i + 1; j < wikis.length; j++) {
  21.             if(wikis[i] != wikis[j]) {
  22.                 if(!InterwikiEdit.buffer || InterwikiEdit.running < InterwikiEdit.threads) {
  23.                     InterwikiEdit.link(wikis[i], wikis[j], InterwikiEdit.linkAllCallback);
  24.                     InterwikiEdit.running++;
  25.                 }
  26.                 else {InterwikiEdit.queue.push([wikis[i], wikis[j]]);}
  27.             }
  28.             else {console.log(i + ' == ' + j);}
  29.         }
  30.     }
  31. }
  32.  
  33. InterwikiEdit.link = function(wiki1, wiki2, callback) {
  34.     if(!wiki1 || !wiki2) {return false;}
  35.     var get = new XMLHttpRequest();
  36.     var url = '/wiki/Special:InterwikiEdit?action=Link&wikia=' + wiki1 + '.wikia.com&ext_wikia=' + wiki2 + '.wikia.com&useskin=monobook';
  37.     get.open('GET', url, true);
  38.     get.responseType = 'document';
  39.     get.onreadystatechange = function() {
  40.         if(this.readyState == 4 && this.status == 200) {
  41.             var inputs = this.response.getElementById('chooseaction').getElementsByTagName('input');
  42.             var wikia_id = '';
  43.             var ext_wikia_id = '';
  44.             for(var i = 0; i < inputs.length; i++) {
  45.                 if(inputs[i].name == 'wikia_id') {wikia_id = inputs[i].value;}
  46.                 else if(inputs[i].name == 'ext_wikia_id') {ext_wikia_id = inputs[i].value;}
  47.                 if(wikia_id && ext_wikia_id) {break;}
  48.             }
  49.  
  50.             var post = new XMLHttpRequest();
  51.             post.open('POST', url, true);
  52.             post.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
  53.             post.onreadystatechange = function() {
  54.                 if(this.readyState == 4 && this.status == 200 && typeof callback == 'function') {callback.call(this, wiki1, wiki2);}
  55.             }
  56.             post.send('action=commit_link&wikia_id=' + wikia_id + '&ext_wikia_id=' + ext_wikia_id);
  57.         }
  58.     }
  59.     get.send();
  60.     return get;
  61. }
  62.  
  63. InterwikiEdit.linkAllCallback = function(wiki1, wiki2) {
  64.     var output = document.getElementById('interwiki-multiple-output');
  65.     var scroll = false;
  66.     if(output) {
  67.         if(output.offsetHeight + output.scrollTop >= output.scrollHeight) {scroll = true;}
  68.         output.innerHTML += wiki1 + ' >=< ' + wiki2 + '\n';
  69.     }
  70.     if(InterwikiEdit.queue.length > 0) {
  71.         wikis = InterwikiEdit.queue.shift();
  72.         InterwikiEdit.link(wikis[0], wikis[1], InterwikiEdit.linkAllCallback);
  73.     }
  74.     else {
  75.         InterwikiEdit.running--;
  76.         if(InterwikiEdit.running == 0 && output) {output.innerHTML += '---------------------------------------------\n';}
  77.     }
  78.     if(scroll) {output.scrollTop = output.scrollHeight;}
  79. }
Advertisement
Add Comment
Please, Sign In to add comment