source: spip-zone/_plugins_/_dev_/acces_groupes/inc/tmp_presentation.php @ 5862

Last change on this file since 5862 was 5862, checked in by cy_altern@…, 15 years ago

début du filtrage complet de l'espace privé par surcharge des requêtes SQL : plus de rubriques restreintes *presque partout*, reste les articles, les sites et les forums...

File size: 95.0 KB
Line 
1<?php
2
3/***************************************************************************\
4 *  SPIP, Systeme de publication pour l'internet                           *
5 *                                                                         *
6 *  Copyright (c) 2001-2006                                                *
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
13if (!defined("_ECRIRE_INC_VERSION")) return;
14
15include_spip('inc/agenda'); // inclut inc/layer, inc/texte, inc/filtre
16include_spip('inc/boutons');
17include_spip('inc/actions');
18
19// Choix dynamique de la couleur
20
21// http://doc.spip.org/@choix_couleur
22function choix_couleur() {
23        global $couleurs_spip;
24        if ($couleurs_spip) {
25                foreach ($couleurs_spip as $key => $val) {
26                        echo "<a href=\"".parametre_url(self(), 'set_couleur', $key)."\">" .
27                                http_img_pack("rien.gif", " ", "width='8' height='8' style='margin: 1px; background-color: ".$val['couleur_claire'].";' onmouseover=\"changestyle('bandeauinterface','visibility', 'visible');\""). "</a>";
28                }
29        }
30}
31
32//
33// affiche un bouton imessage
34//
35// http://doc.spip.org/@bouton_imessage
36function bouton_imessage($destinataire, $row = '') {
37        // si on passe "force" au lieu de $row, on affiche l'icone sans verification
38        global $connect_id_auteur;
39        global $spip_lang_rtl;
40
41        // verifier que ce n'est pas un auto-message
42        if ($destinataire == $connect_id_auteur)
43                return;
44        // verifier que le destinataire a un login
45        if ($row != "force") {
46                $login_req = spip_query("SELECT login, messagerie FROM spip_auteurs where id_auteur=$destinataire AND en_ligne>DATE_SUB(NOW(),INTERVAL 15 DAY)");
47                $row = spip_fetch_array($login_req);
48
49                if (($row['login'] == "") OR ($row['messagerie'] == "non")) {
50                        return;
51                }
52        }
53
54        if ($destinataire) $title = _T('info_envoyer_message_prive');
55        else $title = _T('info_ecire_message_prive');
56
57        $texte_bouton = http_img_pack("m_envoi$spip_lang_rtl.gif", "m&gt;", "width='14' height='7'", $title);
58               
59        return "<a href='". generer_url_ecrire("message_edit","new=oui&dest=$destinataire&type=normal"). "' title=\"$title\">$texte_bouton</a>";
60}
61
62// Faux HR, avec controle de couleur
63
64// http://doc.spip.org/@hr
65function hr($color, $retour = false) {
66        $ret = "<div style='height: 1px; margin-top: 5px; padding-top: 5px; border-top: 1px solid $color;'></div>";
67       
68        if ($retour) return $ret;
69        else echo $ret;
70}
71
72
73//
74// Cadres
75//
76
77// http://doc.spip.org/@debut_cadre
78function debut_cadre($style, $icone = "", $fonction = "", $titre = "") {
79        global $spip_display, $spip_lang_left;
80        static $accesskey = 97; // a
81
82        if ($spip_display != 1 AND $spip_display != 4 AND strlen($icone) > 1) {
83                $style_gauche = " padding-$spip_lang_left: 38px;";
84                $style_cadre = " style='margin-top: 14px;'";
85        } else $style_cadre = $style_gauche = '';
86       
87        // accesskey pour accessibilite espace prive
88        if ($accesskey <= 122) // z
89        {
90                $accesskey_c = chr($accesskey++);
91                $ret = "<a name='access-$accesskey_c' href='#access-$accesskey_c' accesskey='$accesskey_c'></a>";
92        } else $ret ='';
93
94        if ($style == "e") {
95                $ret .= "<div class='cadre-e-noir'$style_cadre><div class='cadre-$style'>";
96        }
97        else {
98                $ret .= "<div class='cadre-$style'$style_cadre>";
99        }
100
101        $ret .= "<div style='position: relative;'>";
102
103        if ($spip_display != 1 AND $spip_display != 4 AND strlen($icone) > 1) {
104                $ret .= "<div style='position: absolute; top: -16px; $spip_lang_left: 10px;'>";
105                if ($fonction) {
106                        $ret .= "<div " . http_style_background($icone, "no-repeat; padding: 0px; margin: 0px") . ">";
107                        $ret .= http_img_pack($fonction, "", "");
108                        $ret .= "</div>";
109                }
110                else $ret .=  http_img_pack("$icone", "", "");
111                $ret .= "</div>";
112
113                $style_cadre = " style='position: relative; top: 15px; margin-bottom: 14px;'";
114        }
115
116
117        if (strlen($titre) > 0) {
118                if ($spip_display == 4) {
119                        $ret .= "<h3 class='cadre-titre'>$titre</h3>";
120                } else {
121                        $ret .= "<div class='cadre-titre' style='margin: 0px;$style_gauche'>$titre</div>";
122                }
123        }
124       
125       
126        $ret .= "</div>";
127       
128        $ret .= "<div class='cadre-padding' style='overflow:hidden;'>";
129
130
131        return $ret;
132}
133
134// http://doc.spip.org/@fin_cadre
135function fin_cadre($style) {
136
137        $ret = "</div>";
138        $ret .= "</div>";
139        if ($style == "e") $ret .= "</div>";
140        if ($style != "forum" AND $style != "thread-forum") $ret .= "<div style='height: 5px;'></div>";
141
142        return $ret;
143}
144
145
146// http://doc.spip.org/@debut_cadre_relief
147function debut_cadre_relief($icone='', $return = false, $fonction='', $titre = ''){
148        $retour_aff = debut_cadre('r', $icone, $fonction, $titre);
149
150        if ($return) return $retour_aff;
151        else echo $retour_aff;
152}
153
154// http://doc.spip.org/@fin_cadre_relief
155function fin_cadre_relief($return = false){
156        $retour_aff = fin_cadre('r');
157
158        if ($return) return $retour_aff;
159        else echo $retour_aff;
160}
161
162
163// http://doc.spip.org/@debut_cadre_enfonce
164function debut_cadre_enfonce($icone='', $return = false, $fonction='', $titre = ''){
165        $retour_aff = debut_cadre('e', $icone, $fonction, $titre);
166
167        if ($return) return $retour_aff;
168        else echo $retour_aff;
169}
170
171// http://doc.spip.org/@fin_cadre_enfonce
172function fin_cadre_enfonce($return = false){
173
174        $retour_aff = fin_cadre('e');
175
176        if ($return) return $retour_aff;
177        else echo $retour_aff;
178}
179
180
181// http://doc.spip.org/@debut_cadre_sous_rub
182function debut_cadre_sous_rub($icone='', $return = false, $fonction='', $titre = ''){
183        $retour_aff = debut_cadre('sous_rub', $icone, $fonction, $titre);
184        if ($return) return $retour_aff;
185        else echo $retour_aff;
186}
187
188// http://doc.spip.org/@fin_cadre_sous_rub
189function fin_cadre_sous_rub($return = false){
190        $retour_aff = fin_cadre('sous_rub');
191        if ($return) return $retour_aff;
192        else echo $retour_aff;
193}
194
195
196
197// http://doc.spip.org/@debut_cadre_forum
198function debut_cadre_forum($icone='', $return = false, $fonction='', $titre = ''){
199        $retour_aff = debut_cadre('forum', $icone, $fonction, $titre);
200
201        if ($return) return $retour_aff;
202        else echo $retour_aff;
203}
204
205// http://doc.spip.org/@fin_cadre_forum
206function fin_cadre_forum($return = false){
207        $retour_aff = fin_cadre('forum');
208
209        if ($return) return $retour_aff;
210        else echo $retour_aff;
211}
212
213// http://doc.spip.org/@debut_cadre_thread_forum
214function debut_cadre_thread_forum($icone='', $return = false, $fonction='', $titre = ''){
215        $retour_aff = debut_cadre('thread-forum', $icone, $fonction, $titre);
216
217        if ($return) return $retour_aff;
218        else echo $retour_aff;
219}
220
221// http://doc.spip.org/@fin_cadre_thread_forum
222function fin_cadre_thread_forum($return = false){
223        $retour_aff = fin_cadre('thread-forum');
224
225        if ($return) return $retour_aff;
226        else echo $retour_aff;
227}
228
229// http://doc.spip.org/@debut_cadre_gris_clair
230function debut_cadre_gris_clair($icone='', $return = false, $fonction='', $titre = ''){
231        $retour_aff = debut_cadre('gris-clair', $icone, $fonction, $titre);
232
233        if ($return) return $retour_aff;
234        else echo $retour_aff;
235}
236
237// http://doc.spip.org/@fin_cadre_gris_clair
238function fin_cadre_gris_clair($return = false){
239        $retour_aff = fin_cadre('gris-clair');
240
241        if ($return) return $retour_aff;
242        else echo $retour_aff;
243}
244
245
246// http://doc.spip.org/@debut_cadre_couleur
247function debut_cadre_couleur($icone='', $return = false, $fonction='', $titre=''){
248        $retour_aff = debut_cadre('couleur', $icone, $fonction, $titre);
249
250        if ($return) return $retour_aff;
251        else echo $retour_aff;
252}
253
254// http://doc.spip.org/@fin_cadre_couleur
255function fin_cadre_couleur($return = false){
256        $retour_aff = fin_cadre('couleur');
257
258        if ($return) return $retour_aff;
259        else echo $retour_aff;
260}
261
262
263// http://doc.spip.org/@debut_cadre_couleur_foncee
264function debut_cadre_couleur_foncee($icone='', $return = false, $fonction='', $titre=''){
265        $retour_aff = debut_cadre('couleur-foncee', $icone, $fonction, $titre);
266
267        if ($return) return $retour_aff;
268        else echo $retour_aff;
269}
270
271// http://doc.spip.org/@fin_cadre_couleur_foncee
272function fin_cadre_couleur_foncee($return = false){
273        $retour_aff = fin_cadre('couleur-foncee');
274
275        if ($return) return $retour_aff;
276        else echo $retour_aff;
277}
278
279// http://doc.spip.org/@debut_cadre_trait_couleur
280function debut_cadre_trait_couleur($icone='', $return = false, $fonction='', $titre=''){
281        $retour_aff = debut_cadre('trait-couleur', $icone, $fonction, $titre);
282
283        if ($return) return $retour_aff;
284        else echo $retour_aff;
285}
286
287// http://doc.spip.org/@fin_cadre_trait_couleur
288function fin_cadre_trait_couleur($return = false){
289        $retour_aff = fin_cadre('trait-couleur');
290
291        if ($return) return $retour_aff;
292        else echo $retour_aff;
293}
294
295
296
297//
298// une boite alerte
299//
300// http://doc.spip.org/@debut_boite_alerte
301function debut_boite_alerte() {
302        echo "<p><table cellpadding='6' border='0'><tr><td width='100%' bgcolor='red'>";
303        echo "<table width='100%' cellpadding='12' border='0'><tr><td width='100%' bgcolor='white'>";
304}
305
306// http://doc.spip.org/@fin_boite_alerte
307function fin_boite_alerte() {
308        echo "</td></tr></table>";
309        echo "</td></tr></table>";
310}
311
312
313//
314// une boite info
315//
316// http://doc.spip.org/@debut_boite_info
317function debut_boite_info($return=false) {
318        $r ="<div class='cadre-info verdana1'>";
319        if ($return) return $r; else echo $r;
320}
321
322// http://doc.spip.org/@fin_boite_info
323function fin_boite_info($return=false) {
324        //echo "</font></td></tr></table></div>\n\n";
325        $r = "</div>";
326        if ($return) return $r; else echo $r;
327}
328
329//
330// une autre boite
331//
332// http://doc.spip.org/@bandeau_titre_boite
333function bandeau_titre_boite($titre, $afficher_auteurs, $boite_importante = true) {
334        global $couleur_foncee;
335        if ($boite_importante) {
336                $couleur_fond = $couleur_foncee;
337                $couleur_texte = '#FFFFFF';
338        }
339        else {
340                $couleur_fond = '#EEEECC';
341                $couleur_texte = '#000000';
342        }
343        echo "<tr bgcolor='$couleur_fond'><td width=\"100%\"><FONT FACE='Verdana,Arial,Sans,sans-serif' SIZE=3 COLOR='$couleur_texte'>";
344        echo "<B>$titre</B></FONT></TD>";
345        if ($afficher_auteurs){
346                echo "<TD WIDTH='100'>";
347                echo http_img_pack("rien.gif", " ", "width='100' height='12'");
348                echo "</TD>";
349        }
350        echo "<TD WIDTH='90'>";
351        echo http_img_pack("rien.gif", " ", "width='90' height='12'");
352        echo "</TD>";
353        echo "</TR>";
354}
355//
356// une autre boite
357//
358// http://doc.spip.org/@bandeau_titre_boite2
359function bandeau_titre_boite2($titre, $logo="", $fond="white", $texte="black", $echo = true) {
360        global $spip_lang_left, $spip_display;
361       
362        $retour = '';
363
364        if (strlen($logo) > 0 AND $spip_display != 1 AND $spip_display != 4) {
365                $retour .= "<div style='position: relative;'>";
366                $retour .= "<div style='position: absolute; top: -12px; $spip_lang_left: 3px;'>" .
367                  http_img_pack("$logo", "", "") . "</div>";
368                $retour .= "<div style='background-color: $fond; color: $texte; padding: 3px; padding-$spip_lang_left: 30px; border-bottom: 1px solid #444444;' class='verdana2'><b>$titre</b></div>";
369       
370                $retour .= "</div>";
371        } else {
372                $retour .= "<h3 style='background-color: $fond; color: $texte; padding: 3px; border-bottom: 1px solid #444444; margin: 0px;' class='verdana2'><b>$titre</b></h3>";
373        }
374
375        if ($echo) echo $retour;
376        return $retour;
377}
378
379
380//
381// La boite raccourcis
382//
383
384// http://doc.spip.org/@debut_raccourcis
385function debut_raccourcis() {
386        global $spip_display;
387        echo "<div>&nbsp;</div>";
388        creer_colonne_droite();
389
390        debut_cadre_enfonce();
391        if ($spip_display != 4) {
392                echo "<font face='Verdana,Arial,Sans,sans-serif' size=1>";
393                echo "<b>"._T('titre_cadre_raccourcis')."</b><p />";
394        } else {
395                echo "<h3>"._T('titre_cadre_raccourcis')."</h3>";
396                echo "<ul>";
397        }
398}
399
400// http://doc.spip.org/@fin_raccourcis
401function fin_raccourcis() {
402        global $spip_display;
403       
404        if ($spip_display != 4) echo "</font>";
405        else echo "</ul>";
406       
407        fin_cadre_enfonce();
408}
409
410
411// Afficher un petit "+" pour lien vers autre page
412
413// http://doc.spip.org/@afficher_plus
414function afficher_plus($lien) {
415        global $options, $spip_lang_right, $spip_display, $browser_name;
416       
417        if ($options == "avancees" AND $spip_display != 4) {
418                if ($browser_name == "MSIE") 
419                        return "<a href='$lien'>" .
420                          http_img_pack("plus.gif", "+", ""). "</a> ";
421                else
422                        return "<div style='float:$spip_lang_right; padding-top: 2px;'><a href='$lien'>" .
423                          http_img_pack("plus.gif", "+", "") ."</a></div>";
424        }
425}
426
427
428
429//
430// Fonctions d'affichage
431//
432
433// http://doc.spip.org/@afficher_liste
434function afficher_liste($largeurs, $table, $styles = '') {
435        global $browser_name, $spip_display, $spip_lang_left;
436
437        if (!is_array($table)) return "";
438        reset($table);
439        if ($spip_display != 4) {
440                $res = '';
441                while (list(, $t) = each($table)) {
442                        $res .= "\n<tr class='tr_liste'" .
443                          (eregi("msie", $browser_name) ? " onmouseover=\"changeclass(this,'tr_liste_over');\" onmouseout=\"changeclass(this,'tr_liste');\"" :'') .
444                          ">";
445                        reset($largeurs);
446                        if ($styles) reset($styles);
447                        while (list(, $texte) = each($t)) {
448                                $style = $largeur = "";
449                                list(, $largeur) = each($largeurs);
450                                if ($styles) list(, $style) = each($styles);
451                                if (!trim($texte)) $texte .= "&nbsp;";
452                                $res .= "\n<td" .
453                                  ($largeur ? " width=\"$largeur\"" : '') .
454                                  ($style ? " class=\"$style\"" : '') .
455                                  ">$texte\n</td>";
456                        }
457                        $res .= "\n</tr>";
458                }
459        } else {
460                $res = "\n<ul style='text-align: $spip_lang_left; background-color: white;'>";
461                while (list(, $t) = each($table)) {
462                        $res .= "<li>";
463                        reset($largeurs);
464                        if ($styles) reset($styles);
465                        while (list(, $texte) = each($t)) {
466                                $style = $largeur = "";
467                                list(, $largeur) = each($largeurs);
468                               
469                                if (!$largeur) {
470                                        $res .= $texte." ";
471                                }
472                        }
473                        $res .= "</li>\n";
474                }
475                $res .= "\n</ul>";
476        }
477        return $res;
478}
479
480// http://doc.spip.org/@afficher_tranches_requete
481function afficher_tranches_requete($num_rows, $colspan, $tmp_var, $url='', $nb_aff = 10) {
482        static $ancre = 0;
483        global $spip_lang_right, $spip_display;
484
485        $deb_aff = intval(_request($tmp_var));
486        $ancre++;
487        $self = self();
488
489        $texte = ($spip_display == 4) ? '' :  "\n<tr style='background-color: #dddddd;'><td class=\"arial1\" style='border-bottom: 1px solid #444444;' colspan=\"".($colspan - 1)."\">";
490        $texte .= "\n<a name='a$ancre'></a>";
491        $on ='';
492
493        for ($i = 0; $i < $num_rows; $i += $nb_aff){
494                $deb = $i + 1;
495                $fin = $i + $nb_aff;
496                if ($fin > $num_rows) $fin = $num_rows;
497                if ($deb > 1) $texte .= " |\n";
498                if ($deb_aff + 1 >= $deb AND $deb_aff + 1 <= $fin) {
499                        $texte .= "<B>$deb</B>";
500                }
501                else {
502                        $script = parametre_url($self, $tmp_var, $deb-1);
503                        if ($url) {
504                                $on = "\nonClick=\"return charger_id_url('"
505                                . $url
506                                . "&"
507                                . $tmp_var
508                                . '='
509                                . $deb
510                                . "','"
511                                . $tmp_var
512                                . '\');"';
513                        }
514                        $texte .= "<a href=\"$script#a$ancre\"$on>$deb</a>";
515                }
516        }
517       
518        if ($spip_display != 4) {
519                        $texte .= "</td>\n<td class=\"arial2\" style='border-bottom: 1px solid #444444; text-align: $spip_lang_right;' colspan=\"1\" align=\"right\" valign=\"top\">";
520        } else {
521                        $texte .= " |\n";
522        }
523               
524        if ($deb_aff == -1) {
525                        //$texte .= "<B>"._T('info_tout_afficher')."</B>";
526        } else {
527                        $script = parametre_url($self, $tmp_var, -1);
528                        if ($url) {
529                                $on = "\nonClick=\"return charger_id_url('"
530                                . $url
531                                . "&"
532                                . $tmp_var
533                                . "=-1','"
534                                . $tmp_var
535                                . '\');"';
536                        }
537                        $texte .= "<a href=\"$script#a$ancre\"$on><img src='". _DIR_IMG_PACK . "plus.gif' title='"._T('lien_tout_afficher')."' /></a>";
538        }
539
540        if ($spip_display != 4) $texte .= "</td></tr>\n";
541
542        return $texte;
543}
544
545
546// http://doc.spip.org/@affiche_tranche_bandeau
547function affiche_tranche_bandeau($requete, $icone, $col, $fg, $bg, $tmp_var$titre, $force, $largeurs, $styles, $skel, $own='')
548{
549        global $spip_display ;
550
551        $voir_logo = ($spip_display != 1 AND $spip_display != 4 AND $GLOBALS['meta']['image_process'] != "non");
552
553        if (!isset($requete['GROUP BY'])) $requete['GROUP BY'] = '';
554
555        $cpt = spip_fetch_array(spip_query("SELECT COUNT(*) AS n FROM " . $requete['FROM'] . ($requete['WHERE'] ? (' WHERE ' . $requete['WHERE']) : '') . ($requete['GROUP BY'] ? (' GROUP BY ' . $requete['GROUP BY']) : '')));
556        if (! ($force OR ($cpt = $cpt['n']))) return  array();
557
558        if ($titre) echo "<div style='height: 12px;'></div>";
559        echo "<div class='liste'>";
560        echo bandeau_titre_boite2($titre, $icone, $fg, $bg, false);
561        echo "<table width='100%' cellpadding='2' cellspacing='0' border='0'>";
562        if (isset($requete['LIMIT'])) $cpt = min($requete['LIMIT'], $cpt);
563
564        $deb_aff = intval(_request($tmp_var));
565        $nb_aff = floor(1.5 * _TRANCHES);
566        $tranches = '';
567        if ($cpt > $nb_aff) {
568                $nb_aff = (_TRANCHES);
569                echo afficher_tranches_requete($cpt, $col, $tmp_var, '', $nb_aff);
570        }
571
572        $result = spip_query("SELECT " . (isset($requete["SELECT"]) ? $requete["SELECT"] : "*") . " FROM " . $requete['FROM'] . ($requete['WHERE'] ? (' WHERE ' . $requete['WHERE']) : '') . ($requete['GROUP BY'] ? (' GROUP BY ' . $requete['GROUP BY']) : '') . ($requete['ORDER BY'] ? (' ORDER BY ' . $requete['ORDER BY']) : '') . " LIMIT " . ($deb_aff >= 0 ? "$deb_aff, $nb_aff" : ($requete['LIMIT'] ? $requete['LIMIT'] : "99999")));
573
574        $table = array();
575        $tous_id = array();
576        while ($row = spip_fetch_array($result)) {
577                $table[]= $skel($row, $tous_id, $voir_logo, $own);
578        }
579        spip_free_result($result);
580               
581        echo afficher_liste($largeurs, $table, $styles);
582        echo "</table>";
583        echo "</div>\n";
584        return $tous_id;
585}
586
587
588// http://doc.spip.org/@afficher_liste_debut_tableau
589function afficher_liste_debut_tableau() {
590        global $spip_display;
591
592        if ($spip_display != 4) return "<table width='100%' cellpadding='2' cellspacing='0' border='0'>";
593}
594
595// http://doc.spip.org/@afficher_liste_fin_tableau
596function afficher_liste_fin_tableau() {
597        global $spip_display;
598        if ($spip_display != 4) return "</table>";
599}
600
601
602// http://doc.spip.org/@puce_statut_article
603function puce_statut_article($id, $statut, $id_rubrique) {
604        global $spip_lang_left, $dir_lang, $connect_statut, $options;
605       
606        switch ($statut) {
607        case 'publie':
608                $clip = 2;
609                $puce = 'verte';
610                $title = _T('info_article_publie');
611                break;
612        case 'prepa':
613                $clip = 0;
614                $puce = 'blanche';
615                $title = _T('info_article_redaction');
616                break;
617        case 'prop':
618                $clip = 1;
619                $puce = 'orange';
620                $title = _T('info_article_propose');
621                break;
622        case 'refuse':
623                $clip = 3;
624                $puce = 'rouge';
625                $title = _T('info_article_refuse');
626                break;
627        case 'poubelle':
628                $clip = 4;
629                $puce = 'poubelle';
630                $title = _T('info_article_supprime');
631                break;
632        }
633        $puce = "puce-$puce.gif";
634       
635        if ($connect_statut == '0minirezo' AND $options == 'avancees' AND acces_rubrique($id_rubrique)) {
636          // les versions de MSIE ne font pas toutes pareil sur alt/title
637          // la combinaison suivante semble ok pour tout le monde.
638          $titles = array(
639                          "blanche" => _T('texte_statut_en_cours_redaction'),
640                          "orange" => _T('texte_statut_propose_evaluation'),
641                          "verte" => _T('texte_statut_publie'),
642                          "rouge" => _T('texte_statut_refuse'),
643                          "poubelle" => _T('texte_statut_poubelle'));
644          $action = "onmouseover=\"montrer('statutdecalarticle$id');\"";
645          $inser_puce = "\n<div class='puce_article' id='statut$id'$dir_lang>"
646                        . "\n<div class='puce_article_fixe' $action>" .
647                  http_img_pack("$puce", "", "id='imgstatutarticle$id' style='margin: 1px;'") ."</div>"
648                        . "\n<div class='puce_article_popup' id='statutdecalarticle$id' onmouseout=\"cacher('statutdecalarticle$id');\" style=' margin-left: -".((11*$clip)+1)."px;'>\n"
649                        . afficher_script_statut($id, 'article', -1, 'puce-blanche.gif', 'prepa', $titles['blanche'], $action)
650                        . afficher_script_statut($id, 'article', -12, 'puce-orange.gif', 'prop', $titles['orange'], $action)
651                        . afficher_script_statut($id, 'article', -23, 'puce-verte.gif', 'publie', $titles['verte'], $action)
652                        . afficher_script_statut($id, 'article', -34, 'puce-rouge.gif', 'refuse', $titles['rouge'], $action)
653                        . afficher_script_statut($id, 'article', -45, 'puce-poubelle.gif', 'poubelle', $titles['poubelle'], $action)
654                . "</div></div>";
655        } else {
656                $inser_puce = http_img_pack("$puce", "", "id='imgstatutarticle$id' style='margin: 1px;'");
657        }
658        return $inser_puce;
659}
660
661// http://doc.spip.org/@puce_statut_breve
662function puce_statut_breve($id, $statut, $type, $droit) {
663        global $spip_lang_left, $dir_lang;
664
665        $puces = array(
666                       0 => 'puce-orange-breve.gif',
667                       1 => 'puce-verte-breve.gif',
668                       2 => 'puce-rouge-breve.gif',
669                       3 => 'puce-blanche-breve.gif');
670
671        switch ($statut) {
672                        case 'prop':
673                                $clip = 0;
674                                $puce = $puces[0];
675                                $title = _T('titre_breve_proposee');
676                                break;
677                        case 'publie':
678                                $clip = 1;
679                                $puce = $puces[1];
680                                $title = _T('titre_breve_publiee');
681                                break;
682                        case 'refuse':
683                                $clip = 2;
684                                $puce = $puces[2];
685                                $title = _T('titre_breve_refusee');
686                                break;
687                        default:
688                                $clip = 0;
689                                $puce = $puces[3];
690                                $title = '';
691        }
692
693        $type1 = "statut$type$id"; 
694        $inser_puce = http_img_pack($puce, "", "id='img$type1' style='margin: 1px;'");
695
696        if (!$droit) return $inser_puce;
697       
698        $type2 = "statutdecal$type$id";
699        $action = "onmouseover=\"montrer('$type2');\"\n";
700
701          // les versions de MSIE ne font pas toutes pareil sur alt/title
702          // la combinaison suivante semble ok pour tout le monde.
703
704        return  "<div class='puce_breve' id='$type1'$dir_lang>"
705                . "<div class='puce_breve_fixe' $action>"
706                . $inser_puce
707                . "</div>"
708                . "\n<div class='puce_breve_popup' id='$type2' onmouseout=\"cacher('$type2');\" style=' margin-left: -".((9*$clip)+1)."px;'>\n"
709                . afficher_script_statut($id, $type, -1, $puces[0], 'prop',_T('texte_statut_propose_evaluation'), $action)
710                . afficher_script_statut($id, $type, -10, $puces[1], 'publie',_T('texte_statut_publie'), $action)
711                . afficher_script_statut($id, $type, -19, $puces[2], 'refuse',_T('texte_statut_refuse'), $action)
712                .  "</div></div>";
713}
714
715// http://doc.spip.org/@afficher_script_statut
716function afficher_script_statut($id, $type, $n, $img, $statut, $title, $act)
717{
718  return http_href_img("javascript:selec_statut('$id', '$type', -1, '" .
719                      http_wrapper($img) .
720                      "', '" .
721                       generer_action_auteur("instituer_$type","$id-$statut") .
722                      "');",
723                      $img,
724                        "title=\"".$title."\"",
725                        '','','',
726                      $act);
727}
728
729//
730// Afficher tableau d'articles
731//
732// http://doc.spip.org/@afficher_articles
733function afficher_articles($titre_table, $requete, $afficher_visites = false, $afficher_auteurs = true, $obligatoire = false, $afficher_cadre = true, $afficher_descriptif = true) {
734
735        global $connect_id_auteur, $connect_statut, $dir_lang;
736        global $options, $spip_display;
737        global $spip_lang_left, $spip_lang_right;
738
739        if (!isset($requete['FROM']))  $requete['FROM'] = 'spip_articles AS articles';
740        // Preparation pour basculer vers liens de traductions
741        $afficher_trad = ($GLOBALS['meta']['gerer_trad'] == "oui");
742
743        if ($afficher_trad) {
744                $jjscript_trad["fonction"] = "afficher_articles_trad";
745                $jjscript_trad["titre_table"] = $titre_table;
746                $jjscript_trad["requete"] = $requete;
747                $jjscript_trad["afficher_visites"] = $afficher_visites;
748                $jjscript_trad["afficher_auteurs"] = $afficher_auteurs;
749                $jjscript_trad = (serialize($jjscript_trad));
750                $hash = "0x".substr(md5($connect_id_auteur.$jjscript_trad), 0, 16);
751                $div_trad = substr($hash, 2, 6);
752
753                $res_proch = spip_query("SELECT id_ajax_fonc FROM spip_ajax_fonc WHERE hash=$hash AND id_auteur=$connect_id_auteur ORDER BY id_ajax_fonc DESC LIMIT 1");
754                if ($row = spip_fetch_array($res_proch)) {
755                        $id_ajax_trad = $row["id_ajax_fonc"];
756                } else  {
757                        include_spip ('base/abstract_sql');
758                        $id_ajax_trad = spip_abstract_insert("spip_ajax_fonc", "(id_auteur, variables, hash, date)", "($connect_id_auteur, " . spip_abstract_quote($jjscript_trad) . ", $hash, NOW())");
759                }
760        }
761
762        $activer_statistiques = $GLOBALS['meta']["activer_statistiques"];
763        $afficher_visites = ($afficher_visites AND $connect_statut == "0minirezo" AND $activer_statistiques != "non");
764        $afficher_langue = false;
765        $langue_defaut = $GLOBALS['meta']['langue_site'];
766        // Preciser la requete (alleger les requetes)
767        if (!isset($requete['SELECT'])) {
768                $requete['SELECT'] = "articles.id_article, articles.titre, articles.id_rubrique, articles.statut, articles.date";
769
770                if (($GLOBALS['meta']['multi_rubriques'] == 'oui' AND (!isset($GLOBALS['id_rubrique']))) OR $GLOBALS['meta']['multi_articles'] == 'oui') {
771                        $afficher_langue = true;
772                        if (isset($GLOBALS['langue_rubrique'])) $langue_defaut = $GLOBALS['langue_rubrique'];
773                        $requete['SELECT'] .= ", articles.lang";
774                }
775                if ($afficher_visites)
776                        $requete['SELECT'] .= ", articles.visites, articles.popularite";
777                if ($afficher_descriptif)
778                        $requete['SELECT'] .= ", articles.descriptif";
779        }
780       
781        if ($options == "avancees")  $ajout_col = 1;
782        else $ajout_col = 0;
783       
784        $jjscript["fonction"] = "afficher_articles";
785        $jjscript["titre_table"] = $titre_table;
786        $jjscript["requete"] = $requete;
787        $jjscript["afficher_visites"] = $afficher_visites;
788        $jjscript["afficher_auteurs"] = $afficher_auteurs;
789        $jjscript = (serialize($jjscript));
790        $hash = "0x".substr(md5($connect_id_auteur.$jjscript), 0, 16);
791
792        $tmp_var = 't_' . substr($hash, 2, 6);
793
794        if (!isset($requete['GROUP BY'])) $requete['GROUP BY'] = '';
795        $tous_id = array();
796        $cpt = spip_fetch_array(spip_query("SELECT COUNT(*) AS n FROM " . $requete['FROM'] . ($requete['WHERE'] ? (' WHERE ' . $requete['WHERE']) : '') . ($requete['GROUP BY'] ? (' GROUP BY ' . $requete['GROUP BY']) : '')));
797        if (! ($obligatoire OR ($cpt = $cpt['n']))) return $tous_id ;
798        if (isset($requete['LIMIT'])) $cpt = min($requete['LIMIT'], $cpt);
799
800        $nb_aff = floor(1.5 * _TRANCHES);
801        $deb_aff = intval(_request($tmp_var));
802
803
804        $requete['FROM'] = preg_replace("/(spip_articles AS \w*)/", "\\1 LEFT JOIN spip_petitions AS petitions USING (id_article)", $requete['FROM']);
805
806        $requete['SELECT'] .= ", petitions.id_article AS petition ";
807
808        $res_proch = spip_query("SELECT id_ajax_fonc FROM spip_ajax_fonc WHERE hash=$hash AND id_auteur=$connect_id_auteur ORDER BY id_ajax_fonc DESC LIMIT 1");
809        if ($row = spip_fetch_array($res_proch)) {
810                        $id_ajax_fonc = $row["id_ajax_fonc"];
811        } else  {
812                        include_spip('base/abstract_sql');
813                        $id_ajax_fonc = spip_abstract_insert("spip_ajax_fonc", "(id_auteur, variables, hash, date)", "($connect_id_auteur, " . spip_abstract_quote($jjscript) . ", $hash, NOW())");
814        }
815
816        if ($cpt > $nb_aff) {
817                $nb_aff = (_TRANCHES); 
818                $tranches = afficher_tranches_requete($cpt, $afficher_auteurs ? 4 + $ajout_col : 3 + $ajout_col, $tmp_var, generer_url_ecrire('memoriser',"id_ajax_fonc=$id_ajax_fonc", true), $nb_aff);
819
820        } else  $tranches = '';
821
822        if (!$deb_aff) {
823
824                        if ($afficher_trad) echo "<div id='$div_trad'>";
825                        echo "<div style='height: 12px;'></div>";
826                        echo "<div class='liste'>";
827
828                        $id_img = "img_".$tmp_var;
829                        $texte_img = http_img_pack("searching.gif", "*", "style='visibility: hidden; float: $spip_lang_right' id = '$id_img'");
830
831                        if ($afficher_trad) {
832                                $texte_img .= http_img_pack("searching.gif", "*", "style='visibility: hidden; float: $spip_lang_right' id = 'img_$div_trad'");
833                                $texte_img .= "<div style='float: $spip_lang_right;'><a href=\"javascript:charger_id_url('" . generer_url_ecrire('memoriser',"id_ajax_fonc=$id_ajax_trad"). "','$div_trad');\"><img src='". _DIR_IMG_PACK . "langues-12.gif' /></a></div>";
834                        }
835                        bandeau_titre_boite2($texte_img.$titre_table, "article-24.gif");
836
837                        echo "<div id='$tmp_var'>";
838
839        }
840               
841        $voir_logo = ($spip_display != 1 AND $spip_display != 4 AND $GLOBALS['meta']['image_process'] != "non");
842               
843
844        //echo "<table width='100%' cellpadding='2' cellspacing='0' border='0'>";
845        echo afficher_liste_debut_tableau(), $tranches;
846
847        $result = spip_query("SELECT " . $requete['SELECT'] . " FROM " . $requete['FROM'] . ($requete['WHERE'] ? (' WHERE ' . $requete['WHERE']) : '') . ($requete['GROUP BY'] ? (' GROUP BY ' . $requete['GROUP BY']) : '') . ($requete['ORDER BY'] ? (' ORDER BY ' . $requete['ORDER BY']) : '') . " LIMIT " . ($deb_aff >= 0 ? "$deb_aff, $nb_aff" : ($requete['LIMIT'] ? $requete['LIMIT'] : "99999")));
848
849        $table = array();
850        while ($row = spip_fetch_array($result)) {
851                $table[]= afficher_articles_boucle($row, $tous_id, $afficher_auteurs, $afficher_langue, $langue_defaut, $voir_logo);
852        }
853        spip_free_result($result);
854
855        if ($options == "avancees") { // Afficher le numero (JMB)
856                if ($afficher_auteurs) {
857                                $largeurs = array(11, '', 80, 100, 50);
858                                $styles = array('', 'arial2', 'arial1', 'arial1', 'arial1');
859                        } else {
860                                $largeurs = array(11, '', 100, 50);
861                                $styles = array('', 'arial2', 'arial1', 'arial1');
862                        }
863        } else {
864                        if ($afficher_auteurs) {
865                                $largeurs = array(11, '', 100, 100);
866                                $styles = array('', 'arial2', 'arial1', 'arial1');
867                        } else {
868                                $largeurs = array(11, '', 100);
869                                $styles = array('', 'arial2', 'arial1');
870                        }
871        }
872        echo afficher_liste($largeurs, $table, $styles);
873
874        //echo "</table>";
875        echo afficher_liste_fin_tableau();
876        echo "</div>";
877               
878        if (!$deb_aff) {
879                        echo "</div>";
880                        if ($afficher_trad) echo "</div>";
881                       
882        }
883               
884        //if ($afficher_cadre) fin_cadre_gris_clair();
885
886        return $tous_id;
887}
888
889// http://doc.spip.org/@afficher_articles_boucle
890function afficher_articles_boucle($row, &$tous_id, $afficher_auteurs, $afficher_langue, $langue_defaut, $voir_logo)
891{
892  global $connect_id_auteur, $dir_lang, $options, $spip_lang_right;
893
894        $vals = '';
895
896        $id_article = $row['id_article'];
897        $tous_id[] = $id_article;
898        $titre = sinon($row['titre'], _T('ecrire:info_sans_titre'));
899        $id_rubrique = $row['id_rubrique'];
900        $date = $row['date'];
901        $statut = $row['statut'];
902        if ($lang = $row['lang']) changer_typo($lang);
903        $descriptif = $row['descriptif'];
904        if ($descriptif) $descriptif = ' title="'.attribut_html(typo($descriptif)).'"';
905        $petition = $row['petition'];
906
907        if ($afficher_auteurs) {
908                $les_auteurs = "";
909                $result_auteurs = spip_query("SELECT auteurs.id_auteur, nom, messagerie, login, bio FROM spip_auteurs AS auteurs, spip_auteurs_articles AS lien WHERE lien.id_article=$id_article AND auteurs.id_auteur=lien.id_auteur");
910
911
912                while ($row = spip_fetch_array($result_auteurs)) {
913                        $id_auteur = $row['id_auteur'];
914                        $nom_auteur = typo($row['nom']);
915                        $auteur_messagerie = $row['messagerie'];
916
917                        if ($bio = texte_backend(supprimer_tags(couper($row['bio'],50))))
918                                $bio = " title=\"$bio\"";
919
920
921                        $les_auteurs .= ", <a href='" . generer_url_ecrire("auteurs_edit","id_auteur=$id_auteur") . "'$bio>$nom_auteur</a>";
922                        if ($id_auteur != $connect_id_auteur AND $auteur_messagerie != "non"
923                        AND $bouton = bouton_imessage($id_auteur, $row)) {
924                                $les_auteurs .= "&nbsp;".$bouton;
925                        }
926                }
927                $les_auteurs = substr($les_auteurs, 2);
928        }
929
930        // La petite puce de changement de statut
931        $vals[] = puce_statut_article($id_article, $statut, $id_rubrique);
932
933        // Le titre (et la langue)
934        $s = "<div>";
935
936        if (acces_restreint_rubrique($id_rubrique))
937                $s .= http_img_pack("admin-12.gif", "", "width='12' height='12'", _T('titre_image_admin_article'));
938
939        $s .= "<a href='" . generer_url_ecrire("articles","id_article=$id_article") .
940                "'$descriptif$dir_lang style=\"display:block;\">";
941
942        if ($voir_logo) {
943                $logo_f = charger_fonction('chercher_logo', 'inc');
944                if ($logo = $logo_f($id_article, 'id_article', 'on'))
945                        if ($logo = decrire_logo("id_article", 'on', $id_article, 26, 20, $logo))
946                                $s .= "<div style='float: $spip_lang_right; margin-top: -2px; margin-bottom: -2px;'>$logo</div>";
947        }
948
949        $s .= typo($titre);
950        if ($afficher_langue AND $lang != $langue_defaut)
951                $s .= " <font size='1' color='#666666'$dir_lang>(".traduire_nom_langue($lang).")</font>";
952        if ($petition) $s .= " <font size=1 color='red'>"._T('lien_petitions')."</font>";
953        $s .= "</a>";
954        $s .= "</div>";
955       
956        $vals[] = $s;
957
958        // Les auteurs
959        if ($afficher_auteurs) $vals[] = $les_auteurs;
960
961        // La date
962        $vals[] = affdate_jourcourt($date);
963
964        // Le numero (moche)
965        if ($options == "avancees") {
966                $vals[] = "<b>"._T('info_numero_abbreviation')."$id_article</b>";
967        }
968       
969
970        return $vals;
971}
972
973
974// http://doc.spip.org/@afficher_articles_trad
975function afficher_articles_trad($titre_table, $requete, $afficher_visites = false, $afficher_auteurs = true,
976                $obligatoire = false, $afficher_cadre = true, $afficher_descriptif = true) {
977
978        global $connect_id_auteur, $connect_statut, $dir_lang;
979        global $options, $spip_lang_left, $spip_lang_right;
980
981        if (!$requete['FROM']) $requete['FROM']=  'spip_articles AS articles';
982
983        $langues_site = explode(',', $GLOBALS['meta']['langues_multilingue']);
984
985        // Preparation pour basculer vers liste normale
986                $jjscript_trad["fonction"] = "afficher_articles";
987                $jjscript_trad["titre_table"] = $titre_table;
988                $jjscript_trad["requete"] = $requete;
989                $jjscript_trad["afficher_visites"] = $afficher_visites;
990                $jjscript_trad["afficher_auteurs"] = $afficher_auteurs;
991                $jjscript_trad = (serialize($jjscript_trad));
992                $hash = "0x".substr(md5($connect_id_auteur.$jjscript_trad), 0, 16);
993                $div_trad = substr($hash, 2, 6);
994
995                $res_proch = spip_query("SELECT id_ajax_fonc FROM spip_ajax_fonc WHERE hash=$hash AND id_auteur=$connect_id_auteur ORDER BY id_ajax_fonc DESC LIMIT 1");
996                if ($row = spip_fetch_array($res_proch)) {
997                        $id_ajax_trad = $row["id_ajax_fonc"];
998                } else  {
999                        include_spip('base/abstract_sql');
1000                        $id_ajax_trad = spip_abstract_insert("spip_ajax_fonc", "(id_auteur, variables, hash, date)", "($connect_id_auteur, " . spip_abstract_quote($jjscript_trad) . ", $hash, NOW())");
1001                }
1002
1003
1004        $activer_statistiques = $GLOBALS['meta']["activer_statistiques"];
1005        $afficher_visites = ($afficher_visites AND $connect_statut == "0minirezo" AND $activer_statistiques != "non");
1006
1007        // Preciser la requete (alleger les requetes)
1008        if (!$requete['SELECT']) {
1009                $requete['SELECT'] = "articles.id_article, articles.titre, articles.id_rubrique, articles.statut, articles.date, articles.id_trad, articles.lang";
1010
1011        }
1012       
1013        if ($options == "avancees")  $ajout_col = 1;
1014        else $ajout_col = 0;
1015
1016       
1017        $jjscript["fonction"] = "afficher_articles_trad";
1018        $jjscript["titre_table"] = $titre_table;
1019        $jjscript["requete"] = $requete;
1020        $jjscript["afficher_visites"] = $afficher_visites;
1021        $jjscript["afficher_auteurs"] = $afficher_auteurs;
1022        $jjscript = (serialize($jjscript));
1023        $hash = "0x".substr(md5($connect_id_auteur.$jjscript), 0, 16);
1024        $tmp_var = 't_' . substr($hash, 2, 6); 
1025       
1026        $tous_id = array();
1027        $cpt = spip_fetch_array(spip_query("SELECT COUNT(*) AS n FROM " . $requete['FROM'] . ($requete['WHERE'] ? (' WHERE ' . $requete['WHERE']) : '') . ($requete['GROUP BY'] ? (' GROUP BY ' . $requete['GROUP BY']) : '')));
1028        if (! ($obligatoire OR ($cpt = $cpt['n']))) return $tous_id ;
1029        if ($requete['LIMIT']) $cpt = min($requete['LIMIT'], $cpt);
1030
1031        $nb_aff = floor(1.5 * _TRANCHES);
1032        $deb_aff = intval(_request($tmp_var));
1033
1034        $res_proch = spip_query("SELECT id_ajax_fonc FROM spip_ajax_fonc WHERE hash=$hash AND id_auteur=$connect_id_auteur ORDER BY id_ajax_fonc DESC LIMIT 1");
1035        if ($row = spip_fetch_array($res_proch)) {
1036                        $id_ajax_fonc = $row["id_ajax_fonc"];
1037        } else  {
1038                        include_spip('base/abstract_sql');
1039                        $id_ajax_fonc = spip_abstract_insert("spip_ajax_fonc", "(id_auteur, variables, hash, date)", "($connect_id_auteur, " . spip_abstract_quote($jjscript) . ", $hash, NOW())");
1040                }
1041
1042        if ($cpt > $nb_aff) {
1043                $nb_aff = (_TRANCHES); 
1044                $tranches = afficher_tranches_requete($cpt,  4, $tmp_var, generer_url_ecrire('memoriser', "id_ajax_fonc=$id_ajax_fonc"), $nb_aff);
1045        } else  $tranches = '';
1046
1047        if (!$deb_aff) {
1048                        echo "<div id='$div_trad'>";
1049                        echo "<div style='height: 12px;'></div>";
1050                        echo "<div class='liste'>";
1051
1052                        $id_img = "img_".$tmp_var;
1053                        $texte_img = http_img_pack("searching.gif", "*", "style='visibility: hidden; float: $spip_lang_right' id = '$id_img'");
1054                       
1055                        $texte_img .= http_img_pack("searching.gif", "*", "style='visibility: hidden; float: $spip_lang_right' id = 'img_$div_trad'");
1056
1057                        $texte_img .= "<div style='float: $spip_lang_right;'><a href=\"javascript:charger_id_url('" . generer_url_ecrire('memoriser',"id_ajax_fonc=$id_ajax_trad") . "','$div_trad');\"><img src='". _DIR_IMG_PACK . "langues-off-12.gif' /></a></div>";
1058
1059                        bandeau_titre_boite2($texte_img.$titre_table, "article-24.gif");
1060
1061                        echo "<div id='$tmp_var'>";
1062        }
1063               
1064        //echo "<table width='100%' cellpadding='2' cellspacing='0' border='0'>";
1065        echo afficher_liste_debut_tableau(),  $tranches;
1066
1067        $result = spip_query("SELECT " . $requete['SELECT'] . " FROM " . $requete['FROM'] . ($requete['WHERE'] ? (' WHERE ' . $requete['WHERE']) : '') . ($requete['GROUP BY'] ? (' GROUP BY ' . $requete['GROUP BY']) : '') . ($requete['ORDER BY'] ? (' ORDER BY ' . $requete['ORDER BY']) : '') . " LIMIT " . ($deb_aff >= 0 ? "$deb_aff, $nb_aff" : ($requete['LIMIT'] ? $requete['LIMIT'] : "99999")));
1068
1069        $table = array();
1070        while ($row = spip_fetch_array($result)) {
1071                $table[]=afficher_articles_trad_boucle($row, $tous_id, $afficher_langue, $langue_defaut, $langues_site);
1072        }
1073        spip_free_result($result);
1074
1075        $largeurs = array(11, 24, '', '1');
1076        $styles = array('', 'arial1', 'arial1', '');
1077
1078        echo afficher_liste($largeurs, $table, $styles);
1079
1080        //echo "</table>";
1081        echo afficher_liste_fin_tableau();
1082        echo "</div>";
1083               
1084        if (!$GLOBALS[$tmp_var]) echo "</div>";
1085               
1086        //if ($afficher_cadre) fin_cadre_gris_clair();
1087
1088        return $tous_id;
1089}
1090
1091// http://doc.spip.org/@afficher_articles_trad_boucle
1092function afficher_articles_trad_boucle($row, &$tous_id, $afficher_langue, $langue_defaut, $langues_site)
1093{
1094        global $dir_lang,  $spip_lang_right;
1095
1096        $vals = '';
1097
1098        $id_article = $row['id_article'];
1099        $tous_id[] = $id_article;
1100        $titre = sinon($row['titre'], _T('ecrire:info_sans_titre'));
1101        $id_rubrique = $row['id_rubrique'];
1102        $date = $row['date'];
1103        $statut = $row['statut'];
1104        $id_trad = $row['id_trad'];
1105        $lang = $row['lang'];
1106
1107
1108        // La petite puce de changement de statut
1109        $vals[] = puce_statut_article($id_article, $statut, $id_rubrique);
1110
1111        // Le titre (et la langue)
1112       
1113        $langues_art = "";
1114        $dates_art = "";
1115        $l = "";
1116        $res_trad = spip_query("SELECT id_article, lang, date_modif  FROM spip_articles WHERE id_trad = $id_trad AND id_trad > 0");
1117        while ($row_trad = spip_fetch_array($res_trad)) {
1118                $id_article_trad = $row_trad["id_article"];
1119                $lang_trad = $row_trad["lang"];
1120                $date_trad = $row_trad["date_modif"];
1121               
1122                $dates_art[$lang_trad] = $date_trad;
1123                $langues_art[$lang_trad] = $id_article_trad;
1124                if ($id_article_trad == $id_trad) $date_ref = $date;
1125        }
1126
1127        reset($langues_site);
1128        $span_lang = false;
1129        while (list(,$k) = each($langues_site)) {
1130                if ($langues_art[$k]) {
1131                        if ($langues_art[$k] == $id_trad) {
1132                                $span_lang = "<a href='" . generer_url_ecrire("articles","id_article=".$langues_art[$k]) . "'><span class='lang_base'>$k</a></a>";
1133                                $l .= $span_lang;
1134                        } else {
1135                                $date = $dates_art[$k];
1136                                if ($date < $date_ref) 
1137                                        $l .= "<a href='" . generer_url_ecrire("articles","id_article=".$langues_art[$k]) . "' class='claire'>$k</a>";
1138                                else $l .= "<a href='" . generer_url_ecrire("articles","id_article=".$langues_art[$k]) . "' class='foncee'>$k</a>";
1139                        }                       
1140                }
1141#                               else $l.= "<span class='creer'>$k</span>";
1142        }
1143                       
1144        if (!$span_lang)
1145                $span_lang = "<a href='" . generer_url_ecrire("articles","id_article=$id_article") . "'><span class='lang_base'>$lang</a></a>";
1146
1147        $vals[] = "<div style='text-align: center;'>$span_lang</div>";
1148                       
1149                       
1150        $s = "<div>";
1151        $s .= "<div style='float: $spip_lang_right; margin-right: -10px;'>$l</div>";
1152       
1153        if (acces_restreint_rubrique($id_rubrique))
1154                $s .= http_img_pack("admin-12.gif", "", "width='12' height='12'", _T('titre_image_admin_article'));
1155
1156        $s .= "<a href='" . generer_url_ecrire("articles","id_article=$id_article") . "'$dir_lang style=\"display:block;\">";
1157                       
1158                       
1159        if ($id_article == $id_trad) $titre = "<b>$titre</b>";
1160                       
1161        $s .= typo($titre);
1162        if ($afficher_langue AND $lang != $langue_defaut)
1163                $s .= " <font size='1' color='#666666'$dir_lang>(".traduire_nom_langue($lang).")</font>";
1164
1165        $s .= "</a>";
1166        $s .= "</div>";
1167       
1168        $vals[] = $s;
1169       
1170        $vals[] = "";
1171       
1172        return  $vals;
1173}
1174
1175//
1176// Afficher tableau de breves
1177//
1178
1179// http://doc.spip.org/@afficher_breves
1180function afficher_breves($titre_table, $requete, $affrub=false) {
1181        global  $couleur_foncee, $options;     
1182 
1183        if (($GLOBALS['meta']['multi_rubriques'] == 'oui'
1184             AND (!isset($GLOBALS['id_rubrique'])))
1185        OR $GLOBALS['meta']['multi_articles'] == 'oui') {
1186                $afficher_langue = true;
1187
1188                if (isset($GLOBALS['langue_rubrique'])) $langue_defaut = $GLOBALS['langue_rubrique'];
1189                else $langue_defaut = $GLOBALS['meta']['langue_site'];
1190        }
1191
1192
1193        $tmp_var = 't_' . substr(md5(join('', $requete)), 0, 4);
1194        $col = ($options == "avancees") ? 4 : 3;
1195        if ($options == "avancees") {
1196                if ($affrub) $largeurs = array('7', '', '188', '38');
1197                else $largeurs = array('7','', '100', '38');
1198                $styles = array('', 'arial11', 'arial1', 'arial1');
1199        } else {
1200                if ($affrub) $largeurs = array('7','', '188');
1201                else  $largeurs = array('7','', '100');
1202                $styles = array('','arial11', 'arial1');
1203        }
1204
1205        return affiche_tranche_bandeau($requete, "breve-24.gif", count($largeurs), $couleur_foncee, "white", $tmp_var, $titre_table, false, $largeurs, $styles, 'afficher_breves_boucle', array( $afficher_langue, $affrub, $langue_defaut));
1206
1207}
1208
1209// http://doc.spip.org/@afficher_breves_boucle
1210function afficher_breves_boucle($row, &$tous_id,  $voir_logo, $own)
1211{
1212  global  $dir_lang, $options, $connect_statut, $spip_lang_right;
1213        $droit = ($connect_statut == '0minirezo' && $options == 'avancees');
1214        list($afficher_langue, $affrub, $langue_defaut) = $own;
1215        $vals = '';
1216
1217        $id_breve = $row['id_breve'];
1218        $tous_id[] = $id_breve;
1219        $date_heure = $row['date_heure'];
1220        $titre = sinon($row['titre'], _T('ecrire:info_sans_titre'));
1221        $statut = $row['statut'];
1222        if (isset($row['lang']))
1223          changer_typo($lang = $row['lang']);
1224        else $lang = $langue_defaut;
1225        $id_rubrique = $row['id_rubrique'];
1226                       
1227        $vals[] = puce_statut_breve($id_breve, $statut, 'breve', ($droit && acces_rubrique($id_rubrique)), $id_rubrique);
1228
1229        $s = "<div>";
1230        $s .= "<a href='" . generer_url_ecrire("breves_voir","id_breve=$id_breve") . "' style=\"display:block;\">";
1231
1232        if ($voir_logo) {
1233                $logo_f = charger_fonction('chercher_logo', 'inc');
1234                if ($logo = $logo_f($id_breve, 'id_breve', 'on'))
1235                  if ($logo = decrire_logo("id_breve", 'on', $id_breve, 26, 20, $logo))
1236                                $s .= "<div style='float: $spip_lang_right; margin-top: -2px; margin-bottom: -2px;'>$logo</div>";
1237        }
1238
1239        $s .= typo($titre);
1240        if ($afficher_langue AND $lang != $langue_defaut)
1241                $s .= " <font size='1' color='#666666'$dir_lang>(".traduire_nom_langue($lang).")</font>";
1242        $s .= "</a>";
1243
1244        $s .= "</div>";
1245        $vals[] = $s;
1246
1247        $s = "";
1248        if ($affrub) {
1249                $rub = spip_fetch_array(spip_query("SELECT id_rubrique, titre FROM spip_rubriques WHERE id_rubrique=$id_rubrique"));
1250                $id_rubrique = $rub['id_rubrique'];
1251                $s .= "<a href='" . generer_url_ecrire("naviguer","id_rubrique=$id_rubrique") . "' style=\"display:block;\">".typo($rub['titre'])."</a>";
1252        } else if ($statut != "prop")
1253                        $s = affdate_jourcourt($date_heure);
1254                else
1255                        $s .= _T('info_a_valider');
1256        $vals[] = $s;
1257                       
1258        if ($options == "avancees") {
1259                $vals[] = "<b>"._T('info_numero_abbreviation')."$id_breve</b>";
1260        }
1261                       
1262        return $vals;
1263}
1264
1265
1266//
1267// Afficher tableau de rubriques
1268//
1269
1270// http://doc.spip.org/@afficher_rubriques
1271function afficher_rubriques($titre_table, $requete) {
1272        global $options;
1273
1274        $tmp_var = 't_' . substr(md5(join('', $requete)), 0, 4);
1275        $largeurs = array('12','', '');
1276        $styles = array('', 'arial2', 'arial11');
1277        return affiche_tranche_bandeau($requete, "rubrique-24.gif", 3, "#999999", "white", $tmp_var, $titre_table, false, $largeurs, $styles, 'afficher_rubriques_boucle');
1278}
1279
1280// http://doc.spip.org/@afficher_rubriques_boucle
1281function afficher_rubriques_boucle($row, &$tous_id)
1282{
1283        $vals = '';
1284
1285        $id_rubrique = $row['id_rubrique'];
1286        $id_parent = $row['id_parent'];
1287        $tous_id[] = $id_rubrique;
1288        $titre = sinon($row['titre'], _T('ecrire:info_sans_titre'));
1289        $lang = traduire_nom_langue($row['lang']);
1290        $langue_choisie = $row['langue_choisie'];
1291       
1292        if ($langue_choisie == "oui") $lang = "<b>$lang</b>";
1293        else $lang = "($lang)";
1294       
1295        if ($id_parent == 0) $puce = "secteur-12.gif";
1296        else $puce = "rubrique-12.gif";
1297       
1298        $s = http_img_pack($puce, '- ', "");
1299        $vals[] = $s;
1300       
1301        $s = "<b><a href='" . generer_url_ecrire("naviguer","id_rubrique=$id_rubrique") . "'>";
1302        $s .= typo($titre);
1303        $s .= "</A></b>";
1304        $vals[] = $s;
1305       
1306        $s = "<div align=\"right\">";
1307        if  ($GLOBALS['meta']['multi_rubriques'] == 'oui') {
1308                                $s .= ($lang);
1309        }
1310        $s .= "</div>";
1311        $vals[] = $s;
1312        return $vals;
1313}
1314
1315//
1316// Afficher des auteurs sur requete SQL
1317//
1318// http://doc.spip.org/@bonhomme_statut
1319function bonhomme_statut($row) {
1320        global $connect_statut;
1321
1322        switch($row['statut']) {
1323                case "0minirezo":
1324                        return http_img_pack("admin-12.gif", "", "",
1325                                        _T('titre_image_administrateur'));
1326                        break;
1327                case "1comite":
1328                        if ($connect_statut == '0minirezo' AND ($row['source'] == 'spip' AND !($row['pass'] AND $row['login'])))
1329                          return http_img_pack("visit-12.gif",'', "", _T('titre_image_redacteur'));
1330                        else
1331                          return http_img_pack("redac-12.gif",'', "", _T('titre_image_redacteur_02'));
1332                        break;
1333                case "5poubelle":
1334                  return http_img_pack("poubelle.gif", '', "",_T('titre_image_auteur_supprime'));
1335                        break;
1336                case "6forum":
1337                  return http_img_pack("visit-12.gif", '', "",_T('titre_image_visiteur'));
1338                        break;
1339                case "nouveau":
1340                default:
1341                        return '';
1342                        break;
1343        }
1344}
1345
1346// La couleur du statut
1347// http://doc.spip.org/@puce_statut
1348function puce_statut($statut, $type='article') {
1349        switch ($statut) {
1350                case 'publie':
1351                        return 'verte';
1352                case 'prepa':
1353                        return 'blanche';
1354                case 'prop':
1355                        return 'orange';
1356                case 'refuse':
1357                        return 'rouge';
1358                case 'poubelle':
1359                        return 'poubelle';
1360        }
1361}
1362
1363
1364// http://doc.spip.org/@afficher_auteurs
1365function afficher_auteurs ($titre_table, $requete) {
1366
1367        if (!$requete['SELECT']) $requete['SELECT'] = '*' ;
1368
1369        $tous_id = array();
1370        $cpt = spip_fetch_array(spip_query("SELECT COUNT(*) AS n FROM " . $requete['FROM'] . ($requete['WHERE'] ? (' WHERE ' . $requete['WHERE']) : '') . ($requete['GROUP BY'] ? (' GROUP BY ' . $requete['GROUP BY']) : '')));
1371        if (! ($cpt = $cpt['n'])) return $tous_id ;
1372        if ($requete['LIMIT']) $cpt = min($requete['LIMIT'], $cpt);
1373
1374        $tmp_var = 't_' . substr(md5(join('', $requete)), 0, 4);
1375        $nb_aff = floor(1.5 * _TRANCHES);
1376        $deb_aff = intval(_request($tmp_var));
1377        $tranches = '';
1378        if ($cpt > $nb_aff) {
1379                $nb_aff = (_TRANCHES); 
1380                $tranches = afficher_tranches_requete($cpt,  ($options == "avancees") ? 4 : 3, $tmp_var, '', $nb_aff);
1381        }
1382
1383        debut_cadre_relief("auteur-24.gif");
1384
1385        if ($titre_table) {
1386                        echo "<p><table width='100%' cellpadding='0' cellspacing='0' border='0' background=''>";
1387                        echo "<tr><td width='100%' background=''>";
1388                        echo "<table width='100%' cellpadding='3' cellspacing='0' border='0'>";
1389                        echo "<tr bgcolor='#333333'><td width='100%' colspan='2'><font face='Verdana,Arial,Sans,sans-serif' size=3 color='#FFFFFF'>";
1390                        echo "<b>$titre_table</b></font></td></tr>";
1391                }
1392        else {
1393                        echo "<p><table width='100%' cellpadding='3' cellspacing='0' border='0' background=''>";
1394                }
1395
1396        echo $tranches;
1397
1398        $result = spip_query("SELECT " . $requete['SELECT'] . " FROM " . $requete['FROM'] . ($requete['WHERE'] ? (' WHERE ' . $requete['WHERE']) : '') . ($requete['GROUP BY'] ? (' GROUP BY ' . $requete['GROUP BY']) : '') . ($requete['ORDER BY'] ? (' ORDER BY ' . $requete['ORDER BY']) : '') . " LIMIT " . ($deb_aff >= 0 ? "$deb_aff, $nb_aff" : ($requete['LIMIT'] ? $requete['LIMIT'] : "99999")));
1399
1400        $table = array();
1401        while ($row = spip_fetch_array($result)) {
1402                $table[]= affiche_auteur_boucle($row, $tous_id);
1403        }
1404        spip_free_result($result);
1405        $largeurs = array('');
1406        $styles = array('arial2');
1407        echo afficher_liste($largeurs, $table, $styles);
1408
1409        if ($titre_table) echo "</TABLE></TD></TR>";
1410        echo "</TABLE>";
1411        fin_cadre_relief();
1412
1413        return $tous_id;
1414}
1415
1416// http://doc.spip.org/@affiche_auteur_boucle
1417function affiche_auteur_boucle($row, &$tous_id)
1418{
1419        $vals = '';
1420
1421        $id_auteur = $row['id_auteur'];
1422        $tous_id[] = $id_auteur;
1423        $nom = $row['nom'];
1424
1425        $s = bonhomme_statut($row);
1426        $s .= "<a href='" . generer_url_ecrire("auteurs_edit","id_auteur=$id_auteur") . "'>";
1427        $s .= typo($nom);
1428        $s .= "</a>";
1429        $vals[] = $s;
1430
1431        return $vals;
1432}
1433
1434//
1435// Afficher les forums
1436//
1437
1438// http://doc.spip.org/@afficher_forum
1439function afficher_forum($request, $retour, $arg, $controle_id_article = false) {
1440        global $spip_display;
1441        static $compteur_forum = 0;
1442        static $nb_forum = array();
1443        static $thread = array();
1444
1445        $compteur_forum++;
1446        $nb_forum[$compteur_forum] = spip_num_rows($request);
1447        $thread[$compteur_forum] = 1;
1448       
1449        $res = '';
1450
1451        if ($spip_display == 4) $res .= "<ul>";
1452 
1453        while($row = spip_fetch_array($request)) {
1454                $statut=$row['statut'];
1455                if ($compteur_forum==1) $res .= "\n<br />";
1456                if (($controle_id_article) ? ($statut!="perso") :
1457                        (($statut=="prive" OR $statut=="privrac" OR $statut=="privadm" OR $statut=="perso")
1458                         OR ($statut=="publie" AND $id_parent > 0))) {
1459
1460                        $res .= afficher_forum_thread($row, $controle_id_article, $compteur_forum, $nb_forum, $thread, $retour, $arg)
1461                        . afficher_forum(spip_query("SELECT * FROM spip_forum WHERE id_parent='" . $row['id_forum'] . "'" . ($controle_id_article ? " AND statut<>'off'" : '') . " ORDER BY date_heure"), $retour, $arg, $controle_id_article);
1462                }
1463                $thread[$compteur_forum]++;
1464        }
1465        if ($spip_display == 4) $res .= "</ul>";
1466        spip_free_result($request);
1467        $compteur_forum--;
1468        return $res;
1469}
1470
1471// http://doc.spip.org/@afficher_forum_thread
1472function afficher_forum_thread($row, $controle_id_article, $compteur_forum, $nb_forum, $i, $retour, $arg) {
1473        global $spip_lang_rtl, $spip_lang_left, $spip_lang_right, $spip_display;
1474        static $voir_logo = array(); // pour ne calculer qu'une fois
1475
1476        if (is_array($voir_logo)) {
1477                $voir_logo = (($spip_display != 1 AND $spip_display != 4 AND $GLOBALS['meta']['image_process'] != "non") ? 
1478                      "position: absolute; $spip_lang_right: 0px; margin: 0px; margin-top: -3px; margin-$spip_lang_right: 0px;" 
1479                      : '');
1480        }
1481
1482        $id_forum=$row['id_forum'];
1483        $id_parent=$row['id_parent'];
1484        $id_rubrique=$row['id_rubrique'];
1485        $id_article=$row['id_article'];
1486        $id_breve=$row['id_breve'];
1487        $id_message=$row['id_message'];
1488        $id_syndic=$row['id_syndic'];
1489        $date_heure=$row['date_heure'];
1490        $titre=$row['titre'];
1491        $texte=$row['texte'];
1492        $auteur=$row['auteur'];
1493        $email_auteur=$row['email_auteur'];
1494        $nom_site=$row['nom_site'];
1495        $url_site=$row['url_site'];
1496        $statut=$row['statut'];
1497        $ip=$row["ip"];
1498        $id_auteur=$row["id_auteur"];
1499       
1500        $res = "<a id='$id_forum'></a>";
1501
1502        if ($spip_display == 4) {
1503                $res .= "<li>".typo($titre)."<br>";
1504        } else {
1505
1506                $titre_boite = '';
1507                if ($id_auteur AND $voir_logo) {
1508                        $logo_f = charger_fonction('chercher_logo', 'inc');
1509                        if ($logo = $logo_f($id_auteur, 'id_auteur', 'on'))
1510                                if ($logo = decrire_logo("id_auteur", 'on', $id_auteur, 48, 48, $logo))
1511                                        $titre_boite = "<div style='$voir_logo'>$logo</div>" ;
1512                } 
1513
1514                $titre_boite .= typo($titre);
1515
1516                $res .= "<table width='100%' cellpadding='0' cellspacing='0' border='0'><tr>";
1517                $res .= afficher_forum_4($compteur_forum, $nb_forum, $i);
1518
1519                if ($compteur_forum == 1) 
1520                        $res .= afficher_forum_logo($statut, $titre_boite);
1521                else $res .= debut_cadre_thread_forum("", true, "", $titre_boite);
1522        }
1523                       
1524        // Si refuse, cadre rouge
1525        if ($statut=="off") {
1526                $res .= "<div style='border: 2px dashed red; padding: 5px;'>";
1527        }
1528        // Si propose, cadre jaune
1529        else if ($statut=="prop") {
1530                $res .= "<div style='border: 1px solid yellow; padding: 5px;'>";
1531        }
1532               
1533        $res .= "<span class='arial2'>". date_interface($date_heure) . "</span> ";
1534
1535        if ($id_auteur)
1536                $res .= "<a href='" . generer_url_ecrire("auteurs_edit","id_auteur=$id_auteur") . "'>".typo($auteur)."</a>";
1537        else if ($email_auteur)
1538                $res .= "<a href='mailto:$email_auteur'>".typo($auteur)."</a>";
1539        else    $res .= typo($auteur);
1540
1541        if ($id_auteur) {
1542                $bouton = bouton_imessage($id_auteur);
1543                if ($bouton) $res .= "&nbsp;".$bouton;
1544        }
1545
1546        // boutons de moderation
1547        if ($controle_id_article)
1548                $res .= boutons_controle_forum($id_forum, $statut, $id_auteur, "id_article=$id_article", $ip);
1549
1550        $res .= safehtml(justifier(propre($texte)));
1551
1552        if ($nom_site) {
1553                if (strlen($url_site) > 10)
1554                        $res .= "<div align='left' class='verdana2'><b><a href='$url_site'>$nom_site</a></b></div>";
1555                else $res .= "<b>$nom_site</b>";
1556        }
1557
1558        if (!$controle_id_article) {
1559                $tm = rawurlencode($titre);
1560                $res .= "<div align='right' class='verdana1'>"
1561                . "<b><a href='"
1562                . generer_url_ecrire("forum_envoi","id_parent=$id_forum&titre_message=$tm&url=" . generer_url_retour($retour, $arg)  .'#formulaire')
1563                . "'>"
1564                . _T('lien_repondre_message')
1565                . "</a></b></div>";
1566        }
1567
1568        if ($GLOBALS['meta']["mots_cles_forums"] == "oui")
1569                $res .= afficher_forum_mots($id_forum);
1570       
1571        if ($statut == "off" OR $statut == "prop") $res .= "</div>";
1572
1573        if ($spip_display != 4) {
1574                if ($compteur_forum == 1) $res .= fin_cadre_forum(true);
1575                else $res .= fin_cadre_thread_forum(true);
1576                $res .= "</td></tr></table>\n";
1577        }
1578        return $res;
1579}
1580
1581
1582// http://doc.spip.org/@afficher_forum_logo
1583function afficher_forum_logo($statut, $titre_boite)
1584{
1585        if ($statut == "prive") $logo = "forum-interne-24.gif";
1586        else if ($statut == "privadm") $logo = "forum-admin-24.gif";
1587        else if ($statut == "privrac") $logo = "forum-interne-24.gif";
1588        else $logo = "forum-public-24.gif";
1589        return debut_cadre_forum($logo, true, "", $titre_boite);
1590}
1591
1592// http://doc.spip.org/@afficher_forum_mots
1593function afficher_forum_mots($id_forum)
1594{
1595        $result = spip_query("SELECT * FROM spip_mots AS mots, spip_mots_forum AS lien WHERE lien.id_forum = '$id_forum' AND lien.id_mot = mots.id_mot");
1596
1597        $res = '<ul>';
1598        while ($row = spip_fetch_array($result)) {
1599                $res .= "<li> <b>"
1600                . propre($row['titre'])
1601                . " :</b> "
1602                .  propre($row['type'])
1603                .  "<li>";
1604        }
1605        $res .= '</ul>';
1606        return $res;
1607}
1608
1609// affiche les traits de liaisons entre les reponses
1610
1611// http://doc.spip.org/@afficher_forum_4
1612function afficher_forum_4($compteur_forum, $nb_forum, $thread)
1613{
1614        global $spip_lang_rtl;
1615        $fleche='rien.gif';
1616        $res = '';
1617        for ($j=2;$j<=$compteur_forum AND $j<20;$j++){
1618                $fond[$j]=_DIR_IMG_PACK . 'rien.gif';
1619                if ($thread[$j]!=$nb_forum[$j]){
1620                        $fond[$j]=_DIR_IMG_PACK . 'forum-vert.gif';
1621                }
1622                if ($j==$compteur_forum){
1623                        $fleche="forum-droite$spip_lang_rtl.gif";
1624                }
1625                $res .= "<td width='10' valign='top' background=$fond[$j]>"
1626                . http_img_pack($fleche, " ", "width='10' height='13'")
1627                . "</td>\n";
1628        }
1629        return $res . "\n<td width=100% valign='top'>";
1630}
1631
1632
1633// http://doc.spip.org/@envoi_link
1634function envoi_link($nom_site_spip, $rubrique="") {
1635        global $connect_statut, $connect_toutes_rubriques, $spip_display;
1636        global $spip_lang, $couleur_claire, $couleur_foncee;
1637
1638        $args = "couleur_claire=" .
1639                substr($couleur_claire,1) .
1640                '&couleur_foncee=' .
1641                substr($couleur_foncee,1) .
1642                '&ltr=' . 
1643                $GLOBALS['spip_lang_left'];
1644
1645        // CSS de secours en cas de non fonct de la suivante
1646        $res = '<link rel="stylesheet" type="text/css" href="' . _DIR_IMG_PACK
1647        . 'style_prive_defaut.css" >'  . "\n"
1648       
1649        // CSS espace prive : la vraie
1650        . '<link rel="stylesheet" type="text/css" href="'
1651        . generer_url_public('style_prive', $args) .'" >' . "\n"
1652
1653        // CSS calendrier
1654        . '<link rel="stylesheet" type="text/css" href="'
1655        . find_in_path('agenda.css') .'" >' . "\n"
1656
1657        // CSS imprimante (masque des trucs, a completer)
1658        . '<link rel="stylesheet" type="text/css" href="' . _DIR_IMG_PACK
1659        . 'spip_style_print.css" media="print" >' . "\n"
1660
1661        // CSS "visible au chargement" differente selon js actif ou non
1662        . '<link rel="stylesheet" type="text/css" href="' . _DIR_IMG_PACK
1663        . 'spip_style_'
1664        . (($_COOKIE['spip_accepte_ajax'] != -1) ? 'invisible' : 'visible')
1665        . '.css" >' . "\n"
1666
1667        // favicon.ico
1668        . '<link rel="shortcut icon" href="'
1669        . url_absolue(find_in_path('favicon.ico'))
1670        . "\" >\n";
1671        $js = debut_javascript($connect_statut == "0minirezo"
1672                        AND $connect_toutes_rubriques,
1673                        ($GLOBALS['meta']["activer_statistiques"] != 'non'));
1674
1675        if ($spip_display == 4) return $res . $js;
1676
1677        $nom = entites_html($nom_site_spip);
1678
1679        $res .= "<link rel='alternate' type='application/rss+xml' title=\"$nom\" href='"
1680                        . generer_url_public('backend') . "' >\n";
1681        $res .= "<link rel='help' type='text/html' title=\""._T('icone_aide_ligne') . 
1682                        "\" href='"
1683                        . generer_url_ecrire('aide_index',"var_lang=$spip_lang")
1684                        ."' >\n";
1685        if ($GLOBALS['meta']["activer_breves"] != "non")
1686                $res .= "<link rel='alternate' type='application/rss+xml' title=\""
1687                        . $nom
1688                        . " ("._T("info_breves_03")
1689                        . ")\" href='" . generer_url_public('backend-breves') . "' >\n";
1690
1691        return $res . $js;
1692}
1693
1694// http://doc.spip.org/@debut_javascript
1695function debut_javascript($admin, $stat)
1696{
1697        global $spip_lang_left, $browser_name, $browser_version;
1698        include_spip('inc/charsets');
1699
1700
1701        // tester les capacites JS :
1702
1703        // On envoie un script ajah ; si le script reussit le cookie passera a +1
1704        // on installe egalement un <noscript></noscript> qui charge une image qui
1705        // pose un cookie valant -1
1706        if ($_COOKIE['spip_accepte_ajax'] < 1) {
1707                $tester_javascript = "if (a = createXmlHttp()) {
1708        a.open('GET', '" . generer_url_ecrire('test_ajax', 'js=1') .
1709                  "', true) ;
1710        a.send(null);
1711}";
1712        }
1713        if ($_COOKIE['spip_accepte_ajax'] != -1) {
1714                define('_TESTER_NOSCRIPT',
1715                        "<noscript><div style='display:none;'><img src='".generer_url_ecrire('test_ajax', 'js=-1')."' width='1' height='1' alt='' /></div></noscript>\n"); // pour le pied de page
1716        }
1717
1718        return 
1719        // envoi le fichier JS de config si browser ok.
1720                $GLOBALS['browser_layer'] .
1721                http_script(
1722                        $tester_javascript . 
1723                        "\nvar ajax_image_searching = '<div style=\"float: ".$GLOBALS['spip_lang_right'].";\"><img src=\"".url_absolue(_DIR_IMG_PACK."searching.gif")."\" /></div>';" .
1724                        "\nvar admin = " . ($admin ? 1 : 0) .
1725                        "\nvar stat = " . ($stat ? 1 : 0) .
1726                        "\nvar largeur_icone = " .
1727                        largeur_icone_bandeau_principal(_T('icone_a_suivre')) .
1728                        "\nvar  bug_offsetwidth = " .
1729// uniquement affichage ltr: bug Mozilla dans offsetWidth quand ecran inverse!
1730                        ((($spip_lang_left == "left") &&
1731                          (($browser_name != "MSIE") ||
1732                           ($browser_version >= 6))) ? 1 : 0) .
1733                        "\nvar confirm_changer_statut = '" .
1734                        unicode_to_javascript(addslashes(html2unicode(_T("confirm_changer_statut")))) . 
1735                        "';\n") .
1736                http_script('',_DIR_IMG_PACK . 'presentation.js');
1737}
1738
1739// Fonctions onglets
1740
1741// http://doc.spip.org/@onglet_relief_inter
1742function onglet_relief_inter(){
1743       
1744        echo "<td>&nbsp;</td>";
1745       
1746}
1747
1748// http://doc.spip.org/@debut_onglet
1749function debut_onglet(){
1750
1751        echo "\n\n";
1752        echo "<div style='padding: 7px;'><table cellpadding='0' cellspacing='0' border='0' align='center'>";
1753        echo "<tr>";
1754}
1755
1756// http://doc.spip.org/@fin_onglet
1757function fin_onglet(){
1758        echo "</tr>";
1759        echo "</table></div>\n\n";
1760}
1761
1762// http://doc.spip.org/@onglet
1763function onglet($texte, $lien, $onglet_ref, $onglet, $icone=""){
1764        global $spip_display, $spip_lang_left ;
1765
1766
1767        echo "<td>";
1768       
1769        if ($onglet != $onglet_ref) {
1770                echo "<div style='position: relative;'>";
1771                if ($spip_display != 1) {
1772                        if (strlen($icone) > 0) {
1773                                echo "<div style='z-index: 2; position: absolute; top: 0px; $spip_lang_left: 5px;'>" .
1774                                  http_img_pack("$icone", "", "") . "</div>";
1775                                $style = " top: 7px; padding-$spip_lang_left: 32px; z-index: 1;";
1776                        } else {
1777                                $style = " top: 7px;";
1778                        }
1779                }
1780               
1781                echo "<div onmouseover=\"changeclass(this, 'onglet_on');\" onmouseout=\"changeclass(this, 'onglet');\" class='onglet' style='position: relative;$style'><a href='$lien'>$texte</a></div>";
1782               
1783               
1784                echo "</div>";
1785        } else {
1786                echo "<div style='position: relative;'>";
1787                if ($spip_display != 1) {
1788                        if (strlen($icone) > 0) {
1789                                echo "<div style='z-index: 2; position: absolute; top: 0px; $spip_lang_left: 5px;'>" .
1790                                  http_img_pack("$icone", "", "") . "</div>";
1791                                $style = " top: 7px; padding-$spip_lang_left: 32px; z-index: 1;";
1792                        } else {
1793                                $style = " top: 7px;";
1794                        }
1795                }
1796               
1797                echo "<div class='onglet_off' style='position: relative;$style'>$texte</div>";
1798               
1799               
1800                echo "</div>";
1801        }
1802        echo "</td>";
1803}
1804
1805// http://doc.spip.org/@barre_onglets
1806function barre_onglets($rubrique, $ongletCourant){
1807        $onglets= definir_barre_onglets($rubrique);
1808        if(count($onglets)==0) return;
1809
1810        debut_onglet();
1811
1812        foreach($onglets as $exec => $onglet) {
1813                $url= $onglet->url ? $onglet->url : generer_url_ecrire($exec);
1814                onglet(_T($onglet->libelle), $url,
1815                        $exec, $ongletCourant, $onglet->icone);
1816        }
1817        fin_onglet();
1818}
1819
1820// http://doc.spip.org/@largeur_icone_bandeau_principal
1821function largeur_icone_bandeau_principal($texte) {
1822        global $spip_display, $spip_ecran ;
1823        global $connect_statut, $connect_toutes_rubriques;
1824
1825        if ($spip_display == 1){
1826                $largeur = 80;
1827        }
1828        else if ($spip_display == 3){
1829                $largeur = 60;
1830        }
1831        else {
1832                if (count(explode(" ", $texte)) > 1) $largeur = 84;
1833                else $largeur = 80;
1834        }
1835        if ($spip_ecran == "large") $largeur = $largeur + 30;
1836
1837        if (!($connect_statut == "0minirezo" AND $connect_toutes_rubriques)) {
1838                $largeur = $largeur + 30;
1839        }
1840
1841
1842        return $largeur;
1843}
1844
1845// http://doc.spip.org/@icone_bandeau_principal
1846function icone_bandeau_principal($texte, $lien, $fond, $rubrique_icone = "vide", $rubrique = "", $lien_noscript = "", $sous_rubrique_icone = "", $sous_rubrique = ""){
1847        global $spip_display, $spip_ecran;
1848        global $menu_accesskey, $compteur_survol;
1849
1850        $largeur = largeur_icone_bandeau_principal($texte);
1851
1852
1853        $alt = '';
1854        $title = '';
1855        if ($spip_display == 1){
1856        }
1857        else if ($spip_display == 3){
1858                $title = "title=\"$texte\"";
1859                $alt = $texte;
1860        }
1861        else {
1862                $alt = ' ';
1863        }
1864       
1865        if (!$menu_accesskey = intval($menu_accesskey)) $menu_accesskey = 1;
1866        if ($menu_accesskey < 10) {
1867                $accesskey = " accesskey='$menu_accesskey'";
1868                $menu_accesskey++;
1869        }
1870        else if ($menu_accesskey == 10) {
1871                $accesskey = " accesskey='0'";
1872                $menu_accesskey++;
1873        }
1874
1875        $class_select = ($sous_rubrique_icone == $sous_rubrique) ? " class='selection'" : '';
1876
1877        if (eregi("^javascript:",$lien)) {
1878                $a_href = "<a$accesskey onClick=\"$lien; return false;\" href='$lien_noscript' target='spip_aide'$class_select>";
1879        }
1880        else {
1881                $a_href = "<a$accesskey href=\"$lien\"$class_select>";
1882        }
1883
1884        $compteur_survol ++;
1885
1886        if ($spip_display != 1 AND $spip_display != 4) {
1887                echo "<td class='cellule48' onmouseover=\"changestyle('bandeau$rubrique_icone', 'visibility', 'visible');\" width='$largeur'>$a_href" .
1888                  http_img_pack("$fond", $alt, "$title width='48' height='48'");
1889                if ($spip_display != 3) {
1890                        echo "<span>$texte</span>";
1891                }
1892        }
1893        else echo "<td class='cellule-texte' onmouseover=\"changestyle('bandeau$rubrique_icone', 'visibility', 'visible');\" width='$largeur'>$a_href".$texte;
1894        echo "</a></td>\n";
1895}
1896
1897
1898
1899
1900// http://doc.spip.org/@icone_bandeau_secondaire
1901function icone_bandeau_secondaire($texte, $lien, $fond, $rubrique_icone = "vide", $rubrique, $aide=""){
1902        global $spip_display;
1903        global $menu_accesskey, $compteur_survol;
1904
1905        $alt = '';
1906        $title = '';
1907        $accesskey = '';
1908        if ($spip_display == 1) {
1909                //$hauteur = 20;
1910                $largeur = 80;
1911        }
1912        else if ($spip_display == 3){
1913                //$hauteur = 26;
1914                $largeur = 40;
1915                $title = "title=\"$texte\"";
1916                $alt = $texte;
1917        }
1918        else {
1919                //$hauteur = 68;
1920                if (count(explode(" ", $texte)) > 1) $largeur = 80;
1921                else $largeur = 70;
1922                $alt = " ";
1923        }
1924        if ($aide AND $spip_display != 3) {
1925                $largeur += 50;
1926                //$texte .= aide($aide);
1927        }
1928        if ($spip_display != 3 AND strlen($texte)>16) $largeur += 20;
1929       
1930        if (!$menu_accesskey = intval($menu_accesskey)) $menu_accesskey = 1;
1931        if ($menu_accesskey < 10) {
1932                $accesskey = " accesskey='$menu_accesskey'";
1933                $menu_accesskey++;
1934        }
1935        else if ($menu_accesskey == 10) {
1936                $accesskey = " accesskey='0'";
1937                $menu_accesskey++;
1938        }
1939        if ($spip_display == 3) $accesskey_icone = $accesskey;
1940
1941        $class_select =  ($rubrique_icone != $rubrique) ? '' : " class='selection'";
1942        $compteur_survol ++;
1943
1944        $a_href = "<a$accesskey href=\"$lien\"$class_select>";
1945
1946        if ($spip_display != 1) {
1947                echo "<td class='cellule36' style='width: ".$largeur."px;'>";
1948                echo "$a_href" .
1949                  http_img_pack("$fond", $alt, "$title");
1950                if ($aide AND $spip_display != 3) echo aide($aide)." ";
1951                if ($spip_display != 3) {
1952                        echo "<span>$texte</span>";
1953                }
1954        }
1955        else echo "<td class='cellule-texte' width='$largeur'>$a_href".$texte;
1956        echo "</a>";   
1957        echo "</td>\n";
1958        return $largeur;
1959}
1960
1961
1962
1963// http://doc.spip.org/@icone
1964function icone($texte, $lien, $fond, $fonction="", $align="", $afficher='oui'){
1965        global $spip_display;
1966
1967        if ($fonction == "supprimer.gif") {
1968                $style = '-danger';
1969        } else {
1970                $style = '';
1971                if (strlen($fonction) < 3) $fonction = "rien.gif";
1972        }
1973
1974        if ($spip_display == 1){
1975                $hauteur = 20;
1976                $largeur = 100;
1977                $title = $alt = "";
1978        }
1979        else if ($spip_display == 3){
1980                $hauteur = 30;
1981                $largeur = 30;
1982                $title = "title=\"$texte\"";
1983                $alt = $texte;
1984        }
1985        else {
1986                $hauteur = 70;
1987                $largeur = 100;
1988                $title = '';
1989                $alt = $texte;
1990        }
1991
1992        if ($spip_display != 1 AND $spip_display != 4){
1993                if ($fonction != "rien.gif"){
1994                  $icone = http_img_pack($fonction, $alt, "$title width='24' height='24'" .
1995                                          http_style_background($fond, "no-repeat center center"));
1996                }
1997                else {
1998                        $icone = http_img_pack($fond, $alt, "$title width='24' height='24'");
1999                }
2000        } else $icone = '';
2001
2002        if ($spip_display != 3){
2003                $icone .= "<span>$texte</span>";
2004        }
2005        $icone = "\n<table cellpadding='0' class='pointeur' cellspacing='0' border='0' width='$largeur'" .
2006          ((strlen($align) > 2) ? " align='$align' " : '') .
2007        ">\n<tr><td class='icone36$style' style='text-align:center;'><a
2008        href='$lien'>$icone</a></td>\n</tr></table>";
2009
2010        if ($afficher == 'oui')
2011                echo $icone;
2012        else
2013                return $icone;
2014}
2015
2016// http://doc.spip.org/@icone_horizontale
2017function icone_horizontale($texte, $lien, $fond = "", $fonction = "", $echo = true, $javascript='') {
2018        global $spip_display;
2019
2020        $retour = '';
2021
2022        // cas d'ajax_action_auteur: faut defaire le boulot
2023        // (il faudrait fusionner avec le cas $javascript)
2024        if (preg_match(",^<a href='([^']*)'([^>]*)>(.*)</a>$,i",$lien,$r))
2025          list($x,$lien,$atts,$texte)= $r;
2026        else $atts = '';
2027        $lien = "\nhref='$lien'$atts";
2028
2029        if ($spip_display != 4) {
2030                //if (!$fonction) $fonction = "rien.gif";
2031       
2032                if ($spip_display != 1) {
2033                        $retour .= "<a class='cellule-h' $javascript$lien>"
2034                        . "\n<table cellpadding='0' valign='middle'>"
2035                        . "\n<tr><td><a$lien class='cellule-h'>"
2036                        . "<div class='cell-i'>" ;
2037                        if ($fonction){
2038                                $retour .= http_img_pack($fonction, "", http_style_background($fond, "center center no-repeat"));
2039                        }
2040                        else {
2041                                $retour .= http_img_pack($fond, "", "");
2042                        }
2043                        $retour .= "</a></div></td>"
2044                        . "\n<td class='cellule-h-lien'><a$lien class='cellule-h'>"
2045                        . $texte
2046                        . "</a></td></tr></table></a>\n";
2047                }
2048                else {
2049                        $retour .= "<a class='cellule-h-texte' $javascript$lien><div>$texte</div></a>\n";
2050                }
2051                if ($fonction == "supprimer.gif")
2052                        $retour = "\n<div class='danger'>$retour</div>";
2053        } else {
2054                $retour = "<li><a$lien>$texte</a></li>";
2055        }
2056
2057        if ($echo) echo $retour;
2058        return $retour;
2059}
2060
2061
2062// http://doc.spip.org/@bandeau_barre_verticale
2063function bandeau_barre_verticale(){
2064        echo "<td class='separateur'></td>\n";
2065}
2066
2067
2068// lien changement de couleur
2069// http://doc.spip.org/@lien_change_var
2070function lien_change_var($lien, $set, $couleur, $coords, $titre, $mouseOver="") {
2071        $lien = parametre_url($lien, $set, $couleur);
2072        return "\n<area shape='rect' href='$lien' coords='$coords' title=\"$titre\" alt=' ' $mouseOver>";
2073}
2074
2075//
2076// Presentation de l'interface privee, debut du HTML
2077//
2078
2079// http://doc.spip.org/@debut_page
2080function debut_page($titre = "", $rubrique = "accueil", $sous_rubrique = "accueil", $onLoad = "", $css="", $id_rubrique = "") {
2081
2082        utiliser_langue_visiteur();
2083        init_entete($titre, $rubrique, $css);
2084        definir_barre_boutons();
2085        init_body($rubrique, $sous_rubrique, $onLoad, $id_rubrique);
2086        debut_corps_page($rubrique);
2087}
2088 
2089// http://doc.spip.org/@init_entete
2090function init_entete($titre, $rubrique, $css='') {
2091
2092        if (!$nom_site_spip = textebrut(typo($GLOBALS['meta']["nom_site"])))
2093                $nom_site_spip=  _T('info_mon_site_spip');
2094
2095        // envoi des en-tetes, du doctype et du <head><title...
2096        include_spip('inc/headers');
2097        http_no_cache();
2098        $head = _DOCTYPE_ECRIRE
2099                . "<html lang='".$GLOBALS['spip_lang']."' dir='"
2100                . ($GLOBALS['spip_lang_rtl'] ? 'rtl' : 'ltr')
2101                . "'>\n<head>\n<title>["
2102                . $nom_site_spip
2103                . "] " . textebrut(typo($titre)) . "</title>\n"
2104                . envoi_link($nom_site_spip, $rubrique)
2105                . (!$css ? "" : (
2106                        '<link rel="stylesheet" href="' . entites_html($css)
2107                        . '" type="text/css" />'. "\n"
2108                ) ) ."\n";
2109
2110        echo pipeline('header_prive', $head)
2111                . "</head>\n";
2112}
2113
2114// fonction envoyant la double serie d'icones de redac
2115// http://doc.spip.org/@init_body
2116function init_body($rubrique='accueil', $sous_rubrique='accueil', $onLoad='', $id_rubrique='') {
2117        global $couleur_foncee, $couleur_claire;
2118        global $connect_id_auteur;
2119        global $connect_statut;
2120        global $connect_toutes_rubriques;
2121        global $auth_can_disconnect, $connect_login;
2122        global $options, $spip_display, $spip_ecran;
2123        global $spip_lang, $spip_lang_rtl, $spip_lang_left, $spip_lang_right;
2124        global $browser_verifForm;
2125
2126        echo pipeline('body_prive',"<body ". _ATTRIBUTES_BODY
2127                . ' onLoad="'
2128                . "$browser_verifForm$onLoad"
2129                . '">');
2130
2131        if ($spip_ecran == "large") $largeur = 974;
2132        else $largeur = 750;
2133
2134        echo "\n<map name='map_layout'>";
2135        echo lien_change_var (self(), 'set_disp', 1, '1,0,18,15', _T('lien_afficher_texte_seul'), "onmouseover=\"changestyle('bandeauvide','visibility', 'visible');\"");
2136        echo lien_change_var (self(), 'set_disp', 2, '19,0,40,15', _T('lien_afficher_texte_icones'), "onmouseover=\"changestyle('bandeauvide','visibility', 'visible');\"");
2137        echo lien_change_var (self(), 'set_disp', 3, '41,0,59,15', _T('lien_afficher_icones_seuls'), "onmouseover=\"changestyle('bandeauvide','visibility', 'visible');\"");
2138        echo "\n</map>";
2139
2140
2141
2142        if ($spip_display == "4") {
2143                // Icones principales
2144                echo "<ul>";
2145                echo "<li><a href='./'>"._T('icone_a_suivre')."</a>";
2146                echo "<li><a href='" . generer_url_ecrire("naviguer") . "'>"._T('icone_edition_site')."</a>";
2147                echo "<li><a href='" . generer_url_ecrire("forum"). "'>"._T('titre_forum')."</a>";
2148                echo "<li><a href='" . generer_url_ecrire("auteurs") . "'>"._T('icone_auteurs')."</a>";
2149                echo "<li><a href=\"".url_de_base()."\">"._T('icone_visiter_site')."</a>";
2150                echo "</ul>";
2151
2152                return;
2153        }
2154
2155        // iframe permettant de passer les changements de statut rapides
2156        echo "<iframe id='iframe_action' name='iframe_action' width='1' height='1' style='position: absolute; visibility: hidden;'></iframe>";
2157
2158        // Lien oo
2159        echo "<div class='invisible_au_chargement' style='position: absolute; height: 0px; visibility: hidden;'><a href='oo'>"._T("access_mode_texte")."</a></div>";
2160       
2161        echo "<div id='haut-page'>";
2162
2163        // Icones principales
2164        echo "<div class='bandeau-principal' align='center'>\n";
2165        echo "<div class='bandeau-icones'>\n";
2166        echo "<table width='$largeur' cellpadding='0' cellspacing='0' border='0' align='center'><tr>\n";
2167
2168        foreach($GLOBALS['boutons_admin'] as $page => $detail) {
2169                if($page=='espacement') {
2170                        echo "<td> &nbsp; </td>";
2171                } else {
2172                        if ($detail->url)
2173                                $lien_noscript = $detail->url;
2174                        else
2175                                $lien_noscript = generer_url_ecrire($page);
2176
2177                        if ($detail->url2)
2178                                $lien = $detail->url2;
2179                        else
2180                                $lien = $lien_noscript;
2181
2182                        icone_bandeau_principal(
2183                                _T($detail->libelle),
2184                                $lien,
2185                                $detail->icone,
2186                                $page,
2187                                $rubrique,
2188                                $lien_noscript,
2189                                $page,
2190                                $sous_rubrique);
2191                }
2192        }
2193        echo "</tr></table>\n";
2194
2195        echo "</div>\n";
2196
2197        echo "<table width='$largeur' cellpadding='0' cellspacing='0' align='center'><tr><td>";
2198        echo "<div style='text-align: $spip_lang_left; width: ".$largeur."px; position: relative; z-index: 2000;'>";
2199
2200        // Icones secondaires
2201
2202        global $browser_name;
2203        $coeff_decalage = 0;
2204        if ($browser_name=="MSIE")
2205                $coeff_decalage = 1.0;
2206        $decal=0;
2207        $largitem_moy = 85;
2208        $largeur_maxi_menu = $largeur-100;
2209
2210        foreach($GLOBALS['boutons_admin'] as $page => $detail) {
2211                if (($rubrique == $page) AND ($_COOKIE['spip_accepte_ajax']==-1)) {
2212                        $class = "visible_au_chargement";
2213                } else {
2214                        $class = "invisible_au_chargement";
2215                }
2216
2217                $sousmenu= $detail->sousmenu;
2218                if($sousmenu) {
2219                        $offset = (int)round($decal-$coeff_decalage*max(0,($decal+count($sousmenu)*$largitem_moy-$largeur_maxi_menu)));
2220                        if ($offset<0){ $offset = 0; }
2221                        echo "<div class='$class' id='bandeau$page' style='position: absolute; $spip_lang_left: ".$offset."px;'><div class='bandeau_sec'><table class='gauche'><tr>\n";
2222                        $width=0;
2223                        foreach($sousmenu as $souspage => $sousdetail) {
2224                                if ($width+1.25*$largitem_moy>$largeur_maxi_menu){echo "</tr><tr>\n";$width=0;}
2225                                if($souspage=='espacement') {
2226                                        if ($width>0){
2227                                                echo "<td class='separateur'></td>\n";
2228                                                $largitem = 0;
2229                                        }
2230                                } else {
2231                                        $largitem = icone_bandeau_secondaire (_T($sousdetail->libelle), generer_url_ecrire($sousdetail->url?$sousdetail->url:$souspage, $sousdetail->urlArg), $sousdetail->icone, $souspage, $sous_rubrique);
2232                                }
2233                                $width+=$largitem+10;
2234                        }
2235                        echo "</tr></table></div></div>";
2236                }
2237               
2238                $decal += largeur_icone_bandeau_principal(_T($detail->libelle));
2239        }
2240
2241        echo "</div>";
2242       
2243        echo "</td></tr></table>";
2244       
2245        echo "</div>\n"; // referme: <div class='bandeau-principal' align='center'>"
2246
2247        //
2248        // Bandeau colore
2249        //
2250
2251if (true /*$bandeau_colore*/) {
2252        if ($rubrique == "administration") {
2253                $style = "background: url(" . _DIR_IMG_PACK . "rayures-danger.png); background-color: $couleur_foncee";
2254                echo "<style>a.icone26 { color: white; }</style>";
2255        }
2256        else {
2257                $style = "background-color: $couleur_claire";
2258        }
2259
2260        echo "\n<div style=\"max-height: 40px; width: 100%; border-bottom: solid 1px white;$style\">";
2261        echo "<table align='center' cellpadding='0' background='' width='$largeur'><tr width='$largeur'>";
2262
2263        echo "<td valign='middle' class='bandeau_couleur' style='text-align: $spip_lang_left;'>";
2264
2265        echo "<a href='" . generer_url_ecrire("articles_tous") . "' class='icone26' onmouseover=\"changestyle('bandeautoutsite','visibility','visible');\">",
2266                  http_img_pack("tout-site.png", "", "width='26' height='20'") . "</a>";
2267                if ($id_rubrique > 0) echo "<a href='" . generer_url_ecrire("brouteur","id_rubrique=$id_rubrique") . "' class='icone26' onmouseover=\"changestyle('bandeaunavrapide','visibility','visible');\">" .
2268                  http_img_pack("naviguer-site.png", "", "width='26' height='20'") ."</a>";
2269                else echo "<a href='" . generer_url_ecrire("brouteur") . "' class='icone26' onmouseover=\"changestyle('bandeaunavrapide','visibility','visible');\" >" .
2270                  http_img_pack("naviguer-site.png", "", "width='26' height='20'") . "</a>";
2271
2272                echo "<a href='" . generer_url_ecrire("recherche") . "' class='icone26' onmouseover=\"changestyle('bandeaurecherche','visibility','visible'); findObj('form_recherche').focus();\" >" .
2273                  http_img_pack("loupe.png", "", "width='26' height='20'") ."</a>";
2274
2275                echo http_img_pack("rien.gif", " ", "width='10'");
2276
2277                echo "<a href='" . generer_url_ecrire("calendrier","type=semaine") . "' class='icone26' onmouseover=\"changestyle('bandeauagenda','visibility','visible');\">" .
2278                  http_img_pack("cal-rv.png", "", "width='26' height='20'") ."</a>";
2279                echo "<a href='" . generer_url_ecrire("messagerie") . "' class='icone26' onmouseover=\"changestyle('bandeaumessagerie','visibility','visible');\">" .
2280                  http_img_pack("cal-messagerie.png", "", "width='26' height='20'") ."</a>";
2281                echo "<a href='" . generer_url_ecrire("synchro") . "' class='icone26' onmouseover=\"changestyle('bandeausynchro','visibility','visible');\">" .
2282                  http_img_pack("cal-suivi.png", "", "width='26' height='20'") . "</a>";
2283               
2284
2285                if (!($connect_statut == "0minirezo" AND $connect_toutes_rubriques)) {
2286                        echo http_img_pack("rien.gif", " ", "width='10'");
2287                        echo "<a href='" . generer_url_ecrire("auteurs_edit","id_auteur=$connect_id_auteur") . "' class='icone26' onmouseover=\"changestyle('bandeauinfoperso','visibility','visible');\">" .
2288                          http_img_pack("fiche-perso.png", "", "onmouseover=\"changestyle('bandeauvide','visibility', 'visible');\"");
2289                        echo "</a>";
2290                }
2291               
2292        echo "</td>";
2293        echo "<td valign='middle' class='bandeau_couleur' style='text-align: $spip_lang_left;'>";
2294                // overflow pour masquer les noms tres longs (et eviter debords, notamment en ecran etroit)
2295                if ($spip_ecran == "large") $largeur_nom = 300;
2296                else $largeur_nom= 110;
2297                echo "<div style='width: ".$largeur_nom."px; height: 14px; overflow: hidden;'>";
2298                // Redacteur connecte
2299                echo typo($GLOBALS['auteur_session']['nom']);
2300                echo "</div>";
2301       
2302        echo "</td>";
2303
2304        echo "<td> &nbsp; </td>";
2305
2306
2307        echo "<td class='bandeau_couleur' style='text-align: $spip_lang_right;' valign='middle'>";
2308
2309                        // Choix display
2310                //      echo"<img src=_DIR_IMG_PACK . 'rien.gif' width='10' />";
2311                        if ($options != "avancees") {
2312                                $lien = parametre_url(self(), 'set_options', 'avancees');
2313                                $icone = "interface-display-comp.png";
2314                        } else {
2315                                $lien = parametre_url(self(), 'set_options', 'basiques');
2316                                $icone = "interface-display.png";
2317                        }
2318                        echo "<a href='$lien' class='icone26' onmouseover=\"changestyle('bandeaudisplay','visibility', 'visible');\">" .
2319                          http_img_pack("$icone", "", "width='26' height='20'")."</a>";
2320
2321                        echo http_img_pack("rien.gif", " ", "width='10' height='1'");
2322                        echo http_img_pack("choix-layout$spip_lang_rtl".($spip_lang=='he'?'_he':'').".gif", "abc", "class='format_png' valign='middle' width='59' height='15' usemap='#map_layout'");
2323
2324
2325                        echo http_img_pack("rien.gif", " ", "width='10' height='1'");
2326                        // grand ecran
2327                        if ($spip_ecran == "large") {
2328                                $i = _T('info_petit_ecran');
2329                                echo "<a href='". parametre_url(self(),'set_ecran', 'etroit') ."' class='icone26' onmouseover=\"changestyle('bandeauecran','visibility', 'visible');\" title=\"$i\">" .
2330                                  http_img_pack("set-ecran-etroit.png", $i, "width='26' height='20'") . "</a>";
2331                                $ecran = "<div><a href='".parametre_url(self(),'set_ecran', 'etroit')."' class='lien_sous'>"._T('info_petit_ecran')."</a>/<b>"._T('info_grand_ecran')."</b></div>";
2332                        }
2333                        else {
2334                                $i = _T('info_grand_ecran');
2335                                echo "<a href='".parametre_url(self(),'set_ecran', 'large')."' class='icone26' onmouseover=\"changestyle('bandeauecran','visibility', 'visible');\" title=\"$i\">" .
2336                                  http_img_pack("set-ecran.png", $i, "width='26' height='20'") ."</a>";
2337                                $ecran = "<div><b>"._T('info_petit_ecran')."</b>/<a href='".parametre_url(self(),'set_ecran', 'large')."' class='lien_sous'>"._T('info_grand_ecran')."</a></div>";
2338                        }
2339
2340                echo "</td>";
2341               
2342                echo "<td class='bandeau_couleur' style='width: 60px; text-align:$spip_lang_left;' valign='middle'>";
2343                choix_couleur();
2344               
2345                echo "</td>";
2346        //
2347        // choix de la langue
2348        //
2349        if ($GLOBALS['all_langs']) {
2350                echo "<td class='bandeau_couleur' style='width: 100px; text-align: $spip_lang_right;' valign='middle'>";
2351                echo menu_langues('var_lang_ecrire');
2352                echo "</td>";
2353        }
2354
2355                echo "<td class='bandeau_couleur' style='text-align: $spip_lang_right; width: 28px;' valign='middle'>";
2356
2357                if ($auth_can_disconnect) {
2358                        echo "<a href='",
2359                          generer_url_action("logout","logout=prive"),
2360                          "' class='icone26' onmouseover=\"changestyle('bandeaudeconnecter','visibility', 'visible');\">",
2361                          http_img_pack("deconnecter-24.gif", "", ""),
2362                          "</a>";
2363                        }
2364                echo "</td>";
2365       
2366       
2367        echo "</tr></table>";
2368
2369} // fin bandeau colore
2370
2371
2372        // <div> pour la barre des gadgets
2373        // (elements invisibles qui s'ouvrent sous la barre precedente)
2374        include_spip('inc/gadgets');
2375        echo bandeau_gadgets($largeur, $options, $id_rubrique);
2376        $GLOBALS['id_rubrique_gadgets'] = $id_rubrique;  # un peu sale
2377
2378        echo "</div>";
2379        echo "</div>";
2380
2381        if ($options != "avancees") echo "<div style='height: 18px;'>&nbsp;</div>";
2382}
2383
2384
2385// http://doc.spip.org/@debut_corps_page
2386function debut_corps_page($rubrique='') {
2387        global $couleur_foncee;
2388        global $connect_id_auteur;
2389 
2390        // Ouverture de la partie "principale" de la page
2391
2392        echo "<center onmouseover='recherche_desesperement()'>";
2393
2394        $result_messages = spip_query("SELECT lien.id_message FROM spip_messages AS messages, spip_auteurs_messages AS lien WHERE lien.id_auteur=$connect_id_auteur AND vu='non' AND statut='publie' AND type='normal' AND lien.id_message=messages.id_message");
2395        $total_messages = @spip_num_rows($result_messages);
2396        if ($total_messages == 1) {
2397                                while($row = @spip_fetch_array($result_messages)) {
2398                                        $ze_message=$row['id_message'];
2399                                        echo "<div class='messages'><a href='" . generer_url_ecrire("message","id_message=$ze_message") . "'><font color='$couleur_foncee'>"._T('info_nouveau_message')."</font></a></div>";
2400                                }
2401                        }
2402                        if ($total_messages > 1) echo "<div class='messages'><a href='" . generer_url_ecrire("messagerie") . "'><font color='$couleur_foncee'>"._T('info_nouveaux_messages', array('total_messages' => $total_messages))."</font></a></div>";
2403
2404
2405        // Afficher les auteurs recemment connectes
2406       
2407        global $changer_config;
2408        global $activer_imessage;
2409
2410        if ($changer_config!="oui"){
2411                $activer_imessage = "oui";
2412        }
2413       
2414                        if ($activer_imessage != "non") {
2415                                $result_auteurs = spip_query("SELECT id_auteur, nom FROM spip_auteurs WHERE id_auteur!=$connect_id_auteur AND imessage!='non' AND en_ligne>DATE_SUB(NOW(),INTERVAL 15 MINUTE) AND statut IN ('0minirezo','1comite')");
2416
2417                                $nb_connectes = spip_num_rows($result_auteurs);
2418                        }
2419                               
2420                        $flag_cadre = (($nb_connectes > 0) OR $rubrique == "messagerie");
2421                        if ($flag_cadre) echo "<div class='messages' style='color: #666666;'>";
2422
2423                       
2424                        if ($nb_connectes > 0) {
2425                                if ($nb_connectes > 0) {
2426                                        echo "<b>"._T('info_en_ligne')."</b>";
2427                                        while ($row = spip_fetch_array($result_auteurs)) {
2428                                                $id_auteur = $row["id_auteur"];
2429                                                $nom_auteur = typo($row["nom"]);
2430                                                echo " &nbsp; ".bouton_imessage($id_auteur,$row)."&nbsp;<a href='" . generer_url_ecrire("auteurs_edit","id_auteur=$id_auteur") . "' style='color: #666666;'>$nom_auteur</a>";
2431                                        }
2432                                }
2433                        }
2434                        if ($flag_cadre) echo "</div>";
2435}
2436
2437
2438// http://doc.spip.org/@gros_titre
2439function gros_titre($titre, $ze_logo='', $aff=true){
2440        global $couleur_foncee, $spip_display;
2441        if ($spip_display == 4) {
2442                $res = "\n<h1>".typo($titre)."</h1>&nbsp;\n";
2443        }
2444        else {
2445                $res = "<div class='verdana2' style='font-size: 18px; color: $couleur_foncee; font-weight: bold;'>" .
2446                  (strlen($ze_logo) <= 3 ? '':  (http_img_pack($ze_logo, "", "align='middle'") . " &nbsp; ")) .
2447                  typo($titre) .
2448                  "</div>\n";
2449        }
2450        if ($aff) echo $res; else return $res;
2451}
2452
2453
2454//
2455// Cadre centre (haut de page)
2456//
2457
2458// http://doc.spip.org/@debut_grand_cadre
2459function debut_grand_cadre(){
2460        global $spip_ecran;
2461       
2462        if ($spip_ecran == "large") $largeur = 974;
2463        else $largeur = 750;
2464        echo "\n<br><br><table width='$largeur' cellpadding='0' cellspacing='0' border='0'>";
2465        echo "\n<tr>";
2466        echo "<td width='$largeur' class='serif'>";
2467
2468}
2469
2470// http://doc.spip.org/@fin_grand_cadre
2471function fin_grand_cadre(){
2472        echo "\n</td></tr></table>";
2473}
2474
2475// Cadre formulaires
2476
2477// http://doc.spip.org/@debut_cadre_formulaire
2478function debut_cadre_formulaire($style=''){
2479        echo "\n<div class='cadre-formulaire'" .
2480          (!$style ? "" : " style='$style'") .
2481           ">";
2482}
2483
2484// http://doc.spip.org/@fin_cadre_formulaire
2485function fin_cadre_formulaire(){
2486        echo "</div>\n";
2487}
2488
2489
2490
2491//
2492// Debut de la colonne de gauche
2493//
2494
2495// http://doc.spip.org/@debut_gauche
2496function debut_gauche($rubrique = "accueil") {
2497        global $connect_statut;
2498        global $options, $spip_display;
2499        global $connect_id_auteur;
2500        global $spip_ecran;
2501        global $flag_3_colonnes, $flag_centre_large;
2502        global $spip_lang_rtl;
2503
2504        $flag_3_colonnes = false;
2505        $largeur = 200;
2506
2507        // Ecran panoramique ?
2508        if ($spip_ecran == "large") {
2509                $largeur_ecran = 974;
2510               
2511                // Si edition de texte, formulaires larges
2512                if (ereg('((articles|breves|rubriques)_edit|forum_envoi)', $GLOBALS['REQUEST_URI'])) {
2513                        $flag_centre_large = true;
2514                }
2515               
2516                $flag_3_colonnes = true;
2517                $rspan = " rowspan=2";
2518
2519        }
2520        else {
2521                $largeur_ecran = 750;
2522                $rspan = '';
2523        }
2524
2525        echo "<br /><table width='$largeur_ecran' cellpadding='0' cellspacing='0' border='0'>
2526                <tr><td width='$largeur' class='colonne_etroite serif' valign='top' $rspan>
2527                <div style='width: ${largeur}px; overflow:hidden;'>
2528\n";
2529               
2530        if ($spip_display == 4) echo "<!-- ";
2531
2532}
2533
2534
2535//
2536// Presentation de l''interface privee, marge de droite
2537//
2538
2539// http://doc.spip.org/@creer_colonne_droite
2540function creer_colonne_droite($rubrique=""){
2541        global $deja_colonne_droite;
2542        global $flag_3_colonnes, $flag_centre_large;
2543        global $spip_lang_rtl, $spip_lang_left;
2544
2545        if ($flag_3_colonnes AND !$deja_colonne_droite) {
2546                $deja_colonne_droite = true;
2547
2548                if ($flag_centre_large) {
2549                        $espacement = 17;
2550                        $largeur = 140;
2551                }
2552                else {
2553                        $espacement = 37;
2554                        $largeur = 200;
2555                }
2556
2557
2558                echo "<td width=$espacement rowspan=2 class='colonne_etroite'>&nbsp;</td>";
2559                echo "<td rowspan=1 class='colonne_etroite'></td>";
2560                echo "<td width=$espacement rowspan=2 class='colonne_etroite'>&nbsp;</td>";
2561                echo "<td width=$largeur rowspan=2 align='$spip_lang_left' valign='top' class='colonne_etroite'><p />";
2562
2563        }
2564
2565}
2566
2567// http://doc.spip.org/@debut_droite
2568function debut_droite($rubrique="") {
2569        global $options, $spip_ecran, $deja_colonne_droite, $spip_display;
2570        global $connect_id_auteur, $connect_statut, $connect_toutes_rubriques;
2571        global $flag_3_colonnes, $flag_centre_large, $couleur_foncee, $couleur_claire;
2572        global $spip_lang_left;
2573
2574        if ($spip_display == 4) echo " -->";
2575
2576        echo "</div>\n"; # largeur fixe, cf. debut_gauche
2577
2578        if ($options == "avancees") {
2579                // liste des articles bloques
2580                if ($GLOBALS['meta']["articles_modif"] != "non") {
2581                        include_spip('inc/drapeau_edition');
2582                        $articles_ouverts = liste_drapeau_edition ($connect_id_auteur, 'article');
2583                        if (count($articles_ouverts)) {
2584
2585
2586
2587                //      $vos_articles = spip_query("SELECT id_article, id_rubrique, titre, statut FROM spip_articles WHERE statut='prop' ORDER BY date DESC LIMIT 5");
2588                //      if (spip_num_rows($vos_articles) > 0) {
2589                                echo "<div>&nbsp;</div>";
2590                                echo "<div class='bandeau_rubriques' style='z-index: 1;'>";
2591                                echo bandeau_titre_boite2(_T('info_cours_edition'), "article-24.gif", $couleur_foncee, 'white', false);
2592                                echo "<div class='plan-articles-bloques'>";
2593
2594
2595                                foreach ($articles_ouverts as $row) {
2596                                        $ze_article = $row['id_article'];
2597                                        $ze_titre = $row['titre'];
2598                                        $statut = $row["statut"];
2599                                       
2600                                        echo "<div class='$statut'><a style='font-size: 10px;' href='" . generer_url_ecrire("articles","id_article=$ze_article") . "'>$ze_titre</a>";
2601
2602                                        $nb_liberer ++;
2603                                        echo "<div style='text-align:right; font-size: 9px;'>", debloquer_article($ze_article,_T('lien_liberer')), "</div>";
2604
2605                                        echo "</div>";
2606
2607                                }
2608                                echo "</div></div>";
2609                        }
2610                }
2611               
2612                if (!$deja_colonne_droite) creer_colonne_droite($rubrique);
2613        }
2614
2615        echo "<div>&nbsp;</div></td>";
2616
2617        if (!$flag_3_colonnes) {
2618                echo "<td width='50'>&nbsp;</td>";
2619        }
2620        else {
2621                if (!$deja_colonne_droite) {
2622                        creer_colonne_droite($rubrique);
2623                }
2624                echo "</td></tr><tr>";
2625        }
2626
2627        if ($spip_ecran == 'large' AND $flag_centre_large)
2628                $largeur = 600;
2629        else
2630                $largeur = 500;
2631
2632        echo '<td width="'.$largeur.'" valign="top" align="'.$spip_lang_left.'" rowspan="1" class="serif">';
2633
2634        // touche d'acces rapide au debut du contenu
2635        echo "\n<a name='saut' href='#saut' accesskey='s'></a>\n";
2636}
2637
2638
2639//
2640// Presentation de l'interface privee, fin de page et flush()
2641//
2642
2643// http://doc.spip.org/@fin_html
2644function fin_html() {
2645
2646        echo "</font>", $GLOBALS['rejoue_session'];
2647
2648        if (function_exists('dessiner_gadgets'))
2649                echo dessiner_gadgets($GLOBALS['id_rubrique_gadgets']);
2650        if (defined('_TESTER_NOSCRIPT'))
2651                echo _TESTER_NOSCRIPT;
2652
2653        echo "</body></html>\n";
2654}
2655
2656
2657// http://doc.spip.org/@fin_page
2658function fin_page($credits='') {
2659        global $spip_display;
2660
2661        echo "</td></tr></table>";
2662
2663        debut_grand_cadre();
2664
2665        # ici on en profite pour glisser une tache de fond
2666
2667        echo generer_spip_cron();
2668
2669        if ($spip_display == 4) {
2670          echo "<div><a href='./?set_disp=2'>",
2671            _T("access_interface_graphique"),
2672            "</a></div>";
2673        } else {
2674          echo '<div style="text-align: right; font-family: Verdana; font-size: 8pt">',
2675            info_copyright(), "<br />",_T('info_copyright_doc'),'</div>' ;
2676        }
2677
2678        fin_grand_cadre();
2679        echo "</center>";
2680
2681        fin_html();
2682}
2683
2684// http://doc.spip.org/@debloquer_article
2685function debloquer_article($arg, $texte) {
2686        $lien = parametre_url(self(), 'debloquer_article', $arg, '&');
2687        return "<a href='" .
2688          generer_action_auteur('instituer_collaboration',$arg, _DIR_RESTREINT_ABS . $lien) .
2689          "' title=\"" .
2690          entites_html($texte) .
2691          "\">$texte&nbsp;" .
2692          http_img_pack("croix-rouge.gif", ($arg=='tous' ? "" : "X"),
2693                        "width='7' height='7' align='baseline'") .
2694          "</a>";
2695}
2696
2697//
2698// Afficher la hierarchie des rubriques
2699//
2700
2701// http://doc.spip.org/@afficher_hierarchie
2702function afficher_hierarchie($id_rubrique, $parents="") {
2703        global $spip_lang_left;
2704
2705        if ($id_rubrique) {
2706                $result = spip_query("SELECT id_rubrique, id_parent, titre, lang FROM spip_rubriques WHERE id_rubrique=$id_rubrique");
2707
2708                while ($row = spip_fetch_array($result)) {
2709                        $id_rubrique = $row['id_rubrique'];
2710                        $id_parent = $row['id_parent'];
2711                        $titre = sinon($row['titre'], _T('ecrire:info_sans_titre'));
2712                        changer_typo($row['lang']);
2713
2714                        if (acces_restreint_rubrique($id_rubrique))
2715                                $logo = "admin-12.gif";
2716                        if (!$id_parent)
2717                                $logo = "secteur-12.gif";
2718                        else
2719                                $logo = "rubrique-12.gif";
2720
2721
2722                        $parents = "<div class='verdana3' ". 
2723                          http_style_background($logo, "$spip_lang_left center no-repeat; padding-$spip_lang_left: 15px"). 
2724                          "><a href='" . generer_url_ecrire("naviguer","id_rubrique=$id_rubrique") . "'>".typo($titre)."</a></div>\n<div style='margin-$spip_lang_left: 15px;'>".$parents."</div>";
2725
2726
2727                }
2728                afficher_hierarchie($id_parent, $parents);
2729        }
2730        else {
2731                $logo = "racine-site-12.gif";
2732                $parents = "<div class='verdana3' " .
2733                  http_style_background($logo, "$spip_lang_left center no-repeat; padding-$spip_lang_left: 15px"). 
2734                  "><a href='" . generer_url_ecrire("naviguer","id_rubrique=$id_rubrique") . "'><b>"._T('lien_racine_site')."</b></a>".aide ("rubhier")."</div>\n<div style='margin-$spip_lang_left: 15px;'>".$parents."</div>";
2735       
2736                echo $parents;
2737               
2738        }
2739}
2740
2741// Pour construire des menu avec SELECTED
2742// http://doc.spip.org/@mySel
2743function mySel($varaut,$variable, $option = NULL) {
2744        $res = ' value="'.$varaut.'"' . (($variable==$varaut) ? ' selected="selected"' : '');
2745
2746        return  (!isset($option) ? $res : "<option$res>$option</option>\n");
2747}
2748
2749
2750// Voir en ligne, ou apercu, ou rien (renvoie tout le bloc)
2751// http://doc.spip.org/@voir_en_ligne
2752function voir_en_ligne ($type, $id, $statut=false, $image='racine-24.gif') {
2753        global $connect_statut;
2754
2755        $en_ligne = $message = '';
2756        switch ($type) {
2757                case 'article':
2758                        if ($statut == "publie" AND $GLOBALS['meta']["post_dates"] == 'non') {
2759                                $n = spip_fetch_array(spip_query("SELECT id_article FROM spip_articles WHERE id_article=$id AND date<=NOW()"));
2760                                if (!$n) $statut = 'prop';
2761                        }
2762                        if ($statut == 'publie')
2763                                $en_ligne = 'calcul';
2764                        else if ($statut == 'prop')
2765                                $en_ligne = 'preview';
2766                        break;
2767                case 'rubrique':
2768                        if ($id > 0)
2769                                if ($statut == 'publie')
2770                                        $en_ligne = 'calcul';
2771                                else
2772                                        $en_ligne = 'preview';
2773                        break;
2774                case 'breve':
2775                case 'auteur':
2776                case 'site':
2777                        if ($statut == 'publie')
2778                                $en_ligne = 'calcul';
2779                        else if ($statut == 'prop')
2780                                $en_ligne = 'preview';
2781                        break;
2782                case 'mot':
2783                        $en_ligne = 'calcul';
2784                        break;
2785        }
2786
2787        if ($en_ligne == 'calcul')
2788                $message = _T('icone_voir_en_ligne');
2789        else if ($en_ligne == 'preview') {
2790                // est-ce autorise ?
2791                if (($GLOBALS['meta']['preview'] == 'oui' AND $connect_statut=='0minirezo')
2792                        OR ($GLOBALS['meta']['preview'] == '1comite'))
2793                        $message = _T('previsualiser');
2794                else
2795                        $message = '';
2796        }
2797
2798        if ($message)
2799                icone_horizontale($message, generer_url_action('redirect', "id_$type=$id&var_mode=$en_ligne"), $image, "rien.gif");
2800
2801}
2802
2803//
2804// Creer un bouton qui renvoie vers la bonne url spip_rss
2805// http://doc.spip.org/@bouton_spip_rss
2806function bouton_spip_rss($op, $args, $fmt='rss') {
2807
2808        include_spip('inc/acces');
2809        $a = '';
2810        if (is_array($args))
2811                foreach ($args as $val => $var)
2812                        if ($var) $a .= ':' . $val.'-'.$var;
2813        $a = substr($a,1);
2814
2815        $url = generer_url_action('rss', "op=$op" 
2816                            . (!$a ? "" : "&args=$a")
2817                            . ('&id=' . $GLOBALS['connect_id_auteur'])
2818                            . ('&cle=' . afficher_low_sec($GLOBALS['connect_id_auteur'], "rss $op $a"))
2819                            . ('&lang=' . $GLOBALS['spip_lang']));
2820
2821        switch($fmt) {
2822                case 'ical':
2823                        $url = preg_replace(',^.*?://,', 'webcal://', $url)
2824                          . "&amp;fmt=ical";
2825                        $button = 'iCal';
2826                        break;
2827                case 'atom':
2828                        $button = 'atom';
2829                        break;
2830                case 'rss':
2831                default:
2832                 
2833                        $button = 'RSS';
2834                        break;
2835        }
2836
2837        return "<a href='"
2838        . $url
2839        . "'>"
2840        . http_img_pack('feed.png', $button, '')
2841        . "</a>";
2842}
2843
2844
2845// Fonction pour la messagerie et la page d'accueil
2846
2847// http://doc.spip.org/@http_calendrier_rv
2848function http_calendrier_rv($messages, $type) {
2849        global $spip_lang_rtl, $spip_lang_left, $spip_lang_right;
2850
2851        $total = '';
2852        if (!$messages) return $total;
2853        foreach ($messages as $row) {
2854                if (ereg("^=([^[:space:]]+)$",$row['texte'],$match))
2855                        $url = quote_amp($match[1]);
2856                else
2857                        $url = generer_url_ecrire("message", "id_message=".$row['id_message']);
2858
2859                $rv = ($row['rv'] == 'oui');
2860                $date = $row['date_heure'];
2861                $date_fin = $row['date_fin'];
2862                if ($row['type']=="pb") $bouton = "pense-bete";
2863                else if ($row['type']=="affich") $bouton = "annonce";
2864                else $bouton = "message";
2865
2866                if ($rv) {
2867                        $date_jour = affdate_jourcourt($date);
2868                        $total .= "<tr><td colspan='2'>" .
2869                                (($date_jour == $date_rv) ? '' :
2870                                "<div  class='calendrier-arial11'><b>$date_jour</b></div>") .
2871                                "</td></tr>";
2872                        $date_rv = $date_jour;
2873                        $rv =
2874                ((affdate($date) == affdate($date_fin)) ?
2875                 ("<div class='calendrier-arial9 fond-agenda'>"
2876                  . heures($date).":".minutes($date)."<br />"
2877                  . heures($date_fin).":".minutes($date_fin)."</div>") :
2878                ( "<div class='calendrier-arial9 fond-agenda' style='text-align: center;'>"
2879                  . heures($date).":".minutes($date)."<br />...</div>" ));
2880                }
2881
2882                $total .= "<tr><td style='width: 24px' valign='middle'>" .
2883                  http_href($url,
2884                                     ($rv ?
2885                                      http_img_pack("rv.gif", 'rv',
2886                                                    http_style_background($bouton . '.gif', "no-repeat;'")) : 
2887                                      http_img_pack($bouton.".gif", $bouton, "")),
2888                                     '', '') .
2889                "</td>" .
2890                "<td valign='middle'>" .
2891                $rv .
2892                "<div><b>" .
2893                  http_href($url, typo($row['titre']), '', '', 'calendrier-verdana10') .
2894                "</b></div>" .
2895                "</td>" .
2896                "</tr>\n";
2897        }
2898
2899        if ($type == 'annonces') {
2900                $titre = _T('info_annonces_generales');
2901                $couleur_titre = "ccaa00";
2902                $couleur_texte = "black";
2903                $couleur_fond = "#ffffee";
2904        }
2905        else if ($type == 'pb') {
2906                $titre = _T('infos_vos_pense_bete');
2907                $couleur_titre = "#3874B0";
2908                $couleur_fond = "#EDF3FE";
2909                $couleur_texte = "white";
2910        }
2911        else if ($type == 'rv') {
2912                $titre = _T('info_vos_rendez_vous');
2913                $couleur_titre = "#666666";
2914                $couleur_fond = "#eeeeee";
2915                $couleur_texte = "white";
2916        }
2917
2918        return
2919          debut_cadre_enfonce("", true, "", $titre) .
2920          "<table width='100%' border='0' cellpadding='0' cellspacing='2'>" .
2921          $total .
2922          "</table>" .
2923          fin_cadre_enfonce(true);
2924}
2925
2926?>
Note: See TracBrowser for help on using the repository browser.