[PLUGINS] ~maj globale
[lhc/web/www.git] / www / plugins / multilang / multilang_pipelines.php
index e4a253b..ef0fd9a 100644 (file)
-<?php\r
-\r
-if (!defined("_ECRIRE_INC_VERSION")) return;\r
-\r
-/**\r
- * Insertion dans le pipeline insert_head_css (SPIP)\r
- * si on a configuré multilang pour s'insérer dans l'espace public\r
- *\r
- * @param string $flux Le contenu du head CSS\r
- * @return string $flux Le contenu du head CSS modifié\r
- */\r
-function multilang_insert_head_css($flux){\r
-       if(!function_exists('lire_config'))\r
-               include_spip('inc/config');\r
-       \r
-       $multilang_public = lire_config('multilang/multilang_public','off');\r
-       if($multilang_public == 'on'){\r
-               static $done = false;\r
-               if (!$done) {\r
-                       $done = true;\r
-                       $flux .= '<link rel="stylesheet" href="'.url_absolue(generer_url_public('multilang.css')).'" type="text/css" media="all" />';\r
-               }\r
-       }\r
-       return $flux;\r
-}\r
-\r
-/**\r
- * Insertion dans le pipeline insert_head_prive (SPIP)\r
- * Ajoute css et javascript dans le <head> privé\r
- *\r
- * @param string $flux \r
- *             Le contenu du head\r
- * @return string $flux \r
- *             Le contenu du head modifié\r
- */\r
-function multilang_insert_head_prive($flux){\r
-       if(!function_exists('lire_config'))\r
-               include_spip('inc/config');\r
-       $config = lire_config('multilang',array());\r
-\r
-       $flux .= multilang_inserer_head($config);\r
-\r
-       return $flux;\r
-}\r
-\r
-/**\r
- * Insertion dans le pipeline insert_head (SPIP)\r
- * si on a configuré multilang pour s'insérer dans l'espace public\r
- *\r
- * @param string $flux \r
- *             Le contenu du head\r
- * @return string $flux \r
- *             Le contenu du head modifié\r
- */\r
-function multilang_insert_head($flux){\r
-       if(!function_exists('lire_config'))\r
-               include_spip('inc/config');\r
-       $config = lire_config('multilang',array());\r
-\r
-       if($config['multilang_public'] == 'on'){\r
-               $flux .= multilang_insert_head_css(''); // au cas ou il n'est pas implemente\r
-               $flux .= multilang_inserer_head($config);\r
-       }\r
-       return $flux;\r
-}\r
-\r
-/**\r
- * La fonction de modification du $flux pour l'insertion dans le head qu'il\r
- * soit privé ou public\r
- *\r
- * @param array $config La configuration du plugin\r
- * @return string $data Le contenu textuel qui sera inséré dans le head\r
- */\r
-function multilang_inserer_head($config=array()){\r
-       /**\r
-        * N'activer multilang que si plus d'une langue dans le site\r
-        */\r
-       if(count($langues = explode(',',$GLOBALS["meta"]["langues_multilingue"])) > 1){\r
-               $data = '\r
-<script type="text/javascript" src="'.generer_url_public("multilang.js","lang=".$GLOBALS["spip_lang"]).'"></script>\r
-';\r
-       }\r
-       return $data;\r
-}\r
-\r
-/**\r
- * Insertion dans le pipeline formulaire_traiter (SPIP)\r
- * On purge le cache js à chaque changement de la config de langue\r
- * \r
- * @param $flux array\r
- *             Le contexte du pipeline\r
- * @return $flux array\r
- *             Le contexte du pipeline modifié\r
- */\r
-function multilang_formulaire_traiter($flux){\r
-       if($flux['args']['form'] == 'configurer_multilinguisme'){\r
-               include_spip('inc/invalideur');\r
-               $rep_js = _DIR_VAR.'cache-js/';\r
-               $rep_css = _DIR_VAR.'cache-css/';\r
-               purger_repertoire($rep_js);\r
-               purger_repertoire($rep_css);\r
-               suivre_invalideur('1');\r
-       }\r
-       return $flux;\r
-}\r
-\r
-/**\r
- * Insertion dans le pipeline affichage_final (SPIP)\r
- * \r
- * Sur la page crayons.js, on insère également notre javascript pour être utilisable\r
- * dans les crayons\r
- * \r
- * @param string $flux Le contenu de la page\r
- * @return string $flux Le contenu de la page modifiée \r
- */\r
-function multilang_affichage_final($flux){\r
-       if(isset($_REQUEST['page']) && $_REQUEST['page'] == 'crayons.js' && (count($langues = explode(',',$GLOBALS["meta"]["langues_multilingue"])) > 1)){\r
-               if(!function_exists('lire_config'))\r
-                       include_spip('inc/config');\r
-               $config = lire_config('multilang',array());\r
-\r
-               /**\r
-                * On n'utilise multilang que si l'espace public est activé ainsi que les crayons\r
-                */\r
-               if(($config['multilang_public'] == 'on') && ($config['multilang_crayons'] == 'on')){\r
-                       unset($config['multilang_public']);\r
-                       unset($config['multilang_crayons']);\r
-                       $root = array();\r
-\r
-                       if(isset($config['siteconfig']) && $config['siteconfig']){\r
-                               $root[] = 'input[type=hidden][name*=name_][value|=meta-valeur]';\r
-                               unset($config['siteconfig']);\r
-                       }\r
-\r
-                       foreach($config as $conf => $val){\r
-                               if($conf == 'gis') // Les points gis sont traités bizarrement dans les crayons qui enlèvent purement et simplement leur 's'\r
-                                       $conf = 'gi';\r
-                               if($val == 'on') {\r
-                                       $root[] = 'input[type=hidden][name*=name_][value|='.$conf.']:not(input[value|='.$conf.'-logo]):not(input[value|='.$conf.'-vignette]):not(input[value|='.$conf.'-fichier])';\r
-                                       unset($config[$conf]);\r
-                               }\r
-                       }\r
-                       $texte = '\r
-                               var crayons_multilang_init = function(){\r
-                                       if(typeof(multilang_init_lang) == "function"){\r
-                                               var crayons_root = ".formulaire_spip:has('.implode(",",$root).')",\r
-                                                       fields_selector = "textarea,input:text:not(input.date,input.heure,*.nomulti)",\r
-                                                       forms_selector = "form[class!=\'form_upload\'][class!=\'form_upload_icon\']",\r
-                                                       root_opt = "form:has(.multilang)",\r
-                                                       fields_selector_opt = ".multilang";\r
-                                       multilang_init_lang({fields:fields_selector,fields_opt:fields_selector_opt,root:crayons_root,root_opt:root_opt,forms:forms_selector,init_done:false});\r
-                                       }\r
-                               }\r
-\r
-                               cQuery(document).ready(function(){\r
-                                       if(typeof onAjaxLoad == "function") onAjaxLoad(crayons_multilang_init);\r
-                                       crayons_multilang_init();\r
-                               });';\r
-                       $flux .= $texte;\r
-               }\r
-       }\r
-       return $flux;\r
-}\r
-?>
\ No newline at end of file
+<?php
+
+if (!defined('_ECRIRE_INC_VERSION')) {
+       return;
+}
+
+/**
+ * Insertion dans le pipeline insert_head_css (SPIP)
+ * si on a configuré multilang pour s'insérer dans l'espace public
+ *
+ * @param string $flux Le contenu du head CSS
+ * @return string $flux Le contenu du head CSS modifié
+ */
+function multilang_insert_head_css($flux) {
+       if (!function_exists('lire_config')) {
+               include_spip('inc/config');
+       }
+
+       $multilang_public = lire_config('multilang/multilang_public', 'off');
+       if ($multilang_public == 'on') {
+               static $done = false;
+               if (!$done) {
+                       $done = true;
+                       $css = url_absolue(generer_url_public('multilang.css'));
+                       $flux .= '<link rel="stylesheet" href="'.$css.'" type="text/css" media="all" />';
+               }
+       }
+       return $flux;
+}
+
+/**
+ * Insertion dans le pipeline insert_head_prive (SPIP)
+ * Ajoute css et javascript dans le <head> privé
+ *
+ * @param string $flux
+ *             Le contenu du head
+ * @return string $flux
+ *             Le contenu du head modifié
+ */
+function multilang_insert_head_prive($flux) {
+       if (!function_exists('lire_config')) {
+               include_spip('inc/config');
+       }
+       $config = lire_config('multilang', array());
+
+       $flux .= multilang_inserer_head($config);
+
+       return $flux;
+}
+
+/**
+ * Insertion dans le pipeline insert_head (SPIP)
+ * si on a configuré multilang pour s'insérer dans l'espace public
+ *
+ * @param string $flux
+ *             Le contenu du head
+ * @return string $flux
+ *             Le contenu du head modifié
+ */
+function multilang_insert_head($flux) {
+       if (!function_exists('lire_config')) {
+               include_spip('inc/config');
+       }
+       $config = lire_config('multilang', array());
+
+       if (isset($config['multilang_public']) and ($config['multilang_public'] == 'on')) {
+               $flux .= multilang_insert_head_css(''); // au cas ou il n'est pas implemente
+               $flux .= multilang_inserer_head($config);
+       }
+       return $flux;
+}
+
+/**
+ * La fonction de modification du $flux pour l'insertion dans le head qu'il
+ * soit privé ou public
+ *
+ * @param array $config La configuration du plugin
+ * @return string $data Le contenu textuel qui sera inséré dans le head
+ */
+function multilang_inserer_head($config = array()) {
+       /**
+        * N'activer multilang que si plus d'une langue dans le site
+        */
+       if (count(explode(',', $GLOBALS['meta']['langues_multilingue'])) > 1) {
+               $data = '
+<script type="text/javascript" src="'.generer_url_public('multilang.js', 'lang='.$GLOBALS['spip_lang']).'"></script>
+';
+       }
+       return $data;
+}
+
+/**
+ * Insertion dans le pipeline formulaire_traiter (SPIP)
+ * On purge le cache js à chaque changement de la config de langue
+ *
+ * @param $flux array
+ *             Le contexte du pipeline
+ * @return $flux array
+ *             Le contexte du pipeline modifié
+ */
+function multilang_formulaire_traiter($flux) {
+       if ($flux['args']['form'] == 'configurer_multilinguisme') {
+               include_spip('inc/invalideur');
+               $rep_js = _DIR_VAR.'cache-js/';
+               $rep_css = _DIR_VAR.'cache-css/';
+               purger_repertoire($rep_js);
+               purger_repertoire($rep_css);
+               suivre_invalideur('1');
+       }
+       return $flux;
+}
+
+/**
+ * Insertion dans le pipeline affichage_final (SPIP)
+ *
+ * Sur la page crayons.js, on insère également notre javascript pour être utilisable
+ * dans les crayons
+ *
+ * @param string $flux Le contenu de la page
+ * @return string $flux Le contenu de la page modifiée
+ */
+function multilang_affichage_final($flux) {
+       if (isset($_REQUEST['page']) && $_REQUEST['page'] == 'crayons.js'
+               and (count(explode(',', $GLOBALS['meta']['langues_multilingue'])) > 1)) {
+               if (!function_exists('lire_config')) {
+                       include_spip('inc/config');
+               }
+               $config = lire_config('multilang', array());
+
+               /**
+                * On n'utilise multilang que si l'espace public est activé ainsi que les crayons
+                */
+               if (($config['multilang_public'] == 'on') && ($config['multilang_crayons'] == 'on')) {
+                       unset($config['multilang_public']);
+                       unset($config['multilang_crayons']);
+                       $root = array();
+
+                       if (isset($config['siteconfig']) && $config['siteconfig']) {
+                               $root[] = 'input[type=hidden][name*=name_][value|=meta-valeur]';
+                               unset($config['siteconfig']);
+                       }
+
+                       foreach ($config as $conf => $val) {
+                               if ($conf == 'gis') {
+                                       // Les points gis sont traités bizarrement dans les crayons qui enlèvent
+                                       // purement et simplement leur 's'
+                                       $conf = 'gi';
+                               }
+                               if ($val == 'on') {
+                                       $root[] = 'input[type=hidden][name*=name_][value|='.$conf.']:not(input[value|='.$conf.'-logo]):not(input[value|='.$conf.'-vignette]):not(input[value|='.$conf.'-fichier])';
+                                       unset($config[$conf]);
+                               }
+                       }
+                       $texte = '
+                               var crayons_multilang_init = function(){
+                                       if(typeof(multilang_init_lang) == "function"){
+                                               var crayons_root = ".formulaire_spip:has('.implode(',', $root).')",
+                                                       fields_selector = "textarea,input:text:not(input.date,input.heure,*.nomulti)",
+                                                       forms_selector = "form[class!=\'form_upload\'][class!=\'form_upload_icon\']",
+                                                       root_opt = "form:has(.multilang)",
+                                                       fields_selector_opt = ".multilang";
+                                               multilang_init_lang({fields:fields_selector,fields_opt:fields_selector_opt,root:crayons_root,root_opt:root_opt,forms:forms_selector,init_done:false});
+                                       }
+                               }
+
+                               cQuery(document).ready(function(){
+                                       if(typeof onAjaxLoad == "function") onAjaxLoad(crayons_multilang_init);
+                                       crayons_multilang_init();
+                               });';
+                       $flux .= $texte;
+               }
+       }
+       return $flux;
+}