Menú alternativo
Toggle preferences menu
Menú alternativo personal
No ha accedido
Tu dirección IP será visible si haces alguna edición

Publicidad:

Patrocinador Top

Diferencia entre revisiones de «MediaWiki:Common.js»

Página de la interfaz de MediaWiki
Sin resumen de edición
Etiqueta: Reversión manual
Sin resumen de edición
Línea 1: Línea 1:
/* Cualquier código JavaScript escrito aquí se cargará para todos los usuarios en cada carga de página */
/* ===== FUNCIONALIDAD GENERAL ===== */
 
 
// Mostrar avatar junto al nombre de usuario
$( function() {
$( function() {
     if ( mw.config.exists( 'wgUserAvatar' ) ) {
    // 1. Mostrar avatar junto al nombre de usuario
     if ( mw.config.exists( 'wgUserAvatar' ) {
         var avatarUrl = mw.util.getUrl( 'File:' + mw.config.get( 'wgUserAvatar' ), {
         var avatarUrl = mw.util.getUrl( 'File:' + mw.config.get( 'wgUserAvatar' ), {
             width: 24
             width: 24
Línea 11: Línea 9:
             $('<img>').addClass('user-avatar').attr( 'src', avatarUrl )
             $('<img>').addClass('user-avatar').attr( 'src', avatarUrl )
         );
         );
    }
    // 2. Panel de administración mejorado (solo para admins)
    if ( mw.config.get( 'wgUserGroups' ).includes( 'sysop' ) ) {
        // Añadir contador dinámico de actividades
        addAdminCounters();
       
        // Añadir enlace rápido al panel
        mw.util.addPortletLink(
            'p-tb',
            mw.util.getUrl( 'Special:Analytics' ),
            '<i class="fas fa-chart-line"></i> Panel',
            't-adminpanel',
            'Acceso rápido al panel de administración'
        );
    }
    // 3. Mejorar visualización de estadísticas
    if ( mw.config.get( 'wgCanonicalSpecialPageName' ) === 'Analytics' ) {
        enhanceAnalyticsDashboard();
     }
     }
});
});
/* ===== FUNCIONES AVANZADAS ===== */
function addAdminCounters() {
    // Contador de páginas nuevas (últimas 24h)
    $.get( mw.util.wikiScript( 'api' ), {
        action: 'query',
        list: 'recentchanges',
        rctype: 'new',
        rclimit: 1,
        rcend: new Date( Date.now() - 86400000 ).toISOString(),
        format: 'json'
    } ).done( function( data ) {
        var count = data.query.recentchanges.length;
        $( '#adminlinks a[href*="Special:NewPages"]' )
            .append( '<span class="admin-badge">+' + count + '</span>' );
    } );
    // Contador de ediciones pendientes
    $.get( mw.util.wikiScript( 'api' ), {
        action: 'query',
        list: 'recentchanges',
        rclimit: 1,
        rcdir: 'older',
        rcprop: 'flags',
        format: 'json'
    } ).done( function( data ) {
        var count = data.query.recentchanges.length;
        $( '#adminlinks a[href*="Special:RecentChanges"]' )
            .append( '<span class="admin-badge">' + count + '</span>' );
    } );
}
function enhanceAnalyticsDashboard() {
    // Convertir tablas en gráficos interactivos
    $( '.wikitable' ).each( function() {
        var $table = $( this );
        if ( $table.find( 'th' ).length > 1 ) {
            $table.addClass( 'analytics-table' )
                  .wrap( '<div class="table-responsive"></div>' );
           
            // Añadir botón de exportación
            $table.before(
                '<button class="export-btn" data-table="' + $table.attr( 'id' ) + '">' +
                '<i class="fas fa-download"></i> Exportar</button>'
            );
        }
    });
    // Configurar eventos de exportación
    $( '.export-btn' ).on( 'click', function() {
        var tableId = $( this ).data( 'table' );
        exportTableToCSV( tableId );
    });
}
function exportTableToCSV( tableId ) {
    var $table = $( '#' + tableId );
    var csv = [];
    var $rows = $table.find( 'tr' );
   
    $rows.each( function() {
        var row = [];
        $( this ).find( 'th, td' ).each( function() {
            row.push( $( this ).text().trim() );
        });
        csv.push( row.join( ',' ) );
    });
   
    var csvContent = csv.join( '\n' );
    var encodedUri = encodeURI( 'data:text/csv;charset=utf-8,' + csvContent );
    var link = document.createElement( 'a' );
    link.setAttribute( 'href', encodedUri );
    link.setAttribute( 'download', 'estadisticas_' + new Date().toISOString().slice(0,10) + '.csv' );
    document.body.appendChild( link );
    link.click();
    document.body.removeChild( link );
}
/* ===== MEJORAS DE USABILIDAD ===== */
// Tooltips para iconos del panel
$( document ).ready( function() {
    $( '#adminlinks [class^="fa-"]' ).each( function() {
        var $icon = $( this );
        $icon.parent().attr( 'title', $icon.parent().text().trim() );
    });
} );
// Cargar FontAwesome si no está presente
if ( !$( 'link[href*="font-awesome"]' ).length ) {
    $( 'head' ).append(
        '<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/all.min.css">'
    );
}

Revisión del 11:53 6 julio 2025

/* ===== FUNCIONALIDAD GENERAL ===== */
$( function() {
    // 1. Mostrar avatar junto al nombre de usuario
    if ( mw.config.exists( 'wgUserAvatar' ) {
        var avatarUrl = mw.util.getUrl( 'File:' + mw.config.get( 'wgUserAvatar' ), {
            width: 24
        });
        $('#pt-userpage, .mw-userlink').prepend(
            $('<img>').addClass('user-avatar').attr( 'src', avatarUrl )
        );
    }

    // 2. Panel de administración mejorado (solo para admins)
    if ( mw.config.get( 'wgUserGroups' ).includes( 'sysop' ) ) {
        // Añadir contador dinámico de actividades
        addAdminCounters();
        
        // Añadir enlace rápido al panel
        mw.util.addPortletLink(
            'p-tb', 
            mw.util.getUrl( 'Special:Analytics' ), 
            '<i class="fas fa-chart-line"></i> Panel', 
            't-adminpanel', 
            'Acceso rápido al panel de administración'
        );
    }

    // 3. Mejorar visualización de estadísticas
    if ( mw.config.get( 'wgCanonicalSpecialPageName' ) === 'Analytics' ) {
        enhanceAnalyticsDashboard();
    }
});

/* ===== FUNCIONES AVANZADAS ===== */
function addAdminCounters() {
    // Contador de páginas nuevas (últimas 24h)
    $.get( mw.util.wikiScript( 'api' ), {
        action: 'query',
        list: 'recentchanges',
        rctype: 'new',
        rclimit: 1,
        rcend: new Date( Date.now() - 86400000 ).toISOString(),
        format: 'json'
    } ).done( function( data ) {
        var count = data.query.recentchanges.length;
        $( '#adminlinks a[href*="Special:NewPages"]' )
            .append( '<span class="admin-badge">+' + count + '</span>' );
    } );

    // Contador de ediciones pendientes
    $.get( mw.util.wikiScript( 'api' ), {
        action: 'query',
        list: 'recentchanges',
        rclimit: 1,
        rcdir: 'older',
        rcprop: 'flags',
        format: 'json'
    } ).done( function( data ) {
        var count = data.query.recentchanges.length;
        $( '#adminlinks a[href*="Special:RecentChanges"]' )
            .append( '<span class="admin-badge">' + count + '</span>' );
    } );
}

function enhanceAnalyticsDashboard() {
    // Convertir tablas en gráficos interactivos
    $( '.wikitable' ).each( function() {
        var $table = $( this );
        if ( $table.find( 'th' ).length > 1 ) {
            $table.addClass( 'analytics-table' )
                  .wrap( '<div class="table-responsive"></div>' );
            
            // Añadir botón de exportación
            $table.before( 
                '<button class="export-btn" data-table="' + $table.attr( 'id' ) + '">' +
                '<i class="fas fa-download"></i> Exportar</button>'
            );
        }
    });

    // Configurar eventos de exportación
    $( '.export-btn' ).on( 'click', function() {
        var tableId = $( this ).data( 'table' );
        exportTableToCSV( tableId );
    });
}

function exportTableToCSV( tableId ) {
    var $table = $( '#' + tableId );
    var csv = [];
    var $rows = $table.find( 'tr' );
    
    $rows.each( function() {
        var row = [];
        $( this ).find( 'th, td' ).each( function() {
            row.push( $( this ).text().trim() );
        });
        csv.push( row.join( ',' ) );
    });
    
    var csvContent = csv.join( '\n' );
    var encodedUri = encodeURI( 'data:text/csv;charset=utf-8,' + csvContent );
    var link = document.createElement( 'a' );
    link.setAttribute( 'href', encodedUri );
    link.setAttribute( 'download', 'estadisticas_' + new Date().toISOString().slice(0,10) + '.csv' );
    document.body.appendChild( link );
    link.click();
    document.body.removeChild( link );
}

/* ===== MEJORAS DE USABILIDAD ===== */
// Tooltips para iconos del panel
$( document ).ready( function() {
    $( '#adminlinks [class^="fa-"]' ).each( function() {
        var $icon = $( this );
        $icon.parent().attr( 'title', $icon.parent().text().trim() );
    });
} );

// Cargar FontAwesome si no está presente
if ( !$( 'link[href*="font-awesome"]' ).length ) {
    $( 'head' ).append(
        '<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/all.min.css">'
    );
}

Publicidad:

Patrocinador Bottom