Subversion Repositories eFlore/Applications.eflore-consultation

Rev

Rev 1571 | Rev 1582 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1571 Rev 1581
Line 30... Line 30...
30
	this.id = id;
30
	this.id = id;
31
	this.titre;
31
	this.titre;
32
	this.htmlResume;
32
	this.htmlResume;
33
	this.statique = statique;
33
	this.statique = statique;
Line 34... Line -...
34
 
-
 
35
	// Les objets Portlet et Onglet que l'ont garde en mémoire pour pouvoir y accéder facilement 
-
 
36
	this.portlet = module;
-
 
37
	this.onglet;
-
 
38
 
-
 
39
	// creerPortlet 
-
 
40
	// Créer l'objet Portlet HTML à afficher et le stocker dans les variables de classe
-
 
41
	this.creerPortlet = function() {
-
 
42
		var objet = this;
-
 
43
 
-
 
44
		var titre = $(module).children('.titre');
-
 
45
		titre.className = 'titre ui-widget-header ui-corner-all';
-
 
46
		titre.id = 'titre-' + this.id;
-
 
47
		
-
 
48
		
-
 
49
		var contenu = $(module).children('.contenu');
-
 
50
		contenu.id = 'contenu-' + this.id;
-
 
51
		contenu.className ='contenu';
-
 
52
 
-
 
53
		var lienToggle = document.createElement('span');
-
 
54
		lienToggle.className = 'lienToggle ui-icon ui-icon-minusthick';
-
 
55
		$(titre).append(lienToggle);
-
 
56
		$(lienToggle).click(function() {
-
 
57
			objet.afficherCacherModule();
-
 
58
		});
-
 
59
 
-
 
60
		this.portlet = module;
-
 
61
		return module;	
-
 
Line 62... Line -...
62
	}
-
 
63
	
-
 
64
	this.ongletEstAffiche = function() {
-
 
65
		return $(this.onglet.selector).is(':visible');
-
 
66
	}
-
 
67
 
-
 
68
	// Crée l'objet Onglet HTML
-
 
69
	this.creerOnglet = function() {
-
 
70
		var objet = this;
-
 
71
		this.onglet = onglet;
-
 
72
	}
-
 
73
		
-
 
74
	// Initialisation de l'objet
-
 
75
	this.creerPortlet();
-
 
76
	this.creerOnglet();
-
 
77
	
-
 
78
	// Accesseurs de la classe
-
 
79
	this.getOnglet = function() {
-
 
80
		return this.onglet;	
-
 
81
	}
-
 
82
	
-
 
83
	this.getPortlet = function() {
-
 
84
		return this.portlet;
-
 
85
	}
-
 
86
	
-
 
87
	// fonctions d'affichage et cachage (je sais pas si on dit ça comme ça) des onglets
-
 
88
	this.afficherCacherModule = function() { 
-
 
89
		$(this.portlet).find(".lienToggle").toggleClass("ui-icon-plusthick");
-
 
90
		$(this.portlet).find(".lienToggle").toggleClass("ui-icon-minusthick");
-
 
91
		$(this.portlet).find(".titreOnglet").toggleClass("pasDeCurseur");
-
 
92
		$(this.portlet).find(".contenu").toggle();
-
 
Line 93... Line 34...
93
	}
34
 
94
}
35
	
95
 
36
 
96
function getUrlVars() {
37
function getUrlVars() {
Line 102... Line 43...
102
        vars[hash[0]] = hash[1];
43
        vars[hash[0]] = hash[1];
103
    }
44
    }
104
    return vars;
45
    return vars;
105
}
46
}
Line 106... Line -...
106
 
-
 
