start flyer, favicon and meta title & descr

main
Dorian 3 years ago
parent 68c14af46c
commit 2fe1794ab1

@ -15,14 +15,13 @@
calendar: calendar:
#Full moon walk on the 18.03.22 #New Moon walk on the 30.04.22
18-03-22: 30-04-22:
start_time: "18:00" event_type:
en: "Walk"
fr: "Ballade"
nl: "Wandelen"
es: "Paseos"
start_time: "20:00"
start_location: "Drève du comte" start_location: "Drève du comte"
start_location_link: "https://www.openstreetmap.org/way/14502214#map=17/50.79518/4.40096" start_location_link: "https://www.openstreetmap.org/way/14502214#map=17/50.79518/4.40096"
# New Moon walk on the 01.04.22
01-04-22:
start_time: "19:30"
start_location: "Drève du comte"
start_location_link: "https://www.openstreetmap.org/way/14502214#map=17/50.79518/4.40096"

@ -0,0 +1,23 @@
Title: flyer
template: flyer
status: hidden
<!--[en]-->
Walking when all the colours have disappeared from the forest is a special experience.
You tune in to other senses. You discover silence, but you also notice movements and sounds that are absent during the day. <br/>
Moreover, when you walk during the most intense and important moments of the lunar cycle, you can transform your intentions.
That is what these walks invite you to do.
<!--[fr]-->
Se promener lorsque toutes les couleurs ont disparu de la forêt est une expérience particulière.
Vous êtes à l'écoute dautres sens. Vous découvrez le silence, mais vous remarquez aussi des mouvements et des sons qui sont absents pendant la journée. <br/>
De plus, lorsque vous marchez pendant les moments les plus intenses et les plus importants du cycle lunaire, vous pouvez transformer vos intentions. C'est à cela que vous invitent ces marches.
<!--[nl]-->
Wandelen wanneer alle kleurtjes uit het bos verdwenen zijn, is een bijzondere ervaring.
Je stelt in op andere zintuigen. Je ontdekt de stilte, maar je merkt ook bewegingen en geluiden op die overdag afwezig zijn. <br/>
Wanneer je bovendien wandelt tijdens de meest intense en belangrijke momenten van de maancyclus, kan je je intenties transformeren. Dat is waartoe deze wandelingen je uitnodigen.

