Subversion Repositories eFlore/Applications.eflore-consultation

Rev

Rev 214 | Rev 221 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
201 gduche 1
<style>
2
	#zone_contenu_fiche {
203 gduche 3
		border:solid 1px #DDD;
4
		border-width:0px 1px 1px 1px;
201 gduche 5
		width:100%;
6
		min-height:400px;
203 gduche 7
		clear:left;
8
 
201 gduche 9
	}
10
 
214 aurelien 11
	.module {margin: 0 1em 0.5em 0; width: 99%;}
201 gduche 12
	.module .titre{ margin: 0.3em; padding-bottom: 4px; padding-left: 0.2em; cursor:pointer;}
13
	.module .titre .ui-icon { float: right; }
14
	.module .contenu { padding: 0.4em; }
15
 
214 aurelien 16
	.colonne {float:left; padding-bottom:100px; width:32%; margin: 0 4px;}
201 gduche 17
 
18
	.ui-sortable-placeholder { border: 1px dotted black; visibility: visible !important; height: 50px !important; }
19
	.ui-sortable-placeholder * { visibility: hidden; }
20
 
21
	#zone_onglets ul li {list-style:none}
22
	.lienToggle {cursor:pointer}
23
 
24
 
25
	#dialog label, #dialog input { display:block; }
26
	#dialog label { margin-top: 0.5em; }
27
	#dialog input, #dialog textarea { width: 95%; }
211 aurelien 28
	#zone_onglets { margin-top: 1em; padding-right: 5px; border-width: 1px 1px 0 1px; border-radius:0; width:99%; font-size:12px}
203 gduche 29
	#zone_onglets li {float:left}
201 gduche 30
	#zone_onglets li .ui-icon-close { float: left; margin: 0.4em 0.2em 0 0; cursor: pointer; }
214 aurelien 31
	#zone_onglets li a.lien-onglet {overflow: hidden; text-decoration: none; border-bottom: none;}
213 aurelien 32
	#zone_onglets #ongletEtPlus { cursor: pointer; float:right; z-index:2001;}
33
	#zone_onglets #ongletEtPlus a { border-bottom: none;}
211 aurelien 34
 
35
	.elementMenuModules {
36
		display:block;
213 aurelien 37
		border: 1px solid white;
211 aurelien 38
		width: 150px;
39
		padding: 10px 10px 10px 25px;
40
		margin:0px;
41
		cursor: pointer;
42
	}
43
 
44
	.elementMenuModules:hover {
213 aurelien 45
		background-color: #FEBF01;
211 aurelien 46
	}
212 aurelien 47
 
48
	.elementMenuModulesSelectionne {
49
		background-color: #F6AF39;
50
	}
51
 
213 aurelien 52
	.menuModules {
53
		left: 495px;
54
		width: 187px;
55
		position: absolute;
56
		border: 1px solid #DCD1CC;
57
		margin: 0px;
58
		padding: 0px;
59
		top: 37px;
60
		z-index:2000;
61
		background-color: white;
62
	}
201 gduche 63
</style>
64
 
219 delphine 65
	<h1>Fiche</h1>
66
	<div id="zone_onglets" class="ui-tabs ui-widget ui-widget-content ui-corner-all">
67
		<ul class="ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all">
68
			<li class="ui-state-default ui-corner-top ui-tabs-selected ui-state-active"><a class="lien-onglet lien-statique" href="#fiche">Accueil</a></li>
69
			<li class="ui-state-default ui-corner-top"><a class="lien-onglet" href="#fiche">Illustrations</a></li>
70
			<li class="ui-state-default ui-corner-top"><a class="lien-onglet" href="#fiche">Description</a></li>
71
			<li class="ui-state-default ui-corner-top"><a class="lien-onglet" href="#fiche">Classification</a></li>
72
			<li class="ui-state-default ui-corner-top"><a class="lien-onglet" href="#fiche">Bibliographie</a></li>
73
			<li class="ui-state-default ui-corner-top"><a class="lien-onglet" href="#fiche">Répartition</a></li>
74
			<li class="ui-state-default ui-corner-top"><a class="lien-onglet" href="#fiche">Ethnobotanique</a></li>
