source: spip-zone/_plugins_/bootstrap/trunk/bootstrap4_fonctions.php @ 114924

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

on se debarasse des vieilles box de z-core et on branche tout ca sur des cards

File size: 5.2 KB
Line 
1<?php
2
3if (!defined("_ECRIRE_INC_VERSION")) return;
4
5if (!defined('_MENUS_EXTRA_CLASS')) define('_MENUS_EXTRA_CLASS','nav');
6
7/**
8 * Ajouter le markup html pour une navbar responsive
9 * [<div class="navbar navbar-inverse navbar-responsive" id="nav">
10 * (#INCLURE{fond=inclure/nav,env}|navbar_responsive)
11 * </div>]
12 *
13 * @param string $nav
14 * @param string $class_collapse nom de la class à plier/déplier
15 * @return string
16 */
17function navbar_responsive($nav, $class_collapse = 'nav-collapse-main'){
18        static $navbarcount = 1;
19        if (strpos($nav,'navbar-collapse')!==false) return $nav;
20
21        $respnav = '';
22
23        $uls = extraire_balises($nav,"ul");
24        $n = 1;
25        while ($ul = array_shift($uls)
26                AND strpos($navclass = extraire_attribut($ul,"class"),"nav")===false){
27                $n++;
28        }
29        if ($ul){
30                $id = "navbar-".substr(md5($navbarcount . ':' . time() .':' . $nav),0,4);
31                $respnav = $nav;
32                $p = strpos($respnav,$ul);
33                $respnav = substr_replace($respnav,
34                        '<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#' . $id . '" aria-controls="'. $id . '" aria-expanded="false" aria-label="Toggle navigation">'
35                        . '<span class="navbar-toggler-icon"></span>'
36                        . '</button>'
37                        . "\n" . '<div class="collapse navbar-collapse ' . $class_collapse . '" id="'.$id.'">',$p,0);
38
39                $l=strlen($respnav);$p=$l-1;
40                while ($n--){
41                        $p = strrpos($respnav,"</ul>",$p-$l);
42                }
43                if ($p)
44                        $respnav = substr_replace($respnav,'</div>',$p+5,0);
45                else
46                        $respnav = $nav;
47        }
48        return $respnav;
49}
50
51function filtre_lien_ou_expose_dist($url,$libelle=NULL,$on=false,$class="",$title="",$rel="", $evt=''){
52        if ($on) {
53                $bal = 'strong';
54                $class = "";
55                $att = "";
56                // si $on passe la balise et optionnelement une ou ++classe
57                // a.active span.selected.active etc....
58                if (is_string($on) AND (strncmp($on,'a',1)==0 OR strncmp($on,'span',4)==0 OR strncmp($on,'strong',6)==0)){
59                        $on = explode(".",$on);
60                        // on verifie que c'est exactement une des 3 balises a, span ou strong
61                        if (in_array(reset($on),array('a','span','strong'))){
62                                $bal = array_shift($on);
63                                $class = implode(" ",$on);
64                                if ($bal=="a")
65                                        $att = 'href="#" ';
66                        }
67                }
68                $att .= 'class="'.($class?attribut_html($class).' ':'').'on active"';
69        } else {
70                $bal = 'a';
71                $att = "href='$url'"
72                        .($title?" title='".attribut_html($title)."'":'')
73                        .($class?" class='".attribut_html($class)."'":'')
74                        .($rel?" rel='".attribut_html($rel)."'":'')
75                        .$evt;
76        }
77        if ($libelle === NULL)
78                $libelle = $url;
79        return "<$bal $att>$libelle</$bal>";
80}
81
82function bootstrap4_affichage_final($flux){
83        if (
84                $GLOBALS['html']
85                AND isset($GLOBALS['visiteur_session']['statut'])
86                AND $GLOBALS['visiteur_session']['statut']=='0minirezo'
87                AND $GLOBALS['visiteur_session']['webmestre']=='oui'
88                AND strpos($flux,"<!-- insert_head -->")!==false
89                AND $p=stripos($flux,"</body>")
90                AND $f = find_in_path("js/hashgrid.js")
91        ){
92                $flux = substr_replace($flux,'<script type="text/javascript" src="'.$f.'"></script>',$p,0);
93        }
94        return $flux;
95}
96
97
98/**
99 * Generer un bouton_action
100 * utilise par #BOUTON_ACTION
101 *
102 * @param string $libelle
103 * @param string $url
104 * @param string $class
105 * @param string $confirm
106 *   message de confirmation oui/non avant l'action
107 * @param string $title
108 * @param string $callback
109 *   callback js a appeler lors de l'evenement action (apres confirmation eventuelle si $confirm est non vide)
110 *   et avant execution de l'action. Si la callback renvoie false, elle annule le declenchement de l'action
111 * @return string
112 */
113function filtre_bouton_action_dist($libelle, $url, $class="", $confirm="", $title="", $callback=""){
114        if ($confirm) {
115                $confirm = "confirm(\"" . attribut_html($confirm) . "\")";
116                if ($callback)
117                        $callback = "$confirm?($callback):false";
118                else
119                        $callback = $confirm;
120        }
121        $ajax = explode(" ",$class);
122        if (in_array("ajax",$ajax))
123                $ajax = " ajax";
124        else
125                $ajax = "";
126        $onclick = $callback?" onclick='return ".addcslashes($callback,"'")."'":"";
127        $title = $title ? " title='$title'" : "";
128        return "<form class='bouton_action_post$ajax' method='post' action='$url'><div>".form_hidden($url)
129                ."<button type='submit' class='submit btn $class'$title$onclick>$libelle</button></div></form>";
130}
131
132
133
134if (!test_espace_prive()){
135
136/**
137 * Ouvrir une boite
138 * peut etre surcharge par filtre_boite_ouvrir_dist, filtre_boite_ouvrir
139 *
140 * @param string $titre
141 * @param string $class
142 * @return <type>
143 */
144function filtre_boite_ouvrir_dist($titre, $class='', $head_class='', $id=""){
145        $class = "card card-box $class";
146        $head_class = "card-header $head_class";
147        // dans l'espace prive, titrer en h3 si pas de balise <hn>
148        if (test_espace_prive() AND strlen($titre) AND strpos($titre,'<h')===false)
149                $titre = "<h3>$titre</h3>";
150        return '<div class="'.$class.($id?"\" id=\"$id":"").'">'
151        .($titre?'<div class="'.$head_class.'">'.$titre.'</div>':'')
152        .'<div class="card-body">';
153}
154
155/**
156 * Passer au pied d'une boite
157 * peut etre surcharge par filtre_boite_pied_dist, filtre_boite_pied
158 *
159 * @param <type> $class
160 * @return <type>
161 */
162function filtre_boite_pied_dist($class='act'){
163        $class = "card-footer $class";
164        return  '</div>'
165        .'<div class="'.$class.'">';
166}
167
168/**
169 * Fermer une boite
170 * peut etre surcharge par filtre_boite_fermer_dist, filtre_boite_fermer
171 *
172 * @return <type>
173 */
174function filtre_boite_fermer_dist(){
175        return '</div>'
176        .'</div>';
177}
178
179}
Note: See TracBrowser for help on using the repository browser.