﻿<?php

if (!defined("_ECRIRE_INC_VERSION")) return;

/**
 * Insertion dans le pipeline insert_head_css
 * si on a configuré multilang pour s'insérer dans l'espace public
 *
 * @param $flux
 */
function multilang_insert_head_css($flux){

	$config = lire_config('multilang',array());
	if($config['multilang_public'] == 'on'){

		static $done = false;

		if (!$done) {

			$done = true;
			$flux .= '<link rel="stylesheet" href="'.url_absolue(generer_url_public('multilang.css')).'" type="text/css" media="all" />';
		}
	}
	return $flux;
}

/**
 * Insertion dans le pipeline insert_head_prive
 * Ajoute css et javascript dans le <head> privé
 *
 * @param string $flux Le contenu du head privé
 */
function multilang_insert_head_prive($flux){

	$config = lire_config('multilang',array());

	$flux .= multilang_inserer_head($config);

	return $flux;
}

/**
 * Insertion dans le pipeline insert_head
 * si on a configuré multilang pour s'insérer dans l'espace public
 *
 * @param $flux
 */
function multilang_insert_head($flux){

	$config = lire_config('multilang',array());

	if($config['multilang_public'] == 'on'){
		$flux .= multilang_insert_head_css(''); // au cas ou il n'est pas implemente
		$flux .= multilang_inserer_head($config);
	}
	return $flux;
}

/**
 * La fonction de modification du $flux pour l'insertion dans le head qu'il
 * soit privé ou public
 *
 * @param string $flux Le head de la page où l'on se trouve
 * @param array $config La configuration du plugin
 */
