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
Sin resumen de edición
 
(No se muestran 2 ediciones intermedias del mismo usuario)
Línea 1: Línea 1:
/* ===== FUNCIONALIDAD GENERAL ===== */
/* ===== MEDIAWIKI COMMON.JS - PANEL ===== */
$( function() {
// Cargar estadísticas del sitio
    // 1. Mostrar avatar junto al nombre de usuario
function loadAdminStats() {
    if ( mw.config.exists( 'wgUserAvatar' ) {
     // Estadísticas básicas
        var avatarUrl = mw.util.getUrl( 'File:' + mw.config.get( 'wgUserAvatar' ), {
     $.get(mw.util.wikiScript('api'), {
            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',
         action: 'query',
         list: 'recentchanges',
         meta: 'siteinfo',
         rctype: 'new',
         siprop: 'statistics',
        rclimit: 1,
        rcend: new Date( Date.now() - 86400000 ).toISOString(),
         format: 'json'
         format: 'json'
     } ).done( function( data ) {
     }).done(function(data) {
         var count = data.query.recentchanges.length;
         $('#stat-pages').text(data.query.statistics.pages.toLocaleString());
         $( '#adminlinks a[href*="Special:NewPages"]' )
         $('#stat-users').text(data.query.statistics.users.toLocaleString());
            .append( '<span class="admin-badge">+' + count + '</span>' );
        $('#stat-edits').text(data.query.statistics.edits.toLocaleString());
     } );
     });


     // Contador de ediciones pendientes
     // Cambios recientes
     $.get( mw.util.wikiScript( 'api' ), {
     $.get(mw.util.wikiScript('api'), {
         action: 'query',
         action: 'query',
         list: 'recentchanges',
         list: 'recentchanges',
         rclimit: 1,
         rclimit: 1,
        rcdir: 'older',
        rcprop: 'flags',
         format: 'json'
         format: 'json'
     } ).done( function( data ) {
     }).done(function(data) {
        var count = data.query.recentchanges.length;
         $('#stat-recent-changes').text(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 ) {
// Tooltips para iconos
    var $table = $( '#' + tableId );
$(document).on('mouseenter', '.admin-links-item i', function() {
    var csv = [];
     $(this).parent().attr('title', $(this).parent().text().trim());
    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
// Cargar FontAwesome si no está presente
if ( !$( 'link[href*="font-awesome"]' ).length ) {
if (!$('link[href*="font-awesome"]').length) {
     $( 'head' ).append(
     $('head').append(
         '<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/all.min.css">'
         '<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/all.min.css">'
     );
     );
}
}

Revisión actual - 12:31 6 julio 2025

/* ===== MEDIAWIKI COMMON.JS - PANEL ===== */
// Cargar estadísticas del sitio
function loadAdminStats() {
    // Estadísticas básicas
    $.get(mw.util.wikiScript('api'), {
        action: 'query',
        meta: 'siteinfo',
        siprop: 'statistics',
        format: 'json'
    }).done(function(data) {
        $('#stat-pages').text(data.query.statistics.pages.toLocaleString());
        $('#stat-users').text(data.query.statistics.users.toLocaleString());
        $('#stat-edits').text(data.query.statistics.edits.toLocaleString());
    });

    // Cambios recientes
    $.get(mw.util.wikiScript('api'), {
        action: 'query',
        list: 'recentchanges',
        rclimit: 1,
        format: 'json'
    }).done(function(data) {
        $('#stat-recent-changes').text(data.query.recentchanges.length);
    });
}

// Tooltips para iconos
$(document).on('mouseenter', '.admin-links-item i', function() {
    $(this).parent().attr('title', $(this).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