107
function afficherOngletsPourNiveau() {
-
 
108
	/* affiche les onglets par default selon niveau*/
-
 
109
	for (indice in tableauOnglets) {
-
 
110
		var ongletEnCours = tableauOnglets[indice];
-
 
111
		titre_onglet = ongletEnCours.titre;
-
 
112
		titre_onglet = $.trim(titre_onglet);
-
 
113
		if (!Array.indexOf) {
-
 
114
			  Array.prototype.indexOf = function (obj, start) {
-
 
115
			    for (var i = (start || 0); i < this.length; i++) {
-
 
116
			      if (this[i] == obj) {
-
 
117
			        return i;
-
 
118
			      }
-
 
119
			    }
-
 
120
			    return -1;
-
 
121
			  }
-
 
122
			}
-
 
123
		if (ongletsDefaut.indexOf(titre_onglet) == -1) {
-
 
124
			ongletEnCours.afficherCacherModule();	
-
 
125
			nbOngletsInvisibles++;
-
 
126
		}
-
 
127
	}
-
 
128
}
-
 
129
 
-
 
130
function obtenirOngletCookiePourPage() {
-
 
131
	var urlVars = getUrlVars();
-
 
132
	var id_cookie = 'onglet_eflore';
-
 
133
	if (urlVars['num_nom']) {
-
 
134
		id_cookie += '_'+urlVars['num_nom'];
-
 
135
	}	
-
 
136
	return $.cookie(id_cookie) ? $.cookie(id_cookie) : null;
-
 
137
}
-
 
138
 
-
 
139
function enregistrerOngletCookiePourPage(valeur) {
-
 
140
	var urlVars = getUrlVars();
-
 
141
	var id_cookie = 'onglet_eflore';
-
 
142
	if(urlVars['num_nom'] && urlVars['num_nom'] != undefined) {
-
 
143
		id_cookie += '_'+urlVars['num_nom'];
-
 
144
	}
-
 
145
	$.cookie(id_cookie, valeur);
-
 
146
}
-
 
147
 
-
 
148
function lierModulesEtOnglets() {
-
 
149
	var i = 1;
-
 
150
	
-
 
151
	//Parcourir la totalité des modules générés et les lier grâce à la classe Module
-
 
152
	$(".module").each(function () {
-
 
153
		i++;
-
 
154
		identifiantOnglet = "#zone_onglets>ul>li:nth-child(" + i +")";
-
 
155
		var module = new Module(i, this, $(identifiantOnglet));
-
 
156
		var titre = $(this).children('h3').text();
-
 
157
		module.titre = titre;
-
 
158
		
-
 
159
		tableauOnglets[identifiantOnglet] = module;
-
 
160
	});
-
 
Line 161... Line 47...
161
}
47
 
162
 
48
 
163
// remplace des liens directs vers les onglets par des liens permettant de ne charger
49
// remplace des liens directs vers les onglets par des liens permettant de ne charger
164
// que le contenu de l'onglet (pour le plugin tab)
50
// que le contenu de l'onglet (pour le plugin tab)
Line 170... Line 56...
170
		urlOnglet = urlBase.replace('action=fiche','action=onglet');
56
		urlOnglet = urlBase.replace('action=fiche','action=onglet');
171
		$(this).attr('href', urlOnglet);
57
		$(this).attr('href', urlOnglet);
172
	});
58
	});
173
}
59
}
Line 174... Line -...
174
 
-
 
175
ongletsInitialises = false;
-
 
176
numOngletEnCours = null;
-
 
177
nePasEmpilerUrl = false;
-
 
178
popStateOriginal = true;
-
 
