Diferencia entre revisiones de «MediaWiki:Common.js»
Página de la interfaz de MediaWiki
Más acciones
Sin resumen de edición Etiqueta: Reversión manual |
Sin resumen de edición |
||
Línea 1: | Línea 1: | ||
/* | /* ===== FUNCIONALIDAD GENERAL ===== */ | ||
$( 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">'
);
}