Browse Source

Squelette Ueno (上野) ( ... en fait @-brest)

svn/root
erational@erational.org 3 years ago
commit
760d1dabda
  1. 49
      .gitattributes
  2. 44
      404.html
  3. 39
      article.html
  4. 40
      auteur.html
  5. 319
      css/bootstrap-reboot.css
  6. 9887
      css/bootstrap.css
  7. 1200
      css/style.css
  8. 68
      formulaires/configurer_ueno.html
  9. 19
      formulaires/recherche.html
  10. BIN
      img/404.png
  11. BIN
      img/arrow-left.png
  12. BIN
      img/arrow-up.png
  13. BIN
      img/banner.png
  14. BIN
      img/icon-doc.png
  15. BIN
      img/logo-generique.png
  16. BIN
      img/logo_auteur.png
  17. 1
      img/search.svg
  18. BIN
      img/ueno.png
  19. 76
      inc/inc_article_full.html
  20. 44
      inc/inc_article_preview.html
  21. 35
      inc/inc_auteur.html
  22. 28
      inc/inc_auteur_preview.html
  23. 9
      inc/inc_couleur.html
  24. 28
      inc/inc_footer.html
  25. 21
      inc/inc_forum.html
  26. 24
      inc/inc_head.html
  27. 52
      inc/inc_header.html
  28. 22
      inc/inc_liste_articles.html
  29. 30
      inc/inc_logo_article.html
  30. 48
      inc/inc_recherche.html
  31. 36
      inc/inc_recherche_liste_articles.html
  32. 42
      inc/inc_rubrique.html
  33. 26
      inc/inc_sidebar.html
  34. 47
      inc/inc_sommaire.html
  35. 62
      js/gui.js
  36. 15
      lang/paquet-ueno_fr.php
  37. 152
      lang/ueno_fr.php
  38. 63
      login.html
  39. 52
      modeles/image.html
  40. 7
      mot.html
  41. 21
      paquet.xml
  42. 67
      plan.html
  43. 7
      prive/squelettes/contenu/configurer_ueno.html
  44. BIN
      prive/themes/spip/images/ueno-16.png
  45. 39
      recherche.html
  46. 26
      robots.txt.html
  47. 43
      rubrique.html
  48. 40
      sommaire.html
  49. 18
      ueno_options.php

49
.gitattributes vendored

@ -0,0 +1,49 @@
* text=auto !eol
/404.html -text
/article.html -text
/auteur.html -text
css/bootstrap-reboot.css -text
css/bootstrap.css -text
css/style.css -text
formulaires/configurer_ueno.html -text
formulaires/recherche.html -text
img/404.png -text
img/arrow-left.png -text
img/arrow-up.png -text
img/banner.png -text
img/icon-doc.png -text
img/logo-generique.png -text
img/logo_auteur.png -text
img/search.svg -text
img/ueno.png -text
inc/inc_article_full.html -text
inc/inc_article_preview.html -text
inc/inc_auteur.html -text
inc/inc_auteur_preview.html -text
inc/inc_couleur.html -text
inc/inc_footer.html -text
inc/inc_forum.html -text
inc/inc_head.html -text
inc/inc_header.html -text
inc/inc_liste_articles.html -text
inc/inc_logo_article.html -text
inc/inc_recherche.html -text
inc/inc_recherche_liste_articles.html -text
inc/inc_rubrique.html -text
inc/inc_sidebar.html -text
inc/inc_sommaire.html -text
js/gui.js -text
lang/paquet-ueno_fr.php -text
lang/ueno_fr.php -text
/login.html -text
modeles/image.html -text
/mot.html -text
/paquet.xml -text
/plan.html -text
prive/squelettes/contenu/configurer_ueno.html -text
prive/themes/spip/images/ueno-16.png -text
/recherche.html -text
/robots.txt.html -text
/rubrique.html -text
/sommaire.html -text
/ueno_options.php -text

44
404.html