179
function initialiserOnglets() {
-
 
180
	// replacement du chargement de toute la page par un lien vers uniquement le contenu de l'onglet
-
 
181
	// pour le module tab qui charge les url désignée dans les liens des tabs
-
 
182
	//remplacerUrlsOnglets();
-
 
183
	
-
 
184
	// analyse de l'onglet désigné comme selectionné par défaut
-
 
185
	// (on peut accéder directement à un onglet précis à travers un param url)
-
 
186
	var tabSelectionneDefaut = $('#onglets li.ui-state-active');
-
 
187
	var indexTabSelectionneDefaut = $("#onglets li").index($(tabSelectionneDefaut));
-
 
188
 
-
 
189
	$('#zone_onglets').tabs({
-
 
190
		create: function( event, ui ) {
-
 
191
			// par défaut, le contenu déjà chargé est dans une autre zone
-
 
192
			// on le déplace donc comme s'il avait été chargé par le plugin tab
-
 
193
			var contenuZoneFiche = $("#zone_contenu_fiche > div").detach();
-
 
194
			contenuZoneFiche.appendTo('#ui-tabs-'+(indexTabSelectionneDefaut+1));
-
 
195
			$("#zone_contenu_fiche").hide();
-
 
196
			$('#ui-tabs-'+(indexTabSelectionneDefaut+1)).show();
-
 
197
			ongletNomCode = $('#ui-tabs-'+(indexTabSelectionneDefaut+1)).children(".onglet_contenu").attr("id");
-
 
198
			$(".lien_retour_synthese").toggle((ongletNomCode != "synthese"));
-
 
199
		},
-
 
200
		active: indexTabSelectionneDefaut ,
-
 
201
		beforeLoad: function( event, ui ) {
-
 
202
			// il est inutile de recharger un onglet déjà chargé (les onglets déjà chargé sont l'onglet par défaut
-
 
203
			// et (lors du chargement de la fiche), l'onglet déjà chargé par php
-
 
204
			// +1 car les tabs sont zéros indexées
-
 
205
			var idPanelCharge = ui.tab.index()+1;
-
 
206
			var panelCharge = $('#ui-tabs-'+idPanelCharge);
-
 
207
			
-
 
Line 208... Line -...
208
			numOngletEnCours = idPanelCharge;
-
 
209
 
-
 
210
			if(!panelCharge.is(':empty') || indexTabSelectionneDefaut+1 == idPanelCharge) {
-
 
211
				// si le panneau est déjà chargé on peut mettre à jour l'url immédiatement
-
 
212
				var ongletNomCode = panelCharge.children(".onglet_contenu").attr("id");
-
 
213
				if(!nePasEmpilerUrl) {
-
 
214
					mettreAJourUrl(permalienNumNom+"-"+ongletNomCode, ongletNomCode);
-
 
215
					nePasEmpilerUrl = false;
-
 
216
				}
-
 
217
 
-
 
218
				$(".lien_retour_synthese").toggle((ongletNomCode != "synthese"));				
-
 
219
				panelCharge.show();
-
 
220
				return false;
-
 
221
			} else {
-
 
222
				// si l'onglet n'est pas chargé alors on affiche le message de chargement 
-
 
223
				// pendant que le plugin s'occupe du reste
-
 
224
				fancyboxinitialise = false;
-
 
225
				var panel = $('#ui-tabs-'+idPanelCharge);
-
 
226
				panel.append("<div class='tab-chargement'>Chargement des informations...</div>");
-
 
227
				return true;
-
 
228
			}
-
 
229
		},
-
 
230
		load: function(event, ui) {
-
 
231
			// sur les panneaux qui ne sont pas encore chargés, on doit attendre la fin
-
 
232
			// du chargement pour mettre à jour l'url (à cause de la récupération de l'id sur les enfants)
-
 
233
			var ongletNomCode = ui.panel.children(".onglet_contenu").attr("id");
-
 
234
			// stats
-
 
235
			if (prod) {
-
 
236
				var ga_json = '{"nn": "' + ga_current_nn + '", "nom_sci": "' + ga_current_ns + '"}';
-
 
237
				ga('eFloreTracker.send', 'event', 'fiche', 'consultation-' + ongletNomCode, ga_json, 1);
-
 
238
			}
-
 
239
 
-
 
240
			$(".lien_retour_synthese").toggle((ongletNomCode != "synthese"));
-
 
241
			mettreAJourUrl(permalienNumNom+"-"+ongletNomCode, ongletNomCode);
-
 
242
			$(document).trigger('dictionnaireRechercherDefinitions', '#'+ongletNomCode);
-
 
243
		}
-
 
244
	});
-
 
245
	
-
 
246
	$(window).bind('popstate', function(event) {
-
 
247
		if(!!event.originalEvent.state) {
-
 
248
			nePasEmpilerUrl = true;
-
 
249
			$("#onglets > li > a[rel='"+event.originalEvent.state+"']").click();
-
 
250
		} else {
-
 
251
			// chrome fait un popstate au chargement de la page, ce qui la fait recharger 
-
 
252
			// indéfiniment, ce comportement étant compréhensible, il vaut mieux s'en prévenir
-
 
253
			if(!popStateOriginal) {
-
 
254
				window.location = window.location.href;
-
 
255
			}
-
 
256
			popStateOriginal = false;
-
 
257
		}
-
 
Line 258... Line 60...
258
	});
60
 
259
}
61
 
