source: spip-zone/_plugins_/saisies/trunk/saisies_pipelines.php @ 87651

Last change on this file since 87651 was 87651, checked in by marcimat@…, 6 years ago
  • PHPDoc en plus à certains endroits
  • Pas de fermeture de php sur les fichiers php
  • Le phpdoc nécessite 2 étoiles
  • Les pipelines simplement déclarés (et non utilisés dans saisis) le sont dans paquet.xml directement
File size: 5.4 KB
Line 
1<?php
2
3/**
4 * Utilisation des pipelines
5 *
6 * @package SPIP\Saisies\Pipelines
7**/
8
9// Sécurité
10if (!defined("_ECRIRE_INC_VERSION")) return;
11
12/**
13 * Ajoute les scripts JS et CSS de saisies dans l'espace privé
14 *
15 * @param string $flux
16 * @return string
17**/
18function saisies_header_prive($flux){
19        $js = find_in_path('javascript/saisies.js');
20        $flux .= "\n<script type='text/javascript' src='$js'></script>\n";
21        $css = generer_url_public('saisies.css');
22        $flux .= "\n<link rel='stylesheet' href='$css' type='text/css' media='all' />\n";
23        $css_constructeur = find_in_path('css/formulaires_constructeur.css');
24        $flux .= "\n<link rel='stylesheet' href='$css_constructeur' type='text/css' />\n";
25        return $flux;
26}
27
28/**
29 * Ajoute les scripts JS et CSS de saisies dans l'espace public
30 *
31 * Ajoute également de quoi gérer le datepicker de la saisie date si
32 * celle-ci est utilisée dans la page.
33 *
34 * @param string $flux
35 * @return string
36**/
37function saisies_affichage_final($flux){
38        if (($p = strpos($flux,"<!--!inserer_saisie_editer-->"))!==false){
39                // On insère la CSS devant le premier <link> trouvé
40                if (!$pi = strpos($flux, "<link") AND !$pi=strpos($flux, '</head'))
41                        $pi = $p; // si pas de <link inserer comme un goret entre 2 <li> de saisies
42                $css = generer_url_public('saisies.css');
43                $ins_css = "\n<link rel='stylesheet' href='$css' type='text/css' media='all' />\n";
44
45                if (strpos($flux,"saisie_date")!==false){//si on a une saisie de type date, on va charger les css de jquery_ui
46                    include_spip("jqueryui_pipelines");
47                        if (function_exists("jqueryui_dependances")){
48                                $ui_plugins = jqueryui_dependances(array("jquery.ui.datepicker"));
49
50                                array_push($ui_plugins,"jquery.ui.theme");
51                                foreach ($ui_plugins as $ui_plug){
52                                        $ui_plug_css = find_in_path("css/$ui_plug.css");
53                                        if (strpos($flux,"css/$ui_plug.css")===false){// si pas déjà chargé
54                                        $ins_css .= "\n<link rel='stylesheet' href='$ui_plug_css' type='text/css' media='all' />\n";
55                                        }
56                                }
57                        }
58                }
59
60                $flux = substr_replace($flux, $ins_css, $pi, 0);
61                // On insère le JS à la fin du <head>
62                $pos_head = strpos($flux, '</head');
63                $js = find_in_path('javascript/saisies.js');
64                $ins_js = "\n<script type='text/javascript' src='$js'></script>\n";
65                $flux = substr_replace($flux, $ins_js, $pos_head, 0);
66        }
67        return $flux;
68}
69
70
71/**
72 * Déclarer automatiquement les champs d'un formulaire CVT qui déclare des saisies
73 *
74 * Recherche une fonction `formulaires_XX_saisies_dist` et l'utilise si elle
75 * est présente. Cette fonction doit retourner une liste de saisies dont on se
76 * sert alors pour calculer les champs utilisés dans le formulaire.
77 *
78 * @param array $flux
79 * @return array
80**/
81function saisies_formulaire_charger($flux){
82        // Si le flux data est inexistant, on quitte : Le CVT d'origine a décidé de ne pas continuer
83        if (!is_array($flux['data'])){
84                return $flux;
85        }
86
87        // Il faut que la fonction existe et qu'elle retourne bien un tableau
88        include_spip('inc/saisies')
89        $saisies = saisies_chercher_formulaire($flux['args']['form'], $flux['args']['args']);
90
91        if ($saisies) {
92                // On ajoute au contexte les champs à déclarer
93                $contexte = saisies_lister_valeurs_defaut($saisies);
94                $flux['data'] = array_merge($contexte, $flux['data']);
95
96                // On ajoute le tableau complet des saisies
97                $flux['data']['_saisies'] = $saisies;
98        }
99        return $flux;
100}
101
102/**
103 * Aiguiller CVT vers un squelette propre à Saisies lorsqu'on a déclaré des saisies et qu'il n'y a pas déjà un HTML
104 *
105 * Dans le cadre d'un formulaire CVT demandé, si ce formulaire a déclaré des saisies, et
106 * qu'il n'y a pas de squelette spécifique pour afficher le HTML du formulaire,
107 * alors on utilise le formulaire générique intégré au plugin saisie, qui calculera le HTML
108 * à partir de la déclaration des saisies indiquées.
109 *
110 * @see saisies_formulaire_charger()
111 *
112 * @param array $flux
113 * @return array
114**/
115function saisies_styliser($flux){
116        // Si on cherche un squelette de formulaire
117        if (strncmp($flux['args']['fond'],'formulaires/',12)==0
118                // Et qu'il y a des saisies dans le contexte
119                and isset($flux['args']['contexte']['_saisies'])
120                // Et que le fichier choisi est vide ou n'existe pas
121                and include_spip('inc/flock')
122                and $ext = $flux['args']['ext']
123                and lire_fichier($flux['data'].'.'.$ext, $contenu_squelette)
124                and !trim($contenu_squelette)
125        ){
126                $flux['data'] = preg_replace("/\.$ext$/", '', find_in_path("formulaires/inc-saisies-cvt.$ext"));
127        }
128
129        return $flux;
130}
131
132/**
133 * Ajouter les vérifications déclarées dans la fonction "saisies" du CVT
134 *
135 * Si un formulaire CVT a déclaré des saisies, on utilise sa déclaration
136 * pour effectuer les vérifications du formulaire.
137 *
138 * @see saisies_formulaire_charger()
139 * @uses saisies_verifier()
140 *
141 * @param array $flux
142 *     Liste des erreurs du formulaire
143 * @return array
144 *     iste des erreurs
145 */
146function saisies_formulaire_verifier($flux){
147        // Il faut que la fonction existe et qu'elle retourne bien un tableau
148        include_spip('inc/saisies');
149        $saisies = saisies_chercher_formulaire($flux['args']['form'], $flux['args']['args']);
150        if ($saisies) {
151                // On ajoute au contexte les champs à déclarer
152                $erreurs = saisies_verifier($saisies);
153                if ($erreurs and !isset($erreurs['message_erreur']))
154                        $erreurs['message_erreur'] = _T('saisies:erreur_generique');
155                $flux['data'] = array_merge($erreurs, $flux['data']);
156        }
157
158        return $flux;
159}
160
161
Note: See TracBrowser for help on using the repository browser.