Browse Source

Introduction d'un dossier prive/squelettes/ qui contient les squelettes de l'espace prive.

Introduction de styliser_par_z_dist surchargable, qui inclus les mecanismes de ZPIP, actifs pour l'espace prive, activable pour l'espace public par un define('_ZPIP');
la fonction echaffaudable est egalement integree, mais pas la fonction d'echaffaudage. Aucun echaffaudage n'est pour l'instant integre dans l'espace prive

La structure des blocs pour l'espace prive est :
head, barre-nav, hierarchie, navigation, extra, contenu et pied

Structure minimaliste des squelettes, avec une implementation par defaut de chaque bloc. Pour le moment, les squelettes head, barre-nav et pied font appel aux fonctions php pour generer le html comme sur les autres pages, mais il va sans dire qu'a terme on inversera le schema (quelques fonctions sont crees pour atteindre le bon morceau de html, et quelques appels sont rationalises en faisant disparaitre les vieux arguments plus utilises)

La squelettes de l'espace prive sont detectes par la fonction tester_url_ecrire qui aiguille sur exec=fond pour les squelettes Z et exec=fond_monobloc pour les anciens squelettes temporaires mono-fichier balises par des commentaires.

En l'etat, il est possible de creer une page de l'espace prive par un simple squelette contenu/page-xx ou contenu/yyy pour un objet de SPIP (on maintient le distingo entre les deux types de page).

Les plugins pourront le faire de meme, a condition de bien mettre dans un sous dossier prive/squelettes/ du plugin
On integre le modele typo de petronille (merci tetue) et une page-typo pour commencer
spip-3-stable
Cerdic 13 years ago
parent
commit
065e0a0127
  1. 14
      .gitattributes
  2. 19
      ecrire/exec/accueil.php
  3. 86
      ecrire/exec/fond.php
  4. 96
      ecrire/exec/fond_monobloc.php
  5. 3
      ecrire/inc/bandeau.php
  6. 43
      ecrire/inc/commencer_page.php
  7. 2
      ecrire/inc/gadgets.php
  8. 11
      ecrire/inc/utils.php
  9. 2
      ecrire/prive.php
  10. 169
      ecrire/public/styliser.php
  11. 211
      prive/modeles/typo.html
  12. 22
      prive/squelettes/body.html
  13. 8
      prive/squelettes/contenu/page-typo.html
  14. 8
      prive/squelettes/extra/dist.html
  15. 8
      prive/squelettes/head/dist.html
  16. 8
      prive/squelettes/hierarchie/dist.html
  17. 11
      prive/squelettes/inclure/barre-nav.html
  18. 45
      prive/squelettes/inclure/head.html
  19. 5
      prive/squelettes/inclure/pied.html
  20. 13
      prive/squelettes/navigation/dist.html
  21. 1
      prive/squelettes/objet.html
  22. 1
      prive/squelettes/page.html
  23. 12
      prive/squelettes/structure.html
  24. 14
      prive/style_prive.html

14
.gitattributes vendored

@ -159,6 +159,7 @@ ecrire/exec/editer_auteurs.php -text
ecrire/exec/editer_mots.php -text
ecrire/exec/export_all.php -text
ecrire/exec/fond.php -text
ecrire/exec/fond_monobloc.php -text
ecrire/exec/iconifier.php -text
ecrire/exec/import_all.php -text
ecrire/exec/index.php -text
@ -767,6 +768,7 @@ prive/modeles/pagination_precedent_suivant.html -text
prive/modeles/pagination_prive.html -text
prive/modeles/paginationitem.html -text
prive/modeles/text.html -text
prive/modeles/typo.html -text
prive/modeles/video.html -text
prive/navigation.xml -text
prive/puce_prive.gif -text
@ -777,6 +779,18 @@ prive/rss/messagerie.html -text
prive/rss/signatures.html -text
prive/spip_pass.html -text
prive/spip_style.css -text
prive/squelettes/body.html -text
prive/squelettes/contenu/page-typo.html -text
prive/squelettes/extra/dist.html -text
prive/squelettes/head/dist.html -text
prive/squelettes/hierarchie/dist.html -text
prive/squelettes/inclure/barre-nav.html -text
prive/squelettes/inclure/head.html -text
prive/squelettes/inclure/pied.html -text
prive/squelettes/navigation/dist.html -text
prive/squelettes/objet.html -text
prive/squelettes/page.html -text
prive/squelettes/structure.html -text
prive/stats/echelle.html -text
prive/style_prive.html -text
prive/style_prive_defaut.css -text

19
ecrire/exec/accueil.php

