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 \***************************************************************************/
14 * Fonctions d'affichage pour l'espace privé (hors squelettes)
16 * @package SPIP\Core\Affichage
18 if (!defined('_ECRIRE_INC_VERSION')) return;
21 * Affiche un code html (echo) et log l'affichage car cet echo est anormal !
23 * Signale une fonction qui devrait retourner un contenu mais effectue
24 * un echo à la place pour compatibilité ascendante
27 * Utiliser des squelettes pour l'affichage !
32 * Code HTML à afficher
35 function echo_log($f, $ret) {
36 spip_log("Page " . self() . " function $f: echo ".substr($ret,0,50)."...",'echo');
38 (_SIGNALER_ECHOS?
"#Echo par $f#" :"")
43 * Retourne le code HTML d'un début de cadre pour le centre de page (haut de page)
44 * @return string Code HTML
46 function debut_grand_cadre(){ return "\n<div class='table_page'>\n";}
49 * Retourne le code HTML d'une fin de cadre pour le centre de page (haut de page)
50 * @return string Code HTML
52 function fin_grand_cadre(){ return "\n</div>";}
54 // Debut de la colonne de gauche
55 // div navigation fermee par creer_colonne_droite qui ouvre
56 // div extra lui-meme ferme par debut_droite qui ouvre
57 // div contenu lui-meme ferme par fin_gauche() ainsi que
59 // http://doc.spip.org/@debut_gauche
61 * Retourne le code HTML du début de la colonne gauche
62 * @return string Code HTML
64 function debut_gauche() { return "<div id='conteneur' class=''>\n<div id='navigation' class='lat' role='contentinfo'>\n";}
67 * Retourne le code HTML de la fin de la colonne
68 * @return string Code HTML
70 function fin_gauche(){return "</div></div><br class='nettoyeur' />";}
73 * Retourne le code HTML du changement de colonne (passer de la gauche à la droite)
74 * @return string Code HTML
76 function creer_colonne_droite(){
77 static $deja_colonne_droite;
78 if ($GLOBALS['spip_ecran']!='large' OR $deja_colonne_droite) return '';
79 $deja_colonne_droite = true;
80 return "\n</div><div id='extra' class='lat' role='complementary'>";
84 * Retourne le code HTML de la colonne droite et du centre de page
85 * @return string Code HTML
87 function debut_droite() {
88 return liste_objets_bloques(_request('exec'))
89 . creer_colonne_droite()
91 . "\n<div id='contenu'>";
94 // http://doc.spip.org/@liste_articles_bloques
95 function liste_objets_bloques($exec,$contexte=array(),$auteur=null){
97 if ($GLOBALS['meta']["articles_modif"] != "non") {
98 include_spip('inc/drapeau_edition');
100 $auteur = $GLOBALS['visiteur_session'];
101 if ($en_cours=trouver_objet_exec($exec)
102 AND $en_cours['edition']
103 AND $type = $en_cours['type']
104 AND ($id = $contexte[$en_cours['id_table_objet']] OR $id = _request($en_cours['id_table_objet']))) {
105 // marquer le fait que l'objet est ouvert en edition par toto
106 // a telle date ; une alerte sera donnee aux autres redacteurs
107 signale_edition ($id, $auteur, $type);
110 $objets_ouverts = liste_drapeau_edition($auteur['id_auteur']);
111 if (count($objets_ouverts)) {
112 $res .= recuperer_fond('prive/objets/liste/objets-en-edition',array(),array('ajax'=>true));
118 // Fin de page de l'interface privee.
119 // Elle comporte une image invisible declenchant une tache de fond
120 // http://doc.spip.org/@fin_page
122 include_spip('inc/pipelines');
123 // avec &var_profile=1 on a le tableau de mesures SQL
124 $debug = ((_request('exec') !== 'valider_xml')
125 AND ((_request('var_mode') == 'debug')
126 OR (isset($GLOBALS['tableau_des_temps']) AND $GLOBALS['tableau_des_temps'])
127 AND isset($_COOKIE['spip_admin'])));
128 $t = '</div><div id="pied"><div class="largeur">'
129 . recuperer_fond('prive/squelettes/inclure/pied')
131 . "</div></div>" // cf. div#page et div.largeur ouvertes dans conmmencer_page()
132 . ($debug?
erreur_squelette():'')
133 . "</body></html>\n";
137 function html_tests_js(){
138 if (_SPIP_AJAX
AND !defined('_TESTER_NOSCRIPT')) {
139 // pour le pied de page (deja defini si on est validation XML)
140 define('_TESTER_NOSCRIPT',
141 "<noscript>\n<div style='display:none;'><img src='"
142 . generer_url_ecrire('test_ajax', 'js=-1')
143 . "' width='1' height='1' alt='' /></div></noscript>\n");
146 (defined('_SESSION_REJOUER') ? _SESSION_REJOUER
: '')
147 . (defined('_TESTER_NOSCRIPT') ? _TESTER_NOSCRIPT
: '');
150 function info_maj_spip(){
152 $maj = $GLOBALS['meta']['info_maj_spip'];
156 $maj = explode('|',$maj);
157 // c'est une ancienne notif, on a fait la maj depuis !
158 if ($GLOBALS['spip_version_branche']!==reset($maj))
161 if (!autoriser('webmestre'))
165 $maj = implode('|',$maj);
170 // http://doc.spip.org/@info_copyright
171 function info_copyright() {
172 global $spip_version_affichee, $spip_lang;
174 $version = $spip_version_affichee;
177 // Mention, le cas echeant, de la revision SVN courante
179 if ($svn_revision = version_svn_courante(_DIR_RACINE
)) {
180 $version .= ' ' . (($svn_revision < 0) ?
'SVN ':'')
181 . "[<a href='http://core.spip.org/trac/spip/changeset/"
182 . abs($svn_revision) . "' onclick=\"window.open(this.href); return false;\">"
183 . abs($svn_revision) . "</a>]";
186 // et la version de l'ecran de securite
187 $secu = defined('_ECRAN_SECURITE')
188 ?
"<br />"._T('ecran_securite',array('version'=>_ECRAN_SECURITE
))
191 return _T('info_copyright',
192 array('spip' => "<b>SPIP $version</b> ",
194 "<a href='". generer_url_ecrire("aide", "aide=licence&var_lang=$spip_lang") . "' onclick=\"window.open(this.href, 'spip_aide', 'scrollbars=yes,resizable=yes,width=740,height=580'); return false;\">" . _T('info_copyright_gpl')."</a>"))
199 // http://doc.spip.org/@formulaire_recherche
200 function formulaire_recherche($page, $complement=""){
201 $recherche = _request('recherche');
202 $recherche_aff = entites_html($recherche);
203 if (!strlen($recherche)) {
204 $recherche_aff = _T('info_rechercher');
205 $onfocus = " onfocus=\"this.value='';\"";
206 } else $onfocus = '';
208 $form = '<input type="text" size="10" value="'.$recherche_aff.'" name="recherche" class="recherche" accesskey="r"' . $onfocus . ' />';
209 $form .= "<input type='image' src='" . chemin_image('rechercher-20.png') . "' name='submit' class='submit' alt='"._T('info_rechercher')."' />";
210 return "<div class='spip_recherche'>".generer_form_ecrire($page, $form . $complement, " method='get'")."</div>";