MediaWiki:Common.js
Page de l’interface de MediaWiki
Autres actions
Note : après avoir publié vos modifications, il se peut que vous deviez forcer le rechargement complet du cache de votre navigateur pour voir les changements.
- Firefox / Safari : maintenez la touche Maj (Shift) en cliquant sur le bouton Actualiser ou appuyez sur Ctrl + F5 ou Ctrl + R (⌘ + R sur un Mac).
- Google Chrome : appuyez sur Ctrl + Maj + R (⌘ + Shift + R sur un Mac).
- Edge : maintenez la touche Ctrl en cliquant sur le bouton Actualiser ou pressez Ctrl + F5.
/* Tout JavaScript présent ici sera exécuté par tous les utilisateurs à chaque chargement de page. */
$( function () {
$( '.citizen-search-trigger' ).on( 'click', function () {
$( '#searchInput' ).focus();
} );
// Raccourci Ctrl+K (ou Cmd+K sur Mac)
$( document ).on( 'keydown', function ( e ) {
if ( ( e.ctrlKey || e.metaKey ) && e.key === 'k' ) {
e.preventDefault();
$( '#searchInput' ).focus();
}
} );
} );
// Gestion des boutons Minecraft Connect (inspiré de PreToClip)
(function() {
'use strict';
mw.hook('wikipage.content').add(function($content) {
$content.find('.minecraft-connect-btn').each(function() {
var $btn = $(this);
// Éviter la double initialisation
if ($btn.data('mc-initialized')) return;
$btn.data('mc-initialized', true);
$btn.on('click', function(e) {
e.preventDefault();
var textToCopy = $btn.attr('data-copy-text');
copyToClipboard(textToCopy, $btn);
});
});
});
function copyToClipboard(text, $button) {
var originalText = $button.text();
// Méthode moderne (Clipboard API)
if (navigator.clipboard && window.isSecureContext) {
navigator.clipboard.writeText(text).then(function() {
showSuccess($button, originalText, text);
}).catch(function(err) {
fallbackCopy(text, $button, originalText);
});
} else {
fallbackCopy(text, $button, originalText);
}
}
function fallbackCopy(text, $button, originalText) {
var $temp = $('<textarea>')
.css({
position: 'fixed',
top: 0,
left: 0,
width: '2em',
height: '2em',
padding: 0,
border: 'none',
outline: 'none',
boxShadow: 'none',
background: 'transparent',
opacity: 0
})
.val(text)
.appendTo('body')
.select();
try {
var successful = document.execCommand('copy');
if (successful) {
showSuccess($button, originalText, text);
} else {
showError($button, originalText);
}
} catch (err) {
showError($button, originalText);
}
$temp.remove();
}
function showSuccess($button, originalText, copiedText) {
// Notification MediaWiki (comme PreToClip)
mw.notify('Adresse copiée : ' + copiedText, {
type: 'success',
autoHide: true,
tag: 'minecraft-copy'
});
// Feedback visuel sur le bouton
$button
.text('✓ Copié !')
.prop('disabled', true)
.removeClass('mw-ui-progressive')
.addClass('mw-ui-constructive');
setTimeout(function() {
$button
.text(originalText)
.prop('disabled', false)
.removeClass('mw-ui-constructive')
.addClass('mw-ui-progressive');
}, 2000);
}
function showError($button, originalText) {
mw.notify('Erreur lors de la copie', {
type: 'error',
autoHide: true
});
$button
.text('✗ Erreur')
.removeClass('mw-ui-progressive')
.addClass('mw-ui-destructive');
setTimeout(function() {
$button
.text(originalText)
.removeClass('mw-ui-destructive')
.addClass('mw-ui-progressive');
}, 2000);
}
}());