MediaWiki:Gadget-fondo-color.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é.

/*
 * Colores de acuerdo a espacio de nombres
 */

// dos funciones útiles...
function wpes_test (uno, otro) {
    switch (typeof uno) {
    case "object":
        return uno.test(otro);
    case "function":
        return uno(otro);
    default:
        return uno === otro;
    }
}

function wpes_isInArray (ele, arr) {
    var i;
    switch (typeof ele) {
    case "object":
        for (i=0; i<arr.length; i++) if (ele.test(arr[i])) return true;
        break;
    case "function":
        for (i=0; i<arr.length; i++) if (ele(arr[i])) return true;
        break;
    default:
        for (i=0; i<arr.length; i++) if (ele === arr[i]) return true;
    }
    return false;
}

if ( window.colorines === undefined ) {

    var colorines = {
        desactivarColores: false,
        
        /* Regexps y strings se testean contra c/u de las clases del <body>.
           Las funciones reciben como parámetro un array con esas clases.
        */
        filtros: [ "enciclopedia", [ "ns-0",
                                     "page-Wikipedia_Portada"
                                   ],
                   "wikipedia", [ "page-Wikipedia_Consultas_de_borrado_mediante_argumentación"
                                ],
                   "discusión", [ "ns-talk",
                                  /^page-Wikipedia_(?:Café|Tablón)_.*_Actual$/,
                                  "page-Wikipedia_Café_todos",
                                  /^page-Wikipedia_Consultas_de_borrado_/,
                                  "page-Wikipedia_Consultas"
                                ],
                   "archivo", [ /^page-Wikipedia_(?:Café|Tablón_.+)_Archivo/,
                                /^page-Wikipedia_Consultas_semana/
                              ],
                   "wikipedia", [ "ns-4",   // Wikipedia:
                                  "ns-8",   // MediaWiki:
                                  "ns-12",  // Ayuda:
                                  "ns-102"  // Wikiproyecto:
                                ]
                 ],

        test: function (ele, arr) {
            if (typeof ele === "function")
                return ele(arr);
            return wpes_isInArray(ele, arr);
        },

        determinaColorPágina: function () {
            var clasesBody = $('body').attr('class').split(/ +/);
            for (var i=0; i < this.filtros.length; i += 2) {
                var tipoColor = this.filtros[i];
                var tests = this.filtros[i+1];
                for (var j=0; j < tests.length; j++) {
                    if (this.test(tests[j], clasesBody))
                        return "color-" + tipoColor;
                }
            }
            return null;
        }
    };
    window.colorines = colorines;

    (function ( $, mw ) {
        'use strict';

        if (!colorines.desactivarColores) {
            var claseColor = colorines.determinaColorPágina();
            if (claseColor)
                $('body').addClass(claseColor);
        }
    })( jQuery, mediaWiki );
}