diff --git a/ajax/load-more-videos.php b/ajax/load-more-videos.php index b10dd84..37a045f 100644 --- a/ajax/load-more-videos.php +++ b/ajax/load-more-videos.php @@ -12,14 +12,22 @@ if (!isset($_SERVER['HTTP_X_REQUESTED_WITH']) || strtolower($_SERVER['HTTP_X_REQ // Récupérer les paramètres $type = isset($_GET['type']) ? $_GET['type'] : ''; $page = isset($_GET['page']) ? intval($_GET['page']) : 1; +$categoryId = isset($_GET['category']) ? intval($_GET['category']) : 0; // Vérifier que le type est valide -if (!in_array($type, ['recent', 'trending', 'independence'])) { +if (!in_array($type, ['recent', 'trending', 'independence', 'category'])) { http_response_code(400); // Requête incorrecte echo json_encode(['error' => 'Type de vidéos non valide']); exit; } +// Vérifier que la catégorie est fournie si le type est 'category' +if ($type === 'category' && $categoryId <= 0) { + http_response_code(400); // Requête incorrecte + echo json_encode(['error' => 'ID de catégorie manquant ou invalide']); + exit; +} + // Récupérer les vidéos en fonction du type $videos = []; $offset = $page * LOAD_MORE_COUNT; @@ -57,6 +65,18 @@ switch ($type) { ]); $videos = formatVideosData($data['data'] ?? []); break; + + case 'category': + // Récupérer les vidéos de la catégorie + $data = callPeerTubeApi('videos', [ + 'categoryOneOf' => $categoryId, + 'count' => LOAD_MORE_COUNT, + 'start' => $offset, + 'sort' => '-publishedAt', // Les plus récentes d'abord + 'isLocal' => true + ]); + $videos = formatVideosData($data['data'] ?? []); + break; } // Préparer la réponse HTML diff --git a/index.php b/index.php index e372342..3c3bb1f 100644 --- a/index.php +++ b/index.php @@ -275,7 +275,7 @@ if (!empty($category['videos'])): ?> -
diff --git a/js/main.js b/js/main.js
index fe52795..ddad529 100644
--- a/js/main.js
+++ b/js/main.js
@@ -128,6 +128,7 @@ document.addEventListener('DOMContentLoaded', function() {
const sectionTitle = section.querySelector('.section-title').textContent.trim().toLowerCase();
const videoGrid = section.querySelector('.video-grid');
let videoType = '';
+ let categoryId = null;
if (sectionTitle.includes('dernières')) {
videoType = 'recent';
@@ -135,8 +136,21 @@ document.addEventListener('DOMContentLoaded', function() {
videoType = 'trending';
} else if (sectionTitle.includes('indépendance')) {
videoType = 'independence';
+ } else {
+ // Vérifier si c'est une section de catégorie
+ const categorySection = section.querySelector('[data-category-id]');
+ if (categorySection) {
+ videoType = 'category';
+ categoryId = categorySection.dataset.categoryId;
+ } else if (section.hasAttribute('data-category-id')) {
+ videoType = 'category';
+ categoryId = section.dataset.categoryId;
+ }
}
+ // Si aucun type reconnu, ne pas configurer l'événement
+ if (!videoType) return;
+
// Stocker le numéro de page actuel
button.dataset.page = '1';
@@ -147,8 +161,14 @@ document.addEventListener('DOMContentLoaded', function() {
button.textContent = 'Chargement...';
button.disabled = true;
+ // Préparer l'URL avec les paramètres
+ let url = `ajax/load-more-videos.php?type=${videoType}&page=${page}`;
+ if (videoType === 'category' && categoryId) {
+ url += `&category=${categoryId}`;
+ }
+
// Faire la requête AJAX
- fetch(`ajax/load-more-videos.php?type=${videoType}&page=${page}`, {
+ fetch(url, {
headers: {
'X-Requested-With': 'XMLHttpRequest'
}