diff --git a/design_system_admin/inclure/head.html b/design_system_admin/inclure/head.html index 597bf15ae221e00aab4158e2c08ae12ec525981d..bbfea883a8a75cceeb98131a0c651139a9b8973a 100644 --- a/design_system_admin/inclure/head.html +++ b/design_system_admin/inclure/head.html @@ -1,6 +1,15 @@ <!doctype html> + +[(#REM) Définition de la langue de la page] +[(#REM) les contenus doivent être présent dans un répertoire titré de la valeur de la langue (exemples: anglais -> en, français -> fr ....)] +#SET{langue, #LANG} +#SET{langue_definie, #SELF|extraire_chemin_url|replace{'/',''}|strlen} +[(#GET{langue_definie}|>{1}|oui) #SET{langue, #SELF|extraire_chemin_url|replace{'/',''}}] +[(#GET{langue}|setenv{lang})] + + [(#REM) L’attribut data-fr-theme n’est plus utilisable directement , il faut utiliser data-fr-scheme à la place ] -<html dir="#LANG_DIR" lang="#LANG" xmlns="http://www.w3.org/1999/xhtml" xml:lang="#LANG" class="[(#LANG_DIR)][ (#LANG)] no-js" data-fr-scheme="[(#CONFIG_VALUE{parametre_affichage_defaut})]" [(#CONFIG_VALUE{_drapeau_en_berne}|=={oui}|oui) data-fr-mourning ]> +<html dir="#LANG_DIR" lang="#GET{langue}" xmlns="http://www.w3.org/1999/xhtml" xml:lang="#GET{langue}" class="[(#LANG_DIR)][ (#GET{langue})] no-js" data-fr-scheme="[(#CONFIG_VALUE{parametre_affichage_defaut})]" [(#CONFIG_VALUE{_drapeau_en_berne}|=={oui}|oui) data-fr-mourning ]> <head> <base href="#URL_SITE_SPIP" /> <BOUCLE_home(CONDITION){si #ENV{home}|=={yes}|oui}> @@ -10,8 +19,8 @@ <//B_home> <meta charset="utf-8"> - <meta http-equiv="content-language" content="#LANG" /> - <title>[(#ENV{titrepage}|supprimer_tags)] - [(#ENV{titre}|supprimer_tags)]</title> + [(#ENV{home}|=={yes}|non) <title>[(#ENV{titrepage}|supprimer_tags)] - <:design_system_child:dsfr_titresite:/></title>] + [(#ENV{home}|=={yes}|oui) <title><:design_system_child:dsfr_accueil:/> - <:design_system_child:dsfr_titresite:/></title>] <meta name="format-detection" content="telephone=no"> [<meta name="description" content="(#ENV{descriptif}|noP)" />] [(#REM) diff --git a/design_system_admin/inclure/header.html b/design_system_admin/inclure/header.html index 2cb7f5041f2ad0c9d0c6b5e40c5745088aab3c4b..86e6ef18e980703c6115c7804174579ace1df8b5 100644 --- a/design_system_admin/inclure/header.html +++ b/design_system_admin/inclure/header.html @@ -1,19 +1,19 @@ <body class="front path-frontpage page-node-type-page"> <div class="fr-skiplinks" id="top"> - <nav class="fr-container" role="navigation" aria-label="Accès rapide"> + <nav class="fr-container" role="navigation" aria-label="<:design_system_child:dsfr_skiplinks_aria_label:/>"> <ul class="fr-skiplinks__list"> <li> - <a class="fr-link" href="#SELF#header-navigation">Menu</a> + <a class="fr-link" href="#SELF#header-navigation"><:design_system_child:dsfr_skiplinks_menu:/></a> </li> <li> - <a class="fr-link" href="#SELF#contenu">Contenu</a> + <a class="fr-link" href="#SELF#contenu"><:design_system_child:dsfr_skiplinks_contenu:/></a> </li> <li> - <a class="fr-link" href="#SELF#search-399">Moteur de recherche</a> + <a class="fr-link" href="#SELF#search-399"><:design_system_child:dsfr_skiplinks_search:/></a> </li> <li> - <a class="fr-link" href="#SELF#footer">Pied de page</a> + <a class="fr-link" href="#SELF#footer"><:design_system_child:dsfr_skiplinks_footer:/></a> </li> </ul> </nav> @@ -112,6 +112,83 @@ <//B_masquer_parametres_affichage> <//B_compteur_boucle> </BOUCLE_nombre_delement> + #SET{langues_du_site,''} + <BOUCLE_autoriser_auth_selang(CONDITION){si #CONFIG_VALUE{_masquer_langue}|=={oui}|non}> + <BOUCLE_rubrique_selang(CONDITION){si #ID_RUBRIQUE|oui}> + <BOUCLE_rubrique_principal(RUBRIQUES) {id_rubrique}> + <BOUCLE_traductions_rubrique(RUBRIQUES) {traduction}> </BOUCLE_traductions_rubrique>#SET{nbr_langues,#TOTAL_BOUCLE}</B_traductions_rubrique> + </BOUCLE_rubrique_principal> + </BOUCLE_rubrique_selang> + + <BOUCLE_article_selang(CONDITION){si #ID_ARTICLE|oui}> + <BOUCLE_article_principal(ARTICLES) {id_article}> + <BOUCLE_traductions_article(ARTICLES) {traduction}> </BOUCLE_traductions_article>#SET{nbr_langues,#TOTAL_BOUCLE}</B_traductions_article> + </BOUCLE_article_principal> + </BOUCLE_article_selang> + #SET{langue_page, #LANG} + #SET{titre_langues_site, #ARRAY} + <BOUCLE_nombre_de_langue_site(POUR){tableau #CONFIG_VALUE{nombre_de_langue}|range{1}}> + #SET{cle_langue, #CONFIG_VALUE{langue_#COMPTEUR_BOUCLE}} + #SET{valeur_langue, #CONFIG_VALUE{value_langue_#COMPTEUR_BOUCLE}} + #SET{titre_langues_site, #GET{titre_langues_site}|array_merge{#ARRAY{#GET{valeur_langue},#GET{cle_langue}}} + </BOUCLE_nombre_de_langue_site> + + [(#GET{nbr_langues}|>{1}|oui) #SET{afficher_langues,oui}] + [(#ENV{home}|=={yes}|oui) #SET{afficher_langues,oui}] + test #LANG ::: #GET{afficher_langues} ::: #GET{nbr_langues} :::: #ENV{home}<br> + <BOUCLE_test_nombre_de_langues(CONDITION){si #GET{afficher_langues}|=={oui}|oui}> + <li> + <nav role="navigation" class="fr-translate fr-nav" data-fr-js-navigation="true"> + <div class="fr-nav__item fr-nav__item--align-right" data-fr-js-navigation-item="true"> + <button class="fr-translate__btn fr-btn fr-btn--tertiary" aria-controls="translate-516" aria-expanded="false" title="Sélectionner une langue" data-fr-js-collapse-button="true"> + <span id="langue_utilisee">[(#LANG|strtoupper)]</span><span class="fr-hidden-lg"> - [(#LANG|traduire_cfg)]</span> + </button> + <div class="fr-collapse fr-translate__menu fr-menu" id="translate-516" data-fr-js-collapse="true"> + <ul class="fr-menu__list"> + <BOUCLE_article_selang2(CONDITION){si #ID_ARTICLE|oui}> + <BOUCLE_article_principal2(ARTICLES) {id_article}> + <BOUCLE_traductions_article2(ARTICLES) {traduction}> + <li> + <a class="language-dsfr fr-translate__language fr-nav__link " hreflang="#LANG" lang="#LANG" href="#URL_ARTICLE" [(#GET{langue_page}|=={#LANG}|oui) aria-current="true"]>[(#LANG|strtoupper)] - [(#LANG|traduire_cfg)]</a> + </li> + </BOUCLE_traductions_article2> + </BOUCLE_article_principal2> + </BOUCLE_article_selang2> + <BOUCLE_article_home(CONDITION){si #ENV{home}|=={yes}|oui}> + <BOUCLE_nombre_de_langue_home(POUR){tableau #CONFIG_VALUE{nombre_de_langue}|range{1}}> + #SET{compteur_boucle,#COMPTEUR_BOUCLE} + #SET{home_lang, #SELF|extraire_chemin_url|replace{'/',''}} + #SET{value_langue, #CONFIG_VALUE{value_langue_#COMPTEUR_BOUCLE}} + + #SET{titre_lang, #CONFIG_VALUE{value_langue_#COMPTEUR_BOUCLE}|traduire_cfg} + + + <li> + <a class="language-dsfr fr-translate__language fr-nav__link " hreflang="#CONFIG_VALUE{value_langue_#COMPTEUR_BOUCLE}" lang="#CONFIG_VALUE{value_langue_#COMPTEUR_BOUCLE}" [(#GET{value_langue}|=={#CONFIG_VALUE{langue_par_defaut}}|oui) href="/"] [(#GET{value_langue}|=={#CONFIG_VALUE{langue_par_defaut}}|non) href="/#CONFIG_VALUE{value_langue_#COMPTEUR_BOUCLE}/"] [(#CONFIG_VALUE{value_langue_#COMPTEUR_BOUCLE}|=={#LANG}|oui) aria-current="true"]>[(#CONFIG_VALUE{value_langue_#COMPTEUR_BOUCLE}|strtoupper)] - [(#CONFIG_VALUE{value_langue_#COMPTEUR_BOUCLE}|traduire_cfg)]</a> + </li> + </BOUCLE_nombre_de_langue_home> + </BOUCLE_article_home> + <BOUCLE_rubrique_selang2(CONDITION){si #ID_RUBRIQUE|oui}> + <BOUCLE_rubrique_principal2(RUBRIQUES) {id_rubrique}> + <BOUCLE_traductions_rubrique2(RUBRIQUES) {traduction}> + #SET{value_langue, #CONFIG_VALUE{value_langue_#COMPTEUR_BOUCLE}} + #SET{titre_lang, #CONFIG_VALUE{value_langue_#COMPTEUR_BOUCLE}|traduire_cfg} + <li> + <a class="language-dsfr fr-translate__language fr-nav__link " hreflang="#GET{value_langue}" lang="#GET{value_langue}" href="#URL_RUBRIQUE" [(#GET{langue_page}|=={#LANG}|oui) aria-current="true"]>[(#LANG|strtoupper)] - [(#LANG|traduire_cfg)]</a> + </li> + </BOUCLE_traductions_rubrique2> + </BOUCLE_rubrique_principal2> + </BOUCLE_rubrique_selang2> + + <//B__article_home> + <//B_article_selang2> + </ul> + </div> + </div> + </nav> + </li> + </BOUCLE_test_nombre_de_langues> + </BOUCLE_autoriser_auth_selang> </ul> </BOUCLE_masquer_liste_acces_rapide> </div> diff --git a/design_system_admin/lang/design_system_admin_en.php b/design_system_admin/lang/design_system_admin_en.php index d2b08b9f12f42de82ce8c1e194798c62dda110d6..93bc14eecd17823623e3100f4e5a5915946cfffb 100644 --- a/design_system_admin/lang/design_system_admin_en.php +++ b/design_system_admin/lang/design_system_admin_en.php @@ -160,5 +160,5 @@ $GLOBALS[$GLOBALS['idx_lang']] = [ 'cfg_download_doc' => 'Download the document', 'cfg_version_texte' => 'Text version', 'cfg_enlarge_image' => 'Enlarge image', - 'sndi_description' => 'This site is administered by the General Commission for Sustainable Development (CGDD), a cross-sectional department of the Ministry of Ecological Transition and Territorial Cohesion (MTECT), in charge of steering the implementation of the SNDI. This interministerial strategy brings together the Ministries of Agriculture, the Economy, Europe and Foreign Affairs and Research.', + ]; diff --git a/design_system_admin/lang/design_system_admin_fr.php b/design_system_admin/lang/design_system_admin_fr.php index 803a6008f3ed990c9a9855e79d58d976c6ac4cf1..a274b93dc6149bc12639e531d760371a7cba32e0 100644 --- a/design_system_admin/lang/design_system_admin_fr.php +++ b/design_system_admin/lang/design_system_admin_fr.php @@ -7,7 +7,6 @@ if (!defined('_ECRIRE_INC_VERSION')) { } $GLOBALS[$GLOBALS['idx_lang']] = [ - // D 'design_system_admin_titre' => 'Systeme de design de l\'état', @@ -183,5 +182,5 @@ $GLOBALS[$GLOBALS['idx_lang']] = [ 'cfg_download_doc' => 'Télécharger le document', 'cfg_version_texte' => 'Version texte', 'cfg_enlarge_image' => 'Agrandir', - 'sndi_description' => 'Ce site est administré par le Commissariat général au développement durable (CGDD), direction transversale du ministère de la Transition écologique et de la Cohésion des territoires (MTECT), en charge du pilotage de la mise en Å“uvre de la SNDI. Cette stratégie interministérielle associe les ministères de l’Agriculture, de l’Économie, de l’Europe et des affaires étrangères et de la Recherche', + ]; diff --git a/design_system_admin/mes_fonctions.php b/design_system_admin/mes_fonctions.php index 515004f2dd7cdc21dcc0e162ac4201a78f0c1d3d..b84f657e5bb131efa28618011572cb6269fa74e5 100644 --- a/design_system_admin/mes_fonctions.php +++ b/design_system_admin/mes_fonctions.php @@ -85,6 +85,18 @@ function bel_env($env) { return $res; } +function traduire_cfg($lang) { + return _T('design_system_admin:dsfr_cfg_' . $lang); +} +function supprimer_html($texte) { + return strip_tags($texte); +} +function extraire_chemin_url($url) { + $parsed_url = parse_url($url); + return $parsed_url['path'] . (isset($parsed_url['query']) ? '?' . $parsed_url['query'] : ''); +} + + function noP($texte){ $texte = preg_replace("@</p>@iS", "", $texte); $texte = preg_replace("@<p\b.*>@UiS", "", $texte); diff --git a/design_system_admin/rubrique.html b/design_system_admin/rubrique.html index 4dcb538af45acb723cf8bb40e7d711223e9efa6a..83eed8354c9dcb4116715c2147499c589e67d7a5 100644 --- a/design_system_admin/rubrique.html +++ b/design_system_admin/rubrique.html @@ -1,9 +1,16 @@ +[(#REM) les contenus doivent être présent dans un répertoire titré de la valeur de la langue (exemples: anglais -> en, français -> fr ....)] + #SET{langue, #LANG} + #SET{langue_definie, #SELF|extraire_chemin_url|replace{'/',''}|strlen} + [(#GET{langue_definie}|>{1}|oui) #SET{langue, #SELF|extraire_chemin_url|replace{'/',''}}] + [(#GET{langue}|setenv{lang})] + + <BOUCLE_principale(RUBRIQUES) {id_rubrique}> [(#REM) Ne pas supprimer la ligne ci-dessous home=yes si page accueil (sommaire.html) home=no pour les autres pages] <BOUCLE_descriptif_rubrique(CONDITION){si #DESCRIPTIF|oui}> - <INCLURE{fond=inclure/head, home=no, titre=#TITRE, descriptif=#DESCRIPTIF, env} /> + <INCLURE{fond=inclure/head, home=no, titre=#TITRE, descriptif=#DESCRIPTIF, env, lang=#LANG} /> </BOUCLE_descriptif_rubrique> - <INCLURE{fond=inclure/head, home=no, titre=#TITRE, descriptif=#CONFIG_VALUE{meta_description}, env} /> + <INCLURE{fond=inclure/head, home=no, titre=#TITRE, descriptif=#CONFIG_VALUE{meta_description}, env, lang=#LANG} /> <//B_descriptif_rubrique> <INCLURE{fond=inclure/header, home=no, env} /> [(#REM) code de votre page sommaire ci-dessous] @@ -193,7 +200,7 @@ <div class="region-highlight fr-col-12"> - <INCLURE{fond=inclure/partage-rs,self=#SELF} /> + <INCLURE{fond=inclure/partage-rs,self=#SELF, env, home=no, lang=#LANG} /> </div> </div> @@ -208,5 +215,5 @@ </main> [(#REM) Ne pas supprimer la ligne ci-dessous home=yes si page accueil (sommaire.html) home=no pour les autres pages] - <INCLURE{fond=inclure/footer,self=#SELF, env, home=no} /> + <INCLURE{fond=inclure/footer,self=#SELF, env, home=no, lang=#LANG} /> </BOUCLE_principale> \ No newline at end of file diff --git a/design_system_admin/sommaire.html b/design_system_admin/sommaire.html index f9bd86d78b48108727b479496bece60f88da79d2..f2048487b7a65824db8f78fa919934848f7d6237 100644 --- a/design_system_admin/sommaire.html +++ b/design_system_admin/sommaire.html @@ -1,6 +1,13 @@ -[(#REM) Ne pas supprimer la ligne ci-dessous home=yes si page accueil (sommaire.html) home=no pour les autres pages] - <INCLURE{fond=inclure/head, home=yes, titre=#CONFIG_VALUE{title_onglet_navigateur}, titrepage=Accueil, descriptif=#CONFIG_VALUE{meta_description}, env} /> - <INCLURE{fond=inclure/header, home=yes, env} /> + [(#REM) Ne pas supprimer la ligne ci-dessous home=yes si page accueil (sommaire.html) home=no pour les autres pages] + + [(#REM) les contenus doivent être présent dans un répertoire titré de la valeur de la langue (exemples: anglais -> en, français -> fr ....)] + #SET{langue, #LANG} + #SET{langue_definie, #SELF|extraire_chemin_url|replace{'/',''}|strlen} + [(#GET{langue_definie}|>{1}|oui) #SET{langue, #SELF|extraire_chemin_url|replace{'/',''}}] + [(#GET{langue}|setenv{lang})] + + <INCLURE{fond=inclure/head, home=yes, titre=#CONFIG_VALUE{title_onglet_navigateur}, titrepage=Accueil, descriptif=#CONFIG_VALUE{meta_description}, env, lang=#LANG} /> + <INCLURE{fond=inclure/header, home=yes, env, lang=#LANG} /> [(#REM) code de votre page sommaire ci-dessous fr-py-16v] <main role="main" id="contenu"> @@ -44,4 +51,4 @@ [(#REM) Ne pas supprimer la ligne ci-dessous home=yes si page accueil (sommaire.html) home=no pour les autres pages] - <INCLURE{fond=inclure/footer,self=#SELF, env, home=yes} /> \ No newline at end of file + <INCLURE{fond=inclure/footer,self=#SELF, env, home=yes, lang=#LANG} /> \ No newline at end of file diff --git a/design_system_child/lang/design_system_child_en.php b/design_system_child/lang/design_system_child_en.php new file mode 100644 index 0000000000000000000000000000000000000000..ab86ae514b8fc14f1a91fb1e75ace562a889159d --- /dev/null +++ b/design_system_child/lang/design_system_child_en.php @@ -0,0 +1,18 @@ +<?php + +// This is a SPIP language file -- Ceci est un fichier langue de SPIP + +if (!defined('_ECRIRE_INC_VERSION')) { + return; +} + +$GLOBALS[$GLOBALS['idx_lang']] = [ + + 'dsfr_skiplinks_aria_label' => 'Rapid access', + 'dsfr_skiplinks_menu' => 'Menu', + 'dsfr_skiplinks_search' => 'Search engine', + 'dsfr_skiplinks_footer' => 'Footer', + 'dsfr_skiplinks_contenu' => 'Content', + 'dsfr_titresite' => 'Theme DSFR version 1.11.0 for SPIP 4+', + 'dsfr_accueil' => 'Home', +]; diff --git a/design_system_child/lang/design_system_child_fr.php b/design_system_child/lang/design_system_child_fr.php index a90711732a2658b82e191aada4ee3b8de2ed0ac7..253594a65a8481336b66fca72fb286fdff4cf802 100644 --- a/design_system_child/lang/design_system_child_fr.php +++ b/design_system_child/lang/design_system_child_fr.php @@ -8,6 +8,12 @@ if (!defined('_ECRIRE_INC_VERSION')) { $GLOBALS[$GLOBALS['idx_lang']] = [ - // T - 'design_system_child_titre' => 'Thème enfant DSFR', + 'dsfr_skiplinks_aria_label' => 'Accès rapide', + 'dsfr_skiplinks_menu' => 'Menu', + 'dsfr_skiplinks_search' => 'Moteur de recherche', + 'dsfr_skiplinks_footer' => 'Pied de page', + 'dsfr_skiplinks_contenu' => 'Contenu', + 'dsfr_titresite' => 'Thème DSFR version 1.11.0 pour SPIP 4+', + 'dsfr_accueil' => 'Accueil', + ]; diff --git a/design_system_child/rubrique.html b/design_system_child/rubrique.html new file mode 100644 index 0000000000000000000000000000000000000000..83eed8354c9dcb4116715c2147499c589e67d7a5 --- /dev/null +++ b/design_system_child/rubrique.html @@ -0,0 +1,219 @@ +[(#REM) les contenus doivent être présent dans un répertoire titré de la valeur de la langue (exemples: anglais -> en, français -> fr ....)] + #SET{langue, #LANG} + #SET{langue_definie, #SELF|extraire_chemin_url|replace{'/',''}|strlen} + [(#GET{langue_definie}|>{1}|oui) #SET{langue, #SELF|extraire_chemin_url|replace{'/',''}}] + [(#GET{langue}|setenv{lang})] + + +<BOUCLE_principale(RUBRIQUES) {id_rubrique}> + [(#REM) Ne pas supprimer la ligne ci-dessous home=yes si page accueil (sommaire.html) home=no pour les autres pages] + <BOUCLE_descriptif_rubrique(CONDITION){si #DESCRIPTIF|oui}> + <INCLURE{fond=inclure/head, home=no, titre=#TITRE, descriptif=#DESCRIPTIF, env, lang=#LANG} /> + </BOUCLE_descriptif_rubrique> + <INCLURE{fond=inclure/head, home=no, titre=#TITRE, descriptif=#CONFIG_VALUE{meta_description}, env, lang=#LANG} /> + <//B_descriptif_rubrique> + <INCLURE{fond=inclure/header, home=no, env} /> + [(#REM) code de votre page sommaire ci-dessous] + + <main role="main" id="contenu"> + <div class="fr-container-fluid ds_banner" id="contenu"> + <div class="fr-container"> + + + <INCLURE{fond=inclure/fil-ariane, env, title=#TITRE, type=rubrique} /> + + <section class="bloctitre fr-mb-4v" > + <style> + .darkmode{display:none;width:100%;} + .lightmode{display:block;width:100%;} + [data-fr-theme="dark"] .darkmode {display:block;margin-top:-1rem;} + [data-fr-theme="dark"] .lightmode{display:none;margin-top:-1rem;} + [data-fr-theme="dark"] .bg_dark_mode{background-color: #6e6e6e;} + .fr-h4 { + order: 0; + margin-bottom: 1rem; + } + .fr-card.fr-enlarge-link:not(.fr-card--no-arrow) .fr-card__body > .fr-card__desc, .fr-card.fr-enlarge-link:not(.fr-card--no-arrow) .fr-card__body > .fr-card__title { + margin-bottom: 1rem; + } + .fr-card.fr-enlarge-link:not(.fr-card--no-arrow) .fr-card__body > .fr-card__desc { + margin-top: 1rem; + } + .fr-tags-group > li { + line-height: initial; + } + .bloctitre .motcle:hover { + background: var(--grey-50-1000); + color: var(--background-contrast-grey); + } + .fr-tile__img { + width:100%; + height:100%; + margin:0; + } + </style> + [(#REM) on affiche ou non la date en fonction du mot clé Afficher date] + #SET{affichage_date,oui} + <BOUCLE_mots_tous(MOTS){id_mot=30}{id_rubrique}{par titre}> + #SET{affichage_date, #TITRE} + </BOUCLE_mots_tous> + <div class="[ (#ID_ARTICLE|=={105}?{fr-pb-1v bg_dark_mode,bg_dark_mode})] "> + <div class="fr-grid-row fr-grid-row--gutters"> + <div class="fr-col-12 [(#GET{affichage_date}|=={oui}|?{fr-col-md-9,fr-col-md-12})]"> + <h1 class="nonaccueil fr-ml-5v">#TITRE</h1> + </div> + <BOUCLE_verifie_affichage(CONDITION){si #GET{affichage_date}|=={oui}|oui}> + <div class="fr-col-12 fr-col-md-3"> + <p class="fr-tag fr-fi-calendar-line fr-tag--icon-left fr-tag--sm fr-mt-3v"> + <BOUCLE_test_lang_date(CONDITION){si #LANG|=={fr}|oui}> + #GET{published} [(#DATE|affdate)] + </BOUCLE_test_lang_date> + #GET{published} [(#DATE|affdate{F j})], [(#DATE|affdate{Y})] + <//B_test_lang_date> + </p> + </div> + </BOUCLE_verifie_affichage> + </div> + + </div> + </section> + [(#REM) Contenu principal : contenu de l'article] + + + <div class="fr-grid-row fr-grid-row--center fr-grid-row--gutters fr-mb-3v"> + + + <B_srub> + <div class="aside fr-col-12 fr-col-md-12 [(#TOTAL_BOUCLE|>={1}|?{fr-col-lg-4, fr-hidden})] "> + + [(#REM) Rubriques dans la meme rubrique ] + <div class="fr-sidemenu fr-sidemenu--left "> + <nav class="fr-sidemenu" role="navigation" aria-label="Menu latéral"> + <div class="fr-sidemenu__inner"> + <button class="fr-sidemenu__btn" hidden aria-controls="fr-sidemenu-wrapper" aria-expanded="true">Dans cette rubrique</button> + <div class="fr-collapse" id="fr-sidemenu-wrapper"> + <div class="fr-sidemenu__title">Sommaire</div> + <ul class="fr-sidemenu__list"> + <BOUCLE_srub(RUBRIQUES){id_parent}{par num titre}{doublons}> + <li class="fr-sidemenu__item #EXPOSE{fr-sidemenu__item--active} "> + <button class="fr-sidemenu__btn" aria-expanded="false" aria-controls="fr-sidemenu-item-#ID_RUBRIQUE">#TITRE</button> + <div class="fr-collapse" id="fr-sidemenu-item-#ID_RUBRIQUE"> + <ul class="fr-sidemenu__list"> + <BOUCLE_dans_srub(ARTICLES){id_rubrique}{par num titre}> + <li class="fr-sidemenu__item #EXPOSE{fr-sidemenu__item--active}"><a class="fr-sidemenu__link" href="#URL_ARTICLE" target="_self">#TITRE</a></li> + <BOUCLE_recursive(BOUCLE_srub)></BOUCLE_recursive> + </BOUCLE_dans_srub> + </ul> + </div> + </li> + </BOUCLE_srub> + </ul> + </div> + + </nav> + </div></div><!--.aside--> + </B_srub> + + <div class="fr-col-12 fr-col-md-12 fr-col-lg-8"> + <div class="content hentry" id="content"> + + <div class="fr-col-12"> + [<p class="#EDIT{texte} texte surlignable">(#TEXTE)</p>] + + </div> + + </div> + + + [(#REM) Articles de la rubrique ] + + <B_articles> + <div class="menu menu_articles actualites-article">#ANCRE_PAGINATION + + <div class="actus-liste-css "> + [(#REM) Articles de la rubrique ] + <div class=" "> + <BOUCLE_articles(ARTICLES) {id_rubrique} {par num titre}{!par date} {pagination 20}> + <div class="fr-card fr-enlarge-link fr-card--horizontal fr-card--horizontal-half fr-card--sm hauteur-limitee fr-mb-5v"> + <div class="fr-card__body fr-background-alt--orange-terre-battue"> + <div class="fr-card__content"> + <h3 class="fr-card__title"> + <a href="#URL_ARTICLE">#TITRE</a> + </h3> + <p class="fr-card__desc">[(#INTRODUCTION{250}|textebrut)]</p> + + <div class="fr-card__start"> + + <B_mots_cles> + <ul class="fr-tags-group"> + <BOUCLE_mots_cles(MOTS){id_article}{id_groupe IN 2,3}> + <li> + <p class="fr-tag">#TITRE</p> + </li> + </BOUCLE_mots_cles> + </ul> + </B_mots_cles> + + <p class="fr-card__detail fr-icon-calendar-line">[(#DATE|affdate)] + + </p> + </div> + [(#REM) div class="fr-card__end">p class="fr-card__detail fr-icon-warning-fill">détail (optionnel)/p>div>] + </div> + </div> + <BOUCLE_actualites(RUBRIQUES){id_rubrique=#ID_RUBRIQUE}{!id_rubrique IN 17,18}> + <div class="fr-card__header"> + <div class="fr-card__img nomaxheight"> + + [<div class="fr-tile__img">(#LOGO_ARTICLE_RUBRIQUE|image_reduire{400,*}|?{#LOGO_ARTICLE_RUBRIQUE|image_reduire{400,*},'<object type="image/svg+xml" data="/IMG/svg/icone_actu_light_mode.svg" width="200" height="200"></object>'})</div>] + + + + </div> + </div> + </BOUCLE_actualites> + </div> + + + + + + </BOUCLE_articles> + </div> + [<p class="pagination fr-mt-3v" style="text-align: center;">(#PAGINATION{page_precedent_suivant})</p>] + </div> + </div> + </B_articles> + + + + + + + + + + + [<div class="notes"><hr />(#NOTES)</div>] + + + + + <div class="region-highlight fr-col-12"> + <INCLURE{fond=inclure/partage-rs,self=#SELF, env, home=no, lang=#LANG} /> + </div> + + </div> + + </div> + + </div> + </div> + <//B_test_configurated> + + + + </main> + [(#REM) Ne pas supprimer la ligne ci-dessous home=yes si page accueil (sommaire.html) home=no pour les autres pages] + <INCLURE{fond=inclure/footer,self=#SELF, env, home=no, lang=#LANG} /> +</BOUCLE_principale> \ No newline at end of file diff --git a/design_system_child/rubrique=2.html b/design_system_child/rubrique=2.html new file mode 100644 index 0000000000000000000000000000000000000000..691c35e6ce1faaa195f09de906119ee4c7dac2f5 --- /dev/null +++ b/design_system_child/rubrique=2.html @@ -0,0 +1,219 @@ +[(#REM) les contenus doivent être présent dans un répertoire titré de la valeur de la langue (exemples: anglais -> en, français -> fr ....)] + #SET{langue, #LANG} + #SET{langue_definie, #SELF|extraire_chemin_url|replace{'/',''}|strlen} + [(#GET{langue_definie}|>{1}|oui) #SET{langue, #SELF|extraire_chemin_url|replace{'/',''}}] + [(#GET{langue}|setenv{lang})] + + +<BOUCLE_principale(RUBRIQUES) {id_rubrique}> + [(#REM) Ne pas supprimer la ligne ci-dessous home=yes si page accueil (sommaire.html) home=no pour les autres pages] + <BOUCLE_descriptif_rubrique(CONDITION){si #DESCRIPTIF|oui}> + <INCLURE{fond=inclure/head, home=yes, titre=#TITRE, descriptif=#DESCRIPTIF, env, lang=#LANG} /> + </BOUCLE_descriptif_rubrique> + <INCLURE{fond=inclure/head, home=yes, titre=#TITRE, descriptif=#CONFIG_VALUE{meta_description}, env, lang=#LANG} /> + <//B_descriptif_rubrique> + <INCLURE{fond=inclure/header, home=yes, env} /> + [(#REM) code de votre page sommaire ci-dessous] + + <main role="main" id="contenu"> + <div class="fr-container-fluid ds_banner" id="contenu"> + <div class="fr-container"> + + + <INCLURE{fond=inclure/fil-ariane, env, title=#TITRE, type=rubrique} /> + + <section class="bloctitre fr-mb-4v" > + <style> + .darkmode{display:none;width:100%;} + .lightmode{display:block;width:100%;} + [data-fr-theme="dark"] .darkmode {display:block;margin-top:-1rem;} + [data-fr-theme="dark"] .lightmode{display:none;margin-top:-1rem;} + [data-fr-theme="dark"] .bg_dark_mode{background-color: #6e6e6e;} + .fr-h4 { + order: 0; + margin-bottom: 1rem; + } + .fr-card.fr-enlarge-link:not(.fr-card--no-arrow) .fr-card__body > .fr-card__desc, .fr-card.fr-enlarge-link:not(.fr-card--no-arrow) .fr-card__body > .fr-card__title { + margin-bottom: 1rem; + } + .fr-card.fr-enlarge-link:not(.fr-card--no-arrow) .fr-card__body > .fr-card__desc { + margin-top: 1rem; + } + .fr-tags-group > li { + line-height: initial; + } + .bloctitre .motcle:hover { + background: var(--grey-50-1000); + color: var(--background-contrast-grey); + } + .fr-tile__img { + width:100%; + height:100%; + margin:0; + } + </style> + [(#REM) on affiche ou non la date en fonction du mot clé Afficher date] + #SET{affichage_date,oui} + <BOUCLE_mots_tous(MOTS){id_mot=30}{id_rubrique}{par titre}> + #SET{affichage_date, #TITRE} + </BOUCLE_mots_tous> + <div class="[ (#ID_ARTICLE|=={105}?{fr-pb-1v bg_dark_mode,bg_dark_mode})] "> + <div class="fr-grid-row fr-grid-row--gutters"> + <div class="fr-col-12 [(#GET{affichage_date}|=={oui}|?{fr-col-md-9,fr-col-md-12})]"> + <h1 class="nonaccueil fr-ml-5v">#TITRE</h1> + </div> + <BOUCLE_verifie_affichage(CONDITION){si #GET{affichage_date}|=={oui}|oui}> + <div class="fr-col-12 fr-col-md-3"> + <p class="fr-tag fr-fi-calendar-line fr-tag--icon-left fr-tag--sm fr-mt-3v"> + <BOUCLE_test_lang_date(CONDITION){si #LANG|=={fr}|oui}> + #GET{published} [(#DATE|affdate)] + </BOUCLE_test_lang_date> + #GET{published} [(#DATE|affdate{F j})], [(#DATE|affdate{Y})] + <//B_test_lang_date> + </p> + </div> + </BOUCLE_verifie_affichage> + </div> + + </div> + </section> + [(#REM) Contenu principal : contenu de l'article] + + + <div class="fr-grid-row fr-grid-row--center fr-grid-row--gutters fr-mb-3v"> + + + <B_srub> + <div class="aside fr-col-12 fr-col-md-12 [(#TOTAL_BOUCLE|>={1}|?{fr-col-lg-4, fr-hidden})] "> + + [(#REM) Rubriques dans la meme rubrique ] + <div class="fr-sidemenu fr-sidemenu--left "> + <nav class="fr-sidemenu" role="navigation" aria-label="Menu latéral"> + <div class="fr-sidemenu__inner"> + <button class="fr-sidemenu__btn" hidden aria-controls="fr-sidemenu-wrapper" aria-expanded="true">Dans cette rubrique</button> + <div class="fr-collapse" id="fr-sidemenu-wrapper"> + <div class="fr-sidemenu__title">Sommaire</div> + <ul class="fr-sidemenu__list"> + <BOUCLE_srub(RUBRIQUES){id_parent}{par num titre}{doublons}> + <li class="fr-sidemenu__item #EXPOSE{fr-sidemenu__item--active} "> + <button class="fr-sidemenu__btn" aria-expanded="false" aria-controls="fr-sidemenu-item-#ID_RUBRIQUE">#TITRE</button> + <div class="fr-collapse" id="fr-sidemenu-item-#ID_RUBRIQUE"> + <ul class="fr-sidemenu__list"> + <BOUCLE_dans_srub(ARTICLES){id_rubrique}{par num titre}> + <li class="fr-sidemenu__item #EXPOSE{fr-sidemenu__item--active}"><a class="fr-sidemenu__link" href="#URL_ARTICLE" target="_self">#TITRE</a></li> + <BOUCLE_recursive(BOUCLE_srub)></BOUCLE_recursive> + </BOUCLE_dans_srub> + </ul> + </div> + </li> + </BOUCLE_srub> + </ul> + </div> + + </nav> + </div></div><!--.aside--> + </B_srub> + + <div class="fr-col-12 fr-col-md-12 fr-col-lg-8"> + <div class="content hentry" id="content"> + + <div class="fr-col-12"> + [<p class="#EDIT{texte} texte surlignable">(#TEXTE)</p>] + + </div> + + </div> + + + [(#REM) Articles de la rubrique ] + + <B_articles> + <div class="menu menu_articles actualites-article">#ANCRE_PAGINATION + + <div class="actus-liste-css "> + [(#REM) Articles de la rubrique ] + <div class=" "> + <BOUCLE_articles(ARTICLES) {id_rubrique} {par num titre}{!par date} {pagination 20}> + <div class="fr-card fr-enlarge-link fr-card--horizontal fr-card--horizontal-half fr-card--sm hauteur-limitee fr-mb-5v"> + <div class="fr-card__body fr-background-alt--orange-terre-battue"> + <div class="fr-card__content"> + <h3 class="fr-card__title"> + <a href="#URL_ARTICLE">#TITRE</a> + </h3> + <p class="fr-card__desc">[(#INTRODUCTION{250}|textebrut)]</p> + + <div class="fr-card__start"> + + <B_mots_cles> + <ul class="fr-tags-group"> + <BOUCLE_mots_cles(MOTS){id_article}{id_groupe IN 2,3}> + <li> + <p class="fr-tag">#TITRE</p> + </li> + </BOUCLE_mots_cles> + </ul> + </B_mots_cles> + + <p class="fr-card__detail fr-icon-calendar-line">[(#DATE|affdate)] + + </p> + </div> + [(#REM) div class="fr-card__end">p class="fr-card__detail fr-icon-warning-fill">détail (optionnel)/p>div>] + </div> + </div> + <BOUCLE_actualites(RUBRIQUES){id_rubrique=#ID_RUBRIQUE}{!id_rubrique IN 17,18}> + <div class="fr-card__header"> + <div class="fr-card__img nomaxheight"> + + [<div class="fr-tile__img">(#LOGO_ARTICLE_RUBRIQUE|image_reduire{400,*}|?{#LOGO_ARTICLE_RUBRIQUE|image_reduire{400,*},'<object type="image/svg+xml" data="/IMG/svg/icone_actu_light_mode.svg" width="200" height="200"></object>'})</div>] + + + + </div> + </div> + </BOUCLE_actualites> + </div> + + + + + + </BOUCLE_articles> + </div> + [<p class="pagination fr-mt-3v" style="text-align: center;">(#PAGINATION{page_precedent_suivant})</p>] + </div> + </div> + </B_articles> + + + + + + + + + + + [<div class="notes"><hr />(#NOTES)</div>] + + + + + <div class="region-highlight fr-col-12"> + <INCLURE{fond=inclure/partage-rs,self=#SELF, env, home=yes, lang=#LANG} /> + </div> + + </div> + + </div> + + </div> + </div> + <//B_test_configurated> + + + + </main> + [(#REM) Ne pas supprimer la ligne ci-dessous home=yes si page accueil (sommaire.html) home=yes pour les autres pages] + <INCLURE{fond=inclure/footer,self=#SELF, env, home=yes, lang=#LANG} /> +</BOUCLE_principale> \ No newline at end of file diff --git a/design_system_child/sommaire.html b/design_system_child/sommaire.html new file mode 100644 index 0000000000000000000000000000000000000000..f2048487b7a65824db8f78fa919934848f7d6237 --- /dev/null +++ b/design_system_child/sommaire.html @@ -0,0 +1,54 @@ + [(#REM) Ne pas supprimer la ligne ci-dessous home=yes si page accueil (sommaire.html) home=no pour les autres pages] + + [(#REM) les contenus doivent être présent dans un répertoire titré de la valeur de la langue (exemples: anglais -> en, français -> fr ....)] + #SET{langue, #LANG} + #SET{langue_definie, #SELF|extraire_chemin_url|replace{'/',''}|strlen} + [(#GET{langue_definie}|>{1}|oui) #SET{langue, #SELF|extraire_chemin_url|replace{'/',''}}] + [(#GET{langue}|setenv{lang})] + + <INCLURE{fond=inclure/head, home=yes, titre=#CONFIG_VALUE{title_onglet_navigateur}, titrepage=Accueil, descriptif=#CONFIG_VALUE{meta_description}, env, lang=#LANG} /> + <INCLURE{fond=inclure/header, home=yes, env, lang=#LANG} /> + [(#REM) code de votre page sommaire ci-dessous fr-py-16v] + + <main role="main" id="contenu"> + <div class="fr-container"> + <h1>Bienvenue sur le Plugin SPIP pour le Système de Design de l'État</h1> + <p>Transformez votre site SPIP avec l'élégance et la fonctionnalité du Design Système de l'État</p> + <div> + <p><strong>Bonjour</strong>,</p> + <p>Vous êtes sur la page d'accueil du plugin SPIP qui vous permet d'intégrer facilement le Système de Design de l'État français à votre site SPIP. Ce plugin a été conçu pour rendre votre site plus accessible, plus fonctionnel et en phase avec les standards modernes de design web.</p> + <h2>Fonctionnalités</h2> + <ul> + <li><strong>Intégration facile</strong> : Installez le plugin et activez-le, votre site SPIP adoptera instantanément le design du Système de l'État.</li> + <li><strong>Accessibilité</strong> : Conçu avec une attention particulière à l'accessibilité pour rendre votre site utilisable par le plus grand nombre.</li> + <li><strong>Responsive</strong> : Adaptatif sur tous les appareils, du mobile au desktop.</li> + <li><strong>Personnalisable</strong> : Options pour personnaliser les couleurs, les typographies et plus encore.</li> + </ul> + <h2>Fonctionnalités</h2> + <ol> + <li><strong>Installation</strong>: Téléchargez et installez le plugin via l'interface d'administration de SPIP.</li> + <li><strong>Activation</strong>: Activez le plugin dans la section des plugins de SPIP.</li> + <li><strong>Personnalisation</strong>: Accédez aux options de personnalisation pour ajuster le design selon vos besoins.</li> + <li><strong>Prévisualisation et Déploiement</strong>: Prévisualisez les changements et déployez-les sur votre site.</li> + </ol> + <h2>Ressources</h2> + <ul> + <li><a href="https://dsfr-spip.digital-vision-pro.com/">Site de test</a></li> + <li><a href="https://gitlab-forge.din.developpement-durable.gouv.fr/pub/cgdd-public/bun-poleweb/systeme-de-design-de-l-etat/cms-spip/z-dsfr/-/wikis/home" target="_blank">Documentation</a></li> + <li><a href="https://gitlab-forge.din.developpement-durable.gouv.fr/pub/cgdd-public/bun-poleweb/systeme-de-design-de-l-etat/cms-spip/z-dsfr" target="_blank">Git public</a></li> + <li><a href="https://www.spip.net/fr_article2670.html" target="_new">Télécharger SPIP</a></li> + <li><a href="https://www.spip.net/" target="_new">Documentation SPIP</a></li> + </ul> + <h2>Minima requis</h2> + <p>Pour pouvoir utiliser ce plugin, vous devez avoir votre site en version 4.2.<br>La première version utilisée pour ce plugin est la version spip 4.2.4.<br>La version de spip utilisée sera indiquée dans la documentation ainsi que sur le site de test.</p> + <p>Une archive des versions sera aussi disponible.</p> + <p>Si vous voyez cette page, c'est que vous avez oublié à minima, de créer les fichiers sommaire.html, article.html et rubrique.html dans le répertoire design_system_child.<br>Des fichiers exemples avec le code minimal à avoir sont disponibles dans le répertoire design_system_child (sommaire.md, article.md, rubrique.md). Vous devrez renommer ces fichiers avec une extension .html pour qu'ils soient pris en compte.</p> + </div> + </div> + </main> + + + + + [(#REM) Ne pas supprimer la ligne ci-dessous home=yes si page accueil (sommaire.html) home=no pour les autres pages] + <INCLURE{fond=inclure/footer,self=#SELF, env, home=yes, lang=#LANG} /> \ No newline at end of file diff --git a/design_system_dependences/metasplus/formulaires/configurer_metasplus.html b/design_system_dependences/metasplus/formulaires/configurer_metasplus.html new file mode 100644 index 0000000000000000000000000000000000000000..50163c2ce5b727b43714da0f9fab784171e75685 --- /dev/null +++ b/design_system_dependences/metasplus/formulaires/configurer_metasplus.html @@ -0,0 +1,70 @@ +<div class="formulaire_spip formulaire_cfg formulaire_#FORM"> + +<h3 class='titrem'><:metasplus:titre_config_metasplus:></h3> + +[<p class="reponse_formulaire reponse_formulaire_ok">(#ENV*{message_ok})</p>] +[<p class="reponse_formulaire reponse_formulaire_erreur">(#ENV*{message_erreur})</p>] + +<form method="post" action="#ENV{action}" enctype="multipart/form-data"> +<div> + + #ACTION_FORMULAIRE{#ENV{action}} + <div class="editer-groupe"> + + [(#REM) Nb : attention, bizarrement un name par choix ] + #SET{erreurs_reseaux,#LISTE{#ENV{erreurs/dublincore},#ENV{erreurs/opengraph},#ENV{erreurs/twitter}}|array_filter} + #SET{erreurs_reseaux,#GET{erreurs_reseaux}|implode{', '}} + <div class="editer editer_reseaux[ (#GET{erreurs_reseaux}|oui)erreur]"> + <label><:metasplus:label_reseaux:></label> + <div class="choix"> + [<span class="erreur_message">(#ENV{erreurs/dublincore})</span>] + <input type="checkbox" name="dublincore" id='dublincore' class="checkbox" value="on"[ (#ENV{dublincore}|oui)checked="checked"] /> + <label for="dublincore"><:metasplus:label_dublincore:></label> + </div> + <div class="choix"> + [<span class="erreur_message">(#ENV{erreurs/opengraph})</span>] + <input type="checkbox" name="opengraph" id='opengraph' class="checkbox" value="on"[ (#ENV{opengraph}|oui)checked="checked"] /> + <label for="opengraph"><:metasplus:label_opengraph:></label> + </div> + <div class="choix"> + [<span class="erreur_message">(#ENV{erreurs/twitter})</span>] + <input type="checkbox" name="twitter" id='twitter' class="checkbox" value="on"[ (#ENV{twitter}|oui)checked="checked"] /> + <label for="twitter"><:metasplus:label_twitter:></label> + </div> + </div> + + #SET{name,masquer_auteurs} + #SET{erreurs,#ENV{erreurs/#GET{name}}} + <div class="editer editer_#GET{name}[ (#GET{erreurs}|oui)erreur]"> + <label for="#GET{name}"><:metasplus:label_masquer_auteurs:></label> + <p class="explication"><:metasplus:explication_masquer_auteurs:></p> + [<span class="erreur_message">(#GET{erreurs})</span>] + <div class="choix"> + <input type="checkbox" name="#GET{name}" id="#GET{name}" class="checkbox" value="on"[ (#ENV{#GET{name}}|oui)checked="checked"] /> + <label for="#GET{name}"><:metasplus:label_case_masquer_auteurs:></label> + </div> + </div> + + #SET{name,id_doc_logo} + #SET{erreurs,#ENV{erreurs/#GET{name}}} + <div class="editer editer_id_doc_logo[ (#GET{erreurs}|oui)erreur]"> + <label for="#GET{name}"><:metasplus:logo_bis:></label> + <p class="explication"><:metasplus:explication_id_doc_logo:></p> + <input type="hidden" value="#ENV{#GET{name}}" name="#GET{name}"> + <BOUCLE_doc(DOCUMENTS){id_document=#CONFIG{metasplus/id_doc_logo}}> + [(#LOGO_DOCUMENT|#URL_DOCUMENT)] + [(#AUTORISER{supprimer,document,#ID_DOCUMENT}|oui) + [(#URL_ACTION_AUTEUR{supprimer_document,#ID_DOCUMENT,#SELF}|icone_horizontale{<:medias:bouton_enlever_supprimer_document:>,image,del})] + ] + </BOUCLE_doc> + <input type="file" id="#GET{name}" name="#GET{name}" class="file bigup" /> + <//B_doc> + </div> + + </div> + <p class="boutons"> + <input type="submit" name="_cfg_ok" value="<:bouton_enregistrer:>" class="submit" /> + </p> +</div> +</form> +</div> diff --git a/design_system_dependences/squelettes_par_rubrique/lang/paquet-squelettes_par_rubrique_ar.php b/design_system_dependences/squelettes_par_rubrique/lang/paquet-squelettes_par_rubrique_ar.php new file mode 100644 index 0000000000000000000000000000000000000000..faeda13cfcc215cec03bc0191b454e21c2f72e49 --- /dev/null +++ b/design_system_dependences/squelettes_par_rubrique/lang/paquet-squelettes_par_rubrique_ar.php @@ -0,0 +1,15 @@ +<?php +// This is a SPIP language file -- Ceci est un fichier langue de SPIP +// extrait automatiquement de https://trad.spip.net/tradlang_module/paquet-squelettes_par_rubrique?lang_cible=ar +// ** ne pas modifier le fichier ** + +if (!defined('_ECRIRE_INC_VERSION')) { + return; +} + +$GLOBALS[$GLOBALS['idx_lang']] = array( + + // S + 'squelettes_par_rubrique_description' => 'دعم Ø§Ù„ØµÙØØ§Øª النموذجية التي تملك لاØÙ‚Ø© رقمية Ùˆ/او لاØÙ‚Ø© رمز لغة', + 'squelettes_par_rubrique_slogan' => 'دعم Ø§Ù„ØµÙØØ§Øª النموذجية ذات اللواØÙ‚ ÙÙŠ SPIP' +);