X-Git-Url: http://git.euphorik.ch/?p=euphorik.git;a=blobdiff_plain;f=js%2Fpages.js;h=2f0abfcc939f70b2013a2b0e46a0f026c9c1437e;hp=cd1ade642e2b2f151ec84c4bfde67b51241df8fb;hb=85dc0facbc2b2de826978fac3768db7949a6b92f;hpb=e6475e1885c0a0f102387c01e9bcb78ac09b4ef8 diff --git a/js/pages.js b/js/pages.js index cd1ade6..2f0abfc 100644 --- a/js/pages.js +++ b/js/pages.js @@ -22,28 +22,47 @@ /** * Gestion des pages. */ -euphorik.Pages = function() { +euphorik.Pages = function(fragment, communication) { + this.fragment = fragment; + this.communication = communication; 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) { +euphorik.Pages.prototype.ajouterPage = function(page, defaut) { if (typeof page === "string") { - this.pages[page] = page; - } else { - page.pages = this; // la magie des langages dynamiques : le foutoire - this.pages[page.nom] = page; + page = new euphorik.PageStatique(page, this.communication); + } + + 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) { + page = this.pageDefaut; + } + if (!page || (!forcerChargement && page === this.pageCourante)) { return; } @@ -53,16 +72,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 +85,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(); };