|
|
(32 versions intermédiaires par le même utilisateur non affichées) |
Ligne 1 : |
Ligne 1 : |
| /* Tout JavaScript ici sera chargé avec chaque page accédée par n’importe quel utilisateur. */ | | /* Tout JavaScript ici sera chargé avec chaque page accédée par n’importe quel utilisateur. */ |
| // A script that adds a "Back To Top" button in the footer of the Oasis theme.
| | $( function () { |
| // I don't like scrolling back to top on long pages neither do you :)
| | var elems = document.getElementsByClassName('mw-editsection'); |
| // Created by Noemon from Dead Space Wiki
| | for (i = 0; i < elems.length; i++) { |
| // Used files: [[File:BackToTopArrow_white.png]] [[File:BlackToTopArrow.png]]
| | var span = document.createElement('span'); |
| (function(window, $, mw) { | | var link = document.createElement('a'); |
| 'use strict';
| | link.href = '#top'; |
|
| | link.appendChild(document.createTextNode('retour en haut')); |
| var buttonStart = typeof window.BackToTopStart === 'number' ?
| | span.appendChild(document.createTextNode('[')); |
| window.BackToTopStart :
| | span.appendChild(link); |
| window.innerHeight,
| | span.appendChild(document.createTextNode(' ↑] ')); |
| scrollSpeed = typeof window.BackToTopSpeed === 'number' ?
| | span.style.fontWeight = 'bold'; |
| window.BackToTopSpeed :
| | elems[i].insertBefore(span, elems[i].firstChild); |
| 600,
| | } |
| fadeSpeed = typeof window.BackToTopFade === 'number' ?
| | }); |
| window.BackToTopFade :
| |
| 600,
| |
| $button,
| |
| cc = mw.config.get('wgSassParams')['color-community-header'],
| |
| theme;
| |
|
| |
| // Double-run protection
| |
| if (window.BackToTopLoaded) {
| |
| return;
| |
| }
| |
| window.BackToTopLoaded = true;
| |
|
| |
| function init() {
| |
| $button.children('div').hide();
| |
| $(window).scroll($.throttle(100, function() {
| |
| if ($(this).scrollTop() > buttonStart) {
| |
| switch (fadeSpeed) {
| |
| case 0:
| |
| $button.children('div').show();
| |
| break;
| |
| default:
| |
| $button.children('div').fadeIn(fadeSpeed);
| |
| break;
| |
| }
| |
| } else {
| |
| switch (fadeSpeed) {
| |
| case 0:
| |
| $button.children('div').hide();
| |
| break;
| |
| default:
| |
| $button.children('div').fadeOut(fadeSpeed);
| |
| break;
| |
| }
| |
| }
| |
| }));
| |
| mw.hook('dev.BackToTopButton').fire($button);
| |
| }
| |
|
| |
| function click() {
| |
| $('body, html').animate({
| |
| scrollTop: 0
| |
| }, scrollSpeed);
| |
| return false;
| |
| }
| |
|
| |
| function modernPreload(l) {
| |
| if (++_loaded == l) {
| |
| modernInit(window.dev.wds, window.dev.colors);
| |
| }
| |
| }
| |
|
| |
| function modernInit(wds, colors) {
| |
| cc = colors.parse(cc);
| |
| theme = cc.isBright() ? '#000000' : '#ffffff';
| |
| cc = cc.hex();
| |
| $button = $('<div>', {
| |
| id: 'BackToTopBtn',
| |
| append: [
| |
| $('<div>', {
| |
| css: {
| |
| background: cc,
| |
| color: theme,
| |
| },
| |
| 'html': wds.icon('menu-control')
| |
| })
| |
| ],
| |
| click: click
| |
| }).appendTo(document.body);
| |
| $.proxy(modernReposition, $button.children('div'))();
| |
| $(window).on('resize', $.throttle(100, $.proxy(modernReposition, $button.children('div'))));
| |
| init();
| |
| }
| |
|
| |
| function modernReposition() {
| |
| this.css({
| |
| 'right':$(window).width()/100*5,
| |
| 'bottom':$('#WikiaBar #WikiaBarWrapper').height()+8
| |
| });
| |
| }
| |
|
| |
| function arrowInit() {
| |
| $button = $('<li>', {
| |
| click: click,
| |
| id: 'backtotop'
| |
| }).append(
| |
| $('<img>', {
| |
| src: 'https://images.wikia.nocookie.net/dev/images/' + (
| |
| (theme === 'black' || window.BackToTopArrowBlack) ?
| |
| 'f/f2/BlackToTopArrow' :
| |
| 'c/c3/BackToTopArrow_white'
| |
| ) + '.png'
| |
| })
| |
| ).appendTo('#WikiaBarWrapper .toolbar > .tools');
| |
| init();
| |
| }
| |
|
| |
| function oldInit(i18n) {
| |
| $button = $('<li>', {
| |
| click: click,
| |
| id: 'backtotop'
| |
| }).append(
| |
| $('<button>', {
| |
| css: {
| |
| height: '20px'
| |
| },
| |
| type: 'button',
| |
| text: (typeof window.BackToTopText === 'string' && window.BackToTopText) || i18n.msg('backToTop').plain()
| |
| })
| |
| ).appendTo('#WikiaBarWrapper .toolbar > .tools');
| |
| init();
| |
| }
| |
|
| |
| if (window.BackToTopModern) {
| |
| var _loaded = 0;
| |
| [
| |
| {
| |
| h: 'wds',
| |
| s: 'u:dev:WDSIcons/code.js'
| |
| },
| |
| {
| |
| h:'colors',
| |
| s: 'u:dev:Colors/code.js'
| |
| }
| |
| ].forEach(function(lib, i, a) {
| |
| importArticle({
| |
| type: 'script',
| |
| article: lib.s
| |
| });
| |
| mw.hook('dev.' + lib.h).add(
| |
| $.proxy(modernPreload, null, a.length)
| |
| );
| |
| });
| |
| } else if (window.BackToTopArrow) {
| |
| arrowInit();
| |
| } else {
| |
| importArticle({
| |
| type: 'script',
| |
| article: 'u:dev:MediaWiki:I18n-js/code.js'
| |
| });
| |
| mw.hook('dev.i18n').add(function (i18n) {
| |
| i18n.loadMessages('BackToTopButton').done(oldInit);
| |
| });
| |
| }
| |
| importArticle({
| |
| type: 'style',
| |
| article: 'u:dev:MediaWiki:BackToTopButton.css'
| |
| });
| |
| }(this, jQuery, mediaWiki));
| |