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)
{{MinecraftConnect}}
Hiob (discussion | contributions)
Aucun résumé des modifications
Ligne 15 : Ligne 15 :




/**
// Gestion des boutons Minecraft Connect (inspiré de PreToClip)
* Copie l'adresse du serveur Minecraft
(function() {
*/
     'use strict';
function copyMinecraftServer(button) {
     var wrapper = button.closest('.mc-connect-wrapper');
    var serverAddress = wrapper.getAttribute('data-server');
      
      
     navigator.clipboard.writeText(serverAddress).then(function() {
     mw.hook('wikipage.content').add(function($content) {
         var feedback = wrapper.querySelector('.mc-connect-feedback');
        $content.find('.minecraft-connect-btn').each(function() {
         feedback.classList.add('show');
            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() {
         setTimeout(function() {
             feedback.classList.remove('show');
             $button
                .text(originalText)
                .prop('disabled', false)
                .removeClass('mw-ui-constructive')
                .addClass('mw-ui-progressive');
         }, 2000);
         }, 2000);
    }
   
    function showError($button, originalText) {
        mw.notify('Erreur lors de la copie', {
            type: 'error',
            autoHide: true
        });
          
          
    }).catch(function(err) {
         $button
         // Fallback pour navigateurs anciens
            .text('✗ Erreur')
        var textarea = document.createElement('textarea');
            .removeClass('mw-ui-progressive')
        textarea.value = serverAddress;
            .addClass('mw-ui-destructive');
        textarea.style.position = 'fixed';
        textarea.style.opacity = '0';
        document.body.appendChild(textarea);
        textarea.select();
          
          
         try {
         setTimeout(function() {
             document.execCommand('copy');
             $button
            var feedback = wrapper.querySelector('.mc-connect-feedback');
                .text(originalText)
            feedback.classList.add('show');
                .removeClass('mw-ui-destructive')
            setTimeout(function() {
                 .addClass('mw-ui-progressive');
                 feedback.classList.remove('show');
        }, 2000);
            }, 2000);
    }
        } catch(e) {
   
            alert('Adresse du serveur : ' + serverAddress);
}());
        }
       
        document.body.removeChild(textarea);
    });
}
 
window.copyMinecraftServer = copyMinecraftServer;

Version du 10 novembre 2025 à 13:47

/* 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);
    }
    
}());
Les témoins (''cookies'') nous aident à fournir nos services. En utilisant nos services, vous acceptez notre utilisation de témoins.