fix load more on categories videos

This commit is contained in:
2025-04-08 16:33:56 +04:00
parent 270123a233
commit e0a0562c3f
3 changed files with 43 additions and 3 deletions
+21 -1
View File
@@ -12,14 +12,22 @@ if (!isset($_SERVER['HTTP_X_REQUESTED_WITH']) || strtolower($_SERVER['HTTP_X_REQ
// Récupérer les paramètres // Récupérer les paramètres
$type = isset($_GET['type']) ? $_GET['type'] : ''; $type = isset($_GET['type']) ? $_GET['type'] : '';
$page = isset($_GET['page']) ? intval($_GET['page']) : 1; $page = isset($_GET['page']) ? intval($_GET['page']) : 1;
$categoryId = isset($_GET['category']) ? intval($_GET['category']) : 0;
// Vérifier que le type est valide // 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 http_response_code(400); // Requête incorrecte
echo json_encode(['error' => 'Type de vidéos non valide']); echo json_encode(['error' => 'Type de vidéos non valide']);
exit; 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 // Récupérer les vidéos en fonction du type
$videos = []; $videos = [];
$offset = $page * LOAD_MORE_COUNT; $offset = $page * LOAD_MORE_COUNT;
@@ -57,6 +65,18 @@ switch ($type) {
]); ]);
$videos = formatVideosData($data['data'] ?? []); $videos = formatVideosData($data['data'] ?? []);
break; 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 // Préparer la réponse HTML
+1 -1
View File
@@ -275,7 +275,7 @@
if (!empty($category['videos'])): if (!empty($category['videos'])):
?> ?>
<!-- Section Catégorie: <?php echo $category['name']; ?> --> <!-- Section Catégorie: <?php echo $category['name']; ?> -->
<div class="video-section"> <div class="video-section" data-category-id="<?php echo $category['id']; ?>">
<div class="section-header"> <div class="section-header">
<div class="section-logo"> <div class="section-logo">
<img src="img/logo.png" alt="Kaubuntu.re"> <img src="img/logo.png" alt="Kaubuntu.re">
+21 -1
View File
@@ -128,6 +128,7 @@ document.addEventListener('DOMContentLoaded', function() {
const sectionTitle = section.querySelector('.section-title').textContent.trim().toLowerCase(); const sectionTitle = section.querySelector('.section-title').textContent.trim().toLowerCase();
const videoGrid = section.querySelector('.video-grid'); const videoGrid = section.querySelector('.video-grid');
let videoType = ''; let videoType = '';
let categoryId = null;
if (sectionTitle.includes('dernières')) { if (sectionTitle.includes('dernières')) {
videoType = 'recent'; videoType = 'recent';
@@ -135,7 +136,20 @@ document.addEventListener('DOMContentLoaded', function() {
videoType = 'trending'; videoType = 'trending';
} else if (sectionTitle.includes('indépendance')) { } else if (sectionTitle.includes('indépendance')) {
videoType = 'independence'; 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 // Stocker le numéro de page actuel
button.dataset.page = '1'; button.dataset.page = '1';
@@ -147,8 +161,14 @@ document.addEventListener('DOMContentLoaded', function() {
button.textContent = 'Chargement...'; button.textContent = 'Chargement...';
button.disabled = true; 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 // Faire la requête AJAX
fetch(`ajax/load-more-videos.php?type=${videoType}&page=${page}`, { fetch(url, {
headers: { headers: {
'X-Requested-With': 'XMLHttpRequest' 'X-Requested-With': 'XMLHttpRequest'
} }