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');
});
});