MediaWiki:Common.js/numarticles.js

Merk: Etter publisering vil det kanskje være nødvendig å slette mellomlageret i nettleseren din for å se endringene.

  • Firefox / Safari: Hold Shift mens du klikker på Oppdater, eller trykk enten Ctrl+F5 eller Ctrl+R (⌘+R på Mac)
  • Google Chrome: Trykk Ctrl+Shift+R (⌘+Shift+R på Mac)
  • Internet Explorer / Edge: Hold Ctrl mens du trykker på Oppdater eller trykk Ctrl+F5
  • Opera: Ttrykk Ctrl+F5.
/* Interwiki {{NUMBEROFARTICLES}} [0.0.2], originalt fra http://test.wikipedia.org/wiki/MediaWiki:Common.js/numarticles.js
Bruker API for å hente ut antall artikler på andre wiki-prosjekter
Eksempel: <span class="numarticles-iw">en.wikipedia</span>
*/

function numArticlesIW() {
  var docobj = document.getElementById('bodyContent') || document.getElementById('content') || document.getElementsByTagName('body')[0]
  var numa = getElementsByClassName(docobj,'span','numarticles-iw');
  if(numa.length == 0) return
  for(var i=0;i<numa.length;i++) {
    var txt = getText(numa[i]);
    if(!txt.match(/[a-z0-9-]{2,12}\.(wikipedia|wiktionary|wikibooks|wikinews|wikisource|wikiquote)/)) continue;
    var url = 'http://' + txt + '.org/w/api.php?maxage=3600&smaxage=3600&action=parse&format=json&callback=numartCB&text=id-' + i + '-id%20%20num-{{NUMBEROFARTICLES}}-num'
    mw.loader.load(url);
    remText(numa[i]);
  }
}
$(numArticlesIW);

function numartCB(obj) {
  if(!obj['parse'] || !obj['parse']['text'] || !obj['parse']['text']['*']) return;
  var docobj = document.getElementById('bodyContent') || document.getElementById('content') || document.getElementsByTagName('body')[0]
  var numa = getElementsByClassName(docobj,'span','numarticles-iw');
  var txt = obj['parse']['text']['*'];
  var id = txt.match(/id-\d*-id/i)[0].replace(/id-(\d*)-id/i,'$1');
  var num = txt.match(/num-.*-num/i)[0].replace(/num-(.*)-num/i,'$1');
  if(num.indexOf('&') == -1) {
    numa[id].appendChild(document.createTextNode(num));
  } else {
    //sigh, contains html entities, heck with DOM!
    numa[id].innerHTML = num;
  }
}

function getText(obj) {
  if(obj.nodeType == 3) return obj.nodeValue;
  var txt = [];
  var i = 0;
  while(obj.childNodes[i]) {
    txt[txt.length] = getText(obj.childNodes[i]);
    i++;
  }
  return txt.join('');
}

function remText(obj) {
  while(obj.firstChild) obj.removeChild(obj.firstChild)
}