[PLUGINS] +multilangue
[ptitvelo/web/www.git] / www / plugins / multilang / alire.txt
diff --git a/www/plugins/multilang/alire.txt b/www/plugins/multilang/alire.txt
new file mode 100644 (file)
index 0000000..05e8bb7
--- /dev/null
@@ -0,0 +1,71 @@
+\r
+Tous les champs input:text et textarea sauf ceux des forms .form_upload et .form_upload_icon sont traites dans :\r
+- articles\r
+- rubriques\r
+- configuration du site\r
+- auteurs (interessant uniquement pour le champs BIO)\r
+- documents dans les colonnes de gauche des pages d'edition d'articles et de rubriques\r
+- documents dans les parties basses des pages de presentation des articles et rubriques\r
+- groupe de mots cles\r
+- mots cles\r
+- sites\r
+- Breves\r
+\r
+\r
+A faire :\r
+- F&T : pb de doublon avec forms_lang.js\r
+- Integration avec Porte-Plume : quand on change de langue, la previsu "Voir" ne bascule pas\r
+\r
+- 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"\r
+\r
+Trucs a regler :\r
+1.-------------\r
+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 :\r
+fct forms_init_multi :\r
+               if(!container.find('.menu_lang').size())\r
+                       container.prepend("<div class='menu_lang'>");\r
+et supprime le test de la fonction d'init (qui est un peu bourrin de toute facon):\r
+       //if(multilang_root.find('.menu_lang').length > 0) return;\r
+\r
+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\r
+\r
+Solution : \r
+function forms_attach_submit() {\r
+       if($(this).parents('.ajax').size() && $(this).find('input[name=var_ajax]')){\r
+               $(this).bind('form-pre-serialize',forms_multi_submit);\r
+       }else{\r
+               var oldsubmit = this.onsubmit;\r
+               this.onsubmit = "";\r
+               if(oldsubmit && oldsubmit != "")\r
+                       $(this).submit(function(){forms_multi_submit.apply(this);return oldsubmit.apply(this);})\r
+               else\r
+                       if(oldsubmit != "")$(this).submit(forms_multi_submit);\r
+       }\r
+}\r
+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 ?\r
+\r
+Avec ou sans mediatheque, donc maintenant ca fonctionne\r
+\r
+2.---------------\r
+Dans le pipeline, j'ai rajoute un 2e passage par l'init pour la suggestion de Rasta :\r
+forms_selector = $(".multilang").parents("form")\r
+multilang_init_lang({fields:".multilang",forms:forms_selector});\r
+du coup, y'a pas de root de defini, donc le multilang agit sur tout le document\r
+\r
+Effet, le le menu lang s'affiche bien, mais ne fonctionne plus\r
+\r
+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 :\r
+\r
+       jQuery(document).ready(function(){\r
+               function multilang_init(){\r
+                       root = "'.$root.'" ;\r
+                       fields_selector = "textarea,input:text:not(input#id_parent,input.password,input#new_login,#titreparent,*.nomulti),.multilang" ;\r
+                       forms_selector = ".multilang:parent,form[class!=\'form_upload\'][class!=\'form_upload_icon\']" ;\r
+                       multilang_init_lang({fields:fields_selector,root:root,forms:forms_selector});\r
+               }\r
+               multilang_init();\r
+               if(typeof onAjaxLoad == "function") onAjaxLoad(multilang_init);\r
+       });\r
+\r
+Bon donc ca marche toujours avec ou sans mediatheque... Reste plus qu'a tester avec un plugin qui veut du multilang\r
+       \r