75
			<li class="ui-state-default ui-corner-top"><a class="lien-onglet" href="#fiche">Statut de protection</a></li>
76
			<li class="ui-state-default ui-corner-top"><a class="lien-onglet" href="#fiche">Nomenclature</a></li>
77
			<li class="ui-state-default ui-corner-top"><a class="lien-onglet" href="#fiche">Phytosociologie</a></li>
78
			<li id="ongletEtPlus" class="ui-state-default ui-corner-top"><a class="lien-statique" href="#fiche">+</a></li>
79
		</ul>
80
		<span id="conteneurMenuOnglets"></span>
214 aurelien 81
	</div>
219 delphine 82
 
83
	<div id="zone_contenu_fiche">
84
		<div class="colonne">
85
			<div id="illustrations" class="module ui-widget ui-widget-content ui-helper-clearfix ui-corner-all">
86
				<h3 class="titre ui-widget-header ui-corner-all" id="titre-0">Illustrations</h3>
87
				<span id="contenu-0" class="contenu">
88
				Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
89
				Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
90
				</span>
91
			</div>
92
			<div id="description" class="module ui-widget ui-widget-content ui-helper-clearfix ui-corner-all">
93
				<h3 class="titre ui-widget-header ui-corner-all" id="titre-1">Description</h3>
94
				<span id="contenu-0" class="contenu">
95
							Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
96
				Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
97
				</span>
98
			</div>
99
			<div id="classification" class="module ui-widget ui-widget-content ui-helper-clearfix ui-corner-all">
100
				<h3 class="titre ui-widget-header ui-corner-all" id="titre-2">Classification</h3>
101
				<span id="contenu-0" class="contenu">
102
										Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
103
							Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
104
							Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.
105
							Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum
106
				</span>
107
			</div>
203 gduche 108
		</div>
219 delphine 109
		<div class="colonne">
110
			<div id="bibliographie" class="module ui-widget ui-widget-content ui-helper-clearfix ui-corner-all">
111
				<h3 class="titre ui-widget-header ui-corner-all" id="titre-3">Bibliographie</h3>
112
				<span id="contenu-0" class="contenu">
113
				Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo.
114
				Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt.
115
				Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore et dolore magnam aliquam quaerat voluptatem.
116
				Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur?
117
				</span>
118
			</div>
119
			<div id="repartition" class="module ui-widget ui-widget-content ui-helper-clearfix ui-corner-all">
120
				<h3 class="titre ui-widget-header ui-corner-all" id="titre-4">Répartition</h3>
121
				<span id="contenu-0" class="contenu">
122
							Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
123
				Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
124
				</span>
125
			</div>
126
			<div id="ethnobotanique" class="module ui-widget ui-widget-content ui-helper-clearfix ui-corner-all">
127
				<h3 class="titre ui-widget-header ui-corner-all" id="titre-5">Ethnobotanique<span class="lienToggle"></span></h3>
128
				<span id="contenu-0" class="contenu">
129
							Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
130
				Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
131
				</span>
132
			</div>
203 gduche 133
		</div>
219 delphine 134
		<div class="colonne">
135
			<div id="statutDeProtection" class="module ui-widget ui-widget-content ui-helper-clearfix ui-corner-all">
136
				<h3 class="titre ui-widget-header ui-corner-all" id="titre-7">Statut de protection<span class="lienToggle"></span></h3>
137
				<span id="contenu-0" class="contenu">
138
							Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
139
							Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
140
							Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.
141
							Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum
142
				</span>
143
			</div>
144
			<div id="nomenclature" class="module ui-widget ui-widget-content ui-helper-clearfix ui-corner-all">
145
				<h3 class="titre ui-widget-header ui-corner-all" id="titre-8">Nomenclature<span class="lienToggle"></span></h3>
146
				<span id="contenu-0" class="contenu">
147
							Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
148
				Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
149
				</span>
150
			</div>
151
			<div id="phytosociologie" class="module ui-widget ui-widget-content ui-helper-clearfix ui-corner-all">
152
				<h3 class="titre ui-widget-header ui-corner-all" id="titre-9">Phytosociologie<span class="lienToggle"></span></h3>
