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

Last change on this file since 84403 was 84403, checked in by teddy.spip@…, 6 years ago

Si on suit ce qui se fait dans le BO de SPIP, on est sur la mécanique 'champ contenu_xxx' et pas autrement. Comme ça on stylisera les vues comme des champs classiques de SPIP. Up de z en conséquence

File size: 4.2 KB
Line 
1<?php
2
3// Sécurité
4if (!defined("_ECRIRE_INC_VERSION")) return;
5
6function saisies_header_prive($flux){
7        $js = find_in_path('javascript/saisies.js');
8        $flux .= "\n<script type='text/javascript' src='$js'></script>\n";
9        $css = generer_url_public('saisies.css');
10        $flux .= "\n<link rel='stylesheet' href='$css' type='text/css' media='all' />\n";
11        $css_constructeur = find_in_path('css/formulaires_constructeur.css');
12        $flux .= "\n<link rel='stylesheet' href='$css_constructeur' type='text/css' />\n";
13        return $flux;
14}
15
16function saisies_affichage_final($flux){
17        if (($p = strpos($flux,"<!--!inserer_saisie_editer-->"))!==false){
18                // On insère la CSS devant le premier <link> trouvé
19                if (!$pi = strpos($flux, "<link") AND !$pi=strpos($flux, '</head'))
20                        $pi = $p; // si pas de <link inserer comme un goret entre 2 <li> de saisies
21                $css = generer_url_public('saisies.css');
22                $ins_css = "\n<link rel='stylesheet' href='$css' type='text/css' media='all' />\n";
23
24                if (strpos($flux,"saisie_date")!==false){//si on a une saisie de type date, on va charger les css de jquery_ui
25                    include_spip("jqueryui_pipelines");
26                        if (function_exists("jqueryui_dependances")){
27                                $ui_plugins = jqueryui_dependances(array("jquery.ui.datepicker"));
28
29                                array_push($ui_plugins,"jquery.ui.theme");
30                                foreach ($ui_plugins as $ui_plug){
31                                        $ui_plug_css = find_in_path("css/$ui_plug.css");
32                                        if (strpos($flux,"css/$ui_plug.css")===false){// si pas déjà chargé
33                                        $ins_css .= "\n<link rel='stylesheet' href='$ui_plug_css' type='text/css' media='all' />\n";
34                                        }
35                                }
36                        }
37                }
38
39                $flux = substr_replace($flux, $ins_css, $pi, 0);
40                // On insère le JS à la fin du <head>
41                $pos_head = strpos($flux, '</head');
42                $js = find_in_path('javascript/saisies.js');
43                $ins_js = "\n<script type='text/javascript' src='$js'></script>\n";
44                $flux = substr_replace($flux, $ins_js, $pos_head, 0);
45        }
46        return $flux;
47}
48
49// Déclaration des pipelines
50function saisies_saisies_autonomes($flux) { return $flux; }
51function saisies_formulaire_saisies($flux) { return $flux; }
52
53// Déclarer automatiquement les champs d'un CVT si on les trouve dans un tableau de saisies et s'ils ne sont pas déjà déclarés
54function saisies_formulaire_charger($flux){
55        // Si le flux data est inexistant, on quitte : Le CVT d'origine a décidé de ne pas continuer
56        if (!is_array($flux['data'])){
57                return $flux;
58        }
59
60        // Il faut que la fonction existe et qu'elle retourne bien un tableau
61        if (include_spip('inc/saisies')
62                and $saisies = saisies_chercher_formulaire($flux['args']['form'], $flux['args']['args'])
63        ){
64                // On ajoute au contexte les champs à déclarer
65                $contexte = saisies_lister_valeurs_defaut($saisies);
66                $flux['data'] = array_merge($contexte, $flux['data']);
67
68                // On ajoute le tableau complet des saisies
69                $flux['data']['_saisies'] = $saisies;
70        }
71        return $flux;
72}
73
74// 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
75function saisies_styliser($flux){
76        // Si on cherche un squelette de formulaire
77        if (strncmp($flux['args']['fond'],'formulaires/',12)==0
78                // Et qu'il y a des saisies dans le contexte
79                and isset($flux['args']['contexte']['_saisies'])
80                // Et que le fichier choisi est vide ou n'existe pas
81                and include_spip('inc/flock')
82                and $ext = $flux['args']['ext']
83                and lire_fichier($flux['data'].'.'.$ext, $contenu_squelette)
84                and !trim($contenu_squelette)
85        ){
86                $flux['data'] = preg_replace("/\.$ext$/", '', find_in_path("formulaires/inc-saisies-cvt.$ext"));
87        }
88
89        return $flux;
90}
91
92// Ajouter les vérifications déclarées dans la fonction "saisies" du CVT
93function saisies_formulaire_verifier($flux){
94        // Il faut que la fonction existe et qu'elle retourne bien un tableau
95        if (include_spip('inc/saisies') and $saisies = saisies_chercher_formulaire($flux['args']['form'], $flux['args']['args'])){
96                // On ajoute au contexte les champs à déclarer
97                $erreurs = saisies_verifier($saisies);
98                if ($erreurs and !isset($erreurs['message_erreur']))
99                        $erreurs['message_erreur'] = _T('saisies:erreur_generique');
100                $flux['data'] = array_merge($erreurs, $flux['data']);
101        }
102
103
104        return $flux;
105}
106
107?>
Note: See TracBrowser for help on using the repository browser.