Dépôt officiel du core SPIP Les plugins-dist faisant partie de la distribution SPIP sont présents dans https://git.spip.net/spip/[nom du plugin dist] https://www.spip.net
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

193 lines
5.4 KiB

<?php
/***************************************************************************\
* SPIP, Système de publication pour l'internet *
* *
* Copyright © avec tendresse depuis 2001 *
* Arnaud Martin, Antoine Pitrou, Philippe Rivière, Emmanuel Saint-James *
* *
* Ce programme est un logiciel libre distribué sous licence GNU/GPL. *
* Pour plus de détails voir le fichier COPYING.txt ou l'aide en ligne. *
\***************************************************************************/
/**
* Présentation de l'interface privee (exec PHP), début du HTML
*
* @package SPIP\Core\Presentation
**/
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
/**
* Débute une page HTML pour l'espace privé
*
* Préferer l'usage des squelettes prive/squelettes/.
*
* @uses init_entete()
* @uses init_body()
* @example
* ```
* $commencer_page = charger_fonction('commencer_page','inc');
* echo $commencer_page($titre);
* ```
*
* @param string $titre Titre de la page
* @param string $rubrique ?
* @param string $sous_rubrique ?
* @param string $id_rubrique ?
* @param bool $menu ?
* @param bool $minipres ?
* @param bool $alertes ?
* @return string Code HTML
**/
function inc_commencer_page_dist(
$titre = '',
$rubrique = 'accueil',
$sous_rubrique = 'accueil',
$id_rubrique = '',
$menu = true,
$minipres = false,
$alertes = true
) {
include_spip('inc/headers');
http_no_cache();
return init_entete($titre, $id_rubrique, $minipres)
. init_body($rubrique, $sous_rubrique, $id_rubrique, $menu)
. "<div id='page'>"
. auteurs_recemment_connectes($GLOBALS['connect_id_auteur'])
. ($alertes ? alertes_auteur($GLOBALS['connect_id_auteur']) : '')
. '<div class="largeur">';
}
/**
* Envoi du DOCTYPE et du `<head><title> </head>`
*
* @uses _DOCTYPE_ECRIRE
* @uses textebrut()
* @uses typo()
* @uses html_lang_attributes()
* @uses init_head()
*
* @param string $titre
* Titre de la page
* @param integer $dummy
* Valeur non utilisée…
* @param bool $minipres
* @return string
* Entête du fichier HTML avec le DOCTYPE
*/
function init_entete($titre = '', $dummy = 0, $minipres = false) {
include_spip('inc/texte');
if (!$nom_site_spip = textebrut(typo($GLOBALS['meta']['nom_site']))) {
$nom_site_spip = _T('info_mon_site_spip');
}
$titre = '['
. $nom_site_spip
. ']'
. ($titre ? ' ' . textebrut(typo($titre)) : '');
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
13 years ago
return _DOCTYPE_ECRIRE
. html_lang_attributes()
. "<head>\n"
. init_head($titre, $dummy, $minipres)
. "</head>\n";
}
/**
* Retourne le code HTML du head (intégration des JS et CSS) de l'espace privé
*
* Code HTML récupéré du squelette `prive/squelettes/head/dist`
*
* @param string $titre
* @param integer $dummy
* @param bool $minipres
* @return string
*/
function init_head($titre = '', $dummy = 0, $minipres = false) {
return recuperer_fond('prive/squelettes/head/dist', ['titre' => $titre, 'minipres' => $minipres ? ' ' : '']);
}
/**
* Fonction envoyant la double série d'icônes de rédac
*
* @uses init_body_class()
* @uses inc_bandeau_dist()
*
* @pipeline_appel body_prive
*
* @global mixed $connect_id_auteur
* @global mixed $auth_can_disconnect
*
* @param string $rubrique
* @param string $sous_rubrique
* @param integer $id_rubrique
* @param bool $menu
* @return string
*/
function init_body($rubrique = 'accueil', $sous_rubrique = 'accueil', $id_rubrique = '', $menu = true) {
$res = pipeline('body_prive', "<body class='"
. init_body_class() . ' ' . _request('exec') . "'"
. ($GLOBALS['spip_lang_rtl'] ? " dir='rtl'" : '')
. '>');
if (!$menu) {
return $res;
}
$bandeau = charger_fonction('bandeau', 'inc');
return $res
. $bandeau();
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
13 years ago
}
/**
* Calcule les classes CSS à intégrer à la balise `<body>` de l'espace privé
*
* Les classes sont calculées en fonction des préférences de l'utilisateur,
* par exemple s'il choisit d'avoir ou non les icônes.
*
* @return string Classes CSS (séparées par des espaces)
*/
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
13 years ago
function init_body_class() {
$prefs = isset($GLOBALS['visiteur_session']['prefs']) ? $GLOBALS['visiteur_session']['prefs'] : [];
$GLOBALS['spip_display'] = isset($prefs['display']) ? (int) $prefs['display'] : 2;
$spip_display_navigation = isset($prefs['display_navigation']) ? spip_sanitize_classname($prefs['display_navigation']) : 'navigation_avec_icones';
$spip_display_outils = isset($prefs['display_outils'])
? ($prefs['display_outils'] ? 'navigation_avec_outils' : 'navigation_sans_outils')
: 'navigation_avec_outils';
$GLOBALS['spip_ecran'] = isset($_COOKIE['spip_ecran']) ? spip_sanitize_classname($_COOKIE['spip_ecran']) : 'etroit';
$display_class = [
0 => 'icones_img_texte'
/*init*/,
1 => 'icones_texte',
2 => 'icones_img_texte',
3 => 'icones_img'
];
$couleur = isset($prefs['couleur']) ? (int) $prefs['couleur'] : 2;
$classes = $GLOBALS['spip_ecran'] . " spip-theme-colors-$couleur $spip_display_navigation $spip_display_outils " . $display_class[$GLOBALS['spip_display']];
return spip_sanitize_classname($classes);
}
/**
* Afficher la liste des auteurs connectés à l'espace privé
*
* @param integer $id_auteur
* @return string
*/
function auteurs_recemment_connectes($id_auteur) {
return recuperer_fond('prive/objets/liste/auteurs_enligne');
}