source: spip-zone/_plugins_/massicot/trunk/massicot_pipelines.php @ 113685

Last change on this file since 113685 was 113685, checked in by bystrano@…, 4 months ago

évite une notice

signalé par baloo : https://contrib.spip.net/Massicot#comment499604

File size: 5.1 KB
Line 
1<?php
2/**
3 * Utilisations de pipelines par Massicot
4 *
5 * @plugin         Massicot
6 * @copyright  2015
7 * @author         Michel @ Vertige ASBL
8 * @licence        GNU/GPL
9 * @package        SPIP\Massicot\Pipelines
10 */
11
12/**
13 * Insérer le plugin jquery de selection du cadre
14 *
15 * @pipeline jquery_plugins
16 * @param  array $scripts  Les scripts qui seront insérés dans la page
17 * @return array           La liste des scripts complétée
18 */
19function massicot_jquery_plugins($scripts) {
20
21        if (test_espace_prive()) {
22                $scripts[] = 'lib/jquery.imgareaselect.js/jquery.imgareaselect.dev.js';
23                $scripts[] = 'javascripts/formulaireMassicoterImage.js';
24        }
25
26        return $scripts;
27}
28
29/**
30 * Ajoute le plugins jqueryui Slider
31 *
32 * @pipeline jqueryui_plugins
33 * @param  array $scripts  Plugins jqueryui à charger
34 * @return array           Liste des plugins jquerui complétée
35 */
36function massicot_jqueryui_plugins($scripts) {
37
38        if (version_compare($GLOBALS['spip_version_branche'], '3.2', '<') and test_espace_prive()) {
39                $scripts[] = 'jquery.ui.slider';
40        }
41        return $scripts;
42}
43
44/**
45 * Ajouter un brin de CSS
46 *
47 * @pipeline header_prive
48 * @param  array $flux Données du pipeline
49 * @return array           Données du pipeline
50 */
51function massicot_header_prive($flux) {
52        if (test_espace_prive()) {
53                $flux .= '<link rel="stylesheet" type="text/css" media="screen" href="' .
54                          find_in_path('css/massicot.css') . '" />';
55
56                $flux .= '<link rel="stylesheet" type="text/css" media="screen" href="' .
57                          find_in_path('lib/jquery.imgareaselect.js/distfiles/css/imgareaselect-default.css') . '" />';
58        }
59        return $flux;
60}
61
62/**
63 * Ajouter une action "recadrer" sur les documents
64 *
65 * @pipeline editer_document_actions
66 * @param  array $flux Données du pipeline
67 * @return array           Données du pipeline
68 */
69function massicot_document_desc_actions($flux) {
70
71        $flux['data'] .= recuperer_fond(
72                'prive/squelettes/inclure/lien_recadre',
73                $flux['args']
74        );
75
76        return $flux;
77}
78
79/**
80 * Supprimer les traitements lorsqu'on remplace l'image d'un document
81 *
82 * @pipeline post_edition
83 * @param  array $flux Données du pipeline
84 * @return array       Données du pipeline
85 */
86function massicot_post_edition($flux) {
87
88        if (isset($flux['args']['type']) and ($flux['args']['type'] === 'document')
89            and isset($flux['data']['fichier'])) {
90                include_spip('base/abstract_sql');
91                include_spip('action/editer_liens');
92
93                $id_document = $flux['args']['id_objet'];
94
95                $massicotages = objet_trouver_liens(
96                        array('massicotage' => '*'),
97                        array('document' => $id_document)
98                );
99
100                $id_massicotages = array();
101
102                foreach ($massicotages as $cle => $valeur) {
103                        $id_massicotages[] = $valeur['id_massicotage'];
104                }
105
106                sql_delete(
107                        'spip_massicotages',
108                        sql_in('id_massicotage', $id_massicotages)
109                );
110                sql_delete(
111                        'spip_massicotages_liens',
112                        sql_in('id_massicotage', $id_massicotages)
113                );
114        }
115
116        return $flux;
117}
118
119/**
120 * Supprimer les traitements lorsqu'on supprime un logo
121 *
122 * @pipeline formulaire_traiter
123 * @param  array $flux Données du pipeline
124 * @return array       Données du pipeline
125 */
126function massicot_formulaire_traiter($flux) {
127
128        if (($flux['args']['form'] === 'editer_logo')
129            and (_request('supprimer_logo_on'))) {
130                include_spip('base/abstract_sql');
131                include_spip('action/editer_liens');
132
133                $objet = $flux['args']['args'][0];
134                $id_objet = $flux['args']['args'][1];
135
136                $massicotages = objet_trouver_liens(
137                        array('massicotage' => '*'),
138                        array($objet => $id_objet)
139                );
140
141                $id_massicotages = array();
142
143                foreach ($massicotages as $cle => $valeur) {
144                        $id_massicotages[] = $valeur['id_massicotage'];
145                }
146
147                sql_delete(
148                        'spip_massicotages',
149                        sql_in('id_massicotage', $id_massicotages)
150                );
151                sql_delete(
152                        'spip_massicotages_liens',
153                        sql_in('id_massicotage', $id_massicotages)
154                );
155        }
156
157        return $flux;
158}
159
160/**
161 * Ajouter un lien pour recadrer les vignettes des documents
162 *
163 * @pipeline editer_contenu_objet
164 * @param  array $flux Données du pipeline
165 * @return array       Données du pipeline
166 */
167function massicot_editer_contenu_objet($flux) {
168
169        $html = $flux['data'];
170        $args = $flux['args'];
171
172        if ($args['type'] === 'illustrer_document') {
173                include_spip('base/abstract_sql');
174
175                if ($id_vignette = sql_getfetsel(
176                        'id_vignette',
177                        'spip_documents',
178                        'id_document='.intval($args['id'])
179                )) {
180                        $href = generer_url_ecrire(
181                                'massicoter_image',
182                                'objet=document&id_objet=' . $id_vignette . '&redirect=' . urlencode(self())
183                        );
184                        $lien = '<a href="' . $href . '"><strong>' . _T('massicot:massicoter') . '</strong></a>';
185
186                        $repere = '<span class=\'image_loading\'>';
187                        $flux['data'] = str_replace($repere, $lien . $repere, $html);
188                }
189        }
190
191        return $flux;
192}
193
194/**
195 * Appliquer le recadrage sur l'image affichée dans le formulaire illustrer_document
196 *
197 * @pipeline editer_contenu_objet
198 * @param  array $flux Données du pipeline
199 * @return array       Données du pipeline
200 */
201function massicot_formulaire_charger($flux) {
202
203        if (($flux['args']['form'] === 'illustrer_document')
204                        and isset($id_vignette) and $id_vignette) {
205                $parametres = massicot_get_parametres(
206                        'document',
207                        $flux['data']['id_vignette']
208                );
209
210                $flux['data']['vignette'] = massicoter_fichier(
211                        $flux['data']['vignette'],
212                        $parametres
213                );
214        }
215
216        return $flux;
217}
Note: See TracBrowser for help on using the repository browser.