diff --git a/README.md b/README.md index 7b84d95..855da1a 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,8 @@ Elle affiche deux choses qu'elle ne contient pas : l'**agenda**, lu dans le cale public Nextcloud, et les **dernières pages du wiki**, lues dans [`derniers-articles.json`](https://wiki.alpinux.org/derniers-articles.json) que le wiki publie à chaque build. Si l'une ou l'autre source est injoignable, la section -correspondante se masque et le reste de la page tient debout. +correspondante se masque et le reste de la page tient debout. Le **journal des +nouveautés**, lui, vit dans le dépôt : `site/nouveautes.json`. --- @@ -16,6 +17,7 @@ correspondante se masque et le reste de la page tient debout. | Ce que vous voulez faire | Ce que vous faites | |---|---| | Modifier la page | Éditer `site/index.html`, pousser sur `main` — la mise en ligne suit | +| Annoncer une nouveauté | Ajouter une entrée en tête de `site/nouveautes.json` (voir plus bas) | | Voir le rendu avant de pousser | `python3 -m http.server -d site` puis http://localhost:8000 | | Comprendre pourquoi ça n'est pas en ligne | `tail -20 /var/log/www-deploy.log` sur le serveur | | Republier sans nouveau commit | `sudo -u abonnelc /opt/www-alpinux/deploy-www.sh` | @@ -32,6 +34,7 @@ serveur, pas par `http.server`. Les articles du wiki, eux, s'affichent normaleme alpinux-www/ ├── site/ ce qui part en ligne, tel quel │ ├── index.html +│ ├── nouveautes.json le journal des nouveautés, lu par la page │ ├── robots.txt │ └── sitemap.xml └── deploiement/ la chaîne, versionnée avec le site @@ -44,6 +47,27 @@ alpinux-www/ --- +## Annoncer une nouveauté + +La section « Nouveautés » de l'accueil est dessinée à partir de `site/nouveautes.json` — +un tableau d'entrées, `url` facultative : + +```json +{ + "date": "2026-09-23", + "titre": "Listes de diffusion", + "texte": "Une phrase ou deux, à hauteur de visiteur.", + "url": "https://messagerie.alpinux.org" +} +``` + +L'ordre du fichier n'a pas d'importance : la page trie sur `date` et n'affiche que les +six entrées les plus récentes. Les plus anciennes restent dans le fichier, comme +mémoire. Une entrée sans `titre` ou sans `date` au format `AAAA-MM-JJ` est ignorée ; +si le fichier disparaît ou devient illisible, la section se masque comme les deux autres. + +--- + ## Ce qui se passe après un push ``` diff --git a/site/index.html b/site/index.html index e243f9d..5ead851 100644 --- a/site/index.html +++ b/site/index.html @@ -552,6 +552,65 @@ .wiki-more a { color: #1a6bbf; text-decoration: none; } .wiki-more a:hover { text-decoration: underline; } + /* ── Nouveautés ─────────────────────────────────────────────── */ + #news-section { margin-top: 3rem; } + + .news { + list-style: none; + border-left: 2px solid #dce8f5; + margin-left: .5rem; + padding-left: 1.5rem; + } + + .news li { + position: relative; + padding-bottom: 1.6rem; + } + + .news li:last-child { padding-bottom: 0; } + + .news li::before { + content: ''; + position: absolute; + left: calc(-1.5rem - 6px); + top: .35rem; + width: 10px; + height: 10px; + border-radius: 50%; + background: #9fc5e8; + box-shadow: 0 0 0 3px #f3f6fb; + } + + .news li:first-child::before { background: #1a6bbf; } + + .news-when { + font-size: .78rem; + font-weight: 700; + color: #7a8ba0; + letter-spacing: .06em; + text-transform: uppercase; + display: block; + margin-bottom: .2rem; + } + + .news-title { + font-size: 1rem; + font-weight: 600; + line-height: 1.35; + color: #1a1a2e; + text-decoration: none; + } + + a.news-title:hover { color: #1a6bbf; text-decoration: underline; } + + .news-text { + font-size: .92rem; + line-height: 1.6; + color: #4a5a6a; + margin-top: .25rem; + max-width: 62ch; + } + /* ── Services ───────────────────────────────────────────────── */ .services { display: grid; @@ -733,6 +792,11 @@ + +