[PLUGINS] +set de base
[lhc/web/www.git] / www / plugins / multilang / multilang_pipelines.php
diff --git a/www/plugins/multilang/multilang_pipelines.php b/www/plugins/multilang/multilang_pipelines.php
new file mode 100644 (file)
index 0000000..85058c8
--- /dev/null
@@ -0,0 +1,141 @@
+<?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
+\r
+               static $done = false;\r
+\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 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'){\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 = '' ;\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($val == 'on') { // Articles\r
+                                       $root .= ',input[type=hidden][name*=name_][value|='.$conf.']:not(input[value|='.$conf.'-logo])';\r
+                                       unset($config[$conf]);\r
+                               }\r
+                       }\r
+                       $texte = '\r
+                               var crayons_multilang_init = function(){\r
+                                       var crayons_root = ".formulaire_spip:has('.$root.')";\r
+                                       var fields_selector = "textarea,input:text:not(input.date,input.heure,*.nomulti)";\r
+                                       var forms_selector = "form[class!=\'form_upload\'][class!=\'form_upload_icon\']";\r
+                                       var root_opt = "form:has(.multilang)";\r
+                                       var 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
+                               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