source: spip-zone/_plugins_/selecteur_generique/branches/v1/selecteur_generique_pipelines.php @ 70485

Last change on this file since 70485 was 70485, checked in by toutati@…, 7 years ago

charger UI-autocomplete

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