[SPIP][PLUGINS] v3.0-->v3.2
[lhc/web/www.git] / www / ecrire / inc / layer.php
index 9a2d5fc..005857f 100644 (file)
@@ -3,21 +3,34 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2016                                                *
+ *  Copyright (c) 2001-2017                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
  *  Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne.   *
 \***************************************************************************/
 
-if (!defined('_ECRIRE_INC_VERSION')) return;
+if (!defined('_ECRIRE_INC_VERSION')) {
+       return;
+}
+
+/**
+ * Affiche un cadre complet muni d’un bouton pour le déplier.
+ *
+ * @param string $icone Chemin vers l’icone que prendra le cadre
+ * @param string $titre Titre du cadre
+ * @param bool $deplie true ou false, défini si le cadre est déplié au chargement de la page (true) ou pas (false)
+ * @param string $contenu Contenu du cadre
+ * @param string $ids id que prendra la partie pliée ou dépliée
+ * @param string $style_cadre classe CSS que prendra le cadre
+ * @return string Code HTML du cadre dépliable
+ **/
+function cadre_depliable($icone, $titre, $deplie, $contenu, $ids = '', $style_cadre = 'r') {
+       $bouton = bouton_block_depliable($titre, $deplie, $ids);
 
-// http://doc.spip.org/@cadre_depliable
-function cadre_depliable($icone,$titre,$deplie,$contenu,$ids='',$style_cadre='r'){
-       $bouton = bouton_block_depliable($titre,$deplie,$ids);
-       return 
-               debut_cadre($style_cadre,$icone,'',$bouton, '', '', false)
-               . debut_block_depliable($deplie,$ids)
+       return
+               debut_cadre($style_cadre, $icone, '', $bouton, '', '', false)
+               . debut_block_depliable($deplie, $ids)
                . "<div class='cadre_padding'>\n"
                . $contenu
                . "</div>\n"
@@ -25,112 +38,126 @@ function cadre_depliable($icone,$titre,$deplie,$contenu,$ids='',$style_cadre='r'
                . fin_cadre();
 }
 
-// http://doc.spip.org/@block_parfois_visible
-function block_parfois_visible($nom, $invite, $masque, $style='', $visible=false){
+// http://code.spip.net/@block_parfois_visible
+function block_parfois_visible($nom, $invite, $masque, $style = '', $visible = false) {
        return "\n"
-       . bouton_block_depliable($invite,$visible,$nom)
-       . debut_block_depliable($visible,$nom)
+       . bouton_block_depliable($invite, $visible, $nom)
+       . debut_block_depliable($visible, $nom)
        . $masque
        . fin_block();
 }
 
-// http://doc.spip.org/@debut_block_depliable
-function debut_block_depliable($deplie,$id=""){
-       $class=' blocdeplie';
+// http://code.spip.net/@debut_block_depliable
+function debut_block_depliable($deplie, $id = "") {
+       $class = ' blocdeplie';
        // si on n'accepte pas js, ne pas fermer
-       if (!$deplie)
-               $class=" blocreplie";
-       return "<div ".($id?"id='$id' ":"")."class='bloc_depliable$class'>";    
+       if (!$deplie) {
+               $class = " blocreplie";
+       }
+
+       return "<div " . ($id ? "id='$id' " : "") . "class='bloc_depliable$class'>";
 }
-// http://doc.spip.org/@fin_block
+
+// http://code.spip.net/@fin_block
 function fin_block() {
        return "<div class='nettoyeur'></div>\n</div>";
 }
+
 // $texte : texte du bouton
 // $deplie : true (deplie) ou false (plie) ou -1 (inactif) ou 'incertain' pour que le bouton s'auto init au chargement de la page 
 // $ids : id des div lies au bouton (facultatif, par defaut c'est le div.bloc_depliable qui suit)
-// http://doc.spip.org/@bouton_block_depliable
-function bouton_block_depliable($texte,$deplie,$ids=""){
-       $bouton_id = 'b'.substr(md5($texte.microtime()),0,8);
-
-       $class = ($deplie===true)?" deplie":(($deplie==-1)?" impliable":" replie");
-       if (strlen($ids)){
-               $cible = explode(',',$ids);
-               $cible = '#'.implode(",#",$cible);
-       }
-       else{
+// http://code.spip.net/@bouton_block_depliable
+function bouton_block_depliable($texte, $deplie, $ids = "") {
+       $bouton_id = 'b' . substr(md5($texte . microtime()), 0, 8);
+
+       $class = ($deplie === true) ? " deplie" : (($deplie == -1) ? " impliable" : " replie");
+       if (strlen($ids)) {
+               $cible = explode(',', $ids);
+               $cible = '#' . implode(",#", $cible);
+       } else {
                $cible = "#$bouton_id + div.bloc_depliable";
        }
 
-       $b = (strpos($texte,"<h")===false?'h3':'div');
+       $b = (strpos($texte, "<h") === false ? 'h3' : 'div');
+
        return "<$b "
-         .($bouton_id?"id='$bouton_id' ":"")
-         ."class='titrem$class'"
-         . (($deplie===-1)
-               ?""
-               :" onmouseover=\"jQuery(this).depliant('$cible');\""
-         )
-         .">"
-         // une ancre pour rendre accessible au clavier le depliage du sous bloc
-         . "<a href='#' onclick=\"return jQuery(this).depliant_clicancre('$cible');\" class='titremancre'></a>"
-         . "$texte</$b>"
-         . http_script( ($deplie==='incertain')
-                       ? "jQuery(document).ready(function(){if (jQuery('$cible').is(':visible')) $('#$bouton_id').addClass('deplie').removeClass('replie');});"
-                       : '');
+       . ($bouton_id ? "id='$bouton_id' " : "")
+       "class='titrem$class'"
+       . (($deplie === -1)
+               ? ""
+               : " onmouseover=\"jQuery(this).depliant('$cible');\""
+       )
+       ">"
+       // une ancre pour rendre accessible au clavier le depliage du sous bloc
+       . "<a href='#' onclick=\"return jQuery(this).depliant_clicancre('$cible');\" class='titremancre'></a>"
+       . "$texte</$b>"
+       . http_script(($deplie === 'incertain')
+               ? "jQuery(function($){if ($('$cible').is(':visible')) { $('#$bouton_id').addClass('deplie').removeClass('replie'); }});"
+               : '');
 }
 
 //
 // Tests sur le nom du butineur
 //
-// http://doc.spip.org/@verif_butineur
+// http://code.spip.net/@verif_butineur
 function verif_butineur() {
 
-       global $browser_name, $browser_version;
-       global $browser_description, $browser_rev, $browser_barre;
        preg_match(",^([A-Za-z]+)/([0-9]+\.[0-9]+) (.*)$,", $_SERVER['HTTP_USER_AGENT'], $match);
-       $browser_name = $match[1];
-       $browser_version = $match[2];
-       $browser_description = $match[3];
+       $GLOBALS['browser_name'] = $match[1];
+       $GLOBALS['browser_version'] = $match[2];
+       $GLOBALS['browser_description'] = $match[3];
        $GLOBALS['browser_layer'] = ' '; // compat avec vieux scripts qui testent la valeur
-       $browser_barre = '';
+       $GLOBALS['browser_barre'] = '';
 
-       if (!preg_match(",opera,i", $browser_description)&&preg_match(",opera,i", $browser_name)) {
-               $browser_name = "Opera";
-               $browser_version = $match[2];
-               $browser_barre = ($browser_version >= 8.5);
-       }
-       else if (preg_match(",opera,i", $browser_description)) {
-               preg_match(",Opera ([^\ ]*),i", $browser_description, $match);
-               $browser_name = "Opera";
-               $browser_version = $match[1];
-               $browser_barre = ($browser_version >= 8.5);
-       }
-       else if (preg_match(",msie,i", $browser_description)) {
-               preg_match(",MSIE ([^;]*),i", $browser_description, $match);
-               $browser_name = "MSIE";
-               $browser_version = $match[1];
-               $browser_barre = ($browser_version >= 5.5);
-       }
-       else if (preg_match(",KHTML,i", $browser_description) &&
-               preg_match(",Safari/([^;]*),", $browser_description, $match)) {
-               $browser_name = "Safari";
-               $browser_version = $match[1];
-               $browser_barre = ($browser_version >= 5.0);
-       }
-       else if (preg_match(",mozilla,i", $browser_name) AND $browser_version >= 5) {
-               // Numero de version pour Mozilla "authentique"
-               if (preg_match(",rv:([0-9]+\.[0-9]+),", $browser_description, $match))
-                       $browser_rev = doubleval($match[1]);
-               // Autres Gecko => equivalents 1.4 par defaut (Galeon, etc.)
-               else if (strpos($browser_description, "Gecko") and !strpos($browser_description, "KHTML"))
-                       $browser_rev = 1.4;
-               // Machins quelconques => equivalents 1.0 par defaut (Konqueror, etc.)
-               else $browser_rev = 1.0;
-               $browser_barre = $browser_rev >= 1.3;
+       if (!preg_match(",opera,i", $GLOBALS['browser_description']) && preg_match(",opera,i", $GLOBALS['browser_name'])) {
+               $GLOBALS['browser_name'] = "Opera";
+               $GLOBALS['browser_version'] = $match[2];
+               $GLOBALS['browser_barre'] = ($GLOBALS['browser_version'] >= 8.5);
+       } else {
+               if (preg_match(",opera,i", $GLOBALS['browser_description'])) {
+                       preg_match(",Opera ([^\ ]*),i", $GLOBALS['browser_description'], $match);
+                       $GLOBALS['browser_name'] = "Opera";
+                       $GLOBALS['browser_version'] = $match[1];
+                       $GLOBALS['browser_barre'] = ($GLOBALS['browser_version'] >= 8.5);
+               } else {
+                       if (preg_match(",msie,i", $GLOBALS['browser_description'])) {
+                               preg_match(",MSIE ([^;]*),i", $GLOBALS['browser_description'], $match);
+                               $GLOBALS['browser_name'] = "MSIE";
+                               $GLOBALS['browser_version'] = $match[1];
+                               $GLOBALS['browser_barre'] = ($GLOBALS['browser_version'] >= 5.5);
+                       } else {
+                               if (preg_match(",KHTML,i", $GLOBALS['browser_description']) &&
+                                       preg_match(",Safari/([^;]*),", $GLOBALS['browser_description'], $match)
+                               ) {
+                                       $GLOBALS['browser_name'] = "Safari";
+                                       $GLOBALS['browser_version'] = $match[1];
+                                       $GLOBALS['browser_barre'] = ($GLOBALS['browser_version'] >= 5.0);
+                               } else {
+                                       if (preg_match(",mozilla,i", $GLOBALS['browser_name']) and $GLOBALS['browser_version'] >= 5) {
+                                               // Numero de version pour Mozilla "authentique"
+                                               if (preg_match(",rv:([0-9]+\.[0-9]+),", $GLOBALS['browser_description'], $match)) {
+                                                       $GLOBALS['browser_rev'] = doubleval($match[1]);
+                                               } // Autres Gecko => equivalents 1.4 par defaut (Galeon, etc.)
+                                               else {
+                                                       if (strpos($GLOBALS['browser_description'], "Gecko") and !strpos($GLOBALS['browser_description'],
+                                                                       "KHTML")
+                                                       ) {
+                                                               $GLOBALS['browser_rev'] = 1.4;
+                                                       } // Machins quelconques => equivalents 1.0 par defaut (Konqueror, etc.)
+                                                       else {
+                                                               $GLOBALS['browser_rev'] = 1.0;
+                                                       }
+                                               }
+                                               $GLOBALS['browser_barre'] = $GLOBALS['browser_rev'] >= 1.3;
+                                       }
+                               }
+                       }
+               }
        }
 
-       if (!$browser_name) $browser_name = "Mozilla";
+       if (!$GLOBALS['browser_name']) {
+               $GLOBALS['browser_name'] = "Mozilla";
+       }
 }
 
 verif_butineur();
-?>