MediaWiki:Common.js: Difference between revisions
Jump to navigation
Jump to search
No edit summary Tag: Reverted |
No edit summary Tag: Reverted |
||
Line 112: | Line 112: | ||
function openModal(element) { | 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) { | function setupImageToggle(images) { |
Revision as of 16:01, 23 January 2024
$(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'); }); });