[SPIP] ~maj v2.1.25-->2.1.26
[velocampus/web/www.git] / www / plugins / auto / jquery_ui / jqueryui_pipelines_20.php
1 <?php
2
3 if (!defined("_ECRIRE_INC_VERSION")) return;
4
5 function 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 */
103 function 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 ?>