New file |
0,0 → 1,186 |
var modules = Array(); |
var tableauOnglets = Array(); |
|
/** Classe Module |
* Définit un module de type portlet |
**/ |
function Module(id, module, onglet, statique) { |
|
// Variables de classe : identifiant, titre, et le HTML du résumé à afficher dans le contenu |
this.id = id; |
this.titre; |
this.htmlResume; |
this.statique = statique; |
|
// Les objets Portlet et Onglet que l'ont garde en mémoire pour pouvoir y accéder facilement |
this.portlet = module; |
this.onglet; |
|
// creerPortlet |
// Créer l'objet Portlet HTML à afficher et le stocker dans les variables de classe |
this.creerPortlet = function() { |
var objet = this; |
|
var titre = $(module).children('.titre'); |
titre.className = 'titre ui-widget-header ui-corner-all'; |
titre.id = 'titre-' + this.id; |
|
var contenu = $(module).children('.contenu'); |
contenu.id = 'contenu-' + this.id; |
contenu.className ='contenu'; |
|
var lienToggle = document.createElement('span'); |
lienToggle.className = 'lienToggle ui-icon ui-icon-minusthick'; |
$(titre).append(lienToggle); |
$(lienToggle).click(function() { |
objet.afficherCacherModule(); |
}); |
|
this.portlet = module; |
return module; |
} |
|
// creerOnglet |
// Créer l'objet Onglet HTML |
this.creerOnglet = function() { |
var objet = this; |
var a = $(onglet).find("a"); |
|
// Gestion du clic sur le lien |
// Comme les liens sont mis en place par jqueryui tabs, il faut ajouter une surcouche pour |
// déplacer vers la page du module |
$(a).click(function() { |
// TODO : Changer l'url par celle du module et enregistrer la configuration actuelle des onglets. |
//$(location).attr('href',"http://www.google.fr"); |
}); |
|
if (!statique) { |
var span = document.createElement('span'); |
span.className = "ui-icon ui-icon-close"; |
|
// Gestion de la fermeture de l'onglet |
$(span).live( "click", function() { |
objet.afficherCacherModule(); |
redimensionnerOnglets(); |
}); |
$(onglet).append(span); |
} |
this.onglet = onglet; |
} |
|
// Initialisation de l'objet |
this.creerPortlet(); |
this.creerOnglet(); |
|
// Accesseurs de la classe |
this.getOnglet = function() { |
return this.onglet; |
} |
|
this.getPortlet = function() { |
return this.portlet; |
} |
|
// fonctions d'affichage et cachage (je sais pas si on dit ça comme ça) des onglets |
this.afficherCacherModule = function() { |
$(this.portlet).find(".lienToggle").toggleClass("ui-icon-plusthick"); |
$(this.portlet).find(".lienToggle").toggleClass("ui-icon-minusthick"); |
$(this.portlet).find(".contenu").toggle(); |
$(this.onglet).toggle(); |
|
redimensionnerOnglets(); |
} |
} |
|
|
|
function afficherCacherMenuOnglets() { |
if($("#conteneurMenuOnglets").html() != '') { |
$("#conteneurMenuOnglets").html(''); |
$('#lienOngletEtPlus').text('+'); |
} else { |
var htmlMenu = '<ul class="menuModules">'; |
for (idOnglet in tableauOnglets) { |
var classe = "elementMenuModules"; |
if($(idOnglet).is(':visible')) { |
classe += " elementMenuModulesSelectionne"; |
} |
htmlMenu += '<li class="'+classe+'" rel="'+idOnglet+'" id="menu_module_'+idOnglet+'">'+tableauOnglets[idOnglet].titre+'</li>'; |
} |
htmlMenu += '</ul>'; |
$("#conteneurMenuOnglets").html(htmlMenu); |
$("#conteneurMenuOnglets").toggle(); |
$('#lienOngletEtPlus').text('-'); |
} |
} |
|
function redimensionnerOnglets() { |
// 570 px au max |
// 18 largeur croix |
// 18 largeur texte |
// 36 largeur totale |
var liensVisibles = $('#zone_onglets > ul > li:visible > a'); |
var longueurLiens = 0; |
liensVisibles.each(function() { |
longueurLiens += $(this).width(); |
}); |
var nbOnglets = $('#zone_onglets > ul > li:visible').length; |
var longueurMax = 535 - (nbOnglets * 36); |
if(longueurLiens >= longueurMax || nbOnglets > 5) { |
$('#zone_onglets > ul > li > a').not('.lien-statique').width(longueurMax/nbOnglets); |
} else { |
$('#zone_onglets > ul > li > a').not('.lien-statique').css("width","auto"); |
} |
} |
|
//Initialisation |
$(document).ready(function() { |
i = 1; |
|
//Parcourir la totalité des modules générés et les lier grâce à la classe Module |
$(".module").each(function () { |
i++; |
identifiantOnglet = "#zone_onglets>ul>li:nth-child(" + i +")"; |
var module = new Module(i, this, $(identifiantOnglet)); |
module.titre = $(this).children('h3').text(); |
tableauOnglets[identifiantOnglet] = module; |
}); |
|
$( ".colonne" ).sortable({ |
connectWith: ".colonne" |
}); |
|
$( ".colonne" ).disableSelection(); |
$('#zone_onglets').tabs({ |
add: function(event, ui) { |
redimensionnerOnglets(); |
}, |
remove: function(event, ui) { |
redimensionnerOnglets(); |
} |
}); |
|
$("#ongletEtPlus").click(function() { |
afficherCacherMenuOnglets(); |
}); |
|
$('.elementMenuModules').live('click', function() { |
var idOnglet = $(this).attr('rel'); |
var objet = tableauOnglets[idOnglet]; |
objet.afficherCacherModule(); |
$(this).toggleClass("elementMenuModulesSelectionne"); |
}); |
|
for(indice in tableauOnglets) { |
var ongletEnCours = tableauOnglets[indice]; |
if (ongletsDefaut.indexOf(ongletEnCours.titre) == -1) { |
ongletEnCours.afficherCacherModule(); |
} |
} |
|
$('.lien-onglet').parent().each(function() { |
$(this).attr("title",$(this).children("a").text()); |
}); |
|
redimensionnerOnglets(); |
}); |
Property changes: |
Added: svn:executable |
+* |
\ No newline at end of property |