dépôt git initialisé
This commit is contained in:
commit
70678c8416
4
401.html
Executable file
4
401.html
Executable 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
3
article.html
Executable 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
2
aside/dist.html
Executable 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
10
aside/z_apl.html
Executable 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
3
auteur.html
Executable 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
43
backend.html
Executable 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
44
baz_april_administrations.php
Executable 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
40
baz_april_fonctions.php
Executable 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
44
baz_april_options.php
Executable 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
3
baz_april_pipelines.php
Executable file
@ -0,0 +1,3 @@
|
||||
<?php
|
||||
if (!defined("_ECRIRE_INC_VERSION")) return;
|
||||
|
37
body.html
Executable file
37
body.html
Executable 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
5
breadcrumb/401.html
Executable 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"> > </span>
|
||||
<span class="active"><:pass_erreur:>[ (#ENV{status})]</span>
|
||||
</nav>
|
5
breadcrumb/404.html
Executable file
5
breadcrumb/404.html
Executable 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"> > </span>
|
||||
<span class="active"><:pass_erreur:> 404</span>
|
||||
</nav>
|
8
breadcrumb/auteur.html
Executable file
8
breadcrumb/auteur.html
Executable 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"> > </span>
|
||||
<:info_auteurs:><span class="divider"> > </span>
|
||||
[<span class="active">(#NOM|couper{80})</span>]
|
||||
</nav>
|
||||
</BOUCLE_content>
|
15
breadcrumb/dist.html
Executable file
15
breadcrumb/dist.html
Executable 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
7
breadcrumb/inc-objet.html
Executable file
@ -0,0 +1,7 @@
|
||||
<a href="#URL_SITE_SPIP/"><:accueil_site:></a><span class="divider"> > </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"> > </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)> </span>]
|
10
breadcrumb/login.html
Executable file
10
breadcrumb/login.html
Executable 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"> > </span><strong class="on">(#GET{prive}|?{<:login_acces_prive:>,<:lien_connecter:>})</strong>]
|
||||
</nav>
|
8
breadcrumb/mot.html
Executable file
8
breadcrumb/mot.html
Executable 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"> > </span>
|
||||
<span><:mots_clefs:></span><span class="divider"> > </span>
|
||||
<BOUCLE_ariane(GROUPES_MOTS){id_groupe}><span>[(#TITRE|couper{80})]</span><span class="divider"> > </span></BOUCLE_ariane>
|
||||
<span class="active">[(#TITRE|couper{80})]</span>
|
||||
</nav>
|
||||
</BOUCLE_content>
|
4
breadcrumb/plan.html
Executable file
4
breadcrumb/plan.html
Executable file
@ -0,0 +1,4 @@
|
||||
<nav class="arbo" aria-label="Fil d'Ariane">
|
||||
<a href="#URL_SITE_SPIP/"><:accueil_site:></a><span class="divider"> > </span>
|
||||
<span class="active"><:plan_site:></span>
|
||||
</nav>
|
4
breadcrumb/recherche.html
Executable file
4
breadcrumb/recherche.html
Executable file
@ -0,0 +1,4 @@
|
||||
<nav class="arbo" aria-label="Fil d'Ariane">
|
||||
<a href="#URL_SITE_SPIP/"><:accueil_site:></a><span class="divider"> > </span>
|
||||
<span class="active"><:info_rechercher:> [« <strong class="on">(#RECHERCHE)</strong> »]</span>
|
||||
</nav>
|
10
content/401.html
Executable file
10
content/401.html
Executable 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
10
content/404.html
Executable 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
48
content/article.html
Executable 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
22
content/auteur.html
Executable 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
17
content/login.html
Executable 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
49
content/mot.html
Executable 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
60
content/plan.html
Executable 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
14
content/recherche.html
Executable file
@ -0,0 +1,14 @@
|
||||
<section class="content" id="content">
|
||||
[<header class="cartouche">
|
||||
<h1><:resultats_recherche:>
|
||||
<small>« (#RECHERCHE) »</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
75
content/rubrique-blog.html
Executable 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
6
content/rubrique-blog.xml
Executable 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>
|
3
content/rubrique-pagerubrique.html
Executable file
3
content/rubrique-pagerubrique.html
Executable file
@ -0,0 +1,3 @@
|
||||
<BOUCLE_content(RUBRIQUES){id_rubrique}>
|
||||
<INCLURE{fond=content/rubrique,id_rubrique,type-page=rubrique} />
|
||||
</BOUCLE_content>
|
5
content/rubrique-pagerubrique.xml
Executable file
5
content/rubrique-pagerubrique.xml
Executable 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
54
content/rubrique.html
Executable 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
23
content/site.html
Executable 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
33
content/sommaire.html
Executable 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
16
content/spip_pass.html
Executable 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
10
content/z_apl.html
Normal 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
7
extra/article.html
Executable 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
15
extra/auteur.html
Executable 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
2
extra/dist.html
Executable file
@ -0,0 +1,2 @@
|
||||
[(#REM) Inscription au site ]
|
||||
#FORMULAIRE_INSCRIPTION
|
31
extra/mot.html
Executable file
31
extra/mot.html
Executable 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
17
extra/rubrique.html
Executable 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
27
extra/site.html
Executable 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
2
extra/sommaire.html
Executable file
@ -0,0 +1,2 @@
|
||||
[(#REM) Inscription au site ]
|
||||
#FORMULAIRE_INSCRIPTION
|
10
extra/z_apl.html
Executable file
10
extra/z_apl.html
Executable 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
30
footer/dist.html
Executable 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) ] — #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 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>
|
22
formulaires/configurer_baz_april.html
Executable file
22
formulaires/configurer_baz_april.html
Executable 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
57
formulaires/login.html
Executable 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
333
formulaires/login.php
Executable 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 où 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() - |