X-Git-Url: http://git.euphorik.ch/?p=euphorik.git;a=blobdiff_plain;f=js%2Fpages.js;h=df515e618237728ed990ca04d28e2c81e381b85d;hp=fe288604035848fb14a28a22c0f8bb82da6842f2;hb=351623b2a00432ae5b690476c68b8fb05cc8dd03;hpb=7fb422d6d4a7a59c8f74d938371a4a10474e8ea4 diff --git a/js/pages.js b/js/pages.js index fe28860..df515e6 100644 --- a/js/pages.js +++ b/js/pages.js @@ -22,29 +22,47 @@ /** * Gestion des pages. */ -euphorik.Pages = function() { +euphorik.Pages = function(fragment) { + this.fragment = fragment; this.pageCourante = undefined; + this.pageDefaut = undefined; this.pages = {}; }; /** * Accepte soit un objet soit un string. * un string correspond au nom de la page, par exemple : "page" -> "page.html" + * @defaut si vrai alors la page est la page par défaut */ -euphorik.Pages.prototype.ajouterPage = function(page) { - if (typeof page == "string") { - this.pages[page] = page; - } else { - page.pages = this; // la magie des langages dynamiques : le foutoire - this.pages[page.nom] = page; +euphorik.Pages.prototype.ajouterPage = function(page, defaut) { + if (typeof page === "string") { + page = new euphorik.PageStatique(page); + } + + page.pages = this; // la magie des langages dynamiques : le foutoire + page.fragment = this.fragment; + + this.pages[page.nom] = page; + + if (defaut) { + this.pageDefaut = page; } }; euphorik.Pages.prototype.afficherPage = function(nomPage, forcerChargement) { forcerChargement = forcerChargement || false; - + + // si le nom de la page n'est pas donné on le prend du fragment + if (!nomPage) { + nomPage = this.fragment.getVal("page"); + } + var page = this.pages[nomPage]; - if (!page || (!forcerChargement && page == this.pageCourante)) { + if (!page) { + page = this.pageDefaut; + } + + if (!page || (!forcerChargement && page === this.pageCourante)) { return; } @@ -53,16 +71,11 @@ euphorik.Pages.prototype.afficherPage = function(nomPage, forcerChargement) { } $("#menu li").removeClass("courante"); - $("#menu li." + nomPage).addClass("courante"); + $("#menu li." + page.nom).addClass("courante"); this.pageCourante = page; - var contenu = ""; - if (typeof page == "string") { - $.ajax({async: false, url: "pages/" + page + ".html", success : function(page) { contenu += page; }}); - } else { - contenu += this.pageCourante.contenu(); - } - + var contenu = this.pageCourante.contenu(); + $("#page").html(contenu).removeClass().addClass( this.pageCourante.nom + (this.pageCourante.classes ? " " + this.pageCourante.classes() : "") // l'objet peut fournire des classes css supplémentaires sous la forme d'un string @@ -71,4 +84,7 @@ euphorik.Pages.prototype.afficherPage = function(nomPage, forcerChargement) { if (this.pageCourante.charger) { this.pageCourante.charger(); } + + this.fragment.setVal("page", this.pageCourante.nom); + this.fragment.write(); };