@ -0,0 +1,44 @@
[(#REM)
page 404
param:
- (rien)
]#HTTP_HEADER{HTTP/1.0 #ENV{code,'404 Not Found'}}
#HTTP_HEADER{"Cache-Control: no-store, no-cache, must-revalidate"}
#HTTP_HEADER{Pragma: no-cache}<!DOCTYPE html>
<html lang="#LANG">
<head>
<INCLURE{fond=inc/inc_head,no-bot} />
<title><:pass_erreur:> [(#ENV{status, 404}|intval) - ][(#NOM_SITE_SPIP|textebrut)]</title>
</head>
<body><div class="main main-article" id="top">
<INCLURE{fond=inc/inc_header} />
<!-- content -->
<div class="content container">
<div class="row">
<!-- content-main -->
<div class="col-md-9 content-main">
<!-- content -->
<div class="content-main-wrapper">
<h1 class="article-title"><:pass_erreur:> [(#ENV{status, 404}|intval)]</h1>
<p><:ueno:404_sorry:></p>
[<img src="(#CHEMIN{img/404.png})" alt="<:pass_erreur:> 404" >]
</div>
<!-- #content -->
</div>
<!-- #content-main -->
</div>
</div>
<!-- #content -->
<INCLURE{fond=inc/inc_footer} />
</div></body>

39
article.html

@ -0,0 +1,39 @@
[(#REM)
page article
param:
- id_article
]<BOUCLE_art(ARTICLES){id_article}><!DOCTYPE html>
<html lang="#LANG">
<head>
<INCLURE{fond=inc/inc_head} />
<title>[(#TITRE|couper{50,'&nbsp;\[...\]'}|textebrut)] - [(#NOM_SITE_SPIP|textebrut)]</title>
[<meta name="description" content="(#INTRODUCTION{130}|attribut_html)" />]
[<link rel="canonical" href="(#URL_ARTICLE|url_absolue)" />]
</head>
<body><div class="main main-article" id="top">
<INCLURE{fond=inc/inc_header, id_rubrique, env} />
<!-- content -->
<div class="content container">
<div class="row">
<!-- content-main -->
<div class="col-md-9 content-main">
<INCLURE{fond=inc/inc_article_full, id_article} />
</div>
<!-- #content-main -->
<!-- content-sidebar -->
<div class="col-md-3 content-sidebar">
<INCLURE{fond=inc/inc_sidebar, id_article} />
</div>
<!-- #content-sidebar -->
</div>
</div>
<!-- #content -->
<INCLURE{fond=inc/inc_footer} />
</div></body>
</html></BOUCLE_art>

40
auteur.html

@ -0,0 +1,40 @@
[(#REM)
page auteur
param:
- id_auteur
]<BOUCLE_auteur(AUTEURS){id_auteur}{tout}><!DOCTYPE html>
<html lang="#LANG">
<head>
<INCLURE{fond=inc/inc_head} />
<title>[(#NOM_AUTEUR|oui)#PRENOM_AUTEUR #NOM_AUTEUR][(#NOM_AUTEUR|non)#NOM][ - (#NOM_SITE_SPIP|textebrut) ]</title>
[<meta name="description" content="(#BIO{150}|attribut_html)" />]
[<link rel="canonical" href="(#URL_AUTEUR|url_absolue)" />]
</head>
<body><div class="main main-article" id="top">
<INCLURE{fond=inc/inc_header} />
<!-- content -->
<div class="content container">
<div class="row">
<!-- content-main -->
<div class="col-md-9 content-main">
<INCLURE{fond=inc/inc_auteur, id_auteur} />
</div>
<!-- #content-main -->
<!-- content-sidebar -->
<div class="col-md-3 content-sidebar">
<INCLURE{fond=inc/inc_sidebar} />
</div>
<!-- #content-sidebar -->
</div>
</div>
<!-- #content -->
<INCLURE{fond=inc/inc_footer} />
</div></body>
</html></BOUCLE_auteur>

319
css/bootstrap-reboot.css vendored

@ -0,0 +1,319 @@
/*!
* Bootstrap Reboot v4.2.1 (https://getbootstrap.com/)
* Copyright 2011-2018 The Bootstrap Authors
* Copyright 2011-2018 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* Forked from Normalize.css, licensed MIT (https://github.com/necolas/normalize.css/blob/master/LICENSE.md)
*/
*,
*::before,
*::after {
box-sizing: border-box;
}
html {
font-family: sans-serif;
line-height: 1.15;
-webkit-text-size-adjust: 100%;
-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
}
article, aside, figcaption, figure, footer, header, hgroup, main, nav, section {
display: block;
}
body {
margin: 0;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
font-size: 1rem;
font-weight: 400;
line-height: 1.5;
color: #212529;
text-align: left;
background-color: #fff;
}
[tabindex="-1"]:focus {
outline: 0 !important;
}
hr {
box-sizing: content-box;
height: 0;
overflow: visible;
}
h1, h2, h3, h4, h5, h6 {
margin-top: 0;
margin-bottom: 0.5rem;
}
p {
margin-top: 0;
margin-bottom: 1rem;
}
abbr[title],
abbr[data-original-title] {
text-decoration: underline;
-webkit-text-decoration: underline dotted;
text-decoration: underline dotted;
cursor: help;
border-bottom: 0;
text-decoration-skip-ink: none;
}
address {
margin-bottom: 1rem;
font-style: normal;
line-height: inherit;
}
ol,
ul,
dl {
margin-top: 0;
margin-bottom: 1rem;
}
ol ol,
ul ul,
ol ul,
ul ol {
margin-bottom: 0;
}
dt {
font-weight: 700;
}
dd {
margin-bottom: .5rem;
margin-left: 0;
}
blockquote {
margin: 0 0 1rem;
}
b,
strong {
font-weight: bolder;
}
small {
font-size: 80%;
}
sub,
sup {
position: relative;
font-size: 75%;
line-height: 0;
vertical-align: baseline;
}
sub {
bottom: -.25em;
}
sup {
top: -.5em;
}
a {
color: #007bff;
text-decoration: none;
background-color: transparent;
}
a:hover {
color: #0056b3;
text-decoration: underline;
}
a:not([href]):not([tabindex]) {
color: inherit;
text-decoration: none;
}
a:not([href]):not([tabindex]):hover, a:not([href]):not([tabindex]):focus {
color: inherit;
text-decoration: none;
}
a:not([href]):not([tabindex]):focus {
outline: 0;
}
pre,
code,
kbd,
samp {
font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
font-size: 1em;
}
pre {
margin-top: 0;
margin-bottom: 1rem;
overflow: auto;
}
figure {
margin: 0 0 1rem;
}
img {
vertical-align: middle;
border-style: none;
}
svg {
overflow: hidden;
vertical-align: middle;
}
table {
border-collapse: collapse;
}
caption {
padding-top: 0.75rem;
padding-bottom: 0.75rem;
color: #6c757d;
text-align: left;
caption-side: bottom;
}
th {
text-align: inherit;
}
label {
display: inline-block;
margin-bottom: 0.5rem;
}
button {
border-radius: 0;
}
button:focus {
outline: 1px dotted;
outline: 5px auto -webkit-focus-ring-color;
}
input,
button,
select,
optgroup,
textarea {
margin: 0;
font-family: inherit;
font-size: inherit;
line-height: inherit;
}
button,
input {
overflow: visible;
}
button,
select {
text-transform: none;
}
button,
[type="button"],
[type="reset"],
[type="submit"] {
-webkit-appearance: button;
}
button::-moz-focus-inner,
[type="button"]::-moz-focus-inner,
[type="reset"]::-moz-focus-inner,
[type="submit"]::-moz-focus-inner {
padding: 0;
border-style: none;
}
input[type="radio"],
input[type="checkbox"] {
box-sizing: border-box;
padding: 0;
}
input[type="date"],
input[type="time"],
input[type="datetime-local"],
input[type="month"] {
-webkit-appearance: listbox;
}
textarea {
overflow: auto;
resize: vertical;
}
fieldset {
min-width: 0;
padding: 0;
margin: 0;
border: 0;
}
legend {
display: block;
width: 100%;
max-width: 100%;
padding: 0;
margin-bottom: .5rem;
font-size: 1.5rem;
line-height: inherit;
color: inherit;
white-space: normal;
}
progress {
vertical-align: baseline;
}
[type="number"]::-webkit-inner-spin-button,
[type="number"]::-webkit-outer-spin-button {
height: auto;
}
[type="search"] {
outline-offset: -2px;
-webkit-appearance: none;
}
[type="search"]::-webkit-search-decoration {
-webkit-appearance: none;
}
::-webkit-file-upload-button {
font: inherit;
-webkit-appearance: button;
}
output {
display: inline-block;
}
summary {
display: list-item;
cursor: pointer;
}
template {
display: none;
}
[hidden] {
display: none !important;
}
/*# sourceMappingURL=bootstrap-reboot.css.map */

9887
css/bootstrap.css vendored

File diff suppressed because it is too large Load Diff

1200
css/style.css

File diff suppressed because it is too large Load Diff

68
formulaires/configurer_ueno.html

@ -0,0 +1,68 @@
<div class="formulaire_spip formulaire_configurer formulaire_#FORM">
<h3 class="titrem"><:ueno:cfg_titre_parametrages:></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}">
<div>
#ACTION_FORMULAIRE
<fieldset>
<legend><:ueno:cfg_header:></legend>
[(#SAISIE{selecteur_article, header_articles,
multiple=oui,
label=<:ueno:cfg_header_articles:>,
explication=<:ueno:cfg_header_articles_explication:>})]
[(#SAISIE{oui_non, affiche_recherche,
label=<:ueno:cfg_affiche_recherche:>})]
</fieldset>
<fieldset>
<legend><:ueno:cfg_article_preview:></legend>
[(#SAISIE{oui_non, affiche_date_article_preview,
label=<:ueno:cfg_affiche_date_article_preview:>})]
[(#SAISIE{oui_non, affiche_auteur_article_preview,
label=<:ueno:cfg_affiche_auteur_article_preview:>})]
</fieldset>
<fieldset>
<legend><:ueno:cfg_article:></legend>
[(#SAISIE{oui_non, affiche_date_article,
label=<:ueno:cfg_affiche_date_article:>})]
[(#SAISIE{oui_non, affiche_auteur_article,
label=<:ueno:cfg_affiche_auteur_article:>})]
[(#SAISIE{oui_non, affiche_forum_article,
label=<:ueno:cfg_affiche_forum_article:>,
explication=<:ueno:cfg_affiche_forum_article_explication:>})]
</fieldset>
<fieldset>
<legend><:ueno:cfg_sidebar:></legend>
[(#SAISIE{selecteur_article, sidebar_articles,
multiple=oui,
label=<:ueno:cfg_sidebar_articles:>,
explication=<:ueno:cfg_sidebar_articles_explication:>})]
</fieldset>
<fieldset>
<legend><:ueno:cfg_footer:></legend>
[(#SAISIE{selecteur_article, footer_articles,
multiple=oui,
label=<:ueno:cfg_footer_articles:>,
explication=<:ueno:cfg_footer_articles_explication:>})]
[(#SAISIE{oui_non, affiche_plan,
label=<:ueno:cfg_affiche_plan:>})]
</fieldset>
<input type="hidden" name="_meta_casier" value="ueno" />
<p class="boutons"><span class="image_loading">&nbsp;</span><input type="submit" class="submit" value="<:bouton_enregistrer:>" /></p>
</div>
</form>
</div>
<div style="padding:1rem;background-color:#eee"><:ueno:ours:></div>

19
formulaires/recherche.html

@ -0,0 +1,19 @@
[(#REM)
formulaire de recherche
param:
- recherche (facultatif) la recherche
]<form action="[(#ENV{action})]" method="get" class="search-form">
<fieldset>
[(#ENV{action}|form_hidden)]
<input type="hidden" name="lang" value="#LANG" />
<input name="page" value="recherche" type="hidden"/>
<input type="search" class="span search" placeholder="Rechercher" accesskey="4" name="recherche" id="recherche" [ value="(#ENV{recherche})"]>
<!-- <input type="submit" class="search-submit" value="OK" />-->
<input type="image" class="search-submit" src="#CHEMIN{img/search.svg}" alt="" />
</fieldset>
</form>

BIN
img/404.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

BIN
img/arrow-left.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

BIN
img/arrow-up.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

BIN
img/banner.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

BIN
img/icon-doc.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

BIN
img/logo-generique.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

BIN
img/logo_auteur.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

1
img/search.svg

@ -0,0 +1 @@
<svg aria-hidden="true" data-prefix="fas" data-icon="search" class="svg-inline--fa fa-search fa-w-16" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="#1041fb" d="M505 442.7L405.3 343c-4.5-4.5-10.6-7-17-7H372c27.6-35.3 44-79.7 44-128C416 93.1 322.9 0 208 0S0 93.1 0 208s93.1 208 208 208c48.3 0 92.7-16.4 128-44v16.3c0 6.4 2.5 12.5 7 17l99.7 99.7c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.6.1-34zM208 336c-70.7 0-128-57.2-128-128 0-70.7 57.2-128 128-128 70.7 0 128 57.2 128 128 0 70.7-57.2 128-128 128z"></path></svg>

After

Width:  |  Height:  |  Size: 554 B

BIN
img/ueno.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.6 KiB

76
inc/inc_article_full.html

@ -0,0 +1,76 @@
[(#REM)
article entier
param:
- id_article
]<BOUCLE_findArt(ARTICLES){id_article}>
<!-- Fil d'Ariane -->
<a name="contenu" accesskey="2"></a>
<div class="ariane theme secteur-#ID_SECTEUR <INCLURE{fond=inc/inc_couleur,id_rubrique=#ID_SECTEUR} />">
<ul>
<li class="home"><a href="#URL_SITE_SPIP"><:ueno:accueil_site:></a><span>/</span></li>
<BOUCLE_ariane(HIERARCHIE){id_article}><li[(#ID_RUBRIQUE|=={#_findArt:ID_RUBRIQUE}|oui) class="on"]><a href="#URL_RUBRIQUE">[(#TITRE|couper{50})]</a>[(#ID_RUBRIQUE|=={#_findArt:ID_RUBRIQUE}|non)<span>/</span>]</li></BOUCLE_ariane>
</ul>
</div>
<!-- content -->
<div class="content-main-wrapper">
[<div class="#EDIT{surtitre} article-surtitre">(#SURTITRE)</div>]
[<h1 class="#EDIT{titre} article-titre">(#TITRE)</h1>]
<BOUCLE_agenda(EVENEMENTS ?){par date}{id_article}><div class="date">[(#DATE_DEBUT|Agenda_affdate_debut_fin{#DATE_FIN,#HORAIRE})][ - <strong>(#LIEU)</strong>]</div></BOUCLE_agenda>
[<h2 class="#EDIT{soustitre} article-soustitre">(#SOUSTITRE)</h2>]
[<div class="#EDIT{descriptif} article-descriptif">(#DESCRIPTIF)</div>]
<div class="logo">[<img src="(#LOGO_ARTICLE|image_reduire{520,0}|extraire_attribut{src})" alt="[(#TITRE|textebrut)]" />]</div></BOUCLE_trad_logo>
[<div class="#EDIT{chapo} article-chapo">(#CHAPO)</div>]
[<div class="#EDIT{texte} article-texte">(#TEXTE|image_reduire{1000,0})</div>]
[<div class="hypertxt"><strong>URL: </strong> <a href="#URL_SITE" class="spip_out">(#NOM_SITE)</a></div>]
[<div class="#EDIT{ps} article-ps">(#PS)</div>]
[<div class="article-notes">(#NOTES)</div>]
[(#REM) Portfolio: album d'images avec visionneuse fancybox]
<B_doc><div class="portfolio">
<BOUCLE_doc(DOCUMENTS){id_article}{extension IN png,jpg,gif}{mode=document}{par num titre, date}{vu=non}>
<div class="portfolio-item">[<a href="[(#URL_DOCUMENT)]" type="#MIME_TYPE" rel="fancy-g1"[ title="(#TITRE|attribut_html) [ - (#DESCRIPTIF|attribut_html)]"]>(#FICHIER|copie_locale|image_reduire{0,160}|image_recadre{110,110,center}|image_aplatir{jpg,ffffff})</a>]</div></BOUCLE_doc>
</div></B_doc>
<BOUCLE_doc_exclure_img(DOCUMENTS){id_article}{extension IN png,jpg,gif}{mode=document}{doublons}> </BOUCLE_doc_exclure_img>
[<!-- autre doc -->(#REM) Autres documents joints a l'article]
<B_docjoint><div class='spacer'></div>
<BOUCLE_docjoint(DOCUMENTS){id_article}{mode=document}{doublons}>
<div class="docjoint">
<div><a href="#URL_DOCUMENT" title="<:bouton_telecharger:>" type="#MIME_TYPE" download>#LOGO_DOCUMENT</a>
<small>#TYPE_DOCUMENT[ - (#TAILLE|taille_en_octets)]</small></div>
[<strong><a href="#URL_DOCUMENT">(#TITRE)</a></strong><br />]
[(#DESCRIPTIF)]
</div>
</BOUCLE_docjoint>
<div class="spacer"></div>
<!-- article meta -->
<div class="date">
[(#CONFIG{ueno/affiche_date_article}|oui) [<:ueno:posted:> (#DATE|affdate)]]
[(#CONFIG{ueno/affiche_auteur_article}|oui) [<:par:> (#LESAUTEURS)]]
</div>
</div>
<!-- #content -->
[(#CONFIG{ueno/affiche_forum_article}|oui)
<!-- article forum ? -->
[<div id="forum">
<a href="(#PARAMETRES_FORUM|url_reponse_forum)" class="btn-more"><:comment:></a>
<div class="spacer"></div>
<INCLURE{fond=inc/inc_forum}{id_article}{lang}>
</div>]
]
</BOUCLE_findArt>

44
inc/inc_article_preview.html

@ -0,0 +1,44 @@
[(#REM)
article preview
param:
- id_article
- article_preview_short (facultatif) affichage allegé
]<BOUCLE_art(ARTICLES){id_article}>
<!-- article-preview #ID_ARTICLE-->
<div class="article-preview[(#ENV{article_preview_short}|oui) article-preview-short]">
<BOUCLE_secteur(HIERARCHIE){id_article}{0,1}>
<div class="article-preview-theme">
<a href="#URL_RUBRIQUE" class="theme <INCLURE{fond=inc/inc_couleur,id_rubrique=#ID_SECTEUR} />">#TITRE</a>
</div>
</BOUCLE_secteur>
<a href="#URL_ARTICLE" class="article-preview-texte">
[<div class="article-surtitre">(#SURTITRE|couper{100})</div>]
<h1 class="article-preview-titre">#TITRE</h1>
<div class="article-preview-img">
[(#ENV{article_preview_short}|non)
[(#LOGO_ARTICLE|image_reduire{1000,0})]
]
<BOUCLE_illus(DOCUMENTS){extension IN jpg,png,gif}{id_article}{0,1}{par num titre}
{si #LOGO_ARTICLE|non}
{si #ENV{article_preview_short}|non}>
[(#FICHIER|image_reduire{1000,0})]
</BOUCLE_illus>
</div>
[(#ENV{article_preview_short}|non)
<div class="article-preview-intro">
[(#INTRODUCTION|couper{300})]
</div>
]
</a>
[(#ENV{article_preview_short}|non)
<div class="article-preview-meta">
[(#CONFIG{ueno/affiche_date_article_preview}|oui) [(#DATE|nom_jour|ucfirst) ][(#DATE|affdate)]]
[(#CONFIG{ueno/affiche_auteur_article_preview}|oui) [<:par:> (#LESAUTEURS)]]
</div>]
</div>
<!-- #article-preview -->
</BOUCLE_art>
#FILTRE{trim}

35
inc/inc_auteur.html

@ -0,0 +1,35 @@
[(#REM)
noisette auteur
param:
- id_mot
]<BOUCLE_auteur(AUTEURS){id_auteur}{tout}>
<!-- Fil d'Ariane -->
<a name="contenu" accesskey="2"></a>
<div class="ariane theme">
<ul>
<li class="home"><a name="auteur"><:auteur:></a></li>
</ul>
</div>
<!-- content -->
<div class="content-main-wrapper">
<h1 class="#EDIT{qui} qui article-titre">[(#NOM)]</h1>
[<div class="article-illus"><img src="(#LOGO_AUTEUR|image_reduire{260,0}|extraire_attribut{src})" alt="[(#NOM)]" /></div>]
[<div class="#EDIT{bio} article-texte">(#BIO)</div>]
[<div class="#EDIT{hyperlien} article-hyperlien">URL: <a href="(#URL_SITE)" class="spip_out">#URL_SITE</a></div>]
[<div class="notes articles-notes">(#NOTES)</div>]
<!-- auteur contact ? -->
[<br /><div class="spacer"></div>(#FORMULAIRE_ECRIRE_AUTEUR)]
</div>
<!-- #content -->
<div class="home-row-3">
<INCLURE{fond=inc/inc_liste_articles, id_auteur=#ID_AUTEUR, ajax, env}>
</div>
</BOUCLE_auteur>

28
inc/inc_auteur_preview.html

@ -0,0 +1,28 @@
[(#REM)
noisette auteur preview
param:
- id_mot
]<BOUCLE_auteur(AUTEURS){id_auteur}{tout}>
<!-- aut #ID_AUTEUR -->
<div class="auteur-preview">
<a href="#URL_AUTEUR" class="auteur-preview-title">
<div class="auteur-preview-img">
[(#LOGO_AUTEUR|oui)
[(#LOGO_AUTEUR|image_passe_partout{200,200}|image_recadre{200,200}|inserer_attribut{alt,#TITRE}|inserer_attribut{class,logo-auteur})]
]
[(#LOGO_AUTEUR|non)
[(#CHEMIN{img/logo_auteur.png}|image_passe_partout{200,200}|image_recadre{200,200}|inserer_attribut{alt,#TITRE}|inserer_attribut{class,logo-auteur})]
]
</div>
<div class="auteur-preview-text">
<h1>#NOM</h1>
[<div class="auteur-preview-bio">(#BIO|couper{200})</div>]
</div>
</a>
</div>
<!-- aut #ID_AUTEUR -->
</BOUCLE_auteur>

9
inc/inc_couleur.html

@ -0,0 +1,9 @@
[(#REM)
retourner une couleur de rubrique
parmi la palette des couleurs proposés par le squelette
param:
- id_rubrique
]theme-col-[(#ID_RUBRIQUE|modulo{10})]

28
inc/inc_footer.html

@ -0,0 +1,28 @@
[(#REM)
pied de page
param:
(aucun)
]<!-- footer -->
<footer class="footer container">
<div class="row footer-row-1">
<div class="col col-auto footer-title">#NOM_SITE_SPIP</div>
<div class="col footer-sep"></div>
<div class="col col-auto footer-link">
<ul>
<BOUCLE_art_lien(ARTICLES){id_article IN #CONFIG{ueno/footer_articles}|picker_selected{article}}>
<li><a href="#URL_ARTICLE">#TITRE</a></li>
</BOUCLE_art_lien>
[(#CONFIG{ueno/affiche_plan}|oui)<li><a href="#URL_PAGE{plan}"><:plan_site:></a></li>]
</ul>
</div>
</div>
<div class="row footer-row-2">
<div class="col">
#SLOGAN_SITE_SPIP
</div>
</div>
</footer>
<!-- #footer -->

21
inc/inc_forum.html

@ -0,0 +1,21 @@
[(#REM)
version simplifie de dist/inc_forum
- uniquement pour les articles
- pas de fils
]
[(#PARAMETRES_FORUM|?) Cette balise (invisible) provoque le recalcul du forum la premiere fois qu'un message est poste (cf. inc/invalideur). ]
[(#REM) Messages du forum ]
<B_forums><ul id="forums">
<BOUCLE_forums(FORUMS){id_article}{!par date}>
<li class="[(#COMPTEUR_BOUCLE|alterner{odd,even})]">
<a name="forum#ID_FORUM"></a>
[<strong>(#DATE|affdate_court)<br /><small>[(#DATE|heures)]:[(#DATE|minutes)]</small></strong> ]
<h4>#TITRE</h4>
[<span class="forum-auteur"><:par:> (#NOM|couper{80})</span><br />]
<div class="forum-contenu">
[(#TEXTE|lignes_longues)]
[<p class="#EDIT{hyperlien} forum-lien"><:voir_en_ligne:> : <a href="(#URL_SITE)" class="spip_out">[(#NOM_SITE|sinon{[(#URL_SITE|couper{80})]})]</a></p>]
</div>
</li></BOUCLE_forums>
</ul></B_forums>

24
inc/inc_head.html

@ -0,0 +1,24 @@
[(#REM)
section head
param:
- no-bot: pas indexation
] <meta charset="#CHARSET" />
<meta http-equiv="imagetoolbar" content="no"/>
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
[(#ENV{no-bot}|oui)<meta name="robots" content="none" >]
[(#ENV{no-bot}|non)<meta name="robots" content="index, follow, all">]
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="apple-mobile-web-app-capable" content="no">
<meta name="apple-touch-fullscreen" content="yes">
<meta name="msapplication-tap-highlight" content="no">
#INSERT_HEAD_CSS
<link href="https://fonts.googleapis.com/css?family=Crimson+Text:400,700|Roboto:400,700" rel="stylesheet">
<link rel="stylesheet" href="#CHEMIN{css/bootstrap-reboot.css}" />
<link rel="stylesheet" href="#CHEMIN{css/bootstrap.css}" />
<link rel="stylesheet" href="#CHEMIN{css/style.css}" />
#INSERT_HEAD
<script src="#CHEMIN{js/gui.js}" type='text/javascript'></script>
[<link rel="alternate" type="application/rss+xml" title="<:syndiquer_site:>" href="(#URL_PAGE{backend})" />]
#FILTRE{trim}

52
inc/inc_header.html

@ -0,0 +1,52 @@
[(#REM)
header : banniere et barre de navigation
param:
- id_rubrique (facultatif) expose les rubriques
]<!-- header -->
<header role="banner" class="container">
<!-- header-row-1 -->
<div class="row banner-row-1">
<div class="col banner-wrapper">
<div class="row">
<!-- header-main -->
<div class="[(#CONFIG{ueno/affiche_recherche}|=={on}|?{col-md-9,col-md-12})] header-main">
<div class="banner-title">
[<div class="banner-desc">(#DESCRIPTIF_SITE_SPIP)</div>]
<a href="#URL_SITE_SPIP">#NOM_SITE_SPIP</a>
</div>
<div class="banner-nav">
<B_art_lien>
<ul class="nav">
<li><a href="#URL_SITE_SPIP" class="banner-nav-home"><:ueno:accueil_site:></a></li>
<BOUCLE_art_lien(ARTICLES){id_article IN #CONFIG{ueno/header_articles}|picker_selected{article}}>
<li><a href="#URL_ARTICLE">#TITRE</a></li>
</BOUCLE_art_lien>
</ul>
</B_art_lien>
</div>
</div>
<!-- #header-main -->
[(#CONFIG{ueno/affiche_recherche}|=={on}|oui)
<!-- header-sidebar -->
<div class="col-md-3 align-items-end header-sidebar">
#FORMULAIRE_RECHERCHE
</div>
<!-- #header-sidebar -->]
</div>
</div>
</div>
<!-- header-row-2 -->
[<div class="row banner-row-2">
<div class="col">
(#SLOGAN_SITE_SPIP)
</div>
</div>]
</header>
<!-- #header -->
#FILTRE{trim}

22
inc/inc_liste_articles.html

@ -0,0 +1,22 @@
[(#REM)
listing des articles trié par date
param:
- env pour pagination ajax
]<B_actu>
#ANCRE_PAGINATION
[(#ENV{id_auteur}|oui)<h3 class="spip marger-top"><:ueno:auteur_articles:></h3>]
[(#ENV{id_rubrique}|oui)<h3 class="spip marger-top"><:ueno:rubrique_articles:></h3>]
<BOUCLE_actu(ARTICLES){id_auteur ?}{id_mot?}{id_rubrique?}{recherche?}{id_mot ?}{!par date}{pagination 6}>
<INCLURE{fond=inc/inc_article_preview, id_article, env} />
</BOUCLE_actu>
[<div class="pagination">
<span class="pagination-titre"><:pagination_pages:>:</span>
(#PAGINATION{page})
- #GRAND_TOTAL <:resultats_out:>
</div>]
</B_actu>

30
inc/inc_logo_article.html

@ -0,0 +1,30 @@
[(#REM)
retourner le logo d'un article aux dimensions indiqués
sinon retourne une image générique
param:
- id_article
- l largeur - defaut : 500
- h hauteur - defaut : 500
- titre
- objet (facultatif) permet d'etendre à sur d'autres types d'objets que les mots
]
[(#SET{l,#ENV{l}|sinon{500}})]
[(#SET{h,#ENV{h}|sinon{500}})]
<BOUCLE_a(ARTICLES){id_article}{si #ENV{objet}|non}>
[(#LOGO_ARTICLE|oui)[(#LOGO_ARTICLE|image_passe_partout{#GET{l},#GET{h}}|image_recadre{#GET{l},#GET{h}}|inserer_attribut{class,''}|inserer_attribut{alt,#ENV{titre}|textebrut})]]
<BOUCLE_img(DOCUMENTS){id_article}{extension IN jpg,gif,png}{par rang_lien, num titre, titre}{si #LOGO_ARTICLE|non}{0,1}>
[(#FICHIER|image_passe_partout{#GET{l},#GET{h}}|image_recadre{#GET{l},#GET{h}}|image_masque{#GET{masque}}|inserer_attribut{class,#ENV{titre}|textebrut})]]
</BOUCLE_img></B_img>
[(#LOGO_ARTICLE|non)[(#CHEMIN{img/logo-generique.png}|image_passe_partout{#GET{l},#GET{h}}|image_recadre{#GET{l},#GET{h}}|image_masque{#GET{masque}}|inserer_attribut{class,#ENV{titre}|textebrut})]]
<//B_img>
</BOUCLE_a>
<BOUCLE_m(MOTS){id_mot}{si #ENV{objet}|=={mot}|oui}>
[(#LOGO_MOT|oui)[(#LOGO_MOT|image_passe_partout{#GET{l},#GET{h}}|image_recadre{#GET{l},#GET{h}}|inserer_attribut{class,''}|inserer_attribut{alt,#ENV{titre}|textebrut})]]
[(#LOGO_MOT|non)[(#CHEMIN{img/logo-generique.png}|image_passe_partout{#GET{l},#GET{h}}|image_recadre{#GET{l},#GET{h}}|image_masque{#GET{masque}}|inserer_attribut{class,#ENV{titre}|textebrut})]]
</BOUCLE_m>
<BOUCLE_at(AUTEURS){id_auteur}{si #ENV{objet}|=={auteur}|oui}{tout}>
[(#LOGO_AUTEUR|oui)[(#LOGO_AUTEUR|image_reduire{0,#GET{h}}|image_recadre{#GET{l},#GET{h},'center center'}|inserer_attribut{class,''}|inserer_attribut{alt,#ENV{titre}|textebrut})]]
[(#LOGO_AUTEUR|non)[(#CHEMIN{img/logo-generique.png}|image_reduire{0,#GET{h}}|image_recadre{#GET{l},#GET{h},'center center'}|image_masque{#GET{masque}}|inserer_attribut{class,#ENV{titre}|textebrut})]]
</BOUCLE_at>
#FILTRE{trim}

48
inc/inc_recherche.html

@ -0,0 +1,48 @@
[(#REM)
page recherche sur auteurs et articles
param:
- recherche
- env pagination & ajax
]
<!-- Fil d'Ariane -->
<a name="contenu" accesskey="2"></a>
<div class="ariane theme secteur-#ID_SECTEUR <INCLURE{fond=inc/inc_couleur,id_rubrique=#ID_SECTEUR} />">
<ul>
<li class="home">Rechercher</li>
</ul>
</div>
<!-- content -->
<div class="content-main-wrapper">
<h1 class="article-title">
[(#ENV{recherche}|non) <:ueno:recherche_lancer:>]
[(#ENV{recherche}|oui) <:ueno:recherche_resultat:> "<i>#ENV{recherche}</i>"]
</h1>
<div class="article-search">
#FORMULAIRE_RECHERCHE
</div>
<div class="rubrique-table-matiere">
#SET{found_result,false}
[(#REM) Phase 1: recherche auteurs]
<B_s_aut>
<h2 class="marger-top"><:ueno:recherche_auteurs:></h2>
<BOUCLE_s_aut(AUTEURS){recherche}{si #ENV{recherche}|oui}>
<INCLURE{fond=inc/inc_auteur_preview, id_auteur} />
</BOUCLE_s_aut>
#SET{found_result,true}
</B_s_aut>
[(#REM) Phase 2: recherche articles]
[(#ENV{recherche}|oui)
<INCLURE{fond=inc/inc_recherche_liste_articles,found_resultat=#GET{found_result}, env,ajax}>
]
</div>
</div>
<!-- #content -->

36
inc/inc_recherche_liste_articles.html

@ -0,0 +1,36 @@
[(#REM)
listing des articles par recherche
param:
- recherche
- env pour pagination ajax
]
<B_actu>
<h2 class="marger-top liner-bottom"><:ueno:resultats_articles:></h2>
<!-- sub-row 1 -->
#ANCRE_PAGINATION
[(#ENV{afficher_compteur}|oui)
[(#GRAND_TOTAL|>{1}|oui)
[<div class="inner pagination-top">
<span class="pagination-titre">(#GRAND_TOTAL) <:ueno:pagination_gd_total:></span>
</div>]
]
]
<BOUCLE_actu(ARTICLES){recherche?}{!par date}{pagination 6}>
<INCLURE{fond=inc/inc_article_preview, id_article, env} />
</BOUCLE_actu>
<div class="pagination">
[<span class="pagination-titre"><:ueno:pagination_pages:>:</span> (#PAGINATION{page}) -]
#GRAND_TOTAL <:ueno:resultats_out:>
</div>
</B_actu>
[(#ENV{recherche}|oui)
<div class="alert alert-error">
<:ueno:recherche_nomatch:>
</div>]
<//B_actu>

42
inc/inc_rubrique.html

@ -0,0 +1,42 @@
[(#REM)
rubrique presentation "actu"
- on liste les sous-rubrique
- on liste les articles par date avec pagination
param:
- id_rubrique
- env support de la pagination / ajax
]<BOUCLE_rub(RUBRIQUES){id_rubrique}>
#SET{theme-col, theme-col-000}
<!-- Fil d'Ariane -->
<a name="contenu" accesskey="2"></a>
<div class="ariane theme secteur-#ID_SECTEUR <INCLURE{fond=inc/inc_couleur,id_rubrique=#ID_SECTEUR} />">
<ul>
<li class="home"><a href="#URL_SITE_SPIP"><:ueno:accueil_site:></a><span>/</span></li>
<BOUCLE_ariane(HIERARCHIE){id_rubrique}{tout}><li[(#ID_RUBRIQUE|=={#_findArt:ID_RUBRIQUE}|oui) class="on"]><a href="#URL_RUBRIQUE">[(#TITRE|couper{50})]</a>[(#ID_RUBRIQUE|=={#_findArt:ID_RUBRIQUE}|non)<span>/</span>]</li></BOUCLE_ariane>
</ul>
</div>
<!-- content -->
<div class="content-main-wrapper">
<!-- rubrique -->
[<h1 class="#EDIT{titre} article-titre">(#TITRE)</h1>]
[<div class="logo">(#LOGO_RUBRIQUE|image_reduire{800,0}|inserer_attribut{alt,#TITRE})</div>]
[<div class="article-texte #EDIT{texte}">(#TEXTE)</div>]
<!-- rubrique > sous-rubriques -->
<BOUCLE_ss_rub(RUBRIQUES){id_parent}{par num titre, titre}>
<h2 class="rubrique-title theme #GET{theme-col}"><a href="#URL_RUBRIQUE">#TITRE</a></h2>
</BOUCLE_ss_rub>
<!-- rubrique > articles-->
<INCLURE{fond=inc/inc_liste_articles, id_rubrique, ajax, env}>
</div>
<!-- #content -->
</BOUCLE_rub>

26
inc/inc_sidebar.html

@ -0,0 +1,26 @@
[(#REM)
sidebar
Parametre:
(aucun)
]<div class="row">
<BOUCLE_sidebar(ARTICLES){id_article IN #CONFIG{ueno/sidebar_articles}|picker_selected{article}}>
<div class="bloc">
<a href="#URL_ARTICLE">
<div class="bloc-title">#TITRE</div>
<div class="bloc-illus">
[(#LOGO_ARTICLE|image_reduire{500,0}|inserer_attribut{alt,[(#_news:TITRE|couper{20}|textebrut)]})]
<BOUCLE_illus0(DOCUMENTS){extension IN jpg,png,gif}{id_article}{0,1}{par num titre}{si #LOGO_ARTICLE|non}>
[(#FICHIER|image_reduire{300,0}|inserer_attribut{alt,[(#_news:TITRE|couper{20}|textebrut)]})]
</BOUCLE_illus0>
</div>
[<div class="bloc-intro">
(#INTRODUCTION|couper{220})
</div>]
</a>
</div>
</BOUCLE_sidebar>
</div>

47
inc/inc_sommaire.html

@ -0,0 +1,47 @@
[(#REM)
corps du sommaire
composition
- un article large
- n articles sur 2 cols en medium
- n articles en short
cf _patron_home.html
param:
(aucun)
]<!-- home-row-1 : preview full widht banner -->
<div class="home-row-1">
<BOUCLE_news_row_1(ARTICLES){!par date}{0,1}{doublons news}>
<INCLURE{fond=inc/inc_article_preview, id_article}/>
</BOUCLE_news_row_1>
</div>
<!-- #home-row-1 -->
<!-- home-row-2 : 2 cols -->
<div class="home-row-2">
<!-- home-row-2-col -->
<div class="home-row-2-col">
<BOUCLE_news_row_2_1(ARTICLES){!par date}{0,4}{doublons news}>
<INCLURE{fond=inc/inc_article_preview, id_article}/>
</BOUCLE_news_row_2_1>
</div>
<!-- #home-row-2-col -->
<!-- home-row-2-col -->
<div class="home-row-2-col">
<BOUCLE_news_row_2_2(ARTICLES){!par date}{0,4}{doublons news}>
<INCLURE{fond=inc/inc_article_preview, id_article}/>
</BOUCLE_news_row_2_2>
</div>
<!-- #home-row-2-col -->
</div>
<!-- #home-row-2 -->
<!-- home-row-3 : shortheadlines -->
<div class="home-row-3">
<BOUCLE_news_row_3(ARTICLES){!par date}{0,6}{doublons news}>
<INCLURE{fond=inc/inc_article_preview, id_article, article_preview_short=oui}/>
</BOUCLE_news_row_3>
</div>
<!-- #home-row-3 -->

62
js/gui.js

@ -0,0 +1,62 @@
/********************************
* GUI: interface utilisateur
*
* version: 1.0
* date: 2014.04.30
*
********************************/
$(document).ready(function(){
// print
$(".print a").click(function() {
window.print();
return false;
});
// Lien en spip_out s'ouvre ds une nouvelle fenetre
// voir aussi http://blog.gaboweb.com/2009/07/02/target_blank-automatique-jquery-respecter-normes-xhtml-strictes/
$("a.spip_out").click(function(){
window.open(this.href);
return false;
});
// clic externe nouvelle fenetre
$("a[rel*=external]").click(function(){
this.target= "_blank";
});
// menu recherche desktop
$(".btn-nav-search").bind('click', function (e) {
if ($(".search-desktop").hasClass("active")) {
$(".search-desktop").removeClass("active");
} else {
$(".search-desktop").addClass("active");
}
return false;
});
// menu RDW
$(".menu-rwd-trigger").bind('click', function (e) {
if ($(".main").hasClass("main-header-open")) {
$(".main").removeClass("main-header-open");
} else {
$(".main").addClass("main-header-open");
}
return false;
});
// scroll doux
$(".smooth-scroll").click (function() {
var target = $(this).attr('href');
var hash = "#" + target.substring(target.indexOf('#')+1);
$('html, body').animate({ scrollTop:$(hash).offset().top }, 600);
return false;
});
});

15
lang/paquet-ueno_fr.php

@ -0,0 +1,15 @@
<?php
// Ceci est un fichier langue de SPIP -- This is a SPIP language file
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
$GLOBALS[$GLOBALS['idx_lang']] = array(
// F
'ueno_description' => 'Squelette sous Bootstrap 4.0 pour sites éditoriaux.',
'ueno_slogan' => 'Squelette éditorial Ueno',
);

152
lang/ueno_fr.php

@ -0,0 +1,152 @@
<?php
// This is a SPIP language file -- Ceci est un fichier langue de SPIP
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
$GLOBALS[$GLOBALS['idx_lang']] = array(
// 0-9
'404_sorry' => 'Désolé, cette page n\'existe plus.',
// A
'accueil_site' => 'Accueil',
'art_react' => 'R&eacute;agir &agrave; l\'article',
'article_trad_dispo' => 'Autres versions de cet article: ',
'agenda' => 'Agenda',
'auteur_articles' => 'Articles de cet auteur',
'actu_facebook' => 'Retrouvez l\'actualités de la revue Chimères sur Facebook',
'actu_toutes' => 'Tous les actualités',
'articles_web' => 'Articles web',
'articles_web_tous' => 'Tous les articles web',
'auteurs_les' => 'Les auteurs',
'articles_tous' => 'Tous les articles',
// C
'contact' => 'Contact',
'carticle' => 'article',
'carticles' => 'articles',
'comment' => 'Nouveau commentaire',
'cfg_header' => 'Bannière du site',
'cfg_affiche_recherche' => 'Afficher le moteur de recherche',
'cfg_header_articles' => 'Liens',
'cfg_header_articles_explication' => '(Facultatif) Articles à placer en liens. Il est conseillé de ne pas dépasser 2 ou 3 liens avec des titres courts',
'cfg_footer' => 'Pied de page',
'cfg_affiche_plan' => 'Afficher le plan du site' ,
'cfg_sidebar' => 'Barre latérale',
'cfg_sidebar_articles' => 'Articles',
'cfg_sidebar_articles_explication' => '(Facultatif) Articles à lister dans la barre latérale',
'cfg_titre_parametrages' => 'Choisir les contenus à afficher',
'cfg_footer_articles' => 'Liens',
'cfg_footer_articles_explication' => '(Facultatif) Articles à placer en liens. Il est conseillé de ne pas dépasser 2 ou 3 liens avec des titres courts',
'cfg_titre_parametrages' => 'Choisir les contenus à afficher',
'cfg_article' => 'Articles complets',
'cfg_article_preview' => 'Aperçu des articles',
'cfg_affiche_date_article_preview' => 'Afficher la date de publication',
'cfg_affiche_auteur_article_preview' => 'Afficher les noms des auteurs',
'cfg_affiche_date_article' => 'Afficher la date de publication',
'cfg_affiche_auteur_article' => 'Afficher les noms des auteurs',
'cfg_affiche_forum_article' => 'Afficher les forums',
'cfg_affiche_forum_article_explication' => 'Valable uniquement si les forums sont activés globalement sur le site et sur l\'article en question',
// D
'date_parution' => 'Date de parution',
// E
'en_images' => 'En images',
// H
'home_hors_murs' => 'Hors les murs',
'home_voir_tous' => 'Voir toutes les infos',
'home_actu' => 'Actualités',
'home_agenda' => 'Agenda',
// I
'info_rechercher2' => 'mot-clé ...',
// L
'laisser_msg' => 'Laisser nous un message',
'les_articles' => 'Les articles',
'lire_suite' => '&nbsp;<span>&gt; &gt; &gt;</span>',
// M
'maj' => 'Mise &agrave; jour: ',
'mentions' => 'Mentions légales',
'multimedia' => 'Multimédia',
'mes_documents' => 'A télécharger',
'menu' => 'Menu',
// N
'news' => 'Actualités',
'newsletter_ex' => 'email@domaine.com',
'news_damail' => 'veuillez inscrire votre adresse email :',
'no_action' => 'Veuillez effectuer un choix (cocher au moins une case)',
// O