source: spip-zone/_plugins_/bootstrap/bootstrap_fonctions.php @ 70379

Last change on this file since 70379 was 70379, checked in by cyril@…, 7 years ago

Ajout d'un paramètre à la fonction "navbar_responsive" permettant de plier/déplier un bloc spécifique :

|navbar_responsive{class-du-bloc-a-plier}

une évolution pourrait être de calculer une class automatiquement par la fonction navbar-responsive pour ce bloc;

Exemple de squelette avec appel à 2 blocs devant se plier/déplier, le 2ème bloc portant la class "nav-collapse-bottom" :

[<div class="navbar navbar-fixed-top navbar-responsive" id="nav">

(#INCLURE{fond=inclure/nav,env}|navbar_responsive)

</div>]

<div class="footer" id="footer">

[<div class="navbar navbar-fixed-bottom navbar-responsive" id="nav-bottom">

<div class="menu-conteneur navbar-inner ">

(#INCLURE{fond=inclure/menu,env, identifiant=etapes}|navbar_responsive{nav-collapse-bottom})

</div>

</div>]
<INCLURE{fond=footer/#ENV{type-page},env} />

</div>

File size: 3.8 KB
Line 
1<?php
2
3if (!defined("_ECRIRE_INC_VERSION")) return;
4
5
6/**
7 * Ajouter le markup html pour une navbar responsive
8 * [<div class="navbar navbar-inverse navbar-responsive" id="nav">
9 * (#INCLURE{fond=inclure/nav,env}|navbar_responsive)
10 * </div>]
11 *
12 * @param string $nav
13 * @param string $class_collapse nom de la class à plier/déplier
14 * @return string
15 */
16function navbar_responsive($nav, $class_collapse = 'nav-collapse-main'){
17        if (strpos($nav,'nav-collapse')!==false) return $nav;
18
19        $uls = extraire_balises($nav,"ul");
20        $n = 1;
21        while ($ul = array_shift($uls)
22                AND strpos(extraire_attribut($ul,"class"),"nav")===false){
23                $n++;
24        }
25        if ($ul){
26                $respnav = $nav;
27                $p = strpos($respnav,$ul);
28                $respnav = substr_replace($respnav,
29                        '<a class="btn btn-navbar" data-toggle="collapse" data-target=".' . $class_collapse . '">' .
30                                '<span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></a>' .
31                                "\n".'<div class="nav-collapse ' . $class_collapse . ' collapse">',$p,0);
32                $l=strlen($respnav);$p=$l-1;
33                while ($n--){
34                        $p = strrpos($respnav,"</ul>",$p-$l);
35                }
36                if ($p)
37                        $respnav = substr_replace($respnav,'</div>',$p+5,0);
38                else
39                        $respnav = $nav;
40        }
41        return $respnav;
42}
43
44function filtre_lien_ou_expose_dist($url,$libelle=NULL,$on=false,$class="",$title="",$rel="", $evt=''){
45        if ($on) {
46                $bal = 'strong';
47                $class = "";
48                $att = "";
49                // si $on passe la balise et optionnelement une ou ++classe
50                // a.active span.selected.active etc....
51                if (is_string($on) AND (strncmp($on,'a',1)==0 OR strncmp($on,'span',4)==0 OR strncmp($on,'strong',6)==0)){
52                        $on = explode(".",$on);
53                        // on verifie que c'est exactement une des 3 balises a, span ou strong
54                        if (in_array(reset($on),array('a','span','strong'))){
55                                $bal = array_shift($on);
56                                $class = implode(" ",$on);
57                                if ($bal=="a")
58                                        $att = 'href="#" ';
59                        }
60                }
61                $att .= 'class="'.($class?attribut_html($class).' ':'').'on active"';
62        } else {
63                $bal = 'a';
64                $att = "href='$url'"
65                        .($title?" title='".attribut_html($title)."'":'')
66                        .($class?" class='".attribut_html($class)."'":'')
67                        .($rel?" rel='".attribut_html($rel)."'":'')
68                        .$evt;
69        }
70        if ($libelle === NULL)
71                $libelle = $url;
72        return "<$bal $att>$libelle</$bal>";
73}
74
75function bootstrap_affichage_final($flux){
76        if (
77                $GLOBALS['html']
78                AND isset($GLOBALS['visiteur_session']['statut'])
79                AND $GLOBALS['visiteur_session']['statut']=='0minirezo'
80                AND $GLOBALS['visiteur_session']['webmestre']=='oui'
81                AND $p=stripos($flux,"</body>")
82                AND $f = find_in_path("js/hashgrid.js")
83        ){
84                $flux = substr_replace($flux,'<script type="text/javascript" src="'.$f.'"></script>',$p,0);
85        }
86        return $flux;
87}
88
89
90/**
91 * Generer un bouton_action
92 * utilise par #BOUTON_ACTION
93 *
94 * @param string $libelle
95 * @param string $url
96 * @param string $class
97 * @param string $confirm
98 *   message de confirmation oui/non avant l'action
99 * @param string $title
100 * @param string $callback
101 *   callback js a appeler lors de l'evenement action (apres confirmation eventuelle si $confirm est non vide)
102 *   et avant execution de l'action. Si la callback renvoie false, elle annule le declenchement de l'action
103 * @return string
104 */
105function filtre_bouton_action_dist($libelle, $url, $class="", $confirm="", $title="", $callback=""){
106        if ($confirm) {
107                $confirm = "confirm(\"" . attribut_html($confirm) . "\")";
108                if ($callback)
109                        $callback = "$confirm?($callback):false";
110                else
111                        $callback = $confirm;
112        }
113        $ajax = explode(" ",$class);
114        if (in_array("ajax",$ajax))
115                $ajax = " ajax";
116        else
117                $ajax = "";
118        $onclick = $callback?" onclick='return ".addcslashes($callback,"'")."'":"";
119        $title = $title ? " title='$title'" : "";
120        return "<form class='bouton_action_post$ajax' method='post' action='$url'><div>".form_hidden($url)
121                ."<button type='submit' class='submit btn $class'$title$onclick>$libelle</button></div></form>";
122}
Note: See TracBrowser for help on using the repository browser.