Compare commits

...

17 Commits

Author SHA1 Message Date
dcf5ffac64 Clarification sur canonical 2023-02-02 17:05:44 +01:00
3e348ad491 Ajustement de CSS 2023-01-26 16:19:46 +01:00
8aeb72d4b4 Activation du plugin Sommaire automatique 2023-01-26 14:28:29 +01:00
114fa1eebd Sommaire pour les évènements 2023-01-26 13:47:00 +01:00
e5a0fc76a2 Squelettes de suivi par mot-clé 2022-07-07 01:38:14 +02:00
7886660d53 Traitement particulier pour les évènements Internet 2022-07-03 02:25:01 +02:00
a2af5661d1 Échappement des caractères spéciaux dans le titre 2022-02-28 11:41:37 +01:00
6c300873ad Ajout du lien vers le flux 2022-02-10 14:45:25 +01:00
be81143d24 Liste des évènements sous la forme d'un flux RSS 2022-02-02 20:14:41 +01:00
c8afc0e4c7 Ajustements divers 2022-01-17 19:58:01 +01:00
485d6a8ac3 Lien pour se connecter 2022-01-15 15:56:39 +01:00
f029c7787b Suppression de l'icone 96x96 2021-12-16 00:20:07 +01:00
307d55f5bd Ajout d'icones au format 192x192 et 96x96 pixels 2021-12-16 00:07:43 +01:00
272404dac4 Erreur de calcul du total des évènements nationaux 2021-12-08 18:40:29 +01:00
9a4a10ec95 Lien vers la feuille de style d'Antoine 2021-11-26 18:00:22 +01:00
b83d200406 Ajustements à la mise en prod 2021-11-26 16:06:16 +01:00
c110ecb66a Merge pull request 'Nouvelle version du graphisme' (!1) from dev-exemole into master
Reviewed-on: #1
2021-11-26 15:12:40 +01:00
19 changed files with 713 additions and 93 deletions

View File

