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 );
}