[PLUGINS] +set de base
[lhc/web/www.git] / www / plugins / multilang / multilang_pipelines.php
1 <?php
2
3 if (!defined("_ECRIRE_INC_VERSION")) return;
4
5 /**
6 * Insertion dans le pipeline insert_head_css (SPIP)
7 * si on a configuré multilang pour s'insérer dans l'espace public
8 *
9 * @param string $flux Le contenu du head CSS
10 * @return string $flux Le contenu du head CSS modifié
11 */
12 function multilang_insert_head_css($flux){
13 if(!function_exists('lire_config'))
14 include_spip('inc/config');
15
16 $multilang_public = lire_config('multilang/multilang_public','off');
17 if($multilang_public == 'on'){
18
19 static $done = false;
20
21 if (!$done) {
22 $done = true;
23 $flux .= '<link rel="stylesheet" href="'.url_absolue(generer_url_public('multilang.css')).'" type="text/css" media="all" />';
24 }
25 }
26 return $flux;
27 }
28
29 /**
30 * Insertion dans le pipeline insert_head_prive (SPIP)
31 * Ajoute css et javascript dans le <head> privé
32 *
33 * @param string $flux
34 * Le contenu du head
35 * @return string $flux
36 * Le contenu du head modifié
37 */
38 function multilang_insert_head_prive($flux){
39 if(!function_exists('lire_config'))
40 include_spip('inc/config');
41 $config = lire_config('multilang',array());
42
43 $flux .= multilang_inserer_head($config);
44
45 return $flux;
46 }
47
48 /**
49 * Insertion dans le pipeline insert_head (SPIP)
50 * si on a configuré multilang pour s'insérer dans l'espace public
51 *
52 * @param string $flux
53 * Le contenu du head
54 * @return string $flux
55 * Le contenu du head modifié
56 */
57 function multilang_insert_head($flux){
58 if(!function_exists('lire_config'))
59 include_spip('inc/config');
60 $config = lire_config('multilang',array());
61
62 if($config['multilang_public'] == 'on'){
63 $flux .= multilang_insert_head_css(''); // au cas ou il n'est pas implemente
64 $flux .= multilang_inserer_head($config);
65 }
66 return $flux;
67 }
68
69 /**
70 * La fonction de modification du $flux pour l'insertion dans le head qu'il
71 * soit privé ou public
72 *
73 * @param array $config La configuration du plugin
74 * @return string $data Le contenu textuel qui sera inséré dans le head
75 */
76 function multilang_inserer_head($config=array()){
77 /**
78 * N'activer multilang que si plus d'une langue dans le site
79 */
80 if(count($langues = explode(',',$GLOBALS["meta"]["langues_multilingue"])) > 1){
81 $data = '
82 <script type="text/javascript" src="'.generer_url_public("multilang.js","lang=".$GLOBALS["spip_lang"]).'"></script>
83 ';
84 }
85 return $data;
86 }
87
88 /**
89 * Insertion dans le pipeline affichage_final (SPIP)
90 *
91 * Sur la page crayons.js, on insère également notre javascript pour être utilisable
92 * dans les crayons
93 *
94 * @param string $flux Le contenu de la page
95 * @return string $flux Le contenu de la page modifiée
96 */
97 function multilang_affichage_final($flux){
98 if(isset($_REQUEST['page']) && $_REQUEST['page'] == 'crayons.js'){
99 if(!function_exists('lire_config'))
100 include_spip('inc/config');
101 $config = lire_config('multilang',array());
102
103 /**
104 * On n'utilise multilang que si l'espace public est activé ainsi que les crayons
105 */
106 if(($config['multilang_public'] == 'on') && ($config['multilang_crayons'] == 'on')){
107 unset($config['multilang_public']);
108 unset($config['multilang_crayons']);
109 $root = '' ;
110
111 if(isset($config['siteconfig']) && $config['siteconfig']){
112 $root .= ',input[type=hidden][name*=name_][value|=meta-valeur]';
113 unset($config['siteconfig']);
114 }
115
116 foreach($config as $conf => $val){
117 if($val == 'on') { // Articles
118 $root .= ',input[type=hidden][name*=name_][value|='.$conf.']:not(input[value|='.$conf.'-logo])';
119 unset($config[$conf]);
120 }
121 }
122 $texte = '
123 var crayons_multilang_init = function(){
124 var crayons_root = ".formulaire_spip:has('.$root.')";
125 var fields_selector = "textarea,input:text:not(input.date,input.heure,*.nomulti)";
126 var forms_selector = "form[class!=\'form_upload\'][class!=\'form_upload_icon\']";
127 var root_opt = "form:has(.multilang)";
128 var fields_selector_opt = ".multilang";
129 multilang_init_lang({fields:fields_selector,fields_opt:fields_selector_opt,root:crayons_root,root_opt:root_opt,forms:forms_selector,init_done:false});
130 }
131
132 cQuery(document).ready(function(){
133 if(typeof onAjaxLoad == "function") onAjaxLoad(crayons_multilang_init);
134 crayons_multilang_init();
135 });';
136 $flux .= $texte;
137 }
138 }
139 return $flux;
140 }
141 ?>