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.
 
 
 
 

192 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)) : '');
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();
}
/**
* 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)
*/
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');
}