| Current Path : /home/histoio/www/local/cache-js/ |
| Current File : /home/histoio/www/local/cache-js/jsdyn-multilang_js-cae4fb11.js.last |
/* #PRODUIRE{fond=multilang.js,lang=fr}
md5:9f10849e507afba74ad9f5774f7a6bc4 */
// Variables globales
var
multilang_avail_langs = "fr,en",
multilang_avail_langs = multilang_avail_langs.split(','),
multilang_dir_langs = {"fr":"ltr","en":"ltr"},
multilang_def_lang = "fr",
multilang_lang_courante = "fr",
multilang_dir_plugin = "plugins/auto/multilang/v1.5.3/";
// On trie les langues : langue de l'environnement en premier,
// puis langue principale du site, puis les autres en ordre alphabétique.
// Un utilisateur de langue anglaise souhaite logiquement traduire en anglais.
multilang_avail_langs = jQuery.grep(multilang_avail_langs, function(value) {
return (value != multilang_def_lang && value != multilang_lang_courante);
});
multilang_avail_langs.sort();
multilang_avail_langs.unshift(multilang_lang_courante);
if (multilang_lang_courante!=multilang_def_lang) {
multilang_avail_langs.unshift(multilang_def_lang);
}
// Appel de multilang_init_lang si
// - document.ready
// - onAjaxLoad (cas des docs et de la configuration du site)
jQuery(function ($) {
// Lance le script principal et passe le menu en sticky
function multilang_init() {
// Appel du script principal
multilang_init_lang({"root":"div#configurer-accueil,div.formulaire_configurer_identite,div.formulaire_editer_article,div.formulaire_editer_rubrique,div.formulaire_editer_message,div#portfolio_portfolio,div#portfolio_documents,div#liste_documents, div.formulaire_editer_document,div.formulaire_editer_formulaire,div.formulaire_editer_evenement","root_opt":"form:has(.multilang)","fields":"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, .rechercher_adresse input, #champ_geocoder, #champ_lat, #champ_lon, #champ_zoom, #places, *.nomulti),.multilang","fields_opt":".multilang","forms":"form:not([class~=\"form_upload\"]):not([class~=\"form_upload_icon\"]):not([class~=\"nomulti\"])"});
// Passe le menu en sticky
if ($(".menu_multilang").length > 0) {
$(".menu_multilang").each(function () {
var $menu_lang = $(this),
$form = $menu_lang.parents("form"),
hauteur_menu = $menu_lang.outerHeight();
$(window).scroll(function () {
var offset = $form.offset(),
limite_multilang = offset.top,
limite_bas = limite_multilang + $form.height() - $form.find(".boutons").height(),
pos_bas = $menu_lang.offset().top + hauteur_menu;
if (($(window).scrollTop() >= limite_multilang) && (pos_bas <= limite_bas) && ($(window).scrollTop() < limite_bas)) {
if (!$menu_lang.hasClass("menu_multilang_flottant")) {
$menu_lang.addClass("menu_multilang_flottant");
}
var menu_lang_width = $menu_lang.outerWidth();
$menu_lang.css({
"position": "fixed",
"top": 0,
"width": menu_lang_width + "px",
"z-index": "1001"
});
// Un padding sur la parent
$form.css({'padding-top': hauteur_menu + 'px'});
}
if (($(window).scrollTop() < limite_multilang) || (pos_bas > limite_bas)) {
$menu_lang.removeClass("menu_multilang_flottant").css({
"position": "static",
"width": "auto"
});
$form.css({'padding-top': ''});
}
});
});
}
}
multilang_init();
if (typeof onAjaxLoad == "function") {
onAjaxLoad(multilang_init);
}
});var multilang_lang = {
champs_readonly : 'Les champs multilingues sont en lecture seule, choisissez une langue pour les modifier',
lien_desactiver : 'Tout',
label_langues : 'Langues',
title_lien_multi_fr : 'Éditer les champs multilingues en « français »',
title_lien_multi_sans_fr : 'La version « français » est incomplète. Cliquez pour l’éditer.',
label_fr : 'français',
title_lien_multi_en : 'Éditer les champs multilingues en « English »',
title_lien_multi_sans_en : 'La version « English » est incomplète. Cliquez pour l’éditer.',
label_en : 'English',
numero : 'Numéro'
};/**
* multilang
*
* Copyright (c) 2006-2010 Renato Formato (rformato@gmail.com)
* Licensed under the GPL License:
* http://www.gnu.org/licenses/gpl.html
*
* Modif Yffic mars 2010
* - Correction bug : Fonctionnement incoherent si plusieurs menu dans la meme page (ex : portfolio dans page de
* presentation d'un article)
* - On ne rajoute pas le menu s'il existe deja (cas d'un retour Ajax)
* - On ne rajoute pas le menu dans forms d'upload (par ex vignette d'un doc)
*/
var multilang_containers={}, //menu containers
multilang_forms_fields={};
/*
(?:\[([a-z_]+)\]|^[\s\n]*)
[lang] or white space
((?:.|\n)*?)
all chars not greedy
(?=\[[a-z_]+\]|$)
[lang] or end string
*/
/**
* Initialisation de différentes variables :
*
*/
var multilang_match_multi = /(?:\[([a-z_]+)\]|^[\s\n]*)((?:.|\n|\s)*?)(?=\[[a-z_]+\]|$)/ig;
var multilang_jq_root, //root of the search (jQuery object)
multilang_root_opt,
multilang_fields_selector,
multilang_fields_selector_opt,
multilang_menu_selector,
multilang_containers,
multilang_forms_toadd,
multilang_forms, //forms to be processed (jQuery object)
multilang_menu_lang, //template of the menu (jQuery object)
multilang_forms_selector, //selector of the forms to be processed (string)
multilang_init = false;
/**
* options is a hash having the following values:
* - fields (mandatory): a jQuery selector to set the fields that have to be internationalized.
* - page (optional): a string to be searched in the current url. if found the plugin is applied.
* - root (optional): the root element of all processing. Default value is 'document'. To speed up search
* - forms (optional): a jQuery selector to set the forms that have to be internationalized. Default value is 'form'.
* - main_menu (optional): a jQuery selector to set the container for the main menu to control all the selected forms.
* - form_menu (optional): a jQuery selector to set the container for the form menus.
*/
function multilang_init_lang(options) {
var init_done = options.init_done || multilang_init;
//Detect if we're on the right page and if multilinguism is activated. If not return.
if((options.page && window.location.search.indexOf(options.page)==-1) || multilang_avail_langs.length<=1) return;
//set the root element of all processing
var root = options.root || document;
multilang_jq_root = $(root).add($(options.root_opt).parent());
multilang_root_opt = options.root_opt;
/**
* set the main menu element
* Plus utilisé pour l'instant
*/
multilang_containers = options.main_menu ? $(options.main_menu,multilang_jq_root) : $([]);
multilang_forms_toadd = $([]);
/**
* On crée le modèle du menu de langue
* C'est ce modèle qui est cloné au début de chaque formulaire
*/
multilang_menu_lang =
$("<div class='langues'></div>")
.append($('<span class="langues__label">').html(eval('multilang_lang.label_langues')+' '));
$.each(multilang_avail_langs,function() {
var title = 'multilang_lang.title_lien_multi_'+this,
label = 'multilang_lang.label_'+this;
multilang_menu_lang.append($("<a class='langues__item change_lang "+this+"' lang='"+this+"' title='"+eval(title)+"' role='button'></a>").html(eval(label)));
});
multilang_menu_lang.append($("<a class='langues__item recover_lang' href='#'></a>").html(multilang_lang.lien_desactiver));
//init fields
multilang_fields_selector = options.fields;
multilang_fields_selector_opt = options.fields_opt;
//store all the internationalized forms
multilang_forms_selector = options.forms || "form";
if(init_done){
multilang_forms_toadd = $(multilang_forms_selector,multilang_jq_root).not($(multilang_forms));
}
multilang_forms = $(multilang_forms_selector,multilang_jq_root);
if(!init_done)
multilang_forms_toadd = multilang_forms;
//create menu lang for the global form
if(multilang_containers.length)
multilang_make_menu_lang(multilang_containers);
multilang_menu_selector = options.form_menu;
multilang_init = true;
// Modif Yffic : On va pas plus loin s'il n'y a pas de form
if(multilang_forms_toadd.length) multilang_init_multi();
}
/**
* Initialisation des champs multi sur les formulaires
*
* @param options
* @return
*/
function multilang_init_multi(options) {
var target = options ? options.target : null;
var init_forms;
//Update the list of form if this is an update
if(target) {
//Verify the target is really a form to be internationalized (in case of an ajax request fired by onAjaxLoad)
if(target==document) return;
init_forms = $(target).find('form').in_set($(multilang_forms_selector,multilang_jq_root));
if(!init_forms.length) return;
multilang_forms.add(init_forms.each(multilang_attach_submit).get());
} else {
//attach multi processing to submit event
init_forms = multilang_forms_toadd;
multilang_forms_toadd.each(multilang_attach_submit);
}
multilang_forms_fields = {};
multilang_forms_fields["undefined"] = $(multilang_fields_selector,multilang_forms);
//init the value of the field to current lang
//add a container for the language menu inside the form
init_forms.each(function() {
/*
* Je ne sais pas à quoi cela sert particulièrement, désactivé pour l'instant
*/
//$(this).find('input[type=submit],button').click(function(){
//multilang_multi_submit.apply($(this).parents('form').get(0));
//$(this).parents('form').submit();
//return false;
//});
this.isfull = false;
this.form_lang = multilang_def_lang;
var container = multilang_menu_selector ? $(multilang_menu_selector,this) : $(this);
// Pas de rajout s'il y en deja un
if(!container.find('.menu_multilang').length)
container.prepend("<div class='menu_multilang'></div>");
});
/**
* Initialisation de chaque input ou textarea
* On vérifie si on est dans un formulaire optionnel (dans ce cas on ne prend que
* les éléments qui on la class optionnelle) sinon on prend tous les champs qui
* matchent
*/
$(multilang_fields_selector,init_forms).each(function(){
var me = $(this);
if(me.closest(multilang_root_opt).length){
if(me.is(multilang_fields_selector_opt))
multilang_init_field(this,this.form.form_lang);
}else{
multilang_init_field(this,this.form.form_lang);
}
});
//create menu for each form. The menu is just before the form
$("div.menu_multilang",init_forms).empty().each(function() {
//store all form containers to allow menu lang update on each container
//when it is triggered by global menu
multilang_containers.add(this);
multilang_make_menu_lang($(this),$(this).parents("form"));
});
}
/**
* Création du menu de langue
* Liste les langues disponibles et ajoute un lien pour désactiver multilang
*
* @param container
* @param target
* @return
*/
function multilang_make_menu_lang(container,target) {
target = target || multilang_forms;
$(multilang_menu_lang).clone().find("a").click(function() {
if($(this).is('.change_lang') && !$(this).is('.on')){
$(this).parents('form > .menu_multilang').find('a.on').removeClass('on');
$(this).parents('form > .menu_multilang').find('.multilang_message').detach();
$(this).parents('form').find('.editer_titre_numero').show();
$(this).addClass('on');
multilang_change_lang(this,container,target);
}else if(!$(this).is('.on') && $(this).is('.recover_lang')){
$(this).parents('form > .menu_multilang').find('a.on').removeClass('on');
$(this).parents('form > .menu_multilang').append('<div class="multilang_message"><p>'+multilang_lang.champs_readonly+'<\/p><\/div>');
$(this).parents('form').find('.editer_titre_numero').hide();
$(this).addClass('on');
multilang_multi_recover(this,container,target,'submit');
}
return false;
}).end().appendTo(container);
$(target).find('.menu_multilang .langues a').eq(0).addClass('on');
var target_id = multilang_init_target_id(target);
multilang_forms_fields[target_id].each(function(){
multilang_save_lang(this,this.form.form_lang);
});
// Maj du menu de langues
multilang_mark_empty_langs(container,target);
}
/**
* Initialise target_id
*
* @param target Le formulaire
* @return
*/
function multilang_init_target_id(target){
var target_id = target != multilang_forms ? jQuery.data(target[0]) : "undefined";
multilang_forms_fields[target_id] = $(multilang_fields_selector,target);
return(target_id);
}
/**
* Affiche le contenu complet du champ
* Utilisé lors de la désactivation de multilang et de la validation des formulaires
*
* @param el Le lien de désactivation
* @param container Le container du formulaire
* @param target Le formulaire
* @return
*/
function multilang_multi_recover(el,container,target,event){
if(target[0].isfull){
return true;
}
if(event == 'submit'){
lang = 'full';
var target_id = multilang_init_target_id(target);
target[0].isfull = true;
multilang_forms_fields[target_id].each(function(){
if(!this.totreat) return ;
//save data before submit
multilang_save_lang(this,this.form.form_lang);
//build the string value
multilang_field_set_background(this,lang);
if(container && target){
multilang_mark_empty_langs(container,target);
}
var def_value = this.field_lang[multilang_def_lang];
if(!this.multi)
this.value = (def_value==undefined?"":def_value);
else {
var value="",count=0;
$.each(this.field_lang,function(name){
if((name != 'full') && (this.length > 0)){
//save default lang value and other lang values if different from the default one
if(name == multilang_def_lang){
value = "["+name+"]"+this+value;
count++;
}else if(this!=def_value) {
value += "["+name+"]"+this;
count++;
}
}
});
this.value = (count > 1 ? "<multi>"+value+"</multi>":value.replace(/^\[[a-z_]+\]/,''));
}
// Add the title number to the final value
if(multilang_is_title(this) && ($(this).parents('form').find('#'+this.id+'_numero').val() != '')) {
this.value = $(this).parents('form').find('#'+this.id+'_numero').val().replace(/\.|\s+/,'') + ". " + this.value;
}
});
return true;
}
}
/**
* Défini si un id de champ correspond a un champ "numerotable"
*
* @param id chaine correspondant a l'id du champ
*/
function multilang_is_title(el) {
return (el.id=='titre' || el.id=='champ_titre' || (el.id=='nom_site' && ($(el).parents('#configurer-accueil,.formulaire_configurer_identite,.formulaire_editer_auteur').length < 1)) || el.id.match(/^titre_document[0-9]+/)!=null || el.name.match(/^content_[a-z0-9_]+_titre/)!=null || el.name.match(/^content_[a-z0-9_-]+nom_/)!=null)
}
/**
* Initialisation du script sur un champ
*
* Récupère les données suivantes
* - Le contenu de l'élément du champ
* - Le booléen (true/false) multi (est ce un champs déjà multi)
* - Les différentes chaines de langue dans un objet :
* {fr="texte fr",en="texte en",full="<multi>[fr]texte fr[en]texte en</multi>"}
* Si le champ est déjà initialisé, fait un simple return
*
* @param el Le champ a initialiser
* @param lang La langue
*
*/
function multilang_init_field(el,lang,force) {
if(el.field_lang && !force) return;
var langs;
// On enlève les espaces, retours à la ligne et tabulations de début et de fin de chaine
el.value.replace(/(?:^\s+|\s+$)/g, "");
// Modif Yffic : ne pas considerer comme multi les champs qui contiennent du texte
// en dehors des multi sauf un numero (\d+\.\s+)
var m = el.value.match(/(\d+\.\s+)?<multi>((?:.|\n|\s)*?)<\/multi>(.|\n*)/);
el.field_lang = {};
el.field_pre_lang = ""; //this is the 01. part of the string, the will be put outside the <multi>
el.titre_el = $("#titre_"+el.id);
// Init the elements to treat
if(m!=null) {
if( m.index || (m[3]!=undefined && m[3]!="")){
$(el).addClass('multi_lang_broken');
el.totreat=false;
}
else
el.totreat=true;
if(el.totreat) {
el.field_pre_lang = m[1] || "";
// Suppress point and spaces
el.field_pre_lang = el.field_pre_lang.replace(/\.|\s+/,'') ;
el.multi = true;
multilang_match_multi.lastIndex=0;
el.field_lang['full'] = el.value;
while((langs=multilang_match_multi.exec(m[2]))!=null && langs[0] != "") {
var text = langs[2].match(/^(\d+\.\s+)((?:.|\n|\s)*)/), value;
// Suppression du numero uniquement pour les titres
if(multilang_is_title(el) && text!=null) {
value = text[2];
// Suppress point and spaces
el.field_pre_lang = text[1].replace(/\.|\s+/,'') || "";
} else {
value = langs[2];
}
el.field_lang[langs[1]||multilang_def_lang] = value;
}
}
} else {
el.multi = false;
el.totreat=true;
// Suppression du numero uniquement pour les titres
if(multilang_is_title(el)) {
var n = el.value.match(/(\d+\.\s+)?(.*)/);
el.field_pre_lang = n[1] || "";
el.field_pre_lang = el.field_pre_lang.replace(/\.|\s+/,'') ;
el.field_lang[multilang_def_lang] = n[2];
} else
el.field_lang[multilang_def_lang] = el.value;
}
// Put the current lang string only in the field
multilang_set_lang(el,lang);
/**
* Si le champ est un titre, on ajoute un champ facultatif "numéro" au formulaire permettant
* de traiter le cas où l'on utilise les numéros pour trier les objets
* Ajout d'Yffic le 30/03/2010
*/
if(!force && multilang_is_title(el)){
numid=el.id+'_numero';
/**
* Cas des crayons qui n'ont pas toujours de formalisme en ul > li
*/
if(el.name.match(/^content_[a-z0-9_]+_titre/)){
if($(el).parent().is('li'))
$(el).parent()
.before('<li class="editer editer_'+numid+'"><label for="titre_numero">'+multilang_lang.numero+'</label><input id="'+numid+'" name="titre_numero" type="text" value="'+el.field_pre_lang+'" size="4" class="text nomulti" /></li>');
else
$(el)
.before('<div class="editer editer_'+numid+'"><label for="titre_numero">'+multilang_lang.numero+'</label><input id="'+numid+'" name="titre_numero" type="text" value="'+el.field_pre_lang+'" size="4" class="text nomulti" /><br /><br /></div>');
}else{
/* Le formalisme des formulaires peut etre en li ou en div (SPIP 3.1) mais on a toujours un conteneur .editer */
var tag = 'div';
if($(el).parent().is('li')) {
tag = 'li';
}
$(el).parent()
.before('<'+tag+' class="editer editer_'+numid+'"><label for="titre_numero">'+multilang_lang.numero+'</label><input id="'+numid+'" name="titre_numero" type="text" value="'+el.field_pre_lang+'" size="4" class="text nomulti" /></'+tag+'>');
}
$('#'+numid).totreat = false;
}
}
/**
* Action au click sur une langue du menu de langue
*
* @param el Le lien cliqué sur le menu
* @param container Le conteneur du formulaire
* @param target Le formulaire lui même
*
*/
function multilang_change_lang(el,container,target) {
var added_lang="";
var target_id = multilang_init_target_id(target);
var lang = $(el).attr('lang');
if(target[0].isfull){
// Maj du menu de langues avant multilang_init_field
multilang_forms_fields[target_id].each(function(){
var me = $(this);
if(me.parents(multilang_root_opt).length>0){
if(me.is(multilang_fields_selector_opt))
multilang_init_field(this,lang,true);
}else
multilang_init_field(this,lang,true);
});
target[0].isfull = false;
}else{
//store the fields inputs for later use (usefull for select)
//save the current values
multilang_forms_fields[target_id].each(function(){
multilang_save_lang(this,this.form.form_lang);
});
// Maj du menu de langues apres multilang_save_lang
}
//change current lang
target.each(function(){this.form_lang = lang});
//reinit fields to current lang
multilang_forms_fields[target_id].each(function(){
multilang_set_lang(this,lang);
});
multilang_mark_empty_langs(container,target);
}
/**
* Marquer dans le menu des langues, celles pour lesquelles
* au moins un champ multi du formulaire n'est pas renseigne
*
* @param container Le conteneur du formulaire
*
*/
function multilang_mark_empty_langs(container,target) {
var langs_empty = [];
var target_id = multilang_init_target_id(target);
multilang_forms_fields[target_id].each(function(){
var field_langs = [];
// Mise sous forme de tableau
if(typeof(this.field_lang) != 'undefined'){
$.each(this.field_lang,function(name,value){
if(value)
field_langs.push(name);
});
}
// Trouver les elements non communs entre le tableau des langues availables et pour chaque champ,
// celui des langues renseignees, si ce champ est multi
// Si la langue d'origine n'est pas remplie (champ texte par exemple, on ne considère donc pas empty)
if(this.multi) {
// Comparaison des tableaux
$.each(multilang_avail_langs,function(i,name){
if ((jQuery.inArray(name, field_langs) == -1) && (jQuery.inArray(name, langs_empty) == -1) && (jQuery.inArray(multilang_def_lang, field_langs) != -1))
langs_empty.push(name);
});
}else{
// Comparaison des tableaux
$.each(multilang_avail_langs,function(i,name){
if ((jQuery.inArray(name, field_langs) == -1) && (jQuery.inArray(name, langs_empty) == -1) && (jQuery.inArray(multilang_def_lang, field_langs) != -1))
langs_empty.push(name);
});
}
});
// On indique dans le menu de langue, celles qui ont au moins un champ non renseigne
if(container!='') {
$.each(multilang_avail_langs,function(i,name){
if((jQuery.inArray(name, langs_empty) == -1)){
var title = 'multilang_lang.title_lien_multi_'+name;
container.find('a[class~='+name+']').removeClass('empty').attr('title',eval(title));
}else{
var title = 'multilang_lang.title_lien_multi_sans_'+name;
container.find('a[class~='+name+']').addClass('empty').attr('title',eval(title));
}
});
}
}
/**
* Action au changement de la langue
* Lorsque l'on clique sur le menu de langue
* On affiche pour le champ "el" son contenu dans la langue "lang"
*
* @param el Un champ du formulaire (input ou textarea)
* @param lang La langue correspondante souhaitée
* @return
*/
function multilang_set_lang(el,lang) {
if(!el.totreat) return;
//if current lang is not setted use default lang value
if(el.field_lang[lang]==undefined) {
el.field_lang[lang] = el.field_lang[multilang_def_lang];
}
el.value = (el.field_lang[lang] == undefined ? "" : el.field_lang[lang]);
el.titre_el.html(el.value);
multilang_field_set_background(el,lang);
}
/**
* Change la class multi_lang_* d'un champ pour indiquer la présence ou non de multis
* - multi_lang_(lang) si une langue particulière est disponible
* - multi_lang_no_multi si pas de multis pour le champ
*
* @param el
* @param lang
* @return
*/
function multilang_field_set_background(el,lang) {
if(lang != 'full'){
if(el.totreat){
$(el).removeAttr('readonly').removeClass('multilang_readonly').removeClass('multilang_ltr').removeClass('multilang_rtl');
if(typeof($(el).attr('class')) != 'undefined'){
$($(el).attr('class').split(' ')).each(function(){
var m = this.match(/^multi_lang_*/);
if(m!=null) {
$(el).removeClass(m.input).removeClass('multilang_ltr').removeClass('multilang_rtl').addClass('multi_lang_'+lang).addClass('multi_lang_'+multilang_dir_langs[lang]).attr('dir',multilang_dir_langs[lang]);
}
});
}
$(el).addClass('multi_lang_'+(el.multi?lang:'no_multi')).addClass('multi_lang_'+multilang_dir_langs[lang]).attr('dir',multilang_dir_langs[lang]);
}
else{
if(typeof($(el).attr('class')) != 'undefined'){
$($(el).attr('class').split(' ')).each(function(){
var m = this.match(/^multi_lang_*/);
if(m!=null)
$(el).removeClass(m.input).removeClass('multilang_ltr').removeClass('multilang_rtl');
});
}
align = multilang_dir_langs[lang] ? (multilang_dir_langs[lang] == 'ltr' ? 'right' : 'left') : 'right';
$(el).css({"background":"url("+multilang_dir_plugin+"/images/multi_forbidden.png) no-repeat "+align+" top"});
}
}else{
$(el).attr('readonly','readonly').addClass('multilang_readonly').attr('dir','');
if(typeof($(el).attr('class')) != 'undefined'){
$($(el).attr('class').split(' ')).each(function(){
var m = this.match(/^multi_lang_*/);
if(m!=null)
$(el).removeClass(m.input).removeClass('multilang_ltr').removeClass('multilang_rtl');
});
}
}
}
/**
* Garde en mémoire dans l'array de langues du champs la valeur de la langue
* sélectionnée
*
* @param el Le champ du formulaire concerné
* @param lang La langue actuelle
* @return
*/
function multilang_save_lang(el,lang) {
if(!el.totreat) return ;
// Suppression du numero uniquement pour les titres
if(multilang_is_title(el)) {
var m = el.value.match(/^(\d+\.\s+)((?:.|\n|\s)*)/);
if(m!=null) {
// Suppress point and spaces
el.field_pre_lang = m[1].replace(/\.|\s+/,'');
el.value = m[2];
}
}
//if the lang value is equal to the def lang do nothing
//else save value but if the field is not empty, delete lang value
if(el.field_lang[multilang_def_lang]!= el.value) {
if(!el.value) {
delete el.field_lang[lang];
return;
}
el.multi = true;
el.field_lang[lang] = el.value;
}else{
el.field_lang[lang] = el.field_lang[multilang_def_lang];
$.each(el.field_lang,function(index, value){
if((index != multilang_def_lang) && (value == el.field_lang[multilang_def_lang])){
delete el.field_lang[index];
}
});
}
}
//This func receives the form that is going to be submitted
function multilang_multi_submit(params) {
if(multilang_avail_langs.length<=1) return;
var form = $(this);
//remove the current form from the list of forms
multilang_forms.not(this);
//remove the current menu lang container from the list
multilang_containers.not("div.menu_multilang",$(this));
//build the input values
multilang_multi_recover('','',form,'submit');
//save back the params
if(params) $.extend(params,$(form).formToArray(false));
}
/**
* On attache nos évènements pour la validation du formulaire
* - sur le submit pour tous les formulaires
* - sur l'évènement 'form-pre-serialize' d'ajaxForms au cas où nous sommes dans
* un formulaire ajax
*
* @return
*/
function multilang_attach_submit() {
if($(this).parents('.ajax').length && $(this).find('input[name=var_ajax]')){
$(this).on('form-pre-serialize', multilang_multi_submit);
}else if($(this).is('.formulaire_crayon')){
cQuery(this).on('form-pre-serialize',function(){multilang_multi_submit.apply(this);});
}else{
var oldsubmit = this.onsubmit;
this.onsubmit = "";
if(oldsubmit && oldsubmit != ""){
$(this).submit(function(){multilang_multi_submit.apply(this);return oldsubmit.apply(this);});
}
else if(oldsubmit != "")
$(this).submit(multilang_multi_submit);
}
}
(function($) {
$.extend($.fn, {
in_set: function(set) {
var elements = this.get();
var result = $.grep(set,function(i){
var found = false;
$.each(elements,function(){
if(this==i) found=true;
})
return found;
});
return jQuery(result);
}
});
})(jQuery);