source: spip-zone/_plugins_/_ze_laboratoire_/spiip/inc/layer.php @ 4628

Last change on this file since 4628 was 4628, checked in by renatoformato@…, 13 years ago

no more inline js for "couche". Switch to jquery-1.0a that seems to fix most of the ready method problems. More performance improvement when showing menus

File size: 8.7 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;
14global $numero_block, $compteur_block;
15
16$numero_block = array();
17
18$compteur_block = 0;
19
20if (_request('var_ajax'))
21$compteur_block = rand(1,2500)*500;     // astuce idiote pour que les blocs ahah n'aient pas les memes numeros de triangle que la page principale (sinon le triangle d'un bloc importe par ahah agit sur un autre triangle... vivement jquery...).
22
23
24// http://doc.spip.org/@debut_block_visible
25function debut_block_visible($nom_block){
26        global $numero_block, $compteur_block, $browser_layer;
27        if (!$browser_layer) return '';
28        if (!isset($numero_block[$nom_block])){
29                $compteur_block++;
30                $numero_block[$nom_block] = $compteur_block;
31        }
32        return "<div id='Layer".$numero_block["$nom_block"]."' style='display: block;'>";
33
34}
35
36// http://doc.spip.org/@debut_block_invisible
37function debut_block_invisible($nom_block){
38        global $numero_block, $compteur_block, $browser_layer;
39
40        if (!$a = debut_block_visible($nom_block)) return '';
41
42        // si on n'accepte pas js, ne pas fermer
43        if ($_COOKIE['spip_accepte_ajax'] == -1)
44                return $a;
45        else
46                return inserer_attribut($a, 'style', 'display:none;');
47}
48
49// http://doc.spip.org/@fin_block
50function fin_block() {
51        if ($GLOBALS['browser_layer'])
52                return "<div style='clear: both;'></div></div>";
53}
54
55// http://doc.spip.org/@bouton_block_invisible
56function bouton_block_invisible($nom_block, $icone='') {
57        global $numero_block, $compteur_block, $browser_layer, $spip_lang_rtl;
58        if (!$browser_layer) return '';
59        $blocks = explode(",", $nom_block);
60        $couches = array();
61        for ($index=0; $index < count($blocks); $index ++){
62                $nom_block = $blocks[$index];
63
64                if (!isset($numero_block[$nom_block])){
65                        $compteur_block++;
66                        $numero_block[$nom_block] = $compteur_block;
67                }
68
69                if (!$icone) {
70                        $icone = "deplierhaut$spip_lang_rtl.gif";
71                        //$couches[] = array($numero_block[$nom_block],0);
72                }
73                //else
74                //      $couches[] = array($numero_block[$nom_block],1);
75                $couches[] = $numero_block[$nom_block];
76        }
77        //return produire_acceder_couche($couches, $numero_block[$nom_block], $icone);
78        return produire_acceder_couche($couches, $icone);
79}
80
81
82// http://doc.spip.org/@bouton_block_visible
83function bouton_block_visible($nom_block){
84        global $numero_block, $compteur_block, $browser_layer, $spip_lang_rtl;
85        if (!$browser_layer) return '';
86        $blocks = explode(",", $nom_block);
87        $couches = array();
88        for ($index=0; $index < count($blocks); $index ++){
89                $nom_block = $blocks[$index];
90
91                if (!isset($numero_block[$nom_block])){
92                        $compteur_block++;
93                        $numero_block[$nom_block] = $compteur_block;
94                }
95
96                //$couches[] = array($numero_block[$nom_block],0);
97                $couches[] = $numero_block[$nom_block];
98
99        }
100
101        //return produire_acceder_couche($couches, $numero_block[$nom_block], "deplierbas.gif");
102        return produire_acceder_couche($couches, "deplierbas.gif");
103}
104
105// http://doc.spip.org/@produire_acceder_couche
106//function produire_acceder_couche($couches, $nom, $icone) {
107function produire_acceder_couche($couches, $icone) {
108        global $spip_lang_rtl;
109        // ne rien afficher si js desactive
110        /*
111        if ($_COOKIE['spip_accepte_ajax'] == -1)
112                return '';
113
114        $onclick = array();
115        foreach($couches as $i=>$couche)
116                $onclick[] = 'swap_couche(' . $couche[0]
117                        . ",'$spip_lang_rtl','"
118                        . _DIR_IMG_PACK."',"
119                        . $couche[1].');';
120
121        /*return
122        '<img name="triangle'.$nom.'" src="'._DIR_IMG_PACK.$icone.'" alt="" title="'._T('info_deplier').'" border="0" height="10" width="10"
123onclick="'.join(' ',$onclick).'" />';*/
124        return 
125        '<img class="swapCouche" id="triangle'.join($couches,'-').$spip_lang_rtl.'" src="'._DIR_IMG_PACK.$icone.'" alt="" title="'._T('info_deplier').'" style="display:none;border:none" height="10" width="10" />';
126
127}
128
129//
130// Tests sur le nom du butineur
131//
132// http://doc.spip.org/@verif_butineur
133function verif_butineur() {
134
135        global $browser_name, $browser_version;
136        global $browser_description, $browser_rev, $browser_layer, $browser_barre;
137        ereg("^([A-Za-z]+)/([0-9]+\.[0-9]+) (.*)$", $_SERVER['HTTP_USER_AGENT'], $match);
138        $browser_name = $match[1];
139        $browser_version = $match[2];
140        $browser_description = $match[3];
141        $browser_layer = '';
142        $browser_barre = '';
143       
144        if (!eregi("opera", $browser_description)&&eregi("opera", $browser_name)) {
145                $browser_name = "Opera";
146                $browser_version = $match[2];
147                $browser_layer = (($browser_version < 7) ? '' :  http_script('', find_in_path(_DIR_IMG_PACK.'layer.js')));
148                $browser_barre = ($browser_version >= 8.5); 
149        }
150        else if (eregi("opera", $browser_description)) {
151                eregi("Opera ([^\ ]*)", $browser_description, $match);
152                $browser_name = "Opera";
153                $browser_version = $match[1];
154                $browser_layer = (($browser_version < 7) ? '' :  http_script('', find_in_path(_DIR_IMG_PACK.'layer.js')));
155                $browser_barre = ($browser_version >= 8.5); 
156        }
157        else if (eregi("msie", $browser_description)) {
158                eregi("MSIE ([^;]*)", $browser_description, $match);
159                $browser_name = "MSIE";
160                $browser_version = $match[1];
161                $browser_layer = (($browser_version < 5) ? '' :  http_script('', find_in_path(_DIR_IMG_PACK.'layer.js')));
162                $browser_barre = ($browser_version >= 5.5);
163        }
164        else if (eregi("KHTML", $browser_description) &&
165                eregi("Safari/([^;]*)", $browser_description, $match)) {
166                $browser_name = "Safari";
167                $browser_version = $match[1];
168                $browser_layer = http_script('', find_in_path(_DIR_IMG_PACK.'layer.js'));
169                $browser_barre = ($browser_version >= 5.0);
170        }
171        else if (eregi("mozilla", $browser_name) AND $browser_version >= 5) {
172                $browser_layer = http_script('', find_in_path(_DIR_IMG_PACK.'layer.js'));
173                // Numero de version pour Mozilla "authentique"
174                if (ereg("rv:([0-9]+\.[0-9]+)", $browser_description, $match))
175                        $browser_rev = doubleval($match[1]);
176                // Autres Gecko => equivalents 1.4 par defaut (Galeon, etc.)
177                else if (strpos($browser_description, "Gecko") and !strpos($browser_description, "KHTML"))
178                        $browser_rev = 1.4;
179                // Machins quelconques => equivalents 1.0 par defaut (Konqueror, etc.)
180                else $browser_rev = 1.0;
181                $browser_barre = $browser_rev >= 1.3;
182        }
183
184        if (!$browser_name) $browser_name = "Mozilla";
185}
186
187
188// teste si accepte le SVG et pose un cookie en cas de demande explicite
189// (fonction a appeler en debut de page, avant l'envoi de contenu)
190// http://doc.spip.org/@flag_svg
191function flag_svg() {
192        global $browser_name, $browser_rev;
193
194        // SVG est une preference definie par le visiteur ?
195        if (_request('var_svg') == 'oui') {
196                include_spip('inc/cookie');
197                spip_setcookie('spip_svg', 'oui', time() + 365 * 24 * 3600);
198                return true;
199        }
200        if (_request('var_svg') == 'non') {
201                include_spip('inc/cookie');
202                spip_setcookie('spip_svg', 'non', time() + 365 * 24 * 3600);
203                return false;
204        }
205        if ($_COOKIE['spip_svg'] == 'oui')
206                return true;
207        if ($_COOKIE['spip_svg'] == 'non')
208                return false;
209
210        // Sinon, proceder a l'autodetection
211        if (!$browser_name)
212                verif_butineur();
213        return ($browser_name == "Mozilla" AND $browser_rev >= 1.8);
214}
215
216// Obsolete. Present pour compatibilite
217// http://doc.spip.org/@afficher_script_layer
218function afficher_script_layer(){echo $GLOBALS['browser_layer'];}
219// http://doc.spip.org/@test_layer
220function test_layer(){return $GLOBALS['browser_layer'];}
221
222verif_butineur();
223
224$GLOBALS['browser_caret'] =  (!$GLOBALS['browser_barre'] ? '' : "
225onselect='storeCaret(this);'
226onclick='storeCaret(this);'
227onkeyup='storeCaret(this);'
228ondblclick='storeCaret(this);'");
229
230        // Hack pour forcer largeur des formo/forml sous Mozilla >= 1.7
231        // meme principe que le behavior win_width.htc pour MSIE
232$GLOBALS['browser_verifForm'] = (eregi("mozilla", $GLOBALS["browser_name"]) AND $GLOBALS["browser_rev"] >= 1.7) ?  "verifForm();" : "";
233
234// http://doc.spip.org/@http_script
235function http_script($script, $src='', $noscript='') {
236        return '<script type="text/javascript"'
237                . ($src ? " src=\"$src\"" : '')
238                . ">"
239                . (!$script ? '' :
240                   ("<!--\n" .
241                    preg_replace(',</([^>]*)>,','<\/\1>', $script) .
242                    "\n//-->"))
243                . "</script>\n"
244                . (!$noscript ? '' : "<noscript>\n\t$noscript\n</noscript>\n");
245}
246
247?>
Note: See TracBrowser for help on using the repository browser.