[SPIP] v3.2.7-->v3.2.9
[lhc/web/www.git] / www / plugins-dist / jquery_ui / jqueryui_pipelines.php
1 <?php
2
3 if (!defined('_ECRIRE_INC_VERSION')) {
4 return;
5 }
6
7 /**
8 * Ajout des scripts de jQuery UI pour les pages publiques et privées
9 *
10 * @param array $plugins
11 * @return array $plugins
12 */
13 function jqueryui_jquery_plugins($plugins) {
14
15 // Modules demandés par le pipeline jqueryui_plugins
16 $jqueryui_plugins = pipeline('jqueryui_plugins', array());
17
18 // si un module est demandé, on charge tout le JS.
19 if (is_array($jqueryui_plugins) and count($jqueryui_plugins)) {
20 $plugins[] = 'javascript/ui/jquery-ui.js';
21 }
22
23 return $plugins;
24 }
25
26 /**
27 * Ajout des css de jQuery UI pour les pages publiques
28 *
29 * @param: $flux
30 * @return: $flux
31 */
32 function jqueryui_insert_head_css($flux) {
33 /**
34 * Doit on ne pas insérer les css (défini depuis un autre plugin) ?
35 */
36 if (defined('_JQUERYUI_CSS_NON')) {
37 return $flux;
38 }
39
40 // Modules demandés par le pipeline jqueryui_plugins
41 $jqueryui_plugins = pipeline('jqueryui_plugins', array());
42
43 // si un module est demandé, on charge tout le CSS.
44 if (is_array($jqueryui_plugins) and count($jqueryui_plugins)) {
45 $flux .= "<link rel='stylesheet' type='text/css' media='all' href='" . find_in_path('css/ui/jquery-ui.css') . "' />\n";
46 }
47
48 return $flux;
49 }
50
51 /**
52 * Ajout de la css de jQuery UI pour les pages privées
53 *
54 * @param: $flux
55 * @return: $flux
56 */
57 function jqueryui_header_prive_css($flux) {
58
59 $flux .= "<link rel='stylesheet' type='text/css' media='all' href='" . find_in_path('css/ui/jquery-ui.css') . "' />\n";
60
61 return $flux;
62 }
63
64 /**
65 * Ajout du script effect de jQuery UI pour les pages privées
66 *
67 * @param: $flux
68 * @return: $flux
69 */
70 function jqueryui_header_prive($flux) {
71
72 $flux .= "\n" . '<script src="' . find_in_path('prive/javascript/ui/jquery-ui.js') . '" type="text/javascript"></script>';
73
74 return $flux;
75 }
76
77 /**
78 * Gérer les dépendances de la lib jQuery UI
79 *
80 * @param array $plugins tableau des plugins demandés
81 * @return array $plugins tableau des plugins nécessaires ou false
82 */
83 function jqueryui_dependances($plugins) {
84
85 // Gestion des renommages de plugins jqueryui
86 foreach ($plugins as $nb => $val) {
87 if (0 === strpos($val, 'jquery.effects.')) {
88 $plugins[$nb] = str_replace('jquery.effects.', 'effect-', $val);
89 }
90 if (0 === strpos($val, 'jquery.ui.')) {
91 $plugins[$nb] = str_replace('jquery.ui.', '', $val);
92 }
93 }
94
95 /**
96 * Gestion des dépendances inter plugins
97 */
98 $dependance_core = array(
99 'mouse',
100 'widget',
101 'datepicker',
102 'selectmenu'
103 );
104
105 /**
106 * Dépendances à widget
107 * Si un autre plugin est dépendant d'un de ceux là, on ne les ajoute pas
108 */
109 $dependance_widget = array(
110 'accordion',
111 'autocomplete',
112 'button',
113 'dialog',
114 'mouse',
115 'menu',
116 'progressbar',
117 'tabs',
118 'tooltip',
119 'selectmenu'
120 );
121
122 $dependance_mouse = array(
123 'draggable',
124 'droppable',
125 'resizable',
126 'selectable',
127 'slider',
128 'sortable'
129 );
130
131 $dependance_position = array(
132 'autocomplete',
133 'dialog',
134 'menu',
135 'tooltip',
136 'selectmenu'
137 );
138
139 $dependance_button = array(
140 'dialog',
141 'spinner'
142 );
143
144 $dependance_menu = array(
145 'autocomplete',
146 'selectmenu'
147 );
148
149 $dependance_draggable = array(
150 'droppable'
151 );
152
153 $dependance_resizable = array(
154 'dialog'
155 );
156
157 $dependance_effects = array(
158 'effect-blind',
159 'effect-bounce',
160 'effect-clip',
161 'effect-drop',
162 'effect-explode',
163 'effect-fade',
164 'effect-fold',
165 'effect-highlight',
166 'effect-puff',
167 'effect-pulsate',
168 'effect-scale',
169 'effect-shake',
170 'effect-size',
171 'effect-slide',
172 'effect-transfer'
173 );
174
175 /**
176 * Vérification des dépendances
177 * Ici on ajoute quand même le plugin en question et on supprime les doublons via array_unique
178 * Pour éviter le cas où un pipeline demanderait un plugin dans le mauvais sens de la dépendance par exemple
179 *
180 * On commence par le bas de l'échelle :
181 * - button
182 * - menu
183 * - draggable
184 * - position
185 * - mouse
186 * - widget
187 * - core
188 * - effects
189 */
190 if (count($intersect = array_intersect($plugins, $dependance_resizable)) > 0) {
191 $keys = array_keys($intersect);
192 array_splice($plugins, $keys[0], 0, 'resizable');
193 }
194 if (count($intersect = array_intersect($plugins, $dependance_button)) > 0) {
195 $keys = array_keys($intersect);
196 array_splice($plugins, $keys[0], 0, 'button');
197 }
198 if (count($intersect = array_intersect($plugins, $dependance_menu)) > 0) {
199 $keys = array_keys($intersect);
200 array_splice($plugins, $keys[0], 0, 'menu');
201 }
202 if (count($intersect = array_intersect($plugins, $dependance_draggable)) > 0) {
203 $keys = array_keys($intersect);
204 array_splice($plugins, $keys[0], 0, 'draggable');
205 }
206 if (count($intersect = array_intersect($plugins, $dependance_position)) > 0) {
207 $keys = array_keys($intersect);
208 array_splice($plugins, $keys[0], 0, 'position');
209 }
210 if (count($intersect = array_intersect($plugins, $dependance_mouse)) > 0) {
211 $keys = array_keys($intersect);
212 array_splice($plugins, $keys[0], 0, 'mouse');
213 }
214 if (count($intersect = array_intersect($plugins, $dependance_widget)) > 0) {
215 $keys = array_keys($intersect);
216 array_splice($plugins, $keys[0], 0, 'widget');
217 }
218 if (count($intersect = array_intersect($plugins, $dependance_core)) > 0) {
219 $keys = array_keys($intersect);
220 array_splice($plugins, $keys[0], 0, 'core');
221 }
222 if (count($intersect = array_intersect($plugins, $dependance_effects)) > 0) {
223 $keys = array_keys($intersect);
224 array_splice($plugins, $keys[0], 0, 'effect');
225 }
226 $plugins = array_unique($plugins);
227
228 return $plugins;
229 }