source: spip-zone/_plugins_/selecteur_generique/selecteur_generique_pipelines.php @ 59950

Last change on this file since 59950 was 59950, checked in by kent1@…, 8 years ago

Un bug sur le sélecteur de mots @baroug

File size: 6.4 KB
Line 
1<?php
2
3if (!defined("_ECRIRE_INC_VERSION")) return;
4
5function SelecteurGenerique_jqueryui_forcer($plugins){
6        if (defined('DESACTIVER_SELECTEUR_GENERIQUE')
7        AND DESACTIVER_SELECTEUR_GENERIQUE)
8                return $plugins;
9       
10        $plugins[] = 'jquery.ui.autocomplete';
11        return $plugins;
12}
13
14function SelecteurGenerique_jquery_plugins($plugins){
15        if (defined('DESACTIVER_SELECTEUR_GENERIQUE')
16        AND DESACTIVER_SELECTEUR_GENERIQUE)
17                return $plugins;
18       
19        $plugins[] = 'javascript/jquery.ui.autocomplete.html.js';
20        return $plugins;
21}
22function SelecteurGenerique_inserer_auteur() {
23
24        $ac = generer_url_ecrire('selecteur_generique');
25        $id_article = _request('id_article');
26        $statut = _request('statut');
27        $input = 'input[name=cherche_auteur][autocomplete!=off]';
28
29        return <<<EOS
30
31(function($) {
32        var appliquer_selecteur_cherche_auteur = function() {
33                // chercher l'input de saisie
34                var me = jQuery('$input');
35                me.autocomplete(
36                        {
37                                source: function( request, response ) {
38                                        $.ajax({
39                                                url: "$ac",
40                                                data:{quoi:'auteur',id_article:'$id_article',statut:'$statut',q:request.term},
41                                                success: function(data) {
42                                                        datas = selecteur_format(data);
43                                                        response( $.map( datas, function( item ) {
44                                                                return item;
45                                                        }));
46                                                }
47                                        });
48                                },
49                                delay: 300,
50                                html: true,
51                                select: function( event, ui ) {
52                                        if (ui.item.result > 0) {
53                                                me.attr('name', 'old_value')
54                                                        .parents('form')
55                                                        .append(
56                                                                jQuery("<input type='hidden' name='nouv_auteur' value='"+ui.item.result+"' />" // signature SPIP 1.9
57                                                                +"<input type='hidden' name='auteur_article_${id_article}_new' value='"+ui.item.result+"' />"  // signature SPIP 2.0
58                                                                )
59                                                        )
60                                                        .find("input[type=submit]")
61                                                                .click()
62                                                        .end();
63                                        }
64                                        return false;
65                                }
66                        }
67                );
68        };
69        $(function(){
70                appliquer_selecteur_cherche_auteur();
71                onAjaxLoad(appliquer_selecteur_cherche_auteur);
72        });
73})(jQuery);
74EOS;
75
76}
77
78function SelecteurGenerique_inserer_mot() {
79        if ($id = _request('id_article')) {
80                $type = 'id_article';
81        } elseif ($id = _request('id_rubrique')) {
82                $type = 'id_rubrique';
83        } elseif ($id = _request('id_syndic')) {
84                $type = 'id_syndic';
85        } else {
86                $id = _request('id_breve');
87                $type = 'id_breve';
88        }
89
90        $ac = generer_url_ecrire('selecteur_generique');
91        return <<<EOS
92
93(function($) {
94        var appliquer_selecteur_cherche_mot = function() {
95                // chercher l'input de saisie
96                var groupes = new Array;
97                var groupes_titre = new Array;
98                var hide=false;
99                $('input[name=cherche_mot][autocomplete!=off]')
100                .each(function(){
101                        var id_groupe = $(this).parents('form').find('input[name=select_groupe]').val();
102                        groupes.push(id_groupe);
103                        groupes_titre.push($(this).val());
104                        if (hide)
105                                $(this).parent().hide();
106                        hide=true;
107                });
108                hide=false;
109                $('input[name=cherche_mot][autocomplete!=off]:first')
110                .each(function(){
111                        var inp = this;
112                        $(this)
113                        .val(groupes_titre.join(', '))
114                        .attr('title',groupes_titre.join(', '));
115                        $(this)
116                        .parents('form')
117                        .bind('submit', function(){
118                                $('.ac_results').remove();
119                        })
120                        .find('input[name=select_groupe]')
121                        .val(groupes.join(','));
122                        $(inp).autocomplete(
123                                {
124                                        source: function( request, response ) {
125                                                $.ajax({
126                                                        url: "$ac",
127                                                        data:{quoi:'mot',$type:'$id',groupes: groupes.join(','),q:request.term},
128                                                        success: function(data) {
129                                                                datas = selecteur_format(data);
130                                                                response( $.map( datas, function( item ) {
131                                                                        return item;
132                                                                }));
133                                                        }
134                                                });
135                                        },
136                                        html: true,
137                                        select:function( event, ui ) {
138                                                if (ui.item.result > 0) {
139                                                        $(inp)
140                                                                .attr('name', 'old_value')
141                                                                .parents('form')
142                                                                .append(
143                                                                        $("<input type='hidden' name='nouv_mot' value='"+ui.item.result+"' />")
144                                                                ).find('input[type=submit]')
145                                                                .click()
146                                                                .end();
147                                                }else{
148                                                        return ui.item.entry;
149                                                }
150                                                return false;
151                                        }
152                                }
153                        );
154                });
155        };
156        $(function(){
157                appliquer_selecteur_cherche_mot();
158                onAjaxLoad(appliquer_selecteur_cherche_mot);
159        });
160})(jQuery);
161EOS;
162
163}
164
165function SelecteurGenerique_inserer_rubrique() {
166
167        $ac = parametre_url(generer_url_ecrire('selecteur_generique',
168                'quoi=rubrique'),
169                'id_article', _request('id_article'), '\\x26');
170        $ac = generer_url_ecrire('selecteur_generique');
171
172        return <<<EOS
173(function($) {
174        var appliquer_selecteur_cherche_rubrique = function() {
175
176                // chercher l'input de saisie
177                var me = jQuery('input[id=titreparent]');
178                me.each(function(){
179                        var inp = this;
180                        var id_groupe = jQuery(this).parents('form').find('input[name=select_groupe]').val();
181
182                        jQuery(inp).focus(function(){
183                                $(this).val('');
184                        });
185                        jQuery(inp).attr('disabled','').autocomplete(
186                                {
187                                        source: function( request, response ) {
188                                                $.ajax({
189                                                        url: "$ac",
190                                                        data:{quoi:'rubrique',q:request.term},
191                                                        success: function(data) {
192                                                                datas = selecteur_format(data);
193                                                                response(
194                                                                        datas
195                                                                );
196                                                        }
197                                                });
198                                        },
199                                        delay: 300,
200                                        html: true,
201                                        select:function( event, ui ) {
202                                                if (ui.item.result > 0) {
203                                                        jQuery(inp)
204                                                                .val(ui.item.entry)
205                                                                .parents('form').find('input[id=id_parent]')
206                                                                .val(ui.item.result)
207                                                                .end();
208                                                }else{
209                                                        return ui.item.entry;
210                                                }
211                                                return false;
212                                        }
213                                }
214                        );
215                });
216        };
217        $(function(){
218                appliquer_selecteur_cherche_rubrique();
219                onAjaxLoad(appliquer_selecteur_cherche_rubrique);
220        });
221})(jQuery);
222EOS;
223}
224
225// Calcule et insere le javascript necessaire pour la page
226function SelecteurGenerique_inserer_javascript($flux) {
227
228        if (defined('DESACTIVER_SELECTEUR_GENERIQUE')
229        AND DESACTIVER_SELECTEUR_GENERIQUE)
230                return $flux;
231
232        $js = '';
233        $js_final = '';
234
235        if (_request('exec') == 'articles'
236        OR _request('exec') == 'acces_restreint_edit') {
237                $js .= SelecteurGenerique_inserer_auteur();
238        }
239
240        if (_request('exec') == 'articles'
241        OR _request('exec') == 'naviguer'
242        OR _request('exec') == 'breves_voir'
243        OR _request('exec') == 'sites') {
244                $js .= SelecteurGenerique_inserer_mot();
245        }
246        if (_request('exec') == 'articles_edit'
247        OR _request('exec') == 'rubriques_edit') {
248                $js .= SelecteurGenerique_inserer_rubrique();
249        }
250        if ($js){
251                /**
252                 * On insère les fonctions de bases supplémentaires
253                 */
254                if(strpos($flux,'selecteur_generique_functions')===FALSE){
255                        $functions = find_in_path('javascript/selecteur_generique_functions.js');
256                        $js_final .= "
257<script type='text/javascript' src='$functions'></script>
258";
259                };
260                $js_final .= '<script type="text/javascript"><!--'
261                . "\n"
262                . $js
263                . "\n"
264                . '// --></script>'
265                . "\n";
266        }
267        return $flux.$js_final;
268
269}
270
271?>
Note: See TracBrowser for help on using the repository browser.