123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146 |
- {% extends "base_2020.html" %}
- {% block lang %}fr{% endblock %}
- {% block title %}Accueil{% endblock %}
- {% block content %}
-
- <template id="theme-selector">
- <form>
- <fieldset>
- <legend>Thème</legend>
- <label>
- <input type="radio" value="auto" name="chosen-color-scheme" checked> Auto
- </label>
- <label>
- <input type="radio" value="dark" name="chosen-color-scheme"> Foncé
- </label>
- <label>
- <input type="radio" value="light" name="chosen-color-scheme"> Clair
- </label>
- </fieldset>
- </form>
- </template>
-
- <article>
- <h1>Bienvenue</h1>
-
- <p>
- Voici l’espace personnel de David Larlet sur le Web.
- Il se veut modeste, accueillant et pérenne.
- Il fixe mes pensées et parfois engage des échanges.
- J’essaye de tenir et lier des propos bienveillants.
- Je vous souhaite une jolie promenade.
- </p>
-
- <p lang="en">
- For an English profile, check out
- <a href="http://larlet.com" data-instant>this page 🇨🇦</a>.
- </p>
-
- <h2>Publication récentes</h2>
-
- <nav>
- <ul>
- {% for page in page_list %}
- <li><a href="{{ page.url }}">{{ page.title }}</a> ({{ page.date }})</li>
- {% endfor %}
- </ul>
- </nav>
-
- <h2>Publications anciennes</h2>
-
- <p>
- Vous pouvez consulter les différents
- <a href="/david/blog/">billets de blog</a> qui ont été rédigés de 2004 à 2019
- ou les <a href="/david/stream/">entrées de journaux</a> relativement
- régulières entre 2009 et 2019.
- </p>
-
- <p>
- <em>
- Notez qu’avec un tel historique, certaines informations sont obsolètes et/ou
- plus cautionnées.
- </em>
- </p>
-
- <h2>Me contacter</h2>
-
- <p>
- Je réponds à <em>presque</em> tous les courriels reçus, exception faite de ceux que j’assimile à de la publicité ou du <code>spam</code>. Vous pouvez <a href="mailto:david%40larlet.fr" title="Envoyer un courriel">m’écrire</a> sans trop de civilités et me tutoyer, je répondrai probablement de même. Si vous souhaitez correspondre de manière chiffrée, voici <a href="/static/david/david-larlet-pgp-public-key-1359EA98.asc" title="Clé publique de chiffrement">ma clé publique</a>.
- </p>
-
- </article>
- {% endblock content %}
-
- {% block extra_bottom %}
- <script type="text/javascript">
- /* This is a work in progress with Anthony https://ricaud.me */
-
- // TODISCUSS:
- // 1. give a way for the user to close that chooser?
- // 2. store preferences? (in a cookie or localstorage or sessionStorage)
- // 3. create the template from scratch in JS?
- // 4. how to make it generic? (no need for forced-dark/light existing rules)
-
- // Results from a Poll: https://mastodon.social/@dav/104093540923157521
- // Avoir un moyen de changer de thème d'un site à la main :
- // 49% => Utile
- // 23% => Pas utile
- // 9% => So 2000
- // 19% => Je veux le même
- // After 24 hours and 43 votes
- // A bit hard to interpret, I guess people wanting it found it useful too!
-
- function loadThemeForm(templateName) {
- const themeSelectorTemplate = document.querySelector(templateName)
- const form = themeSelectorTemplate.content.firstElementChild
- themeSelectorTemplate.replaceWith(form)
-
- form.addEventListener('change', (e) => {
- const chosenColorScheme = e.target.value
- document.body.classList.toggle(
- 'forced-dark',
- chosenColorScheme === 'dark'
- )
- document.body.classList.toggle(
- 'forced-light',
- chosenColorScheme === 'light'
- )
- })
- }
-
- const prefersColorSchemeDark = '(prefers-color-scheme: dark)'
- window.addEventListener('load', () => {
- let hasDarkRules = false
- for (const styleSheet of Array.from(document.styleSheets)) {
- let mediaRules = []
- for (const cssRule of styleSheet.cssRules) {
- if (cssRule.type !== CSSRule.MEDIA_RULE) {
- continue
- }
- // WARNING: Safari does not have/supports `conditionText`.
- if (cssRule.conditionText) {
- if (cssRule.conditionText !== prefersColorSchemeDark) {
- continue
- }
- } else {
- if (cssRule.cssText.startsWith(prefersColorSchemeDark)) {
- continue
- }
- }
- mediaRules = mediaRules.concat(Array.from(cssRule.cssRules))
- }
-
- // WARNING: do not try to insert a Rule to a styleSheet you are
- // currently iterating on, otherwise the browser will be stuck
- // in a infinite loop…
- for (const mediaRule of mediaRules) {
- styleSheet.insertRule(mediaRule.cssText)
- hasDarkRules = true
- }
- }
- if (hasDarkRules) {
- loadThemeForm('#theme-selector')
- }
- })
- </script>
- {% endblock extra_bottom %}
|