260
 
62
 
261
//+----------------------------------------------------------------------------------------------------------+
63
//+----------------------------------------------------------------------------------------------------------+
Line 536... Line 338...
536
		});
338
		});
537
		return false;
339
		return false;
538
	});
340
	});
539
});
341
});
Line 540... Line -...
540
 
-
 
541
$(document).one('ongletSyntheseCharge', function() {
-
 
542
	lierModulesEtOnglets();
-
 
543
	
-
 
544
	/* mouvement des blocs */
-
 
545
	$(".colonne").sortable({
-
 
546
		connectWith: ".colonne",
-
 
547
		handle: $(".module").children('h3') // mouvement seulement sur les titres
-
 
548
	});
-
 
549
	
-
 
550
	$('.lien_ouverture_onglet_parent').live('click', function(event) {
-
 
551
		event.preventDefault();
-
 
552
		$(this).parents(".module").find("a.titreOnglet").click();
-
 
553
	});
-
 
554
	
-
 
555
	gererClicIllustrationsFiche();
-
 
556
	gererEvenementsPliage();
-
 
Line 557... Line 342...
557
});
342
 
558
 
343
 
559
// À la fin du chargement de l'onglet Illustrations
344
// À la fin du chargement de l'onglet Illustrations
560
$(document).one('ongletIllustrationsCharge', function() {
345
$(document).one('ongletIllustrationsCharge', function() {
Line 696... Line 481...
696
		amj_hms = date.split(' '),
481
		amj_hms = date.split(' '),
697
		amj = amj_hms[0].split('-');
482
		amj = amj_hms[0].split('-');
698
	return amj[2] + ' ' + mois[parseInt(amj[1]) - 1] + ' ' + amj[0];
483
	return amj[2] + ' ' + mois[parseInt(amj[1]) - 1] + ' ' + amj[0];
699
}
484
}
Line 700... Line -...
700
 
-
 
701
function redimensionnerOnglets() {
-
 
702
	
-
 
703
	var largeurTotale = $('#zone_onglets').width();
-
 
704
	var largeurOnglets = 0;
-
 
705
	var largeurDernierOnglet = 0;
-
 
706
	$('#onglets li').each(function() {
-
 
707
		largeurDernierOnglet = $(this).outerWidth();
-
 
708
		largeurOnglets += $(this).outerWidth();
-
 
709
	});
-
 
710
	
-
 
711
	var espaceRestant = largeurTotale - largeurOnglets;
-
 
712
	if(espaceRestant < largeurDernierOnglet) {
-
 
713
		var pxALiberer = (largeurDernierOnglet - espaceRestant)/ $('#onglets li').size();
-
 
714
		$('#onglets li').each(function() {
-
 
715
			$(this).width($(this).width() - (pxALiberer - 4));
-
 
716
			$(this).css("font-size", "0.9em");
-
 
717
		});
-
 
718
	} else {
-
 
719
		$('#onglets li').each(function() {
-
 
720
			$(this).css("width", "auto");
-
 
721
			$(this).css("font-size", "1em");
-
 
722
		});
-
 
723
	}
-
 
Line 724... Line 485...
724
}
485
 
725
 
486
 
726
// ouvre le popup de galerie lors d'un clic sur l'illustration dans la fiche synthèse
487
// ouvre le popup de galerie lors d'un clic sur l'illustration dans la fiche synthèse
727
function gererClicIllustrationsFiche() {
488
function gererClicIllustrationsFiche() {