MediaWiki:Gadget-Descriptions.js: Difference between revisions
No edit summary Tag: Reverted |
No edit summary Tag: Reverted |
||
| Line 12: | Line 12: | ||
console.log('Gadget is running'); | console.log('Gadget is running'); | ||
var api = new mw.Api(), | var api = new mw.Api(), | ||
userLang = mw.config.get( 'wgUserLanguage' ) | userLang = mw.config.get( 'wgUserLanguage' ), | ||
ids = [], | ids = [], | ||
anchors = {}, | anchors = {}, | ||
Revision as of 19:36, 9 October 2024
// required modules: mediawiki.api, jquery.wikibase.wbtooltip
( function ( mw, $, wb ) {
// only works for items
if ( !mw.config.exists( 'wbEntityId' ) ) {
return;
}
function init() {
console.log('Gadget is running');
var api = new mw.Api(),
userLang = mw.config.get( 'wgUserLanguage' ),
ids = [],
anchors = {},
$tooltip = $( '<span>' )
.appendTo( 'body' );
$( '.wikibase-statementgroupview a[href^="/wiki/"]' )
.each( function () {
var $anchor = $( this ),
id = $anchor.attr( 'href' ).replace( /.*Item:(Q\d+)/, '$1' ).replace( /.*Property:(P\d+)/, '$1' );
if ( id.indexOf( 'Q' ) !== 0 && id.indexOf( 'P' ) !== 0 ) {
return;
}
ids.push( id );
if ( anchors[ id ] ) {
anchors[ id ].push( $anchor );
} else {
anchors[ id ] = [ $anchor ];
}
} );
if ( ids.length === 0 ) {
return;
}
api.get( {
action: 'wbgetentities',
ids: ids,
props: [ 'descriptions' ],
languages: userLang,
languagefallback: 1,
} )
.then( function ( data ) {
console.log('API response:', data); // Ajout d'un log
$.each( data.entities || {}, function ( id, entity ) {
if ( !entity.descriptions[ userLang ] || !anchors[ id ] ) {
return;
}
$.each( anchors[ id ], function ( i, $anchor ) {
$anchor.hover( function () {
$tooltip
.wbtooltip( {
content: $( '<span>' ).text( entity.descriptions[ userLang ].value ),
permanent: true,
gravity: 'nw',
$anchor: $anchor
} )
.data( 'wbtooltip' ).show();
}, function () {
$tooltip.data( 'wbtooltip' ).hide();
} );
} );
} );
} );
}
$( init );
} ( mediaWiki, jQuery, wikibase ) );