|
|
| Line 4: |
Line 4: |
| mw.loader.load('/extensions/JavascriptSlideshow/js/slideshow.js'); | | mw.loader.load('/extensions/JavascriptSlideshow/js/slideshow.js'); |
|
| |
|
| mw.hook('wikipage.content').add(function($content) {
| |
| $content.find('.mw-jsslideshow').each(function() {
| |
| const $slideshowContainer = $(this);
| |
| const $slideshow = $('<div class="slideshow"></div>');
| |
|
| |
|
| // Find all images inside mw-jsslideshow, including [[File:]] images
| |
| $slideshowContainer.find('img').each(function() {
| |
| const $img = $(this);
| |
| const $slide = $('<div></div>').append($img.clone()); // Wrap in slide div
| |
| $slideshow.append($slide);
| |
| });
| |
|
| |
| // Replace old content with the new slick-ready slideshow
| |
| $slideshowContainer.empty().append($slideshow);
| |
|
| |
| // Initialize slick
| |
| $slideshow.slick({
| |
| infinite: true,
| |
| slidesToShow: 1,
| |
| slidesToScroll: 1,
| |
| autoplay: true,
| |
| autoplaySpeed: 5000,
| |
| arrows: true,
| |
| dots: true,
| |
| adaptiveHeight: true
| |
| });
| |
|
| |
| // Fix positioning on resize
| |
| $(window).on('resize', function() {
| |
| $slideshow.slick('setPosition');
| |
| });
| |
| });
| |
| });
| |
| function waitForStartSlideshow(callback) {
| |
| if (typeof startSlideshow === 'function') {
| |
| callback();
| |
| } else {
| |
| setTimeout(function() {
| |
| waitForStartSlideshow(callback);
| |
| }, 100); // Try every 100ms
| |
| }
| |
| }
| |
|
| |
| function initMissingSlideshows() {
| |
| var counter = 1;
| |
|
| |
| $('.slideshow').each(function() {
| |
| var $this = $(this);
| |
| if (!$this.attr('id')) {
| |
| var newId = 'slideshow-auto-' + (counter++);
| |
| $this.attr('id', newId);
| |
|
| |
| if ($('#' + newId + '-spacer').length === 0) {
| |
| $('<div>')
| |
| .attr('id', newId + '-spacer')
| |
| .insertAfter($this);
| |
| }
| |
|
| |
| // Call the slideshow init AFTER we confirm startSlideshow exists
| |
| waitForStartSlideshow(function() {
| |
| startSlideshow(newId);
| |
| });
| |
| }
| |
| });
| |
| }
| |
|
| |
| $(document).ready(function() {
| |
| mw.loader.load('/extensions/JavascriptSlideshow/js/slideshow.js');
| |
|
| |
| // Start initializing after ensuring the script is there
| |
| waitForStartSlideshow(initMissingSlideshows);
| |
| });
| |
|
| |
|
| $(document).ready(function() { | | $(document).ready(function() { |