MediaWiki:Common.js: Difference between revisions
Appearance
Cdjensen94 (talk | contribs) No edit summary |
Cdjensen94 (talk | contribs) No edit summary |
||
Line 36: | Line 36: | ||
}); | }); | ||
}); | }); | ||
}); | |||
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); | |||
}); | }); | ||
Revision as of 15:08, 3 March 2025
mw.loader.load('https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.8.1/slick.min.js');
mw.loader.load('https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.8.1/slick.css', 'text/css');
mw.loader.load('https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.8.1/slick-theme.css', 'text/css');
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() {
var counter = 1;
$('.slideshow').each(function() {
var $this = $(this);
if (!$this.attr('id')) {
// Assign an auto id if missing
var newId = 'slideshow-auto-' + (counter++);
$this.attr('id', newId);
// Add the missing spacer
if ($('#' + newId + '-spacer').length === 0) {
$('<div>')
.attr('id', newId + '-spacer')
.insertAfter($this);
}
// Force JavascriptSlideshow to initialize this slideshow
startSlideshow(newId);
}
});
});