[SPIP] ~maj v3.0.14-->v3.0.17
[ptitvelo/web/www.git] / www / prive / formulaires / configurer_multilinguisme.php
1 <?php
2
3 /***************************************************************************\
4 * SPIP, Systeme de publication pour l'internet *
5 * *
6 * Copyright (c) 2001-2014 *
7 * Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James *
8 * *
9 * Ce programme est un logiciel libre distribue sous licence GNU/GPL. *
10 * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. *
11 \***************************************************************************/
12
13 if (!defined('_ECRIRE_INC_VERSION')) return;
14
15 function formulaires_configurer_multilinguisme_charger_dist(){
16 $valeurs['multi_secteurs'] = $GLOBALS['meta']['multi_secteurs'];
17 foreach(array('multi_objets','gerer_trad_objets') as $m)
18 $valeurs[$m] = explode(',',isset($GLOBALS['meta'][$m])?$GLOBALS['meta'][$m]:'');
19
20 if (count($valeurs['multi_objets'])
21 OR count(explode(',',$GLOBALS['meta']['langues_utilisees'])) > 1) {
22
23 $selection = (is_null(_request('multi_objets'))?explode(',', $GLOBALS['meta']['langues_multilingue']):_request('langues_auth'));
24 $valeurs['_langues'] = saisie_langues_utiles('langues_auth',$selection?$selection:array());
25 $valeurs['_nb_langues_selection'] = count($selection);
26 }
27
28 return $valeurs;
29 }
30
31
32 function formulaires_configurer_multilinguisme_traiter_dist(){
33 $res = array('editable'=>true);
34 // un checkbox seul de name X non coche n'est pas poste.
35 // on verifie le champ X_check qui indique que la checkbox etait presente dans le formulaire.
36 foreach(array('multi_secteurs') as $m) {
37 if (!is_null(_request($m . '_check'))) {
38 ecrire_meta($m, _request($m) ? 'oui' : 'non');
39 }
40 }
41 foreach(array('multi_objets','gerer_trad_objets') as $m) {
42 if (!is_null($v=_request($m))) {
43 // join et enlever la valeur vide ''
44 ecrire_meta($m, implode(',',array_diff($v,array(''))));
45 }
46 }
47
48 if ($i = _request('langues_auth') AND is_array($i)) {
49 $i = array_unique(array_merge($i,explode(',',$GLOBALS['meta']['langues_utilisees'])));
50 ecrire_meta('langues_multilingue', implode(",",$i));
51 }
52 $res['message_ok'] = _T('config_info_enregistree');
53 return $res;
54 }
55
56 /**
57 * Tester si une table supporte les langues (champ lang)
58 * @param string $table_sql
59 * @return string
60 */
61 function table_supporte_lang($table_sql){
62 $trouver_table = charger_fonction('trouver_table','base');
63 $desc = $trouver_table($table_sql);
64 if (!$desc OR !isset($desc['field']['lang']))
65 return '';
66 return ' ';
67 }
68
69 /**
70 * Tester si une table supporte les traductions (champ id_trad)
71 * @param string $table_sql
72 * @return string
73 */
74 function table_supporte_trad($table_sql){
75 $trouver_table = charger_fonction('trouver_table','base');
76 $desc = $trouver_table($table_sql);
77 if (!$desc OR !isset($desc['field']['id_trad']))
78 return '';
79 return ' ';
80 }
81
82
83 function saisie_langues_utiles($name, $selection) {
84 include_spip('inc/lang_liste');
85 $langues = $GLOBALS['codes_langues'];
86
87 $langues_installees = explode(',', $GLOBALS['meta']['langues_proposees']);
88 $langues_trad = array_flip($langues_installees);
89
90 $langues_bloquees = explode(',',$GLOBALS['meta']['langues_utilisees']);
91
92 $res = "";
93
94 $i = 0;
95 foreach($langues_bloquees as $code_langue) {
96 $nom_langue = $langues[$code_langue];
97 $res .= "<li class='choix "
98 . alterner($i++,'odd','even')
99 . (isset($langues_trad[$code_langue])?" traduite":"")
100 . "'>"
101 . "<input type='hidden' name='{$name}[]' value='$code_langue'>" // necessaire ...
102 . "<input type='checkbox' name='{$name}[]' id='{$name}_$code_langue' value='$code_langue' checked='checked' disabled='disabled' />"
103 . "<label for='{$name}_$code_langue'>" . $nom_langue ."&nbsp;&nbsp; <span class='code_langue'>[$code_langue]</span></label>"
104 . "</li>";
105 }
106
107 if ($res)
108 $res = "<ul id='langues_bloquees'>".$res."</ul><div class='nettoyeur'></div>";
109
110 $res .= "<ul id='langues_proposees'>";
111
112 $i = 0;
113 $langues_bloquees = array_flip($langues_bloquees);
114 foreach($langues as $code_langue=>$nom_langue) {
115 if (!isset($langues_bloquees[$code_langue])) {
116 $checked = (in_array($code_langue,$selection)?' checked="checked"':'');
117 $res .= "<li class='choix "
118 . alterner($i++,'odd','even')
119 . (isset($langues_trad[$code_langue])?" traduite":"")
120 . "'>"
121 . "<input type='checkbox' name='{$name}[]' id='{$name}_$code_langue' value='$code_langue'"
122 . $checked
123 . "/>"
124 . "<label for='{$name}_$code_langue'"
125 . ($checked?" class='on'":"")
126 . ">"
127 . $nom_langue ."&nbsp;&nbsp; <span class='code_langue'>[$code_langue]</span></label>"
128 . "</li>";
129 }
130 }
131
132 $res .= "</ul><div class='nettoyeur'></div>";
133 return $res;
134 }
135 ?>