source: spip-zone/_plugins_/foundation_6/trunk/foundation_6_fonctions.php @ 105856

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

PSR pour ce fichier

File size: 4.8 KB
Line 
1<?php
2/**
3 * Fonction d'upgrade/installation du plugin foundation-4-spip
4 *
5 * @plugin         foundation_6
6 * @copyright  2013
7 * @author         Phenix
8 * @licence        GNU/GPL
9 */
10if (!defined('_ECRIRE_INC_VERSION')) {
11        return;
12}
13
14// Inclure les fonctions de foundation
15include_spip('inc/foundation');
16
17/**
18 * Rendre les iframes responsives via un filtre et
19 * la classe responsive-embed de Foundation.
20 *
21 * @param string $texte HTML dans lequel chercher des iframes
22 * @access public
23 * @return string
24 */
25function filtre_responsive_embed_dist($texte) {
26        include_spip('inc/foundation');
27        // On détecte toute les iFrames et on les rends responsives.
28        return preg_replace_callback('%<iframe(.*)></iframe>%m', 'responsive', $texte);
29}
30
31
32/**
33 * Assurer la rétro-compatibilité avec l'ancien nom de ce filtre
34 *
35 * @deprecated Utiliser filtre_responsive_embed_dist()
36 * @see filtre_responsive_embed_dist()
37 *
38 * @param mixed $texte
39 * @access public
40 * @return mixed
41 */
42function filtre_iframe_responsive($texte) {
43        $responsive_embed = charger_filtre('responsive_embed');
44        return $responsive_embed($texte);
45}
46
47/**
48 * Cette balise va permettre de rendre le squelette compatible
49 * avec toutes les versions de Foundation.
50 * La syntaxe est la suivante:
51 *
52 * #COLONNES{nombre,type}
53 * nombre: le nombre de colonne foundation
54 * (optionnel) type: Dans le cas des version utilisant une
55 * syntaxe avec prefix, on lui passe le type (défaut: large)
56 *
57 * @param mixed $p
58 * @access public
59 * @return mixed
60 */
61function balise_COLONNES_dist($p) {
62        // On récupère les paramètres de la balise.
63        $nombre_colonnes = interprete_argument_balise(1, $p);
64        $type = interprete_argument_balise(2, $p);
65
66        // On met une valeur par défaut à type.
67        if (!$type) {
68                $type = "'large'";
69        }
70
71        // On calcule la class
72        $p->code = "class_grid_foundation($nombre_colonnes, $type).'columns'";
73        $p->interdire_scripts = false;
74
75        return $p;
76}
77
78/**
79 * Generer un bouton d'action qui accepte les class de foundation
80 */
81function balise_BOUTON_ACTION($p) {
82
83        $args = array();
84        for ($k = 1; $k <= 6; $k++) {
85                $_a = interprete_argument_balise($k, $p);
86                if (!$_a) {
87                        $_a = "''";
88                }
89                $args[] = $_a;
90        }
91        // supprimer les args vides
92        while (end($args) == "''" and count($args) > 2) {
93                array_pop($args);
94        }
95        $args = implode(',', $args);
96
97        $bouton_action = chercher_filtre('bouton_action');
98        $p->code = "$bouton_action($args)";
99        $p->interdire_scripts = false;
100        return $p;
101}
102
103/**
104 * On surcharge le filtre bouton_action pour ajouter $class
105 * sur la balise <button> au lieu de pour assurer la
106 * compatibilité avec les class button de foundation
107 */
108function filtre_bouton_action($libelle, $url, $class = '', $confirm = '', $title = '', $callback = '') {
109        if ($confirm) {
110                $confirm = 'confirm("' . attribut_html($confirm) . '")';
111                if ($callback) {
112                        $callback = "$confirm?($callback):false";
113                } else {
114                        $callback = $confirm;
115                }
116        }
117        $onclick = $callback?" onclick='return ".addcslashes($callback, "'")."'":'';
118        $title = $title ? " title='$title'" : '';
119
120        if (test_espace_prive()) {
121                return "<form class='bouton_action_post $class' method='post' action='$url'><div>".form_hidden($url)
122                 ."<button type='submit' class='submit'$title$onclick>$libelle</button></div></form>";
123        } else {
124
125                // Détection de la class ajax
126                // Code reprit (et modifié) du plugin bootstrap:
127                // https://zone.spip.org/trac/spip-zone/browser/_plugins_/bootstrap/trunk/bootstrap3_fonctions.php#L109
128                $array_class = explode(' ', $class);
129                $ajax_index = array_search('ajax', $array_class);
130                if ($ajax_index !== false) {
131                        $ajax = ' ajax';
132                        // On a plus besoin de la class ajax dans la liste des class,
133                        // ça pourrait créer des problèmes
134                        unset($array_class[$ajax_index]);
135                        $class = implode(' ', $array_class);
136                } else {
137                        $ajax = '';
138                }
139
140                return "<form class='bouton_action_post $ajax' method='post' action='$url'><div>".form_hidden($url)
141                ."<button type='submit' class='submit $class'$title$onclick>$libelle</button></div></form>";
142        }
143}
144
145/**
146 * Filtre pour afficher des étoiles à la suite via les
147 * icone foundation.
148 *
149 * @param int $nombre
150 * @access public
151 * @return string
152 */
153function filtre_etoile_foundation_dist($nombre) {
154
155        $config = lire_config('foundation');
156
157        if (!$config['foundation-icons']) {
158                return '<span>Les icones foundation ne sont pas activée !</span>';
159        }
160
161        $etoile = '<span class="foundation_etoile">';
162        for ($i=0; $i<$nombre; $i++) {
163                $etoile .= '<span class="fi-star"></span>';
164        }
165        $etoile .= '</span>';
166
167        return $etoile;
168}
169
170
171if (!function_exists('balise_LIRE_CONSTANTE_dist')) {
172        /**
173         * Balise LIRE_CONSTANT pour SPIP
174         *
175         * @param mixed $p
176         * @access public
177         * @return mixed
178         */
179        function balise_LIRE_CONSTANTE_dist($p) {
180                $constante = interprete_argument_balise(1, $p);
181
182                $p->code = "constant($constante)";
183
184                $p->interdire_scripts = false;
185
186                return $p;
187        }
188}
Note: See TracBrowser for help on using the repository browser.