Basculer le menu
Changer de menu des préférences
Basculer le menu personnel
Non connecté(e)
Votre adresse IP sera visible au public si vous faites des modifications.

« MediaWiki:Common.js » : différence entre les versions

Page de l’interface de MediaWiki
Hiob (discussion | contributions)
Aucun résumé des modifications
Hiob (discussion | contributions)
Aucun résumé des modifications
Ligne 14 : Ligne 14 :
} );
} );


 
/**
// Gestion des boutons Minecraft Connect (inspiré de PreToClip)
* MinecraftConnect - Boutons de copie d'adresse serveur Minecraft
* Inspiré de l'extension PreToClip
*/
(function() {
(function() {
     'use strict';
     'use strict';
      
      
     mw.hook('wikipage.content').add(function($content) {
     function initMinecraftButtons($content) {
         $content.find('.minecraft-connect-btn').each(function() {
         $content.find('.minecraft-connect-wrapper').each(function() {
             var $btn = $(this);
             var $wrapper = $(this);
              
              
             // Éviter la double initialisation
             // Éviter la double initialisation
             if ($btn.data('mc-initialized')) return;
             if ($wrapper.data('mc-initialized')) {
             $btn.data('mc-initialized', true);
                return;
            }
             $wrapper.data('mc-initialized', true);
           
            var serverAddress = $wrapper.data('mc-server');
            var buttonText = $wrapper.data('mc-text');
           
            // Créer le bouton
            var $button = $('<button>')
                .addClass('mw-ui-button mw-ui-progressive minecraft-connect-btn')
                .attr('type', 'button')
                .attr('title', 'Cliquer pour copier : ' + serverAddress)
                .text(buttonText + ' 📋');
           
            // Remplacer le span par le bouton
            $wrapper.replaceWith($button);
              
              
             $btn.on('click', function(e) {
            // Gestion du clic
                e.preventDefault();
             $button.on('click', function() {
                var textToCopy = $btn.attr('data-copy-text');
                 copyToClipboard(serverAddress, $button, buttonText);
               
                 copyToClipboard(textToCopy, $btn);
             });
             });
         });
         });
     });
     }
      
      
     function copyToClipboard(text, $button) {
     function copyToClipboard(text, $button, originalText) {
        var originalText = $button.text();
       
         // Méthode moderne (Clipboard API)
         // Méthode moderne (Clipboard API)
         if (navigator.clipboard && window.isSecureContext) {
         if (navigator.clipboard && navigator.clipboard.writeText) {
             navigator.clipboard.writeText(text).then(function() {
             navigator.clipboard.writeText(text).then(
                showSuccess($button, originalText, text);
                function() {
            }).catch(function(err) {
                    showSuccess($button, originalText);
                fallbackCopy(text, $button, originalText);
                },
             });
                function() {
                    // Fallback si échec
                    fallbackCopy(text, $button, originalText);
                }
             );
         } else {
         } else {
            // Fallback pour anciens navigateurs
             fallbackCopy(text, $button, originalText);
             fallbackCopy(text, $button, originalText);
         }
         }
Ligne 53 : Ligne 71 :
     function fallbackCopy(text, $button, originalText) {
     function fallbackCopy(text, $button, originalText) {
         var $temp = $('<textarea>')
         var $temp = $('<textarea>')
            .val(text)
             .css({
             .css({
                 position: 'fixed',
                 position: 'fixed',
Ligne 63 : Ligne 82 :
                 outline: 'none',
                 outline: 'none',
                 boxShadow: 'none',
                 boxShadow: 'none',
                 background: 'transparent',
                 background: 'transparent'
                opacity: 0
             })
             })
            .val(text)
             .appendTo('body');
             .appendTo('body')
       
            .select();
        $temp[0].select();
        $temp[0].setSelectionRange(0, 99999);
          
          
         try {
         try {
             var successful = document.execCommand('copy');
             var successful = document.execCommand('copy');
             if (successful) {
             if (successful) {
                 showSuccess($button, originalText, text);
                 showSuccess($button, originalText);
             } else {
             } else {
                 showError($button, originalText);
                 showError($button, originalText);
Ligne 84 : Ligne 103 :
     }
     }
      
      
     function showSuccess($button, originalText, copiedText) {
     function showSuccess($button, originalText) {
        // Notification MediaWiki (comme PreToClip)
         mw.notify('Adresse copiée dans le presse-papier !', {
         mw.notify('Adresse copiée : ' + copiedText, {
             type: 'success',
             type: 'success',
             autoHide: true,
             autoHide: true,
             tag: 'minecraft-copy'
             tag: 'minecraft-connect'
         });
         });
          
          
        // Feedback visuel sur le bouton
         $button
         $button
             .text('✓ Copié !')
             .text('✓ Copié !')
            .prop('disabled', true)
             .removeClass('mw-ui-progressive')
             .removeClass('mw-ui-progressive')
             .addClass('mw-ui-constructive');
             .addClass('mw-ui-constructive')
            .prop('disabled', true);
          
          
         setTimeout(function() {
         setTimeout(function() {
             $button
             $button
                 .text(originalText)
                 .text(originalText + ' 📋')
                 .prop('disabled', false)
                 .prop('disabled', false)
                 .removeClass('mw-ui-constructive')
                 .removeClass('mw-ui-constructive')
Ligne 111 : Ligne 128 :
         mw.notify('Erreur lors de la copie', {
         mw.notify('Erreur lors de la copie', {
             type: 'error',
             type: 'error',
             autoHide: true
             autoHide: true,
            tag: 'minecraft-connect'
         });
         });
          
          
Ligne 121 : Ligne 139 :
         setTimeout(function() {
         setTimeout(function() {
             $button
             $button
                 .text(originalText)
                 .text(originalText + ' 📋')
                 .removeClass('mw-ui-destructive')
                 .removeClass('mw-ui-destructive')
                 .addClass('mw-ui-progressive');
                 .addClass('mw-ui-progressive');
         }, 2000);
         }, 2000);
     }
     }
   
    // Initialisation au chargement et pour VisualEditor
    mw.hook('wikipage.content').add(initMinecraftButtons);
      
      
}());
}());
Les témoins (''cookies'') nous aident à fournir nos services. En utilisant nos services, vous acceptez notre utilisation de témoins.