diff --git a/resources/js/csp-safe.js b/resources/js/csp-safe.js index ff58d9c29..f1cd82659 100644 --- a/resources/js/csp-safe.js +++ b/resources/js/csp-safe.js @@ -50,6 +50,7 @@ document.addEventListener('DOMContentLoaded', function() { initProfilePage(); // Initialize profile page (progress bars and charts) initCopyToClipboard(); // Copy functionality for RSS/Profile pages initVerifyUserModal(); // Admin user verification modal + initQualityFilter(); // Quality filter for movie releases }); // Event delegation for dynamically added elements - optimized with early returns @@ -4308,3 +4309,57 @@ if (document.readyState === 'loading') { } } +// Initialize quality filter for movie releases +function initQualityFilter() { + const filterButtons = document.querySelectorAll('.quality-filter-btn'); + const releaseItems = document.querySelectorAll('.release-item'); + const releaseCount = document.getElementById('release-count'); + + if (!filterButtons.length || !releaseItems.length || !releaseCount) { + return; // Exit if elements don't exist on the page + } + + const totalReleases = releaseItems.length; + + filterButtons.forEach(button => { + button.addEventListener('click', function() { + const quality = this.getAttribute('data-quality'); + + // Update active button styling + filterButtons.forEach(btn => { + btn.classList.remove('active', 'bg-blue-600', 'text-white'); + btn.classList.add('bg-gray-200', 'dark:bg-gray-700', 'text-gray-700', 'dark:text-gray-300'); + }); + this.classList.add('active', 'bg-blue-600', 'text-white'); + this.classList.remove('bg-gray-200', 'dark:bg-gray-700', 'text-gray-700', 'dark:text-gray-300'); + + let visibleCount = 0; + + // Filter releases + releaseItems.forEach(item => { + const releaseName = item.getAttribute('data-release-name'); + + if (quality === 'all') { + item.style.display = ''; + visibleCount++; + } else { + // Check if release name contains the quality indicator + if (releaseName && releaseName.includes(quality.toLowerCase())) { + item.style.display = ''; + visibleCount++; + } else { + item.style.display = 'none'; + } + } + }); + + // Update count + if (quality === 'all') { + releaseCount.textContent = `(${totalReleases} total)`; + } else { + releaseCount.textContent = `(${visibleCount} of ${totalReleases})`; + } + }); + }); +} + diff --git a/resources/views/movies/viewmoviefull.blade.php b/resources/views/movies/viewmoviefull.blade.php index 5030404a4..8a216ecf1 100644 --- a/resources/views/movies/viewmoviefull.blade.php +++ b/resources/views/movies/viewmoviefull.blade.php @@ -145,14 +145,32 @@ @if(isset($releases) && count($releases) > 0)