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

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

if (!defined("_ECRIRE_INC_VERSION")) return; sur tout fichier PHP pour sécurité future principalement

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