[SPIP] ~2.1.12 -->2.1.25
[velocampus/web/www.git] / www / ecrire / inc / layer.php
1 <?php
2
3 /***************************************************************************\
4 * SPIP, Systeme de publication pour l'internet *
5 * *
6 * Copyright (c) 2001-2014 *
7 * Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James *
8 * *
9 * Ce programme est un logiciel libre distribue sous licence GNU/GPL. *
10 * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. *
11 \***************************************************************************/
12
13 if (!defined('_ECRIRE_INC_VERSION')) return;
14
15 // http://doc.spip.org/@cadre_depliable
16 function cadre_depliable($icone,$titre,$deplie,$contenu,$ids='',$style_cadre='r'){
17 $bouton = bouton_block_depliable($titre,$deplie,$ids);
18 return
19 debut_cadre($style_cadre,$icone,'',$bouton, '', '', false)
20 . debut_block_depliable($deplie,$ids)
21 . "<div class='cadre_padding'>\n"
22 . $contenu
23 . "</div>\n"
24 . fin_block()
25 . fin_cadre();
26 }
27
28 // http://doc.spip.org/@block_parfois_visible
29 function block_parfois_visible($nom, $invite, $masque, $style='', $visible=false){
30 if (!$GLOBALS['browser_layer']) return '';
31
32 return "\n"
33 . bouton_block_depliable($invite,$visible,$nom)
34 . debut_block_depliable($visible,$nom)
35 . $masque
36 . fin_block();
37 }
38
39 // http://doc.spip.org/@debut_block_depliable
40 function debut_block_depliable($deplie,$id=""){
41 $class=' blocdeplie';
42 // si on n'accepte pas js, ne pas fermer
43 if (_SPIP_AJAX AND !$deplie)
44 $class=" blocreplie";
45 return "<div ".($id?"id='$id' ":"")."class='bloc_depliable$class'>";
46 }
47 // http://doc.spip.org/@fin_block
48 function fin_block() {
49 return "<div class='nettoyeur'></div>\n</div>";
50 }
51 // $texte : texte du bouton
52 // $deplie : true (deplie) ou false (plie) ou -1 (inactif) ou 'incertain' pour que le bouton s'auto init au chargement de la page
53 // $ids : id des div lies au bouton (facultatif, par defaut c'est le div.bloc_depliable qui suit)
54 // http://doc.spip.org/@bouton_block_depliable
55 function bouton_block_depliable($texte,$deplie,$ids=""){
56 if (!_SPIP_AJAX) $deplie=true; // forcer un bouton deplie si pas de js
57 $bouton_id = 'b'.substr(md5($texte.microtime()),0,8);
58
59 $class = ($deplie===true)?" deplie":(($deplie==-1)?" impliable":" replie");
60 if (strlen($ids)){
61 $cible = explode(',',$ids);
62 $cible = '#'.implode(",#",$cible);
63 }
64 else{
65 $cible = "#$bouton_id + div.bloc_depliable";
66 }
67
68 return "<div "
69 .($bouton_id?"id='$bouton_id' ":"")
70 ."class='titrem$class'"
71 . (($deplie===-1)
72 ?""
73 :" onmouseover=\"jQuery(this).depliant('$cible');\""
74 )
75 .">"
76 // une ancre pour rendre accessible au clavier le depliage du sous bloc
77 // on ne la mets pas en interface "accessible", dans laquelle il n'y pas de sous bloc ... un comble !
78 . ($GLOBALS['spip_display']==4?"":"<a href='#' onclick=\"return jQuery(this).depliant_clicancre('$cible');\" class='titremancre'></a>")
79 . "$texte</div>"
80 . http_script( ($deplie==='incertain')
81 ? "jQuery(document).ready(function(){if (jQuery('$cible').is(':visible')) $('#$bouton_id').addClass('deplie').removeClass('replie');});"
82 : '');
83 }
84
85 //
86 // Tests sur le nom du butineur
87 //
88 // http://doc.spip.org/@verif_butineur
89 function verif_butineur() {
90
91 global $browser_name, $browser_version;
92 global $browser_description, $browser_rev, $browser_layer, $browser_barre;
93 preg_match(",^([A-Za-z]+)/([0-9]+\.[0-9]+) (.*)$,", $_SERVER['HTTP_USER_AGENT'], $match);
94 $browser_name = $match[1];
95 $browser_version = $match[2];
96 $browser_description = $match[3];
97 $browser_layer = '';
98 $browser_barre = '';
99
100 if (!preg_match(",opera,i", $browser_description)&&preg_match(",opera,i", $browser_name)) {
101 $browser_name = "Opera";
102 $browser_version = $match[2];
103 $browser_layer = (($browser_version < 7) ? '' : http_script('', 'layer.js',''));
104 $browser_barre = ($browser_version >= 8.5);
105 }
106 else if (preg_match(",opera,i", $browser_description)) {
107 preg_match(",Opera ([^\ ]*),i", $browser_description, $match);
108 $browser_name = "Opera";
109 $browser_version = $match[1];
110 $browser_layer = (($browser_version < 7) ? '' : http_script('', 'layer.js',''));
111 $browser_barre = ($browser_version >= 8.5);
112 }
113 else if (preg_match(",msie,i", $browser_description)) {
114 preg_match(",MSIE ([^;]*),i", $browser_description, $match);
115 $browser_name = "MSIE";
116 $browser_version = $match[1];
117 $browser_layer = (($browser_version < 5) ? '' : http_script('', 'layer.js',''));
118 $browser_barre = ($browser_version >= 5.5);
119 }
120 else if (preg_match(",KHTML,i", $browser_description) &&
121 preg_match(",Safari/([^;]*),", $browser_description, $match)) {
122 $browser_name = "Safari";
123 $browser_version = $match[1];
124 $browser_layer = http_script('', 'layer.js','');
125 $browser_barre = ($browser_version >= 5.0);
126 }
127 else if (preg_match(",mozilla,i", $browser_name) AND $browser_version >= 5) {
128 $browser_layer = http_script('', 'layer.js','');
129 // Numero de version pour Mozilla "authentique"
130 if (preg_match(",rv:([0-9]+\.[0-9]+),", $browser_description, $match))
131 $browser_rev = doubleval($match[1]);
132 // Autres Gecko => equivalents 1.4 par defaut (Galeon, etc.)
133 else if (strpos($browser_description, "Gecko") and !strpos($browser_description, "KHTML"))
134 $browser_rev = 1.4;
135 // Machins quelconques => equivalents 1.0 par defaut (Konqueror, etc.)
136 else $browser_rev = 1.0;
137 $browser_barre = $browser_rev >= 1.3;
138 }
139
140 if (!$browser_name) $browser_name = "Mozilla";
141 }
142
143 verif_butineur();
144
145 ?>