[PLUGINS] +set de base
[lhc/web/www.git] / www / plugins / multilang / alire.txt
1
2 Tous les champs input:text et textarea sauf ceux des forms .form_upload et .form_upload_icon sont traites dans :
3 - articles
4 - rubriques
5 - configuration du site
6 - auteurs (interessant uniquement pour le champs BIO)
7 - documents dans les colonnes de gauche des pages d'edition d'articles et de rubriques
8 - documents dans les parties basses des pages de presentation des articles et rubriques
9 - groupe de mots cles
10 - mots cles
11 - sites
12 - Breves
13
14
15 A faire :
16 - F&T : pb de doublon avec forms_lang.js
17 - Integration avec Porte-Plume : quand on change de langue, la previsu "Voir" ne bascule pas
18
19 - Suggestion de RastaPopoulos : J'avais une idée supplémentaire pour que ce soit extensible : activer également ce système sur tous les champs ayant une classe "multilang". Fait, a tester avec class "multilang"
20
21 Trucs a regler :
22 1.-------------
23 Avec Mediatheque, l'init est rappelee grace au onAjaxLoad. Et affiche bien le menu lang dans la modale. Mais un 2e menu est aussi rajoute dans le doc principal sous la modale de mediatheque... De meme quand on ferme la modale, on repasse par l'init... Et on se retrouve avec un 3e menu. J'ai donc interdit la creation d'un menu s'il en existe deja un dans la div :
24 fct forms_init_multi :
25 if(!container.find('.menu_lang').size())
26 container.prepend("<div class='menu_lang'>");
27 et supprime le test de la fonction d'init (qui est un peu bourrin de toute facon):
28 //if(multilang_root.find('.menu_lang').length > 0) return;
29
30 Premier bug : Dans une page d'edition article ou rubrique, si on modifie le doc + enregistrer le doc, PUIS enregistrer l'article (ou la rubrique) on passe 2 fois dans le submit et les champs ont la structure multi en double
31
32 Solution :
33 function forms_attach_submit() {
34 if($(this).parents('.ajax').size() && $(this).find('input[name=var_ajax]')){
35 $(this).bind('form-pre-serialize',forms_multi_submit);
36 }else{
37 var oldsubmit = this.onsubmit;
38 this.onsubmit = "";
39 if(oldsubmit && oldsubmit != "")
40 $(this).submit(function(){forms_multi_submit.apply(this);return oldsubmit.apply(this);})
41 else
42 if(oldsubmit != "")$(this).submit(forms_multi_submit);
43 }
44 }
45 Ca marche mais je ne pige pas bien... En fait quand on charge la page d'edition, le this.onsubmit est undefined et on rajoute une action sur le submit : forms_multi_submit . Lors du 2e passage (onAjaxLoad), le this.onsubmit vaut "" et on rajoutait une 2e fois le forms_multi_submit... Mais pourquoi une chaine vide ?
46
47 Avec ou sans mediatheque, donc maintenant ca fonctionne
48
49 2.---------------
50 Dans le pipeline, j'ai rajoute un 2e passage par l'init pour la suggestion de Rasta :
51 forms_selector = $(".multilang").parents("form")
52 multilang_init_lang({fields:".multilang",forms:forms_selector});
53 du coup, y'a pas de root de defini, donc le multilang agit sur tout le document
54
55 Effet, le le menu lang s'affiche bien, mais ne fonctionne plus
56
57 En fait faut pas passer 2 fois dans la fonction d'init. Ce n'est pas prevu pour. Donc faut tout integrer en un appel :
58
59 jQuery(document).ready(function(){
60 function multilang_init(){
61 root = "'.$root.'" ;
62 fields_selector = "textarea,input:text:not(input#id_parent,input.password,input#new_login,#titreparent,*.nomulti),.multilang" ;
63 forms_selector = ".multilang:parent,form[class!=\'form_upload\'][class!=\'form_upload_icon\']" ;
64 multilang_init_lang({fields:fields_selector,root:root,forms:forms_selector});
65 }
66 multilang_init();
67 if(typeof onAjaxLoad == "function") onAjaxLoad(multilang_init);
68 });
69
70 Bon donc ca marche toujours avec ou sans mediatheque... Reste plus qu'a tester avec un plugin qui veut du multilang
71