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($flux) {
34 * Doit on ne pas insérer les css (défini depuis un autre plugin) ?
36 if(defined('_JQUERYUI_CSS_NON'))
39 // Modules demandés par le pipeline jqueryui_plugins
40 is_array($jqueryui_plugins = pipeline('jqueryui_plugins', array())) ||
$jqueryui_plugins = array();
41 // gestion des dépendances des modules demandés
42 is_array($jqueryui_plugins = jqueryui_dependances($jqueryui_plugins)) ||
$jqueryui_plugins = array();
44 // ajouter le thème si nécessaire
45 if ($jqueryui_plugins AND !in_array('jquery.ui.theme', $jqueryui_plugins))
46 $jqueryui_plugins[] = 'jquery.ui.theme';
48 // les css correspondantes aux plugins
50 'jquery.ui.accordion',
51 'jquery.ui.autocomplete',
54 'jquery.ui.datepicker',
56 'jquery.ui.progressbar',
57 'jquery.ui.resizable',
58 'jquery.ui.selectable',
64 // insérer les css nécessaires
65 foreach ($jqueryui_plugins as $plugin) {
66 if (in_array($plugin, $styles)) {
67 $flux .= "<link rel='stylesheet' type='text/css' media='all' href='".find_in_path('css/'.$plugin.'.css')."' />\n";
75 * Ajout de la css de jQuery UI pour les pages privées
80 function jqueryui_header_prive_css($flux) {
82 $flux .= "<link rel='stylesheet' type='text/css' media='all' href='".find_in_path('css/jquery-ui.css')."' />\n";
88 * Gérer les dépendances de la lib jQuery UI
90 * @param array $plugins tableau des plugins demandés
91 * @return array $plugins tableau des plugins nécessaires ou false
93 function jqueryui_dependances($plugins){
96 * Gestion des dépendances inter plugins
98 $dependance_core = array(
101 'jquery.ui.datepicker'
105 * Dépendances à widget
106 * Si un autre plugin est dépendant d'un de ceux là, on ne les ajoute pas
108 $dependance_widget = array(
110 'jquery.ui.accordion',
111 'jquery.ui.autocomplete',
115 'jquery.ui.progressbar'
118 $dependance_mouse = array(
119 'jquery.ui.draggable',
120 'jquery.ui.droppable',
121 'jquery.ui.resizable',
122 'jquery.ui.selectable',
123 'jquery.ui.sortable',
127 $dependance_position = array(
128 'jquery.ui.autocomplete',
132 $dependance_draggable = array(
133 'jquery.ui.droppable'
136 $dependance_effects = array(
137 'jquery.effects.blind',
138 'jquery.effects.bounce',
139 'jquery.effects.clip',
140 'jquery.effects.drop',
141 'jquery.effects.explode',
142 'jquery.effects.fold',
143 'jquery.effects.highlight',
144 'jquery.effects.pulsate',
145 'jquery.effects.scale',
146 'jquery.effects.shake',
147 'jquery.effects.slide',
148 'jquery.effects.transfer'
152 * Vérification des dépendances
153 * Ici on ajoute quand même le plugin en question et on supprime les doublons via array_unique
154 * Pour éviter le cas où un pipeline demanderait un plugin dans le mauvais sens de la dépendance par exemple
156 * On commence par le bas de l'échelle :
164 if(count($intersect = array_intersect($plugins,$dependance_draggable)) > 0){
165 $keys = array_keys($intersect);
166 array_splice($plugins,$keys[0], 0, "jquery.ui.draggable");
168 if(count($intersect = array_intersect($plugins,$dependance_position)) > 0){
169 $keys = array_keys($intersect);
170 array_splice($plugins,$keys[0], 0, "jquery.ui.position");
172 if(count($intersect = array_intersect($plugins,$dependance_mouse)) > 0){
173 $keys = array_keys($intersect);
174 array_splice($plugins,$keys[0], 0, "jquery.ui.mouse");
176 if(count($intersect = array_intersect($plugins,$dependance_widget)) > 0){
177 $keys = array_keys($intersect);
178 array_splice($plugins,$keys[0], 0, "jquery.ui.widget");
180 if(count($intersect = array_intersect($plugins,$dependance_core)) > 0){
181 $keys = array_keys($intersect);
182 array_splice($plugins,$keys[0], 0, "jquery.ui.core");
184 if(count($intersect = array_intersect($plugins,$dependance_effects)) > 0){
185 $keys = array_keys($intersect);
186 array_splice($plugins,$keys[0], 0, "jquery.effects.core");
188 $plugins = array_unique($plugins);