@ -312,6 +312,15 @@ function accueil_liste_participants()
return $res;
}
function exec_accueil_navigation(){
$nom = typo($GLOBALS['meta']["nom_site"]);
if (!$nom) $nom= _T('info_mon_site_spip');
return personnel_accueil(@$_COOKIE['spip_admin'])
. debut_cadre_relief("racine-24.png", true, "", $nom)
. etat_base_accueil()
. fin_cadre_relief(true);
}
// http://doc.spip.org/@exec_accueil_dist
function exec_accueil_dist()
{
@ -326,13 +335,9 @@ function exec_accueil_dist()
echo debut_gauche("",true);
if ($spip_display != 4) {
echo personnel_accueil(@$_COOKIE['spip_admin']);
echo pipeline('affiche_gauche',array('args'=>array('exec'=>'accueil','id_rubrique'=>$id_rubrique),'data'=>''));
$nom = typo($GLOBALS['meta']["nom_site"]);
if (!$nom) $nom= _T('info_mon_site_spip');
echo debut_cadre_relief("racine-24.png", true, "", $nom),
etat_base_accueil(),
fin_cadre_relief(true);
echo pipeline('affiche_gauche',
array('args'=>array('exec'=>'accueil','id_rubrique'=>$id_rubrique),
'data'=>exec_accueil_navigation()));
}
echo creer_colonne_droite("", true);

86
ecrire/exec/fond.php

@ -12,81 +12,33 @@
if (!defined("_ECRIRE_INC_VERSION")) return;
/**
* Un exec generique qui utilise le fond homonyme de l'exec demande
* dans l'url
*/
function exec_fond_dist(){
// pas d'autorisation
// c'est au fond de les gerer avec #AUTORISER, et de renvoyer un fond vide le cas echeant
// qui declenchera un minipres acces interdit
$exec = _request('exec');
$fond = trim(recuperer_fond("prive/exec/$exec",$_REQUEST));
if (!$fond) {
$fond = _request('exec');
// Securite
if (strstr($fond, '/')) {
if (!include_spip('inc/autoriser')
OR !autoriser('webmestre')) {
include_spip('inc/minipres');
echo minipres();
} else {
$titre = "exec_$exec";
$navigation = "";
$extra = "";
// recuperer le titre dans le premier hn de la page
if (preg_match(",<h[1-6][^>]*>(.+)</h[1-6]>,Uims",$fond,$match)){
$titre = $match[1];
}
// recuperer la hierarchie (au-dessus du contenu)
if (preg_match(",<!--#hierarchie-->.+<!--/#hierarchie-->,Uims",$fond,$match)){
$hierarchie = $match[0];
$fond = str_replace($hierarchie,"",$fond);
exit;
}
// recuperer la navigation (colonne de gauche)
if (preg_match(",<!--#navigation-->.+<!--/#navigation-->,Uims",$fond,$match)){
$navigation = $match[0];
$fond = str_replace($navigation,"",$fond);
}
// recuperer les extras (colonne de droite)
if (preg_match(",<!--#extra-->.+<!--/#extra-->,Uims",$fond,$match)){
$extra = $match[0];
$fond = str_replace($extra,"",$fond);
}
}
else
$fond = "prive/squelettes/$fond";
include_spip('inc/presentation_mini'); // alleger les inclusions avec un inc/presentation_mini
$commencer_page = charger_fonction('commencer_page','inc');
echo $commencer_page($titre);
if ($hierarchie){
echo debut_grand_cadre(true);
echo pipeline(
'affiche_hierarchie',
array(
'args' => array(
'exec' => $exec
),
'data' => $hierarchie
)
);
echo fin_grand_cadre(true);
}
echo debut_gauche("exec_$exec",true);
echo $navigation;
echo pipeline('affiche_gauche',array('args'=>array('exec'=>$exec),'data'=>''));
// quelques inclusions et ini prealables
include_spip('inc/commencer_page');
echo creer_colonne_droite("exec_$exec",true);
echo $extra;
echo pipeline('affiche_droite',array('args'=>array('exec'=>$exec),'data'=>''));
include "prive.php";
echo debut_droite("exec_$exec",true);
echo $fond;
echo pipeline('affiche_milieu',array('args'=>array('exec'=>$exec),'data'=>''));
/**
* Un exec generique qui branche sur un squelette Z pour ecrire
* La fonction ne fait rien, c'est l'inclusion du fichier qui declenche le traitement
*
*/
function exec_fond_dist(){
echo fin_gauche(),fin_page();
}
}
?>

96
ecrire/exec/fond_monobloc.php

@ -0,0 +1,96 @@
<?php
/***************************************************************************\
* SPIP, Systeme de publication pour l'internet *
* *
* Copyright (c) 2001-2010 *
* 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. *
\***************************************************************************/
if (!defined("_ECRIRE_INC_VERSION")) return;
/**
* Un exec generique qui utilise le fond homonyme de l'exec demande
* dans l'url
* Ancien systeme transitoire base sur un squelette unique avec un
* pseudo balisage par commentaires html
* deprecie, ne plus utiliser
*
*/
function exec_fond_monobloc_dist(){
// pas d'autorisation
// c'est au fond de les gerer avec #AUTORISER, et de renvoyer un fond vide le cas echeant
// qui declenchera un minipres acces interdit
$exec = _request('exec');
$fond = trim(recuperer_fond("prive/exec/$exec",$_REQUEST));
if (!$fond) {
include_spip('inc/minipres');
echo minipres();
} else {
$titre = "exec_$exec";
$navigation = "";
$extra = "";
// recuperer le titre dans le premier hn de la page
if (preg_match(",<h[1-6][^>]*>(.+)</h[1-6]>,Uims",$fond,$match)){
$titre = $match[1];
}
// recuperer la hierarchie (au-dessus du contenu)
if (preg_match(",<!--#hierarchie-->.+<!--/#hierarchie-->,Uims",$fond,$match)){
$hierarchie = $match[0];
$fond = str_replace($hierarchie,"",$fond);
}
// recuperer la navigation (colonne de gauche)
if (preg_match(",<!--#navigation-->.+<!--/#navigation-->,Uims",$fond,$match)){
$navigation = $match[0];
$fond = str_replace($navigation,"",$fond);
}
// recuperer les extras (colonne de droite)
if (preg_match(",<!--#extra-->.+<!--/#extra-->,Uims",$fond,$match)){
$extra = $match[0];
$fond = str_replace($extra,"",$fond);
}
include_spip('inc/presentation'); // alleger les inclusions avec un inc/presentation_mini
$commencer_page = charger_fonction('commencer_page','inc');
echo $commencer_page($titre);
if ($hierarchie){
echo debut_grand_cadre(true);
echo pipeline(
'affiche_hierarchie',
array(
'args' => array(
'exec' => $exec
),
'data' => $hierarchie
)
);
echo fin_grand_cadre(true);
}
echo debut_gauche("exec_$exec",true);
echo $navigation;
echo pipeline('affiche_gauche',array('args'=>array('exec'=>$exec),'data'=>''));
echo creer_colonne_droite("exec_$exec",true);
echo $extra;
echo pipeline('affiche_droite',array('args'=>array('exec'=>$exec),'data'=>''));
echo debut_droite("exec_$exec",true);
echo $fond;
echo pipeline('affiche_milieu',array('args'=>array('exec'=>$exec),'data'=>''));
echo fin_gauche(),fin_page();
}
}
?>

3
ecrire/inc/bandeau.php

@ -315,8 +315,7 @@ function bando_liens_acces_rapide(){
* @param unknown_type $largeur
* @return unknown
*/
function inc_bandeau_dist($rubrique, $sous_rubrique, $largeur)
{
function inc_bandeau_dist() {
$contexte = definir_barre_contexte();
$boutons = definir_barre_boutons($contexte, false);
return "<div id='bando_haut'>"

43
ecrire/inc/commencer_page.php

@ -33,7 +33,16 @@ function inc_commencer_page_dist($titre = "", $rubrique = "accueil", $sous_rubri
// envoi du doctype et du <head><title>...</head>
// http://doc.spip.org/@init_entete
function init_entete($titre='', $id_rubrique=0, $minipres=false) {
function init_entete($titre='', $dummy=0, $minipres=false) {
return _DOCTYPE_ECRIRE
. html_lang_attributes()
. "<head>\n"
. init_head($titre, $dummy, $minipres)
. "</head>\n";
}
function init_head($titre='', $dummy=0, $minipres=false) {
include_spip('inc/gadgets');
if (!$nom_site_spip = textebrut(typo($GLOBALS['meta']["nom_site"])))
@ -51,16 +60,11 @@ function init_entete($titre='', $id_rubrique=0, $minipres=false) {
$head .= "
<script type='text/javascript'><!--
jQuery(document).ready(function(){
" . repercuter_gadgets($id_rubrique) . '
" . repercuter_gadgets() . '
});
// --></script>
';
return _DOCTYPE_ECRIRE
. html_lang_attributes()
. "<head>\n"
. pipeline('header_prive', $head)
. "</head>\n";
return pipeline('header_prive', $head);
}
// fonction envoyant la double serie d'icones de redac
@ -68,16 +72,8 @@ function init_entete($titre='', $id_rubrique=0, $minipres=false) {
function init_body($rubrique='accueil', $sous_rubrique='accueil', $id_rubrique='',$menu=true) {
global $connect_id_auteur, $auth_can_disconnect;
$GLOBALS['spip_display'] = isset($GLOBALS['visiteur_session']['prefs']['display'])
? $GLOBALS['visiteur_session']['prefs']['display']
: 0;
$spip_display_navigation = isset($GLOBALS['visiteur_session']['prefs']['display_navigation'])
? $GLOBALS['visiteur_session']['prefs']['display_navigation']
: 'navigation_avec_icones';
$GLOBALS['spip_ecran'] = isset($_COOKIE['spip_ecran']) ? $_COOKIE['spip_ecran'] : "etroit";
$res = pipeline('body_prive',"<body class='"
. $GLOBALS['spip_ecran'] . " $spip_display_navigation $rubrique $sous_rubrique "._request('exec')."'"
. init_body_class()." "._request('exec')."'"
. ($GLOBALS['spip_lang_rtl'] ? " dir='rtl'" : "")
.'>');
@ -87,7 +83,18 @@ function init_body($rubrique='accueil', $sous_rubrique='accueil', $id_rubrique='
$bandeau = charger_fonction('bandeau', 'inc');
return $res
. $bandeau($rubrique, $sous_rubrique, $largeur);
. $bandeau();
}
function init_body_class() {
$GLOBALS['spip_display'] = isset($GLOBALS['visiteur_session']['prefs']['display'])
? $GLOBALS['visiteur_session']['prefs']['display']
: 0;
$spip_display_navigation = isset($GLOBALS['visiteur_session']['prefs']['display_navigation'])
? $GLOBALS['visiteur_session']['prefs']['display_navigation']
: 'navigation_avec_icones';
$GLOBALS['spip_ecran'] = isset($_COOKIE['spip_ecran']) ? $_COOKIE['spip_ecran'] : "etroit";
return $GLOBALS['spip_ecran'] . " $spip_display_navigation";
}
// http://doc.spip.org/@avertissement_messagerie

2
ecrire/inc/gadgets.php

@ -15,7 +15,7 @@ if (!defined("_ECRIRE_INC_VERSION")) return;
include_spip('inc/presentation');
// http://doc.spip.org/@repercuter_gadgets
function repercuter_gadgets($id_rubrique) {
function repercuter_gadgets() {
if (!_SPIP_AJAX) return '';

11
ecrire/inc/utils.php

@ -844,9 +844,14 @@ function autoriser_sans_cookie($nom)
return in_array($nom, $autsanscookie);
}
function tester_url_ecrire($nom)
{
if (find_in_path('prive/exec/' . $nom . '.html')) $nom = 'fond';
function tester_url_ecrire($nom){
// tester si c'est une page en squelette
if (find_in_path('prive/squelettes/contenu/' . $nom . '.html')
OR find_in_path('prive/squelettes/contenu/page-' . $nom . '.html'))
$nom = 'fond';
elseif (find_in_path('prive/exec/' . $nom . '.html'))
// compat version precedente
$nom = 'fond_monobloc';
return charger_fonction($nom,'exec',true);
}

2
ecrire/prive.php

@ -35,5 +35,5 @@ if ($var_auth !== '') {
}
// En somme, est prive' ce qui est publiquement nomme'...
include_once 'public.php';
include 'public.php';
?>

169
ecrire/public/styliser.php

@ -34,9 +34,7 @@ function public_styliser_dist($fond, $contexte, $lang='', $connect='', $ext='htm
// supprimer le ".html" pour pouvoir affiner par id_rubrique ou par langue
$squelette = substr($base, 0, - strlen(".$ext"));
// pipeline styliser
$squelette = pipeline('styliser', array(
$flux = array(
'args' => array(
'id_rubrique' => $id_rubrique,
'ext' => $ext,
@ -46,12 +44,175 @@ function public_styliser_dist($fond, $contexte, $lang='', $connect='', $ext='htm
'connect' => $connect
),
'data' => $squelette,
));
);
if (test_espace_prive() OR defined('_ZPIP')) {
$styliser_par_z = charger_fonction('par_z','styliser');
$flux = $styliser_par_z($flux);
}
// pipeline styliser
$squelette = pipeline('styliser', $flux);
return array($squelette, $ext, $ext, "$squelette.$ext");
}
/**
* Fonction Page automatique a partir de contenu/page-xx
*
* @param array $flux
* @return array
*/
function styliser_par_z_dist($flux){
static $prefix_path=null;
static $prefix_length;
static $z_blocs;
static $apl_constant;
static $page;
if (!isset($prefix_path)) {
if (test_espace_prive ()){
$prefix_path = "prive/squelettes/";
$prefix_length = strlen($prefix_path);
$z_blocs = isset($GLOBALS['z_blocs_ecrire'])?$GLOBALS['z_blocs_ecrire']:array('contenu','navigation','extra','head','hierarchie');
$apl_constant = '_ECRIRE_AJAX_PARALLEL_LOAD';
$page = 'exec';
$echaffauder = ""; // pas d'echaffaudage dans ecrire/ pour le moment
}
else {
$z_blocs = isset($GLOBALS['z_blocs'])?$GLOBALS['z_blocs']:array('contenu','navigation','extra','head');
$prefix_path = "";
$prefix_length = 0;
$apl_constant = '_Z_AJAX_PARALLEL_LOAD';
$page = _SPIP_PAGE;
$echaffauder = charger_fonction('echaffauder','public',true);
}
}
$z_contenu = reset($z_blocs); // contenu par defaut
$fond = $flux['args']['fond'];
if (strncmp($fond,$prefix_path,$prefix_length)==0) {
$fond = substr($fond, $prefix_length);
$squelette = $flux['data'];
$ext = $flux['args']['ext'];
// Ajax Parallel loading : ne pas calculer le bloc, mais renvoyer un js qui le loadera an ajax
if (defined('_Z_AJAX_PARALLEL_LOAD_OK')
AND $dir = explode('/',$fond)
AND count($dir)==2 // pas un sous repertoire
AND $dir = reset($dir)
AND in_array($dir,$z_blocs) // verifier deja qu'on est dans un bloc Z
AND in_array($dir,explode(',',constant($apl_constant))) // et dans un demande en APL
AND $pipe = find_in_path("$prefix_path$dir/z_apl.$ext") // et qui contient le squelette APL
){
$flux['data'] = substr($pipe, 0, - strlen(".$ext"));
return $flux;
}
// gerer les squelettes non trouves
// -> router vers les /dist.html
// ou scaffolding ou page automatique les contenus
if (!$squelette){
// si on est sur un ?page=XX non trouve
if ($flux['args']['contexte'][$page] == $fond OR $flux['args']['contexte']['type'] == $fond) {
// si c'est un objet spip, associe a une table, utiliser le fond homonyme
if (echaffaudable($fond)){
$flux['data'] = substr(find_in_path($prefix_path."objet.$ext"), 0, - strlen(".$ext"));
}
// sinon, brancher sur contenu/page-xx si elle existe
// si on est sur un ?page=XX non trouve
elseif ($flux['args']['contexte'][$page] == $fond) {
$base = "$prefix_path$z_contenu/page-".$fond.".".$ext;
if ($base = find_in_path($base)){
$flux['data'] = substr(find_in_path($prefix_path."page.$ext"), 0, - strlen(".$ext"));
}
}
}
// echaffaudage :
// si c'est un fond de contenu d'un objet en base
// generer un fond automatique a la volee pour les webmestres
elseif (strncmp($fond, "$z_contenu/", strlen($z_contenu)+1)==0
AND include_spip('inc/autoriser')
AND isset($GLOBALS['visiteur_session']['statut']) // performance
AND autoriser('webmestre')){
$type = substr($fond,strlen($z_contenu)+1);
if ($echaffauder AND $is = echaffaudable($type))
$flux['data'] = $echaffauder($type,$is[0],$is[1],$is[2],$ext);
}
// sinon, si on demande un fond non trouve dans un des autres blocs
// et si il y a bien un contenu correspondant ou echaffaudable
// se rabbatre sur le dist.html du bloc concerne
else{
if ( $dir = explode('/',$fond)
AND $dir = reset($dir)
AND $dir !== $z_contenu
AND in_array($dir,$z_blocs)){
$type = substr($fond,strlen("$dir/"));
if ($type=='page' OR find_in_path($prefix_path."$z_contenu/$type.$ext") OR echaffaudable($type))
$flux['data'] = substr(find_in_path($prefix_path."$dir/dist.$ext"), 0, - strlen(".$ext"));
}
}
$squelette = $flux['data'];
}
// layout specifiques par type et compositions :
// body-article.html
// body-page-sommaire.html
// pour des raisons de perfo, les declinaisons doivent etre dans le
// meme dossier que body.html
if ($fond=='body' AND substr($squelette,-strlen($fond))==$fond){
if (isset($flux['args']['contexte']['type'])
AND (
(isset($flux['args']['contexte']['composition'])
AND file_exists(($f=$squelette."-".$flux['args']['contexte']['type']."-".$flux['args']['contexte']['composition']).".$ext"))
OR
file_exists(($f=$squelette."-".$flux['args']['contexte']['type']).".$ext")
))
$flux['data'] = $f;
}
// chercher le fond correspondant a la composition
elseif (isset($flux['args']['contexte']['composition'])
AND ((!$squelette AND basename($fond)=='page') OR ($squelette AND substr($squelette,-strlen($fond))==$fond))
AND $dir = explode('/',$fond)
AND $dir = reset($dir)
AND in_array($dir,$z_blocs)
AND $f=find_in_path($prefix_path.$fond."-".$flux['args']['contexte']['composition'].".$ext")){
$flux['data'] = substr($f,0,-strlen(".$ext"));
}
}
return $flux;
}
/**
* Tester si un type est echaffaudable
* cad si il correspond bien a un objet en base
*
* @staticvar array $echaffaudable
* @param string $type
* @return bool
*/
function echaffaudable($type){
static $echaffaudable = array();
if (isset($echaffaudable[$type]))
return $echaffaudable[$type];
if (preg_match(',[^\w],',$type))
return $echaffaudable[$type] = false;
if ($table = table_objet($type)
AND $type == objet_type($table)
AND $trouver_table = charger_fonction('trouver_table','base')
AND
($desc = $trouver_table($table)
OR $desc = $trouver_table($table_sql = $GLOBALS['table_prefix']."_$table"))
)
return $echaffaudable[$type] = array($table,$desc['table'],$desc);
else
return $echaffaudable[$type] = false;
}
/*
* Options de recherche de squelette par le styliseur, appele par le pipeline 'styliser' :
* Squelette par rubrique squelette-XX.html ou squelette=XX.html

211
prive/modeles/typo.html

@ -0,0 +1,211 @@
<a name="ancre" href="#ancre"></a>
<h1>Typographie</h1>
<h2>Paragraphes</h2>
<p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Sed non risus. Suspendisse lectus tortor, dignissim sit amet, adipiscing nec, ultricies sed, dolor. Cras elementum ultrices diam. Maecenas ligula massa, varius a, semper congue, euismod non, mi.
<br />Ici, retour à la ligne (avec br).</p>
<p>Second paragraphe. Proin porttitor, orci nec nonummy molestie, enim est eleifend mi, non fermentum diam nisl sit amet erat. Duis semper.
Duis arcu massa, scelerisque vitae, consequat in, pretium a, enim. Pellentesque congue. Ut in risus volutpat libero pharetra tempor. Cras vestibulum bibendum augue.</p>
<hr />
<p>Troisième paragraphe, précédé d’une ligne horizontale de séparation. Praesent egestas leo in pede. Praesent blandit odio eu enim.
Pellentesque sed dui ut augue blandit sodales. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae&nbsp;;
Aliquam nibh. Mauris ac mauris sed pede pellentesque fermentum. Maecenas adipiscing ante non diam sodales hendrerit.</p>
<h2>Titre de niveau h2</h2>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed bibendum lorem leo. Integer tempus turpis sed risus molestie vulputate. Fusce elementum mattis orci, id pretium massa porttitor id.</p>
<h3>Titre de niveau h3</h3>
<p>Vivamus non orci quis tellus fermentum congue ut eu purus. Praesent et eleifend tellus. Quisque vitae sapien at massa mollis interdum vel id justo. Nulla fermentum diam eget ipsum tristique vestibulum auctor tellus consectetur. Proin laoreet eros ut erat luctus faucibus.</p>
<h4>Titre de niveau h4</h4>
<p>Morbi a est sem, eu vestibulum est. Integer gravida bibendum ante, quis euismod odio faucibus vel. Donec aliquam blandit est vitae fringilla. Quisque arcu tortor, mattis nec bibendum nec, sagittis eget justo.</p>
<h5>Titre de niveau h5</h5>
<p>Vivamus tincidunt dapibus sapien, sed molestie est volutpat tempus. Integer posuere consequat sollicitudin. Aenean sit amet sapien ligula, in pulvinar orci. Duis lacus justo, rutrum nec blandit sollicitudin, vulputate vitae nulla.</p>
<h6>Titre de niveau h6</h6>
<p>Nulla facilisi. Donec vitae dui sed lectus venenatis dignissim. Quisque ut ultricies eros. Integer tempus sapien id odio scelerisque vulputate. Etiam pellentesque, ipsum at luctus laoreet, orci eros aliquet velit, vitae porttitor elit purus et arcu. Suspendisse potenti. Nunc hendrerit quam id eros commodo vel adipiscing ligula pellentesque. Praesent ipsum lorem, rutrum feugiat iaculis at, dapibus vel sapien. Sed eget velit purus, sit amet elementum risus. Aliquam porttitor tortor eu felis laoreet rutrum. Etiam tristique leo at nisl adipiscing varius. Nullam varius metus nec lacus eleifend sit amet semper enim aliquet. Integer quis massa eget neque imperdiet porttitor vitae rhoncus elit. Etiam pharetra lacus ut lacus pretium at tincidunt diam convallis.</p>
<h2>Citations</h2>
<p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. <q>Ceci est une citation au fil du texte (avec q)</q>.</p>
<blockquote>
<p>Ceci est une citation ordinaire (avec blockquote). Cras eleifend tristique quam. Fusce gravida lectus vel enim convallis tempor.</p>
<p>Second paragraphe. Maecenas laoreet interdum elit. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Phasellus tristique wisi ut lacus.</p>
</blockquote>
<p>Quelques vers du <cite>Phèdre</cite> de Racine&nbsp;:</p>
<blockquote>
<p>Je le vis, je rougis, je pâlis à sa vue
<br />Un trouble s’éleva dans mon âme éperdue
<br />Mes yeux ne voyaient plus, je ne pouvais parler
<br />Je sentis tout mon corps et transir et brûler.</p>
</blockquote>
<address>Voici mon adresse (avec address) : 92 rue Saint Maur, 75 011 Paris.</address>
<h3>Code</h3>
<pre>&lt;?php
&nbsp; &nbsp; // ceci est du langage php
&nbsp; &nbsp; echo "bonjour";
?&gt;</pre>
<p>Voici un <kbd>raccourci-clavier</kbd> (avec <code>&lt;kbd&gt;</code>), un <samp>extait de script</samp> (avec <code>&lt;samp&gt;</code>) et une <var>variable</var> (avec <code>&lt;var&gt;</code>).</p>
<h2>Listes</h2>
<p>Exemple de liste non ordonnée (avec ul)&nbsp;:</p>
<ul class="spip">
<li>Élément de liste non numérotée</li>
<li>Élément de liste non numérotée</li>
<li>Élément de liste non numérotée
<ul class="spip">
<li>Plantes
<ul class="spip">
<li>Ficus</li>
<li>Olivier</li>
</ul>
</li>
<li>Animaux de compagnie
<ul class="spip">
<li>Chat</li>
<li>Chien</li>
</ul>
</li>
</ul>
</li>
</ul>
<p>Et une liste numérotée (avec ol)&nbsp;:</p>
<ol class="spip">
<li>Voici ma main&nbsp;: elle a cinq doigts. En voici deux, en voici trois. Le premier, ce gros bonhomme, C’est le pouce qu’il se nomme.</li>
<li>L’index qui montre le chemin, Est le second doigt de la main.</li>
<li>Entre l’index et l’annulaire, Le majeur paraît un grand frère.</li>
<li>L’annulaire porte l’anneau, Avec sa bague, il fait le beau.</li>
<li>Le tout petit auriculaire Marche à côté de l’annulaire.</li>
</ol>
<p>Regardez mes doigts travailler. Chacun fait son petit métier.</p>
<p>N&#8217;oublions pas les listes de définition (avec dl, dd et dt)&nbsp;:</p>
<dl>
<dt>Le kiwi</dt>
<dd>C&#8217;est un fruit mais aussi un petit animal</dd>
<dt>Le litchi</dt>
<dd>Un excellent fruit exotique</dd>
</dl>
<h2>Tableaux</h2>
<table summary="summary">
<caption>Titre du tableau (caption)</caption>
<thead>
<tr class="first">
<th scope="col">entête</th>
<th scope="col">entête</th>
</tr>
</thead>
<tbody>
<tr class="even">
<td>cellule 1</td>
<td>cellule 2</td>
</tr>
<tr class="odd">
<td>cellule 1</td>
<td>cellule 2</td>
</tr>
<tr class="even">
<td>cellule 1</td>
<td>cellule 2</td>
</tr>
</tbody>
</table>
<table summary="summary">
<caption>Exemple de tableau complet, avec thead, tfoot et tbody</caption>
<thead>
<tr>
<th>entête</th>
<th>entête</th>
<th>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Sed non risus. Suspendisse lectus tortor, dignissim sit amet, adipiscing nec, ultricies sed, dolor.</th>
</tr>
</thead>
<tfoot>
<tr>
<td colspan="3">Pied du tableau (avec tfoot)</td>
</tr>
</tfoot>
<tbody>
<tr class="even">
<td>cellule 1</td>
<td>cellule 2</td>
<td>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Sed non risus. Suspendisse lectus tortor, dignissim sit amet, adipiscing nec, ultricies sed, dolor.</td>
</tr>
<tr class="odd">
<td>cellule 1</td>
<td>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Sed non risus. Suspendisse lectus tortor, dignissim sit amet, adipiscing nec, ultricies sed, dolor.</td>
<td>cellule 3</td>
</tr>
</tbody>
<tbody>
<tr class="even">
<td>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Sed non risus. Suspendisse lectus tortor, dignissim sit amet, adipiscing nec, ultricies sed, dolor.</td>
<td>cellule 2</td>
<td>cellule 3</td>
</tr>
<tr class="odd">
<td>cellule 1</td>
<td>cellule 2</td>
<td>cellule 3</td>
</tr>
</tbody>
</table>
<h2>Enrichissements typographiques</h2>
<p>em : <em>exemple de em</em></p>
<p>strong : <strong>exemple de strong</strong></p>
<p>del : <del>exemple del</del></p>
<p>ins : <ins>exemple de ins</ins></p>
<p>abbr : <abbr title="exemple de title">exemple de abbr</abbr></p>
<p>acronym : <acronym title="exemple de title">exemple de acronym</acronym></p>
<p>cite : <cite>exemple de cite</cite></p>
<p>dfn : <dfn>exemple de dfn</dfn></p>
<p>sup : <sup>exemple de sup</sup></p>
<p>sub : <sub>exemple de sub</sub></p>
<p>code : <code>exemple de code</code></p>
<p>kbd : <kbd>exemple de kbd</kbd></p>
<p>samp : <samp>exemple de samp</samp></p>
<p>var : <var>exemple de var</var></p>
<p>bdo en ltr : <bdo dir="ltr">exemple de bdo</bdo></p>
<p>bdo en rtl : <bdo dir="rtl">exemple de bdo</bdo></p>
<h3>À éviter</h3>
<p>Ces balises ne doivent plus être utilisées car elles sont dépréciées en XHTML 1.0 Strict&nbsp;:
<br />basefont : <basefont>exemple de basefont</basefont>
<br />font : <font>exemple de font</font>
<br />u : <u>exemple de u</u>
<br />s : <s>exemple de s</s>
<br />strike : <strike>exemple de strike</strike>
<br />etc.
</p>
<p>Celles-ci sont déconseillées&nbsp;:
<br />i : <i>exemple de i</i>
<br />b : <b>exemple de b</b>
<br />big : <big>exemple de big</big>
<br />small : <small>exemple de small</small>
<br />tt : <tt>exemple de tt</tt>.</p>
<h2>Hyperliens</h2>
<p>Exemple de <a href="#" title="example">lien interne</a>
<br />Exemple de <a href="http://fr.opquast.com/bonnes-pratiques/fiche/50" rel="external" title="bonne pratique Opquast N°50">lien externe</a>
<br />Exemple de <a href="http://en.opquast.com/bonnes-pratiques/fiche/50" rel="external" title="bonne pratique Opquast N°50" hreflang="en">lien externe</a> avec hreflang
<br />Exemple de <a href="mailto:adresse@courriel.fr">adresse@courriel.fr</a>
<br />Exemple de <a href="#ancre">#ancre</a></p>

22
prive/squelettes/body.html

@ -0,0 +1,22 @@
<INCLURE{fond=prive/squelettes/inclure/barre-nav,env}>
<div id="page">
<div class="largeur">
<INCLURE{fond=prive/squelettes/hierarchie/#ENV{type},env}>
<div id="conteneur" class="no_onglets">
<div id="navigation">
<INCLURE{fond=prive/squelettes/navigation/#ENV{type},env}>
[(#EVAL{$GLOBALS}|table_valeur{spip_ecran}|=={large}|oui)
</div>
<div id="extra">]
<INCLURE{fond=prive/squelettes/extra/#ENV{type},env}>
</div>
<div id="contenu">
<INCLURE{fond=prive/squelettes/contenu/#ENV{type},env}>
</div>
</div>
<br class="nettoyeur" />
<div id="pied">
<INCLURE{fond=prive/squelettes/inclure/pied,env}>
</div>
</div>
</div>

8
prive/squelettes/contenu/page-typo.html

@ -0,0 +1,8 @@
[(#REM)
Squelette
(c) 2009 xxx
Distribue sous licence GPL
]
#MODELE{typo}

8
prive/squelettes/extra/dist.html

@ -0,0 +1,8 @@
[(#REM)
Squelette
(c) 2009 xxx
Distribue sous licence GPL
]
<!-- extra -->

8
prive/squelettes/head/dist.html

@ -0,0 +1,8 @@
[(#REM)
Squelette
(c) 2009 xxx
Distribue sous licence GPL
]
[(#REM|init_head)]

8
prive/squelettes/hierarchie/dist.html

@ -0,0 +1,8 @@
[(#REM)
Squelette
(c) 2009 xxx
Distribue sous licence GPL
]
<!-- hierarchie -->

11
prive/squelettes/inclure/barre-nav.html

@ -0,0 +1,11 @@
[(#REM)
Squelette
(c) 2009 xxx
Distribue sous licence GPL
]
<?php
$bandeau = charger_fonction('bandeau', 'inc');
echo $bandeau();
?>

45
prive/squelettes/inclure/head.html

@ -0,0 +1,45 @@
[(#REM)
Head standard de toutes les pages ; les elements specifiques
(title, description) figurent dans le squelette article.html
]
[(#REM) Preciser le charset ]
<meta http-equiv="Content-Type" content="text/html; charset=#CHARSET" />
[(#REM) Fierement fabrique avec SPIP ]
<meta name="generator" content="SPIP[ (#SPIP_VERSION)]" />
[(#REM) Lien vers le flux RSS du site ]
[<link rel="alternate" type="application/rss+xml" title="<:syndiquer_site:>" href="(#URL_PAGE{backend})" />]
[(#REM) Feuille de style par defaut pour le code genere par SPIP ]
[<link rel="stylesheet" href="(#CHEMIN{spip_style.css}|direction_css)" type="text/css" media="all" />]
[(#REM) Feuille de style par defaut pour les formulaires de SPIP ]
[<link rel="stylesheet" href="(#CHEMIN{spip_formulaires.css}|direction_css)" type="text/css" media="projection, screen, tv" />]
[(#REM) Feuille de style par defaut pour les box]
[<link rel="stylesheet" href="(#CHEMIN{box.css})" type="text/css" media="projection, screen, tv" />]
[<link rel="stylesheet" href="(#CHEMIN{box_skins.css})" type="text/css" media="projection, screen, tv" />]
[(#REM) Balise permettant aux plugins d'inserer des fichiers CSS ]
#INSERT_HEAD_CSS
[(#REM) Feuille de style CSS pour l'affichage du site a l'ecran ]
[<link rel="stylesheet" href="(#CHEMIN{habillage.css}|direction_css)" type="text/css" media="projection, screen, tv" />]
[(#REM) Feuille de style CSS pour l'impression ]
[<link rel="stylesheet" href="(#CHEMIN{impression.css}|direction_css)" type="text/css" media="print" />]
[(#CHEMIN{inc-theme-head.html}|oui)
#INCLURE{fond=inc-theme-head,env}
]
[(#REM) Feuille de style personnalisee pour surcharger les precedentes
A noter par defaut cette css n'existe pas
]
[<link rel="stylesheet" href="(#CHEMIN{perso.css}|direction_css)" type="text/css" media="all" />]
[(#REM) Balise permettant aux plugins d'inserer des appels javascript ou css ;
C'est ici que SPIP va inserer l'appel de la librairie jQuery
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

5
prive/squelettes/inclure/pied.html

@ -0,0 +1,5 @@
<?php
echo fin_page();
?>

13
prive/squelettes/navigation/dist.html

@ -0,0 +1,13 @@
[(#REM)
Squelette
(c) 2009 xxx
Distribue sous licence GPL
]
<?php
include_spip('exec/accueil');
echo exec_accueil_navigation();
?>

1
prive/squelettes/objet.html

@ -0,0 +1 @@
<INCLURE{fond=prive/squelettes/structure}{env}{type=#ENV{page,#ENV{type}}}{composition=#ENV{composition,''}}>

1
prive/squelettes/page.html

@ -0,0 +1 @@
<INCLURE{fond=prive/squelettes/structure}{env}{type=page}{composition=#ENV{composition,#ENV{exec}}}>

12
prive/squelettes/structure.html

@ -0,0 +1,12 @@
[#EVAL{_DOCTYPE_ECRIRE}
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="#LANG" lang="#LANG" dir="#LANG_DIR">
<head>
<INCLURE{fond=prive/squelettes/head/#ENV{type},env}>
</head>
<body class="page_#ENV{type,page}[ #ENV{type,page}_(#ENV{composition,''})] [(#REM|init_body_class)]">
<INCLURE{fond=prive/squelettes/body,env}>
</body>
</html>
(#EVAL{#VAL{var_zajax}|_request}|non)][
<INCLURE{fond=#VAL{prive/squelettes/}|concat{#VAL{var_zajax}|_request}|concat{'/',#ENV{type}},env}>
(#EVAL{#VAL{var_zajax}|_request}|oui)]

14
prive/style_prive.html

@ -45,16 +45,18 @@ body { font-size:0.625em; font-family: Verdana, Geneva, Sans, sans-serif; }
#page { font-size: small; }
/* ecran etroit*/
.largeur { width: 780px; margin: auto; text-align:#GET{left}; }
#conteneur,.table_page,div.messages { clear: both; margin-#GET{right}: auto; margin-#GET{left}: auto; text-align: #GET{left}; width: 780px; margin-top:0.5em;}
#navigation { float: #GET{left}; width: 200px; min-height: 100px; }
#contenu { float: #GET{left} ; margin-#GET{left}: 30px; width: 550px; }
#extra { float: #GET{left}; width: 200px; }
#extra { float: #GET{left}; clear:#GET{left}; width: 200px; }
#contenu { float: #GET{right} ; margin-#GET{left}: 30px; width: 550px; }
/* ecran large*/
.large #conteneur,.large .table_page,.large div.messages { margin-#GET{right}: auto; margin-#GET{left}: auto; text-align: #GET{left}; width: 974px; }
.large #navigation { float: #GET{left}; width: 200px; }
.large .largeur {width:974px;}
.large #conteneur,.large .table_page,.large div.messages { width: 974px; }
.large #navigation { }
.large #extra { float: #GET{right}; clear:none; width: 200px; }
.large #contenu { float: #GET{left}; margin-#GET{left}: 17px; width: 540px; }
.large #extra { float: #GET{right}; width: 200px; }
/* les formulaires sont en 600px en config large */
.articles_edit .large #contenu,
@ -121,8 +123,6 @@ td { text-align: #GET{left}; }
#bando_haut { font-size: 110%; position:relative;}
#bando_haut a { text-decoration: none; }
#bando_haut .largeur { width: 780px; margin: auto; text-align:#GET{left}; }
.large #bando_haut .largeur {width:974px;}
#bando_haut #bando_liens_rapides {position:absolute;top:0;z-index:0;width:100%;}

Loading…
Cancel
Save