source: spip-zone/_plugins_/multilang/trunk/multilang_pipelines.php @ 118848

Last change on this file since 118848 was 118848, checked in by Charles Razack, 7 weeks ago

Rétablir le fonctionnement avec crayons v1 + ajouter compat avec crayons v2 qui utilise produire_fond_statique() pour charger son js. Du coup on fait une fonction mutualisée pour le js multilang/crayons, je la mets dans le dossier javascript/ pour avoir tout le js au même endroit. Pour le coup, pas de séparation html/php pour celui là, ça économise un récupérer_fond.

File size: 4.8 KB
Line 
1<?php
2
3if (!defined('_ECRIRE_INC_VERSION')) {
4        return;
5}
6
7/**
8 * Insertion dans le pipeline insert_head_css (SPIP)
9 * si on a configuré multilang pour s'insérer dans l'espace public
10 *
11 * @param string $flux Le contenu du head CSS
12 * @return string $flux Le contenu du head CSS modifié
13 */
14function multilang_insert_head_css($flux) {
15        if (!function_exists('lire_config')) {
16                include_spip('inc/config');
17        }
18
19        $multilang_public = lire_config('multilang/multilang_public', 'off');
20        if ($multilang_public == 'on') {
21                static $done = false;
22                if (!$done) {
23                        $done = true;
24                        $css = url_absolue(generer_url_public('multilang.css'));
25                        $flux .= '<link rel="stylesheet" href="'.$css.'" type="text/css" media="all" />';
26                }
27        }
28        return $flux;
29}
30
31/**
32 * Insertion dans le pipeline insert_head_prive (SPIP)
33 * Ajoute css et javascript dans le <head> privé
34 *
35 * @param string $flux
36 *              Le contenu du head
37 * @return string $flux
38 *              Le contenu du head modifié
39 */
40function multilang_insert_head_prive($flux) {
41        if (!function_exists('lire_config')) {
42                include_spip('inc/config');
43        }
44        $config = lire_config('multilang', array());
45
46        $flux .= multilang_inserer_head($config);
47
48        return $flux;
49}
50
51/**
52 * Insertion dans le pipeline insert_head (SPIP)
53 * si on a configuré multilang pour s'insérer dans l'espace public
54 *
55 * @param string $flux
56 *              Le contenu du head
57 * @return string $flux
58 *              Le contenu du head modifié
59 */
60function multilang_insert_head($flux) {
61        if (!function_exists('lire_config')) {
62                include_spip('inc/config');
63        }
64        $config = lire_config('multilang', array());
65
66        if (isset($config['multilang_public']) and ($config['multilang_public'] == 'on')) {
67                $flux .= multilang_insert_head_css(''); // au cas ou il n'est pas implemente
68                $flux .= multilang_inserer_head($config);
69        }
70        return $flux;
71}
72
73/**
74 * La fonction de modification du $flux pour l'insertion dans le head qu'il
75 * soit privé ou public
76 *
77 * @param array $config La configuration du plugin
78 * @return string $data Le contenu textuel qui sera inséré dans le head
79 */
80function multilang_inserer_head($config = array()) {
81        /**
82         * N'activer multilang que si plus d'une langue dans le site
83         */
84        if (count(explode(',', $GLOBALS['meta']['langues_multilingue'])) > 1) {
85                $data = '
86<script type="text/javascript" src="'.generer_url_public('multilang.js', 'lang='.$GLOBALS['spip_lang']).'"></script>
87';
88        }
89        return $data;
90}
91
92/**
93 * Insertion dans le pipeline formulaire_traiter (SPIP)
94 * On purge le cache js à chaque changement de la config de langue
95 *
96 * @param $flux array
97 *              Le contexte du pipeline
98 * @return $flux array
99 *              Le contexte du pipeline modifié
100 */
101function multilang_formulaire_traiter($flux) {
102        if ($flux['args']['form'] == 'configurer_multilinguisme') {
103                include_spip('inc/invalideur');
104                $rep_js = _DIR_VAR.'cache-js/';
105                $rep_css = _DIR_VAR.'cache-css/';
106                purger_repertoire($rep_js);
107                purger_repertoire($rep_css);
108                suivre_invalideur('1');
109        }
110        return $flux;
111}
112
113/**
114 * Modifie le résultat de la compilation des squelettes
115 *
116 * Sur la page crayons.js, on insère également notre javascript pour être utilisable
117 * dans les crayons
118 *
119 * @note
120 * Pour crayons v2+
121 * Pour les versions précédentes, voir dans affichage_final
122 * On fait l'économie du test de version, car ce sont 2 pipelines différents selon les versions.
123 *
124 * @param string $flux Le contenu de la page
125 * @return string $flux Le contenu de la page modifiée
126 */
127function multilang_recuperer_fond($flux) {
128        if (
129                $flux['args']['fond'] === 'crayons.js'
130                and (count(explode(',', $GLOBALS['meta']['langues_multilingue'])) > 1)
131                and include_spip('inc/config')
132                and $config = lire_config('multilang', array())
133                and ($config['multilang_public'] == 'on')
134                and ($config['multilang_crayons'] == 'on')
135        ) {
136                include_spip('javascript/multilang_crayons');
137                $flux['data']['texte'] .= multilang_javascript_crayons($config);
138        }
139
140        return $flux;
141}
142
143/**
144 * Insertion dans le pipeline affichage_final (SPIP)
145 *
146 * Sur la page crayons.js, on insère également notre javascript pour être utilisable
147 * dans les crayons
148 *
149 * @note
150 * Pour crayons < v2
151 * Pour les versions ultérieures, voir dans recuperer_fond
152 * On fait l'économie du test de version, car ce sont 2 pipelines différents selon les versions.
153 *
154 * @param string $flux Le contenu de la page
155 * @return string $flux Le contenu de la page modifiée
156 */
157function multilang_affichage_final($flux) {
158        if (
159                isset($_REQUEST['page'])
160                and $_REQUEST['page'] == 'crayons.js'
161                and (count(explode(',', $GLOBALS['meta']['langues_multilingue'])) > 1)
162                and include_spip('inc/config')
163                and $config = lire_config('multilang', array())
164                and ($config['multilang_public'] == 'on')
165                and ($config['multilang_crayons'] == 'on')
166        ) {
167                include_spip('javascript/multilang_crayons');
168                $flux .= multilang_javascript_crayons($config);
169        }
170        return $flux;
171}
Note: See TracBrowser for help on using the repository browser.