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

Last change on this file since 69754 was 69754, checked in by cedric@…, 8 years ago

filtre |navbar_responsive qui permet de poser le markup necessaire pour collapser la navbar en dessous de la largeur @navbarCollapse qui passe à 767px par defaut
si le markup est deja là le filtre ne fait rien
+ une classe facultative .navbar-responsive à poser à côté de .navbar (utilisable independamment du filtre ci-dessus) qui passe la navbar en simple bouton à cliquer en position absolute (le menu apparait en depliage au clic sur le bouton)

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