Mise en route du suivi.
[aidenligne_francais_universite.git] / ecrire / inc / boutons.php
1 <?php
2
3 /***************************************************************************\
4 * SPIP, Systeme de publication pour l'internet *
5 * *
6 * Copyright (c) 2001-2007 *
7 * Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James *
8 * *
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 \***************************************************************************/
12
13
14 define('_LARGEUR_ICONES_BANDEAU',
15 (($GLOBALS['spip_display'] == 3) ? 60 : 80)
16 + (($GLOBALS['spip_ecran'] == 'large') ? 30 : 0)
17 + (($GLOBALS['connect_toutes_rubriques']) ? 0 : 30));
18
19 /**
20 * une classe definissant un bouton dans la barre du haut de l'interface
21 * privee ou dans un de ses sous menus
22 */
23 // http://doc.spip.org/@Bouton
24 class Bouton {
25 var $icone; /* l'icone a mettre dans le bouton */
26 var $libelle; /* le nom de l'entree d'i18n associe */
27 var $url= null; /* l'url de la page (null => ?exec=nom) */
28 var $urlArg= null; /* arguments supplementaires de l'url */
29 var $url2= null; /* url jscript */
30 var $target= null; /* pour ouvrir dans une fenetre a part */
31 var $sousmenu= null;/* sous barre de boutons / onglets */
32
33 // http://doc.spip.org/@Bouton
34 function Bouton($icone, $libelle, $url=null, $urlArg=null,
35 $url2=null, $target=null) {
36 $this->icone = $icone;
37 $this->libelle= $libelle;
38 $this->url = $url;
39 $this->urlArg = $urlArg;
40 $this->url2 = $url2;
41 $this->target = $target;
42 }
43 }
44
45 /**
46 * definir la liste des boutons du haut et de ses sous-menus
47 * On defini les boutons a metrtre selon les droits de l'utilisateur
48 * puis on balance le tout au pipeline "ajouter_boutons" pour que des plugins
49 * puissent y mettre leur grain de sel
50 */
51 // http://doc.spip.org/@definir_barre_boutons
52 function definir_barre_boutons() {
53 global $boutons_admin;
54
55 global $REQUEST_URI, $HTTP_HOST;
56 global $spip_lang, $spip_lang_rtl, $spip_lang_left, $spip_lang_right;
57
58 $boutons_admin=array(
59 'accueil' => new Bouton('asuivre-48.png', 'icone_a_suivre'),
60 'naviguer' => new Bouton("documents-48$spip_lang_rtl.png",
61 'icone_edition_site'),
62 'forum' => new Bouton('messagerie-48.png', 'titre_forum'),
63 'auteurs' => new Bouton('redacteurs-48.png', 'icone_auteurs')
64 );
65
66 if ($GLOBALS['connect_statut'] == "0minirezo"
67 AND $GLOBALS['meta']["activer_statistiques"] != 'non') {
68 $boutons_admin['statistiques_visites']=
69 new Bouton('statistiques-48.png', 'icone_statistiques_visites');
70 }
71
72 if ($GLOBALS['connect_statut'] == '0minirezo') {
73 $boutons_admin['configuration']=
74 new Bouton('administration-48.png', 'icone_configuration_site');
75 }
76
77 $boutons_admin['espacement']=null;
78
79 $urlAide= generer_url_ecrire('aide_index')."&amp;var_lang=$spip_lang";
80 $boutons_admin['aide_index']=
81 new Bouton('aide-48'.$spip_lang_rtl.'.png', 'icone_aide_ligne',
82 $urlAide, null, "javascript:window.open('$urlAide', 'spip_aide', 'scrollbars=yes,resizable=yes,width=740,height=580');", 'aide_spip');
83
84 $boutons_admin['visiter']=
85 new Bouton("visiter-48$spip_lang_rtl.png", 'icone_visiter_site',
86 url_de_base());
87
88 // les sous menu des boutons, que si on est admin
89 if ($GLOBALS['connect_statut'] == '0minirezo'
90 AND $GLOBALS['connect_toutes_rubriques']) {
91
92 // sous menu edition
93
94 $sousmenu=array();
95
96 $nombre_articles = spip_num_rows(spip_query("SELECT art.id_article FROM spip_articles AS art, spip_auteurs_articles AS lien WHERE lien.id_auteur = '".$GLOBALS['connect_id_auteur']."' AND art.id_article = lien.id_article LIMIT 1"));
97 if ($nombre_articles > 0) {
98 $sousmenu['articles_page']=
99 new Bouton('article-24.gif', 'icone_tous_articles');
100 }
101
102 if ($GLOBALS['meta']["activer_breves"] != "non") {
103 $sousmenu['breves']=
104 new Bouton('breve-24.gif', 'icone_breves');
105 }
106
107 if ($GLOBALS['options'] == "avancees"){
108 $articles_mots = $GLOBALS['meta']['articles_mots'];
109 if ($articles_mots != "non") {
110 $sousmenu['mots_tous']=
111 new Bouton('mot-cle-24.gif', 'icone_mots_cles');
112 }
113
114 $activer_sites = $GLOBALS['meta']['activer_sites'];
115 if ($activer_sites<>'non')
116 $sousmenu['sites_tous']=
117 new Bouton('site-24.gif', 'icone_sites_references');
118
119 $n = spip_num_rows(spip_query("SELECT id_document FROM spip_documents_rubriques LIMIT 1"));
120 if ($n) {
121 $sousmenu['documents_liste']=
122 new Bouton('doc-24.gif', 'icone_doc_rubrique');
123 }
124 }
125 $boutons_admin['naviguer']->sousmenu= $sousmenu;
126
127 // sous menu forum
128
129 $sousmenu=array();
130
131 if ($GLOBALS['meta']['forum_prive_admin'] == 'oui')
132 $sousmenu['forum_admin']=
133 new Bouton('forum-admin-24.gif', 'icone_forum_administrateur');
134
135 if (spip_num_rows(spip_query("SELECT id_forum FROM spip_forum LIMIT 1")))
136 $sousmenu['controle_forum']=
137 new Bouton("suivi-forum-24.gif", "icone_suivi_forums");
138 if (spip_num_rows(spip_query("SELECT id_signature FROM spip_signatures LIMIT 1")))
139 $sousmenu['controle_petition']=
140 new Bouton("suivi-petition-24.gif", "icone_suivi_pettions");
141
142 if ($sousmenu)
143 $boutons_admin['forum']->sousmenu= $sousmenu;
144
145
146 // sous menu auteurs
147
148 $sousmenu=array();
149
150 $n = spip_num_rows(spip_query("SELECT id_auteur FROM spip_auteurs WHERE statut='6forum' LIMIT 1"));
151
152 if ($n)
153 $sousmenu['auteurs'] =
154 new Bouton("fiche-perso.png", 'icone_afficher_visiteurs', null, "statut=6forum");
155
156 $sousmenu['auteur_infos']=
157 new Bouton("auteur-24.gif", "icone_creer_nouvel_auteur", null, 'new=oui');
158
159 $boutons_admin['auteurs']->sousmenu= $sousmenu;
160
161 // sous menu statistiques
162 if (isset($boutons_admin['statistiques_visites'])) {
163 $sousmenu=array(
164 'espacement' => null,
165 'statistiques_repartition' =>
166 new Bouton("rubrique-24.gif", "icone_repartition_visites")
167 );
168
169 if ($GLOBALS['meta']['multi_articles'] == 'oui'
170 OR $GLOBALS['meta']['multi_rubriques'] == 'oui')
171 $sousmenu['statistiques_lang']=
172 new Bouton("langues-24.gif", "onglet_repartition_lang");
173
174 $sousmenu['statistiques_referers']=
175 new Bouton("referers-24.gif", "titre_liens_entrants");
176
177 $boutons_admin['statistiques_visites']->sousmenu= $sousmenu;
178 }
179
180 // sous menu configuration
181
182 $sousmenu=array(
183 'config_lang' =>
184 new Bouton("langues-24.gif", "icone_gestion_langues"),
185 'espacement' => null
186 );
187
188 if ($GLOBALS['options'] == "avancees") {
189 $sousmenu['admin_tech']=
190 new Bouton("base-24.gif", "icone_maintenance_site");
191 $sousmenu['admin_vider']=
192 new Bouton("cache-24.gif", "onglet_vider_cache");
193 if ((@file_exists(_DIR_PLUGINS))&&(is_dir(_DIR_PLUGINS)))
194 $sousmenu['admin_plugin']=
195 new Bouton("plugin-24.gif", "icone_admin_plugin");
196 } else {
197 $sousmenu['admin_tech']=
198 new Bouton("base-24.gif", "icone_sauver_site");
199 }
200
201 $boutons_admin['configuration']->sousmenu= $sousmenu;
202
203 } // fin si admin
204
205 $boutons_admin = pipeline('ajouter_boutons', $boutons_admin);
206 }
207
208 /**
209 * definir la liste des onglets dans une page de l'interface privee
210 * on passe la main au pipeline "ajouter_onglets".
211 */
212 // http://doc.spip.org/@definir_barre_onglets
213 function definir_barre_onglets($rubrique) {
214 global $id_auteur, $connect_id_auteur, $connect_statut, $statut_auteur;
215
216 $onglets=array();
217
218 switch($rubrique) {
219 case 'statistiques_repartition':
220 case 'repartition':
221 if ($GLOBALS['meta']['multi_articles'] == 'oui' OR $GLOBALS['meta']['multi_rubriques'] == 'oui') {
222 $onglets['rubriques']=
223 new Bouton('rubrique-24.gif', 'onglet_repartition_rubrique');
224 $onglets['langues']=
225 new Bouton('langues-24.gif', 'onglet_repartition_lang');
226 }
227 break;
228
229 case 'rep_depuis':
230 $onglets['statistiques_lang']=
231 new Bouton(null, 'icone_repartition_actuelle');
232 $onglets['debut']=
233 new Bouton(null, 'onglet_repartition_debut',
234 generer_url_ecrire("statistiques_lang","critere=debut"));
235 break;
236
237 case 'stat_depuis':
238 $onglets['popularite']=
239 new Bouton(null, 'icone_repartition_actuelle',
240 generer_url_ecrire("statistiques_repartition",""));
241 $onglets['debut']=
242 new Bouton(null, 'onglet_repartition_debut',
243 generer_url_ecrire("statistiques_repartition","critere=debut"));
244 break;
245
246 case 'stat_referers':
247 $onglets['jour']=
248 new Bouton(null, 'date_aujourdhui',
249 generer_url_ecrire("statistiques_referers",""));
250 $onglets['veille']=
251 new Bouton(null, 'date_hier',
252 generer_url_ecrire("statistiques_referers","jour=veille"));
253 break;
254
255 case 'administration':
256 $onglets['sauver']=
257 new Bouton('base-24.gif', 'onglet_save_restaur_base',
258 generer_url_ecrire("admin_tech",""));
259 $onglets['effacer']=
260 new Bouton('supprimer.gif', 'onglet_affacer_base',
261 generer_url_ecrire("admin_effacer",""));
262 break;
263
264 case 'auteur':
265 $onglets['auteur']=
266 new Bouton('auteur-24.gif', 'onglet_auteur',
267 generer_url_ecrire("auteur_infos","id_auteur=$id_auteur"));
268 $onglets['infos']=
269 new Bouton('fiche-perso-24.gif', 'icone_informations_personnelles',
270 generer_url_ecrire("auteur_infos","id_auteur=$id_auteur"));
271 break;
272
273 case 'configuration':
274 $onglets['contenu']=
275 new Bouton('racine-site-24.gif', 'onglet_contenu_site',
276 generer_url_ecrire("configuration"));
277 $onglets['interactivite']=
278 new Bouton('forum-interne-24.gif', 'onglet_interactivite',
279 generer_url_ecrire("config_contenu"));
280 $onglets['fonctions']=
281 new Bouton('image-24.gif', 'onglet_fonctions_avances',
282 generer_url_ecrire("config_fonctions"));
283 break;
284
285 case 'config_lang':
286 $onglets['langues']=
287 new Bouton('langues-24.gif', 'info_langue_principale',
288 generer_url_ecrire("config_lang"));
289 $onglets['multi']=
290 new Bouton('traductions-24.gif', 'info_multilinguisme',
291 generer_url_ecrire("config_multilang"));
292 $onglets['fichiers']=
293 new Bouton('traductions-24.gif', 'module_fichiers_langues',
294 generer_url_ecrire("lang_raccourcis"));
295 break;
296
297 // inutilise
298 case 'suivi_forum':
299 break;
300
301 }
302
303 $onglets = pipeline('ajouter_onglets', array('data'=>$onglets,'args'=>$rubrique));
304
305 return $onglets;
306 }
307
308 // http://doc.spip.org/@barre_onglets
309 function barre_onglets($rubrique, $ongletCourant){
310 $onglets= definir_barre_onglets($rubrique);
311 if(count($onglets)==0) return '';
312
313 $res = debut_onglet();
314
315 foreach($onglets as $exec => $onglet) {
316 $url= $onglet->url ? $onglet->url : generer_url_ecrire($exec);
317 $res .= onglet(_T($onglet->libelle), $url, $exec, $ongletCourant, $onglet->icone);
318 }
319 $res .= fin_onglet();
320 return $res;
321 }
322
323 // http://doc.spip.org/@definir_barre_gadgets
324 function definir_barre_gadgets() {
325 global $barre_gadgets;
326 $barre_gadgets= array(
327 // ?????????
328 );
329 }
330
331
332 // http://doc.spip.org/@bandeau_principal
333 function bandeau_principal($rubrique, $sous_rubrique, $largeur)
334 {
335 $res = '';
336 foreach($GLOBALS['boutons_admin'] as $page => $detail) {
337 if ($page=='espacement') {
338 $res .= "<td> &nbsp; </td>";
339 } else {
340 if ($detail->url)
341 $lien_noscript = $detail->url;
342 else
343 $lien_noscript = generer_url_ecrire($page);
344
345 if ($detail->url2)
346 $lien = $detail->url2;
347 else
348 $lien = $lien_noscript;
349
350 $res .= icone_bandeau_principal(
351 _T($detail->libelle),
352 $lien,
353 $detail->icone,
354 $page,
355 $rubrique,
356 $lien_noscript,
357 $page,
358 $sous_rubrique);
359 }
360 }
361
362 return "<div class='bandeau-icones'>\n<table width='$largeur' cellpadding='0' cellspacing='0' border='0'><tr>\n$res</tr></table></div>\n";
363 }
364
365 // http://doc.spip.org/@icone_bandeau_principal
366 function icone_bandeau_principal($texte, $lien, $fond, $rubrique_icone = "vide", $rubrique = "", $lien_noscript = "", $sous_rubrique_icone = "", $sous_rubrique = ""){
367 global $spip_display, $menu_accesskey, $compteur_survol;
368
369 $alt = '';
370 $title = '';
371 if ($spip_display == 1){
372 }
373 else if ($spip_display == 3){
374 $title = "title=\"$texte\"";
375 $alt = $texte;
376 }
377
378 if (!$menu_accesskey = intval($menu_accesskey)) $menu_accesskey = 1;
379 if ($menu_accesskey < 10) {
380 $accesskey = " accesskey='$menu_accesskey'";
381 $menu_accesskey++;
382 }
383 else if ($menu_accesskey == 10) {
384 $accesskey = " accesskey='0'";
385 $menu_accesskey++;
386 }
387
388 $class_select = ($sous_rubrique_icone == $sous_rubrique) ? " class='selection'" : '';
389
390 if (eregi("^javascript:",$lien)) {
391 $a_href = "\nonclick=\"$lien; return false;\" href='$lien_noscript' ";
392 }
393 else {
394 $a_href = "\nhref=\"$lien\"";
395 }
396
397 $compteur_survol ++;
398
399 if ($spip_display != 1 AND $spip_display != 4) {
400 $class ='cellule48';
401 $texte = http_img_pack($fond, $alt, "$title width='48' height='48'")
402 . ($spip_display == 3 ? '' : "<span>$texte</span>");
403 } else {
404 $class = 'cellule-texte';
405 }
406
407 return "<td style='width: "
408 . _LARGEUR_ICONES_BANDEAU
409 . "px' class='$class' onmouseover=\"changestyle('bandeau$rubrique_icone');\"><a$accesskey$a_href$class_select>"
410 . $texte
411 . "</a></td>\n";
412 }
413
414 // http://doc.spip.org/@bandeau_principal2
415 function bandeau_principal2($rubrique, $sous_rubrique, $largeur) {
416 global $spip_lang_left;
417
418 $res = '';
419 $decal=0;
420 $coeff_decalage = 0;
421 if ($GLOBALS['browser_name']=="MSIE") $coeff_decalage = 1.0;
422 $largeur_maxi_menu = $largeur-100;
423 $largitem_moy = 85;
424
425 foreach($GLOBALS['boutons_admin'] as $page => $detail) {
426 if (($rubrique == $page) AND (!_SPIP_AJAX)) {
427 $class = "visible_au_chargement";
428 } else {
429 $class = "invisible_au_chargement";
430 }
431
432 $sousmenu= $detail->sousmenu;
433 if($sousmenu) {
434 $offset = (int)round($decal-$coeff_decalage*max(0,($decal+count($sousmenu)*$largitem_moy-$largeur_maxi_menu)));
435 if ($offset<0){ $offset = 0; }
436
437 $res .= "<div class='$class bandeau' id='bandeau$page' style='position: absolute; $spip_lang_left: ".$offset."px;'><div class='bandeau_sec'><table class='gauche'><tr>\n";
438 $width=0;
439 foreach($sousmenu as $souspage => $sousdetail) {
440 if ($width+1.25*$largitem_moy>$largeur_maxi_menu){$res .= "</tr><tr>\n";$width=0;}
441 if($souspage=='espacement') {
442 if ($width>0){
443 $res .= "<td class='separateur'></td>\n";
444 $largitem = 0;
445 }
446 } else {
447 list($html,$largitem) = icone_bandeau_secondaire (_T($sousdetail->libelle), generer_url_ecrire($sousdetail->url?$sousdetail->url:$souspage, $sousdetail->urlArg), $sousdetail->icone, $souspage, $sous_rubrique);
448 $res .= $html;
449 }
450 $width+=$largitem+10;
451 }
452 $res .= "</tr></table></div></div>";
453 }
454
455 $decal += _LARGEUR_ICONES_BANDEAU;
456 }
457 return $res;
458 }
459
460 // http://doc.spip.org/@bandeau_double_rangee
461 function bandeau_double_rangee($rubrique, $sous_rubrique, $largeur)
462 {
463 global $spip_lang_left;
464 definir_barre_boutons();
465
466 return "<div class='invisible_au_chargement' style='position: absolute; height: 0px; visibility: hidden;'><a href='oo'>"._T("access_mode_texte")."</a></div>"
467 . "<div id='haut-page'>"
468 . "<div id='bandeau-principal' align='center'>\n"
469 . bandeau_principal($rubrique, $sous_rubrique, $largeur)
470 . "<table width='$largeur' cellpadding='0' cellspacing='0'><tr><td>"
471 . "<div style='text-align: $spip_lang_left; width: ".$largeur."px; position: relative; z-index: 2000;'>"
472 . bandeau_principal2($rubrique, $sous_rubrique, $largeur)
473 . "</div>"
474 . "</td></tr></table>"
475 . "</div>\n";
476 }
477
478
479 // http://doc.spip.org/@icone_bandeau_secondaire
480 function icone_bandeau_secondaire($texte, $lien, $fond, $rubrique_icone = "vide", $rubrique, $aide=""){
481 global $spip_display;
482 global $menu_accesskey, $compteur_survol;
483
484 $alt = '';
485 $title = '';
486 $accesskey = '';
487 if ($spip_display == 1) {
488 //$hauteur = 20;
489 $largeur = 80;
490 }
491 else if ($spip_display == 3){
492 //$hauteur = 26;
493 $largeur = 40;
494 $title = "title=\"$texte\"";
495 $alt = $texte;
496 }
497 else {
498 //$hauteur = 68;
499 if (count(explode(" ", $texte)) > 1) $largeur = 80;
500 else $largeur = 70;
501 $alt = "";
502 }
503 if ($aide AND $spip_display != 3) {
504 $largeur += 50;
505 //$texte .= aide($aide);
506 }
507 if ($spip_display != 3 AND strlen($texte)>16) $largeur += 20;
508
509 if (!$menu_accesskey = intval($menu_accesskey)) $menu_accesskey = 1;
510 if ($menu_accesskey < 10) {
511 $accesskey = " accesskey='$menu_accesskey'";
512 $menu_accesskey++;
513 }
514 else if ($menu_accesskey == 10) {
515 $accesskey = " accesskey='0'";
516 $menu_accesskey++;
517 }
518 if ($spip_display == 3) $accesskey_icone = $accesskey;
519
520 $class_select = ($rubrique_icone != $rubrique) ? '' : " class='selection'";
521 $compteur_survol ++;
522
523 $a_href = "<a$accesskey href=\"$lien\"$class_select>";
524
525 if ($spip_display != 1) {
526 $res = "<td class='cellule36' style='width: ".$largeur."px;'>";
527 $res .= $a_href .
528 http_img_pack("$fond", $alt, "$title");
529 if ($aide AND $spip_display != 3) $res .= aide($aide)." ";
530 if ($spip_display != 3) {
531 $res .= "<span>$texte</span>";
532 }
533 $res .= "</a></td>\n";
534 }
535 else $res = "<td style='width: $largeur" . "px' class='cellule-texte'>$a_href". $texte . "</a></td>\n";
536
537 return array($res, $largeur);
538 }
539
540
541 ?>