@ -1,11 +1,12 @@
Title: Footer Title: Footer
save_as: save_as:
partial: true partial: true
save_as:
The typography of this website varies slightly under the influence of the moon. The typography of this website varies slightly under the influence of the moon. <br/>
The website color theme switch according if it's day time or night time in Brussels. The website color theme changes following day time or night time in Brussels.
Font [Unoverso](https://github.com/oxomoto/Unoverso-Libre) by Oxomoto, and Inconsolata Variable by Raph Levien. Font [Unoverso](https://github.com/oxomoto/Unoverso-Libre) by Oxomoto, and Inconsolata Variable by Raph Levien.
All texts and images are published under de [CC4R license](https://constantvzw.org/wefts/cc4r.en.html), Anaïs Berck, 2022. All texts and images are published under de [CC4R license](https://constantvzw.org/wefts/cc4r.en.html), Anaïs Berck, 2022.
Website design and development by Doriane Timmermans (OSP) Website design and development by Doriane Timmermans ([OSP](http://osp.kitchen/))

@ -1,9 +1,10 @@
Title: Footer Title: Footer
lang: es lang: es
save_as:
La tipografía de este sitio web varía ligeramente bajo la influencia de la luna. La tipografía de este sitio web varía ligeramente bajo la influencia de la luna. <br/>
El tema del sitio web cambia de color según sea de día o de noche en Bruselas. El tema del sitio web cambia de color según sea de día o de noche en Bruselas.
Fuente [Unoverso](https://github.com/oxomoto/Unoverso-Libre) de Oxomoto, e Inconsolata Variable de Raph Levien. Fuente [Unoverso](https://github.com/oxomoto/Unoverso-Libre) de Oxomoto, e Inconsolata Variable de Raph Levien.
Todos los textos e imágenes están publicados bajo licencia [CC4R](https://constantvzw.org/wefts/cc4r.en.html), Anaïs Berck, 2022. Todos los textos e imágenes están publicados bajo licencia [CC4R](https://constantvzw.org/wefts/cc4r.en.html), Anaïs Berck, 2022.
Diseño y desarrollo del sitio web por Doriane Timmermans (OSP). Diseño y desarrollo del sitio web por Doriane Timmermans ([OSP](http://osp.kitchen/)).

@ -1,9 +1,10 @@
Title: Footer Title: Footer
lang: fr lang: fr
save_as:
La typographie de ce site web varie légèrement sous l'influence de la lune. La typographie de ce site web varie légèrement sous l'influence de la lune. <br/>
Le thème de couleurs de ce site web change selon qu'il fait jour ou nuit à Bruxelles. Le thème de couleurs de ce site web change selon s'il fait jour ou nuit à Bruxelles.
Font [Unoverso](https://github.com/oxomoto/Unoverso-Libre) par Oxomoto, et Inconsolata Variable par Raph Levien. Font [Unoverso](https://github.com/oxomoto/Unoverso-Libre) par Oxomoto, et Inconsolata Variable par Raph Levien.
Tous les textes et images sont publiés sous [license CC4R](https://constantvzw.org/wefts/cc4r.en.html), Anaïs Berck, 2022. Tous les textes et images sont publiés sous [license CC4R](https://constantvzw.org/wefts/cc4r.en.html), Anaïs Berck, 2022.
Conception et développement du site web par Doriane Timmermans (OSP). Conception et développement du site web par Doriane Timmermans ([OSP](http://osp.kitchen/)).

@ -1,9 +1,10 @@
Title: Footer Title: Footer
lang: nl lang: nl
save_as:
De typografie van deze website varieert lichtjes onder invloed van de maan. De typografie van deze website varieert lichtjes onder invloed van de maan. <br/>
Het kleurenthema van de website verandert naargelang het in Brussel dag- of nachttijd is. Het kleurenthema van de website verandert naargelang het in Brussel dag- of nachttijd is.
Font [Unoverso](https://github.com/oxomoto/Unoverso-Libre) van Oxomoto, en Inconsolata Variable van Raph Levien. Font [Unoverso](https://github.com/oxomoto/Unoverso-Libre) van Oxomoto, en Inconsolata Variable van Raph Levien.
Alle teksten en beelden zijn gepubliceerd onder de [CC4R licentie](https://constantvzw.org/wefts/cc4r.en.html), Anaïs Berck, 2022. Alle teksten en beelden zijn gepubliceerd onder de [CC4R licentie](https://constantvzw.org/wefts/cc4r.en.html), Anaïs Berck, 2022.
Website ontwerp en ontwikkeling door Doriane Timmermans (OSP). Website ontwerp en ontwikkeling door Doriane Timmermans ([OSP](http://osp.kitchen/)).

@ -3,6 +3,8 @@ save_as: index.html
slug: index slug: index
template: index template: index
<!--[intro]-->
Walking when all the colours have disappeared from the forest is a special experience. Walking when all the colours have disappeared from the forest is a special experience.
You tune in to other senses. You tune in to other senses.
You discover silence, but you also notice movements and sounds that are absent during the day. Moreover, when you walk during the most intense and important moments of the lunar cycle, you can transform your intentions. You discover silence, but you also notice movements and sounds that are absent during the day. Moreover, when you walk during the most intense and important moments of the lunar cycle, you can transform your intentions.
@ -12,6 +14,6 @@ We will walk in silence, interspersed with some experiments to which An invites
Each walk takes a maximum of 2 hours. Each walk takes a maximum of 2 hours.
We conclude with a cup of tea. We conclude with a cup of tea.
<!--bio--> <!--[bio]-->
The walks are an initiative of [Anaïs Berck](https://www.anaisberck.be), represented here by the thousands of trees of the Sonian forest and by artist, storyteller and nature guide An Mertens. The walks are an initiative of [Anaïs Berck](https://www.anaisberck.be), represented here by the thousands of trees of the Sonian forest and by artist, storyteller and nature guide An Mertens.

@ -3,12 +3,14 @@ slug: index
lang: es lang: es
template: index template: index
<!--[intro]-->
Caminar cuando todos los colores han desaparecido del bosque es una experiencia especial. Caminar cuando todos los colores han desaparecido del bosque es una experiencia especial.
Se sintoniza con otros sentidos. Descubres el silencio, pero también percibes movimientos y sonidos que son ausentes durante el día. Se sintoniza con otros sentidos. Descubres el silencio, pero también percibes movimientos y sonidos que son ausentes durante el día.
Además, cuando caminas en los momentos más intensos e importantes del ciclo lunar, puedes transformar tus intenciones. A eso te invitan estos paseos. Además, cuando caminas en los momentos más intensos e importantes del ciclo lunar, puedes transformar tus intenciones. A eso te invitan estos paseos.
Caminaremos en silencio, intercalando algunos experimentos a los que An te invita. Cada paseo dura un máximo de 2 horas. Concluimos con un té. Caminaremos en silencio, intercalando algunos experimentos a los que An te invita. Cada paseo dura un máximo de 2 horas. Concluimos con un té.
<!--bio--> <!--[bio]-->
Los paseos son una iniciativa de [Anaïs Berck](https://www.anaisberck.be), representada aquí por los miles de árboles del Sonian Forest y por la artista, contadora y guía de la naturaleza An Mertens. Los paseos son una iniciativa de [Anaïs Berck](https://www.anaisberck.be), representada aquí por los miles de árboles del Sonian Forest y por la artista, contadora y guía de la naturaleza An Mertens.

@ -3,12 +3,14 @@ slug: index
lang: fr lang: fr
template: index template: index
<!--[intro]-->
Se promener lorsque toutes les couleurs ont disparu de la forêt est une expérience particulière. Se promener lorsque toutes les couleurs ont disparu de la forêt est une expérience particulière.
Vous êtes à l'écoute dautres sens. Vous découvrez le silence, mais vous remarquez aussi des mouvements et des sons qui sont absents pendant la journée. Vous êtes à l'écoute dautres sens. Vous découvrez le silence, mais vous remarquez aussi des mouvements et des sons qui sont absents pendant la journée.
De plus, lorsque vous marchez pendant les moments les plus intenses et les plus importants du cycle lunaire, vous pouvez transformer vos intentions. C'est à cela que vous invitent ces marches. De plus, lorsque vous marchez pendant les moments les plus intenses et les plus importants du cycle lunaire, vous pouvez transformer vos intentions. C'est à cela que vous invitent ces marches.
Nous marcherons en silence, entrecoupés de quelques expériences auxquelles An vous invite. Chaque promenade dure au maximum 2 heures. Nous terminons en partageant un thé. Nous marcherons en silence, entrecoupés de quelques expériences auxquelles An vous invite. Chaque promenade dure au maximum 2 heures. Nous terminons en partageant un thé.
<!--bio--> <!--[bio]-->
Les balades sont une initiative d'[Anaïs Berck](https://www.anaisberck.be), représentée ici par les milliers d'arbres de la forêt de Soignes et par l'artiste, conteuse et guide nature An Mertens. Les balades sont une initiative d'[Anaïs Berck](https://www.anaisberck.be), représentée ici par les milliers d'arbres de la forêt de Soignes et par l'artiste, conteuse et guide nature An Mertens.

@ -48,22 +48,10 @@
"es": "La caminata comienza a las" "es": "La caminata comienza a las"
}, },
"sunsetat":{ "sunsetat":{
"en": "Sunset at", "en": "Sunset",
"fr": "Coucher de soleil à", "fr": "Coucher de soleil",
"nl": "Zonsondergang om", "nl": "Zonsondergang",
"es": "Puesta de sol a las" "es": "Puesta de sol"
},
"moonat":{
"en": "Moon event at",
"fr": "Événement lunaire à",
"nl": "Maangebeuren om",
"es": "Evento lunar a las"
},
"mailsubject":{
"en": "$ walk on the",
"fr": "Balade de $ le",
"nl": "$ wandeling op",
"es": "Paseo de $ el"
}, },
"more":{ "more":{
"en": "More to come", "en": "More to come",

@ -3,12 +3,14 @@ slug: index
lang: nl lang: nl
template: index template: index
<!--[intro]-->
Wandelen wanneer alle kleurtjes uit het bos verdwenen zijn, is een bijzondere ervaring. Wandelen wanneer alle kleurtjes uit het bos verdwenen zijn, is een bijzondere ervaring.
Je stelt in op andere zintuigen. Je ontdekt de stilte, maar je merkt ook bewegingen en geluiden op die overdag afwezig zijn. Je stelt in op andere zintuigen. Je ontdekt de stilte, maar je merkt ook bewegingen en geluiden op die overdag afwezig zijn.
Wanneer je bovendien wandelt tijdens de meest intense en belangrijke momenten van de maancyclus, kan je je intenties transformeren. Dat is waartoe deze wandelingen je uitnodigen. Wanneer je bovendien wandelt tijdens de meest intense en belangrijke momenten van de maancyclus, kan je je intenties transformeren. Dat is waartoe deze wandelingen je uitnodigen.
We wandelen in stilte, afgewisseld met enkele experimenten waartoe An je uitnodigt. Elke wandeling duurt maximum 2 uur. We sluiten af met een kopje thee. We wandelen in stilte, afgewisseld met enkele experimenten waartoe An je uitnodigt. Elke wandeling duurt maximum 2 uur. We sluiten af met een kopje thee.
<!--bio--> <!--[bio]-->
De wandelingen zijn een initiatief van [Anaïs Berck](https://www.anaisberck.be), hier vertegenwoordigd door de duizenden bomen van het Zoniënwoud en door kunstenaar, verteller en natuurgids An Mertens. De wandelingen zijn een initiatief van [Anaïs Berck](https://www.anaisberck.be), hier vertegenwoordigd door de duizenden bomen van het Zoniënwoud en door kunstenaar, verteller en natuurgids An Mertens.

@ -9,3 +9,4 @@ Como guía, An ofrece varios métodos. Se basa en sus experiencias con el reiki,
## Biodiversidad ## Biodiversidad
Una ardilla susurrando en la copa de un haya, un arrendajo volando sobre tu cabeza, las ramas cargadas de frutos del saúco llamando tu atención... El bosque es un mundo de abundancia y cada elemento puede contribuir metafóricamente a la solución de tu problema, a corto o largo plazo. Una ardilla susurrando en la copa de un haya, un arrendajo volando sobre tu cabeza, las ramas cargadas de frutos del saúco llamando tu atención... El bosque es un mundo de abundancia y cada elemento puede contribuir metafóricamente a la solución de tu problema, a corto o largo plazo.

@ -1,5 +1,7 @@
Title: Moonwalks Title: Moonwalks
<!--[main]-->
## New rituals ## New rituals
Botanist and Native American Indian Robin Wall Kimmerer states in her book “Braiding Sweetgrass” that the core of the climate crisis is related to losing the connection with the land. By reconnecting, a form of recovery of the land and its people can take place, as well as a sustainable caring for. The connection can be made in various ways, for example by taking responsibility for a piece of land, be it as a vegetable garden, ornamental garden or forest. Her hypothesis is that a person's physical, emotional and spiritual health improves greatly when the relationship with the land is reinstated in his/her life. She urges the creation of new rituals that promote such relationships. The moon walks try to be such a new ritual. Botanist and Native American Indian Robin Wall Kimmerer states in her book “Braiding Sweetgrass” that the core of the climate crisis is related to losing the connection with the land. By reconnecting, a form of recovery of the land and its people can take place, as well as a sustainable caring for. The connection can be made in various ways, for example by taking responsibility for a piece of land, be it as a vegetable garden, ornamental garden or forest. Her hypothesis is that a person's physical, emotional and spiritual health improves greatly when the relationship with the land is reinstated in his/her life. She urges the creation of new rituals that promote such relationships. The moon walks try to be such a new ritual.
@ -12,8 +14,8 @@ These are just two of the authors who specifically point to the end of anthropoc
## Full and New Moonwalks ## Full and New Moonwalks
These and other authors inspired me to organise - as a new ritual - new and full moon walks. I have been doing this since the spring of 2021. They are walks that combine elements from forest bathing, meditation and guided nature walks. These and other authors inspired me to organise - as a new ritual - new and full moon walks. I have been doing this since the spring of 2021. They are walks that combine elements from forest bathing, meditation and guided nature walks.
<!--quotes-->
<!--[quotes]-->
> I enjoyed the mixture of different ingredients: biology, fiction, politics... I also liked the silence, and the intensity of the experience. The space, for example, seemed very vast to me (I know the place well, I know we didn't walk miles and yet it seemed long, dense: a journey). I also found it very nice to see/feel the night appearing, and to realise that I was not afraid. Because I was with you? Because the trees had given me a friendly welcome? > I enjoyed the mixture of different ingredients: biology, fiction, politics... I also liked the silence, and the intensity of the experience. The space, for example, seemed very vast to me (I know the place well, I know we didn't walk miles and yet it seemed long, dense: a journey). I also found it very nice to see/feel the night appearing, and to realise that I was not afraid. Because I was with you? Because the trees had given me a friendly welcome?
> >

@ -2,6 +2,8 @@ Title: Balades lunaires
slug: moonwalks slug: moonwalks
lang: fr lang: fr
<!--[main]-->
## Nouveaux rituels ## Nouveaux rituels
La botaniste et amérindienne Robin Wall Kimmerer affirme dans son livre «Les herbes sacrées» que le noyau de la crise climatique est lié à la perte du lien avec la terre. En se reconnectant, une forme de récupération de la terre et de ses habitants peut avoir lieu, ainsi qu'une prise de soin durable. Le lien peut être établi de différentes manières, par exemple en prenant la responsabilité d'un terrain, qu'il s'agisse d'un potager, d'un jardin d'ornement ou d'une forêt. Son hypothèse est que la santé physique, émotionnelle et spirituelle d'une personne s'améliore considérablement lorsque la relation avec la terre est rétablie dans sa vie. Elle préconise la création de nouveaux rituels qui favorisent ces relations. Les balades lunaires essaient dêtre un nouveau rituel. La botaniste et amérindienne Robin Wall Kimmerer affirme dans son livre «Les herbes sacrées» que le noyau de la crise climatique est lié à la perte du lien avec la terre. En se reconnectant, une forme de récupération de la terre et de ses habitants peut avoir lieu, ainsi qu'une prise de soin durable. Le lien peut être établi de différentes manières, par exemple en prenant la responsabilité d'un terrain, qu'il s'agisse d'un potager, d'un jardin d'ornement ou d'une forêt. Son hypothèse est que la santé physique, émotionnelle et spirituelle d'une personne s'améliore considérablement lorsque la relation avec la terre est rétablie dans sa vie. Elle préconise la création de nouveaux rituels qui favorisent ces relations. Les balades lunaires essaient dêtre un nouveau rituel.
@ -14,8 +16,8 @@ Ce ne sont là que deux des auteurs qui soulignent spécifiquement la fin de l'a
## Balades de pleine et nouvelle lune ## Balades de pleine et nouvelle lune
Ces auteurs et d'autres m'ont inspiré l'idée d'organiser - comme un nouveau rituel - des promenades à la nouvelle et à la pleine lune. Je fais ceci depuis le printemps 2021. Ce sont des promenades à mi-chemin entre le bain de forêt, la méditation et les promenades guidées dans la nature. Ces auteurs et d'autres m'ont inspiré l'idée d'organiser - comme un nouveau rituel - des promenades à la nouvelle et à la pleine lune. Je fais ceci depuis le printemps 2021. Ce sont des promenades à mi-chemin entre le bain de forêt, la méditation et les promenades guidées dans la nature.
<!--quotes-->
<!--[quotes]-->
> J'ai aimé le mélange entre les différents éléments de la narration: entre biologie, fiction, politique... J'ai aussi beaucoup aimé le silence, et puis la densité de l'expérience. L'espace, par exemple, m'a semblé très dilaté (je connais bien l'endroit, je sais qu'on n'a pas marché pendant des kilomètres et pourtant ça m'a paru long, dense: un voyage). J'ai aussi beaucoup aimé voir/ sentir la nuit tomber, et me rendre compte que je n'avais pas peur. Parce que j'étais avec vous? Parce que les arbres m'avaient souhaité bienvenue avec bienveillance? > J'ai aimé le mélange entre les différents éléments de la narration: entre biologie, fiction, politique... J'ai aussi beaucoup aimé le silence, et puis la densité de l'expérience. L'espace, par exemple, m'a semblé très dilaté (je connais bien l'endroit, je sais qu'on n'a pas marché pendant des kilomètres et pourtant ça m'a paru long, dense: un voyage). J'ai aussi beaucoup aimé voir/ sentir la nuit tomber, et me rendre compte que je n'avais pas peur. Parce que j'étais avec vous? Parce que les arbres m'avaient souhaité bienvenue avec bienveillance?
> >

@ -2,6 +2,9 @@ Title: Maanwandelingen
slug: moonwalks slug: moonwalks
lang: nl lang: nl
<!--[main]-->
## Nieuwe rituelen ## Nieuwe rituelen
Botaniste en Native American Indian Robin Wall Kimmerer stelt in haar boek “Braiding Sweetgrass”, dat de kern van de klimaatcrisis te maken heeft met het verliezen van de verbinding met het land. Door de verbinding weer aan te gaan, kan er ook een vorm van herstel van het land en de mensen plaatsvinden en een duurzaam zorg-dragen-voor. De verbinding kan op verschillende manieren gemaakt worden, bijvoorbeeld door de verantwoordelijkheid te nemen voor een stuk grond, zij het als moestuin, siertuin of bos. Haar hypothese is dat zowel de fysieke, de emotionele als de spirituele gezondheid van een persoon sterk verbetert als de relatie met het land weer een plaats krijgt in zijn/haar leven. Ze dringt erop aan om nieuwe rituelen in het leven te roepen, die die relaties bevorderen. De maanwandelingen proberen om zon nieuw ritueel te zijn. Botaniste en Native American Indian Robin Wall Kimmerer stelt in haar boek “Braiding Sweetgrass”, dat de kern van de klimaatcrisis te maken heeft met het verliezen van de verbinding met het land. Door de verbinding weer aan te gaan, kan er ook een vorm van herstel van het land en de mensen plaatsvinden en een duurzaam zorg-dragen-voor. De verbinding kan op verschillende manieren gemaakt worden, bijvoorbeeld door de verantwoordelijkheid te nemen voor een stuk grond, zij het als moestuin, siertuin of bos. Haar hypothese is dat zowel de fysieke, de emotionele als de spirituele gezondheid van een persoon sterk verbetert als de relatie met het land weer een plaats krijgt in zijn/haar leven. Ze dringt erop aan om nieuwe rituelen in het leven te roepen, die die relaties bevorderen. De maanwandelingen proberen om zon nieuw ritueel te zijn.
@ -14,8 +17,8 @@ Dit zijn maar twee van de auteurs die specifiek wijzen op het einde van het antr
## Volle en Nieuwe Maanwandelingen ## Volle en Nieuwe Maanwandelingen
Deze en andere auteurs inspireerden me om als een nieuw ritueel - nieuwe en volle maanwandelingen te organiseren. Ik doe dit sinds de lente van 2021. Het zijn wandelingen die het midden houden tussen bosbaden, meditatie en geleide natuurwandelingen. Deze en andere auteurs inspireerden me om als een nieuw ritueel - nieuwe en volle maanwandelingen te organiseren. Ik doe dit sinds de lente van 2021. Het zijn wandelingen die het midden houden tussen bosbaden, meditatie en geleide natuurwandelingen.
<!--quotes-->
<!--[quotes]-->
> Ik heb genoten van de mix van verschillende ingrediënten: biologie, fictie, politiek... Ik hield ook van de stilte, en de intensiteit van de ervaring. De ruimte, bijvoorbeeld, leek mij heel uitgestrekt (ik ken de plaats goed, ik weet dat wij geen kilometers hebben gelopen en toch leek het lang, intens: een reis). Ik vond het ook heel fijn om de nacht te zien/voelen verschijnen, en te beseffen dat ik niet bang was. Omdat ik bij jou was? Omdat de bomen me vriendelijk welkom hadden geheten? > Ik heb genoten van de mix van verschillende ingrediënten: biologie, fictie, politiek... Ik hield ook van de stilte, en de intensiteit van de ervaring. De ruimte, bijvoorbeeld, leek mij heel uitgestrekt (ik ken de plaats goed, ik weet dat wij geen kilometers hebben gelopen en toch leek het lang, intens: een reis). Ik vond het ook heel fijn om de nacht te zien/voelen verschijnen, en te beseffen dat ik niet bang was. Omdat ik bij jou was? Omdat de bomen me vriendelijk welkom hadden geheten?
> >

@ -2,7 +2,7 @@
# -*- coding: utf-8 -*- # # -*- coding: utf-8 -*- #
AUTHOR = 'Anaïs Berck' AUTHOR = 'Anaïs Berck'
SITENAME = 'Moonwalks.be' SITENAME = 'moonwalks.be'
SITEURL = '' SITEURL = ''
PATH = 'content' PATH = 'content'
@ -60,6 +60,7 @@ ARTICLE_LANG_SAVE_AS = '{category}/{slug}_{lang}.html'
ARTICLE_LANG_URL = '/{category}/{slug}_{lang}.html' ARTICLE_LANG_URL = '/{category}/{slug}_{lang}.html'
# pages have no category # pages have no category
PAGE_PATHS = ['pages/', 'flyer/']
PAGE_SAVE_AS = '{slug}.html' PAGE_SAVE_AS = '{slug}.html'
PAGE_URL = '/{slug}.html' PAGE_URL = '/{slug}.html'
PAGE_LANG_SAVE_AS = '{slug}_{lang}.html' PAGE_LANG_SAVE_AS = '{slug}_{lang}.html'
@ -77,7 +78,7 @@ TAG_SAVE_AS = ''
# DIRECT_TEMPLATES = ['index', 'authors', 'categories', 'tags', 'archives'] # DIRECT_TEMPLATES = ['index', 'authors', 'categories', 'tags', 'archives']
# because gallery and even index is a page # because gallery and even index is a page
# (this allow to have translation for index_fr, index_nl, etc) # (this allow to have translation for index_fr, index_nl, etc)
DIRECT_TEMPLATES = ['alltypo'] DIRECT_TEMPLATES = []
# to copy every image to the output direction # to copy every image to the output direction
STATIC_PATHS = ['gallery'] STATIC_PATHS = ['gallery']
@ -90,7 +91,7 @@ MENUITEMS = [
# TRANSLATION # TRANSLATION
# ============================================================================== # ==============================================================================
# only article with this lang will be listed # only article in this lang will be listed by default
DEFAULT_LANG = 'en' DEFAULT_LANG = 'en'
# two article with same slug are considered as translation: # two article with same slug are considered as translation:
# ARTICLE_TRANSLATION_ID = 'slug' # ARTICLE_TRANSLATION_ID = 'slug'
@ -114,7 +115,7 @@ DEFAULT_DATE = 'fs'
PLUGIN_PATHS = ['plugins'] PLUGIN_PATHS = ['plugins']
PLUGINS = ['quotes-section', 'data_files', 'gallery','image_process','multilang-json-page'] PLUGINS = ['html-comment-sections', 'data_files', 'gallery','image_process','multilang-json-page']
# --- quotes-sections (self made) # --- quotes-sections (self made)
# separate an article when meeting <!--quotes--> # separate an article when meeting <!--quotes-->

@ -0,0 +1,36 @@
from readline import set_completion_display_matches_hook
from pelican import signals
import re
def split_sections(generator, content):
"""
Split the markdown content of an article or page into sections
everytime it encounter a comment of the form <!--[section-name]-->
and put those in a new `sections` attribute as a dictonnary.
The `content` attribute is left intact.
"""
html_content = content.content
content.sections = {}
pattern = re.compile(r"<!--\[((?:(?!\]-->).)*)\]-->((?:(?!<!--\[)[\s\S])+)")
# find all matches to groups
matches = pattern.finditer(html_content)
for match in matches:
# section name
section_name = match.group(1)
section_content = match.group(2)
content.sections[section_name] = section_content
if content.sections:
sections_names = ", ".join([section_name for section_name in content.sections.keys()])
print("Sections in {t}: {s}".format(t=content.title, s=sections_names))
def register():
signals.article_generator_write_article.connect(split_sections)
signals.page_generator_write_page.connect(split_sections)

@ -1,29 +0,0 @@
from pelican import signals
def split_to_quotes_section(article):
article_sections = article._content.split('<!--quotes-->');
article._content = article_sections[0]
if len(article_sections) > 1:
article.quotes = article_sections[1]
def split_to_bio_section(article):
article_sections = article._content.split('<!--bio-->');
article._content = article_sections[0]
if len(article_sections) > 1:
article.bio = article_sections[1]
def article_add_quotes(article_generator):
for article in article_generator.articles:
split_to_quotes_section(article)
for translation in article.translations:
split_to_quotes_section(translation)
def page_add_bio(page_generator):
for page in page_generator.pages:
split_to_bio_section(page)
for translation in page.translations:
split_to_bio_section(translation)
def register():
signals.article_generator_finalized.connect(article_add_quotes)
signals.page_generator_finalized.connect(page_add_bio)

@ -28,6 +28,13 @@ nav.nav-projects li.active::after{
font-size: var(--fs-mono); */ font-size: var(--fs-mono); */
} }
a.margin-anchor{
--margin: calc(var(--lh) * 6);
display: block;
margin-top: calc(-1 * var(--margin));
height: var(--margin);
}
/* QUOTES /* QUOTES
========================================================================== */ ========================================================================== */

@ -29,7 +29,7 @@
margin-bottom: calc(var(--lh) * 0.5); margin-bottom: calc(var(--lh) * 0.5);
} }
#calendar-section .calendar-content{ #calendar-section .calendar-content{
padding-left: calc(var(--lh) * 1); /* padding-left: calc(var(--lh) * 1); */
} }
#calendar-section footer{ #calendar-section footer{
padding-top: calc(var(--lh) * 0.5); padding-top: calc(var(--lh) * 0.5);
@ -68,6 +68,7 @@
} }
.cal-entry__description{ .cal-entry__description{
font-size: var(--fs-up);
margin-top: calc(var(--lh) * 0.5); margin-top: calc(var(--lh) * 0.5);
} }
.cal-entry__data{ .cal-entry__data{
@ -104,7 +105,6 @@
} }
.cal-entry__phase h2.phase-name { .cal-entry__phase h2.phase-name {
line-height: calc(var(--lh) * 1.5); line-height: calc(var(--lh) * 1.5);
text-transform: capitalize;
white-space: nowrap; white-space: nowrap;
width: 6em; width: 6em;
} }
@ -166,12 +166,12 @@
} }
@keyframes newmoon { @keyframes newmoon {
0% { font-variation-settings: "SERI"0, "slnt"0; } 0% { font-variation-settings: "SERI"0, "slnt"0; }
50% { font-variation-settings: "SERI"100, "slnt"0; color: var(--clr-back);} 50% { font-variation-settings: "SERI"100, "slnt"0; }
100% { font-variation-settings: "SERI"0, "slnt"0; } 100% { font-variation-settings: "SERI"0, "slnt"0; }
} }
@keyframes fullmoon { @keyframes fullmoon {
0% { font-variation-settings: "SERI"100, "slnt"0; } 0% { font-variation-settings: "SERI"100, "slnt"0; }
50% { font-variation-settings: "SERI"0, "slnt"0; color: var(--clr-back);} 50% { font-variation-settings: "SERI"0, "slnt"0; }
100% { font-variation-settings: "SERI"100, "slnt"0; } 100% { font-variation-settings: "SERI"100, "slnt"0; }
} }

@ -0,0 +1,214 @@
/* RESET
===================================================== */
body{
background: white;
color: black;
}
body > header{
display: none;
}
body > section.grid-display > .column-fixed{
display: none;
}
body > section.grid-display {
display: block;
padding: 0 !important;
}
.text-content{
max-width: none;
}
/* VARIABLES
===================================================== */
:root{
/* big -> bigger but mono big stay the same */
--fs-big: 5rem;
--fs-mono-big: 2.4rem;
/* reduce a bit the lh for print */
--lh: 1.3rem;
/* 3 lang paysage */
--fs-big: 5rem;
/* 3 langs paysage */
--fs-main: 11pt;
/*
notes:
- 12pt is a bit too much for main text
*/
/* variable for flyer */
--margin: 1cm;
/* A5 */
--page-w: 210mm;
--page-h: 148mm;
}
/* PRINT LAYOUT
===================================================== */
.page{
width: var(--page-w);
height: var(--page-h);
box-sizing: border-box;
position: relative;
overflow: visible;
/* https://developer.mozilla.org/en-US/docs/Web/CSS/break-after */
break-after: page;
page-break-inside: avoid;
}
.container{
position: relative;
}
.layer{
position: absolute;
inset: 0;
}
.page-rotate{
width: var(--page-h);
height: var(--page-w);
position: absolute;
top: 100%;
right: 0;
transform-origin: top right;
transform: rotate(90deg);
}
@media only screen {
body{
background-color: whitesmoke;
}
.page{
margin: 1cm auto;
outline: 1px yellowgreen solid;
background: white;
}
}
/* COMPOSITION
===================================================== */
html{
font-size: var(--fs-main);
}
.flyer h2{
line-height: 1;
display: inline-block;
}
.flyer h2:nth-of-type(3){
margin-left: calc(var(--lh) * 2);
}
.recto__text{
padding: var(--margin);
display: grid;
grid-template-rows: 1fr min-content min-content;
}
.verso__text{
padding: var(--margin);
display: flex;
flex-direction: column;
justify-content: flex-end;
}
.recto__langs{
display: flex;
gap: var(--lh);
}
.recto__langs > *{
flex: 0 1 100%;
gap: var(--lh);
}
.recto__lang > p{
margin: 0;
}
footer{
margin: calc(var(--lh) * 1) 0 calc(var(--lh) * 0.5);
display: flex;
/* justify-content: space-between; */
align-items: baseline;
gap: calc(var(--lh) * 2);
/* 3 langs paysage */
margin: calc(var(--lh) * 0.5) 0 calc(var(--lh) * 0);
}
.verso footer{
color: white;
}
/* GRID DRAWING
===================================================== */
.grid-cell{
width: 100%;
height: 100%;
position: relative;
}
.element-wrapper{
position: absolute;
inset: 0;
transform-origin: center center;
width: 100%;
height: 100%;
}
/* added */
.drawing-back{
background:
radial-gradient(circle closest-side, white, white 50%, transparent calc(100% - var(--margin))),
linear-gradient(to bottom, white, black);
/* background-blend-mode: difference; */
}
/* .drawing-cirlce{
background: linear-gradient(white, black);
} */
.drawing-grid{
box-sizing: border-box;
overflow: hidden;
width: 100%;
height: 100%;
position: absolute;
inset: 0;
/* mix-blend-mode: difference; */
}
.leaf{
--s: 80%;
box-sizing: border-box;
width: var(--s);
height: var(--s);
border-radius: 0 100% 0 50% / 0 50% 0 100%;
background: black;
/* border: var(--border);
background: white; */
}

@ -3,12 +3,12 @@
display: grid; display: grid;
grid-template-columns: repeat(auto-fit, minmax(250px, 1fr) ); grid-template-columns: repeat(auto-fit, minmax(250px, 1fr) );
grid-auto-rows: 200px; grid-auto-rows: 200px;
box-sizing: border-box; box-sizing: border-box;
border: var(--border); border: var(--border);
height: calc(100vh - calc(5 * var(--lh))); height: calc(100vh - calc(5 * var(--lh)));
overflow: auto; overflow: auto;
background: var(--c-soft); background: var(--clr-soft);
} }
.gallery-section > .image{ .gallery-section > .image{
position: relative; position: relative;
@ -32,12 +32,6 @@
pointer-events: none; pointer-events: none;
} }
/* remove the watch on gallery mode */
body.gallery aside.moon-watch{
display: none;
}
body.gallery > section.grid-display{ body.gallery > section.grid-display{
grid-template-columns: 1fr; grid-template-columns: 1fr;
} }

@ -58,47 +58,47 @@ nav.lang-menu #lang__es{
/* NAVIGATION /* NAVIGATION
========================================================================== */ ========================================================================== */
nav.nav-menu ul{
nav.nav-menu{
height: calc(var(--lh) * 2); height: calc(var(--lh) * 2);
display: flex; display: flex;
justify-content: space-between;
align-items: stretch; align-items: stretch;
background: var(--clr-soft);
border-top: var(--border); border-top: var(--border);
border-bottom: var(--border); border-bottom: var(--border);
border-color: var(--clr-header); border-color: var(--clr-header);
box-sizing: border-box; box-sizing: border-box;
}
/* theme 1 */ ul.nav-menu__pages{
background: var(--clr-soft); flex: 1 1 0;
display: flex;
align-items: stretch;
}
div.nav-menu__footer{
flex: 1 1 0;
display: flex;
align-items: stretch;
/* theme 2 */ /* square */
/* border-top: var(--border); max-width: calc(var(--lh) * 2);
background: var(--clr-text);
border-color: var(--clr-soft);
color: var(--clr-soft); */
} }
nav.nav-menu li{
/* ----- MAIN NAV ----- */
ul.nav-menu__pages li{
flex: 1 0 0%; flex: 1 0 0%;
box-sizing: border-box; box-sizing: border-box;
max-width: 16rem; max-width: 16rem;
position: relative; position: relative;
border-right: var(--border); border-right: var(--border);
border-color: var(--clr-header); border-color: var(--clr-header);
overflow: hidden;
/* theme 1 */
/* background: var(--clr-back); */
/* theme 2 */
/* border-color: var(--clr-soft); */
}
nav.nav-menu li:first-child{
/* border-left: var(--border); */
/* theme 2 */
/* border-color: var(--clr-soft); */
} }
ul.nav-menu__pages a{
nav.nav-menu a{
color: currentColor; color: currentColor;
display: block; display: block;
height: 100%; height: 100%;
@ -113,15 +113,23 @@ nav.nav-menu a{
text-decoration: none; text-decoration: none;
transition: 300ms font-variation-settings; transition: 300ms font-variation-settings;
font-variation-settings: "SERI" 0, "slnt" 0; font-variation-settings: "SERI" 0, "slnt" 0;
padding: 0 0.5em;
} }
nav.nav-menu a span{ ul.nav-menu__pages a span{
padding-top: 0.2em; padding-top: 0.2em;
} }
nav.nav-menu a:hover, ul.nav-menu__pages a span{
nav.nav-menu li.active a{ overflow: hidden;
font-variation-settings: "SERI" 100, "slnt" 0; text-overflow: ellipsis;
} }
/* variations */
ul.nav-menu__pages a:hover,
ul.nav-menu__pages li.active a{
font-variation-settings: "SERI" 100, "slnt" 0;
}
nav.nav-menu li.active{ nav.nav-menu li.active{
background: white; background: white;
} }
@ -131,6 +139,7 @@ nav.nav-menu li.active{
} }
/* order */ /* order */
nav.nav-menu #nav__index{ nav.nav-menu #nav__index{
order: 1; order: 1;
} }
@ -139,12 +148,18 @@ nav.nav-menu #nav__projects{
} }
nav.nav-menu #nav__gallery{ nav.nav-menu #nav__gallery{
order: 3; order: 3;
margin-right: calc(-1 * var(--border-width));
} }
/* breaking point */
/* 16em * 3 * 1.25*/ /* ----- FOOTER LINK ----- */
@media only screen and (max-width: 60em) {
nav.nav-menu li#nav__gallery{ .open-footer{
border-right: none; /* border */
} border-left: var(--border);
border-color: var(--clr-header);
/* square size */
flex: 1 0 0;
} }

@ -0,0 +1,10 @@
<svg xmlns='http://www.w3.org/2000/svg' viewBox='-50 -50 100 100'>
<defs>
<linearGradient id='moon-light-gradient' x1="0" x2="0" y1="0" y2="1">
<stop stop-color='white' offset="0%"/>
<stop stop-color='rgba(255,255,255,0)' offset="75%"/>
</linearGradient>
</defs>
<circle cx='0' cy='0' r='50' fill='url("#moon-light-gradient")'/>
</svg>

After

Width:  |  Height:  |  Size: 388 B

@ -10,11 +10,13 @@ body > header{
} }
body > section.grid-display{ body > section.grid-display{
display: grid; display: grid;
grid-template-columns: 40% 60%; grid-template-columns: 1fr 60%;
padding: var(--lh) var(--lh) 0;
gap: 0 calc(var(--lh) * 2);
box-sizing: content-box;
position: relative; position: relative;
} }
body > section.grid-display > *{ body > section.grid-display > *{
padding: var(--lh);
box-sizing: border-box; box-sizing: border-box;
} }
@ -43,7 +45,6 @@ body.all-typo > section.grid-display{
body > section.grid-display{ body > section.grid-display{
grid-template-columns: 1fr !important; grid-template-columns: 1fr !important;
padding: var(--lh);
} }
/* remove column containers */ /* remove column containers */

@ -29,24 +29,19 @@ body{
/* slitghly brown forest light, low contrast */ /* slitghly brown forest light, low contrast */
--clr-text: hsl(62, 6%, 24%); --clr-text: hsl(62, 6%, 24%);
--clr-soft-text: rgba(0,0,0,0.25); --clr-soft-text: rgba(0,0,0,0.25);
--clr-header: var(--clr-text); --clr-header: black;
/* day -- colored */
/* --clr-soft: hsl(60, 32%, 84%);
--clr-back: hsl(90, 32%, 86%); */
/* day -- grey green */
/* --clr-soft: hsl(54, 32%, 78%);
--clr-back: hsl(66, 18%, 82%); */
--clr-soft: hsl(54, 40%, 82%); --clr-soft: hsl(54, 40%, 82%);
--clr-back: hsl(82, 16%, 84%); /* hsl(34, 44%, 69%) */
--clr-back: hsl(82, 24%, 84%);
/* --clr-soft: hsl(60, 32%, 78%);
--clr-back: hsl(48, 24%, 82%); */
/* a bit more solarized */
--clr-soft: hsl(48, 46%, 82%);
--clr-back: hsl(72, 32%, 84%);
background: var(--clr-back); background: var(--clr-back);
color: var(--clr-text); color: var(--clr-text);
--border-width: 1px; --border-width: 1px;
--border: var(--border-width) solid var(--clr-text); --border: var(--border-width) solid var(--clr-text);
@ -54,17 +49,14 @@ body{
body.night{ body.night{
/* slitghly cyan moon reflection, low contrast */ /* slitghly cyan moon reflection, low contrast */
--clr-text: hsl(160, 6%, 82%); --clr-text: hsl(160, 6%, 86%);
--clr-soft-text: rgba(255,255,255,0.35); --clr-soft-text: rgba(255,255,255,0.35);
--clr-header: hsl(320, 4%, 12%); --clr-header: hsl(320, 4%, 12%);
--clr-header: black;
/* night -- colored */
/* --clr-soft: hsl(340, 4%, 30%);
--clr-back: hsl(240, 30%, 18%); */
/* night -- grey purple */ /* night -- grey purple */
--clr-soft: hsl(350, 3%, 42%); --clr-soft: hsl(290, 10%, 38%);
--clr-back: hsl(252, 15%, 22%); --clr-back: hsl(252, 30%, 16%);
} }
@ -72,14 +64,18 @@ body.night{
a, a,
a:visited{ a:visited{
color: currentColor; color: currentColor;
/* color: yellowgreen; */ text-decoration-thickness: var(--border-width);
/* text-decoration-thickness: var(--border-width); */
text-decoration-thickness: 1px;
} }
:is(a, a:visited):hover{ :is(a, a:visited):hover{
text-decoration: none; text-decoration: none;
} }
hr{
border: none;
border: var(--border);
margin: var(--lh) 0;
}
/* selection */ /* selection */
*::selection{ *::selection{
background: white; background: white;
@ -98,6 +94,23 @@ a:visited{
opacity: 1; opacity: 1;
} }
h2.phase-name {
text-transform: capitalize;
}
.full-moon-fvs{
font-variation-settings: "SERI"100, "slnt"0;
}
.full-moon-slanted-fvs{
font-variation-settings: "SERI"100, "slnt"-100;
}
.new-moon-fvs{
font-variation-settings: "SERI"0, "slnt"0;
}
.new-moon-slanted-fvs{
font-variation-settings: "SERI"0, "slnt"100;
}
/* CONSTANT VERTICAL RYTHM /* CONSTANT VERTICAL RYTHM
=========================================================================== */ =========================================================================== */
@ -187,48 +200,111 @@ section.data-section::after{
line-height: 1.25; line-height: 1.25;
} }
section > a:first-of-type{ section.data-section::after{
display: block; color: white;
margin-top: -200px; }
height: 200px; .night section.data-section::after{
color: var(--clr-header);
} }
/* INTRO TEXT /* INTRO TEXT
=========================================================================== */ =========================================================================== */
/* first sentence */ /* first sentence */
#about-section .about-box > p:first-child{ .about-box > p:first-child{
font-size: var(--fs-up); font-size: var(--fs-up);
margin-bottom: 0; margin-bottom: 0;
line-height: 1.1; line-height: 1.1;
} }
#about-section .bio-box > p:first-child{ .bio-box{
margin-top: calc(var(--lh) * 1); margin-top: calc(var(--lh) * 1);
display: grid;
grid-template-columns: calc(var(--lh) * 4) 1fr;
gap: calc(var(--lh) * 0.5);
} }
/* svg */
.bio-box__leaves > svg{
fill: var(--clr-text);
stroke:none;
stroke-width:0;
fill-opacity:1;
stroke-miterlimit:4;
stroke-dasharray:none;
}
.bio-box__text{
border-left: var(--border);
padding-left: calc(var(--lh) * 0.5);
}
/* FOOTER /* FOOTER
=========================================================================== */ =========================================================================== */
body > footer{ button{
/* reset buton style */
border: none;
background-color: transparent;
font-family: 'Inconsolata', monospace;
font-size: var(--fs-mono-big);
font-variation-settings: var(--fvs-mono-big);
color: currentColor;
cursor: pointer;
box-sizing: border-box;
/* flex centering */
display: flex;
justify-content: center;
align-items: center;
text-align: center;
}
dialog.footer{
background: var(--clr-soft); background: var(--clr-soft);
font-size: 0.625rem !important; border: var(--border);
border-top: var(--border);
border-color: var(--clr-header); border-color: var(--clr-header);
display: grid;
grid-template-columns: 1fr 1fr;
}
body > footer > *{
padding: var(--lh); padding: var(--lh);
color: currentColor;
}
dialog.footer .close-footer{
position: absolute;
top: 0;
right: 0;
height: calc(var(--lh) * 2);
width: calc(var(--lh) * 2);
border-left: var(--border);
border-bottom: var(--border);
border-color: var(--clr-header);
}
dialog.footer p:first-of-type{
margin-top: 0;
margin-right: calc(var(--lh) * 2);
}
dialog.footer p:last-of-type{
font-family: 'Inconsolata', monospace;
font-variation-settings: var(--fvs-mono);
font-size: var(--fs-mono);
line-height: 1.25;
}
dialog.footer::backdrop{
background: black;
opacity: 0.25;
}
.night dialog.footer::backdrop{
background: black;
opacity: 0.25;
} }
@media only screen and (max-width: 920px) { @media only screen and (max-width: 920px) {
body > footer{ dialog.footer{
grid-template-columns: 1fr; padding: var(--lh) calc(var(--lh) / 2);
} margin: auto calc(var(--lh) / 2);
body > footer > p:not(:last-of-type){
padding-bottom: 0;
} }
} }

@ -125,19 +125,22 @@ function addDateToCalendar(date, moon){
if (calendar[time_id]){ if (calendar[time_id]){
let walk_entry = calendar[time_id]; let walk_entry = calendar[time_id];
// Event type
let event_type = walk_entry.event_type[window.current_local.substring(0,2)];
// --- add the class // --- add the class
$cal_entry.addClass("confirmed"); $cal_entry.addClass("confirmed");
$cal_entry.find(".reservation .not-confirmed").remove(); $cal_entry.find(".reservation .not-confirmed").remove();
// --- fill infos // --- fill infos
$cal_entry.find(".event-type").html(event_type);
$cal_entry.find(".start-time").html(walk_entry.start_time); $cal_entry.find(".start-time").html(walk_entry.start_time);
$cal_entry.find(".start-location a").html(walk_entry.start_location); $cal_entry.find(".start-location a").html(walk_entry.start_location);
$cal_entry.find(".start-location a").attr("href", walk_entry.start_location_link); $cal_entry.find(".start-location a").attr("href", walk_entry.start_location_link);
// --- mail subject // --- mail subject
// only added if event has an entry in yaml AND not a past event // only added if event has an entry in yaml AND not a past event
let mail_subject = $cal_entry.find(".reservation a").attr("data-mail-subject"); let mail_subject = [event_type, phase_name, formated_date['date']].join(", ");
mail_subject = mail_subject.replace("$", phase_name) + " " + formated_date['date'];
let uri = "mailto:" + contact_mail + "?subject="; let uri = "mailto:" + contact_mail + "?subject=";
uri += encodeURIComponent(mail_subject); uri += encodeURIComponent(mail_subject);
$cal_entry.find(".reservation a").attr("href", uri); $cal_entry.find(".reservation a").attr("href", uri);
@ -333,7 +336,7 @@ function createCalendar(months_ahead){
for (var i = 0; i < months_ahead; i++) { for (var i = 0; i < months_ahead; i++) {
let lang = window.current_local.substring(0,2) let lang = window.current_local.substring(0,2);
// config to send to the API // config to send to the API
let config_month = { let config_month = {

@ -89,7 +89,8 @@ function updateCurrentMoonTypo(date){
let moon = getMoonStateFromDate(date, lat, long); let moon = getMoonStateFromDate(date, lat, long);
updateAxis($(".moon-phased-typo > p"), moon["phase"], false); updateAxis($(".moon-phased-typo > p"), moon["phase"], false);
updateAxis($(".moon-phased-typo > *:not(p)"), moon["phase"], true); updateAxis($(".moon-phased-typo > blockquote"), moon["phase"], false);
updateAxis($(".moon-phased-typo > h2"), moon["phase"], true);
updateAxis($("#about-section .about-box p:first-child"), moon["phase"], true); updateAxis($("#about-section .about-box p:first-child"), moon["phase"], true);
} }

@ -0,0 +1,261 @@
class Grid{
constructor(id, cell_size, mode = "STRETCH"){
this.id = id;
this.$grid = $("#"+id);
if (Array.isArray(cell_size)){
this.cell_width = cell_size[0];
this.cell_height = cell_size[1];
} else{
this.cell_width = cell_size;
this.cell_height = cell_size;
}
this.columns = 0;
this.rows = 0;
const possible_mode = ["STRETCH", "FIXED", "SPACE"];
if(possible_mode.includes(mode)){
this.mode = mode;
}
// this.init_css();
this.elements = [];
this.distribute = function(i,j){
// default distribution if there is more than one element
let index = j;
let choose = (index+(i%this.elements.length))%this.elements.length;
return choose;
}
this.mouvements = [];
}
init_css(){
// get the new element because pagedjs changed it
this.$grid = $("#"+this.id);
// compute number of cell that can fit horizontaly and verticaly
this.columns = String(Math.floor(this.$grid.width() / this.cell_width));
this.rows = String(Math.floor(this.$grid.height() / this.cell_height));
console.log(this.$grid.width(), this.$grid.height());
console.log("col-row-size", this.columns, this.rows, "(" + this.cell_width + "px", this.cell_width + "px" + ")");
// init css grid
this.$grid.css("display", "grid");
if(this.mode == "STRETCH" || this.mode == "SPACE"){
this.$grid.css("grid-template-columns", "repeat("+ this.columns +", 1fr");
this.$grid.css("grid-template-rows", "repeat("+ this.rows +", 1fr");
} else{
this.$grid.css("grid-template-columns", "repeat("+ this.columns +", "+ this.cell_width + "px");
this.$grid.css("grid-template-rows", "repeat("+ this.rows +", "+ this.cell_height + "px");
}
}
addElement(element_template){
this.elements.push(element_template);
}
addMouvement(grid_mouvement){
this.mouvements.push(grid_mouvement);
}
draw(){
// fill all the grid with it's element
this.init_css();
for (var i = 0; i < this.rows; i++) {
for (var j = 0; j < this.columns; j++) {
// pick the element we are going to draw
let pick = this.distribute(i,j);
let element_html = "";
if(pick >= 0){
element_html = this.elements[pick].html;
}
// a clone
let $el = $(element_html);
// wrapp it in a cell
let $cell = $("<div>").addClass("grid-cell");
let $wrapper = $("<div>").addClass("element-wrapper");
//so we can chain transform on it
// $wrapper.css("transform-origin", "center center");
// $wrapper.css("transform", "translate(-50%, -50%)");
if(this.mode == "SPACE"){
$wrapper.css("width", this.cell_width);
$wrapper.css("height", this.cell_height);
}
$cell.append($wrapper.append($el));
// iterate over all mouvement and apply them to the clone
this.mouvements.forEach( function(mvt){
mvt.apply($cell,i,j);
});
// get a clone with mouvement applied
// let $el = this.element_template.draw(i,j);
this.$grid.append($cell);
}
}
}
}
class GridElement{
// a template of grid element to clone into the grid
constructor(id){
//get html content string
// let content = $("#"+id).html();
// wrapp it in a cell
// let $cell = $("<div>").addClass("grid-cell");
// let $wrapper = $("<div>").addClass("element-wrapper");
// $cell.append($wrapper.append(content));
//
// this.html = $("<div>").append($cell).html().trim();
this.html = $("#"+id).html();
// this.mouvements = [];
}
// addMouvement(grid_mouvement){
// this.mouvements.push(grid_mouvement);
// }
// draw(i, j){
// // return the DOM element according to it's template and an i,j parameter
//
// // a clone
// let $new_el = $(this.html);
//
// // iterate over all mouvement and apply them to the clone
// this.mouvements.forEach( function(mvt){
// mvt.apply($new_el,i,j);
// });
//
// return $new_el;
// }
}
class GridMouvement{
constructor(css_property, eval_function, selector=".element-wrapper"){
this.selector = selector;
this.property = css_property;
this.evaluate = eval_function;
}
apply($element, i, j){
// apply the mouvement to an element according to it's i, j position
// on the grid
let $search = $("<div>").append($element);
let $affected_by_mvt = $search.find(this.selector);
let css = this.evaluate(i,j);
if(this.property == "transform"){
let current_transform = $affected_by_mvt.css("transform");
css = current_transform + " " + css;
}
$affected_by_mvt.css(this.property, css);
}
}
// default mouvements
function map_range(value, in_min, in_max, out_min, out_max) {
return (value - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;
}
const sym2HH = new GridMouvement("transform", function(i,j){
let scaleY = 1;
if(j%2==1){ scaleY = -1; }
let transform = "scaleY("+scaleY+")";
return transform;
});
const sym2VV = new GridMouvement("transform", function(i,j){
let scaleX = 1;
if(i%2==1){ scaleX = -1; }
let transform = "scaleX("+scaleX+")";
return transform;
});
const sym4 = new GridMouvement("transform", function(i,j){
let scaleX = 1;
let scaleY = 1;
if(i%2==1){ scaleX = -1; }
if(j%2==1){ scaleY = -1; }
let transform = "scaleX("+scaleX+") scaleY("+scaleY+")";
return transform;
});
const sym4alt = new GridMouvement("transform", function(i,j){
let scaleX = 1;
let scaleY = 1;
if(i%2==1){ scaleY = -1; }
if(j%2==1){ scaleX = -1; }
let transform = "scaleX("+scaleX+") scaleY("+scaleY+")";
return transform;
});
const line_shift = new GridMouvement("transform", function(i,j){
let translate = "";
if(i%2==1){
translate = "translateX(-25%)";
}
if(i%2==0){
translate = "translateX(+25%)";
}
return translate;
});
const shrink = new GridMouvement("transform", function(i,j){
let factor = j/(mygrid.columns);
return "scale("+factor+")";
});
const rotation = new GridMouvement("transform", function(i,j){
let angle = String((j/(mygrid.columns-1))*360)+"deg";
let rotate = "rotate("+angle+")";
return rotate;
});
const random_rot = new GridMouvement("transform", function(i,j){
let angle = Math.random()*360;
let rotate = "rotate("+angle+"deg)";
return rotate;
});
const random_color = new GridMouvement("background", function(i,j){
let hue = map_range(Math.random(),0,1,30,100);
let color = "hsl("+hue+",70%,50%)";
return color;
}, ".leaves");
const scattered = new GridMouvement("transform", function(i,j){
let maxdecal = 120;
let decalx = (Math.random()*maxdecal) - (maxdecal/2);
let decaly = (Math.random()*maxdecal) - (maxdecal/2);
let transform = "translate("+decalx+"%, "+decaly+"%)";
return transform;
});
const diagonal_fontsize = new GridMouvement("font-size", function(i,j){
let x = j/(mygrid.columns-1);
let y = i/(mygrid.rows-1);
let fontsize = Math.max(Math.abs(x-y) * 10, 1);
return fontsize+"em";
});

@ -7,3 +7,11 @@
</div> </div>
{% endblock %} {% endblock %}
{% block js_body %}
{{super()}}
<script>
printAllMoonphases();
</script>
{% endblock %}

@ -8,6 +8,8 @@
<link rel="stylesheet" type="text/css" href="{{ SITEURL }}/{{ THEME_STATIC_DIR }}/css/article.css" /> <link rel="stylesheet" type="text/css" href="{{ SITEURL }}/{{ THEME_STATIC_DIR }}/css/article.css" />
{% endblock %} {% endblock %}
{% block title %}{{ super() }} &mdash; {{ multilang[article.category] }}{% endblock title %}
{% block body_class %}{{ article.category }}{% endblock %} {% block body_class %}{{ article.category }}{% endblock %}
{% block fixed_content %} {% block fixed_content %}
@ -20,7 +22,7 @@
<section id="projects-section" class="data-section" data-box-title="{{ multilang.projects }}"> <section id="projects-section" class="data-section" data-box-title="{{ multilang.projects }}">
<a name="topp"></a> <a name="top-art" class="margin-anchor"></a>
<nav class="nav-projects mono"> <nav class="nav-projects mono">
<ul> <ul>
{# ---> list all the 'projects' article in the current language #} {# ---> list all the 'projects' article in the current language #}
@ -28,13 +30,13 @@
{% if art.category == 'projects' %} {% if art.category == 'projects' %}
{% if current_lang == DEFAULT_LANG %} {% if current_lang == DEFAULT_LANG %}
<li {% if art == article %} class="active" {% endif %}> <li {% if art == article %} class="active" {% endif %}>
<a href="{{ art.url }}#topp">{{ art.title }}</a> <a href="{{ art.url }}#top-art">{{ art.title }}</a>
</li> </li>
{% else %} {% else %}
{% for translation in art.translations %} {% for translation in art.translations %}
{% if translation.lang == current_lang %} {% if translation.lang == current_lang %}
<li {% if translation == article %} class="active" {% endif %}> <li {% if translation == article %} class="active" {% endif %}>
<a href="{{ translation.url }}#topp" hreflang="{{ translation.lang }}">{{ translation.title }}</a> <a href="{{ translation.url }}#top-art" hreflang="{{ translation.lang }}">{{ translation.title }}</a>
</li> </li>
{% endif %} {% endif %}
{% endfor %} {% endfor %}
@ -47,14 +49,18 @@
<section id="{{ article.title }}-section" class="data-section" data-box-title="{{ article.title }}"> <section id="{{ article.title }}-section" class="data-section" data-box-title="{{ article.title }}">
<div class="text-content moon-phased-typo"> <div class="text-content moon-phased-typo">
{{ article.content }} {% if article.sections["main"] %}
{{ article.sections["main"] }}
{% else %}
{{ article.content }}
{% endif %}
</div> </div>
</section> </section>
{% if article.quotes %} {% if article.sections["quotes"] %}
<section id="{{ article.title }}-quotes-section" class="data-section" data-box-title="{{ multilang.quotes }}"> <section id="{{ article.title }}-quotes-section" class="data-section" data-box-title="{{ multilang.quotes }}">
<div class="text-content article-quotes"> <div class="text-content article-quotes moon-phased-typo">
{{ article.quotes }} {{ article.sections["quotes"] }}
</div> </div>
</section> </section>
{% endif %} {% endif %}

@ -3,11 +3,15 @@
<head> <head>
{% block head %} {% block head %}
<title>{% block title %}{{ SITENAME }}{% endblock title %}</title>
<meta charset="utf-8" /> <meta charset="utf-8" />
<meta name="generator" content="Pelican" /> <meta name="generator" content="Pelican" />
<meta name="viewport" content="width=device-width, initial-scale=1"> <meta name="viewport" content="width=device-width, initial-scale=1">
<title>{% block title %}{{ SITENAME }}{% endblock title %}</title>
<meta name="description" content="New Moon and Full Moon walks in the forest, an initiative by Anaïs Berck" />
<link rel="icon" href="{{ THEME_STATIC_DIR }}/css/icon.svg">
<!-- CSS --> <!-- CSS -->
<link rel="stylesheet" type="text/css" href="{{ SITEURL }}/{{ THEME_STATIC_DIR }}/css/reset.css" /> <link rel="stylesheet" type="text/css" href="{{ SITEURL }}/{{ THEME_STATIC_DIR }}/css/reset.css" />
<link rel="stylesheet" type="text/css" href="{{ SITEURL }}/{{ THEME_STATIC_DIR }}/css/fonts.css" /> <link rel="stylesheet" type="text/css" href="{{ SITEURL }}/{{ THEME_STATIC_DIR }}/css/fonts.css" />
@ -37,14 +41,17 @@
{% endblock %} {% endblock %}
</div> </div>
{% if (page and page.slug != 'gallery') or not page %}
<div class="column-scroll"> <div class="column-scroll">
{% block scroll_content %} {% block scroll_content %}
{% endblock %} {% endblock %}
</div> </div>
{% endif %}
</section> </section>
<footer class="mono"> <dialog class="footer text-content">
<button class="close-footer">&times;</button>
{% for p in pages %} {% for p in pages %}
{% if p.slug == "footer" %} {% if p.slug == "footer" %}
{% if current_lang == DEFAULT_LANG %} {% if current_lang == DEFAULT_LANG %}
@ -58,9 +65,23 @@
{% endif %} {% endif %}
{% endif %} {% endif %}
{% endfor %} {% endfor %}
</footer> </dialog>
{% block js_body %} {% block js_body %}
<script type="text/javascript">
const modal = document.querySelector("dialog.footer");
const open_btn = document.querySelector("button.open-footer");
const close_btn = document.querySelector("button.close-footer");
open_btn.addEventListener('click', () => {
modal.showModal();
});
close_btn.addEventListener('click', () => {
modal.close();
});
</script>
<script type="text/javascript"> <script type="text/javascript">
if(!window.walk_calendar){ if(!window.walk_calendar){
{# imported from the calendar.yaml using the data_files pelican plugin (see pelicanconf.py) #} {# imported from the calendar.yaml using the data_files pelican plugin (see pelicanconf.py) #}
@ -69,9 +90,8 @@
</script> </script>
<script src="{{ SITEURL }}/{{ THEME_STATIC_DIR }}/js/moon-utilities.js"></script> <script src="{{ SITEURL }}/{{ THEME_STATIC_DIR }}/js/moon-utilities.js"></script>
<script src="{{ SITEURL }}/{{ THEME_STATIC_DIR }}/js/moon-watch.js"></script> <script src="{{ SITEURL }}/{{ THEME_STATIC_DIR }}/js/moon-watch.js"></script>
<!-- <script>
printAllMoonphases();
</script> -->
{% endblock %} {% endblock %}
</body> </body>

@ -0,0 +1,134 @@
{% extends "base.html" %}
{% block head %}
{{ super() }}
<link rel="stylesheet" type="text/css" href="{{ THEME_STATIC_DIR }}/css/flyer.css" />
<!-- GRID DRAWING
------------------------------------------------------------------- -->
<script src="{{ THEME_STATIC_DIR }}/js/tools/css-grid-drawing.js"></script>
{% endblock %}
{% block scroll_content %}
<article class="flyer">
<div class="page recto">
<div class="layer recto__text">
<header>
<h2 class="phase-name font-big new-moon-fvs">New moon&nbsp;</h2>
<h2 class="font-big new-moon-slanted-fvs">walks</h2>
<h2 class="phase-name font-big full-moon-fvs">Full moon&nbsp;</h2>
<h2 class="font-big full-moon-slanted-fvs">walks</h2>
</header>
<main class="text-content recto__langs">
<div class="recto__lang">
<p class="font-up">en</p>
<div class="progressive-fvs">
{{ page.sections["en"] }}
</div>
</div>
<div class="recto__lang">
<p class="font-up">fr</p>
<div class="progressive-fvs">
{{ page.sections["fr"] }}
</div>
</div>
<div class="recto__lang">
<p class="font-up">nl</p>
<div class="progressive-fvs">
{{ page.sections["nl"] }}
</div>
</div>
</main>
<footer>
<a class="mono-big" href="http://moonwalks.be">moonwalks.be</a>
<p class="mono">
a project by Anaïs Berck
</p>
</footer>
</div>
</div>
<div class="page verso">
<div class="page-rotate">
<div class="layer drawing-back">
</div>
<div id="verso-drawing" class="layer drawing-grid">
</div>
<div id="verso-drawing" class="layer verso__text">
<footer class="mono-big">
<a href="http://moonwalks.be">moonwalks.be</a>
<p class="mono">
an initiative by Anaïs Berck
</p>
</footer>
</div>
</div>
</div>
</article>
<template id="leaf-element">
<div class="leaf">
</div>
</template>
<script>
// ___ GRID INIT ___
const CELL_SIZE = [80,80];
const GRID_ID = "verso-drawing";
mygrid = new Grid(GRID_ID, CELL_SIZE, "STRETCH");
// ___ ELEMENT INIT ___
myelement = new GridElement("leaf-element");
mygrid.addElement(myelement);
// ___ CUSTOM MOUVEMENT ___
mygrid.addMouvement(random_rot);
mygrid.addMouvement(scattered);
mygrid.draw();
</script>
{% endblock %}
{% block js_body %}
{{ super() }}
<script>
let prog_fvs = document.getElementsByClassName("progressive-fvs");
for (let div of prog_fvs) {
// separate every words in the p as a span
let ps = div.getElementsByTagName("p");
for (let p of ps){
p.innerHTML = p.innerHTML.split(" ").map(x => "<span class='prog-fvs__span'>" + x + "</span>").join(" ");
}
}
for (let div of prog_fvs) {
let prog_spans = div.getElementsByClassName("prog-fvs__span");
let i = 0;
for (let prog_span of prog_spans){
let value = (i / (prog_spans.length - 1)) / 2;
console.log(value);
updateAxis($(prog_span), value, secondAxis=false);
i = i + 1;
}
}
</script>
{% endblock %}

@ -8,6 +8,8 @@
<link rel="stylesheet" type="text/css" href="{{ SITEURL }}/{{ THEME_STATIC_DIR }}/css/gallery.css" /> <link rel="stylesheet" type="text/css" href="{{ SITEURL }}/{{ THEME_STATIC_DIR }}/css/gallery.css" />
{% endblock %} {% endblock %}
{% block title %}{{ super() }} &mdash; {{page.title}}{% endblock title %}
{% block body_class %}gallery{% endblock %} {% block body_class %}gallery{% endblock %}
{% block fixed_content %} {% block fixed_content %}

@ -8,16 +8,26 @@
<link rel="stylesheet" type="text/css" href="{{ SITEURL }}/{{ THEME_STATIC_DIR }}/css/calendar.css" /> <link rel="stylesheet" type="text/css" href="{{ SITEURL }}/{{ THEME_STATIC_DIR }}/css/calendar.css" />
{% endblock %} {% endblock %}
{% block title %}{{ super() }} &mdash; {{page.title}}{% endblock title %}
{% block body_class %}calendar{% endblock %} {% block body_class %}calendar{% endblock %}
{% block fixed_content %} {% block fixed_content %}
<section id="about-section" class="data-section" data-box-title="{{ page.multilang.about }}"> <section id="about-section" class="data-section" data-box-title="{{ page.multilang.about }}">
<div class="text-content moon-phased-typo about-box"> <div class="text-content moon-phased-typo about-box">
{{ page.content }} {{ page.sections["intro"] }}
</div> </div>
<div class="text-content moon-phased-typo bio-box"> <div class="text-content bio-box">
{{ page.bio }}
<div class="bio-box__leaves">
{% include 'inline-svg/bouleau.svg' %}
</div>
<div class="bio-box__text moon-phased-typo">
{{ page.sections["bio"] }}
</div>
</div> </div>
</section> </section>

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 15 KiB

@ -7,7 +7,7 @@
--> -->
<header class="date-time-info mono"> <header class="date-time-info mono">
{{ page.multilang.datetime }} <span></span> {{ page.multilang.datetime }} <span class="timezone"></span>
</header> </header>
<div class="calendar-content"> <div class="calendar-content">
@ -38,8 +38,7 @@
<div class="cal-entry__reservation"> <div class="cal-entry__reservation">
<div class="reservation font-up"> <div class="reservation font-up">
<a class="signup" data-mail-subject="{{ page.multilang.mailsubject }}"> <a class="signup">
{# <span class="picto mono-big">&rarr;</span> #}
{{ page.multilang.signup }} {{ page.multilang.signup }}
</a> </a>
@ -51,7 +50,7 @@
</div> </div>
<div class="cal-entry__description"> <div class="cal-entry__description">
{{ page.multilang.start }} <span class="event-type"></span>,
<time class="start-time" datetime=""></time>, <time class="start-time" datetime=""></time>,
<span class="start-location"><a target="_blank"></a></span> <span class="start-location"><a target="_blank"></a></span>
</div> </div>
@ -61,7 +60,7 @@
{{ page.multilang.sunsetat }} <span class="sunset-time"></span> {{ page.multilang.sunsetat }} <span class="sunset-time"></span>
</div> </div>
<div> <div>
{{ page.multilang.moonat }} <span class="moon-time"></span> <span class="phase-name"></span> <span class="moon-time"></span>
</div> </div>
</div> </div>

@ -6,8 +6,7 @@
</div> --> </div> -->
<div class="watch__phase"> <div class="watch__phase">
<h2 class="phase-name" <h2 class="phase-name">
title="The typography of this website varies slightly under the influence of the moon">
</h2> </h2>
</div> </div>

@ -47,42 +47,47 @@
</div> </div>
<nav class="nav-menu"> <nav class="nav-menu">
<ul>
{% for cat, arts in categories %} <ul class="nav-menu__pages">
<li id="nav__{{ cat }}" {% if category and cat == category %} class="active" {% endif %}>
{% if current_lang == DEFAULT_LANG %}
{# take the last dated article #}
<a href="{{ arts[0].url }}"><span>{{ multilang[cat] }}</span></a>
{% else %}
{% for translation in arts[0].translations %}
{% if translation.lang == current_lang %}
<a href="{{ translation.url }}">
<span>{{ multilang[cat] }}</span>
</a>
{% endif %}
{% endfor %}
{% endif %}
</li>
{% endfor %}
{% for p in pages %} {% for cat, arts in categories %}
{% if not p.partial %} <li id="nav__{{ cat }}" {% if category and cat == category %} class="active" {% endif %}>
<li id="nav__{{ p.slug }}" {% if page and p.slug == page.slug %} class="active"{% endif %}> {% if current_lang == DEFAULT_LANG %}
{% if current_lang == DEFAULT_LANG %} {# take the last dated article #}
<a href="{{ p.url }}"><span>{{ p.title }}</span></a> <a href="{{ arts[0].url }}"><span>{{ multilang[cat] }}</span></a>
{% else %} {% else %}
{% for translation in p.translations %} {% for translation in arts[0].translations %}
{% if translation.lang == current_lang %} {% if translation.lang == current_lang %}
<a href="{{ translation.url }}"> <a href="{{ translation.url }}">
<span>{{ translation.title }}</span> <span>{{ multilang[cat] }}</span>
</a> </a>
{% endif %} {% endif %}
{% endfor %} {% endfor %}
{% endif %} {% endif %}
</li> </li>
{% endif %} {% endfor %}
{% endfor %}
</ul> {% for p in pages %}
{% if not p.partial %}
<li id="nav__{{ p.slug }}" {% if page and p.slug == page.slug %} class="active"{% endif %}>
{% if current_lang == DEFAULT_LANG %}
<a href="{{ p.url }}"><span>{{ p.title }}</span></a>
{% else %}
{% for translation in p.translations %}
{% if translation.lang == current_lang %}
<a href="{{ translation.url }}">
<span>{{ translation.title }}</span>
</a>
{% endif %}
{% endfor %}
{% endif %}
</li>
{% endif %}
{% endfor %}
</ul>
<div class="nav-menu__footer">
<button class="open-footer">?</button>
</div>
</nav> </nav>

Loading…
Cancel
Save