@ -4,7 +4,7 @@
<head> <head>
<title>[(#TITRE|couper{80}|textebrut) - ][(#NOM_SITE_SPIP|textebrut)] <BOUCLE_titrerub(RUBRIQUES){id_rubrique}>#TITRE</BOUCLE_titrerub></title> <title>[(#TITRE|couper{80}|textebrut) - ][(#NOM_SITE_SPIP|textebrut)] <BOUCLE_titrerub(RUBRIQUES){id_rubrique}>#TITRE</BOUCLE_titrerub></title>
[<meta name="description" content="(#INTRODUCTION{150}|attribut_html)" />] [<meta name="description" content="(#INTRODUCTION{150}|attribut_html)" />]
[<link rel="canonical" href="(#URL_ARTICLE|url_absolue)" />] [<link rel="canonical" href="(#URL_ARTICLE|url_absolue{#URL_SITE_SPIP})" />]
<INCLURE{fond=inclure/head} /> <INCLURE{fond=inclure/head} />
</head> </head>

View File

@ -1,5 +1,3 @@
@import url("perso.css");
@font-face { @font-face {
font-family: 'metropolisbold'; font-family: 'metropolisbold';
src: url('metropolis/metropolis-bold-webfont.eot'); src: url('metropolis/metropolis-bold-webfont.eot');
@ -26,12 +24,12 @@
@font-face { @font-face {
font-family: 'metropolisregular'; font-family: 'metropolisregular';
src: url('metropolis/metropolis/metropolis-regular-webfont.eot'); src: url('metropolis/metropolis-regular-webfont.eot');
src: url('metropolis/metropolis/metropolis-regular-webfont.eot?#iefix') format('embedded-opentype'), src: url('metropolis/metropolis-regular-webfont.eot?#iefix') format('embedded-opentype'),
url('metropolis/metropolis/metropolis-regular-webfont.woff2') format('woff2'), url('metropolis/metropolis-regular-webfont.woff2') format('woff2'),
url('metropolis/metropolis/metropolis-regular-webfont.woff') format('woff'), url('metropolis/metropolis-regular-webfont.woff') format('woff'),
url('metropolis/metropolis/metropolis-regular-webfont.ttf') format('truetype'), url('metropolis/metropolis-regular-webfont.ttf') format('truetype'),
url('metropolis/metropolis/metropolis-regular-webfont.svg#metropolisregular') format('svg'); url('metropolis/metropolis-regular-webfont.svg#metropolisregular') format('svg');
font-weight: normal; font-weight: normal;
font-style: normal; font-style: normal;
} }

View File

@ -0,0 +1,67 @@
<?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="1.2566192mm"
height="1.558068mm"
viewBox="0 0 1.2566192 1.558068"
version="1.1"
id="svg8"
inkscape:version="1.0.2 (e86c8708, 2021-01-15)"
sodipodi:docname="fleche-arrondie-1.svg">
<defs
id="defs2" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="22.225224"
inkscape:cx="13.856181"
inkscape:cy="-0.34894919"
inkscape:document-units="mm"
inkscape:current-layer="layer1"
inkscape:document-rotation="0"
showgrid="false"
showguides="true"
inkscape:guide-bbox="true"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0">
<sodipodi:guide
position="0.11465461,0.78328061"
orientation="0,-1"
id="guide837" />
</sodipodi:namedview>
<metadata
id="metadata5">
<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"
transform="translate(-12.974498,-17.909543)">
<path
style="fill:#2e8b57;stroke-width:0.18236;paint-order:markers fill stroke;stop-color:#000000"
d="m 13.033724,17.946862 c 0.122417,-0.194307 1.202124,0.417837 1.197378,0.737469 -0.0084,0.32324 -1.065464,0.873127 -1.207239,0.770771 -0.212087,-0.106044 0.327873,-0.773421 0.327873,-0.773421 0.06232,-0.02703 -0.508337,-0.568228 -0.318012,-0.734819 z"
id="path835"
sodipodi:nodetypes="cccsc" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.2 KiB

View File

@ -0,0 +1,67 @@
<?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="1.2566192mm"
height="1.558068mm"
viewBox="0 0 1.2566192 1.558068"
version="1.1"
id="svg8"
inkscape:version="1.0.2 (e86c8708, 2021-01-15)"
sodipodi:docname="fleche-arrondie-2.svg">
<defs
id="defs2" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="22.225224"
inkscape:cx="13.856181"
inkscape:cy="-0.34894919"
inkscape:document-units="mm"
inkscape:current-layer="layer1"
inkscape:document-rotation="0"
showgrid="false"
showguides="true"
inkscape:guide-bbox="true"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0">
<sodipodi:guide
position="0.11465461,0.78328061"
orientation="0,-1"
id="guide837" />
</sodipodi:namedview>
<metadata
id="metadata5">
<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"
transform="translate(-12.974498,-17.909543)">
<path
style="fill:#3cb371;stroke-width:0.18236;paint-order:markers fill stroke;stop-color:#000000"
d="m 13.033724,17.946862 c 0.122417,-0.194307 1.202124,0.417837 1.197378,0.737469 -0.0084,0.32324 -1.065464,0.873127 -1.207239,0.770771 -0.212087,-0.106044 0.327873,-0.773421 0.327873,-0.773421 0.06232,-0.02703 -0.508337,-0.568228 -0.318012,-0.734819 z"
id="path835"
sodipodi:nodetypes="cccsc" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.2 KiB

View File

@ -22,7 +22,8 @@ body {
font-size: 1.5rem; font-size: 1.5rem;
background-color: #fff; background-color: #fff;
color: #000; color: #000;
font-family: sans-serif; font-family: 'metropolisregular';
letter-spacing: -0.01rem;
line-height: 1.5; line-height: 1.5;
margin: 0; margin: 0;
padding: 0; padding: 0;
@ -39,11 +40,8 @@ a {
} }
ul, ol { ul, ol {
padding-left: 2em; padding-left: 0.8em;
} list-style: disclosure-closed;
img {
vertical-align: middle;
} }
blockquote,figure { blockquote,figure {
@ -52,12 +50,24 @@ blockquote,figure {
} }
/* font-sizing for content */ /* font-sizing for content */
p,ul,ol,dl,blockquote,pre,td,th,label,textarea,caption,details,figure { ul,ol,dl,blockquote,pre,td,th,label,textarea,caption,details,figure {
margin-top: 0.75em; margin-top: 0.75em;
margin-bottom: 0; margin-bottom: 0;
line-height: 1.5; line-height: 1.5;
} }
ul,ol {
padding-left: 0.8em;
list-style: disclosure-closed;
}
li {
padding-left: 0em;
list-style-image: url("images/fleche-arrondie-2.svg");
line-height: 1.4em;
padding-bottom: 0.8em;
}
h1 { h1 {
font-size: 3.2rem; font-size: 3.2rem;
font-family: sans-serif; font-family: sans-serif;
@ -74,7 +84,8 @@ h3 {
h4 { h4 {
font-size: 2rem; font-size: 2rem;
color: #2e8b57; color: #2f4f4f;
font-family: 'metropolisregular','sans-serif';
} }
h5 { h5 {
@ -85,6 +96,13 @@ h6 {
font-size: 1.6rem; font-size: 1.6rem;
} }
p {
margin-top: 0.75em;
margin-bottom: 1em;
line-height: 1.7em;
}
code, pre, samp, kbd { code, pre, samp, kbd {
/* IE fix */ /* IE fix */
white-space: pre-line; white-space: pre-line;
@ -114,9 +132,22 @@ img, table, td, blockquote, code, pre, textarea, input, video, svg {
} }
img { img {
height: auto; vertical-align: middle;
box-shadow: 0px 0px 10px rgba(100, 100, 100, 0.2);
padding: 5px;
height: auto;
} }
strong {
color: #365E51;
font-family: 'metropolisregular';
font-weight: bold;
}
table {
border-collapse: collapse;
width: 100%;
}
/* ----------------------------- */ /* ----------------------------- */
@ -124,8 +155,6 @@ img {
/* ----------------------------- */ /* ----------------------------- */
#layout { #layout {
/*max-width: 2036px;
margin: auto;*/
max-width: inherit; max-width: inherit;
} }
@ -145,7 +174,7 @@ img {
#layout_body_center { #layout_body_center {
background-color: #fff; background-color: #fff;
padding: 6rem 8rem; padding: 6rem 8rem 0;
box-shadow: 0px 0px 30px rgba(0, 0, 0, 0.28); box-shadow: 0px 0px 30px rgba(0, 0, 0, 0.28);
z-index: 1; z-index: 1;
border-color: #fff; border-color: #fff;
@ -176,17 +205,159 @@ img {
} }
} }
@media ((min-width: 640px) and (max-width: 800px)) {
#layout_body_center {
padding: 3rem 4rem;
}
}
@media screen and (max-width: 639px){
#layout_body_center {
padding: 1.5rem 4rem;
}
#layout_head_content {
height: auto;
position: relative;
}
}
/* ----------------------------- */ /* ----------------------------- */
/* .evenement- /* .evenement-
/* ----------------------------- */ /* ----------------------------- */
.evenement-Date {
color: #203636;
text-transform: capitalize;
}
.evenement-Details {
background-color: #fbfdf8e8;
}
.evenement-Summary {
padding: 1rem;
background-color: #eef4e5e8;
font-family: 'metropolislight';
color: #203636;
font-size: 1.7rem;
box-shadow: 0px 2px 2px rgba(97, 138, 115, 0.23);
}
.evenement-Summary:hover { .evenement-Summary:hover {
cursor: pointer; cursor: pointer;
} }
.evenement-Table td { .evenement-Table td {
vertical-align: top; border: 1px solid #cbddafe8;
vertical-align: inherit;
padding: 1rem;
}
.evenement-Total {
display: inline-block;
margin-left: 1rem;
font-size: 1.2rem;
color: #203636;
}
/* ----------------------------- */
/* .sommaire-
/* ----------------------------- */
.sommaire-Details {
background-color: #eef4e5e8;
margin: 3.5rem auto;
}
.sommaire-Summary:hover {
cursor: pointer;
}
.sommaire-Summary {
padding: 1rem;
font-family: 'metropolismedium';
color: #203636;
font-size: 1.7rem;
list-style: none;
}
.sommaire-Summary::-webkit-details-marker {
display: none;
}
.sommaire-Summary::after {
content: " ⏵";
/*content: " ⯈";
content: " ▶";*/
font-family: sans-serif;
}
.sommaire-Details[open] .sommaire-Summary::after {
content: " ⏷";
/*content: " ⯆";
content: " ▼";*/
font-family: sans-serif;
}
.sommaire-Liste {
column-count: 3;
padding-bottom: 2rem;
font-size: 0.8em;
}
.sommaire-Liste li {
list-style: none;
padding-bottom: 3px;
padding-top: 3px;
border-bottom-width: thin;
border-bottom-style: solid;
border-bottom-color: #cbddafe8;
break-inside: avoid;
line-height: 1.8;
}
/* ----------------------------- */
/* .footer-
/* ----------------------------- */
.footer-Container {
margin-top: 60px;
padding-bottom: 20px;
text-align: center;
}
.footer-Link, .footer-Link:visited, .footer-Link:focus, .footer-Link:hover {
color: #2f4f4f;
display: inline-block;
}
.footer-Link:hover {
border-bottom: 2px dotted #2f4f4f;
}
.footer-List {
margin: auto;
list-style: none;
display: inline-flex;
border-top-width: 1px;
border-top-style: solid;
border-top-color: #2f4f4f;
padding-right: 20px;
padding-top: 5px;
padding-left: 20px;
}
.footer-List li {
list-style: none;
padding-left: 10px;
padding-right: 10px;;
margin: 0;
} }
/* ----------------------------- */ /* ----------------------------- */
@ -194,7 +365,8 @@ img {
/* ----------------------------- */ /* ----------------------------- */
.header-Active a { .header-Active a {
text-decoration: underline; text-decoration: inherit;
border-bottom: 2px dotted #2f4f4f;
} }
.header-Banner { .header-Banner {
@ -236,6 +408,11 @@ img {
color: #2f4f4f; color: #2f4f4f;
} }
.header-Menu a:hover {
color: #2f4f4f;
border-bottom: 2px dotted #2f4f4f;
}
.header-Nav { .header-Nav {
border-top-width: 1px; border-top-width: 1px;
border-top-style: solid; border-top-style: solid;
@ -250,13 +427,16 @@ img {
.header-Slogan { .header-Slogan {
color: #2f4f4f; color: #2f4f4f;
font-weight: bold; font-weight: bold;
font-size: 0.8em; font-size: 0.9em;
text-align: right; text-align: right;
width: 210px; width: 210px;
padding-right: 10px; padding-right: 10px;
} }
.header-Slogan p { .header-Slogan p {
font-weight: normal;
font-family: metropolismedium;
line-height: 1.5em;
display: inline-block; display: inline-block;
text-align: left; text-align: left;
} }
@ -279,15 +459,6 @@ img {
@media (max-width: 639px) { @media (max-width: 639px) {
#layout_head_content {
height: auto;
position: relative;
}
#layout_body_center {
padding: 1.5rem 2rem!important;
}
.header-Banner { .header-Banner {
display: flex; display: flex;
align-items: center; align-items: center;
@ -370,6 +541,10 @@ img {
padding-top: 0; padding-top: 0;
} }
.sommaire-Liste {
column-count: 1;
}
} }
@ -379,13 +554,20 @@ img {
width: 130px; width: 130px;
} }
#layout_body_center {
padding: 3rem 4rem!important;
}
} }
/* ----------------------------- */
/* .lef-
/* ----------------------------- */
.lef-Avertissement {
padding: 2rem;
background-color: #ecffe3;
border: 1px solid #c2e8b0;
margin: 2rem auto;
}
/* ----------------------------- */ /* ----------------------------- */
/* .main- /* .main-
@ -395,6 +577,8 @@ img {
color: #2f4f4f; color: #2f4f4f;
padding-top: 25px; padding-top: 25px;
font-size: 4.0rem; font-size: 4.0rem;
font-family: 'metropolismedium', 'sans-serif';
line-height: 1.1em;
} }
/* ----------------------------- */ /* ----------------------------- */
@ -403,10 +587,37 @@ img {
h3.spip { h3.spip {
padding-bottom: 1px; padding-bottom: 1px;
border-bottom-width: 3px; margin: 3.5rem auto 01rem;
border-bottom-style: solid;
border-bottom-color: #e0f5c1;
font-size: 2.5rem; font-size: 2.5rem;
font-weight: bold; font-weight: bold;
color: darkslategray; color: darkslategray;
font-family: 'metropolismedium','sans-serif';
}
h4.spip {
margin-bottom: inherit;
}
a.spip_out, a.spip_in, a.spip_mail{
color: #365E51;
border-bottom: 1px dotted #365E51;
}
a.spip_in.cboxElement {
border-bottom: inherit;
}
ul.spip, ol.spip {
margin-left: 10px;
}
.spip_documents.spip_documents_center {
margin-top: 2em;
}
.spip_code {
border: 1px solid #66cdaa;
background-color: rgba(236, 236, 234, 0.5);
color: #203636;
box-shadow: inset 3px 0px 5px rgba(166, 166, 166, 0.5);
padding: 1rem;
} }

View File

@ -0,0 +1,34 @@
#CACHE{0}#SET{motcle, #ENV{motcle}|lef_test_tag}
<!DOCTYPE html>
<html>
<head>
<title>Liste des évènements #GET{motcle}</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<style>
body {
font-family: sans-serif;
}
td {
padding: 4px;
}
table, td{
border-width: 1px;
border-style: solid;
border-color: #999;
border-collapse: collapse;
}
td, tr {
border-width: 1px;
border-style: solid;
border-color: #999;
}
</style>
</head>
<body>
[<p><a href="spip.php?page=evenements-rss-motcle&amp;motcle=(#GET{motcle})">Flux RSS pour #GET{motcle}</a></p>]
<table>
[(#ENV{motcle}|lef_liste_evenements_tag)]
</table>
</body>
</html>

View File

@ -0,0 +1,31 @@
#CACHE{0}[(#HTTP_HEADER{Content-type: text/xml[; charset=(#CHARSET)]})]<?xml version="1.0"[ encoding="(#CHARSET)"]?>
#SET{motcle, #ENV{motcle}|lef_test_tag}
<rss version="2.0" [(#REM) rss 2.0.9)]
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:content="http://purl.org/rss/1.0/modules/content/"
>
<channel xml:lang="fr">
<title>Évènements #GET{motcle}</title>
<link>https://www.libre-en-fete.net/spip.php?page=evenements-rss-motcle&amp;motcle=#GET{motcle}</link>
<description>Liste des évènements du mot-clé #GET{motcle}</description>
<language>fr</language>
<generator>Libre en fête / Agenda du Libre</generator>
#SET{evenement_array, #GET{motcle}|lef_evenement_array_tag}
<BOUCLE_evenements(DATA){source table, #GET{evenement_array}}>
<item>
<title>[(#VALEUR{start_time}|lef_date) ][(#VALEUR{city}) : ][(#VALEUR{title}|texte_backend) ]</title>
<link>https://www.agendadulibre.org/events/#VALEUR{id}</link>
<guid isPermaLink="true">https://www.agendadulibre.org/events/#VALEUR{id}</guid>
<dc:date>#VALEUR{time}</dc:date>
<dc:format>text/html</dc:format>
<dc:language>fr</dc:language>
<description>
&lt;p&gt;&lt;strong&gt;Contact :&lt;/strong&gt; [(#VALEUR{contact}|texte_backend)]&lt;/p&gt;
[(#VALEUR{description}|texte_backend)]</description>
</item>
</BOUCLE_evenements>
</channel>
</rss>

31
evenements-rss.html Normal file
View File

@ -0,0 +1,31 @@
#CACHE{0}[(#HTTP_HEADER{Content-type: text/xml[; charset=(#CHARSET)]})]<?xml version="1.0"[ encoding="(#CHARSET)"]?>
[(#SET{annee, #ENV{annee}|lef_test_num})]
<rss version="2.0" [(#REM) rss 2.0.9)]
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:content="http://purl.org/rss/1.0/modules/content/"
>
<channel xml:lang="fr">
<title>Évènements #GET{annee}</title>
<link>https://www.libre-en-fete.net/spip.php?page=evenements-rss&amp;annee=#GET{annee}</link>
<description>Liste des évènements Libre en fête de l'année #GET{annee}</description>
<language>fr</language>
<generator>Libre en fête / Agenda du Libre</generator>
#SET{evenement_array, #GET{annee}|lef_evenement_array}
<BOUCLE_evenements(DATA){source table, #GET{evenement_array}}>
<item>
<title>[(#VALEUR{start_time}|lef_date) ][(#VALEUR{city}) : ][(#VALEUR{title}|texte_backend) ]</title>
<link>https://www.agendadulibre.org/events/#VALEUR{id}</link>
<guid isPermaLink="true">https://www.agendadulibre.org/events/#VALEUR{id}</guid>
<dc:date>#VALEUR{time}</dc:date>
<dc:format>text/html</dc:format>
<dc:language>fr</dc:language>
<description>
&lt;p&gt;&lt;strong&gt;Contact :&lt;/strong&gt; [(#VALEUR{contact}|texte_backend)]&lt;/p&gt;
[(#VALEUR{description}|texte_backend)]</description>
</item>
</BOUCLE_evenements>
</channel>
</rss>

BIN
favicon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

BIN
images/icon192.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

BIN
images/icon96.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

View File

@ -1,2 +1,38 @@
<footer> <footer class="footer-Container">
<ul class="footer-List">
<li>
[(#SESSION{id_auteur}|non) <a href="[(#URL_PAGE{login}|parametre_url{url,#SELF})]" rel="nofollow" class="footer-Link"><:lien_connecter:></a>][(#AUTORISER{ecrire}) <a href="#CONST{_DIR_RESTREINT_ABS}" class="footer-Link"><:espace_prive:></a>][ |
(#SESSION{id_auteur}|oui)<a href="#URL_LOGOUT" rel="nofollow" class="footer-Link"><:icone_deconnecter:></a>]
</li>
</ul>
<!-- Matomo -->
<script>
var _paq = window._paq = window._paq || [];
/* tracker methods like "setCustomDimension" should be called before "trackPageView" */
_paq.push([function() {
var self = this;
function getOriginalVisitorCookieTimeout() {
var now = new Date(),
nowTs = Math.round(now.getTime() / 1000),
visitorInfo = self.getVisitorInfo();
var createTs = parseInt(visitorInfo[2]);
var cookieTimeout = 33696000; // 13 mois en secondes
var originalTimeout = createTs + cookieTimeout - nowTs;
return originalTimeout;
}
this.setVisitorCookieTimeout( getOriginalVisitorCookieTimeout() );
}]);
_paq.push(['trackPageView']);
_paq.push(['enableLinkTracking']);
(function() {
var u="https://statistiques.april.org/";
_paq.push(['setTrackerUrl', u+'matomo.php']);
_paq.push(['setSiteId', '5']);
var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
})();
</script>
<noscript><p><img src="//statistiques.april.org/matomo.php?idsite=5&amp;rec=1" style="border:0;" alt="" /></p></noscript>
<!-- End Matomo Code -->
</footer> </footer>

View File

@ -13,9 +13,8 @@ les elements specifiques (title, description) figurent dans chaque squelette
[<link rel="stylesheet" href="(#CHEMIN{css/spip.css}|direction_css)" type="text/css" />] [<link rel="stylesheet" href="(#CHEMIN{css/spip.css}|direction_css)" type="text/css" />]
#INSERT_HEAD_CSS #INSERT_HEAD_CSS
[<link rel="stylesheet" href="(#CHEMIN{css/import.css})" type="text/css">] [<link rel="stylesheet" href="(#CHEMIN{css/fonts.css})" type="text/css">]
[<link rel="stylesheet" href="(#CHEMIN{css/main.css})" type="text/css">]
<link rel="stylesheet" href="https://bardelli.fr/test/perso-antoine-lef2021.css" type="text/css">
[(#REM) [(#REM)
Balise permettant aux plugins d'inserer des appels javascript ; Balise permettant aux plugins d'inserer des appels javascript ;
@ -31,40 +30,10 @@ Balise permettant aux plugins d'inserer des appels javascript ;
[(#REM) Favicon ] [(#REM) Favicon ]
[<link rel="icon" type="image/png" href="(#CHEMIN{images/icon16.png})" sizes="16x16">] [<link rel="icon" type="image/png" href="(#CHEMIN{images/icon16.png})" sizes="16x16">]
[<link rel="icon" type="image/png" href="(#CHEMIN{images/icon192.png})" sizes="192x192">]
[(#REM) meta robots ] [(#REM) meta robots ]
[<meta name="robots" content="(#ENV{robots})" />] [<meta name="robots" content="(#ENV{robots})" />]
<meta name="viewport" content="width=device-width, initial-scale=1.0, shrink-to-fit=no"> <meta name="viewport" content="width=device-width, initial-scale=1.0, shrink-to-fit=no">
<!-- Matomo -->
<script>
var _paq = window._paq = window._paq || [];
/* tracker methods like "setCustomDimension" should be called before "trackPageView" */
/*_paq.push([function() {
var self = this;
function getOriginalVisitorCookieTimeout() {
var now = new Date(),
nowTs = Math.round(now.getTime() / 1000),
visitorInfo = self.getVisitorInfo();
var createTs = parseInt(visitorInfo[2]);
var cookieTimeout = 33696000; // 13 mois en secondes
var originalTimeout = createTs + cookieTimeout - nowTs;
return originalTimeout;
}
this.setVisitorCookieTimeout( getOriginalVisitorCookieTimeout() );
}]);
_paq.push(['trackPageView']);
_paq.push(['enableLinkTracking']);
(function() {
var u="https://statistiques.april.org/";
_paq.push(['setTrackerUrl', u+'matomo.php']);
_paq.push(['setSiteId', '5']);
var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
})();*/
</script>
<noscript><p><img src="//statistiques.april.org/matomo.php?idsite=5&amp;rec=1" style="border:0;" alt="" /></p></noscript>
<!-- End Matomo Code -->

View File

@ -1,5 +1,30 @@
<?php <?php
class LefInternet {
private $internet_id;
private $code = "internet";
private $evenementArray = array();
public function __construct($json_region) {
$this->pays_id = $json_region["id"];
}
public function populate( $evenementParRegionMap) {
$pays_key = "id_".$this->pays_id;
if (array_key_exists($pays_key, $evenementParRegionMap)) {
$this->evenementArray = $evenementParRegionMap[$pays_key];
}
}
public function toArray() {
return array("evenements" => $this->evenementArray, "total" => count($this->evenementArray));
}
}
class LefPays { class LefPays {
private $pays_id; private $pays_id;
private $name = ""; private $name = "";
@ -34,6 +59,7 @@ class LefPays {
$total_region = count($evenementParRegionArray); $total_region = count($evenementParRegionArray);
$lieux = new LefLieux($evenementParRegionArray); $lieux = new LefLieux($evenementParRegionArray);
$region["evenements"] = $lieux->toArray(); $region["evenements"] = $lieux->toArray();
$region["total"] = $total_region;
$this->total_pays += $total_region; $this->total_pays += $total_region;
$this->regions[] = $region; $this->regions[] = $region;
} }
@ -49,14 +75,22 @@ class LefPays {
return $this->key_array; return $this->key_array;
} }
public function getCode() {
return $this->code;
}
public function toArray() { public function toArray() {
$evenementsnationaux; $evenementsnationaux;
$totalevenementsnationaux = 0;
if ($this->lieuxnationaux) { if ($this->lieuxnationaux) {
$evenementsnationaux = $this->lieuxnationaux->toArray(); $evenementsnationaux = $this->lieuxnationaux->toArray();
foreach($evenementsnationaux as $key => $array) {
$totalevenementsnationaux = $totalevenementsnationaux + count($array);
}
} else { } else {
$evenementsnationaux = array(); $evenementsnationaux = array();
} }
return array("name" => $this->name, "code" => $this->code, "sousregions" => $this->regions, "evenementsnationaux" => $evenementsnationaux); return array("name" => $this->name, "code" => $this->code, "sousregions" => $this->regions, "evenementsnationaux" => $evenementsnationaux, "totalevenementsnationaux" => $totalevenementsnationaux);
} }
} }

View File

@ -26,6 +26,7 @@ border-color: #999;
</style> </style>
</head> </head>
<body> <body>
<p><a href="spip.php?page=evenements-rss&amp;annee=[(#ENV{annee}|lef_test_num)]">Flux RSS</a></p>
<table> <table>
[(#ENV{annee}|lef_liste_evenements)] [(#ENV{annee}|lef_liste_evenements)]
</table> </table>

View File

@ -152,9 +152,11 @@ function mes_balise_Repartition($tag) {
if ($GLOBALS[MES]["repartition"] != false) { if ($GLOBALS[MES]["repartition"] != false) {
return $GLOBALS[MES]["repartition"]; return $GLOBALS[MES]["repartition"];
} }
//Étape 1 : récupération de la liste des évènements
$url_evenements = 'http://www.agendadulibre.org/events.json?future=false&tag='.$tag; $url_evenements = 'http://www.agendadulibre.org/events.json?future=false&tag='.$tag;
$evenementArray = json_decode(file_get_contents($url_evenements), true); $evenementArray = json_decode(file_get_contents($url_evenements), true);
$evenementCount = count($evenementArray); $evenementCount = count($evenementArray);
//Étape 2 : balayage des évènements et ventilation par région (champ « region_id »)
$evenementParRegionMap = array(); $evenementParRegionMap = array();
for($i = 0; $i < $evenementCount; $i++) { for($i = 0; $i < $evenementCount; $i++) {
$evenement = $evenementArray[$i]; $evenement = $evenementArray[$i];
@ -168,13 +170,22 @@ function mes_balise_Repartition($tag) {
$evenementParRegionMap["id_".$region_id] = array($evenement); $evenementParRegionMap["id_".$region_id] = array($evenement);
} }
} }
//Étape 3 : récupération de la liste des régions
$url_regions = "http://www.agendadulibre.org/regions.json"; $url_regions = "http://www.agendadulibre.org/regions.json";
$total = 0; $total = 0;
$json_regions = json_decode(file_get_contents($url_regions), true); $json_regions = json_decode(file_get_contents($url_regions), true);
$paysArray = array(); $paysArray = array();
$regionTraiteeMap = array(); $regionTraiteeMap = array();
$internet = array("evenements" => array(), "total" => 0);
//Étape 4 : création d'une instance LefPays pour chaque région qui correspond à un pays (présence du champ code), création des sous-régions de ce pays et affectation des évènements liés à ce pays
foreach($json_regions as $json_region) { foreach($json_regions as $json_region) {
if (strlen($json_region['code']) > 0) { $pays_code = $json_region['code'];
if ($pays_code == "internet") {
$pays_internet = new LefInternet($json_region);
$pays_internet->populate($evenementParRegionMap);
$internet = $pays_internet->toArray();
$total += $internet["total"];
} else if (strlen($pays_code) > 0) {
$pays = new LefPays($json_region); $pays = new LefPays($json_region);
$pays->populate($json_regions, $evenementParRegionMap); $pays->populate($json_regions, $evenementParRegionMap);
foreach($pays->getKeyArray() as $key) { foreach($pays->getKeyArray() as $key) {
@ -182,7 +193,11 @@ function mes_balise_Repartition($tag) {
} }
$total_pays = $pays->getTotal(); $total_pays = $pays->getTotal();
if ($total_pays > 0) { if ($total_pays > 0) {
$paysArray[] = $pays->toArray(); if ($pays->getCode() == "internet") {
$internet = $pays->toArray();
} else {
$paysArray[] = $pays->toArray();
}
$total += $total_pays; $total += $total_pays;
} }
} }
@ -198,6 +213,7 @@ function mes_balise_Repartition($tag) {
$repartition = array( $repartition = array(
"total" => $total, "total" => $total,
"pays" => $paysArray, "pays" => $paysArray,
"internet" => $internet,
"ailleurs" => $ailleursArray "ailleurs" => $ailleursArray
); );
$GLOBALS[MES]["repartition"] = $repartition; $GLOBALS[MES]["repartition"] = $repartition;
@ -212,26 +228,95 @@ function mes_compare($a, $b) {
return collator_compare($coll, $a, $b); return collator_compare($coll, $a, $b);
} }
/************************************
* Vérifie que le paramètre est bien numérique
*************************************/
function filtre_lef_test_num($annee) {
if (!is_numeric($annee)) {
return "";
} else {
return $annee;
}
}
/************************************
* Vérifie que le paramètre est un mot-clé correct
*************************************/
function filtre_lef_test_tag($tag) {
if (preg_match('/^[-a-z0-9]+$/', $tag)) {
return $tag;
} else {
return "";
}
}
/************************************ /************************************
* Spécial filtre liste des évènements * Spécial filtre liste des évènements
* Le chemin du répertoire IMG est codé en dur !
*************************************/ *************************************/
function filtre_lef_liste_evenements($annee) { function filtre_lef_liste_evenements($annee) {
$IMG_ROOT = "/var/lib/spip/sites/www.libre-en-fete.net/"; if (strlen($annee) == 0) {
return "";
}
if (!is_numeric($annee)) { if (!is_numeric($annee)) {
return "Paramètre année incorrect"; return "Paramètre année incorrect";
} }
$evenementArray = lef_getEvenementArrayParAnnee($annee);
return lef_getEvenementRows($evenementArray);
}
$tag = "libre-en-fete-".$annee; function filtre_lef_liste_evenements_tag($tag) {
if (strlen($tag) == 0) {
return "";
}
if (!preg_match('/^[-a-z0-9]+$/', $tag)) {
return "Paramètre tag incorrect";
} else {
$evenementArray = lef_getEvenementArrayParTag($tag);
return lef_getEvenementRows($evenementArray);
}
}
function filtre_lef_evenement_array($annee) {
if (!is_numeric($annee)) {
return array();
}
return lef_getEvenementArrayParAnnee($annee);
}
function filtre_lef_evenement_array_tag($tag) {
return lef_getEvenementArrayParTag($tag);
}
function filtre_lef_date($time) {
$date = date_create($time);
return date_format($date, 'd/m');
}
/************************************
* Enregistrement local des évènements pour repérer les nouveaux
* Le chemin du répertoire IMG est codé en dur !
*************************************/
function lef_getEvenementArrayParAnnee($annee) {
return lef_getEvenementArray("libre-en-fete-".$annee, $annee);
}
function lef_getEvenementArrayParTag($tag) {
return lef_getEvenementArray($tag, "tags/".$tag);
}
function lef_getEvenementArray($tag, $storeDir) {
$IMG_ROOT = "/var/lib/spip/sites/www.libre-en-fete.net/";
$jsonString = file_get_contents("https://www.agendadulibre.org/events.json?future=false&tag=".$tag); $jsonString = file_get_contents("https://www.agendadulibre.org/events.json?future=false&tag=".$tag);
$json = json_decode($jsonString, TRUE); $json = json_decode($jsonString, TRUE);
$evenementCount = count($json); $evenementCount = count($json);
if ($evenementCount == 0) {
return "Aucun évènement";
}
$currentTime = date(DATE_ATOM); $currentTime = date(DATE_ATOM);
$dirPath = $IMG_ROOT."IMG/agendadulibre/".$annee; $dirPath = $IMG_ROOT."IMG/agendadulibre/".$storeDir;
if (!file_exists($dirPath)) { if (!file_exists($dirPath)) {
mkdir($dirPath, 0777, TRUE); mkdir($dirPath, 0777, TRUE);
} }
@ -252,6 +337,14 @@ function filtre_lef_liste_evenements($annee) {
$evenementArray[] = $evenement; $evenementArray[] = $evenement;
} }
usort($evenementArray, "lef_comparaison"); usort($evenementArray, "lef_comparaison");
return $evenementArray;
}
function lef_getEvenementRows($evenementArray) {
$evenementCount = count( $evenementArray);
if ($evenementCount == 0) {
return "Aucun évènement";
}
$result = ""; $result = "";
for($i = 0; $i < $evenementCount; $i++) { for($i = 0; $i < $evenementCount; $i++) {
$evenement = $evenementArray[$i]; $evenement = $evenementArray[$i];

View File

@ -1,8 +1,22 @@
#SET{repartition, #MES_REPARTITION{#ENV{tag}}} #SET{repartition, #MES_REPARTITION{#ENV{tag}}}
<details class="sommaire-Details">
<summary class="sommaire-Summary">Sommaire</summary>
<ul class="sommaire-Liste">
<BOUCLE_sommaire_repartition(DATA){source tableau, #GET{repartition/pays}}>
<BOUCLE_sommaire_sousregions(DATA){source tableau, #VALEUR{sousregions}}>
<li><a href="#region_[(#VALEUR{region_id})]">[(#VALEUR{name})] (#VALEUR{total})</a></li>
</BOUCLE_sommaire_sousregions>
</BOUCLE_sommaire_repartition>
<BOUCLE_sommaire_internet(CONDITION){si #GET{repartition/internet/total}|>{0}}>
<li><a href="#enligne">En ligne (#GET{repartition/internet/total})</a></li>
</BOUCLE_sommaire_internet>
</ul>
</details>
<BOUCLE_repartition(DATA){source tableau, #GET{repartition/pays}}> <BOUCLE_repartition(DATA){source tableau, #GET{repartition/pays}}>
<h3 class="spip">#VALEUR{name}</h3> <h3 class="spip">#VALEUR{name}</h3>
<B_evenementsnationaux> <B_evenementsnationaux>
<details class="evenement-Details"><summary class="evenement-Summary">[(#VALEUR{code}|=={internet}|?{'En ligne', 'À léchelle nationale'})] <span class="evenement-Total">([(#VALEUR|count)])</span></summary> <details class="evenement-Details"><summary class="evenement-Summary">[(#VALEUR{code}|=={internet}|?{'En ligne', 'À léchelle nationale'})] <span class="evenement-Total">([(#VALEUR{totalevenementsnationaux})])</span></summary>
<BOUCLE_evenementsnationaux(DATA) {source tableau, #VALEUR{evenementsnationaux}}> <BOUCLE_evenementsnationaux(DATA) {source tableau, #VALEUR{evenementsnationaux}}>
[<h5 class="spip">(#CLE)</h5>] [<h5 class="spip">(#CLE)</h5>]
@ -18,11 +32,12 @@
</tr> </tr>
</BOUCLE_evenementsnationaux_liste> </BOUCLE_evenementsnationaux_liste>
</table> </table>
</details>
</BOUCLE_evenementsnationaux> </BOUCLE_evenementsnationaux>
</details>
</B_evenementsnationaux>
<BOUCLE_sousregions(DATA){source tableau, #VALEUR{sousregions}}> <BOUCLE_sousregions(DATA){source tableau, #VALEUR{sousregions}}>
<h4 class="spip">#VALEUR{name}</h4> <h4 class="spip" id="region_[(#VALEUR{region_id})]">#VALEUR{name}</h4>
<BOUCLE_evenements(DATA) {source tableau, #VALEUR{evenements}}> <BOUCLE_evenements(DATA) {source tableau, #VALEUR{evenements}}>
<details class="evenement-Details"><summary class="evenement-Summary">[(#CLE|?{#CLE,'à léchelle de la région})] <span class="evenement-Total">([(#VALEUR|count)])</span></summary> <details class="evenement-Details"><summary class="evenement-Summary">[(#CLE|?{#CLE,'à léchelle de la région})] <span class="evenement-Total">([(#VALEUR|count)])</span></summary>
<table class="evenement-Table"> <table class="evenement-Table">
@ -41,6 +56,25 @@
</BOUCLE_evenements> </BOUCLE_evenements>
</BOUCLE_sousregions> </BOUCLE_sousregions>
</BOUCLE_repartition> </BOUCLE_repartition>
<B_evenementsinternet>
<h3 class="spip">Internet</h3>
<details class="evenement-Details"><summary class="evenement-Summary">En ligne <span class="evenement-Total">(#GET{repartition/internet/total})</span></summary>
<table class="evenement-Table">
<BOUCLE_evenementsinternet(DATA) {source tableau, #GET{repartition/internet/evenements}}{par start_time}>
[(#SET{evt,#VALEUR})]
<tr>
<td class="evenement-Date">[[(#GET{evt/start_time}|nom_jour)] (#GET{evt/start_time}|affdate_jourcourt)]</td>
<td class="evenement-Heure">[(#GET{evt/start_time}|heures)][:(#GET{evt/start_time}|minutes)]</td>
<td class="evenement-Titre">
<a href="https://www.agendadulibre.org/events/[(#GET{evt/id})]">[(#GET{evt/title})]</a>
</td>
</tr>
</BOUCLE_evenementsinternet>
</table>
</details>
</B_evenementsinternet>
<B_ailleurs> <B_ailleurs>
<h3 class="spip">Ailleurs</h3> <h3 class="spip">Ailleurs</h3>
#SET{ailleurs, #GET{repartition/ailleurs}} #SET{ailleurs, #GET{repartition/ailleurs}}

14
modeles/sommaire.html Normal file
View File

@ -0,0 +1,14 @@
#SET{liste, '*'}
[(#CONFIG{sommaire_automatique_numerote}|=={on}|oui)
#SET{liste, '#'}
]
<B_somm>
<details class="sommaire-Details" id="#ENV{id_sommaire}">
<summary class="sommaire-Summary">Sommaire</summary>
<ul class="sommaire-Liste">
<BOUCLE_somm(POUR){tableau #ENV{sommaire}}>
<li><a href="#VALEUR{href}" id="#VALEUR{id}">#VALEUR{titre}</a></li>
</BOUCLE_somm>
</ul>
</details>
</B_somm>

View File

@ -3,8 +3,8 @@
<html lang="fr"> <html lang="fr">
<head> <head>
<title>[(#NOM_SITE_SPIP|textebrut)] #TITRE</title> <title>[(#NOM_SITE_SPIP|textebrut)] #TITRE</title>
[<meta name="description" content="(#TEXTE{150}|attribut_html)">] [<meta name="description" content="(#INTRODUCTION|attribut_html)">]
[<link rel="canonical" href="(#URL_RUBRIQUE|url_absolue)">] [<link rel="canonical" href="(#URL_RUBRIQUE|url_absolue{#URL_SITE_SPIP})">]
<INCLURE{fond=inclure/head}> <INCLURE{fond=inclure/head}>
</head> </head>