3 /***************************************************************************\
4 * SPIP, Systeme de publication pour l'internet *
6 * Copyright (c) 2001-2014 *
7 * Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James *
9 * Ce programme est un logiciel libre distribue sous licence GNU/GPL. *
10 * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. *
11 \***************************************************************************/
13 if (!defined('_ECRIRE_INC_VERSION')) return;
16 // Presentation de l'interface privee, debut du HTML
19 // http://doc.spip.org/@inc_commencer_page_dist
20 function inc_commencer_page_dist($titre = "", $rubrique = "accueil", $sous_rubrique = "accueil", $id_rubrique = "",$menu=true,$minipres=false, $alertes = true) {
21 global $connect_id_auteur;
23 include_spip('inc/headers');
27 return init_entete($titre, $id_rubrique, $minipres)
28 . init_body($rubrique, $sous_rubrique, $id_rubrique,$menu)
30 . ($alertes?
alertes_auteur($connect_id_auteur):'')
31 . auteurs_recemment_connectes($connect_id_auteur);
34 // envoi du doctype et du <head><title>...</head>
35 // http://doc.spip.org/@init_entete
36 function init_entete($titre='', $id_rubrique=0, $minipres=false) {
37 include_spip('inc/gadgets');
39 if (!$nom_site_spip = textebrut(typo($GLOBALS['meta']["nom_site"])))
40 $nom_site_spip= _T('info_mon_site_spip');
42 // Pour corriger la position des sous-menus principaux
43 // (quand intitules sur 2 lignes)
45 $js = repercuter_gadgets($id_rubrique);
48 . "] " . textebrut(typo($titre)) . "</title>\n"
49 . "<meta http-equiv='Content-Type' content='text/html"
50 . (($c = $GLOBALS['meta']['charset']) ?
53 . envoi_link($nom_site_spip,$minipres, $js);
55 return _DOCTYPE_ECRIRE
56 . html_lang_attributes()
58 . pipeline('header_prive', $head)
62 // fonction envoyant la double serie d'icones de redac
63 // http://doc.spip.org/@init_body
64 function init_body($rubrique='accueil', $sous_rubrique='accueil', $id_rubrique='',$menu=true) {
65 global $connect_id_auteur, $auth_can_disconnect;
66 global $spip_display, $spip_ecran;
68 if ($spip_ecran == "large") $largeur = 974; else $largeur = 750;
70 $res = pipeline('body_prive',"<body class='ecrire $rubrique $sous_rubrique $spip_ecran "._request('exec')."'"
71 . ($GLOBALS['spip_lang_rtl'] ?
" dir='rtl'" : "")
74 if ($spip_display == "4") {
76 . "\n<li><a href='" . generer_url_ecrire() ."'>"._T('icone_a_suivre')."</a></li>"
77 . "\n<li><a href='" . generer_url_ecrire("naviguer") . "'>"._T('icone_edition_site')."</a></li>"
78 . "\n<li><a href='" . generer_url_ecrire("forum"). "'>"._T('titre_forum')."</a></li>"
79 . "\n<li><a href='" . generer_url_ecrire("auteurs") . "'>"._T('icone_auteurs')."</a></li>"
80 . "\n<li><a href=\"".url_de_base()."\">"._T('icone_visiter_site')."</a></li>"
85 if (!$menu) return $res;
88 $items = "<div class='h-list centered vcentered' style='width:{$largeur}px'><ul>"
89 . "<li id='bandeau_couleur1' class='bandeau_couleur'><div class='menu-item'>"
90 . installer_gadgets($id_rubrique)
92 . "<li id='bandeau_couleur2' class='bandeau_couleur' style='width:"
95 // overflow pour masquer les noms tres longs
96 // (et eviter debords, notamment en ecran etroit)
98 //. "<div style='width: "
99 . (($spip_ecran == "large") ?
300 : 110)
100 . "px;'><div class='menu-item' style='width:"
101 . (($spip_ecran == "large") ?
300 : 110)
102 . "px; overflow: hidden;'>"
104 . generer_url_ecrire("auteur_infos","id_auteur=$connect_id_auteur")
105 . "' class='icone26' title=\""
106 . entites_html(_T('icone_informations_personnelles'))
108 . typo($GLOBALS['visiteur_session']['nom'])
110 . "<li id='bandeau_couleur4' class='bandeau_couleur'><div class='menu-item'>";
113 $couleurs = charger_fonction('couleurs', 'inc');
114 $items .= "<div id='preferences_couleurs'>";
115 $items .= $couleurs() . "</div>";
117 $items .= "</div></li>";
119 // choix de la langue
120 if ($i = menu_langues('var_lang_ecrire')) {
121 $items .= "<li id='bandeau_couleur5' class='bandeau_couleur'><div class='menu-item'>"
122 . (_request('lang')?
$i:"<a href='".parametre_url(self(),'lang',$GLOBALS['spip_lang'])
123 ."' title='".attribut_html(_T('info_langues'))."'>"
124 . traduire_nom_langue($GLOBALS['spip_lang'])
129 $items .= "<li id='bandeau_couleur6' class='bandeau_couleur'><div class='menu-item'>";
131 if ($auth_can_disconnect) {
132 $alt=_T('icone_deconnecter');
133 $items .= "<a href='".
134 generer_url_action("logout","logout=prive") .
135 "' class='icone26' onmouseover=\"changestyle('bandeaudeconnecter');\" onfocus=\"changestyle('bandeaudeconnecter');\" onblur=\"changestyle('bandeaudeconnecter');\">" .
136 http_img_pack("deconnecter-24.gif", "$alt", "width='26' height='20'") .
139 $items .= "</div></li>"
142 // <div> pour la barre des gadgets
143 // (elements invisibles qui s'ouvrent sous la barre precedente)
145 $items .= bandeau_gadgets($largeur, true, $id_rubrique);
147 $bandeau = charger_fonction('bandeau', 'inc');
150 . "<div class='invisible_au_chargement' style='position: absolute; height: 0px; visibility: hidden;'><a href='oo'>"
151 ._T("access_mode_texte")
153 . "<div id='haut-page'>\n"
154 . $bandeau($rubrique, $sous_rubrique, $largeur)
155 . "\n<div id='bandeau_couleur'>"
160 // http://doc.spip.org/@avertissement_messagerie
161 function avertissement_messagerie($id_auteur) {
163 $result_messages = sql_allfetsel("lien.id_message", "spip_messages AS messages, spip_auteurs_messages AS lien", "lien.id_auteur=".sql_quote($id_auteur)." AND vu='non' AND statut='publie' AND type='normal' AND lien.id_message=messages.id_message",'','');
164 $total_messages = count($result_messages);
165 if ($total_messages == 1) {
166 $row = $result_messages[0];
167 $ze_message=$row['id_message'];
168 return "<a href='" . generer_url_ecrire("message","id_message=$ze_message") . "' class='ligne_foncee'>"._T('info_nouveau_message')."</a>";
169 } elseif ($total_messages > 1)
170 return "<a href='" . generer_url_ecrire("messagerie") . "' classe='ligne_foncee'>"._T('info_nouveaux_messages', array('total_messages' => $total_messages))."</a>";
174 // http://doc.spip.org/@alertes_auteur
175 function alertes_auteur($id_auteur) {
179 if (isset($GLOBALS['meta']['message_crash_tables'])
180 AND autoriser('detruire', null, null, $id_auteur)) {
181 include_spip('genie/maintenance');
182 if ($msg = message_crash_tables())
186 if (isset($GLOBALS['meta']['message_crash_plugins'])
187 AND autoriser('configurer', 'plugins', null, $id_auteur)) {
188 include_spip('inc/plugin');
189 if ($msg = message_crash_plugins())
194 if (isset($GLOBALS['meta']['plugin_erreur_activation'])
195 AND autoriser('configurer', 'plugins', null, $id_auteur)) {
196 $alertes[] = $GLOBALS['meta']['plugin_erreur_activation'];
197 effacer_meta('plugin_erreur_activation'); // pas normal que ce soit ici
200 $alertes[] = avertissement_messagerie($id_auteur);
206 'id_auteur' => $id_auteur,
207 'exec' => _request('exec'),
213 if ($alertes = array_filter($alertes))
214 return "<div class='wrap-messages'><div class='messages'>".
215 join('<hr />', $alertes)
219 // http://doc.spip.org/@auteurs_recemment_connectes
220 function auteurs_recemment_connectes($id_auteur)
222 $result = sql_allfetsel("*", "spip_auteurs", "id_auteur!=" .intval($id_auteur) . " AND en_ligne>DATE_SUB(".sql_quote(date('Y-m-d H:i:s')).",INTERVAL 15 MINUTE) AND " . sql_in('statut', array('1comite', '0minirezo')));
224 if (!$result) return '';
225 $formater_auteur = charger_fonction('formater_auteur', 'inc');
227 foreach ($result as $row) {
228 $id = $row['id_auteur'];
229 $mail = formater_auteur_mail($row, $id);
230 $auteurs = "<a href='" . generer_url_ecrire("auteur_infos", "id_auteur=$id") . "'>" . typo($row['nom']) . "</a>";
231 $res .= "$mail $auteurs" . ", ";
234 return "<div class='en_lignes' style='color:#666;'>" .
235 "<b>"._T('info_en_ligne'). " </b>" .
241 // http://doc.spip.org/@lien_change_var
242 function lien_change_var($lien, $set, $couleur, $coords, $titre, $mouseOver="") {
243 $lien = parametre_url($lien, $set, $couleur);
244 return "\n<area shape='rect' href='$lien' coords='$coords' title=\"$titre\" alt=\"$titre\" $mouseOver />";