Utilisateur:Galdrad/common.js
Aller à la navigation
Aller à la recherche
Note : après avoir enregistré tes préférences, tu devras forcer le rechargement complet du cache de ton navigateur pour voir les changements. Mozilla Firefox / Safari : maintiens la touche Majuscule (Shift) en cliquant sur le bouton Actualiser (Reload) ou presse Maj-Ctrl-R (Maj-Cmd-R sur Apple Mac) ; Internet Explorer / Opera : maintiens la touche Ctrl en cliquant sur le bouton Actualiser ou presse Ctrl-F5.
/**
* Ajoute un bouton pour marquer les contributions d'un utilisateur comme relue.
**/
mw.loader.load('https://fr.vikidia.org/w/index.php?title=Utilisateur:Galdrad/UserPatrol.js&action=raw&ctype=text/javascript');
/**
* Ajoute un bouton pour marquer l'historique de la page comme relue.
**/
mw.loader.load('https://fr.vikidia.org/w/index.php?title=Utilisateur:Vivi-1/js/SmartPatrol.js&action=raw&ctype=text/javascript');
/**
* Insère des liens à côté des titres de section.
**/
mw.loader.using( [ 'mediawiki.util', 'user' ], function () {
'use strict';
$( function ( $ ) {
var lang = mw.config.get( 'wgUserLanguage' ),
messages = {
en: {
'ancretitres-anchor-name': '[URL]',
'ancretitres-internal-link-name': '[[Link]]',
'ancretitres-description': 'Get an URL to this section',
'ancretitres-int-description': 'Get an internal link to this section',
'ancretitres-notif-title': 'Text copied to clipboard',
'ancretitres-notif-error': 'Could not copy to clipboard'
},
fr: {
'ancretitres-anchor-name': '[URL]',
'ancretitres-internal-link-name': '[[Lien]]',
'ancretitres-description': 'Obtenir une URL vers cette section',
'ancretitres-int-description': 'Obtenir un lien interne vers cette section',
'ancretitres-notif-title': 'Texte copié dans le presse-papiers',
'ancretitres-notif-error': 'Impossible de copier dans le presse-papiers'
}
},
options = {
afficheE: true,
afficheI: true
};
mw.messages.set( messages.en );
if ( lang !== 'en' && lang in messages ) {
mw.messages.set( messages[ lang ] );
}
// https://stackoverflow.com/questions/400212/how-do-i-copy-to-the-clipboard-in-javascript/30810322#30810322
function copyTextToClipboard( text ) {
var textArea = document.createElement( 'textarea' );
textArea.style.position = 'fixed';
textArea.style.top = 0;
textArea.style.left = 0;
textArea.style.width = '2em';
textArea.style.height = '2em';
textArea.style.padding = 0;
textArea.style.border = 'none';
textArea.style.outline = 'none';
textArea.style.boxShadow = 'none';
textArea.style.background = 'transparent';
textArea.value = text;
document.body.appendChild( textArea );
textArea.focus();
textArea.select();
var copySuccess;
try {
document.execCommand( 'copy' );
copySuccess = true;
} catch ( e ) {
copySuccess = false;
}
document.body.removeChild( textArea );
if ( copySuccess ) {
mw.notify( text, { title: mw.msg( 'ancretitres-notif-title' ), tag: 'ancretitres', type: 'info', autoHide: true } );
} else {
mw.notify( mw.msg( 'ancretitres-notif-error' ), { tag: 'ancretitres', type: 'error', autoHide: true } );
}
}
if ( typeof window.AncreTitres !== 'undefined' ) {
$.extend( options, window.AncreTitres );
}
if ( !options.afficheI && !options.afficheE ) {
return;
}
$( 'span.mw-headline' ).each( function ( _, headline ) {
var $span = $( '<span>' )
.addClass( 'noprint ancretitres' )
.css( {
'font-size': 'xx-small',
'font-weight': 'normal',
'user-select': 'none' // jQuery se charge d'ajouter un vendor prefix si nécessaire
} );
if ( options.afficheE ) {
var $linkE = $( '<a href="#" title="' + mw.msg( 'ancretitres-description' ) + '">' + mw.msg( 'ancretitres-anchor-name' ) + '</a>' ).click( function ( e ) {
e.preventDefault();
var outputText = mw.config.get( 'wgServer' ) + mw.util.getUrl() + '#' + headline.id;
copyTextToClipboard( outputText );
} );
$span.append( ' ', $linkE );
}
if ( options.afficheI ) {
var $linkI = $( '<a href="#" title="' + mw.msg( 'ancretitres-int-description' ) + '">' + mw.msg( 'ancretitres-internal-link-name' ) + '</a>' ).click( function ( e ) {
e.preventDefault();
var escapedAnchor = headline.id
// escaping caractères spéciaux HTML
// (partiel, '"& ne sont pas escapés pour ne pas dégrader inutilement la lisibilité du lien)
.replace( /</g, '<' )
.replace( />/g, '>' )
// escaping caractères spéciaux MediaWiki
.replace( /\[/g, '[' )
.replace( /\]/g, ']' )
.replace( /\{/g, '{' )
.replace( /\|/g, '|' )
.replace( /\}/g, '}' );
var outputText = '[[' + ( mw.config.get( 'wgPageName' ) + '#' + escapedAnchor ).replace( /_/g, ' ' ) + ']]';
copyTextToClipboard( outputText );
} );
$span.append( ' ', $linkI );
}
$( headline ).parent().append( $span );
} );
} );
} );
mw.loader.using( 'user', function () {
$( function ( $ ) {
var options = {
text: '↑',
title: 'Haut de page',
animate: false,
animate_duration: 1000,
};
if ( typeof FlecheHaut_options !== 'undefined' ) {
$.extend( options, FlecheHaut_options );
}
var callback = function ( e ) {
e.preventDefault();
if ( options.animate ) {
// c'est bien sur les deux éléments, refs https://stackoverflow.com/a/5580397
$( 'html, body' ).animate( { scrollTop: 0 }, options.animate_duration );
} else {
window.scrollTo( 0, 0 );
}
};
var $lien = $( '<a href="#" class="noprint">' )
.text( options.text)
.attr( 'title', options.title)
.css( {
'margin-left': '0.3em',
'user-select': 'none' // jQuery se charge d'ajouter un vendor prefix si nécessaire
} )
.click( callback );
$( '#mw-content-text' ).find( 'h2, h3, h4, h5, h6' ).append( $lien );
} );
} );