153
				<span id="contenu-0" class="contenu">
154
							Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
155
				Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
156
				</span>
157
			</div>
158
		</div>
159
 
160
		<br style="clear:left" />
203 gduche 161
	</div>
201 gduche 162
 
219 delphine 163
 
201 gduche 164
<script type="text/Javascript">
165
	var modules = Array();
219 delphine 166
	var tableauOnglets = Array();
201 gduche 167
 
219 delphine 168
	 var ongletsDefaut = [<?= $blocs; ?>];
169
 
201 gduche 170
	/** Classe Module
171
	* Définit un module de type portlet
172
	**/
203 gduche 173
	function Module(id, module, onglet, statique) {
201 gduche 174
 
175
		// Variables de classe : identifiant, titre, et le HTML du résumé à afficher dans le contenu
176
		this.id = id;
203 gduche 177
		this.titre;
178
		this.htmlResume;
201 gduche 179
		this.statique = statique;
180
 
181
		// Les objets Portlet et Onglet que l'ont garde en mémoire pour pouvoir y accéder facilement
203 gduche 182
		this.portlet = module;
201 gduche 183
		this.onglet;
184
 
185
		// creerPortlet
186
		// Créer l'objet Portlet HTML à afficher et le stocker dans les variables de classe
187
		this.creerPortlet = function() {
188
			var objet = this;
189
 
203 gduche 190
			var titre = $(module).children('.titre');
201 gduche 191
			titre.className = 'titre ui-widget-header ui-corner-all';
192
			titre.id = 'titre-' + this.id;
193
 
203 gduche 194
			var contenu = $(module).children('.contenu');
201 gduche 195
			contenu.id = 'contenu-' + this.id;
196
			contenu.className ='contenu';
197
 
198
			var lienToggle = document.createElement('span');
199
			lienToggle.className = 'lienToggle ui-icon ui-icon-minusthick';
203 gduche 200
			$(titre).append(lienToggle);
201 gduche 201
			$(lienToggle).click(function() {
212 aurelien 202
				objet.afficherCacherModule();
201 gduche 203
			});
204
 
205
			this.portlet = module;
206
			return module;
207
		}
208
 
209
		// creerOnglet
210
		// Créer l'objet Onglet HTML
211
		this.creerOnglet = function() {
212
			var objet = this;
213
 
203 gduche 214
			var a = $(onglet).find("a");
201 gduche 215
 
216
			// Gestion du clic sur le lien
217
			// Comme les liens sont mis en place par jqueryui tabs, il faut ajouter une surcouche pour
218
			// déplacer vers la page du module
219
			$(a).click(function() {
211 aurelien 220
				// TODO : Changer l'url par celle du module et enregistrer la configuration actuelle des onglets.
201 gduche 221
				//$(location).attr('href',"http://www.google.fr");
222
			});
223
 
224
			if (!statique) {
225
				var span = document.createElement('span');
226
				span.className = "ui-icon ui-icon-close";
227
 
228
				// Gestion de la fermeture de l'onglet
229
				$(span).live( "click", function() {
212 aurelien 230
					objet.afficherCacherModule();
214 aurelien 231
					redimensionnerOnglets();
201 gduche 232
				});
233
 
203 gduche 234
				$(onglet).append(span);
201 gduche 235
			}
236
 
203 gduche 237
			this.onglet = onglet;
201 gduche 238
		}
239
 
240
		// Initialisation de l'objet
241
		this.creerPortlet();
242
		this.creerOnglet();
243
 
244
		// Accesseurs de la classe
245
		this.getOnglet = function() {
246
			return this.onglet;
247
		}
248
 
249
		this.getPortlet = function() {
250
 
251
			return this.portlet;
252
		}
211 aurelien 253
 
254
		// fonctions d'affichage et cachage (je sais pas si on dit ça comme ça) des onglets
255
		this.afficherCacherModule = function() {
256
			$(this.portlet).find(".lienToggle").toggleClass("ui-icon-plusthick");
257
			$(this.portlet).find(".lienToggle").toggleClass("ui-icon-minusthick");
258
			$(this.portlet).find(".contenu").toggle();
212 aurelien 259
			$(this.onglet).toggle();
214 aurelien 260
 
261
			redimensionnerOnglets();
211 aurelien 262
		}
263
 
201 gduche 264
	}