function multilang_inserer_head($config=array()){
	if(count(explode(',',$GLOBALS["meta"]["langues_multilingue"])) > 1){

		$root = '' ;

		if($config['siteconfig']){
			$root .= 'div#configurer-accueil,div.formulaire_configurer_identite' ; // Config Site
		}
		if($config['article']) { // Articles
			$root .= ',div.formulaire_editer_article';
		}
		if($config['breve']) { // Breves
			$root .= ',div.formulaire_editer_breve';
		}
		if($config['rubrique']) { // Rubriques
			$root .= ',div.formulaire_editer_rubrique';
		}
		if($config['auteur']) { // Auteurs
			$root .= ',div.formulaire_editer_auteur';
		}
		if($config['document']) {  // Docs dans page de presentation rubrique ou article,
			$root .= ',div#portfolio_portfolio,div#portfolio_documents' ;
		}
		if($config['site']) { // Sites
			$root .= ',div.formulaire_editer_site';
		}
		if($config['evenement']) { // Evenements
			$root .= ',div.formulaire_editer_evenement';
		}
		if($config['motcle']) { // Mots
			$root .= ',div.formulaire_editer_mot,div.formulaire_editer_groupe_mot';
		}
		if($config['gis']) { // GIS
			$root .= ',div.formulaire_editer_gis';
		}

		// Docs traites a part dans pages d'edition d'articles et de rubriques
		if($config['document']){
			$root .= ',div#liste_documents,div.formulaire_editer_document' ; // avec ou sans Mediatheque
		}
		// Appel de multilang_init_lang si
		// - document.ready
		// - onAjaxLoad (cas des docs et de la configuration du site)

		$data = '
<script type="text/javascript" src="'.generer_url_public("multilang_lang.js","lang=".$GLOBALS["spip_lang"]).'"></script>
<script type="text/javascript" src="'.find_in_path("javascript/multilang.js").'"></script>
<script type="text/javascript">/* <![CDATA[ */
	var multilang_avail_langs = "'.$GLOBALS["meta"]["langues_multilingue"].'".split(\',\'),
	multilang_def_lang = "'.$GLOBALS["meta"]["langue_site"].'",
	multilang_lang_courante = "'.$GLOBALS["spip_lang"].'",
	multilang_dir_plugin = "'._DIR_PLUGIN_MULTILANG.'";

	// On trie les langues. Langue de l environnement en premier,
	// puis langue principale du site puis les autres en ordre alphabetique
	// 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);

	jQuery(document).ready(function(){
		function multilang_init(){
			var root = "'.$root.'";
			var fields_selector = "textarea:not(textarea#adresses_secondaires),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,*.nomulti),.multilang";
			// on exclue aussi les form d upload (Pour les vignettes de docs, logos...)
			var forms_selector = "form[class!=\'form_upload\'][class!=\'form_upload_icon\']";
			// Les div qui ont un formulaire de classe multilang (pour accélérer la recherche dans le DOM,
			// on passe le form et le parent sera trouvé dans lors de l\'init)
			var root_opt = "form:has(.multilang)";
			var fields_selector_opt = ".multilang";
			multilang_init_lang({fields:fields_selector,fields_opt:fields_selector_opt,root:root,root_opt:root_opt,forms:forms_selector});
			
			if($(".menu_multilang").length > 0){ 
				var limite_multilang = $(".menu_multilang").offset().top ;
				$(window).scroll(function() {
					if(parseFloat($(this).scrollTop()) > parseFloat(limite_multilang)){
						var menu_lang_width = $(".menu_multilang").width();
						$(".menu_multilang").addClass("menu_lang_flottant").css({"position": "fixed", "top": 0, "width": menu_lang_width+"px","z-index":"999"});
					}
					else if(parseFloat($(this).scrollTop()) <= parseFloat(limite_multilang)){
						$(".menu_multilang").removeClass("menu_lang_flottant").css({"position": "static", "width": "auto"});
					}	
				});
			}
		}
		multilang_init();
		if(typeof onAjaxLoad == "function") onAjaxLoad(multilang_init);
	});
/* ]]> */</script>
';
	}
	return $data;
}

function multilang_affichage_final($flux){
	if($_REQUEST['page'] == 'crayons.js'){
		$root = '' ;
		$config = lire_config('multilang',array());
		if(($config['multilang_public'] == 'on') && ($config['multilang_crayons'] == 'on')){
			if($config['siteconfig']){
				$root .= ',input[type=hidden][name*=name_][value|=meta-valeur]';
			}
			if($config['article']) { // Articles
				$root .= ',input[type=hidden][name*=name_][value|=article]:not(input[value|=article-logo])';
			}
			if($config['breve']) { // Breves
				$root .= ',input[type=hidden][name*=name_][value|=breve]:not(input[value|=breve-logo])';
			}
			if($config['rubrique']) { // Rubriques
				$root .= ',input[type=hidden][name*=name_][value|=rubrique]:not(input[value|=rubrique-logo])';
			}
			if($config['auteur']) { // Auteurs
				$root .= ',input[type=hidden][name*=name_][value|=auteur]:not(input[value|=auteur-logo])';
			}
			if($config['document']) {  // Docs dans page de presentation rubrique ou article,
				$root .= ',input[type=hidden][name*=name_][value|=document]:not(input[value|=document-vignette])' ;
			}
			if($config['site']) { // Sites
				$root .= ',input[type=hidden][name*=name_][value|=site]';
			}
			if($config['evenement']) { // Evenements
				$root .= ',input[type=hidden][name*=name_][value|=evenement]';
			}
			if($config['motcle']) { // Mots
				$root .= ',input[type=hidden][name*=name_][value|=mot]:not(input[value|=mot-logo])';
			}
			if($config['gis']) { // GIS
				$root .= ',input[type=hidden][name*=name_][value|=gis]:not(input[value|=gis-logo])';
			}
			$flux .= '
		var crayons_multilang_init = function(){
			var crayons_root = ".formulaire_spip:has('.$root.')";
			var fields_selector = "textarea,input:text:not(input.date,input.heure,*.nomulti)";
			var forms_selector = "form[class!=\'form_upload\'][class!=\'form_upload_icon\']";
			var root_opt = "form:has(.multilang)";
			var fields_selector_opt = ".multilang";
			multilang_init_lang({fields:fields_selector,fields_opt:fields_selector_opt,root:crayons_root,root_opt:root_opt,forms:forms_selector,init_done:false});
		}
		jQuery(document).ready(function(){
			crayons_multilang_init();
			if(typeof onAjaxLoad == "function") onAjaxLoad(crayons_multilang_init);
		});';
		$flux = str_replace('jQuery', 'cQuery',$flux);
		}
	}
	return $flux;
}