-<?php\r
-\r
-if (!defined('_ECRIRE_INC_VERSION')) return;\r
-\r
-/**\r
- * Ajout des scripts de jQuery UI pour les pages publiques et privées\r
- * \r
- * @param: $plugins \r
- * @return: $plugins\r
- */\r
-function jqueryui_jquery_plugins($plugins){\r
-\r
- // Modules demandés par le pipeline jqueryui_plugins\r
- is_array($jqueryui_plugins = pipeline('jqueryui_plugins', array())) || $jqueryui_plugins = array();\r
- // gestion des dépendances des modules demandés\r
- is_array($jqueryui_plugins = jqueryui_dependances($jqueryui_plugins)) || $jqueryui_plugins = array();\r
-\r
- // insérer les scripts nécessaires\r
- foreach ($jqueryui_plugins as $val) {\r
- $plugins[] = "javascript/ui/".$val.".js";\r
- }\r
-\r
- return $plugins;\r
-}\r
-\r
-/**\r
- * Ajout des css de jQuery UI pour les pages publiques\r
- * \r
- * @param: $flux \r
- * @return: $flux\r
- */\r
-function jqueryui_insert_head_css($flux) {\r
-\r
- // Modules demandés par le pipeline jqueryui_plugins\r
- is_array($jqueryui_plugins = pipeline('jqueryui_plugins', array())) || $jqueryui_plugins = array();\r
- // gestion des dépendances des modules demandés\r
- is_array($jqueryui_plugins = jqueryui_dependances($jqueryui_plugins)) || $jqueryui_plugins = array();\r
-\r
- // ajouter le thème si nécessaire\r
- if ($jqueryui_plugins AND !in_array('jquery.ui.theme', $jqueryui_plugins))\r
- $jqueryui_plugins[] = 'jquery.ui.theme';\r
-\r
- // les css correspondantes aux plugins\r
- $styles = array(\r
- 'jquery.ui.accordion',\r
- 'jquery.ui.autocomplete',\r
- 'jquery.ui.button',\r
- 'jquery.ui.core',\r
- 'jquery.ui.datepicker',\r
- 'jquery.ui.dialog',\r
- 'jquery.ui.progressbar',\r
- 'jquery.ui.resizable',\r
- 'jquery.ui.selectable',\r
- 'jquery.ui.slider',\r
- 'jquery.ui.tabs',\r
- 'jquery.ui.theme'\r
- );\r
-\r
- // insérer les css nécessaires\r
- foreach ($jqueryui_plugins as $plugin) {\r
- if (in_array($plugin, $styles)) {\r
- $flux .= "<link rel='stylesheet' type='text/css' media='all' href='".find_in_path('css/'.$plugin.'.css')."' />\n";\r
- }\r
- }\r
-\r
- return $flux;\r
-}\r
-\r
-/**\r
- * Ajout de la css de jQuery UI pour les pages privées\r
- * \r
- * @param: $flux \r
- * @return: $flux\r
- */\r
-function jqueryui_header_prive_css($flux) {\r
- \r
- $flux .= "<link rel='stylesheet' type='text/css' media='all' href='".find_in_path('css/jquery-ui.css')."' />\n";\r
- \r
- return $flux;\r
-}\r
-\r
-/**\r
- * Gérer les dépendances de la lib jQuery UI\r
- *\r
- * @param array $plugins tableau des plugins demandés\r
- * @return array $plugins tableau des plugins nécessaires ou false\r
- */\r
-function jqueryui_dependances($plugins){\r
-\r
- /**\r
- * Gestion des dépendances inter plugins\r
- */\r
- $dependance_core = array(\r
- 'jquery.ui.mouse',\r
- 'jquery.ui.widget',\r
- 'jquery.ui.datepicker'\r
- );\r
-\r
- /**\r
- * Dépendances à widget\r
- * Si un autre plugin est dépendant d'un de ceux là, on ne les ajoute pas\r
- */\r
- $dependance_widget = array(\r
- 'jquery.ui.mouse',\r
- 'jquery.ui.accordion',\r
- 'jquery.ui.autocomplete',\r
- 'jquery.ui.button',\r
- 'jquery.ui.dialog',\r
- 'jquery.ui.tabs',\r
- 'jquery.ui.progressbar'\r
- );\r
-\r
- $dependance_mouse = array(\r
- 'jquery.ui.draggable',\r
- 'jquery.ui.droppable',\r
- 'jquery.ui.resizable',\r
- 'jquery.ui.selectable',\r
- 'jquery.ui.sortable',\r
- 'jquery.ui.slider'\r
- );\r
-\r
- $dependance_position = array(\r
- 'jquery.ui.autocomplete',\r
- 'jquery.ui.dialog',\r
- );\r
-\r
- $dependance_draggable = array(\r
- 'jquery.ui.droppable'\r
- );\r
-\r
- $dependance_effects = array(\r
- 'jquery.effects.blind',\r
- 'jquery.effects.bounce',\r
- 'jquery.effects.clip',\r
- 'jquery.effects.drop',\r
- 'jquery.effects.explode',\r
- 'jquery.effects.fold',\r
- 'jquery.effects.highlight',\r
- 'jquery.effects.pulsate',\r
- 'jquery.effects.scale',\r
- 'jquery.effects.shake',\r
- 'jquery.effects.slide',\r
- 'jquery.effects.transfer'\r
- );\r
-\r
- /**\r
- * Vérification des dépendances\r
- * Ici on ajoute quand même le plugin en question et on supprime les doublons via array_unique\r
- * Pour éviter le cas où un pipeline demanderait un plugin dans le mauvais sens de la dépendance par exemple\r
- *\r
- * On commence par le bas de l'échelle :\r
- * - draggable\r
- * - position\r
- * - mouse\r
- * - widget\r
- * - core\r
- * - effects\r
- */\r
- if(count($intersect = array_intersect($plugins,$dependance_draggable)) > 0){\r
- $keys = array_keys($intersect);\r
- array_splice($plugins,$keys[0], 0, "jquery.ui.draggable");\r
- }\r
- if(count($intersect = array_intersect($plugins,$dependance_position)) > 0){\r
- $keys = array_keys($intersect);\r
- array_splice($plugins,$keys[0], 0, "jquery.ui.position");\r
- }\r
- if(count($intersect = array_intersect($plugins,$dependance_mouse)) > 0){\r
- $keys = array_keys($intersect);\r
- array_splice($plugins,$keys[0], 0, "jquery.ui.mouse");\r
- }\r
- if(count($intersect = array_intersect($plugins,$dependance_widget)) > 0){\r
- $keys = array_keys($intersect);\r
- array_splice($plugins,$keys[0], 0, "jquery.ui.widget");\r
- }\r
- if(count($intersect = array_intersect($plugins,$dependance_core)) > 0){\r
- $keys = array_keys($intersect);\r
- array_splice($plugins,$keys[0], 0, "jquery.ui.core");\r
- }\r
- if(count($intersect = array_intersect($plugins,$dependance_effects)) > 0){\r
- $keys = array_keys($intersect);\r
- array_splice($plugins,$keys[0], 0, "jquery.effects.core");\r
- }\r
- $plugins = array_unique($plugins);\r
-\r
- return $plugins;\r
-}\r
-\r
-?>\r
+<?php
+
+if (!defined('_ECRIRE_INC_VERSION')) {
+ return;
+}
+
+/**
+ * Ajout des scripts de jQuery UI pour les pages publiques et privées
+ *
+ * @param array $plugins
+ * @return array $plugins
+ */
+function jqueryui_jquery_plugins($plugins) {
+
+ // Modules demandés par le pipeline jqueryui_plugins
+ $jqueryui_plugins = pipeline('jqueryui_plugins', array());
+
+ // si un module est demandé, on charge tout le JS.
+ if (is_array($jqueryui_plugins) and count($jqueryui_plugins)) {
+ $plugins[] = 'javascript/ui/jquery-ui.js';
+ }
+
+ return $plugins;
+}
+
+/**
+ * Ajout des css de jQuery UI pour les pages publiques
+ *
+ * @param: $flux
+ * @return: $flux
+ */
+function jqueryui_insert_head_css($flux) {
+ /**
+ * Doit on ne pas insérer les css (défini depuis un autre plugin) ?
+ */
+ if (defined('_JQUERYUI_CSS_NON')) {
+ return $flux;
+ }
+
+ // Modules demandés par le pipeline jqueryui_plugins
+ $jqueryui_plugins = pipeline('jqueryui_plugins', array());
+
+ // si un module est demandé, on charge tout le CSS.
+ if (is_array($jqueryui_plugins) and count($jqueryui_plugins)) {
+ $flux .= "<link rel='stylesheet' type='text/css' media='all' href='" . find_in_path('css/ui/jquery-ui.css') . "' />\n";
+ }
+
+ return $flux;
+}
+
+/**
+ * Ajout de la css de jQuery UI pour les pages privées
+ *
+ * @param: $flux
+ * @return: $flux
+ */
+function jqueryui_header_prive_css($flux) {
+
+ $flux .= "<link rel='stylesheet' type='text/css' media='all' href='" . find_in_path('css/ui/jquery-ui.css') . "' />\n";
+
+ return $flux;
+}
+
+/**
+ * Ajout du script effect de jQuery UI pour les pages privées
+ *
+ * @param: $flux
+ * @return: $flux
+ */
+function jqueryui_header_prive($flux) {
+
+ $flux .= "\n" . '<script src="' . find_in_path('prive/javascript/ui/jquery-ui.js') . '" type="text/javascript"></script>';
+
+ return $flux;
+}
+
+/**
+ * Gérer les dépendances de la lib jQuery UI
+ *
+ * @param array $plugins tableau des plugins demandés
+ * @return array $plugins tableau des plugins nécessaires ou false
+ */
+function jqueryui_dependances($plugins) {
+
+ // Gestion des renommages de plugins jqueryui
+ foreach ($plugins as $nb => $val) {
+ if (0 === strpos($val, 'jquery.effects.')) {
+ $plugins[$nb] = str_replace('jquery.effects.', 'effect-', $val);
+ }
+ if (0 === strpos($val, 'jquery.ui.')) {
+ $plugins[$nb] = str_replace('jquery.ui.', '', $val);
+ }
+ }
+
+ /**
+ * Gestion des dépendances inter plugins
+ */
+ $dependance_core = array(
+ 'mouse',
+ 'widget',
+ 'datepicker',
+ 'selectmenu'
+ );
+
+ /**
+ * Dépendances à widget
+ * Si un autre plugin est dépendant d'un de ceux là, on ne les ajoute pas
+ */
+ $dependance_widget = array(
+ 'accordion',
+ 'autocomplete',
+ 'button',
+ 'dialog',
+ 'mouse',
+ 'menu',
+ 'progressbar',
+ 'tabs',
+ 'tooltip',
+ 'selectmenu'
+ );
+
+ $dependance_mouse = array(
+ 'draggable',
+ 'droppable',
+ 'resizable',
+ 'selectable',
+ 'slider',
+ 'sortable'
+ );
+
+ $dependance_position = array(
+ 'autocomplete',
+ 'dialog',
+ 'menu',
+ 'tooltip',
+ 'selectmenu'
+ );
+
+ $dependance_button = array(
+ 'dialog',
+ 'spinner'
+ );
+
+ $dependance_menu = array(
+ 'autocomplete',
+ 'selectmenu'
+ );
+
+ $dependance_draggable = array(
+ 'droppable'
+ );
+
+ $dependance_resizable = array(
+ 'dialog'
+ );
+
+ $dependance_effects = array(
+ 'effect-blind',
+ 'effect-bounce',
+ 'effect-clip',
+ 'effect-drop',
+ 'effect-explode',
+ 'effect-fade',
+ 'effect-fold',
+ 'effect-highlight',
+ 'effect-puff',
+ 'effect-pulsate',
+ 'effect-scale',
+ 'effect-shake',
+ 'effect-size',
+ 'effect-slide',
+ 'effect-transfer'
+ );
+
+ /**
+ * Vérification des dépendances
+ * Ici on ajoute quand même le plugin en question et on supprime les doublons via array_unique
+ * Pour éviter le cas où un pipeline demanderait un plugin dans le mauvais sens de la dépendance par exemple
+ *
+ * On commence par le bas de l'échelle :
+ * - button
+ * - menu
+ * - draggable
+ * - position
+ * - mouse
+ * - widget
+ * - core
+ * - effects
+ */
+ if (count($intersect = array_intersect($plugins, $dependance_resizable)) > 0) {
+ $keys = array_keys($intersect);
+ array_splice($plugins, $keys[0], 0, 'resizable');
+ }
+ if (count($intersect = array_intersect($plugins, $dependance_button)) > 0) {
+ $keys = array_keys($intersect);
+ array_splice($plugins, $keys[0], 0, 'button');
+ }
+ if (count($intersect = array_intersect($plugins, $dependance_menu)) > 0) {
+ $keys = array_keys($intersect);
+ array_splice($plugins, $keys[0], 0, 'menu');
+ }
+ if (count($intersect = array_intersect($plugins, $dependance_draggable)) > 0) {
+ $keys = array_keys($intersect);
+ array_splice($plugins, $keys[0], 0, 'draggable');
+ }
+ if (count($intersect = array_intersect($plugins, $dependance_position)) > 0) {
+ $keys = array_keys($intersect);
+ array_splice($plugins, $keys[0], 0, 'position');
+ }
+ if (count($intersect = array_intersect($plugins, $dependance_mouse)) > 0) {
+ $keys = array_keys($intersect);
+ array_splice($plugins, $keys[0], 0, 'mouse');
+ }
+ if (count($intersect = array_intersect($plugins, $dependance_widget)) > 0) {
+ $keys = array_keys($intersect);
+ array_splice($plugins, $keys[0], 0, 'widget');
+ }
+ if (count($intersect = array_intersect($plugins, $dependance_core)) > 0) {
+ $keys = array_keys($intersect);
+ array_splice($plugins, $keys[0], 0, 'core');
+ }
+ if (count($intersect = array_intersect($plugins, $dependance_effects)) > 0) {
+ $keys = array_keys($intersect);
+ array_splice($plugins, $keys[0], 0, 'effect');
+ }
+ $plugins = array_unique($plugins);
+
+ return $plugins;
+}