Compare commits
11 Commits
9667de87b4
...
030bf8135d
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
030bf8135d | ||
|
|
d0f95cdecf | ||
|
|
4d71bbe764 | ||
|
|
b9ec4b2ae5 | ||
|
|
c778447dce | ||
|
|
79855006b3 | ||
|
|
486046344c | ||
|
|
2bcdbe68ac | ||
|
|
59ca192f63 | ||
|
|
822f2d97c3 | ||
|
|
8d92f441b0 |
18
README.md
18
README.md
@@ -3,15 +3,15 @@
|
|||||||
L'association Ti Nuage offre une palette des services numériques pour ses adhérents et les internautes, et promeut les logiciels libres et un usage éclairé et raisonné d'Internet.
|
L'association Ti Nuage offre une palette des services numériques pour ses adhérents et les internautes, et promeut les logiciels libres et un usage éclairé et raisonné d'Internet.
|
||||||
Le site de l'association doit décrire ses missions et fournir un aperçu des services qu'elle propose, ainsi que de leurs conditions d'usage.
|
Le site de l'association doit décrire ses missions et fournir un aperçu des services qu'elle propose, ainsi que de leurs conditions d'usage.
|
||||||
|
|
||||||
## Technologie
|
## Génération du site
|
||||||
|
|
||||||
Le site est créé à l'aide du logiciel libre [MetalSmith](http://www.metalsmith.io). Il s'agit d'un outil de tansformation de fichiers qui permet en particulier la génération de sites statiques. L'intérêt de tels sites est leur facilité de déploiement, le peu d'usage qu'ils font en terme de ressources et leur robustesse. L'inconvénient est la nécessité de connaître quelques rudiments sur l'usage d'une ligne de comande pour re-générer et re-déployer le site à chaque modification.
|
Le site est créé à l'aide du logiciel libre [MetalSmith](http://www.metalsmith.io). Il s'agit d'un outil de tansformation de fichiers qui permet en particulier la génération de sites statiques. L'intérêt de tels sites est leur facilité de déploiement, le peu d'usage qu'ils font en terme de ressources et leur robustesse. L'inconvénient est la nécessité de connaître quelques rudiments sur l'usage d'une ligne de comande pour re-générer et re-déployer le site à chaque modification.
|
||||||
|
|
||||||
## Sources
|
### Préparation des sources
|
||||||
|
|
||||||
**Metalsmith** requiert la disponibilité de **NodeJS** et **npm**.
|
**Metalsmith** requiert la disponibilité de **NodeJS** et **npm**. L'installation de ces logiciels dépend du système d'exploitation utilisé.
|
||||||
|
|
||||||
Pour installer les sources du site sur votre machine :
|
Les sources peuvent être téléchargées depuis le dépôt **Gitea** ou bien copiées localement à l'aide de **git** avec la commande suivante.
|
||||||
|
|
||||||
git clone https://apps.ti-nuage.fr/gitea/ti-nuage/site.git
|
git clone https://apps.ti-nuage.fr/gitea/ti-nuage/site.git
|
||||||
|
|
||||||
@@ -24,9 +24,17 @@ Le projet s'appuie sur un certain nombre de dépendances, utiles au developpemen
|
|||||||
Le script `package.json` comprend une série de commandes utiles au développement et à la génération du site. Les plus utiles sont :
|
Le script `package.json` comprend une série de commandes utiles au développement et à la génération du site. Les plus utiles sont :
|
||||||
|
|
||||||
- pour générer le site : `npm run build`,
|
- pour générer le site : `npm run build`,
|
||||||
|
|
||||||
- pour le servir localement et le tester sur son navigateur : `npm run server`.
|
- pour le servir localement et le tester sur son navigateur : `npm run server`.
|
||||||
|
|
||||||
La liste des dommandes existantes est disponible avec `npm run`. Il est possible d'obtenir davantage d'informations en cas de problème avec la variable d'environnement `DEBUG`. Par exemple :
|
La liste des dommandes existantes est disponible avec `npm run`. Il est possible d'obtenir davantage d'informations en cas de problème avec la variable d'environnement `DEBUG`. Par exemple :
|
||||||
|
|
||||||
DEBUG=metalsmith* npm run build
|
DEBUG=metalsmith* npm run build
|
||||||
|
|
||||||
|
## Structure
|
||||||
|
|
||||||
|
Le site de l'association est essentiellement composé de pages statiques. Les billets d'actualité et les comptes-rendus de réunion sont eux-même générés ou assemblés avec le reste des pages du site.
|
||||||
|
|
||||||
|
Cependant, afin d'être réactif, l'affichage des événements du calendrier partagé de l'association est effectué depuis le navigateur. Si le navigateur dispose d'un support Javascript actif, alors :
|
||||||
|
|
||||||
|
- les événements à venir sont mixés avec les billets récents du blog dans la rubrique Actualité de la page d'accueil ;
|
||||||
|
- le menu propose une entrée « Calendrier » à la suite de « Actualité ». Cette nouvelle page présente plus largement les événements récents ou à venir.
|
||||||
|
|||||||
@@ -74,6 +74,11 @@ h3 a:hover {
|
|||||||
text-decoration: underline;
|
text-decoration: underline;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
blockquote {
|
||||||
|
border-left: 5px solid #dd9999;
|
||||||
|
padding: 0 2em 0 2em;
|
||||||
|
}
|
||||||
|
|
||||||
p + h5 {
|
p + h5 {
|
||||||
margin-top: 32px;
|
margin-top: 32px;
|
||||||
}
|
}
|
||||||
@@ -90,6 +95,34 @@ abbr {
|
|||||||
border-bottom: 1px dotted #373d3f;
|
border-bottom: 1px dotted #373d3f;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.loader-wrapper {
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: 1fr 4fr;
|
||||||
|
margin-left: auto;
|
||||||
|
margin-right: auto;
|
||||||
|
padding: 1em;
|
||||||
|
width: 400px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.loader-wrapper div {
|
||||||
|
animation: spin 2s linear infinite;
|
||||||
|
display: table-column-group;
|
||||||
|
height: 30px;
|
||||||
|
width: 30px;
|
||||||
|
border: 5px solid #fff0;
|
||||||
|
border-top: 5px solid #555;
|
||||||
|
border-radius: 50%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.loader-wrapper p {
|
||||||
|
padding-top: 0.5em;
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes spin {
|
||||||
|
0% { transform: rotate(0deg); }
|
||||||
|
100% { transform: rotate(360deg); }
|
||||||
|
}
|
||||||
|
|
||||||
.meta-published {
|
.meta-published {
|
||||||
color: #999;
|
color: #999;
|
||||||
margin-bottom: 1em;
|
margin-bottom: 1em;
|
||||||
@@ -184,10 +217,37 @@ nav section ul li {
|
|||||||
font-size: 1.5em;
|
font-size: 1.5em;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.news-entry h3 {
|
||||||
|
position: relative;
|
||||||
|
padding-left: 2em;
|
||||||
|
padding-top: 0.2em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.news-entry h3::before {
|
||||||
|
content: "";
|
||||||
|
position: absolute;
|
||||||
|
left: 0;
|
||||||
|
top: 0;
|
||||||
|
height: 48px;
|
||||||
|
width: 48px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.blog-entry h3::before {
|
||||||
|
background: transparent url(/images/uicons/comment.svg) center center no-repeat;
|
||||||
|
}
|
||||||
|
|
||||||
|
.event-entry h3::before {
|
||||||
|
background: transparent url(/images/uicons/alarm-clock.svg) center center no-repeat;
|
||||||
|
}
|
||||||
|
|
||||||
|
.event-elapsed h3 {
|
||||||
|
color: grey;
|
||||||
|
text-decoration: line-through;
|
||||||
|
}
|
||||||
|
|
||||||
.services {
|
.services {
|
||||||
border: lightblue 4px solid;
|
border: lightblue 4px solid;
|
||||||
padding: 0.6em;
|
padding: 0.6em;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.services-title {
|
.services-title {
|
||||||
@@ -196,7 +256,7 @@ nav section ul li {
|
|||||||
line-height: 48px;
|
line-height: 48px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.services-title:before {
|
.services-title::before {
|
||||||
content: "";
|
content: "";
|
||||||
position: absolute;
|
position: absolute;
|
||||||
left: 0;
|
left: 0;
|
||||||
|
|||||||
98
assets/production/images/logo-tinuage-square.svg
Normal file
98
assets/production/images/logo-tinuage-square.svg
Normal file
@@ -0,0 +1,98 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<svg
|
||||||
|
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||||
|
xmlns:cc="http://creativecommons.org/ns#"
|
||||||
|
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
width="300mm"
|
||||||
|
height="300mm"
|
||||||
|
viewBox="0 0 300 300"
|
||||||
|
version="1.1"
|
||||||
|
id="SVGRoot"
|
||||||
|
sodipodi:docname="ti-nuage-square.svg"
|
||||||
|
inkscape:version="1.0.2 (e86c870879, 2021-01-15)">
|
||||||
|
<defs
|
||||||
|
id="defs644" />
|
||||||
|
<sodipodi:namedview
|
||||||
|
id="base"
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#666666"
|
||||||
|
borderopacity="1.0"
|
||||||
|
inkscape:pageopacity="0.0"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:zoom="0.7"
|
||||||
|
inkscape:cx="568.33327"
|
||||||
|
inkscape:cy="560"
|
||||||
|
inkscape:document-units="mm"
|
||||||
|
inkscape:current-layer="layer1"
|
||||||
|
inkscape:document-rotation="0"
|
||||||
|
showgrid="false"
|
||||||
|
inkscape:window-width="1920"
|
||||||
|
inkscape:window-height="1096"
|
||||||
|
inkscape:window-x="0"
|
||||||
|
inkscape:window-y="-16"
|
||||||
|
inkscape:window-maximized="0" />
|
||||||
|
<metadata
|
||||||
|
id="metadata647">
|
||||||
|
<rdf:RDF>
|
||||||
|
<cc:Work
|
||||||
|
rdf:about="">
|
||||||
|
<dc:format>image/svg+xml</dc:format>
|
||||||
|
<dc:type
|
||||||
|
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||||
|
<dc:title></dc:title>
|
||||||
|
</cc:Work>
|
||||||
|
</rdf:RDF>
|
||||||
|
</metadata>
|
||||||
|
<g
|
||||||
|
inkscape:label="Calque 1"
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer1">
|
||||||
|
<path
|
||||||
|
d="m 15.183249,155.10712 v 25.20168 c 0,1.00263 0.300894,1.80546 0.902785,2.40726 0.601789,0.60219 1.780403,0.90279 3.53574,0.90279 h 3.535759 v 5.0403 c -1.655021,0.15072 -3.084377,0.22569 -4.288036,0.22569 -3.009148,0 -5.391379,-0.57724 -7.146715,-1.73036 -1.705195,-1.20368 -2.557776,-3.30995 -2.557776,-6.31909 V 155.10704 H 2.7705559 v -5.26592 H 9.165006 v -10.9833 h 6.018274 v 10.9833 h 7.974253 v 5.26592 z"
|
||||||
|
fill="#373d3f"
|
||||||
|
id="path404"
|
||||||
|
style="stroke-width:2.75187" />
|
||||||
|
<path
|
||||||
|
d="m 29.292047,136.60117 h 6.394522 v 7.37215 h -6.394522 z m 0.225696,13.24006 h 6.018337 v 38.81802 h -6.018337 z"
|
||||||
|
fill="#373d3f"
|
||||||
|
id="path406"
|
||||||
|
style="stroke-width:2.75187" />
|
||||||
|
<path
|
||||||
|
d="m 24.060226,202.27229 c 4.363285,0 7.723364,1.17861 10.080613,3.53584 2.407338,2.30689 3.610999,5.61714 3.610999,9.93012 v 26.25476 H 31.73351 v -25.65296 c 0,-3.00916 -0.777456,-5.19081 -2.331933,-6.54478 -1.55483,-1.40421 -3.736462,-2.10648 -6.54499,-2.10648 -1.253833,0 -2.532709,0.25065 -3.836684,0.75198 -1.253803,0.45139 -2.382233,1.17862 -3.38526,2.18167 -1.003049,1.00262 -1.830577,2.28193 -2.482568,3.83673 -0.652024,1.5545 -0.977985,3.41031 -0.977985,5.5667 v 21.96682 H 6.155784 v -38.81783 h 5.717392 v 5.7926 c 1.303975,-1.95597 2.984072,-3.5609 5.040323,-4.81461 2.056251,-1.25402 4.438482,-1.88086 7.146705,-1.88086 z"
|
||||||
|
fill="#373d3f"
|
||||||
|
id="path408"
|
||||||
|
style="stroke-width:2.75187" />
|
||||||
|
<path
|
||||||
|
d="m 76.908989,203.17518 v 38.81783 h -5.717554 v -5.7924 c -1.303832,1.95576 -2.983846,3.5606 -5.040323,4.8146 -2.056186,1.25382 -4.438485,1.88067 -7.146597,1.88067 -4.363363,0 -7.748435,-1.15364 -10.155763,-3.46053 -2.35725,-2.35723 -3.535875,-5.69245 -3.535875,-10.00543 v -26.25474 h 6.018325 v 25.65285 c 0,3.00914 0.77746,5.21588 2.332212,6.62019 1.554533,1.35418 3.736219,2.03117 6.544768,2.03117 1.253744,0 2.507509,-0.22571 3.761524,-0.67711 1.303843,-0.5013 2.457422,-1.254 3.460486,-2.25706 1.003043,-1.00263 1.830538,-2.28182 2.482444,-3.83662 0.651927,-1.55462 0.977989,-3.41041 0.977989,-5.5668 v -21.96672 z"
|
||||||
|
fill="#373d3f"
|
||||||
|
id="path410"
|
||||||
|
style="stroke-width:2.75187" />
|
||||||
|
<path
|
||||||
|
d="m 119.86756,237.10318 v 4.88983 c -0.95292,0.15089 -2.05646,0.22568 -3.31022,0.22568 -2.15663,0 -3.76124,-0.45139 -4.81465,-1.35386 -1.00306,-0.95272 -1.57986,-2.35723 -1.73012,-4.21282 -2.70838,4.16249 -6.92121,6.24399 -12.638497,6.24399 -4.262914,0 -7.623213,-0.97769 -10.080624,-2.93405 -2.407343,-1.95576 -3.61101,-4.7643 -3.61101,-8.42567 0,-1.50447 0.250659,-2.93373 0.752384,-4.28802 0.501413,-1.35418 1.303833,-2.55755 2.407323,-3.61095 1.153589,-1.05317 2.63299,-1.93068 4.438495,-2.63304 1.855593,-0.70205 4.112392,-1.20357 6.770422,-1.50437 l 5.567027,-0.60221 c 1.95602,-0.25065 3.46046,-0.75197 4.51361,-1.50468 1.05342,-0.80293 1.57984,-2.08128 1.57984,-3.83664 0,-2.05621 -0.62685,-3.58575 -1.88062,-4.5888 -1.25376,-1.00262 -3.53587,-1.50468 -6.84582,-1.50468 -3.310227,0 -5.717277,0.55228 -7.221993,1.65498 -1.504456,1.10351 -2.357266,3.10961 -2.557858,6.01829 h -6.018062 c 0.09982,-1.90564 0.451282,-3.636 1.053142,-5.19082 0.601786,-1.5545 1.504434,-2.90866 2.708101,-4.06232 1.253754,-1.15324 2.858636,-2.03117 4.814677,-2.63295 1.956016,-0.65214 4.363366,-0.97769 7.221993,-0.97769 2.70811,0 4.99025,0.27564 6.84582,0.82792 1.85559,0.55124 3.36031,1.3291 4.51361,2.33216 1.15357,1.00263 1.98109,2.20672 2.48274,3.61103 0.50141,1.35418 0.75208,2.85866 0.75208,4.51362 v 21.66593 c 0,1.25382 0.70225,1.88067 2.10654,1.88067 z m -22.192707,0.6771 c 1.45465,0 2.883967,-0.22571 4.288247,-0.6771 1.45437,-0.45139 2.75819,-1.12828 3.91178,-2.03116 1.15357,-0.90278 2.08123,-2.05623 2.78351,-3.46044 0.70195,-1.40431 1.05314,-3.05927 1.05314,-4.96521 v -4.58903 c -1.15358,0.90278 -2.85864,1.45466 -5.11544,1.65529 l -5.642147,0.67708 c -3.51085,0.40146 -5.892861,1.20368 -7.146887,2.40736 -1.253755,1.15365 -1.880637,2.68308 -1.880637,4.58903 0,1.90572 0.601807,3.46044 1.805505,4.66412 1.253754,1.15364 3.234829,1.73017 5.942929,1.73017 z"
|
||||||
|
fill="#373d3f"
|
||||||
|
id="path412"
|
||||||
|
style="stroke-width:2.75187" />
|
||||||
|
<path
|
||||||
|
d="m 159.64224,203.17518 v 37.31335 c 0,2.50753 -0.37621,4.81472 -1.12855,6.92098 -0.70204,2.10658 -1.80549,3.91204 -3.30994,5.41649 -1.50444,1.50438 -3.38535,2.68309 -5.64215,3.53586 -2.25681,0.85285 -4.91483,1.27877 -7.97436,1.27877 -5.01502,0 -8.92706,-1.15355 -11.73563,-3.46044 -2.80855,-2.25685 -4.41343,-5.26601 -4.81465,-9.02754 h 6.01833 c 0.40127,2.45749 1.47968,4.28803 3.23482,5.49159 1.80549,1.25381 4.23787,1.88099 7.29713,1.88099 3.91206,0 6.89617,-1.00265 8.95237,-3.00914 2.05619,-1.95608 3.08429,-4.96523 3.08429,-9.02756 v -3.76154 c -1.45436,1.95608 -3.2849,3.48581 -5.49161,4.58902 -2.20675,1.05319 -4.71424,1.57987 -7.5228,1.57987 -2.70838,0 -5.19084,-0.47635 -7.44766,-1.42936 -2.20671,-0.95272 -4.11265,-2.3071 -5.71755,-4.06223 -1.55452,-1.75544 -2.7582,-3.88707 -3.61099,-6.3946 -0.85256,-2.50773 -1.27881,-5.31635 -1.27881,-8.42565 0,-3.10931 0.42623,-5.91782 1.27881,-8.42566 0.85275,-2.50752 2.05647,-4.63905 3.61099,-6.39429 1.6049,-1.75533 3.51084,-3.10951 5.71755,-4.06252 2.25682,-0.95271 4.73928,-1.42928 7.44766,-1.42928 2.90873,0 5.49163,0.57724 7.74844,1.73037 2.25681,1.10322 4.11238,2.70805 5.56702,4.81463 v -5.64211 z m -18.28065,34.30421 c 3.76152,0 6.7707,-1.30417 9.0275,-3.91184 2.30715,-2.60789 3.46046,-6.26927 3.46046,-10.98351 0,-4.71425 -1.15331,-8.37532 -3.46046,-10.98321 -2.2568,-2.60798 -5.26598,-3.91204 -9.0275,-3.91204 -3.76126,0 -6.79547,1.35419 -9.10264,4.06223 -2.25679,2.65833 -3.38535,6.26905 -3.38535,10.83302 0,4.56396 1.12856,8.20006 3.38535,10.9081 2.30717,2.65803 5.34138,3.98725 9.10264,3.98725 z"
|
||||||
|
fill="#373d3f"
|
||||||
|
id="path414"
|
||||||
|
style="stroke-width:2.75187" />
|
||||||
|
<path
|
||||||
|
d="m 202.51441,224.6906 h -29.48957 c 0.30078,4.41316 1.50445,7.64799 3.61072,9.70443 2.15665,2.0061 4.94017,3.00926 8.35056,3.00926 2.7582,0 4.99023,-0.65214 6.69529,-1.95607 1.70506,-1.30415 2.90871,-3.05927 3.611,-5.266 h 6.24399 c -0.4513,1.80557 -1.15359,3.48549 -2.10656,5.04031 -0.90258,1.55459 -2.05619,2.90877 -3.46048,4.06232 -1.40427,1.10321 -3.0342,1.98103 -4.88979,2.63295 -1.85558,0.65214 -3.93709,0.97769 -6.24399,0.97769 -2.65803,0 -5.09041,-0.4514 -7.29712,-1.35418 -2.20672,-0.95272 -4.11267,-2.3069 -5.71728,-4.06235 -1.60489,-1.75544 -2.85892,-3.88676 -3.76152,-6.39449 -0.85257,-2.50751 -1.2788,-5.34109 -1.2788,-8.50085 0,-3.05927 0.42622,-5.81767 1.2788,-8.27515 0.85254,-2.50751 2.05619,-4.63906 3.611,-6.3945 1.60488,-1.80546 3.4855,-3.18438 5.64215,-4.13741 2.20671,-1.00265 4.66412,-1.50469 7.37225,-1.50469 2.90901,0 5.46659,0.55125 7.6733,1.65518 2.20673,1.05318 4.06257,2.50751 5.56704,4.36312 1.50444,1.80547 2.63297,3.9371 3.38533,6.3945 0.80243,2.45738 1.20368,5.09044 1.20368,7.89895 z m -17.82935,-16.92651 c -3.05925,0 -5.61711,0.95272 -7.67331,2.85866 -2.0562,1.90572 -3.33499,4.78933 -3.83664,8.65135 h 22.86966 c -0.15052,-1.60484 -0.50164,-3.10962 -1.05342,-4.51394 -0.55145,-1.40419 -1.30383,-2.60787 -2.2568,-3.61092 -0.95271,-1.05318 -2.10628,-1.88067 -3.46048,-2.48246 -1.30384,-0.6022 -2.83361,-0.90278 -4.58901,-0.90278 z"
|
||||||
|
fill="#373d3f"
|
||||||
|
id="path416"
|
||||||
|
style="stroke-width:2.75187" />
|
||||||
|
<path
|
||||||
|
d="m 65.948861,144.41671 c 1.927951,-7.5214 5.646,-14.46497 10.836848,-20.23915 5.190848,-5.7743 11.700935,-10.20783 18.975234,-12.92283 7.274557,-2.71492 15.097287,-3.63102 22.802237,-2.66978 7.70468,0.96103 15.0629,3.77078 21.44723,8.18976 2.60245,-13.84954 9.09493,-26.671909 18.71793,-36.966592 9.62274,-10.294872 21.97834,-17.636459 35.62126,-21.166058 13.64268,-3.529609 28.00854,-3.101305 41.41672,1.234886 13.40849,4.336285 25.30453,12.40103 34.29708,23.251 8.99147,10.849761 14.70983,24.035954 16.48205,38.015934 1.77218,13.98027 -0.47335,28.17606 -6.4724,40.92655 -6.00073,12.75083 -15.50788,23.52933 -27.40971,31.07467 -11.90182,7.54512 -25.7063,11.54526 -39.79834,11.53206"
|
||||||
|
stroke="#373d3f"
|
||||||
|
stroke-width="10.4008"
|
||||||
|
stroke-linecap="round"
|
||||||
|
stroke-linejoin="round"
|
||||||
|
id="path418"
|
||||||
|
style="opacity:1;stroke-width:10.401;stroke-miterlimit:4;stroke-dasharray:none;stroke-linecap:round;stroke:#373d3f;stroke-opacity:0.80000001;fill:none" />
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 9.6 KiB |
2
assets/production/images/uicons/alarm-clock.svg
Normal file
2
assets/production/images/uicons/alarm-clock.svg
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" id="Layer_1" data-name="Layer 1" viewBox="0 0 24 24" width="24" height="24"><path d="M13,2.051V1a1,1,0,0,0-2,0V2.051A10.98,10.98,0,0,0,3.681,20.176,3.024,3.024,0,0,0,2,23a1,1,0,0,0,2,0,1.2,1.2,0,0,1,1.11-1.229.932.932,0,0,0,.2-.062,10.924,10.924,0,0,0,13.39,0,1.033,1.033,0,0,0,.182.064A1.2,1.2,0,0,1,20,23a1,1,0,0,0,2,0,3.024,3.024,0,0,0-1.681-2.824A10.98,10.98,0,0,0,13,2.051ZM3,13a9,9,0,1,1,9,9A9.011,9.011,0,0,1,3,13Z"/><path d="M19.215,0a1,1,0,0,0,0,2A2.59,2.59,0,0,1,22,4.5a1,1,0,0,0,2,0A4.6,4.6,0,0,0,19.215,0Z"/><path d="M2,4.5A2.59,2.59,0,0,1,4.785,2a1,1,0,0,0,0-2A4.6,4.6,0,0,0,0,4.5a1,1,0,0,0,2,0Z"/><path d="M13,11.586V7a1,1,0,0,0-2,0v5a1,1,0,0,0,.293.707l3,3a1,1,0,0,0,1.414-1.414Z"/></svg>
|
||||||
|
After Width: | Height: | Size: 783 B |
2
assets/production/images/uicons/comment.svg
Normal file
2
assets/production/images/uicons/comment.svg
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24"><g id="_01_align_center" data-name="01 align center"><path d="M24,24H12.018A12,12,0,1,1,24,11.246l0,.063ZM12.018,2a10,10,0,1,0,0,20H22V11.341A10.018,10.018,0,0,0,12.018,2Z"/><rect x="7" y="7" width="6" height="2"/><rect x="7" y="11" width="10" height="2"/><rect x="7" y="15" width="10" height="2"/></g></svg>
|
||||||
|
After Width: | Height: | Size: 431 B |
45
content/.well-known/chatonsinfos/tinuage.properties
Normal file
45
content/.well-known/chatonsinfos/tinuage.properties
Normal file
@@ -0,0 +1,45 @@
|
|||||||
|
# [File]
|
||||||
|
file.class = organization
|
||||||
|
file.protocol = ChatonsInfos-0.5
|
||||||
|
file.datetime =
|
||||||
|
file.generator =
|
||||||
|
|
||||||
|
# [Organisation]
|
||||||
|
organization.name = Ti Nuage
|
||||||
|
organization.country.code = FR
|
||||||
|
organization.country.name = France
|
||||||
|
organization.description = Hébergeur associatif, transparent, éthique, militant et solidaire dans le Trégor.
|
||||||
|
organization.type = ASSOCIATION
|
||||||
|
organization.website = https://www.ti-nuage.fr
|
||||||
|
|
||||||
|
organization.chatrooms.xmpp = ti-nuage@muc.ti-nuage.fr
|
||||||
|
organization.contact.url = https://www.ti-nuage.fr/mentions_legales.html
|
||||||
|
organization.contact.email = contact@ti-nuage.fr
|
||||||
|
|
||||||
|
organization.funding.helloasso = https://www.helloasso.com/associations/ti-nuage/adhesions/adhesion-1
|
||||||
|
|
||||||
|
organization.geolocation.address = Mairie, 11 places aux Chevaux, 22420 Le Vieux Marché
|
||||||
|
organization.geolocation.latitude = 48.60736
|
||||||
|
organization.geolocation.longitude = -3.45054
|
||||||
|
|
||||||
|
organization.guide.technical = https://wiki.ti-nuage.fr/fr/Administration/Infrastructure
|
||||||
|
organization.guide.user = https://wiki.ti-nuage.fr/
|
||||||
|
|
||||||
|
organization.legal.url = https://www.ti-nuage.fr/mentions_legales.html
|
||||||
|
organization.logo = https://www.ti-nuage.fr/images/logo-tinuage-square.svg
|
||||||
|
|
||||||
|
organization.memberof.chatons.startdate = 21/12/2022
|
||||||
|
organization.memberof.chatons.status.level = ACTIVE
|
||||||
|
organization.memberof.chatons.status.description =
|
||||||
|
|
||||||
|
organization.socialnetworks.mastodon = @tinuage@hostux.social
|
||||||
|
organization.socialnetworks.peertube = https://video.tedomum.net/a/tinunu/video-channels
|
||||||
|
|
||||||
|
organization.startdate = 15/10/2021
|
||||||
|
organization.status.description =
|
||||||
|
organization.status.level = ACTIVE
|
||||||
|
|
||||||
|
# [Subs]
|
||||||
|
subs.foo1 =
|
||||||
|
|
||||||
|
# [Metrics]
|
||||||
3
content/.well-known/security.txt
Normal file
3
content/.well-known/security.txt
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
Contact: mailto:contact@ti-nuage.fr
|
||||||
|
Expires: Sun, 31 Dec 2023 23:59 +0200
|
||||||
|
Preferred-Languages: fr, en
|
||||||
10
content/blog/2022/cr_01_decembre.md
Normal file
10
content/blog/2022/cr_01_decembre.md
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
---
|
||||||
|
title: Le billet de décembre
|
||||||
|
date: 2022-12-12
|
||||||
|
author: David Soulayrol
|
||||||
|
---
|
||||||
|
Voici, avec un peu plus de délai que d'habitude, le compte-rendu de notre dernier « premier jeudi du mois ». Il est [disponible à cette adresse](/cr/2022/cr-20221201.pdf).
|
||||||
|
|
||||||
|
Comme vous pourrez le lire, l'association possède maintenant les moyens de concrétiser l'implantation de ses outils à Vieux-Marché. Elle est également sollicitée pour différentes rencontres. Et certains de ses adhérents sont porteurs d'idées très intéressantes. Tout ceci nécessite maintenant un peu d'investissement humain. Aussi, si vous aimez aller à la rencontre des gens pour discuter de services numériques et de vie privée, si vous avez envie de vous frotter à un peu de programmation (très simple !), si vous voulez aider à tester des outils, n'hésitez pas à vous manifester.
|
||||||
|
|
||||||
|
Cela dit, l'année s'achève et nous vous souhaitons de bonnes fêtes. Nous vous reverrons bien sûr dès le mois prochain, **mais ATTENTION** : notre prochain rendez-vous sera exceptionnellement décalé au *deuxième jeudi* de janvier. En effet, une partie des membres de l'association sera le 5 janvier à Plogrescant pour préparer la manifestation *Faites du numérique* qui s'y tiendra au mois de mars. Nous serons donc plus facilement tous présents le **12 janvier** à la Hutte. Vous pouvez d'ores et déjà indiquer votre présence, proposer des sujets à aborder ou poser vos questions sur [ce pad](https://apps.ti-nuage.fr/pad/p/2023-01-reunion-mensuelle).
|
||||||
31
content/blog/2023/11_fevrier.md
Normal file
31
content/blog/2023/11_fevrier.md
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
---
|
||||||
|
title: Le billet de février
|
||||||
|
date: 2023-02-12
|
||||||
|
author: David Soulayrol
|
||||||
|
---
|
||||||
|
|
||||||
|
## Les Castors Perchés
|
||||||
|
|
||||||
|
Ce mercredi 15 février à 18 heures se tient l'Assemblée Générale de l'association **Les Castors Perchés** à [La Hutte](https://lahutte.ti-nuage.fr) au Vieux-Marché. Il s'agit de l'association qui gère cet espace partagé *ouvert aux entrepreneurs, aux télétravailleurs et aux associations*. Elle héberge aussi le matériel de **Ti Nuage** qui s'y réunit tous les mois.
|
||||||
|
|
||||||
|
Le lieu favorise les rencontres et les échanges. À l'image de **Ti Nuage**, tous les adhérents sont invités à participer à son fonctionnement.
|
||||||
|
|
||||||
|
|
||||||
|
## Je ne suis pas une data
|
||||||
|
|
||||||
|
L'association **[UFC - Que Choisir](https://www.quechoisir.org/combat-ufc-que-choisir-premiere-association-de-consommateurs-de-france-t3075)** a lancé une campagne visant à ouvrir les yeux sur les données amassées par les grandes entreprises du Web : [Je ne suis pas une data](https://www.jenesuispasunedata.fr). Elle fournit des conseils pour la sécurisation de vos réseaux et de vos machines, des outils pour l'analyse des données collectées sur vous sur différents sites, et des articles sur les actions menés en justice sur le sujet.
|
||||||
|
|
||||||
|
Pour mémoire, vous avez le droit de demander à toute entreprise opérant sur le Web le détail exact de toutes les données recueillies en rapport avec votre usage de ses services. En cas de difficultés, **UFC - Que Choisir** peut vous accompagner dans vos demandes et vous apporter une assistance juridique.
|
||||||
|
|
||||||
|
## Faites du Numérique
|
||||||
|
|
||||||
|
[Nous en parlons depuis quelques mois](https://www.letelegramme.fr/cotes-darmor/plougrescant/plougrescant-prepare-une-fete-numerique-hors-normes-28-12-2022-13249219.php), cette *Faites du Numérique* aura lieu dans la salle polyvalente Michel-le-Saint de Plougrescant toute l'après-midi du 11 mars. Son objet est de permettre aux visiteurs de découvrir différents usages et implications du numérique, [en dehors des écrans](https://www.patginformatique.bzh/component/zoo/item/faites-du-numerique?Itemid=101
|
||||||
|
).
|
||||||
|
|
||||||
|
Pour **Ti Nuage** il s'agira d'expliquer au public ce qu'est un *logiciel libre*, quand on entend beaucoup chez les autres intervenants parler de *logiciels gratuits*. Nous pourrons aussi faire découvrir aux visiteurs l'intérêt d'utiliser des services numériques indépendants et la richesse de l'offre logicielle libre pour tous les usages.
|
||||||
|
|
||||||
|
## Réunions de l'association
|
||||||
|
|
||||||
|
Le compte-rendu de notre dernière réunion, le jeudi 2 février dernier, est [disponible ici](/cr/2023/cr-20230202.pdf). Cette soirée a été l'occasion de faire un point sur les usages et les problèmes rencontrés sur les outils de courriels avec Isa de la Convergence des Loutres.
|
||||||
|
|
||||||
|
Notre prochaine réunion aura lieu le **2 mars** à la Hutte, comme il se doit. Vous pouvez d'ores et déjà indiquer votre présence, proposer des sujets à aborder ou poser vos questions sur [ce pad](https://apps.ti-nuage.fr/pad/p/2023-03-reunion-mensuelle).
|
||||||
26
content/blog/2023/12_janvier.md
Normal file
26
content/blog/2023/12_janvier.md
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
---
|
||||||
|
title: Le billet de janvier
|
||||||
|
date: 2023-01-12
|
||||||
|
author: David Soulayrol
|
||||||
|
---
|
||||||
|
|
||||||
|
Nous notons qu'une conférence au Carré Magique ce mois-ci devrait intéresser les personnes sensibles aux coûts énergétique et écologique du numérique. Pour le reste, manifestations publiques et considération matérielles nous occupent beaucoup en ce début d'année.
|
||||||
|
|
||||||
|
## Conférence au Carré Magique
|
||||||
|
|
||||||
|
Dans le cadre des conférences organisées par le groupe *Rencontres*, M. Marc Collin (informaticien, enseignant à Rennes, membre du collectif *GreenIT*) intervient ce mercredi **25 janvier** au Carré Magique, à Lannion, pour discuter de sobriété numérique.
|
||||||
|
|
||||||
|
> L'univers numérique dans lequel nous vivons a un impact environnemental non négligeable : le numérique émet désormais plus de CO² que le transport aérien dans le monde, et pour chaque Français, ce sont 6% de la consommation d'énergie primaire, et 4% des gaz à effet de serre émis. Et ces chiffres augmentent très rapidement avec les nouvelles applications, les objets connectés, etc... Il est donc important d'analyser à quel niveau se situent ces impacts : utilisateurs / réseaux / centres de données, de façon à pouvoir agir plus efficacement pour aller vers des systèmes plus vertueux et plus sobres !
|
||||||
|
>
|
||||||
|
> Des groupes de recherche travaillent sur ce sujet, mais c'est aussi notre affaire, à chacun d'entre nous , consommateurs, voire surconsommateurs de technologies numériques…
|
||||||
|
|
||||||
|
Les renseignements pratiques sont disponibles sur le site du [Carré
|
||||||
|
Magique](https://www.carre-magique.com/spectacles/vers-la-sobriete-numerique).
|
||||||
|
|
||||||
|
## Réunions de l'association
|
||||||
|
|
||||||
|
Le compte-rendu de notre dernière réunion, ce jeudi 12 janvier, est [disponible ici](/cr/2023/cr-20230112.pdf). Il y est en particulier question de l'installation de notre matériel à Vieux-Marché et des nombreuses rencontres publiques de **Ti Nuage** dans les mois à venir.
|
||||||
|
|
||||||
|
Notez en particulier la manifestation *Faites du Numérique* **le 11 mars prochain à Plougrescant**. Cet événement voit le jour grâce à la distinction du projet dans le cadre l'appel *Construire le numérique en Côte d'Armor*, lequel a aussi récompensé notre association. Elle lieu dans la salle polyvalente Michel le Saint et son objet est de permettre aux visiteurs de découvrir différents usages et implications du numérique, en dehors des écrans.
|
||||||
|
|
||||||
|
Notre prochaine réunion aura lieu le **2 février** à la Hutte, comme il se doit. Vous pouvez d'ores et déjà indiquer votre présence, proposer des sujets à aborder ou poser vos questions sur [ce pad](https://apps.ti-nuage.fr/pad/p/2023-02-reunion-mensuelle).
|
||||||
5
content/calendrier.html
Normal file
5
content/calendrier.html
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
layout: calendar.njk
|
||||||
|
permalink: false
|
||||||
|
title: Événements à venir
|
||||||
|
---
|
||||||
@@ -103,9 +103,11 @@ Ti Nuage ne revendique aucun droit sur vos données, ni ne les utilise autrement
|
|||||||
|
|
||||||
Sauf mention contraire, tous les contenus des sites de Ti Nuage, hors les données des adhérents ou des utilisateurs anonymes, appartiennent à l'association.
|
Sauf mention contraire, tous les contenus des sites de Ti Nuage, hors les données des adhérents ou des utilisateurs anonymes, appartiennent à l'association.
|
||||||
|
|
||||||
## Résiliation et suppression
|
## Migration, résiliation et suppression
|
||||||
|
|
||||||
Vous pouvez à tout moment demander la suppression de vos comptes et des données associées. Ti Nuage s’engage à répondre à la demande en tenant compte des limites possibles des services utilisés.
|
Vous pouvez à tout moment exporter vos données via les fonctions disponibles sur le logiciel fournissant chaque service. En cas de problème, vous pouvez contacter support@ti-nuage.fr pour obtenir de l'aide.
|
||||||
|
|
||||||
|
Vous pouvez à tout moment demander la suppression de vos comptes et des données associées. Ti Nuage s’engage à répondre à la demande dans un délai raisonnable en tenant compte des limites possibles des services utilisés.
|
||||||
|
|
||||||
Ti Nuage a le droit de suspendre ou de résilier les comptes que vous avez ouvert sur un service et de refuser toute utilisation actuelle ou future à ce service. Cette résiliation entraînera la désactivation de l’accès à votre compte, et dans la mesure du possible la restitution de l'ensemble de vos contenus. Ti Nuage n’a aucune obligation de résultat quant à la restitution de vos données.
|
Ti Nuage a le droit de suspendre ou de résilier les comptes que vous avez ouvert sur un service et de refuser toute utilisation actuelle ou future à ce service. Cette résiliation entraînera la désactivation de l’accès à votre compte, et dans la mesure du possible la restitution de l'ensemble de vos contenus. Ti Nuage n’a aucune obligation de résultat quant à la restitution de vos données.
|
||||||
|
|
||||||
|
|||||||
114
content/cr/2022/cr-20221201.mm
Normal file
114
content/cr/2022/cr-20221201.mm
Normal file
@@ -0,0 +1,114 @@
|
|||||||
|
.ND 01/12/2022
|
||||||
|
.TL
|
||||||
|
Compte-rendu de Réunion
|
||||||
|
.br
|
||||||
|
Jeudi 1er décembre 2022 à Vieux-Marché
|
||||||
|
.AU "David, Mathias"
|
||||||
|
.AST "Résumé"
|
||||||
|
.AS
|
||||||
|
L'ordre du jour est assez copieux ce jeudi.
|
||||||
|
Mais l'essentiel de l'actualité, ce sont les résultats de l'Appel à projets numériques du département pour lequel
|
||||||
|
.B "Ti Nuage"
|
||||||
|
a été distingué.
|
||||||
|
Tout comme l'a été la proposition de Plougrescant d'organiser une manifestation sur les différents aspects du numérique dans notre quotidien.
|
||||||
|
Manifestation soutenue par Grégoire qui était parmi nous pour la première fois.
|
||||||
|
.AE
|
||||||
|
.MT 4
|
||||||
|
.hl
|
||||||
|
.PRESENT "Charlotte, David, Grégoire, Mathias, Nourdine, Vincent"
|
||||||
|
.HU "Compte-rendu de la cérémonie du CD22 du 25 novembre"
|
||||||
|
Le 25 novembre a eu lieu la remise des prix
|
||||||
|
.I "Appel du Numérique"
|
||||||
|
du CD22.
|
||||||
|
David et Nourdine étaient sur place et se sont vus remettre au nom de
|
||||||
|
.B "Ti Nuage"
|
||||||
|
un prix de 5000€.
|
||||||
|
Cette matinée a été l'occasion de rencontrer des acteurs institutionnels et d'autres de terrain.
|
||||||
|
Tous ces acteurs sont, du fait de leur distinction au terme de cet appel, membres du réseau
|
||||||
|
.I "Construire le numérique en Côtes d’Armor" ,
|
||||||
|
initié par le département.
|
||||||
|
Ils doivent figurer sur un annuaire spécifique et seront probablement sollicités pour des rencontres à l'avenir.
|
||||||
|
.P
|
||||||
|
L'association peut donc acheter du matériel et sera remboursée plus tard, à concurrence de 5000€. Cela pose la question de l'avance, et donc les rencontres avec d'autres acteurs doivent continuer.
|
||||||
|
.P
|
||||||
|
À cette occasion, l'association a bénéficié de plusieurs citations dans la presse.
|
||||||
|
Nous avons relevé les articles de Ouest France et du Trégor ; si vous en avez d'autres, n'hésitez pas à nous les envoyer.
|
||||||
|
Nous allons trouver le moyen de les mettre en valeur.
|
||||||
|
.HU "Journée du numérique à Plougrescant le 11 mars 2023"
|
||||||
|
Grégoire, adhérent à
|
||||||
|
.B "Ti Nuage"
|
||||||
|
et élu à Plougrescant, organise sur cette commune une journée du numérique ainsi que déjà relaté dans le compte-rendu du mois de septembre\*F
|
||||||
|
.FS
|
||||||
|
.URL "https://ti-nuage.fr/cr/2022/cr-20220901.pdf"
|
||||||
|
.FE
|
||||||
|
\&.
|
||||||
|
Il nous donne un peu plus de détails ce soir :
|
||||||
|
.BL
|
||||||
|
.LI
|
||||||
|
la date retenue est finalement le samedi 11 mars 2023, et cette première édition devrait se tenir sur une après-midi (de 13h30 à 18h30) ;
|
||||||
|
.LI
|
||||||
|
sont d'ores et déjà prévus des stands présentant du prototypage rapide, des démonstrations de réalité virtuelle (solution de VR de la BCA), des mini-ateliers autour de la MAO ou de la photo numérique ; parmi les invités se trouvent un thésard en sciences sociales qui présentera son travail autour d'un robot Pepper, ou le Fablab de Lannion (qui est partout).
|
||||||
|
.LE
|
||||||
|
.P
|
||||||
|
Proposition est faite à
|
||||||
|
.B "Ti Nuage"
|
||||||
|
de participer à l'événement pour parler de
|
||||||
|
.I "cloud souverain" ,
|
||||||
|
des dangers relatifs aux services numériques et de ses activités.
|
||||||
|
Il ne s'agit pas de préparer une intervention élaborée mais plutôt de tenir un stand et d'inviter les visiteurs à la discussion.
|
||||||
|
Plusieurs membres de l'association seront présents.
|
||||||
|
.P
|
||||||
|
Une réunion le 5 janvier prochain à Plougrescant avec les acteurs invités permettra de mieux définir cette journée..
|
||||||
|
.HU "Éducation au numérique"
|
||||||
|
Nourdine a rencontré des membres de l'équipe administrative du collège de Plouaret et il apparaît que ce dernier est en demande d'interventions autour de l'éducation au numérique auprès des élèves.
|
||||||
|
L'association répondra volontiers à cette demande, mais cela nécessite d'identifier les membres désireux de participer à de telles rencontres.
|
||||||
|
Les présents ce soir soulignent qu'ils auront besoin de connaître davantage la forme et le contenu souhaités par l'établissement, et qu'il faudra prendre le temps d'écrire un support de présentation correct et de s’entraîner au difficile exercice de l'intervention dans le milieu scolaire.
|
||||||
|
.P
|
||||||
|
Dans une forme similaire, l'inter-communalité nous demande de proposer quelque chose pour la
|
||||||
|
.I "Quinzaine de la parentalité" .
|
||||||
|
La question n'a pas beaucoup été débattue de soir, mais il faudra y revenir de manière plus pressante bientôt.
|
||||||
|
.HU "Retour sur la dernière Assemblée Générale"
|
||||||
|
Nourdine s'occupe activement de mettre l'association en conformité avec les administrations.
|
||||||
|
.BL
|
||||||
|
.LI
|
||||||
|
Les statuts et le procès-verbal de l'Assemblée Générale ont été signés ce soir ;
|
||||||
|
.LI
|
||||||
|
Le nouveau trésorier doit être inscrit à la banque.
|
||||||
|
.LE
|
||||||
|
.P
|
||||||
|
D'autres actions sont en cours suite à cette même Assemblée Générale :
|
||||||
|
.BL
|
||||||
|
.LI
|
||||||
|
Nourdine devrait contacter bientôt Roxane, qui a une activité de recherche de subventions pour des structures comme la notre ;
|
||||||
|
.LI
|
||||||
|
Julie, puis David se sont adressés à mesdames Mion et Furic de Lannion Trégor Communauté, mais nous n'avons pas encore obtenu de rendez-vous ;
|
||||||
|
.LI
|
||||||
|
Julie est prête à contacter le Pezh ou l'ADESS pour
|
||||||
|
.B "Ti Nuage" ,
|
||||||
|
afin de profiter de leur réseau et peut-être pour nous aider à rencontrer du monde afin de trouver un administrateur supplémentaire.
|
||||||
|
.LI
|
||||||
|
La question de modifier les statuts pour protéger l’association de toute prise de pouvoir intempestive est remise à plus tard, personne ne voyant pour le moment d'urgence à traiter ce point.
|
||||||
|
.LE
|
||||||
|
.HU "Une solution d'hébergement simplifié"
|
||||||
|
Gilles proposait le mois précédent\*F
|
||||||
|
.FS
|
||||||
|
.URL https://www.ti-nuage.fr/cr/2022/cr-20221103.pdf
|
||||||
|
.FE
|
||||||
|
de créer une solution simple pour l'hébergement de vitrines d'associations.
|
||||||
|
L'idée a séduit jusqu'au président.
|
||||||
|
Il s'agit maintenant d'identifier une solution, d'écrire une documentation et de réaliser des tests.
|
||||||
|
Le projet nécessite qu'une personne s'avance pour le mener au bout.
|
||||||
|
.HU "Le point sur les CHATONS"
|
||||||
|
La période d'audit s'est achevée le 15 novembre.
|
||||||
|
La période de vote pour l'admission des candidats a commencé le 1er décembre et court jusqu'au 20.
|
||||||
|
Au moment de la rédaction de ce compte-rendu nous n'avons que des retours positifs, aussi devrions-nous faire officiellement partie du collectif à la fin de l'année.
|
||||||
|
.HU "Questions techniques"
|
||||||
|
En marge de la réunion, Nourdine a continué à assister Charlotte, en particulier pour la prise en main d'un outil de forum, et pour la gestion des listes de courriel.
|
||||||
|
Nous vous rappelons que ces permanences mensuelles servent également à cela ; vous aider dans vos usages, répondre à vos questions ou essayer de résoudre vos problèmes.
|
||||||
|
.P
|
||||||
|
Nourdine explique aussi que le message de rappel de cotisation est aujourd'hui celui qui est configuré dans l'outil de gestion des adhérents (Dolibarr).
|
||||||
|
Il est assez impersonnel, et il est envoyé 10 jours avant la fin d'adhésion, le jour même, et encore 5 jours après.
|
||||||
|
Ce mécanisme ignore le fait que plusieurs comptes peuvent être liés à une seule structure, et en outre ces messages sont tous émis en copie vers les membres du bureau.
|
||||||
|
Il serait sympathique de proposer quelque chose d'un peu moins lourd et répétitif.
|
||||||
|
Il est décidé de réduire cet envoi automatique à la seule date d'expiration de l'adhésion, puis de traiter les relances de manière manuelle et plus personnalisée.
|
||||||
|
Il reste à voir comment cela va se mettre en place, et qui prend en charge le suivi de ces relances.
|
||||||
96
content/cr/2023/cr-20230112.mm
Normal file
96
content/cr/2023/cr-20230112.mm
Normal file
@@ -0,0 +1,96 @@
|
|||||||
|
.ND 12/01/2023
|
||||||
|
.TL
|
||||||
|
Compte-rendu de Réunion
|
||||||
|
.br
|
||||||
|
Jeudi 12 janvier 2023 à Vieux-Marché
|
||||||
|
.AU "David"
|
||||||
|
.AST "Résumé"
|
||||||
|
.AS
|
||||||
|
L'ordre du jour est encore une fois conséquent pour cette première réunion (décalée) de 2023.
|
||||||
|
Pour autant, il n'y avait pas grand monde pour les vœux de la nouvelle année.
|
||||||
|
Ce compte-rendu est donc une session de rattrapage pour toutes les bonnes volontés ; nous avons beaucoup d'actions à mener dans les mois à venir.
|
||||||
|
.AE
|
||||||
|
.MT 4
|
||||||
|
.hl
|
||||||
|
.PRESENT "David, Nourdine"
|
||||||
|
.HU "CHATONS"
|
||||||
|
Il n'y avait guère de suspense, mais cela fait tout de même extrêmement plaisir :
|
||||||
|
.B "Ti Nuage"
|
||||||
|
fait maintenant partie des CHATONS.\*F
|
||||||
|
.FS
|
||||||
|
Le Collectif des Hébergeurs Alternatifs, Transparents, Neutres et Solidaires\ :
|
||||||
|
.URL https://www.chatons.org
|
||||||
|
.FE
|
||||||
|
Le site a déjà été modifié pour signifier que nous ne sommes plus seulement candidats, et Nourdine et David devraient assister à une réunion de bienvenue le 23 janvier.
|
||||||
|
.HU "Faites du numérique à Plougrescant le 11 mars 2023"
|
||||||
|
Cette manifestation, proposée par Grégoire (adhérent à
|
||||||
|
.B "Ti Nuage"
|
||||||
|
et élu à Plougrescant), a déjà été présentée dans le compte-rendu du mois dernier.\*F
|
||||||
|
.FS
|
||||||
|
.URL "https://ti-nuage.fr/cr/2022/cr-20221201.pdf"
|
||||||
|
.FE
|
||||||
|
David et Mathias ont depuis participé à une réunion permettant de mieux la définir.
|
||||||
|
Devraient être présents le Fab-Lab de Lannion, l'association
|
||||||
|
.B "Promouvoir et Agir en Trégor Gouelo"
|
||||||
|
(PATG), des représentants du département et de Plougrescant et quelques autres encore.
|
||||||
|
Sont envisagés des ateliers ou des rencontres autour du smartphone, de la photographie numérique, de la musique assistée par ordinateur (MAO), de la réalité virtuelle (RV ou VR pour faire bien), des machines de prototypage rapide, la présence d'un robot Pepper (ou Nao), etc.
|
||||||
|
.P
|
||||||
|
.B "Ti Nuage"
|
||||||
|
sera présent en particulier pour discuter de la notion de
|
||||||
|
.I "cloud souverain" .
|
||||||
|
Nous envisageons pour cette occasion d'apporter l'Expo Libre\*F
|
||||||
|
.FS
|
||||||
|
.URL "https://expolibre.org"
|
||||||
|
.FE
|
||||||
|
que nous possédons sous la forme de panneaux au format A3 (mais peut-être le Fab-Lab pourra-t-il nous prêter ses propres impressions en grand format).
|
||||||
|
Nous devons contacter les associations dont nous sommes proches (April, FramaSoft, ...) pour disposer de quelques flyers et autocollants.
|
||||||
|
Nous présenterons évidemment nos services, et discuterons plus généralement des questions relatives à notre domaine de compétence ; la notion de vie privée, l'usage des données, les coûts énergétiques du numérique.
|
||||||
|
.P
|
||||||
|
Nous envisageons aussi de proposer de manière informelle une sorte de quizz pour ouvrir la discussion sur les logiciels alternatifs et libres.
|
||||||
|
David doit préparer le support, mais toutes les bonnes volontés sont les bienvenues pour apporter du contenu ; quels sont les logiciels que vous utilisez, dans quels domaine d'activité, et quels logiciels privateurs remplacent-ils ?
|
||||||
|
.P
|
||||||
|
Enfin, nous réfléchissons aussi à la manière de montrer au public de manière claire ce que sont les conditions d'utilisation des services les plus utilisés (Instagram, Snapchat, ce genre de choses).
|
||||||
|
Nourdine va commencer à travailler sur l'assemblage de ces documents. Il aura aussi très probablement besoin d'aide pour ne pas finir asphyxié sous les masses de documents !
|
||||||
|
.HU "Éducation au numérique"
|
||||||
|
Nourdine doit recontacter l'équipe administrative du collège de Plouaret pour mieux définir ce qu'ils souhaitent pouvoir proposer aux élèves.
|
||||||
|
Les documents déjà à l'étude ou en cours de rédaction pour la manifestation à Plougrescant devraient pouvoir être ré-employés pour cela.
|
||||||
|
.HU "Quinzaine de la parentalité"
|
||||||
|
Il ne semble plus y avoir d'activité du côté des organisateurs.
|
||||||
|
Nous nous concentrons sur nos autres projets, et nous attendons d'être sollicités plus clairement si quelque chose doit finalement se produire.
|
||||||
|
.HU "Connexion et serveurs à Vieux-Marché"
|
||||||
|
La fibre est disponible à Vieux-Marché comme attendu.
|
||||||
|
Tandis que certains étaient à Plougrescant, Nourdine faisait le point avec
|
||||||
|
.B "Les castors perchés"
|
||||||
|
pour définir les modalités de notre installation et du partage de la connexion.
|
||||||
|
Il a été décidé que la gestion et les frais de la connexion étaient laissés entièrement aux soins de
|
||||||
|
.B "Ti Nuage" ,
|
||||||
|
qui la partagerait avec la Hutte.
|
||||||
|
En contrepartie, nos serveurs seront hébergés gracieusement, et seule la consommation électrique nous sera facturée.
|
||||||
|
.P
|
||||||
|
Nourdine a étudié la disponibilité de la fibre selon les opérateurs, ainsi que les tarifs et les propositions techniques de ceux-ci.
|
||||||
|
Pour des questions d'éthique, d'indépendance et de facilités techniques, nous penchons à terme vers une offre telle que celle de la FDN.\*F
|
||||||
|
.FS
|
||||||
|
French Data Network\ :
|
||||||
|
.URL "https://www.fdn.fr"
|
||||||
|
.FE
|
||||||
|
Cependant, une exclusivité pour Orange et Free existe pour une période indéterminée sur les installations dans le secteur.
|
||||||
|
Free présente l'avantage de fournir assez clairement toutes les solutions techniques pour nos besoins.
|
||||||
|
Nous envisageons donc d'opter pour l'offre d'engagement sur un an de cet opérateur, à un tarif avantageux, et de refaire une étude d'ici la fin de l'année.
|
||||||
|
.P
|
||||||
|
Dans le même temps, et afin de nous assurer que la solution d'hébergement à la Hutte est viable, Nourdine et David ont profité de la réunion pour mesurer précisémment le local envisagé, et doivent maintenant passer en revue les formats de baie et de serveurs existants.
|
||||||
|
Ceci permettra aussi d'avancer dans le choix du matériel et de consolider le coût de la migration des services et des données.
|
||||||
|
.HU "Subventions"
|
||||||
|
Suite à nos discussions lors de la dernière réunion, Grégoire a avancé notre nom au sein des instances de Lannion-Trégor-Communauté et nous devrions être contactés bientôt afin de mieux nous présenter et de nous diriger vers le bon guichet pour demander des aides.
|
||||||
|
.P
|
||||||
|
Par ailleurs, Nourdine a contacté Roxane Caillon comme nous l'avions décidé, afin qu'elle prenne en charge notre recherche de subventions.
|
||||||
|
Pour mémoire, elle propose la recherche d'aides institutionnelles ou autres ainsi que leur suivi.
|
||||||
|
Elle se rémunère sur les aides obtenues.
|
||||||
|
Un dossier pour le Crédit Coopératif est déjà en cours de réalisation.
|
||||||
|
.HU "Miscellanées"
|
||||||
|
L'association devrait prochainement faire un communiqué afin de faire connaître son appartenance aux CHATONS. David suggère que ce comuniqué soit retardé à la fin du mois de février afin de pouvoir y inclure des détails sur l'arrivée de la fibre et notre migration de données, ainsi que pour annoncer dans un temps approprié notre participation à l'événement de Plougrescant.
|
||||||
|
.P
|
||||||
|
Nourdine a installé un nouveau logiciel client de courriel au sein de
|
||||||
|
.B "Next Cloud" .
|
||||||
|
Cette proposition est pour le moment complémentaire au logiciel
|
||||||
|
.B "Roundcube"
|
||||||
|
déjà disponibe dans le SSO, et le Wiki a été mis à jour pour décrire l'étape de configuration nécessaire pour l'utiliser.
|
||||||
118
content/cr/2023/cr-20230202.mm
Normal file
118
content/cr/2023/cr-20230202.mm
Normal file
@@ -0,0 +1,118 @@
|
|||||||
|
.ND 02/02/2023
|
||||||
|
.TL
|
||||||
|
Compte-rendu de Réunion
|
||||||
|
.br
|
||||||
|
Jeudi 2 février 2023 à Vieux-Marché
|
||||||
|
.AU "David"
|
||||||
|
.AST "Résumé"
|
||||||
|
.AS
|
||||||
|
L'ordre du jour assez consistant a finalement été parcouru assez rapidement, toutes les opérations suivant naturellement leur cours ; la fibre est installée à la Hutte et la recherche de matériel se précise ; tout comme notre participation à la manifestion autour du Numérique à Plougrescant le mois prochain.
|
||||||
|
.AE
|
||||||
|
.MT 4
|
||||||
|
.hl
|
||||||
|
.PRESENT "David, Nourdine, Isa"
|
||||||
|
.HU "Analyse de problèmes de couriel"
|
||||||
|
Isa s'est présentée avec une foule de questions pour la Convergence des Loutres\*F
|
||||||
|
.FS
|
||||||
|
.URL "https://www.laconvergencedesloutres.fr"
|
||||||
|
.FE
|
||||||
|
et notre rendez-vous mensuel a donc débuté avec une revue de détail des problèmes de courriel.
|
||||||
|
La réponse magique à nombre de questions a été « il faut essayer Thunderbird\*F
|
||||||
|
.FS
|
||||||
|
.URL "https://www.thunderbird.net/fr/"
|
||||||
|
.FE
|
||||||
|
», et il est utile de rappeler ici que les logiciels de courriel disponibles sur une interface Web (couramment appelés
|
||||||
|
.I "Webmail" )
|
||||||
|
sont
|
||||||
|
.I "fragiles"
|
||||||
|
comme toute application Web.
|
||||||
|
Si la page est rechargée, si elle est restée trop longtemps ouverte et inactive, si un bouton de navgation du navigateur a été utilisé, et dans d'autres cas encore, l'application peut se comporter de manière inappropriée.
|
||||||
|
.P
|
||||||
|
L'utilisation d'un
|
||||||
|
.I "logiciel natif"
|
||||||
|
(c'est à dire un logiciel qui doit être installé sur votre ordinateur) est préférable lorsque l'utilisation du courriel devient fréquente, et que la taille et la complexité des messages augmente.
|
||||||
|
Si vous ne l'avez déjà fait, nous vous conseillons donc d'essayer Thunderbird, et le Wiki contient les informations utiles à sa configuration.\*F
|
||||||
|
.FS
|
||||||
|
.URL "https://wiki.ti-nuage.fr/fr/Services/Communication/Courriel"
|
||||||
|
.FE
|
||||||
|
.P
|
||||||
|
Nourdine a toutefois noté quelques détails à vérifier ; n'hésitez pas à nous écrire si la solution vous séduit mais que vous rencontrez des problèmes.
|
||||||
|
.HU "Faites du numérique à Plougrescant"
|
||||||
|
Nous avons reçu une proposition de plan de salle, et l'affiche est en cours de finition.
|
||||||
|
.P
|
||||||
|
Petit passage en revue des actions à mener pour la manifestation qui doit se tenir le 11 mars prochain :
|
||||||
|
.BL
|
||||||
|
.LI
|
||||||
|
David doit encore prendre contact avec le FabLab pour déterminer s'ils possèdent une impression grand format de l'Expo Libre,\*F
|
||||||
|
.FS
|
||||||
|
.URL "https://expolibre.org"
|
||||||
|
.FE
|
||||||
|
faute de quoi nous prendrions la notre ;
|
||||||
|
.LI
|
||||||
|
David doit inscrire notre participation à l'Agenda du Libre dans le cadre de
|
||||||
|
.I "Libre en fête" ;
|
||||||
|
.LI
|
||||||
|
David (décidemment) a entamé le support pour une présentation du logiciel libre, qui donne aussi une liste de logiciels alternatifs pour les usages courants.
|
||||||
|
Ce support pourra être utilisé pour animer les discussions informelles à Plougrescant, voire servir de guide pour faire un quizz sur les logiciels libres usuels.
|
||||||
|
Toute aide est la bienvenue pour compléter cette liste de logiciels.
|
||||||
|
.LE
|
||||||
|
.HU "Connexion et serveurs à Vieux-Marché"
|
||||||
|
Le Hutte a été raccordée à la fibre.
|
||||||
|
Comme développé dans le précédent compte-rendu,\*F
|
||||||
|
.FS
|
||||||
|
.URL "https://ti-nuage.fr/cr/2023/cr-20230112.pdf"
|
||||||
|
.FE
|
||||||
|
nous avons opté pour l'offre de Free qui possède une exclusivité pour quelques mois avec Orange.
|
||||||
|
L'accès proposé par Free répond à nos besoins et l'offre, qui s'accompagne d'une promotion, pourra être révisée en fin d'année.
|
||||||
|
.P
|
||||||
|
La prochaine étape de notre installation consiste à choisir le matériel à acquérir et à dresser un plan de migration de nos services, ce dernier influant sur les achats ainsi que sur leur échelonnement.
|
||||||
|
.HU "Avance de fonds"
|
||||||
|
La seule subvention dont nous disposons actuellement n'étant disponible que sur facture, nous avons besoin d'un prêt (ou d'autres subventions).
|
||||||
|
L'association
|
||||||
|
.B "Koolisterik"
|
||||||
|
(Vieux-Marché) est d'accord pour nous prêter de l'argent jusqu'à 5000€.
|
||||||
|
Cette offre nous permettrait de disposer d'une avance de fonds pour acheter les premiers éléments matériels de notre installation.
|
||||||
|
Prudents, Nourdine et David n'envisagent cependant pas de demander plus de 1500€ parce que les modalités et les délais de remboursement du Département ne sont pas connues.
|
||||||
|
Cette somme permettrait déjà de mettre en place une baie et une première machine.
|
||||||
|
.HU "Gestion de l'association et du budget"
|
||||||
|
À propos de budget toujours, et comme abordé dans notre dernier compte-rendu, Roxane Caillon s'occupe maintenant pleinement de la recherce de subventions pour
|
||||||
|
.B "Ti Nuage" .
|
||||||
|
Pour mémoire, elle se paie seulement en prélevant un pourcentage sur les sommes obtenues.
|
||||||
|
Le dossier pour la Fondation Crédit Coopératif est déjà terminé.
|
||||||
|
.P
|
||||||
|
En revanche, parce que la banque nous fait des difficultés, Mathias ne pourra assurer les fonctions de trésorier pour lesquelles il s'était proposé.
|
||||||
|
Ces tracasseries s'ajoutent à d'autres qui nous poussent de plus en plus à chercher un autre établissement bancaire.
|
||||||
|
.P
|
||||||
|
.P
|
||||||
|
Nourdine évalue les logiciels susceptibles de remplacer
|
||||||
|
.I "dolibarr" ,
|
||||||
|
l'outil qui sert actuellement à la fois à la gestion de l'association et à celle des adhérents.
|
||||||
|
Bien que très bien fait, il est un peu complexe pour l'usage limité que nous en avons.
|
||||||
|
.HU "Nouveaux contacts"
|
||||||
|
Les Cigales,\*F
|
||||||
|
.FS
|
||||||
|
.URL "https://www.cigales-bretagne.org"
|
||||||
|
.FE
|
||||||
|
un club d'investisseurs pour aider les association locales, s'est adressé à nous pour trouver une solution de courriels et de listes de diffusion.
|
||||||
|
Leur besoin est un peu plus complexe que les installations déjà réalisées pour les associations adhérentes à
|
||||||
|
.B "Ti Nuage" ,
|
||||||
|
et Nourdine doit discuter avec eux pour mieux cerner encore leurs besoins.
|
||||||
|
.P
|
||||||
|
Depuis cette réunion, nous avons aussi reçu des questions de la part d'un petit group de producteurs de fromage et de viande bio du Trégor. Nourdine doit les rencontrer.
|
||||||
|
.HU "Spicilège"
|
||||||
|
Nourdine et David ont participé à une réunion d'accueil pour les nouveaux CHATONS.
|
||||||
|
David s'est engagé à mettre en œuvre ce qu'il faut pour participer au système de statistiques du collectif.\*F
|
||||||
|
.FS
|
||||||
|
.URL "https://stats.chatons.org"
|
||||||
|
.FE
|
||||||
|
.P
|
||||||
|
David a commencé à intégrer le calendrier partagé de l'association sur le site.
|
||||||
|
Les événements à venir dans les trente jours apparaissent dorénavant dans la rubrique
|
||||||
|
.I "actualités"
|
||||||
|
de la page d'accueil.
|
||||||
|
Un calendrier plus complet sera bientôt disponible.
|
||||||
|
.P
|
||||||
|
Nous avons observé une occupation surprenante et importante sur le disque des fichiers déposés avec l'outil de partage
|
||||||
|
.I "Send" .
|
||||||
|
Après redémarrage du service, cet espace a été... trop bien libéré ; les fichiers normalement encore en cours de partage ont aussi disparu.
|
||||||
|
Une exploration plus complète du logiciel doit être entreprise pour comprendre son fonctionnement et prévenir tout débordement sur le disque à l'avenir.
|
||||||
8
content/donnees/calendrier.php
Normal file
8
content/donnees/calendrier.php
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
const ICS_URL = 'https://cloud.ti-nuage.fr/remote.php/dav/public-calendars/gqm9WNa9eoXGEiNc?export';
|
||||||
|
|
||||||
|
$ics = file_get_contents(ICS_URL);
|
||||||
|
echo $ics;
|
||||||
|
|
||||||
|
?>
|
||||||
@@ -10,21 +10,21 @@ title: L'hébergeur associatif, transparent et solidaire
|
|||||||
<section class="Explanation">
|
<section class="Explanation">
|
||||||
<h2 class="tac mb64">Ti Nuage ?</h2>
|
<h2 class="tac mb64">Ti Nuage ?</h2>
|
||||||
<p>L'association Ti Nuage offre une alternative locale aux <abbr title="Google, Apple, Facebook, Amazon, Microsoft, etc.">GAFAM</abbr> pour les associations, les petites entreprises et les particuliers de la région du Trégor. L’infrastructure technique est gérée par les membres de l’association. Son objet est de promouvoir la décentralisation et l'entraide et à terme d'héberger ses données dans le Trégor.</p>
|
<p>L'association Ti Nuage offre une alternative locale aux <abbr title="Google, Apple, Facebook, Amazon, Microsoft, etc.">GAFAM</abbr> pour les associations, les petites entreprises et les particuliers de la région du Trégor. L’infrastructure technique est gérée par les membres de l’association. Son objet est de promouvoir la décentralisation et l'entraide et à terme d'héberger ses données dans le Trégor.</p>
|
||||||
<p class="mt32">L'association propose une rencontre mensuelle aux adhérents comme aux non adhérents <b>le premier jeudi de chaque mois à <a href="https://lahutte.ti-nuage.fr">La Hutte</a></b>. Ce moment est l'occasion de discuter et d'obtenir de l'aide ou des conseils sur l'usage des services proposés, ou les moyens de gérer vos données comme vous l'entendez.</p>
|
<p class="mt32">L'association propose une rencontre mensuelle aux adhérents comme aux non adhérents <b>le premier jeudi de chaque mois à 20 heures à <a href="https://lahutte.ti-nuage.fr">La Hutte</a></b>. Ce moment est l'occasion de discuter et d'obtenir de l'aide ou des conseils sur l'usage des services proposés, ou les moyens de gérer vos données comme vous l'entendez.</p>
|
||||||
<div class="mt32 Two-cols-One-row">
|
<div class="mt32 Two-cols-One-row">
|
||||||
<div class="col-1">
|
<div class="col-1">
|
||||||
<h3 class="tac">Liberté</h3>
|
<h3 class="tac">Liberté</h3>
|
||||||
<p>Nous fournissons des outils en ligne à code source ouvert qui vous permettent de garder le contrôle de vos données et de votre vie privée. Quand cela est possible, ces données sont chiffées sur le serveur (courrier, documents personnels et partagés). Nous ne transmettons ni ne vendons d'informations sur l'utilisations de nos service à qui que ce soit.</p>
|
<p>Nous fournissons des outils en ligne pour vous permettre de garder le contrôle de vos données et de votre vie privée. Votre liberté est garantie par notre usage exclusif de logiciels libres et de formats ouverts. Quand cela est possible, vos données sont chiffées sur le serveur. Nous ne transmettons ni ne vendons d'informations sur l'utilisations de nos services à qui que ce soit.</p>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-2">
|
<div class="col-2">
|
||||||
<h3 class="tac">Solidarité</h3>
|
<h3 class="tac">Solidarité</h3>
|
||||||
<p>Nous nous organisons sur la base de l'autonomie, l'aide mutuelle, le partage de ressources et la création communautaire. Chaque adhérent(e) possède une voix lorsqu'il s'agit de peser sur les activités de l'association. Que vous soyez du métier, intéressé(e) par les services proposés ou simplement curieux(se), nous vous accueillons à bras ouverts.</p>
|
<p>Nous nous organisons sur la base de l'autonomie, l'aide mutuelle, le partage de ressources et la création communautaire.. Chaque adhérent(e) possède une voix lorsqu'il s'agit de peser sur les activités de l'association. Que vous soyez du métier, intéressé(e) par les services proposés ou simplement curieux(se), nous vous accueillons à bras ouverts.</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="frame mt32">
|
<div class="frame mt32">
|
||||||
<img class="logo-chatons" src="/images/logo-tinuage-chatons.png" alt="Notre logo CHATONS"/>
|
<img class="logo-chatons" src="/images/logo-tinuage-chatons.png" alt="Notre logo CHATONS"/>
|
||||||
<p>Nous souscrivons entièrement aux valeurs décrites dans le <a href="https://www.chatons.org/manifeste">manifeste</a> des <a href="https://chatons.org">CHATONS</a>, le Collectif des Hébergeurs Alternatifs, Transparents, Neutres et Solidaires. CHATONS a été initié par l'<a href="https://framasoft.org/">association Framasoft</a> suite au succès de sa campagne <i>Dégooglisons Internet</i>. La description de ce qu'il est et ce qu'il promeut se trouve sur <a href="https://www.chatons.org/presentation">sa page de présentation.</a></p>
|
<p>Depuis le 21 décembre 2022, Ti Nuage fait partie des <a href="https://chatons.org">CHATONS</a>, le Collectif des Hébergeurs Alternatifs, Transparents, Neutres et Solidaires. CHATONS a été initié par l'<a href="https://framasoft.org/">association Framasoft</a> suite au succès de sa campagne <i>Dégooglisons Internet</i>. La description de ce qu'il est et ce qu'il promeut se trouve sur <a href="https://www.chatons.org/presentation">sa page de présentation.</a></p>
|
||||||
<p>Nous nous sommes engagés à respecter la <a href="https://www.chatons.org/charte">charte</a> du collectif et l'association Ti Nuage est candidate pour la quinzième portée du collectif.</p>
|
<p>Nous souscrivons entièrement aux valeurs décrites dans le <a href="https://www.chatons.org/manifeste">manifeste</a> et nous sommes engagés à respecter la <a href="https://www.chatons.org/charte">charte</a> du collectif.</p>
|
||||||
<p>N'hésitez pas à découvrir <a href="https://www.chatons.org/chatons/all">les autres membres</a> ; tous proposent une palette particulière de services avec un coût et des garanties différentes. L'un d'eux pourrait être davantage adapté que Ti Nuage à vos besoins.</p>
|
<p>N'hésitez pas à découvrir <a href="https://www.chatons.org/chatons/all">les autres membres</a> ; tous proposent une palette particulière de services avec un coût et des garanties différentes. L'un d'eux pourrait être davantage adapté que Ti Nuage à vos besoins.</p>
|
||||||
</div>
|
</div>
|
||||||
<div class="tac mt32">
|
<div class="tac mt32">
|
||||||
|
|||||||
153
content/js/calendar.js
Normal file
153
content/js/calendar.js
Normal file
@@ -0,0 +1,153 @@
|
|||||||
|
|
||||||
|
const http = require('http')
|
||||||
|
const ical = require('ical')
|
||||||
|
|
||||||
|
const MONTH = 30 * 24 * 60 * 60 * 1000
|
||||||
|
|
||||||
|
const Accumulator = {
|
||||||
|
|
||||||
|
init: function (pastLimit, futureLimit) {
|
||||||
|
this.entries = {}
|
||||||
|
this.futureLimit = futureLimit
|
||||||
|
this.pastLimit = pastLimit
|
||||||
|
},
|
||||||
|
|
||||||
|
add: function (time, element) {
|
||||||
|
if (!this.entries.hasOwnProperty(time)) {
|
||||||
|
this.entries[time] = []
|
||||||
|
}
|
||||||
|
this.entries[time].push(element)
|
||||||
|
},
|
||||||
|
|
||||||
|
offer: function (time, element) {
|
||||||
|
if (time >= this.pastLimit && time < this.futureLimit) {
|
||||||
|
this.add(time, element)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
offerEvent: function (event) {
|
||||||
|
const content = document.createElement('p')
|
||||||
|
const element = document.createElement('div')
|
||||||
|
const formatDate = Intl.DateTimeFormat('fr', { dateStyle: 'long', timeStyle: 'short' }).format
|
||||||
|
const header = document.createElement('h3')
|
||||||
|
|
||||||
|
content.innerHTML = event.location
|
||||||
|
header.textContent = formatDate(event.date) + ' | ' + event.summary
|
||||||
|
|
||||||
|
element.className = 'event-entry news-entry'
|
||||||
|
element.setAttribute('entry-time', event.date.getTime())
|
||||||
|
element.appendChild(header)
|
||||||
|
element.appendChild(content)
|
||||||
|
|
||||||
|
this.offer(event.date.getTime(), element)
|
||||||
|
},
|
||||||
|
|
||||||
|
iterate: function (cb) {
|
||||||
|
Object
|
||||||
|
.keys(this.entries)
|
||||||
|
.sort(function (a, b) { return a < b })
|
||||||
|
.forEach(time => { cb(time, this.entries[time]) })
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function createLoader (target) {
|
||||||
|
const message = document.createElement('p')
|
||||||
|
const spinner = document.createElement('div')
|
||||||
|
const wrapper = document.createElement('div')
|
||||||
|
|
||||||
|
wrapper.className = 'loader-wrapper'
|
||||||
|
message.innerHTML = 'Chargement du calendrier...'
|
||||||
|
|
||||||
|
wrapper.appendChild(spinner)
|
||||||
|
wrapper.appendChild(message)
|
||||||
|
|
||||||
|
target.insertBefore(wrapper, target.firstChild)
|
||||||
|
}
|
||||||
|
|
||||||
|
function loadEvents (cb) {
|
||||||
|
const events = []
|
||||||
|
|
||||||
|
http.get({
|
||||||
|
host: 'www.ti-nuage.fr',
|
||||||
|
path: '/donnees/calendrier.php'
|
||||||
|
}, function (response) {
|
||||||
|
let str = ''
|
||||||
|
|
||||||
|
response.on('data', (chunk) => {
|
||||||
|
str += chunk
|
||||||
|
})
|
||||||
|
|
||||||
|
response.on('end', () => {
|
||||||
|
/* Extract the events. */
|
||||||
|
Object.values(ical.parseICS(str)).forEach(event => {
|
||||||
|
if (event.type === 'VEVENT') {
|
||||||
|
events.push({
|
||||||
|
date: event.start,
|
||||||
|
location: event.location,
|
||||||
|
summary: event.summary
|
||||||
|
})
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
cb(events)
|
||||||
|
})
|
||||||
|
|
||||||
|
response.on('error', (e) => {
|
||||||
|
console.error(`Error on calendar response: ${e.message}`)
|
||||||
|
cb(events)
|
||||||
|
})
|
||||||
|
}).on('error', (e) => {
|
||||||
|
console.error(`Could not fetch calendar: ${e.message}`)
|
||||||
|
cb(events)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
|
||||||
|
fill: function (target) {
|
||||||
|
const now = Date.now()
|
||||||
|
const accumulator = Object.create(Accumulator)
|
||||||
|
|
||||||
|
accumulator.init(now - 1 * MONTH, now + 3 * MONTH)
|
||||||
|
createLoader(target)
|
||||||
|
|
||||||
|
loadEvents(events => {
|
||||||
|
events.forEach(event => { accumulator.offerEvent(event) })
|
||||||
|
|
||||||
|
target.innerHTML = ''
|
||||||
|
|
||||||
|
accumulator.iterate((time, elements) => {
|
||||||
|
elements.forEach(e => {
|
||||||
|
if (time < now) {
|
||||||
|
e.className = e.className + ' event-elapsed'
|
||||||
|
}
|
||||||
|
target.appendChild(e)
|
||||||
|
})
|
||||||
|
})
|
||||||
|
})
|
||||||
|
},
|
||||||
|
|
||||||
|
mergeWithNews: function (target) {
|
||||||
|
const now = Date.now()
|
||||||
|
const accumulator = Object.create(Accumulator)
|
||||||
|
const blogElements = target.getElementsByClassName('blog-entry')
|
||||||
|
|
||||||
|
accumulator.init(now, now + 1 * MONTH)
|
||||||
|
createLoader(target)
|
||||||
|
|
||||||
|
for (let i = 0; i < blogElements.length; ++i) {
|
||||||
|
const item = blogElements.item(i)
|
||||||
|
accumulator.add(item.getAttribute('entry-time'), item)
|
||||||
|
}
|
||||||
|
|
||||||
|
loadEvents(events => {
|
||||||
|
events.forEach(event => { accumulator.offerEvent(event) })
|
||||||
|
|
||||||
|
target.innerHTML = ''
|
||||||
|
|
||||||
|
accumulator.iterate((time, elements) => {
|
||||||
|
elements.forEach(e => { target.appendChild(e) })
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -4,7 +4,7 @@
|
|||||||
<h1 class="mt128">{{ title }}</h1>
|
<h1 class="mt128">{{ title }}</h1>
|
||||||
{% if date %}
|
{% if date %}
|
||||||
<div class="meta-published">
|
<div class="meta-published">
|
||||||
Publié le : {{ moment(date).format('LL') }}
|
Publié le : {{ date_format(date) }}
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
|
|||||||
@@ -17,15 +17,16 @@
|
|||||||
<nav class="Container three-cols">
|
<nav class="Container three-cols">
|
||||||
<section>
|
<section>
|
||||||
<h2>Association</h2>
|
<h2>Association</h2>
|
||||||
<ul>
|
<ul id="menu-association">
|
||||||
<li><a href="/association.html">Découvrir l'association</a></li>
|
<li><a href="/association.html">Découvrir l'association</a></li>
|
||||||
<li><a href="/blog">Actualités</a></li>
|
<li><a href="/blog">Actualités</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</section>
|
</section>
|
||||||
<section>
|
<section>
|
||||||
<h2>Documentation</h2>
|
<h2>Documents</h2>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a class="external" href="https://wiki.ti-nuage.fr">Wiki</a></li>
|
<li><a class="external" href="https://wiki.ti-nuage.fr">Wiki</a></li>
|
||||||
|
<li><a class="external" href="https://video.tedomum.net/a/tinunu/video-channels">Chaînes Vidéos</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</section>
|
</section>
|
||||||
<section>
|
<section>
|
||||||
@@ -44,7 +45,7 @@
|
|||||||
|
|
||||||
<footer class="footer mt128">
|
<footer class="footer mt128">
|
||||||
<div class="Container">
|
<div class="Container">
|
||||||
<p class="tad">Page générée le {{ moment(article.date).format('LL') }}.</p>
|
<p class="tad">Page générée le {{ date_format(article.date) }}.</p>
|
||||||
<hr>
|
<hr>
|
||||||
<p class="tac">
|
<p class="tac">
|
||||||
<a href="/"><img class="logo-small" src="/images/logo.svg" alt=""></a>
|
<a href="/"><img class="logo-small" src="/images/logo.svg" alt=""></a>
|
||||||
@@ -54,5 +55,16 @@
|
|||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</footer>
|
</footer>
|
||||||
|
|
||||||
|
<script type='text/javascript'>
|
||||||
|
const menu = document.getElementById('menu-association')
|
||||||
|
const entry = document.createElement('li')
|
||||||
|
const link = document.createElement('a')
|
||||||
|
|
||||||
|
link.href = '/calendrier.html'
|
||||||
|
link.textContent = 'Calendrier'
|
||||||
|
entry.appendChild(link)
|
||||||
|
menu.appendChild(entry)
|
||||||
|
</script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
{% block header %}{{ header | safe }}{% endblock %}
|
{% block header %}{{ header | safe }}{% endblock %}
|
||||||
<article>
|
<article>
|
||||||
{% for article in collections["archives"] %}
|
{% for article in collections["archives"] %}
|
||||||
<h2><a href="/{{ article.path }}">{{ moment(article.date).format('LL') }} | {{ article.title }}</a></h2>
|
<h2><a href="/{{ article.path }}">{{ date_format(article.date) }} | {{ article.title }}</a></h2>
|
||||||
{{ article.excerpt | safe }}
|
{{ article.excerpt | safe }}
|
||||||
<p><a href="/{{ article.path }}">Lire la suite...</a></p>
|
<p><a href="/{{ article.path }}">Lire la suite...</a></p>
|
||||||
{% else %}
|
{% else %}
|
||||||
|
|||||||
19
layouts/calendar.njk
Normal file
19
layouts/calendar.njk
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
{% extends "base.njk" %}
|
||||||
|
|
||||||
|
{% block head %}
|
||||||
|
<script type='text/javascript' src="/js/calendar.js"></script>
|
||||||
|
{% endblock %}
|
||||||
|
|
||||||
|
{% block article %}
|
||||||
|
<h1 class="mt128">Calendrier</h1>
|
||||||
|
<div id="calendar" />
|
||||||
|
<noscript>
|
||||||
|
Le téléchargement des données du calendrier requiert JavaScript.
|
||||||
|
</noscript>
|
||||||
|
<script type='text/javascript'>
|
||||||
|
window.onload = function(event) {
|
||||||
|
Calendar.fill(document.getElementById('calendar'))
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
{% endblock %}
|
||||||
@@ -1,5 +1,9 @@
|
|||||||
{% extends "base.njk" %}
|
{% extends "base.njk" %}
|
||||||
|
|
||||||
|
{% block head %}
|
||||||
|
<script type='text/javascript' src="/js/calendar.js"></script>
|
||||||
|
{% endblock %}
|
||||||
|
|
||||||
{% block article %}
|
{% block article %}
|
||||||
{% block header %}{{ header | safe }}{% endblock %}
|
{% block header %}{{ header | safe }}{% endblock %}
|
||||||
<article>
|
<article>
|
||||||
@@ -7,15 +11,26 @@
|
|||||||
|
|
||||||
<section class="Services">
|
<section class="Services">
|
||||||
<h2 class="tac mt128 mb64">Actualités</h2>
|
<h2 class="tac mt128 mb64">Actualités</h2>
|
||||||
{% for article in collections["news"] %}
|
<div id="calendar">
|
||||||
<h3><a href="{{ article.path }}">{{ moment(article.date).format('LL') }} | {{article.title }}</a></h3>
|
{% for article in collections["news"] %}
|
||||||
{{ article.excerpt | safe }}
|
<div class="blog-entry news-entry" entry-time="{{article.date.getTime()}}">
|
||||||
<p><a href="{{ article.path }}">Lire la suite...</a></p>
|
<h3><a href="{{ article.path }}">{{ date_format(article.date) }} | {{article.title }}</a></h3>
|
||||||
{% else %}
|
{{ article.excerpt | safe }}
|
||||||
{% endfor %}
|
<p><a href="{{ article.path }}">Lire la suite...</a></p>
|
||||||
|
</div>
|
||||||
|
{% else %}
|
||||||
|
{% endfor %}
|
||||||
|
</div>
|
||||||
<div class="tac mt32">
|
<div class="tac mt32">
|
||||||
<a class="button" href="/blog">Voir les archives</a>
|
<a class="button" href="/blog">Voir les archives</a>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
</article>
|
</article>
|
||||||
|
|
||||||
|
<script type='text/javascript'>
|
||||||
|
window.onload = function(event) {
|
||||||
|
Calendar.mergeWithNews(document.getElementById('calendar'))
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|||||||
2961
package-lock.json
generated
2961
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@@ -11,14 +11,16 @@
|
|||||||
"clean": "rimraf dist",
|
"clean": "rimraf dist",
|
||||||
"dev": "npm run build && nodemon scripts/run.js serve",
|
"dev": "npm run build && nodemon scripts/run.js serve",
|
||||||
"server": "npm run build && http-server dist",
|
"server": "npm run build && http-server dist",
|
||||||
"deploy": "npm run build:prod && cd dist && rsync -v -rlptz --relative -e \"ssh -p $SERVER_PORT\" * $SERVER_PATH",
|
"deploy": "npm run build:prod && cd dist && rsync -v -rlptz --relative -e \"ssh -p $SERVER_PORT\" ./ $SERVER_PATH",
|
||||||
"lint": "npm run lint:js && npm run lint:css",
|
"lint": "npm run lint:js && npm run lint:css",
|
||||||
"lint:js": "eslint scripts",
|
"lint:js": "eslint scripts",
|
||||||
"lint:css": "stylelint assets/**/*.css",
|
"lint:css": "stylelint assets/**/*.css",
|
||||||
"test": "npm run lint && npm run build"
|
"test": "npm run lint && npm run build"
|
||||||
},
|
},
|
||||||
"author": "Ti Nuage <contact@ti-nuage.fr>",
|
"author": "Ti Nuage <contact@ti-nuage.fr>",
|
||||||
"dependencies": {},
|
"dependencies": {
|
||||||
|
"ical": "^0.8.0"
|
||||||
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@metalsmith/collections": "^1.2.1",
|
"@metalsmith/collections": "^1.2.1",
|
||||||
"@metalsmith/excerpts": "^1.5.1",
|
"@metalsmith/excerpts": "^1.5.1",
|
||||||
@@ -41,11 +43,11 @@
|
|||||||
"jstransformer-nunjucks": "^1.0.0",
|
"jstransformer-nunjucks": "^1.0.0",
|
||||||
"metalsmith": "^2.4.0",
|
"metalsmith": "^2.4.0",
|
||||||
"metalsmith-assets": "^0.1.0",
|
"metalsmith-assets": "^0.1.0",
|
||||||
|
"metalsmith-browserify": "^1.1.0",
|
||||||
"metalsmith-clean-css": "^6.1.3",
|
"metalsmith-clean-css": "^6.1.3",
|
||||||
"metalsmith-groff": "^0.4.0",
|
"metalsmith-groff": "^0.4.0",
|
||||||
"metalsmith-rename": "^1.0.0",
|
"metalsmith-rename": "^1.0.0",
|
||||||
"metalsmith-sitemap": "^1.2.2",
|
"metalsmith-sitemap": "^1.2.2",
|
||||||
"moment": "^2.29.1",
|
|
||||||
"nodemon": "^2.0.12",
|
"nodemon": "^2.0.12",
|
||||||
"rimraf": "^3.0.2",
|
"rimraf": "^3.0.2",
|
||||||
"slug": "^5.1.0",
|
"slug": "^5.1.0",
|
||||||
|
|||||||
103
scripts/metalsmith-tinuage-chatons.js
Normal file
103
scripts/metalsmith-tinuage-chatons.js
Normal file
@@ -0,0 +1,103 @@
|
|||||||
|
// const { Buffer } = require('node:buffer')
|
||||||
|
const debug = require('debug')('metalsmith-tinuage-chatons')
|
||||||
|
const config = require('./config.js')
|
||||||
|
const fs = require('node:fs')
|
||||||
|
const path = require('path')
|
||||||
|
|
||||||
|
module.exports = plugin
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Un plugin pour Metalsmith qui traite des fichiers de propriétés
|
||||||
|
* pour StatoolInfos.
|
||||||
|
*
|
||||||
|
* @return {Function}
|
||||||
|
*/
|
||||||
|
function plugin () {
|
||||||
|
const Filler = {
|
||||||
|
|
||||||
|
init: function (properties) {
|
||||||
|
this.handlers = {
|
||||||
|
'file.datetime': this.datetime,
|
||||||
|
'file.generator': this.generator
|
||||||
|
}
|
||||||
|
this.properties = properties
|
||||||
|
},
|
||||||
|
|
||||||
|
complete: function () {
|
||||||
|
Object.entries(this.properties).forEach(([key, value]) => {
|
||||||
|
if (value.length === 0) {
|
||||||
|
if (Object.keys(this.handlers).includes(key)) {
|
||||||
|
this.properties[key] = this.handlers[key]()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
|
||||||
|
export: function () {
|
||||||
|
return Object
|
||||||
|
.entries(this.properties)
|
||||||
|
.filter(([key, value]) => !key.startsWith('meta'))
|
||||||
|
.map(([key, value]) => key + ' = ' + value)
|
||||||
|
.reduce((acc, value) => acc + value + '\n', '')
|
||||||
|
},
|
||||||
|
|
||||||
|
datetime: function () {
|
||||||
|
return new Date().toISOString()
|
||||||
|
},
|
||||||
|
|
||||||
|
generator: function () {
|
||||||
|
return 'Metalsmith'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function loadProperties (root, filenames) {
|
||||||
|
const promises = filenames
|
||||||
|
.filter(f => { return f.indexOf('.properties') !== -1 })
|
||||||
|
.map(function (f) {
|
||||||
|
debug('Loading ' + f)
|
||||||
|
return fs.promises
|
||||||
|
.readFile(path.join(root, f), 'utf8')
|
||||||
|
.then(data => {
|
||||||
|
const properties = Object.fromEntries(data
|
||||||
|
.toString()
|
||||||
|
.split(/(?:\r\n|\r|\n)/g)
|
||||||
|
.filter(line => line.length > 1 && line[0] !== '#')
|
||||||
|
.map(line => line.split(/\s*=\s*/, 2)))
|
||||||
|
|
||||||
|
properties['meta.filename'] = f
|
||||||
|
return properties
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
return Promise.all(promises)
|
||||||
|
}
|
||||||
|
|
||||||
|
return function (files, metalsmith, done) {
|
||||||
|
const directory = path.join('.well-known', 'chatonsinfos')
|
||||||
|
const root = path.join(config.paths.projectRoot, config.paths.metalsmithSource, directory)
|
||||||
|
|
||||||
|
debug('Looking for properties files in ' + root)
|
||||||
|
fs.readdir(root, (err, filenames) => {
|
||||||
|
if (err) {
|
||||||
|
console.error('%s: %s', root, err)
|
||||||
|
} else {
|
||||||
|
loadProperties(root, filenames)
|
||||||
|
.then(function (sets) {
|
||||||
|
sets.forEach(properties => {
|
||||||
|
const data = files[path.join(directory, properties['meta.filename'])]
|
||||||
|
const filler = Object.create(Filler)
|
||||||
|
|
||||||
|
filler.init(properties)
|
||||||
|
filler.complete()
|
||||||
|
|
||||||
|
data.contents = Buffer.from(filler.export())
|
||||||
|
})
|
||||||
|
done()
|
||||||
|
})
|
||||||
|
.catch(function (err) {
|
||||||
|
console.log(err)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,6 +1,8 @@
|
|||||||
/* This is the actual metalsmith configuration script. */
|
/* This is the actual metalsmith configuration script. */
|
||||||
const assets = require('metalsmith-assets')
|
const assets = require('metalsmith-assets')
|
||||||
|
const browserify = require('metalsmith-browserify')
|
||||||
const cleanCSS = require('metalsmith-clean-css')
|
const cleanCSS = require('metalsmith-clean-css')
|
||||||
|
const chatons = require('./metalsmith-tinuage-chatons')
|
||||||
const config = require('./config.js')
|
const config = require('./config.js')
|
||||||
const collections = require('@metalsmith/collections')
|
const collections = require('@metalsmith/collections')
|
||||||
const excerpts = require('@metalsmith/excerpts')
|
const excerpts = require('@metalsmith/excerpts')
|
||||||
@@ -9,7 +11,6 @@ const layouts = require('@metalsmith/layouts')
|
|||||||
const Metalsmith = require('metalsmith')
|
const Metalsmith = require('metalsmith')
|
||||||
const markdown = require('@metalsmith/markdown')
|
const markdown = require('@metalsmith/markdown')
|
||||||
const marked = require('marked')
|
const marked = require('marked')
|
||||||
const moment = require('moment')
|
|
||||||
const permalinks = require('@metalsmith/permalinks')
|
const permalinks = require('@metalsmith/permalinks')
|
||||||
const rename = require('metalsmith-rename')
|
const rename = require('metalsmith-rename')
|
||||||
const services = require('./metalsmith-tinuage-services')
|
const services = require('./metalsmith-tinuage-services')
|
||||||
@@ -35,12 +36,16 @@ markdownRenderer.link = function (href, title, text) {
|
|||||||
return out
|
return out
|
||||||
}
|
}
|
||||||
|
|
||||||
moment.locale('fr')
|
|
||||||
|
|
||||||
module.exports = new Metalsmith(config.paths.projectRoot)
|
module.exports = new Metalsmith(config.paths.projectRoot)
|
||||||
.clean(__PROD__)
|
.clean(__PROD__)
|
||||||
.metadata({
|
.metadata({
|
||||||
moment: moment,
|
date_format: function (date, withHours) {
|
||||||
|
const options = { dateStyle: 'long' }
|
||||||
|
if (withHours) {
|
||||||
|
options.push('timeStyle', 'short')
|
||||||
|
}
|
||||||
|
return Intl.DateTimeFormat('fr', options).format(date)
|
||||||
|
},
|
||||||
production: __PROD__,
|
production: __PROD__,
|
||||||
remove_diatrics: function (e) { return slug(e, { mode: 'rfc3986' }) },
|
remove_diatrics: function (e) { return slug(e, { mode: 'rfc3986' }) },
|
||||||
site: {
|
site: {
|
||||||
@@ -55,6 +60,14 @@ module.exports = new Metalsmith(config.paths.projectRoot)
|
|||||||
rebase: true
|
rebase: true
|
||||||
}
|
}
|
||||||
}))
|
}))
|
||||||
|
.use(browserify({
|
||||||
|
browserifyOptions: {
|
||||||
|
standalone: 'Calendar'
|
||||||
|
},
|
||||||
|
entries: [
|
||||||
|
'js/calendar.js'
|
||||||
|
]
|
||||||
|
}))
|
||||||
.use(assets({
|
.use(assets({
|
||||||
source: './assets/' + (process.env.NODE_ENV || 'dev'),
|
source: './assets/' + (process.env.NODE_ENV || 'dev'),
|
||||||
destination: './'
|
destination: './'
|
||||||
@@ -71,6 +84,7 @@ module.exports = new Metalsmith(config.paths.projectRoot)
|
|||||||
smartypants: true,
|
smartypants: true,
|
||||||
xhtml: true
|
xhtml: true
|
||||||
}))
|
}))
|
||||||
|
.use(chatons())
|
||||||
.use(services())
|
.use(services())
|
||||||
.use(excerpts())
|
.use(excerpts())
|
||||||
.use(permalinks({
|
.use(permalinks({
|
||||||
|
|||||||
Reference in New Issue
Block a user