Files
xamxam/app/templates/partials/search-results.php
T

64 lines
2.0 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?php
/**
* Search results fragment
*
* Renders the results header, grid, and pagination.
* Used both for the initial page load and for HTMX pagination swaps.
*
* Required variables:
* array $results
* int $totalItems
* int $totalPages
* int $page
* array $baseParams
* array $coverMap
* ?string $validationError
*/
?>
<div id="search-results">
<?php if ($validationError): ?>
<div class="search-error">⚠ <?= htmlspecialchars($validationError) ?></div>
<?php endif; ?>
<?php
$perPage = 15;
$from = ($page - 1) * $perPage + 1;
$to = min($page * $perPage, $totalItems);
?>
<output class="search-results-header" role="status">
<?php if ($totalItems > 0): ?>
<span class="search-results-range"><?= $from ?><?= $to ?> sur <?= $totalItems ?> résultat<?= $totalItems > 1 ? 's' : '' ?></span>
<span class="search-results-range--compact"><?= $from ?><?= $to ?> / <?= $totalItems ?></span>
<?php else: ?>
<span>0 résultat</span>
<?php endif; ?>
</output>
<?php if (!empty($results)): ?>
<ul class="results-grid">
<?php foreach ($results as $item): ?>
<?php $thumb = $coverMap[$item['id']] ?? null; ?>
<li><a href="/tfe?id=<?= (int)$item['id'] ?>" class="result-card">
<?php if ($thumb): ?>
<figure class="result-card__cover">
<img src="/media?path=<?= urlencode($thumb) ?>"
alt="Couverture — <?= htmlspecialchars($item['title']) ?>"
loading="lazy">
</figure>
<?php else: ?>
<div class="result-card__gradient"></div>
<?php endif; ?>
<span class="result-card__authors"><?= htmlspecialchars($item['authors'] ?? '') ?></span>
<span class="result-card__title"><?= htmlspecialchars($item['title']) ?></span>
<small class="result-card__meta"><?= htmlspecialchars($item['year']) ?></small>
</a></li>
<?php endforeach; ?>
</ul>
<?php include APP_ROOT . '/templates/partials/pagination.php'; ?>
<?php else: ?>
<p class="search-empty">Aucun résultat pour cette recherche.</p>
<?php endif; ?>
</div>