source: spip-zone/_core_/plugins/textwheel/wheels/spip/spip-listes.php

Last change on this file was 93657, checked in by marcimat@…, 3 years ago

Meilleure compatibilité avec PSR-2 et nos règles d'écriture, en appliquant
différents fix avec php-cs-fixers. Fixers appliqués ici :

'encoding', utf8
'eof_ending',
un saut de ligne en fin de fichier
'elseif', elseif plutôt que else if
'function_call_space',
espaces sur fonctions
'function_declaration', espaces sur fonctions
'function_typehint_space',
espaces sur fonctions
'linefeed', sauts de ligne \n uniquement
'lowercase_constants',
true, false, null en munuscule
'lowercase_keywords', mots clés PHP en lowercase
'method_argument_space',
espaces sur appels de fonctions
'multiple_use', use unique sur fonctions anonymes
'newline_after_open_tag',
ouverture de php… et c'est tout sur cette ligne
'operators_spaces', espaces de part et d'autres des opérateurs binaires
'parenthesis',
pas d'espace juste après parenthèse ouvrante, ou avant parenthèse fermante
'php_closing_tag', pas de fermeture de php
'short_tag',
tag PHP corrects
'trailing_spaces', pas d'espace qui traîne en fin de ligne
'visibility',
déclarer 'public / private / protected' sur les méthodes

File size: 2.6 KB
Line 
1<?php
2
3if (!defined('_ECRIRE_INC_VERSION')) {
4        return;
5}
6# not useful as this file is included by the engine itself
7# require_once 'engine/textwheel.php';
8
9function tw_liste_init($t) {
10        charger_fonction('dummy', 'inc', true); // ne sert a rien mais evite un segmentation fault PHP, on dirait
11        return tw_liste_item($t, 'init');
12}
13
14function tw_liste_close($t) {
15        return tw_liste_item($t, 'close');
16}
17
18function tw_liste_item($t, $quoi = 'item') {
19        global $class_spip, $class_spip_plus;
20        static $niveau;
21        static $pile_li;
22        static $pile_type;
23        static $type;
24
25        switch ($quoi) {
26                case 'init':
27                        $niveau = 0;
28                        $pile_li = array();
29                        $pile_type = array();
30                        $type = '';
31                        break;
32                case 'close':
33                        // retour sur terre
34                        $ajout = '';
35                        while ($niveau > 0) {
36                                $ajout .= $pile_li[$niveau];
37                                $ajout .= $pile_type[$niveau];
38                                $niveau--;
39                        }
40                        $t .= $ajout;
41                        break;
42
43                case 'ul':
44                case 'ol':
45                        $nouv_type = $quoi;
46                        break;
47
48                case 'item':
49                default:
50                        $profond = 0;
51                        if ($l = strlen($t[2])) {
52                                $profond = $l;
53                                $nouv_type = 'ul';
54                                if (strncmp($t[2], '#', 1) == 0) {
55                                        $nouv_type = 'ol';
56                                }
57                        }
58
59                        if ($profond > 0) {
60                                $ajout = '';
61
62                                // changement de type de liste au meme niveau : il faut
63                                // descendre un niveau plus bas, fermer ce niveau, et
64                                // remonter
65                                $change_type = ($type and ($type <> $nouv_type) and ($profond == $niveau)) ? 1 : 0;
66                                $type = $nouv_type;
67
68                                // d'abord traiter les descentes
69                                while ($niveau > $profond - $change_type) {
70                                        $ajout .= $pile_li[$niveau];
71                                        $ajout .= $pile_type[$niveau];
72                                        if (!$change_type) {
73                                                unset($pile_li[$niveau]);
74                                        }
75                                        $niveau--;
76                                }
77
78                                // puis les identites (y compris en fin de descente)
79                                if ($niveau == $profond && !$change_type) {
80                                        $ajout .= $pile_li[$niveau];
81                                }
82
83                                // puis les montees (y compris apres une descente un cran trop bas)
84                                while ($niveau < $profond) {
85                                        if ($niveau == 0) {
86                                                $ajout .= "\n\n";
87                                        } elseif (!isset($pile_li[$niveau])) {
88                                                $ajout .= "<li$class_spip>";
89                                                $pile_li[$niveau] = "</li>";
90                                        }
91                                        $niveau++;
92                                        $ajout .= "<$type$class_spip_plus>";
93                                        $pile_type[$niveau] = "</$type>";
94                                }
95
96                                $ajout .= "<li$class_spip>";
97                                $pile_li[$profond] = "</li>";
98                        } else {
99                                $ajout = $t[1];  // puce normale ou <hr>
100                        }
101
102                        if (!isset($t[3]) or (trim($t[3]) === '')) {
103                                // Permet de gerer la previsualisation grand ecran en temps reel en affichant correctement la derniere puce n'ayant pas encore de texte
104                                $t[3] = '&nbsp;';
105                        }
106                        $t = $ajout . $t[3];
107                        break;
108        }
109
110        return $t;
111}
112
113function tw_def_wrap($t) {
114        global $class_spip_plus;
115
116        return "<dl$class_spip_plus>\n$t</dl>\n";
117}
Note: See TracBrowser for help on using the repository browser.