[PLUGINS] +set de base
[lhc/web/www.git] / www / plugins / multilang / javascript / multilang_init.js_fonctions.php
1 <?php
2
3 if (!defined("_ECRIRE_INC_VERSION")) return;
4
5 function generer_multilang_init(){
6 $data = '';
7 if(count($langues = explode(',',$GLOBALS["meta"]["langues_multilingue"])) > 1){
8 include_spip('inc/config');
9 $config = lire_config('multilang',array());
10 $root = '' ;
11 if(isset($config['multilang_public']))
12 unset($config['multilang_public']);
13 if(isset($config['multilang_crayons']))
14 unset($config['multilang_crayons']);
15 if(isset($config['siteconfig']) && $config['siteconfig']){
16 $root .= 'div#configurer-accueil,div.formulaire_configurer_identite' ; // Config Site
17 unset($config['siteconfig']);
18 }
19
20 foreach($config as $conf => $val){
21 if($val == 'on') {
22 if($conf == 'document')
23 $root .= ',div#portfolio_portfolio,div#portfolio_documents,div#liste_documents,div.formulaire_editer_document' ;
24 else
25 $root .= ',div.formulaire_editer_'.$conf;
26 unset($config[$conf]);
27 }
28 }
29 // Appel de multilang_init_lang si
30 // - document.ready
31 // - onAjaxLoad (cas des docs et de la configuration du site)
32 if(is_array($langues_config = lire_config('multilang/langues_utilisees','aucune')) && count($langues_config) > 0){
33 $langues = implode(',',array_intersect($langues,$langues_config));
34 }else{
35 $langues = implode(',',$langues);
36 }
37 $data = '
38 var multilang_avail_langs = "'.$langues.'".split(\',\'),
39 multilang_def_lang = "'.$GLOBALS["meta"]["langue_site"].'",
40 multilang_lang_courante = "'.$GLOBALS["spip_lang"].'",
41 multilang_dir_plugin = "'._DIR_PLUGIN_MULTILANG.'";
42
43 // On trie les langues. Langue de l environnement en premier,
44 // puis langue principale du site puis les autres en ordre alphabetique
45 // Un utilisateur de langue anglaise souhaite logiquement traduire en anglais
46 multilang_avail_langs = jQuery.grep(multilang_avail_langs, function(value) {
47 return (value != multilang_def_lang && value != multilang_lang_courante);
48 });
49 multilang_avail_langs.sort();
50 multilang_avail_langs.unshift(multilang_lang_courante);
51 if(multilang_lang_courante!=multilang_def_lang) multilang_avail_langs.unshift(multilang_def_lang);
52
53 jQuery(document).ready(function(){
54 function multilang_init(){
55 var root = "'.$root.'";
56 var fields_selector = "textarea:not(textarea#adresses_secondaires,textarea#repetitions),input:text:not(input#new_login,input#email,#titreparent,input.date,input.heure,input#largeur,input#hauteur,.ac_input,#url_syndic,#url_auto,#champ_geocoder,#champ_lat,#champ_lon,#champ_zoom,#places,*.nomulti),.multilang";
57 // on exclue aussi les form d upload (Pour les vignettes de docs, logos...)
58 var forms_selector = "form[class!=\'form_upload\'][class!=\'form_upload_icon\']";
59 // Les div qui ont un formulaire de classe multilang (pour accélérer la recherche dans le DOM,
60 // on passe le form et le parent sera trouvé dans lors de l\'init)
61 var root_opt = "form:has(.multilang)";
62 var fields_selector_opt = ".multilang";
63 multilang_init_lang({fields:fields_selector,fields_opt:fields_selector_opt,root:root,root_opt:root_opt,forms:forms_selector});
64
65 if($(".menu_multilang").length > 0){
66 $(".menu_multilang").each(function(){
67 var menu_lang = $(this);
68 $(window).scroll(function() {
69 var offset = menu_lang.parents("form").offset();
70 var limite_multilang = offset.top;
71 var limite_bas = limite_multilang+menu_lang.parents("form").height()-menu_lang.parents("form").find(".boutons").height();
72 var pos_bas = menu_lang.offset().top+menu_lang.height();
73 if(($(window).scrollTop() >= limite_multilang) && (pos_bas <= limite_bas) && ($(window).scrollTop() < limite_bas)){
74 if(!menu_lang.hasClass("menu_lang_flottant"))
75 menu_lang.addClass("menu_lang_flottant");
76 var menu_lang_width = menu_lang.width();
77 menu_lang.css({"position": "fixed", "top": 0, "width": menu_lang_width+"px","z-index":"999"});
78 }
79 if(($(window).scrollTop() < limite_multilang)||(pos_bas > limite_bas) )
80 menu_lang.removeClass("menu_lang_flottant").css({"position": "static", "width": "auto"});
81 });
82 });
83 }
84 }
85 multilang_init();
86 if(typeof onAjaxLoad == "function") onAjaxLoad(multilang_init);
87 });
88 ';
89 }
90 return $data;
91 }
92 ?>