265
 
212 aurelien 266
	function afficherCacherMenuOnglets() {
211 aurelien 267
		if($("#conteneurMenuOnglets").html() != '') {
268
			$("#conteneurMenuOnglets").html('');
269
		} else {
219 delphine 270
			console.log(tableauOnglets);
211 aurelien 271
			var htmlMenu = '<ul class="menuModules">';
219 delphine 272
			for (idOnglet in tableauOnglets) {
212 aurelien 273
				var classe = "elementMenuModules";
274
				if($(idOnglet).is(':visible')) {
275
					classe += " elementMenuModulesSelectionne";
276
				}
219 delphine 277
				htmlMenu += '<li class="'+classe+'" rel="'+idOnglet+'" id="menu_module_'+idOnglet+'">'+tableauOnglets[idOnglet].titre+'</li>';
211 aurelien 278
			}
279
			htmlMenu += '</ul>';
280
			$("#conteneurMenuOnglets").html(htmlMenu);
281
			$("#conteneurMenuOnglets").toggle();
282
		}
283
	}
284
 
214 aurelien 285
	function redimensionnerOnglets() {
286
		// 570 px au max
287
		// 18 largeur croix
288
		// 18 largeur texte
289
		// 36 largeur totale
290
		var liensVisibles = $('#zone_onglets > ul > li:visible > a');
291
		var longueurLiens = 0;
292
		liensVisibles.each(function() {
293
			longueurLiens += $(this).width();
294
		});
295
		var nbOnglets = $('#zone_onglets > ul > li:visible').length;
219 delphine 296
		var longueurMax =  535 - (nbOnglets * 36);
214 aurelien 297
		if(longueurLiens >= longueurMax || nbOnglets > 5) {
298
			$('#zone_onglets > ul > li > a').not('.lien-statique').width(longueurMax/nbOnglets);
299
		} else {
300
			$('#zone_onglets > ul > li > a').not('.lien-statique').css("width","auto");
301
		}
302
	}
303
 
203 gduche 304
	//Initialisation
201 gduche 305
	$(document).ready(function() {
203 gduche 306
		i = 1;
201 gduche 307
 
203 gduche 308
		//Parcourir la totalité des modules générés et les lier grâce à la classe Module
309
		$(".module").each(function () {
201 gduche 310
			i++;
203 gduche 311
			identifiantOnglet = "#zone_onglets>ul>li:nth-child(" + i +")";
312
			var module = new Module(i, this, $(identifiantOnglet));
211 aurelien 313
			module.titre = $(this).children('h3').text();
219 delphine 314
			tableauOnglets[identifiantOnglet] = module;
203 gduche 315
		});
201 gduche 316
 
317
		$( ".colonne" ).sortable({
318
			connectWith: ".colonne"
319
		});
320
 
321
		$( ".colonne" ).disableSelection();
214 aurelien 322
		$('#zone_onglets').tabs({
323
			add: function(event, ui) {
324
				redimensionnerOnglets();
325
			},
326
			remove: function(event, ui) {
327
				redimensionnerOnglets();
328
			}
329
		});
330
 
211 aurelien 331
		$("#ongletEtPlus").click(function() {
212 aurelien 332
			afficherCacherMenuOnglets();
211 aurelien 333
		});
334
 
335
		$('.elementMenuModules').live('click', function() {
336
			var idOnglet = $(this).attr('rel');
219 delphine 337
			var objet = tableauOnglets[idOnglet];
212 aurelien 338
			objet.afficherCacherModule();
339
			$(this).toggleClass("elementMenuModulesSelectionne");
214 aurelien 340
		});
341
 
219 delphine 342
		for(indice in tableauOnglets) {
343
			var ongletEnCours = tableauOnglets[indice];
344
			if (ongletsDefaut.indexOf(ongletEnCours.titre) == -1) {
345
				ongletEnCours.afficherCacherModule();
346
			}
347
		}
348
 
214 aurelien 349
		redimensionnerOnglets();
201 gduche 350
	});
351
</script>