Voilà un modèle d'exportation au format html.
Il donne la liste des films avec des tris par genre, type de support ou pays.
Les détails de chaque films sont accessibles par simple clic.
Il marche sous IE mais pas sous Firefox, je sais pas quoi changer pour la compatibilité . Si quelqu'un connait, est-ce qu'il peut arranger ça ? ;-)
Voilà le code :
Code: Select all
<html>
<head>
<!--
Modèle adapté par Vince
Liste des films avec différents tris (genre, type de support, pays)
Détails de chaque film disponible par simple clic
-->
<style type="text/css">
/* style de la page */
body {
background: #DFDEE2;
color: black;
}
/* style des menus */
.menu {
clear: both; /* pour obliger le retour à la ligne des menus */
margin-top: 5px;
width: 200px;
height: 20px;
border: 1px solid #ccc;
text-align: center;
font-size: 15px;
font-weight: bold;
cursor: hand;
background: #9D9AA5;
}
/* style des menus ouverts */
#smenu1, #smenu2, #smenu3, #smenu4 {
float: left;
display: none; /* par défaut, les sous-menus ne seront pas affichés */
font-size: 8px;
padding: 5px 0 5px 0;
width: 200px;
}
/* style des sous menus */
.sousmenu {
font-size: 12px;
cursor: hand;
color: black;
text-decoration: none;
}
/* style des sous menus activé par la souris */
.sousmenu-over {
font-size: 12px;
cursor: hand;
color: white;
text-decoration: underline overline;
}
/* style des sous menus déjà visités */
.sousmenu-done {
font-size: 12px;
cursor: hand;
color: #595663;
text-decoration: none;
}
/* style des flèches d'ouverture des menus */
.symboleOuv{
font-size: 14px;
color: black;
}
/* style des flèches de fermeture des menus */
.symboleFer {
font-size: 11px;
color: black;
}
ul, li {
margin: 0;
padding: 0;
list-style-type: none;
font-size: 10px;
font-family: verdana, arial, sans-serif;
font-weight: normal;
}
/* style des titres dans la liste */
.tabTitre {
cursor:hand;
}
/* style des infos ajoutées au bout des titres dans la liste */
.info {
font-size:10px;
text-align:center;
}
a {
color: black;
}
</style>
<script language="javaScript">
/* fonction pour ouvrir-fermer les menus */
function clicMenu(id) {
/* booléen reconnaissant le navigateur */
isIE = (document.all)
isNN6 = (!isIE) && (document.getElementById)
/* compatibilité : l'objet menu est détecté selon le navigateur */
if (isIE) menu = document.all[id];
if (isNN6) menu = document.getElementById(id);
if (menu.style.display == "") menu.style.display = "none";
/* on ouvre ou ferme */
if (menu.style.display == "none"){
/* cas ou le tableau est caché */
menu.style.display = "block";
changeTitre(id,1);
} else {
/* on le cache */
menu.style.display = "none";
changeTitre(id,0);
}
}
/* change le sens des flèches dans les menus */
function changeTitre(id, option){
var t = "";
switch(id){
case 'smenu2': if(option==1)
t = "<span class='symboleFer'>Λ</span> "+menus[1]+" <span class='symboleFer'>Λ</span>";
else
t = "<span class='symboleOuv'>ν</span> "+menus[1]+" <span class='symboleOuv'>ν</span>";
document.all.menu2.innerHTML = t;
break;
case 'smenu3': if(option==1)
t = "<span class='symboleFer'>Λ</span> "+menus[2]+" <span class='symboleFer'>Λ</span>";
else
t = "<span class='symboleOuv'>ν</span> "+menus[2]+" <span class='symboleOuv'>ν</span>";
document.all.menu3.innerHTML = t;
break;
case 'smenu4': if(option==1)
t = "<span class='symboleFer'>Λ</span> "+menus[3]+" <span class='symboleFer'>Λ</span>";
else
t = "<span class='symboleOuv'>ν</span> "+menus[3]+" <span class='symboleOuv'>ν</span>";
document.all.menu4.innerHTML = t;
break;
}
}
/*************************************************************/
/* variables utilisées */
var menus = new Array(5); // tableau des titres des menus
var movies = new Array(); // tableau des films
var category = ""; // Current category
var movie = null; // Current movie
var categoryButton = null; // Active category button
var index = 0; // Current movie number in this category
var isReady = true; // Is ready for input from user
var tabCat = new Array(); // tableau des catégories
var compCat = 0; // nombre de catégories
var tabSup = new Array(); // tableau des supports
var compSup = 0; // nombre de supports
var tabPays = new Array(); // tableau des pays
var compPays = 0; // nombre de pays
var catLiens; // tableau pour les liens
var supLiens; // tableau pour les liens
var paysLiens; //tableau pour les liens
/*
création des menus
création des catégories
*/
function init() {
var elements = document.body.getElementsByTagName("div");
menus[0] = "Liste complète";
menus[1] = "Tri par genre";
menus[2] = "Tri par support";
menus[3] = "Tri par pays";
movies[menus[0]] = new Array();
createMenu(menus[0]);
/* initialisation des menus */
document.all.menu2.innerHTML = "<span class='symboleOuv'>ν</span> "+menus[1]+" <span class='symboleOuv'>ν</span>";
document.all.menu3.innerHTML = "<span class='symboleOuv'>ν</span> "+menus[2]+" <span class='symboleOuv'>ν</span>";
document.all.menu4.innerHTML = "<span class='symboleOuv'>ν</span> "+menus[3]+" <span class='symboleOuv'>ν</span>";
for (var i = 0; i < elements.length; i++) {
/* regroupement des films par genre */
category = elements[i].category;
if (category != null && category != "") {
catArray = movies[category];
if (catArray == null) {
catArray = new Array();
movies[category] = catArray;
catArray[0] = elements[i];
tabCat[i] = category;
compCat++;
}
else {
catArray[catArray.length] = elements[i];
}
movies[menus[0]][movies[menus[0]].length] = elements[i];
}
/* regroupement des films par type de support */
support = elements[i].support;
if (support != null && support != "") {
supArray = movies[support];
if (supArray == null) {
supArray = new Array();
movies[support] = supArray;
supArray[0] = elements[i];
tabSup[i] = support;
compSup++;
}
else {
supArray[supArray.length] = elements[i];
}
}
/* regroupement des films par pays */
pays = elements[i].pays;
if (pays != null && pays != "") {
paysArray = movies[pays];
if (paysArray == null) {
paysArray = new Array();
movies[pays] = paysArray;
paysArray[0] = elements[i];
tabPays[i] = pays;
compPays++;
}
else {
paysArray[paysArray.length] = elements[i];
}
}
}
/* tri des films pour chaque regroupement */
tabCat = tabCat.sort();
tabSup = tabSup.sort();
tabPays = tabPays.sort();
/* tableau pour les liens */
catLiens = new Array(compCat);
supLiens = new Array(compSup);
paysLiens = new Array(compPays);
for (var d=0 ; d<compCat ; d++)
catLiens[tabCat[d]] = 0;
for (var d=0 ; d<compSup ; d++)
supLiens[tabSup[d]] = 0;
for (var d=0 ; d<compPays ; d++)
paysLiens[tabPays[d]] = 0;
for(var t=0 ; t<compCat ; t++)
createCategory(tabCat[t],movies[tabCat[t]].length);
for(var t=0 ; t<compSup ; t++)
createSupport(tabSup[t],movies[tabSup[t]].length);
for(var t=0 ; t<compPays ; t++)
createPays(tabPays[t],movies[tabPays[t]].length);
category = menus[0];
document.all.tabSelection.innerHTML = "<table width='100%' border='0'>$$ITEM_BEGIN<tr><td><span class='tabTitre' onClick='ouvreFenetre($$ITEM_NUMBER-1);'>$$ITEM_TRANSLATEDTITLE</span><span style='width:50pt'></span><span class='info'>($$ITEM_DIRECTOR)</span></td></tr>$$ITEM_END</table>";
}
/* fonction de création du menu liste complète */
function createMenu(name) {
html = "<span class='menu' onclick='showCategorie(0,\"" + name + "\")'>" + name + "</span>";
document.all.menu1.innerHTML += html;
}
/* fonction création du menu par genre */
function createCategory(name, nb) {
html = "<span class='sousmenu' id='"+name+"' onclick='change(this,3,id,1);showCategorie(1,\"" + name + "\");' onmouseover='change(this,1,id,1);' onmouseout='change(this,2,id,1);'>" + name + "<span style='width:30pt;text-align:right;font-size:8pt;'> ("+nb+")</span></span><br>";
document.all.categoryDiv.innerHTML += html;
}
/* fonction création du menu par type de support */
function createSupport(name, nb) {
html = "<span class='sousmenu' id='"+name+"' onclick='change(this,3,id,2);showCategorie(2,\"" + name + "\");' onmouseover='change(this,1,id,2);' onmouseout='change(this,2,id,2);'>" + name + "<span style='width:30pt;text-align:right;font-size:8pt;'> ("+nb+")</span></span><br>";
document.all.supportDiv.innerHTML += html;
}
/* fonction création du menu par pays */
function createPays(name, nb) {
html = "<span class='sousmenu' id='"+name+"' onclick='change(this,3,id,3);showCategorie(0,\"" + name + "\");' onmouseover='change(this,1,id,3);' onmouseout='change(this,2,id,3);'>" + name + "<span style='width:30pt;text-align:right;font-size:8pt;'> ("+nb+")</span></span><br>";
document.all.paysDiv.innerHTML += html;
}
/* fonction de changement du style des sous menus */
function change(menu, option, id, type){
switch(option){
case 1 : menu.className='sousmenu-over';
break;
case 2 : switch(type) {
case 1 : if (catLiens[id] == 0)
menu.className='sousmenu';
else menu.className='sousmenu-done';
break;
case 2 : if (supLiens[id] == 0)
menu.className='sousmenu';
else menu.className='sousmenu-done';
break;
case 3 : if (paysLiens[id] == 0)
menu.className='sousmenu';
else menu.className='sousmenu-done';
break;
}
break
case 3 : switch(type) {
case 1 : catLiens[id] = 1; break;
case 2 : supLiens[id] = 1; break;
case 3 : paysLiens[id] = 1; break;
}
menu.className='sousmenu-done';
break;
}
}
/* passe au film suivant dans la liste en cours */
function next() {
if (!isReady) return;
index++;
if (index >= movies[category].length)
index = 0;
ouvreFenetre(index);
}
/* passe au film précédent dans la liste en cours */
function prev() {
if (!isReady) return;
index--;
if (index < 0)
index = movies[category].length - 1;
ouvreFenetre(index);
}
/* affiche la liste des films selon le tri choisi */
function showCategorie(option,name) {
if (!isReady) return;
category = name;
index = 0;
var films = "<table width='100%' border='0'>";
for(var h=0 ; h < movies[name].length ; h++){;
var f = movies[name][h];
var titre = f.titre;
var num = f.nb;
var detail;
switch(option){
case 0 : detail = "("+f.real+")";break;
case 1 : detail = "("+f.support+")";break
case 2 : detail = "("+f.category+")";break
}
films += "<tr><td><span id='"+h+"' class='tabTitre' onClick='ouvreFenetre(id);'>"+titre+"</span><span style='width:50pt'></span><span class='info'>"+detail+"</span></td></tr>";
}
document.all.tabSelection.innerHTML = films+"</table>";
}
/* affiche les détails du film sélectionné dans une fenêtre de type popup */
function ouvreFenetre(niv) {
index = eval(niv);
var movie = movies[category][niv];
var rang = index+1;
var largeur=700;
var hauteur=600;
var haut=(screen.height-hauteur)/2;
var gauche=(screen.width-largeur)/2;
fenetre = window.open("", "details", "top="+haut+", left="+gauche+", width="+largeur+", height="+hauteur+", scrollbars=yes, resizable=yes");
fenetre.focus();
fenetre.document.write("<html><head><title>"+movie.titre+"</title>");
fenetre.document.write("<style type='text/css'>");
fenetre.document.write("body {background: #DFDEE2; color: black; }");
fenetre.document.write(".button { /* Next / Prev buttons */");
fenetre.document.write("height: 15px;padding-left: 18px;padding-right: 18px;border: 1px solid;font-weight: bold;cursor: hand;}");
fenetre.document.write(".titre {");
fenetre.document.write("width: 100%; text-align: center; font-size: 30pt; color: white;font-weight: bold}");
fenetre.document.write(".tdGauche {");
fenetre.document.write("width: 120pt;text-align: right; color: #56545F;}");
fenetre.document.write(".tdDroite {");
fenetre.document.write("color: black;}");
fenetre.document.write("</style></head><body>");
fenetre.document.write("<table width='100%' height='50pt' cellspacing='0' cellpadding='0' border='0'>");
fenetre.document.write("<tr valign='top'><td align='center'>");
fenetre.document.write("<span id='prev' class='button' onClick='window.opener.prev()'>Prec.</span>");
fenetre.document.write(" <b>"+rang+" / "+movies[category].length+"</b> ");
fenetre.document.write("<span id='next' class='button' onClick='window.opener.next()'>Suiv.</span></td></tr></table>");
fenetre.document.write("<hr><span class='titre'>"+movie.titre+"</span>");
fenetre.document.write("<table width='100%' cellspacing='20' cellpadding='0' border='0'>");
fenetre.document.write("<tr><td class='tdGauche'>Réalisateur : </td><td class='tdDroite'>"+movie.real+"</td></tr>");
fenetre.document.write("<tr><td class='tdGauche'>Genre : </td><td class='tdDroite'>"+movie.category+"</td></tr>");
fenetre.document.write("<tr><td class='tdGauche'>Support : </td><td class='tdDroite'>"+movie.support+"</td></tr>");
fenetre.document.write("<tr><td class='tdGauche'>Durée : </td><td class='tdDroite'>"+movie.tps+" min</td></tr>");
fenetre.document.write("<tr><td class='tdGauche'>Nombre de disque(s) : </td><td class='tdDroite'>"+movie.nbDisks+"</td></tr>");
fenetre.document.write("<tr><td class='tdGauche'>Année : </td><td class='tdDroite'>"+movie.annee+"</td></tr>");
fenetre.document.write("<tr><td class='tdGauche'>Pays : </td><td class='tdDroite'>"+movie.pays+"</td></tr>");
fenetre.document.write("<tr><td class='tdGauche'>Titre original : </td><td class='tdDroite'>"+movie.titreVO+"</td></tr>");
fenetre.document.write("<tr><td class='tdGauche' valign='top'>Acteurs : </td><td class='tdDroite'>"+movie.acteurs+"</td></tr>");
fenetre.document.write("<tr><td class='tdGauche' valign='top'>Description : </td><td class='tdDroite'>"+movie.desc+"</td></tr>");
fenetre.document.write("</table></body></html>");
fenetre.document.close();
}
</script>
</head>
</body>
<body onLoad="init();" topmargin="5" leftmargin="5">
<a name="top"></a>
<p><p align="center" style="color:#4B4952;font-size:15pt;font-weight: bold">Collection de films du $$DATE</p><hr><p><p>
<table width="100%" height="85%" cellspacing="0" cellpadding="0" border="0">
<tr>
<td width="20%" valign="top" align="center">
<li><div id="menu1"></div></li>
<ul id="smenu1">
</ul>
<li class="menu" onclick="clicMenu('smenu2');" ><div id="menu2"></div></li>
<ul id="smenu2" onclick="clicMenu('smenu2');" >
<li> <div id="categoryDiv">
</div> </li>
</ul>
<li class="menu" onclick="clicMenu('smenu3');" ><div id="menu3"></div></li>
<ul id="smenu3" onclick="clicMenu('smenu3');" >
<li> <div id="supportDiv">
</div> </li>
</ul>
<li class="menu" onclick="clicMenu('smenu4');" ><div id="menu4"></div></li>
<ul id="smenu4" onclick="clicMenu('smenu4');" >
<li> <div id="paysDiv">
</div> </li>
</ul>
</td>
<td width="100px"></td>
<td valign="top" align="center">
<div id="tabSelection"></div>
</td>
</tr>
</table>
<p align="right"><a href="#top">haut de page</a></p>
<hr>
$$ITEM_BEGIN
<div titre="$$ITEM_TRANSLATEDTITLE" nb="$$ITEM_NUMBER" real="$$ITEM_DIRECTOR"
category="$$ITEM_CATEGORY" support="$$ITEM_VIDEOFORMAT" annee="$$ITEM_YEAR"
titreVO="$$ITEM_ORIGINALTITLE" pays="$$ITEM_COUNTRY" tps="$$ITEM_LENGTH"
acteurs="$$ITEM_ACTORS" desc="$$ITEM_DESCRIPTION" nbDisks="$$ITEM_DISKS">
</div>
$$ITEM_END
</body>
</html>