dépôt git initialisé

This commit is contained in:
chankalan 2020-02-18 13:23:20 +01:00
commit 70678c8416
227 changed files with 23006 additions and 0 deletions

4
401.html Executable file
View File

@ -0,0 +1,4 @@
#HTTP_HEADER{#VAL{"HTTP/1.0 "}|concat{#ENV{code,"401 Not Found"}}}
#HTTP_HEADER{"Cache-Control: no-store, no-cache, must-revalidate"}
#HTTP_HEADER{Pragma: no-cache}
<INCLURE{fond=structure,env,type-page=#ENV{status,401}} />

3
article.html Executable file
View File

@ -0,0 +1,3 @@
<BOUCLE_principale_article(ARTICLES){id_article}>
<INCLURE{fond=structure,env,id_rubrique=#ENV{id_rubrique,#ID_RUBRIQUE},id_secteur=#ID_SECTEUR,type-page=article,composition=#COMPOSITION} />
</BOUCLE_principale_article>

2
aside/dist.html Executable file
View File

@ -0,0 +1,2 @@
[(#REM) Menu de navigation par rubriques ]
<INCLURE{fond=inclure/rubriques,env,type-page,composition} />

10
aside/z_apl.html Executable file
View File

@ -0,0 +1,10 @@
[(#REM)
Squelette Big_Pipe
http://www.facebook.com/notes/facebook-engineering/bigpipe-pipelining-web-pages-for-high-performance/389414033919
(c) 2010 Cedric Morin
Distribue sous licence GPL
]#CACHE{0}
#INCLURE{fond=inclure/ajax_parallel_load,bloc=#SQUELETTE}

3
auteur.html Executable file
View File

@ -0,0 +1,3 @@
<BOUCLE_principale_auteur(AUTEURS){id_auteur}>
<INCLURE{fond=structure,env,type-page=auteur,composition=#COMPOSITION} />
</BOUCLE_principale_auteur>

43
backend.html Executable file
View File

@ -0,0 +1,43 @@
[(#REM)
Ce fichier sert à créer les flux RSS
qui permettent aux visiteurs de suivre l'actualité
de votre site depuis un lecteur de news.
Cette page génère un code XML/RSS adapté
][(#HTTP_HEADER{Content-type: text/xml[; charset=(#CHARSET)]})]<?xml
version="1.0"[ encoding="(#CHARSET)"]?>
<rss version="2.0" [(#REM) rss 2.0.9)]
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:content="http://purl.org/rss/1.0/modules/content/"
xmlns:atom="http://www.w3.org/2005/Atom"
>
<channel[ xml:lang="(#LANG)"]>
<title>[(#NOM_SITE_SPIP|textebrut|texte_backend)]</title>
<link>#URL_SITE_SPIP/</link>
[<description>(#DESCRIPTIF_SITE_SPIP|supprimer_tags|texte_backend)</description>]
<language>#LANG</language>
<generator>SPIP - www.spip.net</generator>
<atom:link href="[(#SELF|url_absolue)]" rel="self" type="application/rss+xml" />
[ <image>
<title>[(#NOM_SITE_SPIP|texte_backend)]</title>
<url>(#LOGO_SITE_SPIP|image_reduire{144,400}|extraire_attribut{src}|url_absolue|texte_backend)</url>
<link>#URL_SITE_SPIP/</link>
[<height>(#LOGO_SITE_SPIP|image_reduire{144,400}|extraire_attribut{height})</height>]
[<width>(#LOGO_SITE_SPIP|image_reduire{144,400}|extraire_attribut{width})</width>]
</image>
]
<BOUCLE_10recents(ARTICLES){id_rubrique>0}{lang ?}{branche ?}{id_mot ?}{id_auteur ?}{par date}{inverse}{0,10}{unique}>
<INCLURE{fond=inclure/rss-item,id_article} />
</BOUCLE_10recents>
<BOUCLE_tres_recents(ARTICLES){id_rubrique>0}{lang ?}{branche ?}{id_mot ?}{id_auteur ?}{par date}{inverse}{age<3}{unique}>
<INCLURE{fond=inclure/rss-item,id_article} />
</BOUCLE_tres_recents>
</channel>
</rss>

44
baz_april_administrations.php Executable file
View File

@ -0,0 +1,44 @@
<?php
if (!defined("_ECRIRE_INC_VERSION")) return;
include_spip('inc/meta');
// Installation et mise à jour sur modele sjcycle
function baz_april_upgrade($nom_meta_version_base, $version_cible) {
// Création du tableau des mises à jour.
$maj = array();
$config_fdr = array(
'titre' => 'Manuel du site'
);
$config_crayons = array (
'barretypo' => 'on',
'msgAbandon' => 'on',
'clickhide' => 'on'
);
$config_compositions = array(
'masquer_formulaire' => 'oui'
);
$config_baz_april = array(
'afficherauteurs' => 'non'
);
// Tableau de la configuration par défaut
$maj['create'] = array(
array('ecrire_config', 'feuillederoute', $config_fdr),
array('ecrire_config', 'crayons', $config_crayons),
array('ecrire_config', 'compositions', $config_compositions),
array('ecrire_config', 'baz_april', $config_baz_april),
array('ecrire_config', 'version_html_max', 'html5'),
);
// Maj du plugin.
include_spip('base/upgrade');
maj_plugin($nom_meta_version_base, $version_cible, $maj);
}
// Désinstallation
function baz_april_vider_tables($nom_meta_version_base) {
effacer_meta('baz');
effacer_meta($nom_meta_version_base);
}

40
baz_april_fonctions.php Executable file
View File

@ -0,0 +1,40 @@
<?php
if (!defined("_ECRIRE_INC_VERSION")) return;
/* reprise d'une fonction du plugin Agenda
* renommee pour eviter plantage
https://zone.spip.org/trac/spip-zone/browser/_plugins_/agenda/trunk/agenda_fonctions.php#L32
*/
/**
* decale les mois de la date.
* cette fonction peut raboter le jour si le nouveau mois ne les contient pas
* exemple 31/01/2007 + 1 mois => 28/02/2007
*
* @param string $date
* @param int $decalage
* @param string $format
* @return string
*/
function baz_moisdecal($date, $decalage, $format = 'Y-m-d H:i:s') {
include_spip('inc/filtres');
$date_array = recup_date($date);
if ($date_array) {
list($annee, $mois, $jour) = $date_array;
}
if (!$jour) {
$jour = 1;
}
if (!$mois) {
$mois = 1;
}
$mois2 = $mois + $decalage;
$date2 = mktime(1, 1, 1, $mois2, $jour, $annee);
// mois normalement attendu
$mois3 = date('m', mktime(1, 1, 1, $mois2, 1, $annee));
// et si le mois de la nouvelle date a moins de jours...
$mois2 = date('m', $date2);
if ($mois2 - $mois3) {
$date2 = mktime(1, 1, 1, $mois2, 0, $annee);
}
return date($format, $date2);
}

44
baz_april_options.php Executable file
View File

@ -0,0 +1,44 @@
<?php
if (!defined("_ECRIRE_INC_VERSION")) return;
// les blocs de baz
if (!isset($GLOBALS['z_blocs'])) {
$GLOBALS['z_blocs'] = array('content','aside','extra','head','head_js','header','footer','breadcrumb');
}
// les images de plus de 2000*1000 pixels de haut seront réduites en 2000x1000 maximum
// define('_IMG_MAX_WIDTH', 2000);
// define('_IMG_MAX_HEIGHT', 1000);
// surligner le terme de recherche
define('_SURLIGNE_RECHERCHE_REFERERS',true);
if (isset($_REQUEST['recherche'])) {
$_GET['var_recherche'] = $_REQUEST['recherche'];
}
// les images de plus de 2000*1000 pixels de haut seront réduites en 2000x1000 maximum
// define('_IMG_MAX_WIDTH', 2000);
// define('_IMG_MAX_HEIGHT', 1600);
// $GLOBALS['quota_cache'] = 200;
define('_DUREE_CACHE_DEFAUT', 24*3600*90);
// pour sauter une ligne en rédaction
// $GLOBALS['ligne_horizontale'] = '<br class="clear" />';
// afficher les erreurs
// define('_NO_CACHE', -1);
// define('_INTERDIRE_COMPACTE_HEAD_ECRIRE', true);
// error_reporting(E_ALL^E_NOTICE);
// ini_set ("display_errors", "On");
// define('SPIP_ERREUR_REPORT',E_ALL);
// $GLOBALS['taille_des_logs'] = 500;
// define('_MAX_LOG', 500000);
// define('_LOG_FILELINE',true);
// define('_LOG_FILTRE_GRAVITE',8);
// define('_DEBUG_SLOW_QUERIES', true);
// define('_BOUCLE_PROFILER', 5000);
$GLOBALS['debut_intertitre'] = "\n<h2 class=\"spip\">\n";
$GLOBALS['fin_intertitre'] = "</h2>\n";

3
baz_april_pipelines.php Executable file
View File

@ -0,0 +1,3 @@
<?php
if (!defined("_ECRIRE_INC_VERSION")) return;

37
body.html Executable file
View File

@ -0,0 +1,37 @@
<body class="body[--(#ENV{type-page})][ body--(#COMPOSITION)]">
<ul class="accesrapide accesrapide--main">
<li class="accesrapide"><a class="accesrapide__lien visuallyhidden focusable" href="#contenu"><:baz_april:evitement_contenu:></a></li>
<li class="accesrapide"><a class="accesrapide__lien visuallyhidden focusable" href="#navigation"><:baz_april:evitement_navigation:></a></li>
</ul>
<div id="boussole_spip">[(#REM) La boussole SPIP va s'insérer ici ]</div>
<div class="page__wrapper">
<header class="page__header">
<div class="page--container">
<INCLURE{fond=header/#ENV{type-page},env} />
<INCLURE{fond=inclure/nav-secteurs,env} />
<INCLURE{fond=inclure/boussole} />
</div>
</header>
<div class="page__content page--container">
<main class="contentMain">
<INCLURE{fond=content/#ENV{type-page},env,composition} />
<aside class="contentMain__extra">
<INCLURE{fond=extra/#ENV{type-page},env} />
</aside>
</main><!--.main-->
<aside class="contentAside">
<INCLURE{fond=aside/#ENV{type-page},env} />
</aside><!--.aside-->
</div>
<footer class="page__footer">
<div class="page--container">
<INCLURE{fond=footer/#ENV{type-page},env} />
</div>
</footer>
</div><!--.container-->
</body>

5
breadcrumb/401.html Executable file
View File

@ -0,0 +1,5 @@
[(#REM) Fil d'Ariane ]
<nav class="arbo" aria-label="Fil d'Ariane">
<a href="#URL_SITE_SPIP/"><:accueil_site:></a> <span class="divider"> &gt; </span>
<span class="active"><:pass_erreur:>[ (#ENV{status})]</span>
</nav>

5
breadcrumb/404.html Executable file
View File

@ -0,0 +1,5 @@
[(#REM) Fil d'Ariane ]
<nav class="arbo" aria-label="Fil d'Ariane">
<a href="#URL_SITE_SPIP/"><:accueil_site:></a> <span class="divider"> &gt; </span>
<span class="active"><:pass_erreur:> 404</span>
</nav>

8
breadcrumb/auteur.html Executable file
View File

@ -0,0 +1,8 @@
<BOUCLE_content(AUTEURS){id_auteur}>
[(#REM) Fil d'Ariane ]
<nav class="arbo" aria-label="Fil d'Ariane">
<a href="#URL_SITE_SPIP/"><:accueil_site:></a><span class="divider"> &gt; </span>
<:info_auteurs:><span class="divider"> &gt; </span>
[<span class="active">(#NOM|couper{80})</span>]
</nav>
</BOUCLE_content>

15
breadcrumb/dist.html Executable file
View File

@ -0,0 +1,15 @@
<nav class="arbo" aria-label="Fil d'Ariane">
#SET{objet,''}#SET{id_objet,''}
[(#ENV{id_rubrique}|oui)#SET{objet,rubrique}#SET{id_objet,#ENV{id_rubrique}}]
[(#ENV{id_syndic}|oui)#SET{objet,site}#SET{id_objet,#ENV{id_syndic}}]
[(#ENV{id_breve}|oui)#SET{objet,breve}#SET{id_objet,#ENV{id_breve}}]
[(#ENV{id_article}|oui)#SET{objet,article}#SET{id_objet,#ENV{id_article}}]
[(#ENV{id_objet}|oui)#SET{objet,#ENV{objet}}#SET{id_objet,#ENV{id_objet}}]
[(#GET{objet}|oui)
#INCLURE{fond=breadcrumb/inc-objet,id_objet=#GET{id_objet},objet=#GET{objet}}
][(#GET{objet}|non)
<a href="#URL_SITE_SPIP/"><:accueil_site:></a>
]
</nav>

7
breadcrumb/inc-objet.html Executable file
View File

@ -0,0 +1,7 @@
<a href="#URL_SITE_SPIP/"><:accueil_site:></a><span class="divider"> &gt; </span>
<BOUCLE_contexte_rubrique(RUBRIQUES) {id_rubrique=(#OBJET|=={rubrique}|?{#INFO_ID_PARENT{#OBJET,#ID_OBJET},#INFO_ID_RUBRIQUE{#OBJET,#ID_OBJET}})}>
<BOUCLE_ariane_hier(HIERARCHIE) {id_rubrique}{tout}>
<a href="#URL_RUBRIQUE">[(#TITRE|couper{80})]</a><span class="divider"> &gt; </span>
</BOUCLE_ariane_hier>
</BOUCLE_contexte_rubrique>
<span[(#ENV{expose,' '}|oui)class="active"]>[(#ID_OBJET|generer_url_entite{#OBJET}|lien_ou_expose{#INFO_TITRE{#OBJET,#ID_OBJET}|sinon{?}|couper{80},#ENV{expose,' '}|?{span}})]</span>[<span class="divider">(#ENV{expose,' '}|non)&gt; </span>]

10
breadcrumb/login.html Executable file
View File

@ -0,0 +1,10 @@
[(#REM)
Est-ce qu'on se connecte a l'espace prive ou pas ?
]#SET{prive,''}
[(#ENV{url}|=={''}|?{#SET{prive,' '}})]
[(#ENV{url}|match{^#EVAL{_DIR_RESTREINT_ABS}}|?{#SET{prive,' '}})]
[(#REM) Fil d'Ariane ]
<nav class="arbo" aria-label="Fil d'Ariane"><a href="#URL_SITE_SPIP/"><:accueil_site:></a>
[<span class="divider"> &gt; </span><strong class="on">(#GET{prive}|?{<:login_acces_prive:>,<:lien_connecter:>})</strong>]
</nav>

8
breadcrumb/mot.html Executable file
View File

@ -0,0 +1,8 @@
<BOUCLE_content(MOTS) {id_mot} {doublons}>
<nav class="arbo" aria-label="Fil d'Ariane">
<a href="#URL_SITE_SPIP/"><:accueil_site:></a><span class="divider"> &gt; </span>
<span><:mots_clefs:></span><span class="divider"> &gt; </span>
<BOUCLE_ariane(GROUPES_MOTS){id_groupe}><span>[(#TITRE|couper{80})]</span><span class="divider"> &gt; </span></BOUCLE_ariane>
<span class="active">[(#TITRE|couper{80})]</span>
</nav>
</BOUCLE_content>

4
breadcrumb/plan.html Executable file
View File

@ -0,0 +1,4 @@
<nav class="arbo" aria-label="Fil d'Ariane">
<a href="#URL_SITE_SPIP/"><:accueil_site:></a><span class="divider"> &gt; </span>
<span class="active"><:plan_site:></span>
</nav>

4
breadcrumb/recherche.html Executable file
View File

@ -0,0 +1,4 @@
<nav class="arbo" aria-label="Fil d'Ariane">
<a href="#URL_SITE_SPIP/"><:accueil_site:></a><span class="divider"> &gt; </span>
<span class="active"><:info_rechercher:> [&laquo; <strong class="on">(#RECHERCHE)</strong> &raquo;]</span>
</nav>

10
content/401.html Executable file
View File

@ -0,0 +1,10 @@
[(#REM) Fil d'Ariane ]
<section class="content">
<header class="cartouche">
<h1><:pass_erreur:>[ (#ENV{status})]</h1>
<INCLURE{fond=breadcrumb/#ENV{type-page},env} />
</header>
<div class="main">
[<div class="chapo">(#ENV{erreur})</div>]
</div>
</section>

10
content/404.html Executable file
View File

@ -0,0 +1,10 @@
[(#REM) Fil d'Ariane ]
<section class="content">
<header class="cartouche">
<h1><:pass_erreur:> 404</h1>
<INCLURE{fond=breadcrumb/#ENV{type-page},env} />
</header>
<div class="main">
[<div class="chapo">(#ENV{erreur})</div>]
</div>
</section>

48
content/article.html Executable file
View File

@ -0,0 +1,48 @@
<BOUCLE_content(ARTICLES){id_article}>
<article class="content" id="content">
<header class="cartouche">
[<p class="#EDIT{surtitre} surtitre">(#SURTITRE)</p>]
<h1><span class="#EDIT{titre}">#TITRE</span>[
<small class="#EDIT{soustitre} soustitre">(#SOUSTITRE)</small>
]</h1>
[(#ENV{composition}|=={blog}|oui)<INCLURE{fond=breadcrumb/rubrique-blog,env} />]
[(#ENV{composition}|=={blog}|non)<INCLURE{fond=breadcrumb/article,env} />]
[<p class="publication"><time datetime="[(#DATE|date_iso)]"><i class="icon-calendar"></i> (#DATE|affdate)</time></p>][(#CONFIG{baz_april/afficherauteurs}|=={on}|oui)[<p class="auteurs"><:par_auteur:> (#LESAUTEURS)</p>]]
[(#REM) Inclure le modele des liens de traductions ]
<div class="postmeta">
#MODELE{article_traductions}
<B_tags>
<span class="tags">
<span class="sep">|</span>
<ul class="inline">
<BOUCLE_tags(MOTS){id_article}>
<li><a class="label" href="#URL_MOT"><i class="icon-tag"></i> #TITRE</a></li>
</BOUCLE_tags>
</ul>
</span>
</B_tags>
</div>
</header>
<div class="main">
[<div class="#EDIT{chapo} chapo surlignable">(#CHAPO|image_reduire{700,*})</div>]
[<div class="#EDIT{texte} texte surlignable">(#TEXTE|image_reduire{700,*})</div>]
[<p class="#EDIT{hyperlien} hyperlien"><:voir_en_ligne:> : <a href="(#URL_SITE)" class="spip_out">[(#NOM_SITE|sinon{[(#URL_SITE|couper{80})]})]</a></p>]
</div>
<aside>
[(#REM) Gestion du portfolio et des documents ]
[(#INCLURE{fond=inclure/documents,id_article})]
</aside>
<footer>
[<div class="#EDIT{ps} ps surlignable"><h2><:info_ps:></h2>(#PS|image_reduire{700,*})</div>]
[<div class="notes"><h2><:info_notes:></h2>(#NOTES)</div>]
</footer>
</article>
</BOUCLE_content>

22
content/auteur.html Executable file
View File

@ -0,0 +1,22 @@
<BOUCLE_content(AUTEURS){id_auteur}>
<section class="content vcard" id="content" itemscope itemtype="http://schema.org/Person"> [(#REM) microformat vcard]
<header class="cartouche">
<h1 class="#EDIT{qui} fn" itemprop="name">[(#LOGO_AUTEUR|image_reduire|inserer_attribut{itemprop,image})]#NOM</h1>
</header>
<div class="main">
[<div class="#EDIT{bio} texte bio">(#BIO|image_reduire{700,*})</div>]
[<p class="#EDIT{hyperlien} hyperlien"><:voir_en_ligne:> : <a href="(#URL_SITE)" class="url spip_out" itemprop="url">[(#NOM_SITE|sinon{[(#URL_SITE|couper{80})]})]</a></p>]
</div>
<aside>
<INCLURE{fond=liste/articles-auteur,id_auteur,env,ajax} />
#FORMULAIRE_ECRIRE_AUTEUR
</aside>
<footer>
[<div class="notes"><h2><:info_notes:></h2>(#NOTES)</div>]
</footer>
</section>
</BOUCLE_content>

17
content/login.html Executable file
View File

@ -0,0 +1,17 @@
[(#REM)
Est-ce qu'on se connecte a l'espace prive ou pas ?
]#SET{prive,''}
[(#ENV{url}|=={''}|?{#SET{prive,' '}})]
[(#ENV{url}|match{^#EVAL{_DIR_RESTREINT_ABS}}|?{#SET{prive,' '}})]
<section class="content" id="content">
<header class="cartouche">
[<h1>(#GET{prive}|?{<:login_acces_prive:>,<:lien_connecter:>})
<small>#NOM_SITE_SPIP</small>
</h1>]
<INCLURE{fond=breadcrumb/#ENV{type-page},env} />
</header >
<div class="main">
[(#FORMULAIRE_LOGIN{#ENV{url}|sinon{#URL_ECRIRE{accueil}}})]
</div>
</section>

49
content/mot.html Executable file
View File

@ -0,0 +1,49 @@
<BOUCLE_content(MOTS) {id_mot} {doublons}>
<section class="content" id="content">
<header class="cartouche">
<h1 class="#EDIT{titre}">[(#LOGO_MOT|image_reduire)]#TITRE</h1>
<INCLURE{fond=breadcrumb/#ENV{type-page},env} />
</header>
<div class="main">
[<div class="#EDIT{texte} chapo">(#TEXTE|image_reduire{700,*})</div>]
</div>
<aside>
[(#REM) Articles lies au mot-cle ]
<div class="liste articles">
<INCLURE{fond=liste/articles-resume,env,ajax,id_mot,titre=<:baz_april:articles_lies:>} />
</div>
[(#REM) Rubriques liees au mot-cle ]
<B_rubriques>
<div class="liste rubriques">
<h2 class="h2"><:rubriques:></h2>
<ul class="liste-items">
<BOUCLE_rubriques(RUBRIQUES) {id_mot} {par titre} {pagination 50}>
<li class="item"><a href="#URL_RUBRIQUE">#TITRE</a></li>
</BOUCLE_rubriques>
</ul>
[<div class="pagination">(#PAGINATION)</div>]
</div>
</B_rubriques>
[(#REM) Sites web lies au mot-cle ]
<B_sites>
<div class="liste sites">
<h2 class="h2"><:sites_web:></h2>
<ul class="liste-items">
<BOUCLE_sites(SITES) {id_mot} {par nom_site} {pagination 50}>
<li class="item"><a href="[(#ID_SYNDIC|generer_url_entite{site,'','',#CONNECT})]">#NOM_SITE</a></li>
</BOUCLE_sites>
</ul>
[<div class="pagination">(#PAGINATION)</div>]
</div>
</B_sites>
</aside>
[<footer>
<div class="notes"><hr />(#NOTES)</div>
</footer>]
</section>
</BOUCLE_content>

60
content/plan.html Executable file
View File

@ -0,0 +1,60 @@
<section class="content" id="content">
<header class="cartouche">
<h1><:plan_site:></h1>
<INCLURE{fond=breadcrumb/#ENV{type-page},env} />
</header>
<div class="main">
[(#REM) Articles et sous-rubriques ]
<B_articles_pages>
<ul class="plan">
<BOUCLE_articles_pages(ARTICLES) {id_rubrique=-1} {page !IN accueil, mentions} {par titre}>
<li><a href="#URL_ARTICLE">#TITRE</a></li>
</BOUCLE_articles_pages>
</ul>
</B_articles_pages>
<BOUCLE_secteurs(RUBRIQUES) {racine} {par num titre, titre}>
<h2 class="h2"><a href="#URL_RUBRIQUE">#TITRE</a></h2>
[(#REM) Articles et sous-rubriques ]
<BOUCLE_test_article_r1(ARTICLES){id_rubrique}{1,2}>
</BOUCLE_test_article_r1>
<B_articles_racine>
<ul class="plan">
<BOUCLE_articles_racine(ARTICLES) {id_rubrique} {par titre}>
<li><a href="#URL_ARTICLE">#TITRE</a></li>
</BOUCLE_articles_racine>
</ul>
</B_articles_racine>
</B_test_article_r1>
<B_rubriques>
<ul class="plan">
<BOUCLE_rubriques(RUBRIQUES) {id_parent} {par titre}>
<li>
<strong><a href="#URL_RUBRIQUE">#TITRE</a></strong>
<BOUCLE_test_article_r2(ARTICLES){id_rubrique}{1,2}>
</BOUCLE_test_article_r2>
<B_articles>
<ul>
<BOUCLE_articles(ARTICLES) {id_rubrique} {par titre}>
[(#TOTAL_BOUCLE|>{1}|oui)<li><a href="#URL_ARTICLE">#TITRE</a></li>]
</BOUCLE_articles>
</ul>
</B_articles>
</B_test_article_r2>
<BOUCLE_sous_rubriques(BOUCLE_rubriques)></BOUCLE_sous_rubriques>
</li>
</BOUCLE_rubriques>
</ul>
</B_rubriques>
</BOUCLE_secteurs>
</div>
</section>

14
content/recherche.html Executable file
View File

@ -0,0 +1,14 @@
<section class="content" id="content">
[<header class="cartouche">
<h1><:resultats_recherche:>
<small>&#171;&nbsp;(#RECHERCHE)&nbsp;&#187;</small>
</h1>
<INCLURE{fond=breadcrumb/#ENV{type-page},env} />
</header>]
<div class="main">
<INCLURE{fond=liste/articles-recherche,env,ajax} />
<INCLURE{fond=liste/rubriques-recherche,env,ajax} />
</div>
</section>

75
content/rubrique-blog.html Executable file
View File

@ -0,0 +1,75 @@
<BOUCLE_content(RUBRIQUES){id_rubrique}>
<section class="content" id="content">
<header class="cartouche">
<h1 class="#EDIT{titre}">#TITRE</h1>
[<p class="publication"><time datetime="[(#DATE|date_iso)]"><:dernier_ajout:> : (#DATE|affdate_jourcourt).</time></p>]
<INCLURE{fond=breadcrumb/rubrique,id_rubrique} />
</header>
<div class="main">
[<div class="#EDIT{texte} chapo">(#TEXTE|image_reduire{700,*})</div>]
#SET{'debut_mois', (#ENV{datetri}|baz_moisdecal{0,'Y-m-d'})}
#SET{'fin_mois', (#ENV{datetri}|baz_moisdecal{1,'Y-m-d'})}
<B_articlesdate>
<div class="liste articles blog">
[<h2 class="h2[ (#ENV{datetri}|oui)date]">(#ENV{datetri}|affdate{nom_mois})[(#ENV{datetri}|affdate{Y}|!={[(#VAL{Y}|date)]}|oui)[ (#ENV{datetri}|affdate{Y})]]</h2>]
<ul class="liste-items">
<BOUCLE_articlesdate(ARTICLES){si #ENV{datetri}|?{' '}}{date < #GET{fin_mois}}{date >= #GET{debut_mois}}{id_rubrique}{!par date}>
<li class="item clearfix">#INCLURE{fond=inclure/resume/article,id_article,env,composition=blog}</li>
</BOUCLE_articlesdate>
</ul>
</div>
</B_articlesdate>
<div class="liste articles blog">
[<h2 class="h2[ (#ENV{datetri}|oui)date]"><:baz_april:aucun_article_dans_cette_periode:> : (#ENV{datetri}|affdate{nom_mois})[(#ENV{datetri}|affdate{Y}|!={[(#VAL{Y}|date)]}|oui)[ (#ENV{datetri}|affdate{Y})]]</h2>]
<B_articles>#ANCRE_PAGINATION
<ul class="liste-items">
<BOUCLE_articles(ARTICLES){id_rubrique}{lang}{!par date}{pagination 10}>
<li class="item clearfix">#INCLURE{fond=inclure/resume/article,id_article,env,composition=blog}</li>
</BOUCLE_articles>
</ul>
[<div class="pagination">(#PAGINATION)</div>]
</B_articles>
</div>
<//B_articlesdate>
[(#REM) pour les sous-rubriques, on utilise le modele <rubriqueXX|rubriques> dans le texte si on veut]
</div><!-- .main -->
<aside>
[(#REM) Gestion du portfolio et des documents ]
[(#INCLURE{fond=inclure/documents,id_rubrique})]
[(#REM) Sites de la rubrique ]
<B_sites>
<div class="liste sites">
<h2 class="h2"><:sur_web:></h2>
<ul class="liste-items">
<BOUCLE_sites(SITES) {id_rubrique} {par nom_site}>
<li class="item short">#INCLURE{fond=inclure/resume/site,id_syndic}
<B_syndic>
<ul class="spip">
<BOUCLE_syndic(SYNDIC_ARTICLES) {id_syndic} {age<180} {par date}{inverse} {0,3}>
<li class="short with-publication-inline">#INCLURE{fond=inclure/resume/syndic_article,id_syndic_article}</li>
</BOUCLE_syndic>
</ul>
</B_syndic>
</li>
</BOUCLE_sites>
</ul>
</div>
</B_sites>
[(#REM) Proposer un site ]
#FORMULAIRE_SITE
</aside>
<footer>
[<div class="notes"><h2><:info_notes:></h2>(#NOTES)</div>]
</footer>
</section>
</BOUCLE_content>

6
content/rubrique-blog.xml Executable file
View File

@ -0,0 +1,6 @@
<composition>
<nom>Rubrique Blog</nom>
<description>Pour faire un blog complet</description>
<icon>images/rubrique-blog.png</icon>
<branche type="article" composition="blog" />
</composition>

View File

@ -0,0 +1,3 @@
<BOUCLE_content(RUBRIQUES){id_rubrique}>
<INCLURE{fond=content/rubrique,id_rubrique,type-page=rubrique} />
</BOUCLE_content>

View File

@ -0,0 +1,5 @@
<composition>
<nom>Page Rubrique </nom>
<description>Pour passer par la page rubrique avec la liste des articles - en utilisant Court-circuit, les rubriques avec composition sont ignorées du court-circuit, donc attribuer une composition mais vers le squelette normal...</description>
<icon>images/rubrique-pagerubrique.png</icon>
</composition>

54
content/rubrique.html Executable file
View File

@ -0,0 +1,54 @@
<BOUCLE_content(RUBRIQUES){id_rubrique}>
<section class="content" id="content">
<header class="cartouche">
<h1 class="#EDIT{titre}">#TITRE</h1>
[<p class="publication"><time datetime="[(#DATE|date_iso)]"><:dernier_ajout:> : (#DATE|affdate_jourcourt).</time></p>]
<INCLURE{fond=breadcrumb/rubrique,env} />
</header>
<div class="main">
[<div class="#EDIT{texte} texte">(#TEXTE|image_reduire{700,*})</div>]
<div class="liste articles">
<INCLURE{fond=liste/articles-resume,env,ajax,titre=<:articles_rubrique:>} />
</div>
[(#REM) Si aucun article, affiche un plan de la rubrique : en fait non, on a la liste en aside, on la garde là-bas et on se sert du texte si on veut en mettre en avant au cas par cas
ou éventuellement avec un modèle <rubriqueX|articles>
+ activer le plugin court-circuit pour aller directement dans larticle si un seul présent
]
</div>
<footer>
[(#REM) Gestion du portfolio et des documents ]
[(#INCLURE{fond=inclure/documents,id_rubrique})]
[<div class="notes"><h2><:info_notes:></h2>(#NOTES)</div>]
</footer>
<aside>
[(#REM) Sites de la rubrique ]
<B_sites>
<div class="liste sites">
<h2 class="h2"><:sur_web:></h2>
<ul class="liste-items">
<BOUCLE_sites(SITES) {id_rubrique} {par nom_site}>
<li class="item short">#INCLURE{fond=inclure/resume/site,id_syndic}
<B_syndic>
<ul class="spip">
<BOUCLE_syndic(SYNDIC_ARTICLES) {id_syndic} {age<180} {par date}{inverse} {0,3}>
<li class="short with-publication-inline">#INCLURE{fond=inclure/resume/syndic_article,id_syndic_article}</li>
</BOUCLE_syndic>
</ul>
</B_syndic>
</li>
</BOUCLE_sites>
</ul>
</div>
</B_sites>
</aside>
</section>
</BOUCLE_content>

23
content/site.html Executable file
View File

@ -0,0 +1,23 @@
<BOUCLE_content(SITES){id_syndic}>
<section class="content" id="content">
<header class="cartouche">
<h1 class="#EDIT{nom_site}">[<a href="#URL_SITE">(#LOGO_SITE|image_reduire)</a>]#NOM_SITE</h1>
<INCLURE{fond=breadcrumb/#ENV{type-page},env} />
</header>
<div class="main">
[<div class="#EDIT{descriptif} chapo">(#DESCRIPTIF)</div>]
[<p class="#EDIT{url_site} hyperlien"><a href="#URL_SITE" class="spip_out">(#URL_SITE|couper{80})</a></p>]
</div>
<aside>
<INCLURE{fond=liste/syndicarticles,id_syndic,env,ajax} />
</aside>
<footer>
[<div class="notes"><hr />(#NOTES)</div>]
</footer>
</section>
</BOUCLE_content>

33
content/sommaire.html Executable file
View File

@ -0,0 +1,33 @@
<section class="content" id="content">
<header class="cartouche visuallyhidden">
<h1>#NOM_SITE_SPIP</h1>
</header>
<div class="main">
<B_accueil>
<article class="texte_accueil">
<BOUCLE_accueil(ARTICLES){page=accueil}>
[<h2 class="h2 visuallyhidden">(#TITRE|sinon{<:accueil:>})</h2>]
<div class="main">
[<div class="#EDIT{chapo} chapo surlignable">(#CHAPO|image_reduire{700,*})</div>]
[<div class="#EDIT{texte} texte surlignable">(#TEXTE|image_reduire{700,*})</div>]
[<p class="#EDIT{hyperlien} hyperlien"><:voir_en_ligne:> : <a href="(#URL_SITE)" class="spip_out">[(#NOM_SITE|sinon{[(#URL_SITE|couper{80})]})]</a></p>]
</div>
<footer>
[<div class="#EDIT{ps} ps surlignable"><h2><:info_ps:></h2>(#PS|image_reduire{700,*})</div>]
[<div class="notes"><h2><:info_notes:></h2>(#NOTES)</div>]
</footer>
</BOUCLE_accueil>
</article>
</B_accueil>
[<div id="descriptif_site_spip" class="#EDIT{meta-descriptif_site} texte_accueil">(#DESCRIPTIF_SITE_SPIP)</div>]
<//B_accueil>
<div class="liste long articles">
<INCLURE{fond=liste/articles-resume,env,ajax} />
</div>
</div>
</section>

16
content/spip_pass.html Executable file
View File

@ -0,0 +1,16 @@
<section class="content" id="content">
<header class="cartouche">
<h1>#NOM_SITE_SPIP</h1>
</header>
<div class="main">
<div class="pass">
[(#ENV{p}|non)
#FORMULAIRE_OUBLI
]
[(#ENV{p}|oui)
#FORMULAIRE_MOT_DE_PASSE
]
</div>
</div>
</section>

10
content/z_apl.html Normal file
View File

@ -0,0 +1,10 @@
[(#REM)
Squelette Big_Pipe
http://www.facebook.com/notes/facebook-engineering/bigpipe-pipelining-web-pages-for-high-performance/389414033919
(c) 2010 Cedric Morin
Distribue sous licence GPL
]#CACHE{0}
#INCLURE{fond=inclure/ajax_parallel_load,bloc=#SQUELETTE}

7
extra/article.html Executable file
View File

@ -0,0 +1,7 @@
<BOUCLE_article(ARTICLES){id_article}>
[(#COMPOSITION|=={blog}|oui)
<INCLURE{fond=inclure/mots-articles-rubrique,env} />
<INCLURE{fond=inclure/periode-mois,env} />]
</BOUCLE_article>

15
extra/auteur.html Executable file
View File

@ -0,0 +1,15 @@
<BOUCLE_extra2_auteur(AUTEURS){id_auteur}>
[(#REM) Autres auteurs ]
<B_auteurs>
<div class="liste auteurs">
#ANCRE_PAGINATION
<h2 class="h2"><:info_auteurs:></h2>
<ul class="liste-items">
<BOUCLE_auteurs(AUTEURS) {par nom} {pagination 20}>
<li class="item"><a href="#URL_AUTEUR"[ class="(#EXPOSE)"]>[(#NOM|couper{80})]</a></li>
</BOUCLE_auteurs>
</ul>
[<div class="pagination">(#PAGINATION)</div>]
</div>
</B_auteurs>
</BOUCLE_extra2_auteur>

2
extra/dist.html Executable file
View File

@ -0,0 +1,2 @@
[(#REM) Inscription au site ]
#FORMULAIRE_INSCRIPTION

31
extra/mot.html Executable file
View File

@ -0,0 +1,31 @@
<BOUCLE_principale(MOTS) {id_mot} {doublons}>
[(#REM) Menu de navigation mots-cles : les autres mots cles du meme groupe ]
<B_mots_freres>
<div class="liste mots">
#ANCRE_PAGINATION
<h2 class="h2">#INFO_TITRE{groupes_mots,#ID_GROUPE}</h2>
<ul class="liste-items inline">
<BOUCLE_mots_freres(MOTS) {type} {par titre} {pagination 20}>
<li class="item"><a href="#URL_MOT"[ class="(#EXPOSE)"]>#TITRE</a></li>
</BOUCLE_mots_freres>
</ul>
[<div class="pagination">(#PAGINATION)</div>]
</div>
</B_mots_freres>
[(#REM) Menu de navigation mots-cles : les autres groupes ]
<B_groupes_freres>
<div class="liste groupes_mots">
<BOUCLE_groupes_freres(GROUPES_MOTS) {!id_groupe} {par titre} {doublons}>
<B_mot_cousin>#ANCRE_PAGINATION
<h2 class="h2">#INFO_TITRE{groupes_mots,#ID_GROUPE}</h2>
<ul class="liste-items inline">
<BOUCLE_mot_cousin(MOTS) {id_groupe} {par titre} {pagination 20}>
<li class="item"><a href="#URL_MOT">#TITRE</a></li>
</BOUCLE_mot_cousin>
</ul>
[<div class="pagination">(#PAGINATION)</div>]
</B_mot_cousin>
</BOUCLE_groupes_freres>
</div>
</B_groupes_freres>
</BOUCLE_principale>

17
extra/rubrique.html Executable file
View File

@ -0,0 +1,17 @@
<BOUCLE_extra2_rubrique(RUBRIQUES){id_rubrique}>
[(#REM) Menu de navigation mots-cles ]
<B_mots>
<div class="liste mots">
<h2 class="h2"><:mots_clefs:></h2>
<ul class="liste-items">
<BOUCLE_mots(MOTS) {id_rubrique} {par titre}>
<li class="item"><a href="#URL_MOT" rel="tag">#TITRE</a></li>
</BOUCLE_mots>
</ul>
</div>
</B_mots>
[(#COMPOSITION|=={blog}|oui)
<INCLURE{fond=inclure/mots-articles-rubrique,env} />
<INCLURE{fond=inclure/periode-mois,env} />]
</BOUCLE_extra2_rubrique>

27
extra/site.html Executable file
View File

@ -0,0 +1,27 @@
[(#REM) Autres sites web ]
<BOUCLE_testsites(SITES){id_rubrique}{1,2}>
</BOUCLE_testsites>
<B_sites>
<div class="liste sites">
#ANCRE_PAGINATION
<h2 class="h2"><:sites_web:></h2>
<ul class="liste-items">
<BOUCLE_sites(SITES){id_rubrique}{par nom_site} {pagination 20}>
<li class="item"><a href="[(#ID_SYNDIC|generer_url_entite{site,'','',#CONNECT})]"[ class="(#EXPOSE)"]>#NOM_SITE</a></li>
</BOUCLE_sites>
</ul>
[<div class="pagination">(#PAGINATION)</div>]
</div>
</B_sites>
</B_testsites>
[(#REM) Menu de navigation mots-cles ]
<B_mots>
<div class="liste mots">
<h2 class="h2"><:mots_clefs:></h2>
<ul class="liste-items">
<BOUCLE_mots(MOTS) {id_syndic} {par titre}>
<li class="item"><a href="#URL_MOT" rel="tag">#TITRE</a></li>
</BOUCLE_mots>
</ul>
</div>
</B_mots>

2
extra/sommaire.html Executable file
View File

@ -0,0 +1,2 @@
[(#REM) Inscription au site ]
#FORMULAIRE_INSCRIPTION

10
extra/z_apl.html Executable file
View File

@ -0,0 +1,10 @@
[(#REM)
Squelette Big_Pipe
http://www.facebook.com/notes/facebook-engineering/bigpipe-pipelining-web-pages-for-high-performance/389414033919
(c) 2010 Cedric Morin
Distribue sous licence GPL
]#CACHE{0}
#INCLURE{fond=inclure/ajax_parallel_load,bloc=#SQUELETTE}

30
footer/dist.html Executable file
View File

@ -0,0 +1,30 @@
<p class="colophon">
<BOUCLE_annee(ARTICLES){par date}{0,1}>[(#DATE|annee|!={#VAL{Y}|date}|oui)[(#DATE|annee)]]</BOUCLE_annee>-</B_annee>[(#DATE|annee) ] &mdash; #NOM_SITE_SPIP<br />
<a rel="contents" href="#URL_PAGE{plan}"><:plan_site:></a><span class="sep"> |
</span><a href="#URL_PAGE{backend}" rel="alternate" title="<:syndiquer_site:>">RSS&nbsp;2.0</a>
<B_mentions>
<span class="sep"> |
</span><BOUCLE_mentions(ARTICLES){page=mentions}>
<a href="#URL_ARTICLE">#TITRE</a>
</BOUCLE_mentions>
<B_contact>
<span class="sep"> | </span>
<BOUCLE_contact(ARTICLES){page=contact}>
<a href="#URL_ARTICLE">#TITRE</a>
</BOUCLE_contact>
</p>
<p class="colophon"><?php
if (isset($GLOBALS['visiteur_session']['id_auteur']) AND $GLOBALS['visiteur_session']['id_auteur']) {
?><a href="#URL_LOGOUT" rel="nofollow"><:icone_deconnecter:></a><?php
if (include_spip('inc/autoriser') AND autoriser('ecrire')){
?><span class="sep"> | </span><a href="#EVAL{_DIR_RESTREINT_ABS}"><:espace_prive:></a>
<span class="sep"> | </span><?php
}
}
else {
?><a href="[(#URL_PAGE{login}|parametre_url{url,#SELF|parametre_url{url,''}})]" rel="nofollow" class='login_modal'><:lien_connecter:></a>
<span class="sep"> | </span><?php
}
?>
<span class="generator"><a href="http://www.spip.net/" title="<:site_realise_avec_spip:>" class="spip_out">SPIP</a></span>
</p>

View File

@ -0,0 +1,22 @@
<div class="formulaire_spip formulaire_configurer formulaire_#FORM">
<h3 class="titrem"><:baz_april:configuration_baz_april:></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{#ENV{action}}
<ul class="editer-groupe">
[(#SAISIE{case,afficherauteurs,
label=<:baz_april:afficherauteurs_label:>,
explication=<:baz_april:afficherauteurs_explications:>,
defaut=non})]
</ul>
<p class="boutons">
<input type="submit" class="submit" value="<:bouton_valider:>" />
</p>
</div></form>
</div>

57
formulaires/login.html Executable file
View File

@ -0,0 +1,57 @@
#HTTP_HEADER{"Cache-Control: no-store, no-cache, must-revalidate"}
#HTTP_HEADER{"Pragma: no-cache"}
<div class='formulaire_spip formulaire_login'>
[<p class="reponse_formulaire reponse_formulaire_ok">(#ENV*{_deja_loge})</p>]
[<p class="reponse_formulaire reponse_formulaire_ok">(#ENV*{message_ok})</p>]
[<p class='reponse_formulaire reponse_formulaire_erreur'>(#ENV*{message_erreur})</p>]
[(#ENV{echec_cookie})
<fieldset class='reponse_formulaire reponse_formulaire_erreur'>
<h2><:avis_erreur_cookie:></h2>
<p class="erreur_message"><:login_cookie_oblige:><br /><:login_cookie_accepte:></p>
</fieldset>]
[(#ENV{editable})
<form id='formulaire_login' method='post' action='#ENV{action}'>
[(#REM) declarer les hidden qui declencheront le service du formulaire parametre : url d'action ]
#ACTION_FORMULAIRE
<fieldset>
<legend><:form_forum_identifiants:></legend>
<div class="form-group editer-groupe">
<div class="editer editer_login obligatoire[(#ENV**{erreurs}|table_valeur{var_login}|oui)erreur]">
<label for="var_login"><:login_login2:></label>[
<span class="erreur_message">(#ENV**{erreurs}|table_valeur{var_login})</span>
]<input type='text' class='form-control text [(#ENV*{_logo}|oui)avec_spip_logo_auteur]' name='var_login' id='var_login' value="[(#ENV**{var_login})]" size='40'[(#HTML5) required='required' autofocus='autofocus'] autocapitalize="off" autocorrect="off" />[
<span id="spip_logo_auteur">(#ENV*{_logo,''})</span>]
</div>
<div class="editer editer_password obligatoire[(#ENV**{erreurs}|table_valeur{password}|oui)erreur]">
<label for="password"><:login_pass2:></label>[
<span class="erreur_message">(#ENV**{erreurs}|table_valeur{password})</span>
]<input type='password' class='form-control text password' name='password' id='password' value="" size='40' autocapitalize="off" autocorrect="off" />
<p class='details'><a href="[(#URL_PAGE{spip_pass}|parametre_url{lang,#LANG})]" id='spip_pass'><:login_motpasseoublie:></a></p>
</div>
[(#ENV{rester_connecte})
<div class="editer editer_session"><div class='choix'>
<input type="checkbox" class="form-control checkbox" name="session_remember" id="session_remember" value="oui" [(#ENV**{cnx}|?{' '})checked="checked"] onchange="jQuery(this).addClass('modifie');" />
<label class='nofx' for="session_remember"><:login_rester_identifie:></label>
</div></div>]
</div>
</fieldset>
<p class="boutons"><input type="submit" class="submit" value="<:bouton_valider|attribut_html:>" /></p>
</form>
]
[(#REM) en cas d'absence de cookie, on represente le formulaire alternatif ]
[<form action="(#ENV{auth_http})" method="get">[
(#ENV{auth_http}|form_hidden)
]
<fieldset>
<legend><:login_sans_cookie:></legend>
<:login_preferez_refuser:>
<input type="hidden" name="essai_auth_http" value="oui"/>
[<input type="hidden" name="url" value="(#ENV{url})"/>]
<p class="boutons"><input type="submit" class="submit" value="<:login_sans_cookie|attribut_html:>"/></p>
</fieldset>
</form>
]
</div>

333
formulaires/login.php Executable file
View File

@ -0,0 +1,333 @@
<?php
/***************************************************************************\
* SPIP, Systeme de publication pour l'internet *
* *
* Copyright (c) 2001-2019 *
* Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James *
* *
* Ce programme est un logiciel libre distribue sous licence GNU/GPL. *
* Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. *
\***************************************************************************/
/**
* Gestion du formulaire d'identification / de connexion à SPIP
*
* @package SPIP\Core\Formulaires
**/
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
include_spip('base/abstract_sql');
/**
* Teste si une URL est une URL de l'espace privé (administration de SPIP)
* ou de l'espace public
*
* @param string $cible URL
* @return bool
* true si espace privé, false sinon.
**/
function is_url_prive($cible) {
include_spip('inc/filtres_mini');
$path = parse_url(tester_url_absolue($cible) ? $cible : url_absolue($cible));
$path = (isset($path['path']) ? $path['path'] : '');
return strncmp(substr($path, -strlen(_DIR_RESTREINT_ABS)), _DIR_RESTREINT_ABS, strlen(_DIR_RESTREINT_ABS)) == 0;
}
/**
* Chargement du formulaire de login
*
* Si on est déjà connecté, on redirige directement sur l'URL cible !
*
* @uses auth_informer_login()
* @uses is_url_prive()
* @uses login_auth_http()
*
* @param string $cible
* URL de destination après identification.
* Cas spécifique : la valeur `@page_auteur` permet d'être redirigé
* après connexion sur le squelette public de l'auteur qui se connecte.
* @param string $login
* Login de la personne à identifier (si connu)
* @param null|bool $prive
* Identifier pour l'espace privé (true), public (false)
* ou automatiquement (null) en fonction de la destination de l'URL cible.
* @return array
* Environnement du formulaire
**/
function formulaires_login_charger_dist($cible = '', $login = '', $prive = null) {
$erreur = _request('var_erreur');
if (!$login) {
$login = strval(_request('var_login'));
}
// si on est deja identifie
if (!$login and isset($GLOBALS['visiteur_session']['login'])) {
$login = $GLOBALS['visiteur_session']['login'];
}
// ou si on a un cookie admin
// if (!$login) {
// if (isset($_COOKIE['spip_admin'])
// and preg_match(',^@(.*)$,', $_COOKIE['spip_admin'], $regs)
// ) {
// $login = $regs[1];
// }
// }
include_spip('inc/auth');
$row = auth_informer_login($login);
// Construire l'environnement du squelette
// Ne pas proposer de "rester connecte quelques jours"
// si la duree de l'alea est inferieure a 12 h (valeur par defaut)
$valeurs = array(
'var_login' => $login,
'editable' => !$row,
'cnx' => isset($row['cnx']) ? $row['cnx'] : '0',
'auth_http' => login_auth_http(),
'rester_connecte' => ((_RENOUVELLE_ALEA < 12 * 3600) ? '' : ' '),
'_logo' => isset($row['logo']) ? $row['logo'] : '',
'_alea_actuel' => isset($row['alea_actuel']) ? $row['alea_actuel'] : '',
'_alea_futur' => isset($row['alea_futur']) ? $row['alea_futur'] : '',
'_pipeline' => 'affiche_formulaire_login', // faire passer le formulaire dans un pipe dedie pour les methodes auth
);
if ($erreur or !isset($GLOBALS['visiteur_session']['id_auteur']) or !$GLOBALS['visiteur_session']['id_auteur']) {
$valeurs['editable'] = true;
}
if (is_null($prive) ? is_url_prive($cible) : $prive) {
include_spip('inc/autoriser');
$loge = autoriser('ecrire');
} else {
$loge = (isset($GLOBALS['visiteur_session']['auth']) and $GLOBALS['visiteur_session']['auth'] != '');
}
// Si on est connecte, appeler traiter()
// et lancer la redirection si besoin
if (!$valeurs['editable'] and $loge and _request('formulaire_action')!=='login') {
$traiter = charger_fonction('traiter', 'formulaires/login');
$res = $traiter($cible, $login, $prive);
$valeurs = array_merge($valeurs, $res);
if (isset($res['redirect']) and $res['redirect']) {
include_spip('inc/headers');
# preparer un lien pour quand redirige_formulaire ne fonctionne pas
$m = redirige_formulaire($res['redirect'], '', 'ajaxform');
$valeurs['_deja_loge'] = inserer_attribut(
'<a>' . _T('login_par_ici') . "</a>$m",
'href',
$res['redirect']
);
}
}
// en cas d'echec de cookie, inc_auth a renvoye vers le script de
// pose de cookie ; s'il n'est pas la, c'est echec cookie
// s'il est la, c'est probablement un bookmark sur bonjour=oui,
// et pas un echec cookie.
if ($erreur == 'cookie') {
$valeurs['echec_cookie'] = ' ';
} elseif ($erreur) {
// une erreur d'un SSO indique dans la redirection vers ici
// mais il faut se proteger de toute tentative d'injection malveilante
include_spip('inc/texte');
$valeurs['message_erreur'] = safehtml($erreur);
}
return $valeurs;
}
/**
* Identification via HTTP (si pas de cookie)
*
* Gére le cas un utilisateur ne souhaite pas de cookie :
* on propose alors un formulaire pour s'authentifier via http
*
* @return string
* - Si connection possible en HTTP : URL pour réaliser cette identification,
* - chaîne vide sinon.
**/
function login_auth_http() {
if (!$GLOBALS['ignore_auth_http']
and _request('var_erreur') == 'cookie'
and (!isset($_COOKIE['spip_session']) or $_COOKIE['spip_session'] != 'test_echec_cookie')
and (($GLOBALS['flag_sapi_name'] and preg_match(',apache,i', @php_sapi_name()))
or preg_match(',^Apache.* PHP,', $_SERVER['SERVER_SOFTWARE']))
// Attention dans le cas 'intranet' la proposition de se loger
// par auth_http peut conduire a l'echec.
and !(isset($_SERVER['PHP_AUTH_USER']) and isset($_SERVER['PHP_AUTH_PW']))
) {
return generer_url_action('cookie', '', false, true);
} else {
return '';
}
}
/**
* Vérifications du formulaire de login
*
* Connecte la personne si l'identification réussie.
*
* @uses auth_identifier_login()
* @uses auth_loger()
* @uses login_autoriser()
*
* @param string $cible
* URL de destination après identification.
* Cas spécifique : la valeur `@page_auteur` permet d'être redirigé
* après connexion sur le squelette public de l'auteur qui se connecte.
* @param string $login
* Login de la personne à identifier (si connu)
* @param null|bool $prive
* Identifier pour l'espace privé (true), public (false)
* ou automatiquement (null) en fonction de la destination de l'URL cible.
* @return array
* Erreurs du formulaire
**/
function formulaires_login_verifier_dist($cible = '', $login = '', $prive = null) {
$session_login = _request('var_login');
$session_password = _request('password');
$session_remember = _request('session_remember');
if (!$session_login) {
# pas de login saisi !
return array('var_login' => _T('info_obligatoire'));
}
// appeler auth_identifier_login qui va :
// - renvoyer un string si echec (message d'erreur)
// - un array decrivant l'auteur identifie si possible
// - rediriger vers un SSO qui renverra in fine sur action/auth qui finira l'authentification
include_spip('inc/auth');
$auteur = auth_identifier_login($session_login, $session_password);
// on arrive ici si on ne s'est pas identifie avec un SSO
if (!is_array($auteur)) {
$erreurs = array();
if (is_string($auteur) and strlen($auteur)) {
$erreurs['var_login'] = $auteur;
}
include_spip('inc/cookie');
spip_setcookie('spip_admin', '', time() - 3600);
if (strlen($session_password)) {
$erreurs['password'] = _T('login_erreur_pass');
} else {
// sinon c'est un login en deux passe old style (ou js en panne)
// pas de message d'erreur
$erreurs['password'] = ' ';
}
return
$erreurs;
}
// on a ete authentifie, construire la session
// en gerant la duree demandee pour son cookie
if ($session_remember !== null) {
$auteur['cookie'] = $session_remember;
}
// si la connexion est refusee on renvoi un message erreur de mot de passe
// car en donnant plus de detail on renseignerait un assaillant sur l'existence d'un compte
if (auth_loger($auteur) === false) {
$erreurs['message_erreur'] = _T('login_erreur_pass');
return $erreurs;
}
return (is_null($prive) ? is_url_prive($cible) : $prive)
? login_autoriser() : array();
}
/**
* Teste l'autorisation d'accéder à l'espace privé une fois une connexion
* réussie, si la cible est une URL privée.
*
* Dans le cas contraire, un message d'erreur est retourné avec un lien
* pour se déconnecter.
*
* @return array
* - Erreur si un connecté n'a pas le droit d'acceder à l'espace privé
* - tableau vide sinon.
**/
function login_autoriser() {
include_spip('inc/autoriser');
if (!autoriser('ecrire')) {
$h = generer_url_action('logout', 'logout=prive&url=' . urlencode(self()));
return array(
'message_erreur' => '<h1>'
. _T('avis_erreur_visiteur')
. '</h1><p>'
. _T('texte_erreur_visiteur')
. "</p><p class='retour'>[<a href='$h'>"
. _T('icone_deconnecter') . '</a>]</p>'
);
}
return array();
}
/**
* Traitements du formulaire de login
*
* On arrive ici une fois connecté.
* On redirige simplement sur l'URL cible désignée.
*
* @param string $cible
* URL de destination après identification.
* Cas spécifique : la valeur `@page_auteur` permet d'être redirigé
* après connexion sur le squelette public de l'auteur qui se connecte.
* @param string $login
* Login de la personne à identifier (si connu)
* @param null|bool $prive
* Identifier pour l'espace privé (true), public (false)
* ou automatiquement (null) en fonction de la destination de l'URL cible.
* @return array
* Retours du traitement
**/
function formulaires_login_traiter_dist($cible = '', $login = '', $prive = null) {
$res = array();
// Si on se connecte dans l'espace prive,
// ajouter "bonjour" (repere a peu pres les cookies desactives)
if (is_null($prive) ? is_url_prive($cible) : $prive) {
$cible = parametre_url($cible, 'bonjour', 'oui', '&');
}
if ($cible == '@page_auteur') {
$cible = generer_url_entite($GLOBALS['auteur_session']['id_auteur'], 'auteur');
}
if ($cible) {
$cible = parametre_url($cible, 'var_login', '', '&');
// transformer la cible absolue en cible relative
// pour pas echouer quand la meta adresse_site est foireuse
if (strncmp($cible, $u = url_de_base(), strlen($u)) == 0) {
$cible = './' . substr($cible, strlen($u));
} elseif (tester_url_absolue($cible) and !defined('_AUTORISER_LOGIN_ABS_REDIRECT')) {
// si c'est une url absolue, refuser la redirection
// sauf si cette securite est levee volontairement par le webmestre
$cible = '';
}
}
// Si on est connecte, envoyer vers la destination
if ($cible and ($cible != self('&')) and ($cible != self())) {
$res['redirect'] = $cible;
$res['message_ok'] = inserer_attribut(
'<a>' . _T('login_par_ici') . '</a>',
'href',
$cible
);
}
// avant de rediriger il faut mettre a jour les sessions sur le disque si on a charge une session
if (function_exists('terminer_actualiser_sessions')) {
terminer_actualiser_sessions();
}
return $res;
}

12
formulaires/recherche.html Executable file
View File

@ -0,0 +1,12 @@
<div class="recherche"><form action="[(#ENV{action})]" method="get">
<div class="input-group flex">
[(#ENV{action}|form_hidden)]
[<input type="hidden" name="lang" value="(#ENV{lang})" />]
<div class="input-group-prepend">
<input class="form-control" type="search" placeholder="Rechercher" aria-label="Rechercher" name="recherche"[ value="(#ENV{recherche})"] />
</div>
<div class="input-group-append">
<button type="submit" class="input-group-text">ok</button>
</div>
</div>
</form></div>

2
head/404.html Executable file
View File

@ -0,0 +1,2 @@
<title><:pass_erreur:> 404 - [(#NOM_SITE_SPIP|textebrut)]</title>
<meta name="robots" content="none" />

5
head/article.html Executable file
View File

@ -0,0 +1,5 @@
<BOUCLE_article_head(ARTICLES) {id_article}>
<title>[(#TITRE|textebrut) - ][(#NOM_SITE_SPIP|textebrut)]</title>
[<meta name="description" content="(#INTRODUCTION{150}|attribut_html)" />]
[<link rel="canonical" href="(#URL_ARTICLE|url_absolue)" />]
</BOUCLE_article_head>

11
head/auteur.html Executable file
View File

@ -0,0 +1,11 @@
<BOUCLE_auteur_head(AUTEURS) {id_auteur}>
<title>[(#NOM|textebrut) - ][(#NOM_SITE_SPIP|textebrut)]</title>
[<meta name="description" content="(#BIO|couper{150}|attribut_html)" />]
[<link rel="canonical" href="(#URL_AUTEUR|url_absolue)" />]
[(#REM) Favicon personnalisee a partir du logo (si filtres d'image) ]
[(#MODELE{favicon}{favicon=#LOGO_AUTEUR})]
[(#REM) Lien vers le flux RSS des articles de l'auteur ]
<link rel="alternate" type="application/rss+xml" title="[(#NOM|textebrut)]" href="[(#URL_PAGE{backend}|parametre_url{id_auteur,#ID_AUTEUR})]" />
</BOUCLE_auteur_head>

26
head/dist.html Executable file
View File

@ -0,0 +1,26 @@
[(#REM)
Cette inclusion est celle utilisee par defaut lorsqu'un head/xxx demande
n'existe pas
Ces deux balises #NOM_SITE_SPIP et #DESCRIPTIF_SITE_SPIP
permettent de récupérer des informations de configuration de SPIP
que l'on renseigne dans l'espace privé.
Ces enregistrements sont stockés en base de donnée dans une
table appelée "spip_meta". Les champs de la table peuvent aussi
être récupérés en utilisant la balise #CONFIG{nom de la configuration}
ce qui donnerait ici : #CONFIG{nom_site_spip}
Les |mot suivants les #BALISE indique qu'on applique certains traitements
au texte retourné par la balise.
|textebrut supprime toute balise HTML, |couper{150} coupe le texte
retourné à 150 caractères. Ces "filtres" peuvent se chaîner
|filtreA|filtreB ...
Ces deux lignes permettent au bout du compte de renseigner le titre
de la page affiché tout en haut du navigateur ainsi que la description du site
(utile aux moteurs de recherche)
]
<title>[(#NOM_SITE_SPIP|textebrut)]</title>
[<meta name="description" content="(#DESCRIPTIF_SITE_SPIP|couper{150}|textebrut)" />]

6
head/mot.html Executable file
View File

@ -0,0 +1,6 @@
<BOUCLE_principale(MOTS) {id_mot} >
<title>[(#TITRE|textebrut) - ][(#NOM_SITE_SPIP|textebrut)]</title>
[<meta name="description" content="(#DESCRIPTIF|couper{150}|attribut_html)" />]
[(#REM) Lien vers le flux RSS des articles du mot cle ]
<link rel="alternate" type="application/rss+xml"[ title="(#TITRE|attribut_html)"] href="[(#URL_PAGE{backend}|parametre_url{id_mot,#ID_MOT})]" />
</BOUCLE_principale>

3
head/plan.html Executable file
View File

@ -0,0 +1,3 @@
<title><:plan_site:> - [(#NOM_SITE_SPIP|textebrut)]</title>
[<meta name="description" content="(#DESCRIPTIF_SITE_SPIP|couper{150}|attribut_html)" />]
<meta name="robots" content="none" />

2
head/recherche.html Executable file
View File

@ -0,0 +1,2 @@
<title><:resultats_recherche:> - [(#NOM_SITE_SPIP|textebrut)]</title>
<meta name="robots" content="none" />

7
head/rubrique.html Executable file
View File

@ -0,0 +1,7 @@
<BOUCLE_rubrique_head(RUBRIQUES){id_rubrique}>
[<title>(#TITREWEB|sinon{#TITRE}|textebrut)</title>]
[<meta name="description" content="(#INTRODUCTION{150}|textebrut)" />]
[<link rel="canonical" href="(#URL_RUBRIQUE|url_absolue)" />]
[(#REM) Lien vers le flux RSS de la rubrique ]
<link rel="alternate" type="application/rss+xml" title="<:syndiquer_rubrique:>" href="[(#URL_PAGE{backend}|parametre_url{id_rubrique,#ID_RUBRIQUE})]" />
</BOUCLE_rubrique_head>

5
head/site.html Executable file
View File

@ -0,0 +1,5 @@
<BOUCLE_site(SITES){id_syndic}>
<title>[(#NOM_SITE|textebrut) - ][(#NOM_SITE_SPIP|textebrut)]</title>
[<meta name="description" content="(#DESCRIPTIF|couper{150}|textebrut)" />]
<meta name="robots" content="none" />
</BOUCLE_site>

23
head/sommaire.html Executable file
View File

@ -0,0 +1,23 @@
[(#REM)
Ces deux balises #NOM_SITE_SPIP et #DESCRIPTIF_SITE_SPIP
permettent de récupérer des informations de configuration de SPIP
que l'on renseigne dans l'espace privé.
Ces enregistrements sont stockés en base de donnée dans une
table appelée "spip_meta". Les champs de la table peuvent aussi
être récupérés en utilisant la balise #CONFIG{nom de la configuration}
ce qui donnerait ici : #CONFIG{nom_site_spip}
Les |mot suivants les #BALISE indique qu'on applique certains traitements
au texte retourné par la balise.
|textebrut supprime toute balise HTML, |couper{150} coupe le texte
retourné à 150 caractères. Ces "filtres" peuvent se chaîner
|filtreA|filtreB ...
Ces deux lignes permettent au bout du compte de renseigner le titre
de la page affiché tout en haut du navigateur ainsi que la description du site
(utile aux moteurs de recherche)
]
<title>[(#NOM_SITE_SPIP|typo|textebrut)][ - (#SLOGAN_SITE_SPIP|typo|textebrut)]</title>
[<meta name="description" content="(#DESCRIPTIF_SITE_SPIP|textebrut)" />]

0
head_js/dist.html Executable file
View File

6
header/dist.html Executable file
View File

@ -0,0 +1,6 @@
<div class="accueil">
<h1 id="logo_site_spip"[ class="(#EDIT{meta-nom_site})"]>[(#SI_PAGE{sommaire}|non)<a rel="start home" href="#URL_SITE_SPIP/" title="<:accueil_site:>">]
[(#LOGO_SITE_SPIP|image_reduire{400,60}) ]<span class="nom_site_spip">#NOM_SITE_SPIP</span>
[<small class="slogan_site_spip[ (#EDIT{meta-slogan_site})]">(#SLOGAN_SITE_SPIP)</small>]
[(#SI_PAGE{sommaire}|non)</a>]</h1>
</div>

9
inclure/archives-mois.html Executable file
View File

@ -0,0 +1,9 @@
<div class="liste articles archives">
<h2 class="h2"><:baz_april:archives:></h2>
<ul class="liste-items inline">
<BOUCLE_hero(ARTICLES){id_rubrique}{fusion YEAR(date)}{fusion MONTH(date)}{!par date}>
[<li class="item annees">(#DATE|affdate{Y}|unique)</li>]
[<li class="item"><a[ href="(#URL_RUBRIQUE|parametre_url{date,#DATE|affdate{Y-m}})"]>(#DATE|affdate{nom_mois})</a></li>]
</BOUCLE_hero>
</ul>
</div>

10
inclure/article-hero.html Executable file
View File

@ -0,0 +1,10 @@
<BOUCLE_hero(ARTICLES){id_article}>
<div class="hero-unit item hentry">
<h1 class="entry-title"><a href="#URL_ARTICLE" rel="bookmark">#TITRE[(#LOGO_ARTICLE_RUBRIQUE|image_reduire{500,100}|responsive_logo)]</a></h1>
<p class="publication">[<time pubdate="pubdate" datetime="[(#DATE|date_iso)]">(#DATE|affdate)</time>]</p>
[<div class="#EDIT{intro} introduction entry-content">(#INTRODUCTION)</div>]
<p class="postmeta">
<a class="btn btn-primary btn-large lire-la-suite" href="#URL_ARTICLE" title="<:zcore:lire_la_suite|attribut_html:> <:zcore:lire_la_suite_de|attribut_html:> [(#TITRE|attribut_html)]"><:zcore:lire_la_suite:></a>
</p>
</div>
</BOUCLE_hero>

10
inclure/articles-resume.html Executable file
View File

@ -0,0 +1,10 @@
<B_articles>
#ANCRE_PAGINATION
<h2 class="h2">[(#ENV{titre,<:derniers_articles:>})]</h2>
<ul class="liste-items">
<BOUCLE_articles(ARTICLES){id_rubrique!=-1}{id_rubrique?} {lang} {par num titre} {!par date} {pagination #ENV{nb,10}}>
<li class="item clearfix">#INCLURE{fond=inclure/resume/article,id_article,env}</li>
</BOUCLE_articles>
</ul>
[<div class="pagination">(#PAGINATION)</div>]
</B_articles>

16
inclure/articles.html Executable file
View File

@ -0,0 +1,16 @@
[(#REM) on affiche tous les articles, on garde le paramètre url des paginations article et rubrique ]
<BOUCLE_env(ARTICLES){id_article}>
<BOUCLE_trad(ARTICLES){origine_traduction}{traduction}>[(#SET{trad#ID_ARTICLE,on})]</BOUCLE_trad>
</BOUCLE_env>
<B_articles_rubrique>#ANCRE_PAGINATION
<ul[(#COMPOSITION|=={blog}|oui) class="blog"]>
<BOUCLE_articles_rubrique(ARTICLES) {id_rubrique} {lang} {par num titre} {!par date} {pagination #ENV{nb,10}}>
<li>
<a[ href="(#URL_ARTICLE|parametre_url{debut_articles_rubrique,@#ID_ARTICLE})"] class="article[(#LOGO_ARTICLE|oui)logo clearfix][ (#EXPOSE)][ (#GET{trad#ID_ARTICLE})]">[(#COMPOSITION|=={blog}|oui)[<p class="date">(#DATE|affdate)</p>]]
[(#LOGO_ARTICLE|image_reduire{60,*})] #TITRE [(#COMPOSITION|=={blog}|oui)[<p class="soustitre">(#SOUSTITRE)</p>][<p class="introduction">(#INTRODUCTION|couper{120})</p>]]
</a>
</li>
</BOUCLE_articles_rubrique>
</ul>
[<p class="pagination">(#PAGINATION{page})</p>]
</B_articles_rubrique>

5
inclure/boussole.html Normal file
View File

@ -0,0 +1,5 @@
<div class="header__boussole">
<div class="page--container">
inclure un menu
</div>
</div>

31
inclure/documents.html Executable file
View File

@ -0,0 +1,31 @@
[(#REM) Portfolio : album d'images ]
<B_documents_portfolio>
<div class="liste documents documents_portfolio" id="documents_portfolio">
<BOUCLE_documents_portfolio(DOCUMENTS){id_article?}{id_rubrique?} {objet?}{id_objet?}{mode=document}{extension IN png,jpg,gif}{par rang_lien, num titre, date}{vu=non}{doublons}>[
<a href="(#URL_DOCUMENT)"
type="#MIME_TYPE"
title="[(#TITRE|attribut_html|couper{80})][ &copy;(#CREDITS)]">[(#FICHIER
|image_reduire{0,100}
|inserer_attribut{class,spip_logos}
|inserer_attribut{data-photo,#URL_DOCUMENT}
|inserer_attribut{data-photo-h,#HAUTEUR}
|inserer_attribut{data-photo-w,#LARGEUR}
|inserer_attribut{alt,[(#TITRE|attribut_html|couper{80})]})]</a>
]</BOUCLE_documents_portfolio>
</div>
</B_documents_portfolio>
[(#REM)
Liste des autres documents joints
]
<B_documents_joints>
<div class="liste documents documents_joints">
<h2 class="h2"><:medias:titre_documents_joints:></h2>
<ul class="list-items">
<BOUCLE_documents_joints(DOCUMENTS){id_article?}{id_rubrique?}{objet?}{id_objet?}{extension !IN gif,jpg,png}{vu=non}{par rang_lien, num titre, date}{doublons}>
<li class="item">#INCLURE{fond=inclure/resume/document,id_document}</li>
</BOUCLE_documents_joints>
</ul>
</div>
</B_documents_joints>

40
inclure/head.html Executable file
View File

@ -0,0 +1,40 @@
[(#REM)
Head standard de toutes les pages ;
les elements specifiques (title, description) figurent dans chaque squelette
]
<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) baz css ]
[<link rel="stylesheet" href="(#CSS{scss/baz.css})" type="text/css" />]
#INSERT_HEAD_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
[<script src="(#CHEMIN{js/baz_script.js})" type="text/javascript"></script>]
[(#REM) 6. Vos scripts ]
[<script src="(#CHEMIN{js/script.js})" type="text/javascript"></script>]
[(#REM) Fierement fabrique avec SPIP ]
<meta name="generator" content="SPIP[ (#SPIP_VERSION)]" />
[(#REM) Favicon + activer le plugin Favicon ]
[<link rel="shortcut icon" href="(#ENV*{favicon}
|sinon{#CHEMIN{favicon.ico}}
|sinon{#CHEMIN{favicon.png}}
|sinon{#LOGO_SITE_SPIP}
|image_passe_partout{16,16}
|image_recadre{16,16,center}
|image_format{ico}|extraire_attribut{src})" type="image/x-icon" />]
[(#REM) meta robots ]
[<meta name="robots" content="(#ENV{robots})" />]

10
inclure/liste-articles.html Executable file
View File

@ -0,0 +1,10 @@
<B_articles>
#ANCRE_PAGINATION
<h2 class="h2">[(#ENV{titre,<:derniers_articles:>})]</h2>
<ul class="liste-items">
<BOUCLE_articles(ARTICLES){id_rubrique!=-1}{id_rubrique?} {lang} {par num titre} {!par date} {pagination #ENV{nb,10}}>
<li class="item clearfix">#INCLURE{fond=inclure/resume/article,id_article,env}</li>
</BOUCLE_articles>
</ul>
[<div class="pagination">(#PAGINATION)</div>]
</B_articles>

25
inclure/liste-rubriques.html Executable file
View File

@ -0,0 +1,25 @@
#SET{sens_tri_map, #ARRAY{direct,0, inverse,-1}}
#SET{sens_tri, #GET{sens_tri_map/#ENV{sens}}}
#SET{par_map, #ARRAY{
num_titre, 'num titre'
}}
#SET{defaut_tri, #ARRAY{
titre, #GET{sens_tri,0},
num titre, #GET{sens_tri,0},
date, #GET{sens_tri,-1},
date_modif, #GET{sens_tri,-1}
}}
#SET{par, #ENV{par}|in_array{#GET{par_map}|array_keys}|?{#GET{par_map/#ENV{par}},#ENV{par}}}
#SET{tri, #GET{par,titre}}
<BOUCLE_rubrique(RUBRIQUES){id_rubrique}>
<B_rubriques_rubrique>
#ANCRE_PAGINATION
[<h2 class="h2">(#ENV{titre,<:rubriques:>})</h2>]
<ul class="liste-items">
<BOUCLE_rubriques_rubrique(RUBRIQUES) {id_parent} {tri #GET{tri}, #GET{defaut_tri}} {pagination #ENV{parpage,10}}>
<li class="item clearfix">#INCLURE{fond=inclure/resume/rubrique,id_rubrique,env,largeur_logo=#ENV{largeur_logo},coupe=#ENV{coupe}}</li>
</BOUCLE_rubriques_rubrique>
</ul>
[<div class="pagination">(#PAGINATION)</div>]
</B_rubriques_rubrique>
</BOUCLE_rubrique>

View File

@ -0,0 +1,17 @@
#SET{mots,#ARRAY}
<BOUCLE_principale(ARTICLES) {id_rubrique}>
<BOUCLE_mots(MOTS) {id_article} {par titre}>
#SET{mots,#GET{mots}|push{#ID_MOT}}
</BOUCLE_mots>
</BOUCLE_principale>
<B_mots_liste>
<div class="liste mots">
<h2 class="h2"><:baz_april:tags:></h2>
<ul class="liste-items inline">
<BOUCLE_mots_liste(MOTS) {id_mot IN #GET{mots}} {par titre}>
<li class="item"><a href="#URL_MOT"[ class="(#EXPOSE)"]><i class="fa fa-tag"></i> #TITRE</a></li>
</BOUCLE_mots_liste>
</ul>
</div>
</B_mots_liste>

10
inclure/nav-secteurs.html Executable file
View File

@ -0,0 +1,10 @@
<B_nav>
<nav class="nav" aria-label="Menu principal">
<ul class="nav-list">
<li class="nav-item[ (#SI_PAGE{sommaire})on]"><a href="#URL_SITE_SPIP/"><:zcore:accueil:></a></li>
<BOUCLE_nav(RUBRIQUES) {racine} {par num titre, titre}>
<li class="nav-item[ (#EXPOSE)][ (#COMPTEUR_BOUCLE|=={1}|oui)first][ (#COMPTEUR_BOUCLE|=={#TOTAL_BOUCLE}|oui)last]"><a href="#URL_RUBRIQUE"[ class="(#EXPOSE)"]>#TITRE</a></li>
</BOUCLE_nav>
</ul>
</nav>
</B_nav>

9
inclure/periode-mois.html Executable file
View File

@ -0,0 +1,9 @@
<div class="liste periode">
<h2 class="h2"><:baz_april:tri_periodique:></h2>
<div class="clear">
<BOUCLE_hero(ARTICLES){id_rubrique}{fusion YEAR(date)}{fusion MONTH(date)}{!par date}>
[<span class="annees archive[ ouvert(#DATE|affdate{Y}|=={[(#ENV{date}|affdate{Y})]}|oui)]">(#DATE|affdate{Y}|unique)</span>]
[<a[ href="(#URL_RUBRIQUE|parametre_url{datetri,#DATE|affdate{Y-m}})"]>(#DATE|affdate{nom_mois})</a>]
</BOUCLE_hero>
</div>
</div>

45
inclure/petition.html Executable file
View File

@ -0,0 +1,45 @@
[(#REM) Signer la petition ]
#FORMULAIRE_SIGNATURE
[(#REM) Signatures de la petition ]
<B_signatures>
<div id="signatures">
[<div class="pagination">(#PAGINATION)</div>]
<table class="spip">
<caption><h2 class="h2">#GRAND_TOTAL <:signatures_petition:></h2></caption>
<thead>
<tr class="row_first">
<th class="signature-date"><a href='[(#SELF|parametre_url{tri,date_time}|parametre_url{tri_inverse,''})]#signatures' title="<:lien_trier_date:>"><:date:></a></th>
<th class="signature-nom"><a href='[(#SELF|parametre_url{tri,nom_email}|parametre_url{tri_inverse,''})]#signatures' title="<:lien_trier_nom:>"><:nom:></a></th>
[(#REM) Afficher la colonne des messages si autorises ]
<BOUCLE_signature-message-th(PETITIONS){id_article}{message=oui}>
<th class="signature-message"><:message:></th>
</BOUCLE_signature-message-th>
</tr>
</thead>
<tbody>
<BOUCLE_signatures(SIGNATURES) {id_article} {pagination #ENV{pagination, 15} } {recherche ?#ENV{recherche_signatures}} {!par #ENV{tri}}{par #ENV{tri_inverse}} {!par #ENV{tri,#ENV{tri_inverse}}|?{'',date_time}}>
<tr [class="(#COMPTEUR_BOUCLE|alterner{row_odd,row_even})" ]id='id_signature#ID_SIGNATURE'>
<td class="signature-date">[(#DATE|affdate_jourcourt)]</td>
<td class="signature-nom"><strong class="#EDIT{qui}">#NOM</strong>[ <div class="small #EDIT{hyperlien}"><a href="(#URL_SITE)"[ title="(#NOM_SITE|attribut_html|couper{80})"] class="spip_out"><:site_web:></a></div>]</td>
[(#REM) Afficher la colonne des messages si autorises ]
<BOUCLE_signature-message-td(PETITIONS){id_article}{message=oui}> </BOUCLE_signature-message-td>
<td class="signature-message #EDIT{message}">[(#MESSAGE|PtoBR)]</td>
</B_signature-message-td>
</tr>
</BOUCLE_signatures>
</tbody>
</table>
[<div class="pagination">(#PAGINATION)</div>]
[(#REM) Afficher un moteur de recherche si plus de 30 signatures
ou s'il etait deja present au coup d'avant]
[(#ENV{recherche_signatures}|?{31,#_signatures:GRAND_TOTAL}|>{3}|oui)
<div class="formulaire_spip formulaire_recherche formulaire_recherche_signatures" id="formulaire_recherche_signatures">
<form method='get' action='#SELF'><div>[(#SELF|form_hidden)]
<label for="recherche_signatures"><:info_rechercher:></label> <input type="text" class="text" size="10" name="recherche_signatures" id="recherche_signatures" style='font-style: italic;' value=" <:entree_signature:>"/> <input type="submit" class="submit" value="<:info_rechercher:>" />
</div></form>
</div>
]
</div><!--#signatures-->
</B_signatures>

13
inclure/resume/article.html Executable file
View File

@ -0,0 +1,13 @@
[(#REM)
Squelette Presentation resumee d'un article dans une liste
Distribue sous licence GPL
]
<BOUCLE_articles(ARTICLES) {id_article} {statut?}>
<article class="entry article hentry[(#COMPOSITION|=={blog}|oui) blog]">
<p class="publication">[<time datetime="[(#DATE|date_iso)]">(#DATE|affdate)</time>]</p>
<h3 class="h3 entry-title"><a href="[(#URL_ARTICLE|parametre_url{debut_articles_rubrique,@#ID_ARTICLE}|parametre_url{recherche,#ENV{recherche}})]" rel="bookmark">[(#ENV{logo_rubrique,' '}|?{#LOGO_ARTICLE_RUBRIQUE,#LOGO_ARTICLE}|image_reduire{#ENV{largeur_logo,-1},#ENV{hauteur_logo,-1}}|responsive_logo)]<span>#TITRE</span></a></h3>
[<div class="#EDIT{intro} introduction entry-content">(#INTRODUCTION{#ENV{coupe,300}})</div>]
</article>
</BOUCLE_articles>

13
inclure/resume/rubrique.html Executable file
View File

@ -0,0 +1,13 @@
[(#REM)
Squelette Presentation resumee d'un article dans une liste
Distribue sous licence GPL
]
<BOUCLE_articles(RUBRIQUES) {id_rubrique} {statut?}>
<article class="entry rubrique hentry">
<p class="publication[(#COMPOSITION|=={blog}|oui) blog]">[<time datetime="[(#DATE|date_iso)]">(#DATE|affdate)</time>]</p>
<h3 class="h3 entry-title"><a href="[(#URL_RUBRIQUE|parametre_url{recherche,#ENV{recherche}})]" rel="bookmark">[(#LOGO_RUBRIQUE|image_reduire{#ENV{largeur_logo,-1},#ENV{hauteur_logo,-1}}|responsive_logo)]<span>#TITRE</span></a></h3>
[<div class="#EDIT{introduction} introduction entry-content">(#INTRODUCTION{#ENV{coupe,300}})</div>]
</article>
</BOUCLE_articles>

12
inclure/resume/site.html Executable file
View File

@ -0,0 +1,12 @@
[(#REM)
Squelette Presentation resumee d'un syndic dans une liste
Distribue sous licence GPL
]
<BOUCLE_resume_syndic(SYNDIC) {id_syndic} {statut?}>
<article class="entry site">
<h3 class="h3 entry-title"><a href="#ENV{url,#URL_SITE}" rel="bookmark" class="spip_out">[(#LOGO_SYNDIC_RUBRIQUE|image_reduire{#ENV{largeur_logo,-1},#ENV{hauteur_logo,-1}}|responsive_logo)]#NOM_SITE</a></h3>
[<div class="#EDIT{intro} introduction entry-content">(#DESCRIPTIF|couper{#ENV{coupe,300}})</div>]
</article>
</BOUCLE_resume_syndic>

View File

@ -0,0 +1,9 @@
<BOUCLE_resume_article_syndique(SYNDIC_ARTICLES){id_syndic_article}>
<article class="entry article syndic_article">
<h4 class="h4 entry-title">[<a href="#URL_SITE" rel="bookmark" class="spip_out">(#LOGO_SITE|image_reduire{#ENV{largeur_logo,25},#ENV{hauteur_logo,50}}|inserer_attribut{alt,#NOM_SITE}|responsive_logo)</a>]
[<a href="#URL_ARTICLE" rel="bookmark" class="spip_out">(#TITRE*)<span
class="read-more hide"><i class="icon-chevron-right" title="<:zcore:lire_la_suite|attribut_html:><:zcore:lire_la_suite_de|attribut_html:>&laquo;[(#TITRE*|attribut_html)]&raquo;"></i></span></a>]</h4>
<p class="publication">[<time datetime="[(#DATE|date_iso)]"><i class="icon-calendar"></i> (#DATE|affdate)</time>]</p>
[<div class="#EDIT{intro} introduction entry-content">(#DESCRIPTIF|couper{#ENV{coupe,300}})</div>]
</article>
</BOUCLE_resume_article_syndique>

55
inclure/rss-item.html Executable file
View File

@ -0,0 +1,55 @@
<BOUCLE_un_article(ARTICLES){id_article}>
<item[ xml:lang="(#LANG)"]>
<title>[(#TITRE|supprimer_tags|texte_backend)]</title>
<link>[(#URL_ARTICLE|url_absolue)]</link>
[<guid isPermaLink="true">(#URL_ARTICLE|url_absolue|texte_backend)</guid>]
[<dc:date>(#DATE|date_iso)</dc:date>]
<dc:format>text/html</dc:format>
[<dc:language>(#LANG)</dc:language>][(#CONFIG{baz_april/afficherauteurs}|=={on}|oui)
[<dc:creator>(#LESAUTEURS|supprimer_tags|texte_backend)</dc:creator>]]
[(#REM)
Le bloc qui suit diffuse les mots-cles a la mode RSS
]<BOUCLE_mots_rss(MOTS){id_article}>
[<dc:subject>(#TITRE|texte_backend)</dc:subject>]</BOUCLE_mots_rss>
<description>[(#INTRODUCTION|texte_backend)]
[(#REM)
Le bloc qui suit diffuse la rubrique et les mots-cles
sous forme de "microformats"
]<BOUCLE_rubrique_mf(RUBRIQUES){id_rubrique}>-
[&lt;a href="[(#URL_RUBRIQUE|url_absolue)]" rel="directory"&gt;(#TITRE|supprimer_tags|texte_backend)&lt;/a&gt;]
</BOUCLE_rubrique_mf><B_mots_mf>
/ <BOUCLE_mots_mf(MOTS){id_article}{", "}>
[&lt;a href="[(#URL_MOT|url_absolue)]" rel="tag"&gt;(#TITRE|texte_backend)&lt;/a&gt;]</BOUCLE_mots_mf>
</description>
[(#REM)
Le bloc qui suit diffuse aussi le texte integral de l'article,
ce qui permet une syndication plus riche (mais plus "lourde").
Fonction desactivable depuis les reglages du site.
][
(#CONFIG{syndication_integrale}|=={oui}|?{' ',''})<content:encoded>[(#LOGO_ARTICLE{right}|image_reduire{150,150}|texte_backend)
][&lt;div class='rss_chapo'&gt;(#CHAPO|texte_backend)&lt;/div&gt;
][&lt;div class='rss_texte'&gt;(#TEXTE|
image_reduire{500,0}|texte_backend)&lt;/div&gt;
][&lt;div class="hyperlien"&gt;<:voir_en_ligne|html2unicode:> : &lt;a href="(#URL_SITE)" class="spip_out"&gt;[(#NOM_SITE|sinon{[(#URL_SITE|couper{80})]}|texte_backend)]&lt;/a&gt;&lt;/div&gt;
][&lt;hr /&gt;
&lt;div class='rss_notes'&gt;(#NOTES|texte_backend)&lt;/div&gt;
][&lt;div class='rss_ps'&gt;(#PS|texte_backend)&lt;/div&gt;]
</content:encoded>
]
[(#REM)
Le bloc qui suit diffuse l'adresse des documents associes aux articles ;
ajouter par ex. {extension=mp3} pour limiter a un certain type de document.
] <BOUCLE_documents(DOCUMENTS){id_article}{mode=document}{doublons}>[
<enclosure url="(#URL_DOCUMENT|url_absolue|unique)"[ length="(#TAILLE)"][ type="(#MIME_TYPE)"] />]
</BOUCLE_documents>
</item>
</BOUCLE_un_article>

56
inclure/rubriques.html Executable file
View File

@ -0,0 +1,56 @@
[(#REM)
Barre de navigation, ouverte sur la hierarchie courante
On fait un plan, et, quand on avance vers une rubrique,
on l'affiche si son parent est expose ou est la racine du site. ]
<B_rubriques>
<nav class="nav">
<BOUCLE_rubriques(RUBRIQUES) {racine} {id_secteur}>
[(#REM) si plus d'un article, la liste des articles ]
<BOUCLE_test_article_r1(ARTICLES){id_rubrique}>
</BOUCLE_test_article_r1>
[(#SI_PAGE{rubrique}|non)[(#TOTAL_BOUCLE|>={10}|oui)
#SET{nb,10}[(#COMPOSITION|=={blog}|oui)#SET{nb,5}]
<INCLURE{fond=inclure/articles,env,ajax,id_rubrique=#ID_SECTEUR,id_article,debut_articles_rubrique,composition,nb=#GET{nb}} />
]]
[(#SI_PAGE{rubrique}|non)
[(#TOTAL_BOUCLE|>={10}|non)
[(#TOTAL_BOUCLE|>={2}|oui)
[(#COMPOSITION|=={blog}|oui)#SET{nb,5}<INCLURE{fond=inclure/articles,env,ajax,id_rubrique,id_article,composition,nb=#GET{nb}} />]
[(#COMPOSITION|=={blog}|non)
[(#COMPOSITION|=={accueil}|non)<INCLURE{fond=inclure/articles,id_rubrique,id_article,composition,nb=#GET{nb}} />]
]
]
]]
</B_test_article_r1>
[(#REM) quoi qu'il en soit, la liste des rubriques ]
<B_rubriques_rubrique>
<ul class="nav-list">
<BOUCLE_rubriques_rubrique(RUBRIQUES) {id_parent} {par num titre, titre}>
<li class="nav-item">
<a href="#URL_RUBRIQUE"[ class="(#EXPOSE)"]>[(#TITRE)]</a>
<BOUCLE_test_expose_r2(RUBRIQUES) {id_rubrique}>#EXPOSE{' '}</BOUCLE_test_expose_r2>
<BOUCLE_test_article_r2(ARTICLES){id_rubrique}>
</BOUCLE_test_article_r2>
[(#TOTAL_BOUCLE|>={10}|oui)
<INCLURE{fond=inclure/articles,env,ajax,id_rubrique,id_article,debut_articles_rubrique} />
]
[(#TOTAL_BOUCLE|>={10}|non)
[(#TOTAL_BOUCLE|>={2}|oui)
<INCLURE{fond=inclure/articles,id_rubrique,id_article,composition} />
]
]
</B_test_article_r2>
<BOUCLE_re_rubriques_rubrique(BOUCLE_rubriques_rubrique)></BOUCLE_re_rubriques_rubrique>
</B_test_expose_r2>
</li>
</BOUCLE_rubriques_rubrique>
</ul>
</B_rubriques_rubrique>
</BOUCLE_rubriques>
</nav>
</B_rubriques>

26
js/baz_script.js Executable file
View File

@ -0,0 +1,26 @@
jQuery(function($){
// nouvelle fenetre pour les liens sortants
$('a.spip_out').each(function(){
var url_ext = $(this).attr('href');
$(this).attr("title","ouvre une nouvelle fenêtre : "+url_ext+"").click(function(){
window.open(url_ext);
return false
});
});
// masquer les mois des annees precedentes, les afficher au clic sur l'annee
$.each( ['.annees.archive'], function(i,hi){
$( ".periode div" ).find(hi).each(function(index) {
// Creer un div apres le h3 et y placer tout ce qui se trouve apres et jusqu'au hi suivant
$(this).after("<span class=\"mois_archives\"></span>").next().append($(this).next().nextUntil(hi));
// plier/deplier le contenu
// $(this).next().hide();
$(this).click(function(){
$(this).next().toggleClass('ouvert');
$(this).toggleClass('ouvert');
return false;
});
});
});
});

780
js/css3-mediaqueries.js Executable file
View File

@ -0,0 +1,780 @@
if(typeof Object.create!=="function"){
Object.create=function(o){
function F(){
};
F.prototype=o;
return new F();
};
}
var ua={toString:function(){
return navigator.userAgent;
},test:function(s){
return this.toString().toLowerCase().indexOf(s.toLowerCase())>-1;
}};
ua.version=(ua.toString().toLowerCase().match(/[\s\S]+(?:rv|it|ra|ie)[\/: ]([\d.]+)/)||[])[1];
ua.webkit=ua.test("webkit");
ua.gecko=ua.test("gecko")&&!ua.webkit;
ua.opera=ua.test("opera");
ua.ie=ua.test("msie")&&!ua.opera;
ua.ie6=ua.ie&&document.compatMode&&typeof document.documentElement.style.maxHeight==="undefined";
ua.ie7=ua.ie&&document.documentElement&&typeof document.documentElement.style.maxHeight!=="undefined"&&typeof XDomainRequest==="undefined";
ua.ie8=ua.ie&&typeof XDomainRequest!=="undefined";
var domReady=function(){
var _1=[];
var _2=function(){
if(!arguments.callee.done){
arguments.callee.done=true;
for(var i=0;i<_1.length;i++){
_1[i]();
}
}
};
if(document.addEventListener){
document.addEventListener("DOMContentLoaded",_2,false);
}
if(ua.ie){
(function(){
try{
document.documentElement.doScroll("left");
}
catch(e){
setTimeout(arguments.callee,50);
return;
}
_2();
})();
document.onreadystatechange=function(){
if(document.readyState==="complete"){
document.onreadystatechange=null;
_2();
}
};
}
if(ua.webkit&&document.readyState){
(function(){
if(document.readyState!=="loading"){
_2();
}else{
setTimeout(arguments.callee,10);
}
})();
}
window.onload=_2;
return function(fn){
if(typeof fn==="function"){
_1[_1.length]=fn;
}
return fn;
};
}();
var cssHelper=function(){
var _3={BLOCKS:/[^\s{][^{]*\{(?:[^{}]*\{[^{}]*\}[^{}]*|[^{}]*)*\}/g,BLOCKS_INSIDE:/[^\s{][^{]*\{[^{}]*\}/g,DECLARATIONS:/[a-zA-Z\-]+[^;]*:[^;]+;/g,RELATIVE_URLS:/url\(['"]?([^\/\)'"][^:\)'"]+)['"]?\)/g,REDUNDANT_COMPONENTS:/(?:\/\*([^*\\\\]|\*(?!\/))+\*\/|@import[^;]+;)/g,REDUNDANT_WHITESPACE:/\s*(,|:|;|\{|\})\s*/g,MORE_WHITESPACE:/\s{2,}/g,FINAL_SEMICOLONS:/;\}/g,NOT_WHITESPACE:/\S+/g};
var _4,_5=false;
var _6=[];
var _7=function(fn){
if(typeof fn==="function"){
_6[_6.length]=fn;
}
};
var _8=function(){
for(var i=0;i<_6.length;i++){
_6[i](_4);
}
};
var _9={};
var _a=function(n,v){
if(_9[n]){
var _b=_9[n].listeners;
if(_b){
for(var i=0;i<_b.length;i++){
_b[i](v);
}
}
}
};
var _c=function(_d,_e,_f){
if(ua.ie&&!window.XMLHttpRequest){
window.XMLHttpRequest=function(){
return new ActiveXObject("Microsoft.XMLHTTP");
};
}
if(!XMLHttpRequest){
return "";
}
var r=new XMLHttpRequest();
try{
r.open("get",_d,true);
r.setRequestHeader("X_REQUESTED_WITH","XMLHttpRequest");
}
catch(e){
_f();
return;
}
var _10=false;
setTimeout(function(){
_10=true;
},5000);
document.documentElement.style.cursor="progress";
r.onreadystatechange=function(){
if(r.readyState===4&&!_10){
if(!r.status&&location.protocol==="file:"||(r.status>=200&&r.status<300)||r.status===304||navigator.userAgent.indexOf("Safari")>-1&&typeof r.status==="undefined"){
_e(r.responseText);
}else{
_f();
}
document.documentElement.style.cursor="";
r=null;
}
};
r.send("");
};
var _11=function(_12){
_12=_12.replace(_3.REDUNDANT_COMPONENTS,"");
_12=_12.replace(_3.REDUNDANT_WHITESPACE,"$1");
_12=_12.replace(_3.MORE_WHITESPACE," ");
_12=_12.replace(_3.FINAL_SEMICOLONS,"}");
return _12;
};
var _13={mediaQueryList:function(s){
var o={};
var idx=s.indexOf("{");
var lt=s.substring(0,idx);
s=s.substring(idx+1,s.length-1);
var mqs=[],rs=[];
var qts=lt.toLowerCase().substring(7).split(",");
for(var i=0;i<qts.length;i++){
mqs[mqs.length]=_13.mediaQuery(qts[i],o);
}
var rts=s.match(_3.BLOCKS_INSIDE);
if(rts!==null){
for(i=0;i<rts.length;i++){
rs[rs.length]=_13.rule(rts[i],o);
}
}
o.getMediaQueries=function(){
return mqs;
};
o.getRules=function(){
return rs;
};
o.getListText=function(){
return lt;
};
o.getCssText=function(){
return s;
};
return o;
},mediaQuery:function(s,mql){
s=s||"";
var not=false,_14;
var exp=[];
var _15=true;
var _16=s.match(_3.NOT_WHITESPACE);
for(var i=0;i<_16.length;i++){
var _17=_16[i];
if(!_14&&(_17==="not"||_17==="only")){
if(_17==="not"){
not=true;
}
}else{
if(!_14){
_14=_17;
}else{
if(_17.charAt(0)==="("){
var _18=_17.substring(1,_17.length-1).split(":");
exp[exp.length]={mediaFeature:_18[0],value:_18[1]||null};
}
}
}
}
return {getList:function(){
return mql||null;
},getValid:function(){
return _15;
},getNot:function(){
return not;
},getMediaType:function(){
return _14;
},getExpressions:function(){
return exp;
}};
},rule:function(s,mql){
var o={};
var idx=s.indexOf("{");
var st=s.substring(0,idx);
var ss=st.split(",");
var ds=[];
var dts=s.substring(idx+1,s.length-1).split(";");
for(var i=0;i<dts.length;i++){
ds[ds.length]=_13.declaration(dts[i],o);
}
o.getMediaQueryList=function(){
return mql||null;
};
o.getSelectors=function(){
return ss;
};
o.getSelectorText=function(){
return st;
};
o.getDeclarations=function(){
return ds;
};
o.getPropertyValue=function(n){
for(var i=0;i<ds.length;i++){
if(ds[i].getProperty()===n){
return ds[i].getValue();
}
}
return null;
};
return o;
},declaration:function(s,r){
var idx=s.indexOf(":");
var p=s.substring(0,idx);
var v=s.substring(idx+1);
return {getRule:function(){
return r||null;
},getProperty:function(){
return p;
},getValue:function(){
return v;
}};
}};
var _19=function(el){
if(typeof el.cssHelperText!=="string"){
return;
}
var o={mediaQueryLists:[],rules:[],selectors:{},declarations:[],properties:{}};
var _1a=o.mediaQueryLists;
var ors=o.rules;
var _1b=el.cssHelperText.match(_3.BLOCKS);
if(_1b!==null){
for(var i=0;i<_1b.length;i++){
if(_1b[i].substring(0,7)==="@media "){
_1a[_1a.length]=_13.mediaQueryList(_1b[i]);
ors=o.rules=ors.concat(_1a[_1a.length-1].getRules());
}else{
ors[ors.length]=_13.rule(_1b[i]);
}
}
}
var oss=o.selectors;
var _1c=function(r){
var ss=r.getSelectors();
for(var i=0;i<ss.length;i++){
var n=ss[i];
if(!oss[n]){
oss[n]=[];
}
oss[n][oss[n].length]=r;
}
};
for(i=0;i<ors.length;i++){
_1c(ors[i]);
}
var ods=o.declarations;
for(i=0;i<ors.length;i++){
ods=o.declarations=ods.concat(ors[i].getDeclarations());
}
var ops=o.properties;
for(i=0;i<ods.length;i++){
var n=ods[i].getProperty();
if(!ops[n]){
ops[n]=[];
}
ops[n][ops[n].length]=ods[i];
}
el.cssHelperParsed=o;
_4[_4.length]=el;
return o;
};
var _1d=function(el,s){
el.cssHelperText=_11(s||el.innerHTML);
return _19(el);
};
var _1e=function(){
_5=true;
_4=[];
var _1f=[];
var _20=function(){
for(var i=0;i<_1f.length;i++){
_19(_1f[i]);
}
var _21=document.getElementsByTagName("style");
for(i=0;i<_21.length;i++){
_1d(_21[i]);
}
_5=false;
_8();
};
var _22=document.getElementsByTagName("link");
for(var i=0;i<_22.length;i++){
var _23=_22[i];
if(_23.getAttribute("rel").indexOf("style")>-1&&_23.href&&_23.href.length!==0&&!_23.disabled){
_1f[_1f.length]=_23;
}
}
if(_1f.length>0){
var c=0;
var _24=function(){
c++;
if(c===_1f.length){
_20();
}
};
var _25=function(_26){
var _27=_26.href;
_c(_27,function(_28){
_28=_11(_28).replace(_3.RELATIVE_URLS,"url("+_27.substring(0,_27.lastIndexOf("/"))+"/$1)");
_26.cssHelperText=_28;
_24();
},_24);
};
for(i=0;i<_1f.length;i++){
_25(_1f[i]);
}
}else{
_20();
}
};
var _29={mediaQueryLists:"array",rules:"array",selectors:"object",declarations:"array",properties:"object"};
var _2a={mediaQueryLists:null,rules:null,selectors:null,declarations:null,properties:null};
var _2b=function(_2c,v){
if(_2a[_2c]!==null){
if(_29[_2c]==="array"){
return (_2a[_2c]=_2a[_2c].concat(v));
}else{
var c=_2a[_2c];
for(var n in v){
if(v.hasOwnProperty(n)){
if(!c[n]){
c[n]=v[n];
}else{
c[n]=c[n].concat(v[n]);
}
}
}
return c;
}
}
};
var _2d=function(_2e){
_2a[_2e]=(_29[_2e]==="array")?[]:{};
for(var i=0;i<_4.length;i++){
_2b(_2e,_4[i].cssHelperParsed[_2e]);
}
return _2a[_2e];
};
domReady(function(){
var els=document.body.getElementsByTagName("*");
for(var i=0;i<els.length;i++){
els[i].checkedByCssHelper=true;
}
if(document.implementation.hasFeature("MutationEvents","2.0")||window.MutationEvent){
document.body.addEventListener("DOMNodeInserted",function(e){
var el=e.target;
if(el.nodeType===1){
_a("DOMElementInserted",el);
el.checkedByCssHelper=true;
}
},false);
}else{
setInterval(function(){
var els=document.body.getElementsByTagName("*");
for(var i=0;i<els.length;i++){
if(!els[i].checkedByCssHelper){
_a("DOMElementInserted",els[i]);
els[i].checkedByCssHelper=true;
}
}
},1000);
}
});
var _2f=function(d){
if(typeof window.innerWidth!="undefined"){
return window["inner"+d];
}else{
if(typeof document.documentElement!="undefined"&&typeof document.documentElement.clientWidth!="undefined"&&document.documentElement.clientWidth!=0){
return document.documentElement["client"+d];
}
}
};
return {addStyle:function(s,_30){
var el=document.createElement("style");
el.setAttribute("type","text/css");
document.getElementsByTagName("head")[0].appendChild(el);
if(el.styleSheet){
el.styleSheet.cssText=s;
}else{
el.appendChild(document.createTextNode(s));
}
el.addedWithCssHelper=true;
if(typeof _30==="undefined"||_30===true){
cssHelper.parsed(function(_31){
var o=_1d(el,s);
for(var n in o){
if(o.hasOwnProperty(n)){
_2b(n,o[n]);
}
}
_a("newStyleParsed",el);
});
}else{
el.parsingDisallowed=true;
}
return el;
},removeStyle:function(el){
return el.parentNode.removeChild(el);
},parsed:function(fn){
if(_5){
_7(fn);
}else{
if(typeof _4!=="undefined"){
if(typeof fn==="function"){
fn(_4);
}
}else{
_7(fn);
_1e();
}
}
},mediaQueryLists:function(fn){
cssHelper.parsed(function(_32){
fn(_2a.mediaQueryLists||_2d("mediaQueryLists"));
});
},rules:function(fn){
cssHelper.parsed(function(_33){
fn(_2a.rules||_2d("rules"));
});
},selectors:function(fn){
cssHelper.parsed(function(_34){
fn(_2a.selectors||_2d("selectors"));
});
},declarations:function(fn){
cssHelper.parsed(function(_35){
fn(_2a.declarations||_2d("declarations"));
});
},properties:function(fn){
cssHelper.parsed(function(_36){
fn(_2a.properties||_2d("properties"));
});
},broadcast:_a,addListener:function(n,fn){
if(typeof fn==="function"){
if(!_9[n]){
_9[n]={listeners:[]};
}
_9[n].listeners[_9[n].listeners.length]=fn;
}
},removeListener:function(n,fn){
if(typeof fn==="function"&&_9[n]){
var ls=_9[n].listeners;
for(var i=0;i<ls.length;i++){
if(ls[i]===fn){
ls.splice(i,1);
i-=1;
}
}
}
},getViewportWidth:function(){
return _2f("Width");
},getViewportHeight:function(){
return _2f("Height");
}};
}();
domReady(function enableCssMediaQueries(){
var _37;
var _38={LENGTH_UNIT:/[0-9]+(em|ex|px|in|cm|mm|pt|pc)$/,RESOLUTION_UNIT:/[0-9]+(dpi|dpcm)$/,ASPECT_RATIO:/^[0-9]+\/[0-9]+$/,ABSOLUTE_VALUE:/^[0-9]*(\.[0-9]+)*$/};
var _39=[];
var _3a=function(){
var id="css3-mediaqueries-test";
var el=document.createElement("div");
el.id=id;
var _3b=cssHelper.addStyle("@media all and (width) { #"+id+" { width: 1px !important; } }",false);
document.body.appendChild(el);
var ret=el.offsetWidth===1;
_3b.parentNode.removeChild(_3b);
el.parentNode.removeChild(el);
_3a=function(){
return ret;
};
return ret;
};
var _3c=function(){
_37=document.createElement("div");
_37.style.cssText="position:absolute;top:-9999em;left:-9999em;"+"margin:0;border:none;padding:0;width:1em;font-size:1em;";
document.body.appendChild(_37);
if(_37.offsetWidth!==16){
_37.style.fontSize=16/_37.offsetWidth+"em";
}
_37.style.width="";
};
var _3d=function(_3e){
_37.style.width=_3e;
var _3f=_37.offsetWidth;
_37.style.width="";
return _3f;
};
var _40=function(_41,_42){
var l=_41.length;
var min=(_41.substring(0,4)==="min-");
var max=(!min&&_41.substring(0,4)==="max-");
if(_42!==null){
var _43;
var _44;
if(_38.LENGTH_UNIT.exec(_42)){
_43="length";
_44=_3d(_42);
}else{
if(_38.RESOLUTION_UNIT.exec(_42)){
_43="resolution";
_44=parseInt(_42,10);
var _45=_42.substring((_44+"").length);
}else{
if(_38.ASPECT_RATIO.exec(_42)){
_43="aspect-ratio";
_44=_42.split("/");
}else{
if(_38.ABSOLUTE_VALUE){
_43="absolute";
_44=_42;
}else{
_43="unknown";
}
}
}
}
}
var _46,_47;
if("device-width"===_41.substring(l-12,l)){
_46=screen.width;
if(_42!==null){
if(_43==="length"){
return ((min&&_46>=_44)||(max&&_46<_44)||(!min&&!max&&_46===_44));
}else{
return false;
}
}else{
return _46>0;
}
}else{
if("device-height"===_41.substring(l-13,l)){
_47=screen.height;
if(_42!==null){
if(_43==="length"){
return ((min&&_47>=_44)||(max&&_47<_44)||(!min&&!max&&_47===_44));
}else{
return false;
}
}else{
return _47>0;
}
}else{
if("width"===_41.substring(l-5,l)){
_46=document.documentElement.clientWidth||document.body.clientWidth;
if(_42!==null){
if(_43==="length"){
return ((min&&_46>=_44)||(max&&_46<_44)||(!min&&!max&&_46===_44));
}else{
return false;
}
}else{
return _46>0;
}
}else{
if("height"===_41.substring(l-6,l)){
_47=document.documentElement.clientHeight||document.body.clientHeight;
if(_42!==null){
if(_43==="length"){
return ((min&&_47>=_44)||(max&&_47<_44)||(!min&&!max&&_47===_44));
}else{
return false;
}
}else{
return _47>0;
}
}else{
if("device-aspect-ratio"===_41.substring(l-19,l)){
return _43==="aspect-ratio"&&screen.width*_44[1]===screen.height*_44[0];
}else{
if("color-index"===_41.substring(l-11,l)){
var _48=Math.pow(2,screen.colorDepth);
if(_42!==null){
if(_43==="absolute"){
return ((min&&_48>=_44)||(max&&_48<_44)||(!min&&!max&&_48===_44));
}else{
return false;
}
}else{
return _48>0;
}
}else{
if("color"===_41.substring(l-5,l)){
var _49=screen.colorDepth;
if(_42!==null){
if(_43==="absolute"){
return ((min&&_49>=_44)||(max&&_49<_44)||(!min&&!max&&_49===_44));
}else{
return false;
}
}else{
return _49>0;
}
}else{
if("resolution"===_41.substring(l-10,l)){
var res;
if(_45==="dpcm"){
res=_3d("1cm");
}else{
res=_3d("1in");
}
if(_42!==null){
if(_43==="resolution"){
return ((min&&res>=_44)||(max&&res<_44)||(!min&&!max&&res===_44));
}else{
return false;
}
}else{
return res>0;
}
}else{
return false;
}
}
}
}
}
}
}
}
};
var _4a=function(mq){
var _4b=mq.getValid();
var _4c=mq.getExpressions();
var l=_4c.length;
if(l>0){
for(var i=0;i<l&&_4b;i++){
_4b=_40(_4c[i].mediaFeature,_4c[i].value);
}
var not=mq.getNot();
return (_4b&&!not||not&&!_4b);
}
};
var _4d=function(mql){
var mqs=mql.getMediaQueries();
var t={};
for(var i=0;i<mqs.length;i++){
if(_4a(mqs[i])){
t[mqs[i].getMediaType()]=true;
}
}
var s=[],c=0;
for(var n in t){
if(t.hasOwnProperty(n)){
if(c>0){
s[c++]=",";
}
s[c++]=n;
}
}
if(s.length>0){
_39[_39.length]=cssHelper.addStyle("@media "+s.join("")+"{"+mql.getCssText()+"}",false);
}
};
var _4e=function(_4f){
for(var i=0;i<_4f.length;i++){
_4d(_4f[i]);
}
if(ua.ie){
document.documentElement.style.display="block";
setTimeout(function(){
document.documentElement.style.display="";
},0);
setTimeout(function(){
cssHelper.broadcast("cssMediaQueriesTested");
},100);
}else{
cssHelper.broadcast("cssMediaQueriesTested");
}
};
var _50=function(){
for(var i=0;i<_39.length;i++){
cssHelper.removeStyle(_39[i]);
}
_39=[];
cssHelper.mediaQueryLists(_4e);
};
var _51=0;
var _52=function(){
var _53=cssHelper.getViewportWidth();
var _54=cssHelper.getViewportHeight();
if(ua.ie){
var el=document.createElement("div");
el.style.position="absolute";
el.style.top="-9999em";
el.style.overflow="scroll";
document.body.appendChild(el);
_51=el.offsetWidth-el.clientWidth;
document.body.removeChild(el);
}
var _55;
var _56=function(){
var vpw=cssHelper.getViewportWidth();
var vph=cssHelper.getViewportHeight();
if(Math.abs(vpw-_53)>_51||Math.abs(vph-_54)>_51){
_53=vpw;
_54=vph;
clearTimeout(_55);
_55=setTimeout(function(){
if(!_3a()){
_50();
}else{
cssHelper.broadcast("cssMediaQueriesTested");
}
},500);
}
};
window.onresize=function(){
var x=window.onresize||function(){
};
return function(){
x();
_56();
};
}();
};
var _57=document.documentElement;
_57.style.marginLeft="-32767px";
setTimeout(function(){
_57.style.marginTop="";
},20000);
return function(){
if(!_3a()){
cssHelper.addListener("newStyleParsed",function(el){
_4e(el.cssHelperParsed.mediaQueryLists);
});
cssHelper.addListener("cssMediaQueriesTested",function(){
if(ua.ie){
_57.style.width="1px";
}
setTimeout(function(){
_57.style.width="";
_57.style.marginLeft="";
},0);
cssHelper.removeListener("cssMediaQueriesTested",arguments.callee);
});
_3c();
_50();
}else{
_57.style.marginLeft="";
}
_52();
};
}());
try{
document.execCommand("BackgroundImageCache",false,true);
}
catch(e){
}

8
js/html5shiv.js vendored Executable file
View File

@ -0,0 +1,8 @@
/*
HTML5 Shiv v3.6.2 | @afarkas @jdalton @jon_neal @rem | MIT/GPL2 Licensed
*/
(function(l,f){function m(){var a=e.elements;return"string"==typeof a?a.split(" "):a}function i(a){var b=n[a[o]];b||(b={},h++,a[o]=h,n[h]=b);return b}function p(a,b,c){b||(b=f);if(g)return b.createElement(a);c||(c=i(b));b=c.cache[a]?c.cache[a].cloneNode():r.test(a)?(c.cache[a]=c.createElem(a)).cloneNode():c.createElem(a);return b.canHaveChildren&&!s.test(a)?c.frag.appendChild(b):b}function t(a,b){if(!b.cache)b.cache={},b.createElem=a.createElement,b.createFrag=a.createDocumentFragment,b.frag=b.createFrag();
a.createElement=function(c){return!e.shivMethods?b.createElem(c):p(c,a,b)};a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+m().join().replace(/\w+/g,function(a){b.createElem(a);b.frag.createElement(a);return'c("'+a+'")'})+");return n}")(e,b.frag)}function q(a){a||(a=f);var b=i(a);if(e.shivCSS&&!j&&!b.hasCSS){var c,d=a;c=d.createElement("p");d=d.getElementsByTagName("head")[0]||d.documentElement;c.innerHTML="x<style>article,aside,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}mark{background:#FF0;color:#000}</style>";
c=d.insertBefore(c.lastChild,d.firstChild);b.hasCSS=!!c}g||t(a,b);return a}var k=l.html5||{},s=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,r=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,j,o="_html5shiv",h=0,n={},g;(function(){try{var a=f.createElement("a");a.innerHTML="<xyz></xyz>";j="hidden"in a;var b;if(!(b=1==a.childNodes.length)){f.createElement("a");var c=f.createDocumentFragment();b="undefined"==typeof c.cloneNode||
"undefined"==typeof c.createDocumentFragment||"undefined"==typeof c.createElement}g=b}catch(d){g=j=!0}})();var e={elements:k.elements||"abbr article aside audio bdi canvas data datalist details figcaption figure footer header hgroup main mark meter nav output progress section summary time video",version:"3.6.2",shivCSS:!1!==k.shivCSS,supportsUnknownElements:g,shivMethods:!1!==k.shivMethods,type:"default",shivDocument:q,createElement:p,createDocumentFragment:function(a,b){a||(a=f);if(g)return a.createDocumentFragment();
for(var b=b||i(a),c=b.frag.cloneNode(),d=0,e=m(),h=e.length;d<h;d++)c.createElement(e[d]);return c}};l.html5=e;q(f)})(this,document);

15
lang/baz_april_fr.php Executable file
View File

@ -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(
'actualites' => 'Actualités',
'archives' => 'Archives',
'articles_recents_du_site' => 'Articles publiés récemment sur ce site',
'articles_lies' => 'Articles liés',
'aucun_article_dans_cette_periode' => 'Aucun article durant cette période',
'tags' => 'Tags',
'tri_periodique' => 'Tri périodique'
);

12
lang/paquet-baz_april_fr.php Executable file
View File

@ -0,0 +1,12 @@
<?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(
'baz_april_description' => 'squelettes HTML5 avec scss et Tiny Typo',
// 'baz_april_slogan' => 'squelettes APRIL',
);

13
liste/articles-auteur.html Executable file
View File

@ -0,0 +1,13 @@
[(#REM) Articles de l'auteur ]
<B_articles>
<div class="liste articles">
#ANCRE_PAGINATION
<h2 class="h2"><:articles_auteur:> (#GRAND_TOTAL)</h2>
<ul class="liste-items">
<BOUCLE_articles(ARTICLES) {id_auteur} {!par popularite} {pagination 10}>
<li class="item clearfix"><a href="#URL_ARTICLE">#TITRE</a></li>
</BOUCLE_articles>
</ul>
[<div class="pagination">(#PAGINATION)</div>]
</div>
</B_articles>

13
liste/articles-recherche.html Executable file
View File

@ -0,0 +1,13 @@
[(#REM) Articles trouves ]
<B_articles>
<div class="liste resultats articles">
#ANCRE_PAGINATION
<h2 class="h2"><:articles:> (#GRAND_TOTAL)</h2>
<ul class="liste-items">
<BOUCLE_articles(ARTICLES) {recherche} {par points}{inverse} {pagination 20}>
<li class="item clearfix"><INCLURE{fond=inclure/resume/article,id_article,recherche=#ENV{recherche},composition,env} /></li>
</BOUCLE_articles>
</ul>
[<div class="pagination">(#PAGINATION)</div>]
</div>
</B_articles>

10
liste/articles-resume.html Executable file
View File

@ -0,0 +1,10 @@
<B_articles>
#ANCRE_PAGINATION
<h2 class="h2">[(#ENV{titre,<:derniers_articles:>})]</h2>
<ul class="liste-items">
<BOUCLE_articles(ARTICLES){id_rubrique!=-1}{id_rubrique?}{id_secteur?}{id_mot?}{lang}{!par date}{pagination #ENV{nb,10}}>
<li class="item clearfix">#INCLURE{fond=inclure/resume/article,id_article,env}</li>
</BOUCLE_articles>
</ul>
[<div class="pagination">(#PAGINATION)</div>]
</B_articles>

13
liste/rubriques-recherche.html Executable file
View File

@ -0,0 +1,13 @@
[(#REM) Rubriques trouvees ]
<B_rubriques>
<div class="liste resultats rubriques">
#ANCRE_PAGINATION
<h2 class="h2"><:rubriques:> (#GRAND_TOTAL)</h2>
<ul class="liste-items">
<BOUCLE_rubriques(RUBRIQUES) {recherche} {par points}{inverse} {pagination 5}>
<li class="item clearfix"><INCLURE{fond=inclure/resume/rubrique,id_rubrique,recherche=#ENV{recherche},composition,env} /></li>
</BOUCLE_rubriques>
</ul>
[<div class="pagination">(#PAGINATION)</div>]
</div>
</B_rubriques>

18
liste/syndicarticles.html Executable file
View File

@ -0,0 +1,18 @@
[(#REM) Articles issus de la syndication ]
<B_articles>
<div class="liste resume articles syndic">
#ANCRE_PAGINATION
<h2 class="h2"><:baz_april:articles_recents_du_site:></h2>
<ul class="liste-items">
<BOUCLE_articles(SYNDIC_ARTICLES) {id_syndic} {age<180} {par date}{inverse} {pagination 10}>
<li class="item clearfix">
<h3 class="h3"><a href="#URL_ARTICLE" class="spip_out">#TITRE</a></h3>
[<div class="enclosures">(#TAGS|afficher_enclosures)</div>]
<div class="small">[<abbr class="published" title="[(#DATE|date_iso)]">(#DATE|affdate_jourcourt)</abbr>][, <:par_auteur:> (#LESAUTEURS)][<span class="sep"> &mdash; </span><em>(#TAGS|afficher_tags)</em>]</div>
[<div class="introduction">(#DESCRIPTIF|image_reduire{300})</div>]
</li>
</BOUCLE_articles>
</ul>
[<div class="pagination">(#PAGINATION)</div>]
</div>
</B_articles>

8
modeles/icone.html Executable file
View File

@ -0,0 +1,8 @@
[(#REM)
modele <icone>
parametres :
|icone=fa-rocket (ou tout autre icone de FontAwesome v5 http://fontawesome.io/icons/)
|taille=3em (ou 60px ou 150%)
|couleur=#b5b5b5 (ou red)
]<span class="icon iconemodele solid #ENV{icone}[ (#ENV{class})]" style="[font-size:(#ENV{taille});][color:(#ENV{couleur});]"></span>

16
modeles/iconebloc.html Executable file
View File

@ -0,0 +1,16 @@
[(#REM)
modele <iconebloc>
parametres :
|icone=fa-rocket (ou tout autre icone de FontAwesome http://fontawesome.io/icons/)
|iconetaille=60px (taille de l'icone)
|bloctitre=le titre
|bloctexte=le texte
|bloclargeur=150px (largeur du bloc)
]<div class="iconemodele bloc[(#ENV{bloctitre}|?{' '}|ou{#ENV{bloctexte}|?{' '}}|oui) largeur][ (#ENV{align})][ (#ENV{class})]"[ style="width:(#ENV{bloclargeur});"]>
[<span class="icon (#ENV{icone})"[ style="font-size:(#ENV{iconetaille});"]></span>]
[(#ENV{bloctitre}|?{' '}|ou{#ENV{bloctexte}|?{' '}}|oui)<div class="content">]
[<h3>(#ENV*{bloctitre}|propre|PtoBR)</h3>]
[<p>(#ENV*{bloctexte}|propre|ptobr)</p>]
[(#ENV{bloctitre}|?{' '}|ou{#ENV{bloctexte}|?{' '}}|oui)</div>]
</div>

51
modeles/imagesenligne.html Executable file
View File

@ -0,0 +1,51 @@
[(#REM)
modele <imagesenligne|>
max 3 images en ligne
|img1=1
|img1titre=le titre
|img1desc=description
|img1lien=un lien html
|agrandir=oui vaut pour toutes les images et les met en diapo (utilise photoswipe si actif)
][(#SET{id_diapo,[(#ENV{id_diapo,#VAL{id_}|uniqid})]})]
<div class="imagesenligne flex[ (#ENV{class})]">
<BOUCLE_img1(DOCUMENTS){extension==jpg|png|gif}{id_document=#ENV{img1}}>
<span[ style="max-width:(#ENV{img1largeur})px"]>[<a href="(#ENV{img1lien})"[(#ENV{img1lien}|substr{0,#URL_SITE_SPIP|strlen}|=={#URL_SITE_SPIP|substr{0,#URL_SITE_SPIP|strlen}}|non) class="spip_out"]>][(#ENV{agrandir}|=={oui}|oui)[<a href="(#URL_DOCUMENT)" class="mediabox"
type="#MIME_TYPE" rel="diapo#GET{id_diapo}"
title="[(#TITRE|attribut_html|couper{80})][ &copy;(#CREDITS)]">]][(#FICHIER
|image_reduire{0,#ENV{hauteur,300}}
|inserer_attribut{class,spip_logos}
|inserer_attribut{data-photo,#URL_DOCUMENT}
|inserer_attribut{data-photo-h,#HAUTEUR}
|inserer_attribut{data-photo-w,#LARGEUR}
|inserer_attribut{alt,[(#TITRE|attribut_html|couper{80})]})][(#ENV{agrandir}|=={oui}|oui)</a>]
[<i class="spip_doc_caption"><br /><i class="spip_doc_titre">(#ENV{img1titre})</i>[<br /><i class="spip_doc_description">(#ENV{img1desc})</i>]</i>][(#ENV{img1lien}|oui)</a>]
</span>
</BOUCLE_img1>
<BOUCLE_img2(DOCUMENTS){extension==jpg|png|gif}{id_document=#ENV{img2}}>
<span[ style="max-width:(#ENV{img2largeur})px"]>[<a href="(#ENV{img2lien})"[(#ENV{img2lien}|substr{0,#URL_SITE_SPIP|strlen}|=={#URL_SITE_SPIP|substr{0,#URL_SITE_SPIP|strlen}}|non) class="spip_out"]>][(#ENV{agrandir}|=={oui}|oui)[<a href="(#URL_DOCUMENT)" class="mediabox"
type="#MIME_TYPE" rel="diapo#GET{id_diapo}"
title="[(#TITRE|attribut_html|couper{80})][ &copy;(#CREDITS)]">]][(#FICHIER
|image_reduire{0,#ENV{hauteur,300}}
|inserer_attribut{class,spip_logos}
|inserer_attribut{data-photo,#URL_DOCUMENT}
|inserer_attribut{data-photo-h,#HAUTEUR}
|inserer_attribut{data-photo-w,#LARGEUR}
|inserer_attribut{alt,[(#TITRE|attribut_html|couper{80})]})][(#ENV{agrandir}|=={oui}|oui)</a>]
[<i class="spip_doc_caption"><br /><i class="spip_doc_titre">(#ENV{img2titre})</i>[<br /><i class="spip_doc_description">(#ENV{img2desc})</i>]</i>][(#ENV{img2lien}|oui)</a>]
</span>
</BOUCLE_img2>
<BOUCLE_img3(DOCUMENTS){extension==jpg|png|gif}{id_document=#ENV{img3}}>
<span[ style="max-width:(#ENV{img3largeur})px"]>[<a href="(#ENV{img3lien})"[(#ENV{img3lien}|substr{0,#URL_SITE_SPIP|strlen}|=={#URL_SITE_SPIP|substr{0,#URL_SITE_SPIP|strlen}}|non) class="spip_out"]>][(#ENV{agrandir}|=={oui}|oui)[<a href="(#URL_DOCUMENT)" class="mediabox"
type="#MIME_TYPE" rel="diapo#GET{id_diapo}"
title="[(#TITRE|attribut_html|couper{80})][ &copy;(#CREDITS)]">]][(#FICHIER
|image_reduire{0,#ENV{hauteur,300}}
|inserer_attribut{class,spip_logos}
|inserer_attribut{data-photo,#URL_DOCUMENT}
|inserer_attribut{data-photo-h,#HAUTEUR}
|inserer_attribut{data-photo-w,#LARGEUR}
|inserer_attribut{alt,[(#TITRE|attribut_html|couper{80})]})][(#ENV{agrandir}|=={oui}|oui)</a>]
[<i class="spip_doc_caption"><br /><i class="spip_doc_titre">(#ENV{img3titre})</i>[<br /><i class="spip_doc_description">(#ENV{img3desc})</i>]</i>][(#ENV{img3lien}|oui)</a>]
</span>
</BOUCLE_img3>
</div>

9
modeles/rubrique_articles.html Executable file
View File

@ -0,0 +1,9 @@
<BOUCLE_rub(RUBRIQUES){id_rubrique}>
<BOUCLE_articles(ARTICLES){id_rubrique}{0,1}>
<div class="liste articles">
<INCLURE{fond=liste/articles-resume,env,ajax,titre=<:articles_rubrique:>} />
</div>
</BOUCLE_articles>
</BOUCLE_rub>

View File

@ -0,0 +1,3 @@
<BOUCLE_rub(RUBRIQUES){id_rubrique}>
<INCLURE{fond=inclure/liste-rubriques,id_rubrique,titre=#ENV{titre,''},parpage=100,par=#ENV{par},sens=#ENV{sens},largeur_logo=#ENV{largeur_logo},coupe=#ENV{coupe}} />
</BOUCLE_rub>

3
mot.html Executable file
View File

@ -0,0 +1,3 @@
<BOUCLE_principale(MOTS) {id_mot} >
<INCLURE{fond=structure,env,type-page=mot,composition=#COMPOSITION} />
</BOUCLE_principale>

40
paquet.xml Normal file
View File

@ -0,0 +1,40 @@
<paquet
prefix="baz_april"
categorie="squelette"
version="0.1.0"
schema="0.0.1"
etat="dev"
compatibilite="[3.2.7;3.3.*]"
logo="img/baz-32.png"
>
<nom>base APRIL</nom>
<!-- Base de développement sur Z-core + SCSSPHP (SASS) + Tiny Typo + FontAwesome v5 -->
<auteur>collectif APRIL</auteur>
<credit>nicod_ (quelques astuces scss dans galactic)</credit>
<credit lien="https://sasscss.org/#license-faqs">Sass CSS</credit>
<credit lien="https://fontawesome.io/license/">Font Awesome</credit>
<licence lien="https://www.gnu.org/licenses/gpl-3.0.html">GPL 3 pour le squelette SPIP</licence>
<licence lien="http://scripts.sil.org">SIL pour les typographies</licence>
<necessite nom="Zcore" compatibilite="[2.6.7;[" />
<necessite nom="scssphp" compatibilite="[1.4.7;[" />
<necessite nom="noizetier" compatibilite="[3.0.109;[" />
<necessite nom="pages" compatibilite="[1.3.7;[" />
<necessite nom="crayons" compatibilite="[1.26.3;[" />
<necessite nom="porte_plume_intertitres" compatibilite="[1.1.3;[" />
<necessite nom="compositions" compatibilite="[3.3.0;[" />
<necessite nom="mailcrypt" compatibilite="[2.2.0;[" />
<necessite nom="bellespuces" compatibilite="[0.1.1;[" />
<necessite nom="facteur" compatibilite="[3.4.7;[" />
<necessite nom="ppp" compatibilite="[1.0.7;[" />
<necessite nom="roles_documents" compatibilite="[0.2.2;[" />
<necessite nom="feuillederoute" compatibilite="[1.2.0;[" />
<necessite nom="tri_par_rubrique" compatibilite="[1.4.2;[" />
<necessite nom="basicone" compatibilite="[0.1.3;[" />
<utilise nom="compositions" compatibilite="[3.5.9;[" />
<utilise nom="photoswipe" compatibilite="[0.3.4;[" />
</paquet>

View File

@ -0,0 +1,6 @@
[(#AUTORISER{configurer, baz_april}|sinon_interdire_acces)]
<h1 class="grostitre"><:baz_april:cfg_baz_april:></h1>
[<div class="ajax">
(#FORMULAIRE_CONFIGURER_BAZ_APRIL)
</div>]

27
readme.md Normal file
View File

@ -0,0 +1,27 @@
git clone https://git.spip.net/spip-contrib-extensions/z-core.git
git clone https://git.spip.net/spip-contrib-extensions/facteur.git
git clone https://git.spip.net/spip-contrib-extensions/saisies.git
git clone https://git.spip.net/spip-contrib-extensions/nospam.git
git clone https://git.spip.net/spip-contrib-extensions/scssphp.git
git clone https://git.spip.net/spip-contrib-extensions/noizetier.git
git clone https://git.spip.net/spip-contrib-extensions/n-core.git
git clone https://git.spip.net/spip-contrib-extensions/cache.git
git clone https://git.spip.net/spip-contrib-extensions/crayons.git
git clone https://git.spip.net/spip-contrib-extensions/porte_plume_partout.git
git clone https://git.spip.net/spip-contrib-extensions/basicone.git
git clone https://git.spip.net/spip-contrib-extensions/mailcrypt.git
git clone https://git.spip.net/spip-contrib-extensions/feuillederoute.git
git clone https://git.spip.net/spip-contrib-extensions/compositions.git
git clone https://git.spip.net/spip-contrib-extensions/pages.git
git clone https://git.spip.net/spip-contrib-extensions/bellespuces.git
git clone https://github.com/mistergraphx/porte_plume_intertitres.git
git clone https://github.com/nd-/tri_par_rubrique.git
git clone https://git.spip.net/spip-contrib-extensions/role_documents.git

Some files were not shown because too many files have changed in this diff Show More