Fiabilise les médias et la navigation mobile
This commit is contained in:
parent
465b384c08
commit
5909f55aba
12 changed files with 266 additions and 19 deletions
|
|
@ -36,6 +36,7 @@ trait AnimalPhotoActions
|
|||
$base = $base ?: 'photo';
|
||||
$dir = __DIR__ . '/../../public/media/animals/' . $id;
|
||||
try {
|
||||
PrivateMediaService::ensure($dir, true);
|
||||
$stored = ImageService::storeUploaded($tmp, $dir, $base, 'photo');
|
||||
$filename = $stored['filename'];
|
||||
$mime = $stored['mime'];
|
||||
|
|
|
|||
|
|
@ -191,10 +191,7 @@ final class AnimalsController
|
|||
|
||||
private static function ensureAnimalMediaDir(int $animalId): void
|
||||
{
|
||||
$dir = self::animalMediaDir($animalId);
|
||||
if (!is_dir($dir)) {
|
||||
mkdir($dir, 0775, true);
|
||||
}
|
||||
PrivateMediaService::ensure(self::animalMediaDir($animalId), true);
|
||||
}
|
||||
|
||||
private static function safeFilename(string $name): string
|
||||
|
|
|
|||
|
|
@ -28,6 +28,19 @@ final class PrivateMediaService
|
|||
throw new RuntimeException(t('service.image.directory_failed'));
|
||||
}
|
||||
@chmod($dir, $mode);
|
||||
if ($public) {
|
||||
self::hardenPublicParents($dir);
|
||||
}
|
||||
}
|
||||
|
||||
private static function hardenPublicParents(string $dir): void
|
||||
{
|
||||
$mediaRoot = dirname(__DIR__, 2) . '/public/media';
|
||||
foreach ([$mediaRoot, $mediaRoot . '/animals', $dir] as $publicDir) {
|
||||
if (is_dir($publicDir)) {
|
||||
@chmod($publicDir, 0755);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static function moveVisibility(int $animalId, string $filename, bool $toPublic): void
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
<?php
|
||||
/** Barre de navigation et recherche globale. */
|
||||
?>
|
||||
<header class="navbar navbar-expand-md d-print-none">
|
||||
<header class="navbar navbar-expand-lg d-print-none">
|
||||
<div class="container-xl">
|
||||
<div class="topbar-surface d-flex align-items-center justify-content-between w-100">
|
||||
<a class="navbar-brand d-flex flex-row align-items-center py-0"
|
||||
|
|
@ -16,7 +16,15 @@
|
|||
</span>
|
||||
</a>
|
||||
|
||||
<div class="navbar-nav flex-row order-md-last">
|
||||
<button class="navbar-toggler" type="button" data-bs-toggle="collapse"
|
||||
data-bs-target="#globinoursMainNavigation" aria-controls="globinoursMainNavigation"
|
||||
aria-expanded="false" aria-label="<?= h(t('nav.open_menu')) ?>">
|
||||
<span class="navbar-toggler-icon"></span>
|
||||
</button>
|
||||
|
||||
<nav class="collapse navbar-collapse topbar-menu" id="globinoursMainNavigation"
|
||||
aria-label="<?= h(t('nav.main')) ?>">
|
||||
<div class="navbar-nav flex-row order-md-last ms-md-auto">
|
||||
<span class="search-trigger-wrap"><button class="search-trigger" type="button" data-bs-toggle="modal"
|
||||
data-bs-target="#globalSearchModal"
|
||||
title="<?= h(t('search.open')) ?> — <?= h(t('search.shortcut')) ?>"
|
||||
|
|
@ -124,7 +132,8 @@
|
|||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
|
|
|
|||
|
|
@ -31,9 +31,10 @@
|
|||
<div class="col-lg-6">
|
||||
<section class="card h-100">
|
||||
<div class="card-body">
|
||||
<span class="badge bg-blue-lt mb-2">1.0.0-rc.16</span>
|
||||
<h3>Mises à jour autonomes</h3>
|
||||
<p class="text-muted">Installation vérifiée depuis Forgejo, sauvegarde obligatoire et retour automatique du code et des données en cas d’échec.</p>
|
||||
<span class="badge bg-blue-lt mb-2">1.0.0-rc.17</span>
|
||||
<h3>Utilisation mobile</h3>
|
||||
<p class="text-muted">Navigation repliable sur les petits écrans et publication fiable des nouvelles
|
||||
photographies, y compris depuis l’application Android.</p>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
|
|
|
|||
Loading…
Reference in a new issue