Annoncer sur l'accueil ce que le wiki vient de publier
Entre l'agenda et les services, une section « Le wiki, fraîchement mis à jour » liste les six dernières pages créées ou modifiées, datées en clair — « hier », « il y a 3 jours », « le 14 septembre » — avec une pastille « Nouveau » pour les pages récentes. Les données viennent de https://wiki.alpinux.org/derniers-articles.json, écrit à chaque build du wiki (dépôt alpinux-wiki, branche accueil-derniers-articles). Un article simplement déplacé n'y figure pas : seules les modifications de contenu comptent. Si le wiki est injoignable, la section reste masquée et le reste de la page ne bouge pas. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Ae3qPEPRrNkEY5LwcTTKc1
This commit is contained in:
parent
ef644001d2
commit
676646f612
1 changed files with 142 additions and 0 deletions
142
home/index.html
142
home/index.html
|
|
@ -486,6 +486,72 @@
|
||||||
opacity: .6;
|
opacity: .6;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* ── Wiki : dernières mises à jour ──────────────────────────── */
|
||||||
|
#wiki-section { margin-bottom: 3rem; }
|
||||||
|
|
||||||
|
.wiki-list {
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
|
||||||
|
gap: 1rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.wiki-card {
|
||||||
|
background: #fff;
|
||||||
|
border-radius: 10px;
|
||||||
|
padding: 1.1rem 1.3rem;
|
||||||
|
box-shadow: 0 2px 10px rgba(26,107,191,.08);
|
||||||
|
border-left: 4px solid #9fc5e8;
|
||||||
|
text-decoration: none;
|
||||||
|
color: inherit;
|
||||||
|
display: block;
|
||||||
|
position: relative;
|
||||||
|
transition: transform .15s, box-shadow .15s;
|
||||||
|
}
|
||||||
|
|
||||||
|
.wiki-card:hover {
|
||||||
|
transform: translateY(-3px);
|
||||||
|
box-shadow: 0 6px 20px rgba(26,107,191,.18);
|
||||||
|
}
|
||||||
|
|
||||||
|
.wiki-card:hover .wiki-title { color: #1a6bbf; }
|
||||||
|
|
||||||
|
.wiki-when {
|
||||||
|
font-size: .78rem;
|
||||||
|
font-weight: 700;
|
||||||
|
color: #7a8ba0;
|
||||||
|
letter-spacing: .06em;
|
||||||
|
text-transform: uppercase;
|
||||||
|
margin-bottom: .3rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.wiki-title {
|
||||||
|
font-size: 1rem;
|
||||||
|
font-weight: 600;
|
||||||
|
line-height: 1.35;
|
||||||
|
padding-right: 4.2rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.wiki-badge {
|
||||||
|
position: absolute;
|
||||||
|
top: .7rem; right: .7rem;
|
||||||
|
background: #f5a623;
|
||||||
|
color: #fff;
|
||||||
|
font-size: .68rem;
|
||||||
|
font-weight: 700;
|
||||||
|
text-transform: uppercase;
|
||||||
|
letter-spacing: .06em;
|
||||||
|
padding: .15rem .5rem;
|
||||||
|
border-radius: 3px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.wiki-more {
|
||||||
|
margin-top: 1rem;
|
||||||
|
font-size: .88rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.wiki-more a { color: #1a6bbf; text-decoration: none; }
|
||||||
|
.wiki-more a:hover { text-decoration: underline; }
|
||||||
|
|
||||||
/* ── Services ───────────────────────────────────────────────── */
|
/* ── Services ───────────────────────────────────────────────── */
|
||||||
.services {
|
.services {
|
||||||
display: grid;
|
display: grid;
|
||||||
|
|
@ -624,6 +690,14 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<section id="wiki-section" hidden>
|
||||||
|
<h2 class="section-title">Le wiki, fraîchement mis à jour</h2>
|
||||||
|
<div class="wiki-list" id="wiki-list"></div>
|
||||||
|
<p class="wiki-more">
|
||||||
|
<a href="https://wiki.alpinux.org">Parcourir tout le wiki →</a>
|
||||||
|
</p>
|
||||||
|
</section>
|
||||||
|
|
||||||
<h2 class="section-title">Nos services</h2>
|
<h2 class="section-title">Nos services</h2>
|
||||||
<div class="services">
|
<div class="services">
|
||||||
<a href="https://wiki.alpinux.org" class="service-card">
|
<a href="https://wiki.alpinux.org" class="service-card">
|
||||||
|
|
@ -1083,5 +1157,73 @@
|
||||||
document.addEventListener('DOMContentLoaded', load);
|
document.addEventListener('DOMContentLoaded', load);
|
||||||
})();
|
})();
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
<!-- ── Wiki : dernières pages créées ou modifiées ───────────────────── -->
|
||||||
|
<script>
|
||||||
|
(function () {
|
||||||
|
var URL_JSON = 'https://wiki.alpinux.org/derniers-articles.json';
|
||||||
|
var NB_MAX = 6; /* articles affichés sur l'accueil */
|
||||||
|
|
||||||
|
/* Le wiki date ses pages avec l'horodatage du commit qui a touché leur contenu :
|
||||||
|
un article déplacé ou renommé n'apparaît donc pas ici. */
|
||||||
|
|
||||||
|
function echappe(texte) {
|
||||||
|
var d = document.createElement('div');
|
||||||
|
d.textContent = texte;
|
||||||
|
return d.innerHTML;
|
||||||
|
}
|
||||||
|
|
||||||
|
function quand(iso) {
|
||||||
|
var d = new Date(iso);
|
||||||
|
if (isNaN(d)) return '';
|
||||||
|
var jour = new Date(d.getFullYear(), d.getMonth(), d.getDate());
|
||||||
|
var auj = new Date();
|
||||||
|
auj.setHours(0, 0, 0, 0);
|
||||||
|
var jours = Math.round((auj - jour) / 86400000);
|
||||||
|
|
||||||
|
if (jours <= 0) return "aujourd'hui";
|
||||||
|
if (jours === 1) return 'hier';
|
||||||
|
if (jours < 7) return 'il y a ' + jours + ' jours';
|
||||||
|
if (jours < 14) return 'la semaine dernière';
|
||||||
|
|
||||||
|
var opts = { day: 'numeric', month: 'long' };
|
||||||
|
if (d.getFullYear() !== auj.getFullYear()) opts.year = 'numeric';
|
||||||
|
return 'le ' + d.toLocaleDateString('fr-FR', opts);
|
||||||
|
}
|
||||||
|
|
||||||
|
function carte(article) {
|
||||||
|
var a = document.createElement('a');
|
||||||
|
a.className = 'wiki-card';
|
||||||
|
a.href = article.url;
|
||||||
|
a.innerHTML =
|
||||||
|
(article.nouveau ? '<span class="wiki-badge">Nouveau</span>' : '') +
|
||||||
|
'<div class="wiki-when">' +
|
||||||
|
(article.nouveau ? 'publié ' : 'mis à jour ') + echappe(quand(article.date)) +
|
||||||
|
'</div>' +
|
||||||
|
'<div class="wiki-title">' + echappe(article.titre) + '</div>';
|
||||||
|
return a;
|
||||||
|
}
|
||||||
|
|
||||||
|
async function charger() {
|
||||||
|
var articles;
|
||||||
|
try {
|
||||||
|
var r = await fetch(URL_JSON, { cache: 'no-cache' });
|
||||||
|
if (!r.ok) return;
|
||||||
|
articles = (await r.json()).articles;
|
||||||
|
} catch (_) { return; } /* wiki injoignable : la section reste masquée */
|
||||||
|
|
||||||
|
if (!Array.isArray(articles) || !articles.length) return;
|
||||||
|
|
||||||
|
var liste = document.getElementById('wiki-list');
|
||||||
|
articles.slice(0, NB_MAX).forEach(function (article) {
|
||||||
|
if (article && article.url && article.titre) liste.appendChild(carte(article));
|
||||||
|
});
|
||||||
|
|
||||||
|
if (liste.children.length) document.getElementById('wiki-section').hidden = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
document.addEventListener('DOMContentLoaded', charger);
|
||||||
|
})();
|
||||||
|
</script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue