Initialisation du plugin

master v1.0.0
JMarc_64 1 month ago
commit 9be8b84f66

@ -0,0 +1,100 @@
<BOUCLE_article(ARTICLES){id_article} {doublons}>
<!DOCTYPE HTML>
<!--
TXT by HTML5 UP
html5up.net | @ajlkn
Free for personal and commercial use under the CCA 3.0 license (html5up.net/license)
-->
<html>
<head>
<title>[(#TITRE|textebrut|entites_html)]</title>
<INCLURE{fond=inclure/head} />
</head>
<body class="is-preload">
<div id="page-wrapper">
<!-- Header -->
<INCLURE{fond=inclure/header,env} />
<!-- Main -->
<section id="main">
<div class="container">
<div class="row">
<div class="col-12">
<div class="content">
<!-- Content -->
<article class="box page-content">
<header>
[<h1 class="#EDIT{titre}">(#TITRE)</h1>]
[<h2 class="#EDIT{soustitre}">(#SOUSTITRE)</h2>]
<ul class="meta">
<li>#FA_ICON{img/fa/regular/clock.svg,'',Clock}[(#DATE|affdate)]</li>
<B_compte_messages><li>#FA_ICON{img/fa/regular/comments.svg,'',Comments}<a href="#URL_FORUM"<BOUCLE_compte_messages(FORUMS){id_article}> </BOUCLE_compte_messages>(#TOTAL_BOUCLE)</a></li></B_compte_messages>
</ul>
</header>
<section>
<span class="image featured">[(#LOGO_ARTICLE_RUBRIQUE|image_recadre{857:248,-,center}|image_reduire{857}|inserer_attribut{class,spip_logos})]</span>
#TEXTE
</section>
<section>
[<div class="notes"><hr />(#NOTES)</div>]
</section>
<section>
[(#REM) Gestion du portfolio et des documents ]
[(#INCLURE{fond=inclure/documents,id_article, env})]
</section>
</article>
</div>
</div>
<div class="col-12">
<!-- Features -->
<section class="box features">
<h2 class="major"><span>[(#CONFIG{html5up_txt/text_article}|sinon{<:meme_rubrique:>})]</span></h2>
<div>
<div class="row">
<BOUCLE_article_rubrique(ARTICLES){par num titre}{id_rubrique}{doublons}>
<div class="col-3 col-6-medium col-12-small">
<!-- Feature -->
<section class="box feature">
<a href="#URL_ARTICLE" class="image featured">[(#LOGO_ARTICLE_RUBRIQUE|image_recadre{282:158,-,focus}|image_reduire{282}|inserer_attribut{class,spip_logos})]</a>
<h3><a href="#URL_ARTICLE">#TITRE</a></h3>
#INTRODUCTION{#CONFIG{html5up_txt/long_intro}|sinon{200}}
</section>
</div>
[(#COMPTEUR_BOUCLE|alterner{"","","","</div><div class='row'>"})]
</BOUCLE_article_rubrique>
</div>
</div>
</section>
</div>
<div class="col-12">
[<section>
[(#REM) Forum de l'article ]
<INCLURE{fond=inclure/forum,id_article} />
<h2 class="forum-titre"><:forum:form_pet_message_commentaire:></h2>
(#FORMULAIRE_FORUM)
</section>]
</div>
</div>
</div>
</section>
<!-- Footer -->
<INCLURE{fond=inclure/footer,self=#SELF} />
</div>
</body>
</html>
</BOUCLE_article>

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 108 B

File diff suppressed because it is too large Load Diff

@ -0,0 +1,245 @@
/********************************************
* Personnalisation du thème html5up_txt
*
*Seuil des responsives
* - 1680px
* - 1280px
* - 980px
* - 840px
* - 736px
* - 480px
*
**********************************************/
/* Correctif html5up_TXT - SPIP
-----------------------------------------------*/
/* open-sans-300 - latin */
@font-face {
font-display: swap; /* Check https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-display for other options. */
font-family: 'Open Sans';
font-style: normal;
font-weight: 300;
src: url('#CHEMIN{polices/open-sans-v35-latin-300.woff2}') format('woff2'); /* Chrome 36+, Opera 23+, Firefox 39+, Safari 12+, iOS 10+ */
}
/* open-sans-300italic - latin */
@font-face {
font-display: swap; /* Check https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-display for other options. */
font-family: 'Open Sans';
font-style: italic;
font-weight: 300;
src: url('#CHEMIN{polices/open-sans-v35-latin-300italic.woff2}') format('woff2'); /* Chrome 36+, Opera 23+, Firefox 39+, Safari 12+, iOS 10+ */
}
/* open-sans-500 - latin */
@font-face {
font-display: swap; /* Check https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-display for other options. */
font-family: 'Open Sans';
font-style: normal;
font-weight: 500;
src: url('#CHEMIN{polices/open-sans-v35-latin-500.woff2}') format('woff2'); /* Chrome 36+, Opera 23+, Firefox 39+, Safari 12+, iOS 10+ */
}
/* open-sans-500italic - latin */
@font-face {
font-display: swap; /* Check https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-display for other options. */
font-family: 'Open Sans';
font-style: italic;
font-weight: 500;
src: url('#CHEMIN{polices/open-sans-v35-latin-500italic.woff2}') format('woff2'); /* Chrome 36+, Opera 23+, Firefox 39+, Safari 12+, iOS 10+ */
}
/* open-sans-700 - latin */
@font-face {
font-display: swap; /* Check https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-display for other options. */
font-family: 'Open Sans';
font-style: normal;
font-weight: 700;
src: url('#CHEMIN{polices/open-sans-v35-latin-700.woff2}') format('woff2'); /* Chrome 36+, Opera 23+, Firefox 39+, Safari 12+, iOS 10+ */
}
/* open-sans-700italic - latin */
@font-face {
font-display: swap; /* Check https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-display for other options. */
font-family: 'Open Sans';
font-style: italic;
font-weight: 700;
src: url('#CHEMIN{polices/open-sans-v35-latin-700italic.woff2}') format('woff2'); /* Chrome 36+, Opera 23+, Firefox 39+, Safari 12+, iOS 10+ */
}
/* Force les margin du body à 0 */
body {
margin:0
}
/* Surchage l'image de fond de la bannière */
#banner {
background-image: url("<BOUCLE_doc(DOCUMENTS){tout}{id_document=#CONFIG{html5up_txt/doc_bandeau}}>#URL_DOCUMENT</BOUCLE_doc>");
background-size:cover;
background-position: center;
}
/* Eclaicie le fond de la bannière */
#banner .content {
background-color: rgba(21, 28, 23, 0.50);
}
/* Classe incolore */
#banner .incolore {
background-color: inherit;
background-image: none;
}
/* Barre admin spip */
#spip-admin {bottom: 0;top: auto; z-index: 1001;}
/* Surcharge la feuille de style Typo */
.box {
margin: 0;
padding: 0 0 1em 0;
border: none;
}
/* inclure plugin newsletters */
#cta {
padding: 2em 0 0 0;
text-align: center;
}
#cta form {
margin: 0 auto;
width: 50%
}
/* la police "Open Sans" n'existe pas en 400 => modification en 300 */
body, input, textarea, select {
font-family: 'Open Sans', sans-serif;
font-weight: 300;
color: #6b7770;
font-size: 12pt;
line-height: 1.75em;
}
/* les squelettes SPIP utilisent h1 (et non h1) => h1 reprend les valeur de h2 */
h1 {
font-size: 1.65em;
}
h1.major {
position: relative;
border-top: solid 5px #e7eae8;
font-size: 1.65em;
text-align: center;
margin: 0 0 3em 0;
top: 0.775em;
}
h1.major span {
background: #fff;
position: relative;
display: inline-block;
top: -0.775em;
padding: 0 1.25em 0 1.25em;
}
h1.major {
position: relative;
border-top: solid 5px #e7eae8;
font-size: 1.65em;
text-align: center;
margin: 0 0 3em 0;
top: 0.775em;
}
h1.major span {
background: #fff;
position: relative;
display: inline-block;
top: -0.775em;
padding: 0 1.25em 0 1.25em;
}
.box.page-content h1 {
font-size: 3em;
margin: 0 0 0.5em 0;
}
#banner .content h1 {
color: #fff;
font-size: 2.75em;
margin: 0 0 0.5em 0;
}
.sidebar h1.major {
text-align: left;
margin: 0 0 1.5em 0;
}
.sidebar h1.major span {
padding-left: 0;
}
#footer h1.major {
margin: 0 0 1.5em 0;
}
#footer h1.major span {
background: #f2f5f3;
}
/* Large */
@media screen and (max-width: 1280px) {
.box.highlight h1 {
font-size: 2.5em;
}
#banner .content h1 {
margin: 0 0 0.65em 0;
}
}
* Small */
@media screen and (max-width: 736px) {
h1 {
font-size: 1.25em;
}
h1.major {
font-size: 1.25em;
margin: 0 0 2em 0;
}
h1.major span {
padding: 0 1em;
}
.box.highlight h1 {
font-size: 2em;
}
.box.page-content h1 {
font-size: 2em;
}
#banner .content h1 {
font-size: 2em;
}
}
/* les squelettes SPIP utilisent h1 (et non h2) => h2 reprend les valeur de P pour le sous-titre de l'article */
.box.page-content h2 {
font-size: 1.65em;
margin: 0 0 0.5em 0;
color: #c1cac5;
}
@media screen and (max-width: 736px){
.box.page-content h2 {
font-size: 1.25em;
}
}
/* Le portfolio */
#documents_portfolio a {margin:0;padding:0;border:0 !important;box-shadow:none;}
#documents_portfolio ul { list-style: none; padding: 0; }

@ -0,0 +1,75 @@
<div class="formulaire_spip formulaire_configurer formulaire_#FORM">
<h3 class="titrem"><:html5up_txt: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
#SET{fl,html5_txt}
<fieldset>
<legend><:html5up_txt:legend:></legend>
<div class="editer">
<label><:html5up_txt:label_config_contenu:></label>
<div class="text"><:html5up_txt:explication_config_contenu:></div>
</div>
</fieldset>
<fieldset>
<legend><:html5up_txt:legend_header:></legend>
<ul>
<li>[(#SAISIE{input,text_header,explication=<:html5up_txt:explication_header:>,label=<:html5up_txt:label_header:>,class=multilang,obligatoire=non})]</li>
</ul>
</fieldset>
<!-- page sommaire -->
<fieldset>
<legend><:html5up_txt:legend_sommaire:></legend>
<ul>
<li>
[(#SAISIE{
checkbox,
config_titre,
explication=<:html5up_txt:explication_config_titre:>,
label=<:html5up_txt:label_config_titre:>,
default=on,
datas=#ARRAY{0,<:html5up_txt:texte_config_titre:>}})]
</li>
<li>[(#SAISIE{input,doc_bandeau,explication=<:html5up_txt:explication_doc_bandeau:>,label=<:html5up_txt:label_doc_bandeau:>,class=multilang,obligatoire=non})]</li>
<li>[(#SAISIE{input,text_sommaire,explication=<:html5up_txt:explication_text_sommaire:>,label=<:html5up_txt:label_text_sommaire:>,class=multilang,obligatoire=non})]</li>
<li>[(#SAISIE{input,long_intro,explication=<:html5up_txt:explication_long_intro:>,label=<:html5up_txt:label_long_intro:>,class=multilang,obligatoire=non,defaut=150})]</li>
<li>[(#SAISIE{input,articles_home_avant,explication=<:html5up_txt:explication_articles_home_avant:>,label=<:html5up_txt:label_articles_home_avant:>,class=multilang,obligatoire=non})]</li>
<li>[(#SAISIE{input,articles_home_apres,explication=<:html5up_txt:explication_articles_home_apres:>,label=<:html5up_txt:label_articles_home_apres:>,class=multilang,obligatoire=non})]</li>
<li>[(#SAISIE{input,text_blog,explication=<:html5up_txt:explication_text_blog:>,label=<:html5up_txt:label_text_blog:>,class=multilang,obligatoire=non})]</li>
<li>[(#SAISIE{input,rubrique_blog,explication=<:html5up_txt:explication_rubrique_blog:>,label=<:html5up_txt:label_rubrique_blog:>,class=multilang,obligatoire=non})]</li>
</ul>
</fieldset>
<!-- page rubrique -->
<fieldset>
<legend><:html5up_txt:legend_rubrique:></legend>
<ul>
<li>[(#SAISIE{input,text_rubrique,explication=<:html5up_txt:explication_text_rubrique:>,label=<:html5up_txt:label_text_rubrique:>,class=multilang,obligatoire=non})]</li>
</ul>
</fieldset>
<!-- page article -->
<fieldset>
<legend><:html5up_txt:legend_article:></legend>
<ul>
<li>[(#SAISIE{input,text_article,explication=<:html5up_txt:explication_text_article:>,label=<:html5up_txt:label_text_article:>,class=multilang,obligatoire=non})]</li>
</ul>
</fieldset>
<input type="hidden" name="_meta_casier" value="html5up_txt" />
<p class="boutons"><span class="image_loading">&nbsp;</span><input type="submit" class="submit" value="<:bouton_enregistrer|attribut_html:/>" /></p>
</div>
</form>
</div>

Binary file not shown.

After

Width:  |  Height:  |  Size: 96 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

@ -0,0 +1,9 @@
[(#REM)
section inscription newsletter
]<section id="cta">
<h2><:html5up_txt:titre_calltoaction:></h2>
<p><:html5up_txt:texte_calltoaction:></p>
#FORMULAIRE_NEWSLETTER_SUBSCRIBE
</section>

@ -0,0 +1,36 @@
<footer id="footer">
<div class="container">
[<div class="row gtr-200">
<div class="col-12">
<!-- Contact -->
(#PLUGIN{sociaux}|oui)
<section>
<INCLURE{fond=inclure/sociaux}>
</section>
</div>
</div>]
<!-- Copyright -->
<div id="copyright">
<ul class="menu">
<li>&copy; #NOM_SITE_SPIP</li>
<BOUCLE_mentions(ARTICLES){page=mentions}><li><a href="#URL_ARTICLE">#TITRE</a></li></BOUCLE_mentions>
<li><a rel="contents" href="#URL_PAGE{plan}" class="first"><:plan_site:></a></li>
<li><a href="https://www.spip.net/" title="<:site_realise_avec_spip:>"><:site_realise_avec_spip:></a></li>
<li>Design: <a href="http://html5up.net">HTML5 UP</a></li>
</ul>
</div>
</div>
</footer>
</div>
<!-- Scripts -->
[<script src="(#CHEMIN{js/jquery.dropotron.min.js})" type="text/javascript"></script>]
[<script src="(#CHEMIN{js/jquery.scrolly.min.js})" type="text/javascript"></script>]
[<script src="(#CHEMIN{js/browser.min.js})" type="text/javascript"></script>]
[<script src="(#CHEMIN{js/breakpoints.min.js})" type="text/javascript"></script>]
[<script src="(#CHEMIN{js/util.js})" type="text/javascript"></script>]
[<script src="(#CHEMIN{js/main.js})" type="text/javascript"></script>]

@ -0,0 +1,49 @@
[(#REM)
Head standard de toutes les pages ;
les elements specifiques (title, description) figurent dans chaque squelette
]
<meta http-equiv="Content-Type" content="text/html; charset=#CHARSET" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
[(#REM) Lien vers le flux RSS du site ]
[<link rel="alternate" type="application/rss+xml" title="<:syndiquer_site:>" href="(#URL_PAGE{backend})" />]
[(#REM)
On appelle les feuilles de style
dans l'ordre de la methode daisy http://daisy.tetue.net/img/daisy-nomenclature.png
1. Base CSS http://tinytypo.tetue.net/ ][
<link rel="stylesheet" href="(#CHEMIN{css/typo.css}|direction_css)" type="text/css" />][
<link rel="stylesheet" href="(#CHEMIN{css/media.css}|direction_css)" type="text/css" />]
[(#REM) 2. Style SPIP et ses plugins ]
[<link rel="stylesheet" href="(#CHEMIN{css/spip.css}|direction_css)" type="text/css" />]
#INSERT_HEAD_CSS
[(#REM) 3. Vos feuilles de style pour l'habillage du site a) theme, b) variante, c) specifique ]
[<link rel="stylesheet" href="(#CHEMIN{css/main.css}|direction_css)" type="text/css" />]
[<link rel="stylesheet" href="(#PRODUIRE{fond=css/txt.spip.css}|direction_css|timestamp)" type="text/css" media="all" />]
[<link rel="stylesheet" href="(#CHEMIN{css/perso.css}|direction_css)" type="text/css" />]
[(#REM)
Balise permettant aux plugins d'inserer des appels javascript ;
4. C'est ici que SPIP va inserer l'appel de la librairie jQuery
5. Et appeler a la fin compacte_head pour agreger et compacter tout le head dans des fichiers statiques si l'option est cochee dans Configuration
]
#INSERT_HEAD
[(#REM) 6. Vos scripts ]
[<script src="(#CHEMIN{js/script.js}|timestamp)" type="text/javascript"></script>]
[(#REM) Fierement fabrique avec SPIP ]
[<meta name="generator" content="SPIP (#SPIP_VERSION|header_silencieux)" />]
[(#REM) Favicon ]
[<link rel="icon" type="image/x-icon" href="(#CHEMIN{favicon.ico})" />
[<link rel="shortcut icon" type="image/x-icon" href="(#CHEMIN{favicon.ico})" />]]
[(#REM) meta robots ]
[<meta name="robots" content="(#ENV{robots})" />]

@ -0,0 +1,22 @@
<!-- Header -->
<header id="header">
<div class="logo container">
<div>
<p id="logo">[(#CONFIG{html5up_txt/text_header})]</p>
</div>
</div>
</header>
<!-- Nav -->
<nav id="nav">
<ul>
<li [(#ENV{skel}|match{sommaire}|?{class="current"})]><a href="#URL_SITE_SPIP"><:accueil:></a></li>
<BOUCLE_secteur(RUBRIQUES){par num titre}{id_parent=0}>
<li [ (#EXPOSE|?{class="current"})]><a href="#URL_RUBRIQUE">#TITRE</a></li>
</BOUCLE_secteur>
<BOUCLE_contact(ARTICLES){page=contact}>
<li><a href="#URL_ARTICLE" class="button"><:contact:></a></li>
</BOUCLE_contact>
</ul>
</nav>

@ -0,0 +1,2 @@
/* breakpoints.js v1.0 | @ajlkn | MIT licensed */
var breakpoints=function(){"use strict";function e(e){t.init(e)}var t={list:null,media:{},events:[],init:function(e){t.list=e,window.addEventListener("resize",t.poll),window.addEventListener("orientationchange",t.poll),window.addEventListener("load",t.poll),window.addEventListener("fullscreenchange",t.poll)},active:function(e){var n,a,s,i,r,d,c;if(!(e in t.media)){if(">="==e.substr(0,2)?(a="gte",n=e.substr(2)):"<="==e.substr(0,2)?(a="lte",n=e.substr(2)):">"==e.substr(0,1)?(a="gt",n=e.substr(1)):"<"==e.substr(0,1)?(a="lt",n=e.substr(1)):"!"==e.substr(0,1)?(a="not",n=e.substr(1)):(a="eq",n=e),n&&n in t.list)if(i=t.list[n],Array.isArray(i)){if(r=parseInt(i[0]),d=parseInt(i[1]),isNaN(r)){if(isNaN(d))return;c=i[1].substr(String(d).length)}else c=i[0].substr(String(r).length);if(isNaN(r))switch(a){case"gte":s="screen";break;case"lte":s="screen and (max-width: "+d+c+")";break;case"gt":s="screen and (min-width: "+(d+1)+c+")";break;case"lt":s="screen and (max-width: -1px)";break;case"not":s="screen and (min-width: "+(d+1)+c+")";break;default:s="screen and (max-width: "+d+c+")"}else if(isNaN(d))switch(a){case"gte":s="screen and (min-width: "+r+c+")";break;case"lte":s="screen";break;case"gt":s="screen and (max-width: -1px)";break;case"lt":s="screen and (max-width: "+(r-1)+c+")";break;case"not":s="screen and (max-width: "+(r-1)+c+")";break;default:s="screen and (min-width: "+r+c+")"}else switch(a){case"gte":s="screen and (min-width: "+r+c+")";break;case"lte":s="screen and (max-width: "+d+c+")";break;case"gt":s="screen and (min-width: "+(d+1)+c+")";break;case"lt":s="screen and (max-width: "+(r-1)+c+")";break;case"not":s="screen and (max-width: "+(r-1)+c+"), screen and (min-width: "+(d+1)+c+")";break;default:s="screen and (min-width: "+r+c+") and (max-width: "+d+c+")"}}else s="("==i.charAt(0)?"screen and "+i:i;t.media[e]=!!s&&s}return t.media[e]!==!1&&window.matchMedia(t.media[e]).matches},on:function(e,n){t.events.push({query:e,handler:n,state:!1}),t.active(e)&&n()},poll:function(){var e,n;for(e=0;e<t.events.length;e++)n=t.events[e],t.active(n.query)?n.state||(n.state=!0,n.handler()):n.state&&(n.state=!1)}};return e._=t,e.on=function(e,n){t.on(e,n)},e.active=function(e){return t.active(e)},e}();!function(e,t){"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?module.exports=t():e.breakpoints=t()}(this,function(){return breakpoints});

2
js/browser.min.js vendored

@ -0,0 +1,2 @@
/* browser.js v1.0.1 | @ajlkn | MIT licensed */
var browser=function(){"use strict";var t={name:null,version:null,os:null,osVersion:null,touch:null,mobile:null,_canUse:null,canUse:function(e){t._canUse||(t._canUse=document.createElement("div"));var n=t._canUse.style,r=e.charAt(0).toUpperCase()+e.slice(1);return e in n||"Moz"+r in n||"Webkit"+r in n||"O"+r in n||"ms"+r in n},init:function(){for(var e=navigator.userAgent,n="other",r=0,i=[["firefox",/Firefox\/([0-9\.]+)/],["bb",/BlackBerry.+Version\/([0-9\.]+)/],["bb",/BB[0-9]+.+Version\/([0-9\.]+)/],["opera",/OPR\/([0-9\.]+)/],["opera",/Opera\/([0-9\.]+)/],["edge",/Edge\/([0-9\.]+)/],["safari",/Version\/([0-9\.]+).+Safari/],["chrome",/Chrome\/([0-9\.]+)/],["ie",/MSIE ([0-9]+)/],["ie",/Trident\/.+rv:([0-9]+)/]],o=0;o<i.length;o++)if(e.match(i[o][1])){n=i[o][0],r=parseFloat(RegExp.$1);break}for(t.name=n,t.version=r,n="other",i=[["ios",/([0-9_]+) like Mac OS X/,function(e){return e.replace("_",".").replace("_","")}],["ios",/CPU like Mac OS X/,function(e){return 0}],["wp",/Windows Phone ([0-9\.]+)/,null],["android",/Android ([0-9\.]+)/,null],["mac",/Macintosh.+Mac OS X ([0-9_]+)/,function(e){return e.replace("_",".").replace("_","")}],["windows",/Windows NT ([0-9\.]+)/,null],["bb",/BlackBerry.+Version\/([0-9\.]+)/,null],["bb",/BB[0-9]+.+Version\/([0-9\.]+)/,null],["linux",/Linux/,null],["bsd",/BSD/,null],["unix",/X11/,null]],o=r=0;o<i.length;o++)if(e.match(i[o][1])){n=i[o][0],r=parseFloat(i[o][2]?i[o][2](RegExp.$1):RegExp.$1);break}"mac"==n&&"ontouchstart"in window&&(1024==screen.width&&1366==screen.height||834==screen.width&&1112==screen.height||810==screen.width&&1080==screen.height||768==screen.width&&1024==screen.height)&&(n="ios"),t.os=n,t.osVersion=r,t.touch="wp"==t.os?0<navigator.msMaxTouchPoints:!!("ontouchstart"in window),t.mobile="wp"==t.os||"android"==t.os||"ios"==t.os||"bb"==t.os}};return t.init(),t}();!function(e,n){"function"==typeof define&&define.amd?define([],n):"object"==typeof exports?module.exports=n():e.browser=n()}(this,function(){return browser});

File diff suppressed because one or more lines are too long

2
js/jquery.min.js vendored

File diff suppressed because one or more lines are too long

@ -0,0 +1,2 @@
/* jquery.scrolly v1.0.0-dev | (c) @ajlkn | MIT licensed */
(function(e){function u(s,o){var u,a,f;if((u=e(s))[t]==0)return n;a=u[i]()[r];switch(o.anchor){case"middle":f=a-(e(window).height()-u.outerHeight())/2;break;default:case r:f=Math.max(a,0)}return typeof o[i]=="function"?f-=o[i]():f-=o[i],f}var t="length",n=null,r="top",i="offset",s="click.scrolly",o=e(window);e.fn.scrolly=function(i){var o,a,f,l,c=e(this);if(this[t]==0)return c;if(this[t]>1){for(o=0;o<this[t];o++)e(this[o]).scrolly(i);return c}l=n,f=c.attr("href");if(f.charAt(0)!="#"||f[t]<2)return c;a=jQuery.extend({anchor:r,easing:"swing",offset:0,parent:e("body,html"),pollOnce:!1,speed:1e3},i),a.pollOnce&&(l=u(f,a)),c.off(s).on(s,function(e){var t=l!==n?l:u(f,a);t!==n&&(e.preventDefault(),a.parent.stop().animate({scrollTop:t},a.speed,a.easing))})}})(jQuery);

@ -0,0 +1,74 @@
/*
TXT by HTML5 UP
html5up.net | @ajlkn
Free for personal and commercial use under the CCA 3.0 license (html5up.net/license)
*/
(function($) {
var $window = $(window),
$body = $('body'),
$nav = $('#nav');
// Breakpoints.
breakpoints({
xlarge: [ '1281px', '1680px' ],
large: [ '981px', '1280px' ],
medium: [ '737px', '980px' ],
small: [ '361px', '736px' ],
xsmall: [ null, '360px' ]
});
// Play initial animations on page load.
$window.on('load', function() {
window.setTimeout(function() {
$body.removeClass('is-preload');
}, 100);
});
// Dropdowns.
$('#nav > ul').dropotron({
mode: 'fade',
noOpenerFade: true,
speed: 300,
alignment: 'center'
});
// Scrolly
$('.scrolly').scrolly({
speed: 1000,
offset: function() { return $nav.height() - 5; }
});
// Nav.
// Title Bar.
$(
'<div id="titleBar">' +
'<a href="#navPanel" class="toggle"></a>' +
'<span class="title">' + $('#logo').html() + '</span>' +
'</div>'
)
.appendTo($body);
// Panel.
$(
'<div id="navPanel">' +
'<nav>' +
$('#nav').navList() +
'</nav>' +
'</div>'
)
.appendTo($body)
.panel({
delay: 500,
hideOnClick: true,
hideOnSwipe: true,
resetScroll: true,
resetForms: true,
side: 'left',
target: $body,
visibleClass: 'navPanel-visible'
});
})(jQuery);

@ -0,0 +1,587 @@
(function($) {
/**
* Generate an indented list of links from a nav. Meant for use with panel().
* @return {jQuery} jQuery object.
*/
$.fn.navList = function() {
var $this = $(this);
$a = $this.find('a'),
b = [];
$a.each(function() {
var $this = $(this),
indent = Math.max(0, $this.parents('li').length - 1),
href = $this.attr('href'),
target = $this.attr('target');
b.push(
'<a ' +
'class="link depth-' + indent + '"' +
( (typeof target !== 'undefined' && target != '') ? ' target="' + target + '"' : '') +
( (typeof href !== 'undefined' && href != '') ? ' href="' + href + '"' : '') +
'>' +
'<span class="indent-' + indent + '"></span>' +
$this.text() +
'</a>'
);
});
return b.join('');
};
/**
* Panel-ify an element.
* @param {object} userConfig User config.
* @return {jQuery} jQuery object.
*/
$.fn.panel = function(userConfig) {
// No elements?
if (this.length == 0)
return $this;
// Multiple elements?
if (this.length > 1) {
for (var i=0; i < this.length; i++)
$(this[i]).panel(userConfig);
return $this;
}
// Vars.
var $this = $(this),
$body = $('body'),
$window = $(window),
id = $this.attr('id'),
config;
// Config.
config = $.extend({
// Delay.
delay: 0,
// Hide panel on link click.
hideOnClick: false,
// Hide panel on escape keypress.
hideOnEscape: false,
// Hide panel on swipe.
hideOnSwipe: false,
// Reset scroll position on hide.
resetScroll: false,
// Reset forms on hide.
resetForms: false,
// Side of viewport the panel will appear.
side: null,
// Target element for "class".
target: $this,
// Class to toggle.
visibleClass: 'visible'
}, userConfig);
// Expand "target" if it's not a jQuery object already.
if (typeof config.target != 'jQuery')
config.target = $(config.target);
// Panel.
// Methods.
$this._hide = function(event) {
// Already hidden? Bail.
if (!config.target.hasClass(config.visibleClass))
return;
// If an event was provided, cancel it.
if (event) {
event.preventDefault();
event.stopPropagation();
}
// Hide.
config.target.removeClass(config.visibleClass);
// Post-hide stuff.
window.setTimeout(function() {
// Reset scroll position.
if (config.resetScroll)
$this.scrollTop(0);
// Reset forms.
if (config.resetForms)
$this.find('form').each(function() {
this.reset();
});
}, config.delay);
};
// Vendor fixes.
$this
.css('-ms-overflow-style', '-ms-autohiding-scrollbar')
.css('-webkit-overflow-scrolling', 'touch');
// Hide on click.
if (config.hideOnClick) {
$this.find('a')
.css('-webkit-tap-highlight-color', 'rgba(0,0,0,0)');
$this
.on('click', 'a', function(event) {
var $a = $(this),
href = $a.attr('href'),
target = $a.attr('target');
if (!href || href == '#' || href == '' || href == '#' + id)
return;
// Cancel original event.
event.preventDefault();
event.stopPropagation();
// Hide panel.
$this._hide();
// Redirect to href.
window.setTimeout(function() {
if (target == '_blank')
window.open(href);
else
window.location.href = href;
}, config.delay + 10);
});
}
// Event: Touch stuff.
$this.on('touchstart', function(event) {
$this.touchPosX = event.originalEvent.touches[0].pageX;
$this.touchPosY = event.originalEvent.touches[0].pageY;
})
$this.on('touchmove', function(event) {
if ($this.touchPosX === null
|| $this.touchPosY === null)
return;
var diffX = $this.touchPosX - event.originalEvent.touches[0].pageX,
diffY = $this.touchPosY - event.originalEvent.touches[0].pageY,
th = $this.outerHeight(),
ts = ($this.get(0).scrollHeight - $this.scrollTop());
// Hide on swipe?
if (config.hideOnSwipe) {
var result = false,
boundary = 20,
delta = 50;
switch (config.side) {
case 'left':
result = (diffY < boundary && diffY > (-1 * boundary)) && (diffX > delta);
break;
case 'right':
result = (diffY < boundary && diffY > (-1 * boundary)) && (diffX < (-1 * delta));
break;
case 'top':
result = (diffX < boundary && diffX > (-1 * boundary)) && (diffY > delta);
break;
case 'bottom':
result = (diffX < boundary && diffX > (-1 * boundary)) && (diffY < (-1 * delta));
break;
default:
break;
}
if (result) {
$this.touchPosX = null;
$this.touchPosY = null;
$this._hide();
return false;
}
}
// Prevent vertical scrolling past the top or bottom.
if (($this.scrollTop() < 0 && diffY < 0)
|| (ts > (th - 2) && ts < (th + 2) && diffY > 0)) {
event.preventDefault();
event.stopPropagation();
}
});
// Event: Prevent certain events inside the panel from bubbling.
$this.on('click touchend touchstart touchmove', function(event) {
event.stopPropagation();
});
// Event: Hide panel if a child anchor tag pointing to its ID is clicked.
$this.on('click', 'a[href="#' + id + '"]', function(event) {
event.preventDefault();
event.stopPropagation();
config.target.removeClass(config.visibleClass);
});
// Body.
// Event: Hide panel on body click/tap.
$body.on('click touchend', function(event) {
$this._hide(event);
});
// Event: Toggle.
$body.on('click', 'a[href="#' + id + '"]', function(event) {
event.preventDefault();
event.stopPropagation();
config.target.toggleClass(config.visibleClass);
});
// Window.
// Event: Hide on ESC.
if (config.hideOnEscape)
$window.on('keydown', function(event) {
if (event.keyCode == 27)
$this._hide(event);
});
return $this;
};
/**
* Apply "placeholder" attribute polyfill to one or more forms.
* @return {jQuery} jQuery object.
*/
$.fn.placeholder = function() {
// Browser natively supports placeholders? Bail.
if (typeof (document.createElement('input')).placeholder != 'undefined')
return $(this);
// No elements?
if (this.length == 0)
return $this;
// Multiple elements?
if (this.length > 1) {
for (var i=0; i < this.length; i++)
$(this[i]).placeholder();
return $this;
}
// Vars.
var $this = $(this);
// Text, TextArea.
$this.find('input[type=text],textarea')
.each(function() {
var i = $(this);
if (i.val() == ''
|| i.val() == i.attr('placeholder'))
i
.addClass('polyfill-placeholder')
.val(i.attr('placeholder'));
})
.on('blur', function() {
var i = $(this);
if (i.attr('name').match(/-polyfill-field$/))
return;
if (i.val() == '')
i
.addClass('polyfill-placeholder')
.val(i.attr('placeholder'));
})
.on('focus', function() {
var i = $(this);
if (i.attr('name').match(/-polyfill-field$/))
return;
if (i.val() == i.attr('placeholder'))
i
.removeClass('polyfill-placeholder')
.val('');
});
// Password.
$this.find('input[type=password]')
.each(function() {
var i = $(this);
var x = $(
$('<div>')
.append(i.clone())
.remove()
.html()
.replace(/type="password"/i, 'type="text"')
.replace(/type=password/i, 'type=text')
);
if (i.attr('id') != '')
x.attr('id', i.attr('id') + '-polyfill-field');
if (i.attr('name') != '')
x.attr('name', i.attr('name') + '-polyfill-field');
x.addClass('polyfill-placeholder')
.val(x.attr('placeholder')).insertAfter(i);
if (i.val() == '')
i.hide();
else
x.hide();
i
.on('blur', function(event) {
event.preventDefault();
var x = i.parent().find('input[name=' + i.attr('name') + '-polyfill-field]');
if (i.val() == '') {
i.hide();
x.show();
}
});
x
.on('focus', function(event) {
event.preventDefault();
var i = x.parent().find('input[name=' + x.attr('name').replace('-polyfill-field', '') + ']');
x.hide();
i
.show()
.focus();
})
.on('keypress', function(event) {
event.preventDefault();
x.val('');
});
});
// Events.
$this
.on('submit', function() {
$this.find('input[type=text],input[type=password],textarea')
.each(function(event) {
var i = $(this);
if (i.attr('name').match(/-polyfill-field$/))
i.attr('name', '');
if (i.val() == i.attr('placeholder')) {
i.removeClass('polyfill-placeholder');
i.val('');
}
});
})
.on('reset', function(event) {
event.preventDefault();
$this.find('select')
.val($('option:first').val());
$this.find('input,textarea')
.each(function() {
var i = $(this),
x;
i.removeClass('polyfill-placeholder');
switch (this.type) {
case 'submit':
case 'reset':
break;
case 'password':
i.val(i.attr('defaultValue'));
x = i.parent().find('input[name=' + i.attr('name') + '-polyfill-field]');
if (i.val() == '') {
i.hide();
x.show();
}
else {
i.show();
x.hide();
}
break;
case 'checkbox':
case 'radio':
i.attr('checked', i.attr('defaultValue'));
break;
case 'text':
case 'textarea':
i.val(i.attr('defaultValue'));
if (i.val() == '') {
i.addClass('polyfill-placeholder');
i.val(i.attr('placeholder'));
}
break;
default:
i.val(i.attr('defaultValue'));
break;
}
});
});
return $this;
};
/**
* Moves elements to/from the first positions of their respective parents.
* @param {jQuery} $elements Elements (or selector) to move.
* @param {bool} condition If true, moves elements to the top. Otherwise, moves elements back to their original locations.
*/
$.prioritize = function($elements, condition) {
var key = '__prioritize';
// Expand $elements if it's not already a jQuery object.
if (typeof $elements != 'jQuery')
$elements = $($elements);
// Step through elements.
$elements.each(function() {
var $e = $(this), $p,
$parent = $e.parent();
// No parent? Bail.
if ($parent.length == 0)
return;
// Not moved? Move it.
if (!$e.data(key)) {
// Condition is false? Bail.
if (!condition)
return;
// Get placeholder (which will serve as our point of reference for when this element needs to move back).
$p = $e.prev();
// Couldn't find anything? Means this element's already at the top, so bail.
if ($p.length == 0)
return;
// Move element to top of parent.
$e.prependTo($parent);
// Mark element as moved.
$e.data(key, $p);
}
// Moved already?
else {
// Condition is true? Bail.
if (condition)
return;
$p = $e.data(key);
// Move element back to its original location (using our placeholder).
$e.insertAfter($p);
// Unmark element as moved.
$e.removeData(key);
}
});
};
})(jQuery);

@ -0,0 +1,59 @@
<?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(
// A
'accueil' => 'Home',
'alpha_titre' => 'Configure Alpha',
// B
'bouton_subscribe' => 'Subscribe',
// C
'contact' => 'Contact',
// E
'explication_articles_home' => "The sommaire page displays the first level topics. You may need to add one or more articles to this list of topics. Enter the SPIP article number(s) or unique page(s) number(s) separated by a comma. To put them in the desired order add a 1. 2. in the title of the article (the articles are sorted by title number)." ,
'explication_articles_home_apres' => "The sommaire page displays the first level topics. You may need to add one or more articles AFTER this list of topics. Enter the SPIP article number(s) or unique page(s) number(s) separated by a comma. To put them in the desired order add a 1. 2. in the title of the article (the articles are sorted by title number)." ,
'explication_config_contenu' => "The template uses the subtitles for the articles, don't forget to activate them in <a href='?exec=configurer_contenu'>configure content</a>",
'explication_config_titre_sommaire' => "Sometimes on the home page the title of the site doesn't look good on the image",
'explication_doc_home' => "The SPIP id of the document that will be used for the large top image. The original theme uses an image size <b>1800 × 905 pixels</b> ",
'explication_doc_home2' => "The SPIP id of the document that will be used for the image <i>featured</i>. The original theme Alpha uses an image size <b>1200 × 393 pixels</b>",
'explication_facebook' => "Complete URL of the facebook account",
'explication_instagram' => "Complete URL of the Instagram account",
'explication_soundcloud' => "Complete URL of the du compte soundcloud account",
'explication_twitter' => "Complete URL of the twitter account",
'explication_vimeo' => "Complete URL of the vimeo account",
// L
'label_articles_home' => "Id article(s) before sectors list",
'label_articles_home_apres' => "Id article(s) after sectors list",
'label_config_contenu' => "Sub-title",
'label_config_titre_sommaire' => 'Title',
'label_doc_home' => "Id doc home",
'label_doc_home2' => "Id doc home featured",
'label_facebook' => 'Facebook',
'label_instagram' => 'Instagram',
'label_newsletter_home' => 'Display the subscription form to the newsletter',
'label_soundcloud' => 'Soundcloud',
'label_twitter' => 'Twitter',
'label_vimeo' => 'Vimeo',
'legend1' => "Explanations",
'legend_footer' => "Footer Parameters ",
'legend_home' => "Sommaire Parameters",
// R
'read_more' => 'Read more',
// T
'texte_calltoaction' => "To get regular news leave your email ",
'titre_calltoaction' => "Newsletter",
'texte_config_titre_sommaire' => "Site title shown on home page? ",
'titre_configurer_alpha' => 'Configure Html5up Alpha',
);

@ -0,0 +1,79 @@
<?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(
// A
'accueil' => 'Accueil',
'archives' => 'Archives',
// B
'bouton_subscribe' => 'S\'abonner',
// C
'contact' => 'Contact',
'cfg_exemple' => 'Exemple',
'cfg_exemple_explication' => 'Explication de cet exemple',
'cfg_titre_parametrages' => 'Paramétrages',
// E
'explication_articles_home_avant' => "La page sommaire affiche les rubriques de premier niveau. Vous pouvez avoir besoin d'ajouter un ou des articles AVANT cette liste de rubriques. Saisissez le (ou les) numéro(s) d'article(s) ou de page(s) unique(s) séparés par une virgule. Pour les mettre dans l'ordre voulu ajouter un 1. 2. dans le titre de l'article (les articles sont triés par num titre)." ,
'explication_articles_home_apres' => "La page sommaire affiche les rubriques de premier niveau. Vous pouvez avoir besoin d'ajouter un ou des articles APRES cette liste de rubriques. Saisissez le (ou les) numéro(s) d'article(s) ou de page(s) unique(s) séparés par une virgule. Pour les mettre dans l'ordre voulu ajouter un 1. 2. dans le titre de l'article (les articles sont triés par num titre)." ,
'explication_config_contenu' => "Le squelette utilise les sous titres pour les articles, n'oubliez pas de les activer dans <a href='?exec=configurer_contenu'>configurer contenu</a>",
'explication_config_titre' => "Titre du site apparait dans l'image sur fond opaque",
'explication_doc_bandeau' => "L'id du document qui sera utilisé pour l'image du bandeau. Le thème original utilise une image de taille <b>2000 × 656 pixels</b> ",
'explication_text_sommaire' => "Texte du surtitre au-dessus des rubriques (qui prendra la balise H2). 'Rubriques' par défaut",
'explication_text_blog' => "Texte du surtitre du blog (qui prendra la balise H2). 'Articles' par défaut",
'explication_text_rubrique' => "Texte du surtitre au-dessus des articles (qui prendra la balise H2). 'Articles' par défaut",
'explication_text_article' => "Texte du surtitre au-dessus des articles de la même rubrique (qui prendra la balise H2). 'Dans la même rubrique' par défaut",
'explication_long_intro' => "Longueur de l'introduction des articles dans les vignettes",
'explication_rubrique_blog' => "Rubrique(s) présentée(s) sous forme de blog dans le bas de la page. Saisissez le (ou les) numéro(s) de rubrique(s) séparés par une virgule.",
'explication_header' => "Texte apparaissant dans le l'entête (facultatif)",
// H
'html5up_txt_titre' => 'Configurer html5up_txt',
// L
'label_articles_home_avant' => "Id article(s) avant liste des secteurs",
'label_articles_home_apres' => "Id article(s) après liste des secteurs",
'label_config_contenu' => "Sous-titre",
'label_config_titre' => 'Titre sur fond opaque',
'label_doc_bandeau' => "Id image bandeau",
'label_text_sommaire' => "Surtitre des rubriques",
'label_text_rubrique' => "Surtitre des articles",
'label_text_article' => "Surtitre des articles de la même rubrique",
'label_text_blog' => "Surtitre du blog",
'label_long_intro' => "Longueur de l'introduction",
'label_rubrique_blog' => "Id rubrique(s) du blog",
'legend' => "Préambule",
'legend_sommaire' => "Paramétrage page Sommaire ",
'legend_rubrique' => "Paramétrage page Rubrique ",
'legend_article' => "Paramétrage page Article ",
'legend_header' => "Paramétrage en-tête",
'label_header' => "En-tête",
'lire_suite' => "Lire la suite",
// N
'nous_suivre' => 'Nous suivre',
// R
'read_more' => 'Lire la suite',
// T
'texte_calltoaction' => "Pour avoir des nouvelles régulières, inscrivez votre mail ",
'texte_config_titre' => "Le titre du site sur un fond opaque",
'titre_configurer_html5up_txt' => 'Configurer Html5up TXT',
'titre_page_configurer_html5up_txt' => 'Configurer Html5up TXT',
// H
'html5up_txt_titre' => 'Html5Up TXT',
);

@ -0,0 +1,15 @@
<?php
// This is a SPIP language file -- Ceci est un fichier langue de SPIP
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
$GLOBALS[$GLOBALS['idx_lang']] = [
// H
'html5up_txt_description' => 'Ce plugin permet de reprendre le design TXT proposé sur Html5Up',
'html5up_txt_nom' => 'Html5Up TXT',
'html5up_txt_slogan' => 'Squelette adapté du thème TXT de HTML5 UP',
];

@ -0,0 +1,32 @@
<paquet
prefix="html5up_txt"
version="1.0.0"
etat="dev"
compatibilite="[4.1.0;4.2.*]"
logo="prive/themes/spip/images/html5up_txt-64.png"
documentation=""
>
<!--
Paquet généré le 2023-08-11 05:42:42
-->
<nom>Html5Up TXT</nom>
<!-- Squelette adapté du thème TXT de HTML5 UP -->
<auteur>JMarc</auteur>
<auteur lien="http://html5up.net">html5up</auteur>
<licence lien="http://html5up.net/license">CCA 3.0 License</licence>
<licence>GNU/GPL</licence>
<necessite nom="saisies" compatibilite="[3.23.2;]" />
<necessite nom="pages" compatibilite="[1.3.0;[" />
<necessite nom="sociaux" compatibilite="[2.3.2;]"/>
<necessite nom="fontawesome" compatibilite="[1.0.5;]" />
<utilise nom="mailshot" compatibilite="[1.7.2;]"/>
<utilise nom="newsletters" compatibilite="[1.3.24;]"/>
<utilise nom="mailsubscribers" compatibilite="[1.7.14;]"/>
<utilise nom="centre_image" compatibilite="[0.10.6;]"/>
<menu nom="configurer_html5up_txt" titre="html5up_txt:html5up_txt_titre" parent="menu_squelette" icone="images/html5up_txt-16.png" />
</paquet>