MediaWiki:Common.js
Note: After publishing, you may have to bypass your browser's cache to see the changes.
- Firefox / Safari: Hold Shift while clicking Reload, or press either Ctrl-F5 or Ctrl-R (⌘-R on a Mac)
- Google Chrome: Press Ctrl-Shift-R (⌘-Shift-R on a Mac)
- Internet Explorer / Edge: Hold Ctrl while clicking Refresh, or press Ctrl-F5
- Opera: Press Ctrl-F5.
$(document).ready(function () { console.log('JavaScript is working!'); var communityFeatured = $('#community-featured'); var communityListFeatured = $('#community-list-featured'); var cards = $('.card'); var filteredCards = $('.filtered-list-item'); var showArticleWrapper = $('#show-article-wrapper'); if (communityFeatured.length && filteredCards.length >= 2) { // Detach and insert the community featured element after the second card communityFeatured.detach(); filteredCards.eq(1).after(communityFeatured); // Show the community-featured element after positioning it communityFeatured.show(); } // Check if we are on a page that requires community card formatting if ($('.community-card').length) { formatCommunityCardDescriptions(); } if (communityListFeatured.length && filteredCards.length >= 4) { // Detach and insert the community featured element after the second card communityListFeatured.detach(); filteredCards.eq(3).after(communityListFeatured); // Show the community-featured element after positioning it communityListFeatured.show(); } // Using delegated event handling $('#list-list').on('mousedown', '.filtered-value-option', function (event) { console.log("Filter clicked"); communityListFeatured.hide(); console.log("Community List Featured should now be hidden"); }); function formatParagraphs(text) { var paragraphs = text.split('\n').filter(function (p) { return p.trim() !== '' }); return paragraphs.map(function (p) { return '<p>' + p.trim() + '</p>'; }).join(''); } function formatCommunityCardDescriptions() { console.log("Formatting community card descriptions"); $('.community-card').each(function() { console.log("Processing a community card"); // Format paragraphs in community-description var descriptionContainer = $(this).find('.community-description'); var rawDescription = descriptionContainer.text(); var formattedDescription = formatParagraphs(rawDescription); descriptionContainer.html(formattedDescription); // Remove empty elements in the entire card $(this).find('*').each(function() { if ($(this).is(':empty') || $(this).html().trim() === '<br>') { $(this).remove(); } }); console.log("Formatted Community Card HTML:", $(this).html()); }); } var toggleButton = $('.toggle-filters'); var filtersDiv = $('.filtered-filters'); if (toggleButton.length && filtersDiv.length) { console.log("Button and Filters div found with jQuery."); toggleButton.on('click', function(event) { event.preventDefault(); console.log("Button clicked. Current display style:", filtersDiv.css('display')); if (filtersDiv.css('display') === 'none' || filtersDiv.css('display') === '') { filtersDiv.attr('style', 'display: flex !important'); toggleButton.text('[Close]'); console.log("Filters shown."); } else { filtersDiv.attr('style', 'display: none !important'); toggleButton.text('[Open]'); console.log("Filters hidden."); } }); } else { console.log("Button or Filters div not found with jQuery."); } // Function to check if all filters are cleared function checkFiltersCleared() { var checkedFilters = $('#list-list .filtered-value-option input[type="checkbox"]:checked'); console.log("Checked filters count:", checkedFilters.length); if (checkedFilters.length === 0) { console.log("All filters are cleared"); communityListFeatured.show(); } else { console.log("Some filters are still active"); } } // Event delegation for filter changes $('#list-list').on('change', '.filtered-value-option input[type="checkbox"]', function() { setTimeout(checkFiltersCleared, 100); // Delay to allow for filter processing console.log("Filter change detected"); }); // Initial check checkFiltersCleared(); function openModal(element) { console.log('Modal opening for:', element); var cardImages = []; for (var i = 1; i <= 5; i++) { var imageClass = '.image' + i; var captionClass = '.caption-image' + i; var imageElem = $(element).find(imageClass + ' img'); console.log('Processing image:', imageClass, 'Found:', imageElem.length > 0); if (imageElem.length) { var captionText = $(element).find(imageClass + ' ' + captionClass).text(); console.log('Caption for', imageClass, ':', captionText); cardImages.push({ link: $(element).find(imageClass + ' a').attr('href'), src: imageElem.attr('src'), alt: imageElem.attr('alt'), caption: captionText, captionClass: 'caption-image' + i }); } } console.log('Collected images:', cardImages); // Your existing code to handle the images and modal content // ... } // Delegate for block-view page $('#list').on('mousedown', '.card', function (event) { if ($(event.target).closest('.people a, .type a').length) { return; } openModal(this); }); // Delegate for list-view page $('#list-list').on('mousedown', '.list-card', function (event) { if ($(event.target).closest('.people a, .type a').length) { return; } openModal(this); }); function setupImageToggle(images) { var currentIndex = 0; var totalImages = images.length; function toggleImage() { currentIndex = (currentIndex + 1) % totalImages; var image = images[currentIndex]; console.log("Toggling to image index:", currentIndex, "Src:", image.src); $('#article-content').find('.article-images').html(getImageHtml(image, currentIndex, totalImages)); } // Updated event binding $('#article-content').on('click', '.image-container img', function () { console.log("Image clicked"); toggleImage(); }); } function getImageHtml(image, currentIndex, totalImages) { var imageLabel = (currentIndex + 1) + '/' + totalImages + ' IMAGES'; return '<p class="article-label-image">' + imageLabel + '</p>' + '<div class="image-container">' + '<img src="' + image.src + '" alt="' + image.alt + '">' + '<div class="' + image.captionClass + '">' + image.caption + '</div>' + '</div>'; } // Attach a mousedown event listener to close the fixed column $(document).on('mousedown', function (event) { // Check if the click is outside of the #show-article-wrapper and not on a card if (!showArticleWrapper.is(event.target) && showArticleWrapper.has(event.target).length === 0 && !$(event.target).hasClass('card')) { // Remove the fade-out class when hiding the fixed column $('#list').removeClass('fade-out'); showArticleWrapper.css('display', 'none'); } }); // Attach a click event listener to close the fixed column when clicking the close button $('#close-button').on('click', function () { // Remove the fade-out class when hiding the fixed column $('#list').removeClass('fade-out'); showArticleWrapper.css('display', 'none'); }); // Hover effect for scrolling showArticleWrapper.hover(function () { // On hover, enable scrolling on #show-article-wrapper $(this).css('overflow-y', 'auto'); }, function () { // On hover out, disable scrolling on #show-article-wrapper $(this).css('overflow-y', 'hidden'); }); });