MediaWiki:Gadget-tab-oculta-atendidas.js

De Wikipedia, la enciclopedia libre

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é.

window.tab_oculta_atendidas = function ()
{
    var content = document.getElementById("mw-content-text");
    if (!content) return;
    var h2s = document.getElementsByTagName("H2");

    var isElementNamed = function (element, name) {
        return element.nodeType == 1 &&
            element.tagName == name;
    };
    
    var hasH2 = function (div) {
    	var els = div.children;
    	for (var i = 0; i < 3 && i < els.length; i++)
    	  if (els[i].tagName == "H2") return true;
    	return false;
    };
    
    var isHeadingDiv = function (element, checkinside) {
    	return isElementNamed(element, "DIV") &&
    	       element.classList.contains("mw-heading") &&
    	       (!checkinside || hasH2(element));
    };
    
    var hasHeadlineSpan = function (h2) {
        var spans = h2.children;
        for (var i=0; i < spans.length; i++)
          if (isElementNamed(spans[i], "SPAN") && 
              spans[i].classList.contains("mw-headline"))
                return true;
        return false;
    };

    for (var i=0; i < h2s.length; i++) {
        var h2 = h2s[i];
        if (isHeadingDiv(h2.parentElement) &&
            hasHeadlineSpan(h2))
        {
        	var div = h2.parentElement;
            var section = [h2, div];
            var element = div.nextElementSibling;
            var buscando_firma = false;
            var tiene_firma = false;
            var mantener_si_o_si = false;
            while (element && !isHeadingDiv(element, true)) {
                section.push(element);
                if (!buscando_firma && element.tagName == "DL") {
                    var dts = element.getElementsByTagName("DT");
                    for (var k = 0; k < dts.length; k++) {
                        if (dts[k].textContent == "Respuesta") {
                            buscando_firma = true;
                            break;
                        }
                    }
                }
                if (buscando_firma) {
                    if (element.textContent.indexOf("(a rellenar por un bibliotecario)") != -1) {
                        mantener_si_o_si = true;
                        break;
                    }
                    else if (element.textContent.match(/\b\d\d:\d\d \d\d? [a-z]{3} \d\d\d\d \(UTC\)/))
                        tiene_firma = true;
                }
                element = element.nextElementSibling;
            }
            if (tiene_firma && !mantener_si_o_si) {
                for (var j=0; j < section.length; j++) {
                    section[j].hidden = true;
                    section[j].style.display = 'none';
                }
            }
        }
    }
    // el índice
    var indice = document.getElementById("toc") || document.getElementById("vector-toc");
    if (!indice) return;
    var lis = indice.getElementsByTagName("LI");
    for (i=0; i < lis.length; i++) {
        var li = lis[i];
        if (li.children.length >= 1 &&
            isElementNamed(li.children[0], "A"))
        {
            var href = decodeURI(li.children[0].href);
            var hashpos = href.lastIndexOf("#");
            if (hashpos >= 0 && hashpos < href.length-1) {
                var target = document.getElementById(href.substr(hashpos+1));
                if (target && target.parentElement.hidden) {
                    li.hidden = true;
                    li.style.display = "none";
                }
            }
        }
    }
    // botones
    var botones = document.getElementsByClassName("btn-tab-oculta-atendidas");
    for (i=0; i < botones.length; i++) {
        botones[i].hidden = true;
        botones[i].style.display = "none";
    }
};

function tab_oculta_atendidas_instalaboton () {
    var codigo = "<button onclick='tab_oculta_atendidas();' class='btn-tab-oculta-atendidas'>ocultar solicitudes atendidas</button>";
    var tocid = document.getElementById("toc") ? "#toc" :
                document.getElementById("vector-toc") ? "#vector-toc" : null;
    if (tocid) {
        $(codigo).insertAfter(tocid);
        $(codigo).insertBefore(tocid);
    }
}

if (mw.config.get("wgNamespaceNumber") == 4 && 
   (mw.config.get("wgTitle").match(/^Tablón de anuncios de los bibliotecarios\/Portal\/Archivo\/[^\/]+\/Actual$/) || mw.config.get("wgTitle").match(/^Filtro de ediciones\/Portal\/Archivo\/Reporte de falsos positivos\/Actual$/)))
{ 
    $(tab_oculta_atendidas_instalaboton);
}