3 if (!defined('_ECRIRE_INC_VERSION')) return;
6 * Ajout des scripts de jQuery UI pour les pages publiques et privées
11 function jqueryui_jquery_plugins($plugins){
13 // Modules demandés par le pipeline jqueryui_plugins
14 is_array($jqueryui_plugins = pipeline('jqueryui_plugins', array())) ||
$jqueryui_plugins = array();
15 // gestion des dépendances des modules demandés
16 is_array($jqueryui_plugins = jqueryui_dependances($jqueryui_plugins)) ||
$jqueryui_plugins = array();
18 // insérer les scripts nécessaires
19 foreach ($jqueryui_plugins as $val) {
20 $plugins[] = "javascript/ui/".$val.".js";
27 * Ajout des css de jQuery UI pour les pages publiques
32 function jqueryui_insert_head_css_dist($flux) {
34 // Modules demandés par le pipeline jqueryui_plugins
35 is_array($jqueryui_plugins = pipeline('jqueryui_plugins', array())) ||
$jqueryui_plugins = array();
36 // gestion des dépendances des modules demandés
37 is_array($jqueryui_plugins = jqueryui_dependances($jqueryui_plugins)) ||
$jqueryui_plugins = array();
39 // ajouter le thème si nécessaire
40 if ($jqueryui_plugins AND !in_array('jquery.ui.theme', $jqueryui_plugins))
41 $jqueryui_plugins[] = 'jquery.ui.theme';
43 // les css correspondantes aux plugins
45 'jquery.ui.accordion',
46 'jquery.ui.autocomplete',
49 'jquery.ui.datepicker',
51 'jquery.ui.progressbar',
52 'jquery.ui.resizable',
53 'jquery.ui.selectable',
59 // insérer les css nécessaires
60 foreach ($jqueryui_plugins as $plugin) {
61 if (in_array($plugin, $styles)) {
62 $flux .= "<link rel='stylesheet' type='text/css' media='all' href='".find_in_path('css/'.$plugin.'.css')."' />\n";
70 * Ajout de la css de jQuery UI pour les pages privées
75 function jqueryui_header_prive_css($flux) {
77 $flux .= "<link rel='stylesheet' type='text/css' media='all' href='".find_in_path('css/jquery-ui.css')."' />\n";
83 * Gérer les dépendances de la lib jQuery UI
85 * @param array $plugins tableau des plugins demandés
86 * @return array $plugins tableau des plugins nécessaires ou false
88 function jqueryui_dependances($plugins){
91 * Gestion des dépendances inter plugins
93 $dependance_core = array(
96 'jquery.ui.datepicker'
100 * Dépendances à widget
101 * Si un autre plugin est dépendant d'un de ceux là, on ne les ajoute pas
103 $dependance_widget = array(
105 'jquery.ui.accordion',
106 'jquery.ui.autocomplete',
110 'jquery.ui.progressbar'
113 $dependance_mouse = array(
114 'jquery.ui.draggable',
115 'jquery.ui.droppable',
116 'jquery.ui.resizable',
117 'jquery.ui.selectable',
118 'jquery.ui.sortable',
122 $dependance_position = array(
123 'jquery.ui.autocomplete',
127 $dependance_draggable = array(
128 'jquery.ui.droppable'
131 $dependance_effects = array(
132 'jquery.effects.blind',
133 'jquery.effects.bounce',
134 'jquery.effects.clip',
135 'jquery.effects.drop',
136 'jquery.effects.explode',
137 'jquery.effects.fold',
138 'jquery.effects.highlight',
139 'jquery.effects.pulsate',
140 'jquery.effects.scale',
141 'jquery.effects.shake',
142 'jquery.effects.slide',
143 'jquery.effects.transfer'
147 * Vérification des dépendances
148 * Ici on ajoute quand même le plugin en question et on supprime les doublons via array_unique
149 * Pour éviter le cas où un pipeline demanderait un plugin dans le mauvais sens de la dépendance par exemple
151 * On commence par le bas de l'échelle :
159 if(count($intersect = array_intersect($plugins,$dependance_draggable)) > 0){
160 $keys = array_keys($intersect);
161 array_splice($plugins,$keys[0], 0, "jquery.ui.draggable");
163 if(count($intersect = array_intersect($plugins,$dependance_position)) > 0){
164 $keys = array_keys($intersect);
165 array_splice($plugins,$keys[0], 0, "jquery.ui.position");
167 if(count($intersect = array_intersect($plugins,$dependance_mouse)) > 0){
168 $keys = array_keys($intersect);
169 array_splice($plugins,$keys[0], 0, "jquery.ui.mouse");
171 if(count($intersect = array_intersect($plugins,$dependance_widget)) > 0){
172 $keys = array_keys($intersect);
173 array_splice($plugins,$keys[0], 0, "jquery.ui.widget");
175 if(count($intersect = array_intersect($plugins,$dependance_core)) > 0){
176 $keys = array_keys($intersect);
177 array_splice($plugins,$keys[0], 0, "jquery.ui.core");
179 if(count($intersect = array_intersect($plugins,$dependance_effects)) > 0){
180 $keys = array_keys($intersect);
181 array_splice($plugins,$keys[0], 0, "jquery.effects.core");
183 $plugins = array_unique($plugins);