User:Ejs-80/babelComments.js

Note: After publishing, you may have to bypass your browser's cache to see the changes.

  • Firefox / Safari: Hold Shift while clicking Reload, or press either Ctrl-F5 or Ctrl-R (⌘-R on a Mac)
  • Google Chrome: Press Ctrl-Shift-R (⌘-Shift-R on a Mac)
  • Internet Explorer / Edge: Hold Ctrl while clicking Refresh, or press Ctrl-F5
  • Opera: Press Ctrl-F5.
// Original author: [[:fi:Käyttäjä:Zache|Zache]]; modified to Meta-Wiki by [[:fi:Käyttäjä:Ejs-80|Ejs-80]]; works only if the language of the interface language is fi (Suomi)
 
// Skripti tekee päivittyneiden kahvihuonekeskusteluiden (Meta:Babel) otsikoista laatikot sisällysluettelon viereen sekä sivun loppuun.
 
var kahvihuonePos=new Array();
 
function lastComments() {
    var url="http://meta.wikimedia.org/w/index.php?action=history&title=" + encodeURI(wgPageName);
    loadComments(url);
 
}
 


function loadComments(url) {
  var http = GetXmlHttpObject();
  if (http==null) {
    alert("no ajax support");
    return;
  }
  http.open("GET", url, true);
  http.onreadystatechange = function() {//Call a function when the state changes.
    if (http.readyState == 4 && http.status == 200) {     
     if (http.responseText) {
         var str=http.responseText;
         var parts=str.split("<ul id=\"pagehistory\">")[1].split("</ul>")[0];
         tmpDiv=document.createElement('div');
         tmpDiv.innerHTML="<ul>" + parts +"</ul>";
         var articles=parseHistory2(tmpDiv);
 
	 printHistory(articles, 1, "Viimeksi päivittyneet otsikot.", null);
      }
    } 
  }
  http.send(null);
}
 
function parseHistory2(newDoc) {
  var rows=newDoc.getElementsByTagName("li");
  var articles=new Array();
  for (n=0; n<rows.length; n++) {
    var article=new Array();
 
    var spans=rows[n].getElementsByTagName("span");
    var links=rows[n].getElementsByTagName("a");
    if (links[0].innerHTML=="nyk.") var pos=1;
    else var pos=0;
 
    article['username']=links[pos+2].innerHTML;
    article['time']=links[pos+1].innerHTML;
    if (spans[4]==null) continue;
 
    if (spans[4].className=="autocomment") {
       var tmpstr=spans[4].innerHTML;
       tmpstr=tmpstr.replace(/<\/a>/i, "");
       spans[4].innerHTML=tmpstr + "</a>";       
       article['comment']=spans[3].innerHTML;
       var articleName=spans[4].getElementsByTagName("a")[0].getAttribute("href");
       if (articles[articleName]==null) articles[articleName]=article;       
    } else {
      article['comment']=spans[3].innerHTML;
      var articleName="ei asetettu";
    }
  }
  return articles;
}
 
// Tulostaa kommenttilaatikot ruudulle. Jos position on 1, niin sijoitus tehdään TOC:n viereen ja sivun loppuun.
 
function printHistory(articles, position, title, divId) {
 
  var outstr="<center><strong>" + title + "</strong></center><ul>\n";
  var n=0;
 
  var maxrows = (position==1) ? 7 : 2;
 
  for (articleName in articles) {
 
     var months=new Array("tammikuuta", "helmikuuta", "maaliskuuta", "huhtikuuta", "toukokuuta", "kesäkuuta", "heinäkuuta", "elokuuta", "syyskuuta", "lokakuuta", "marraskuuta", "joulukuuta");
     for (m=0; m<months.length;m++) articles[articleName]['time']=articles[articleName]['time'].replace(" " + months[m] +" ", m+1 +".");
 
     articles[articleName]['time']=articles[articleName]['time'].replace(/.20[0-9][0-9] kello/, " ( ");
     outstr+="<li><small>" + articles[articleName]['time'] + " ) </small> - <a href='http://meta.wikimedia.org/w/index.php?title=User:" +  articles[articleName]['username'] +"'>" + articles[articleName]['username']+ "</a> : " + articles[articleName]['comment'] +"</li>\n";  
      n++;
      if (n>maxrows) break;     
  }
  outstr+="</ul>\n";  
 
  if (position==1) {
 
// TOC:n viereen tuleva laatikko
    var newComments = document.createElement('div');
    newComments.className="newCommentsTocBox";
    newComments.innerHTML=outstr;
    var toc=document.getElementById("toc");
    toc.parentNode.insertBefore(newComments, toc);
 
// Sivun loppuun tuleva laatikko
    var newComments2 = document.createElement('div');
    newComments2.className="newCommentsEndBox";
    newComments2.innerHTML=outstr;
 
    var content=document.getElementById("bodyContent");
    content.appendChild(newComments2); 
 
  } 
}
 
function GetXmlHttpObject()
{
if (window.XMLHttpRequest)
  {
  // code for IE7+, Firefox, Chrome, Opera, Safari
  return new XMLHttpRequest();
  }
if (window.ActiveXObject)
  {
  // code for IE6, IE5
  return new ActiveXObject("Microsoft.XMLHTTP");
  }
return null;
}
 
if ((document.title.search("Meta:Babel") > -1) && (document.title.search("/") == -1) && (wgIsArticle==true)) { 
  addOnloadHook( lastComments );
}