3 if (!defined("_ECRIRE_INC_VERSION")) return;
5 function jqueryui_jquery_plugins($plugins){
6 $config = @unserialize
($GLOBALS['meta']['jqueryui']);
8 if (!is_array($config) OR !is_array($config['plugins'])) {
9 $config['plugins'] = array();
13 $config['plugins'] = array_unique(array_merge(sinon(pipeline('jqueryui_forcer'),array()),$config['plugins']));
16 * Gestion des dépendances inter plugins
18 $dependance_core = array(
31 $dependance_draggable = array(
36 $dependance_resizable = array(
40 $dependance_effects = array(
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
60 * On commence par le bas de l'échelle :
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");
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");
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");
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");
82 $config['plugins'] = array_unique($config['plugins']);
83 foreach ($config['plugins'] as $val) {
84 $plugins[] = _DIR_JQUERYUI_JS
.$val.".js";
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));
97 * jqueryui_insert_head : ajout des CSS de jQuery-UI pour les pages publiques
98 * avec gestion du theme et des UI utilises
103 function jqueryui_insert_head($flux) {
104 $config = @unserialize
($GLOBALS['meta']['jqueryui']);
106 // recuperer le repertoire du theme
108 if (isset($config['theme']) AND $config['theme'] != '')
109 $theme = $config['theme'].'/';
110 if ($theme == 'no_css/')
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']));
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';
120 // les CSS correspondantes aux plugins
121 $Tjquery_css = array(
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";