source: spip-zone/_plugins_/jquery_ui/jqueryui_pipelines_20.php @ 48716

Last change on this file since 48716 was 48716, checked in by cy_altern@…, 10 years ago

report de la modification du pipeline header_prive en SPIP 2.0

File size: 3.7 KB
Line 
1<?php
2
3function jqueryui_jquery_plugins($plugins){
4        $config = @unserialize($GLOBALS['meta']['jqueryui']);
5       
6        if (!is_array($config) OR !is_array($config['plugins'])) {
7                $config['plugins'] = array();
8                $ecrire_meta = 'oui';
9        }
10       
11        $config['plugins'] = array_unique(array_merge(sinon(pipeline('jqueryui_forcer'),array()),$config['plugins']));
12       
13        /**
14         * Gestion des dépendances inter plugins
15         */
16        $dependance_core = array(
17                                                        'ui.accordion',
18                                                        'ui.datepicker',
19                                                        'ui.dialog',
20                                                        'ui.draggable',
21                                                        'ui.droppable',
22                                                        'ui.resizable',
23                                                        'ui.selectable',
24                                                        'ui.slider',
25                                                        'ui.sortable',
26                                                        'ui.tabs'
27        );
28
29        $dependance_draggable = array(
30                                                        'ui.droppable',
31                                                        'ui.dialog'
32                                                        );
33
34        $dependance_resizable = array(
35                                                        'ui.dialog'
36                                                        );
37       
38        $dependance_effects = array(
39                                                        'effects.blind',
40                                                        'effects.bounce',
41                                                        'effects.clip',
42                                                        'effects.drop',
43                                                        'effects.explode',
44                                                        'effects.fold',
45                                                        'effects.highlight',
46                                                        'effects.pulsate',
47                                                        'effects.scale',
48                                                        'effects.shake',
49                                                        'effects.slide',
50                                                        'effects.transfer'
51                                                );
52       
53        /**
54         * Vérification des dépendances
55         * Ici on ajoute quand même le plugin en question et on supprime les doublons via array_unique
56         * Pour éviter le cas où un pipeline demanderait un plugin dans le mauvais sens de la dépendance par exemple
57         *
58         * On commence par le bas de l'échelle :
59         * - draggable
60         * - resizable
61         * - core
62         * - effects
63         */
64        if(count($intersect = array_intersect($config['plugins'],$dependance_draggable)) > 0){
65                $keys = array_keys($intersect);
66                array_splice($config['plugins'],$keys[0], 0, "ui.draggable");
67        }
68        if(count($intersect = array_intersect($config['plugins'],$dependance_resizable)) > 0){
69                $keys = array_keys($intersect);
70                array_splice($config['plugins'],$keys[0], 0, "ui.resizable");
71        }       
72        if(count($intersect = array_intersect($config['plugins'],$dependance_core)) > 0){
73                $keys = array_keys($intersect);
74                array_splice($config['plugins'],$keys[0], 0, "ui.core");
75        }
76        if(count($intersect = array_intersect($config['plugins'],$dependance_effects)) > 0){
77                $keys = array_keys($intersect);
78                array_splice($config['plugins'],$keys[0], 0, "effects.core");
79        }
80        $config['plugins'] = array_unique($config['plugins']);
81        foreach ($config['plugins'] as $val) {
82                $plugins[] = _DIR_JQUERYUI_JS.$val.".js";
83        }
84       
85        // si pas de config en base, on enregistre les scripts issu du pipeline jqueryui_forcer + leurs dépendances
86        if ($ecrire_meta == 'oui') {
87                include_spip('inc/meta');
88                ecrire_meta('jqueryui',serialize($config));
89        }
90
91        return $plugins;
92}
93
94/**
95 * jqueryui_insert_head : ajout des CSS de jQuery-UI pour les pages publiques
96 * avec gestion du theme et des UI utilises
97 *
98 * @param: $flux
99 * @return: $flux
100 */
101function jqueryui_insert_head($flux) {
102        $config = @unserialize($GLOBALS['meta']['jqueryui']);
103
104        // recuperer le repertoire du theme
105        $theme = 'default/';
106        if (isset($config['theme']) AND $config['theme'] != '')
107                $theme = $config['theme'].'/';
108        if ($theme == 'no_css/')
109                return $flux;
110       
111        // recuperer la liste des plugins jquery actives ou issus du pipeline jqueryui_forcer
112        $config['plugins'] = array_unique(array_merge(sinon(pipeline('jqueryui_forcer'),array()),$config['plugins']));
113
114        // en 1.6 pas de CSS par plugin: ui.all.css comprend tout sauf datepicker
115        if (!in_array('ui.all', $config['plugins']))
116                $config['plugins'][] = 'ui.all';
117               
118        // les CSS correspondantes aux plugins
119        $Tjquery_css = array(
120                                                'ui.all',
121                                                'ui.datepicker'
122                                                );
123
124        // appeler les CSS necessaires
125        foreach ($config['plugins'] as $plug) {
126                if (in_array($plug, $Tjquery_css)) {
127                        $flux .= "<link rel='stylesheet' type='text/css' media='all' href='"._DIR_JQUERYUI_CSS.$theme.$plug.".css' />\n";
128                }
129        }
130
131        return $flux;
132}
133
134?>
Note: See TracBrowser for help on using the repository browser.