1 | <?php |
---|
2 | |
---|
3 | /** |
---|
4 | * Utilisation des pipelines |
---|
5 | * |
---|
6 | * @package SPIP\Saisies\Pipelines |
---|
7 | **/ |
---|
8 | |
---|
9 | // Sécurité |
---|
10 | if (!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 | **/ |
---|
18 | function 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 | **/ |
---|
37 | function 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 | **/ |
---|
81 | function 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 | **/ |
---|
115 | function 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 | */ |
---|
146 | function 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 | |
---|