MediaWiki:Gadget-cambiosrecientes-tabla.js
Nota: Después de guardar, debes refrescar la caché de tu navegador para ver los cambios. Internet Explorer: mantén presionada Ctrl mientras pulsas Actualizar. Firefox: mientras presionas Mayús pulsas el botón Actualizar, (o presiona Ctrl-Shift-R). Los usuarios de Google Chrome y Safari pueden simplemente pulsar el botón Recargar. Para más detalles e instrucciones acerca de otros exploradores, véase Ayuda:Cómo limpiar la caché.
function formatRecentChanges() {
/*
* formatRecentChanges()
* (c) Tim Laqua, 2007
*/
if ( mw.config.get('wgCanonicalNamespace') == 'Special' && mw.config.get('wgCanonicalSpecialPageName') == 'Recentchanges' ) {
var colorPrimaryRow = '#FFFFFF';
var colorAltRow = '#EEEEEE';
var colorPatrolledRow = '#FFFF99';
var colorHeaderRow = '#cccccc';
var colorFooterRow = '#cccccc';
var columns = '7';
var colUL = document.getElementsByTagName('ul');
if ( colUL.length > 0 ) {
var tableWrapper = document.createElement('table');
var tableNode = document.createElement('tbody');
tableWrapper.width = '100%';
var contentDiv = document.getElementById('content');
contentDiv.appendChild(tableWrapper);
tableWrapper.appendChild(tableNode);
for(var i=0; i<colUL.length; i++) {
if (colUL[i].className == 'special') {
var altRow = false;
var nodeListHeading = document.getElementsByTagName('h4')[0];
var rowHeading = document.createElement('tr');
var cellHeading = document.createElement('td');
cellHeading.appendChild(nodeListHeading);
cellHeading.colSpan = columns;
rowHeading.appendChild(cellHeading);
rowHeading.style.backgroundColor = colorHeaderRow;
tableNode.appendChild(rowHeading);
var colLI = colUL[i].getElementsByTagName('li');
for(var j=0; j<colLI.length; j++) {
var minor = false;
var bot = false;
var unpatrolled = false;
var newpage = false;
var rowNode = document.createElement('TR');
var flagNode = document.createElement('TD');
flagNode.style.whiteSpace = 'nowrap';
var changedNode = document.createElement('TD');
changedNode.style.whiteSpace = 'nowrap';
changedNode.style.textAlign = 'right';
var messageNode = document.createElement('TD');
//var colSPAN = colLI[j].getElementsByTagName('span');
var colSPAN = colLI[j].childNodes;
for(var k=0; k < colSPAN.length; k++) {
if (colSPAN[k].nodeType == 1) {
switch (colSPAN[k].className.toLowerCase()) {
case 'mw-plusminus-neg':
//add to changedNode
changedNode.appendChild(colSPAN[k--]);
break;
case 'mw-plusminus-null':
//add to changedNode
changedNode.appendChild(colSPAN[k--]);
break;
case 'mw-plusminus-pos':
//add to changedNode
changedNode.appendChild(colSPAN[k--]);
break;
case 'unpatrolled':
//add to flagNode
unpatrolled = true;
flagNode.appendChild(colSPAN[k--]);
break;
case 'minor':
//add to flagNode
minor = true;
flagNode.appendChild(colSPAN[k--]);
break;
case 'newpage':
//add to flagNode
newpage = true;
flagNode.appendChild(colSPAN[k--]);
break;
case 'bot':
//add to flagNode
bot = true;
flagNode.appendChild(colSPAN[k--]);
break;
case 'comment':
//add to messageNode
messageNode.appendChild(colSPAN[k--]);
break;
default:
//do nothing
}
}
}
//check for unpatrolled flag
if (unpatrolled) {
rowNode.style.backgroundColor = colorPatrolledRow;
} else {
if (altRow) {
rowNode.style.backgroundColor = colorAltRow;
} else {
rowNode.style.backgroundColor = colorPrimaryRow;
}
}
altRow = altRow ? false : true;
var regexp = /; (\d\d:\d\d)/i;
var colMatches = colLI[j].innerHTML.match(regexp);
var time = colMatches && colMatches[1];
var cleanText = colLI[j].innerHTML.replace(regexp,'');
var arrLI = cleanText.split(' . . ');
var timeNode = document.createElement('TD');
timeNode.innerHTML = time;
timeNode.style.whiteSpace = 'nowrap';
var contextNode = document.createElement('TD');
contextNode.innerHTML = arrLI[0];
contextNode.style.whiteSpace = 'nowrap';
var titleNode = document.createElement('TD');
//titleNode.style.whiteSpace = 'nowrap';
var nameNode = document.createElement('TD');
nameNode.style.whiteSpace = 'nowrap';
if (arrLI.length == 4) {
//standard entry
titleNode.innerHTML = arrLI[1];
nameNode.innerHTML = arrLI[3];
} else if (arrLI.length == 2) {
//log message - append fragment to message node
nameNode.innerHTML = arrLI[1];
}
if (changedNode.firstChild) {
changedNode.firstChild.innerHTML =
changedNode.firstChild.innerHTML.replace(/(^\s*\()|(\)\s*$)/ig,'');
}
if (messageNode.firstChild) {
messageNode.firstChild.innerHTML =
messageNode.firstChild.innerHTML.replace(/(^\s*\()|(\)\s*$)/ig,'');
}
rowNode.appendChild(timeNode);
rowNode.appendChild(contextNode);
rowNode.appendChild(flagNode);
rowNode.appendChild(titleNode);
rowNode.appendChild(messageNode);
rowNode.appendChild(nameNode);
rowNode.appendChild(changedNode);
tableNode.appendChild(rowNode);
}
colUL[i].parentNode.removeChild(colUL[i--]);
}
}
}
}
}
$(formatRecentChanges);