/**\r
* Gestion des pages.\r
*/\r
-euphorik.Pages = function() {\r
+euphorik.Pages = function(fragment) {\r
+ this.fragment = fragment;\r
this.pageCourante = undefined;\r
+ this.pageDefaut = undefined;\r
this.pages = {};\r
};\r
\r
/**\r
* Accepte soit un objet soit un string.\r
* un string correspond au nom de la page, par exemple : "page" -> "page.html"\r
+ * @defaut si vrai alors la page est la page par défaut\r
*/\r
-euphorik.Pages.prototype.ajouterPage = function(page) {\r
+euphorik.Pages.prototype.ajouterPage = function(page, defaut) {\r
if (typeof page === "string") {\r
- this.pages[page] = page;\r
- } else {\r
- page.pages = this; // la magie des langages dynamiques : le foutoire\r
- this.pages[page.nom] = page;\r
+ page = new euphorik.PageStatique(page);\r
+ }\r
+ \r
+ page.pages = this; // la magie des langages dynamiques : le foutoire\r
+ page.fragment = this.fragment;\r
+ \r
+ this.pages[page.nom] = page; \r
+ \r
+ if (defaut) {\r
+ this.pageDefaut = page;\r
}\r
};\r
\r
euphorik.Pages.prototype.afficherPage = function(nomPage, forcerChargement) {\r
forcerChargement = forcerChargement || false;\r
-\r
+ \r
+ // si le nom de la page n'est pas donné on le prend du fragment\r
+ if (!nomPage) {\r
+ nomPage = this.fragment.getVal("page");\r
+ }\r
+ \r
var page = this.pages[nomPage];\r
+ if (!page) {\r
+ page = this.pageDefaut;\r
+ }\r
+\r
if (!page || (!forcerChargement && page === this.pageCourante)) {\r
return;\r
}\r
}\r
\r
$("#menu li").removeClass("courante");\r
- $("#menu li." + nomPage).addClass("courante");\r
+ $("#menu li." + page.nom).addClass("courante");\r
\r
this.pageCourante = page;\r
- var contenu = "";\r
- if (typeof page === "string") {\r
- $.ajax({async: false, url: "pages/" + page + ".html", success : function(page) { contenu += page; }});\r
- } else {\r
- contenu += this.pageCourante.contenu();\r
- }\r
- \r
+ var contenu = this.pageCourante.contenu();\r
+ \r
$("#page").html(contenu).removeClass().addClass(\r
this.pageCourante.nom +\r
(this.pageCourante.classes ? " " + this.pageCourante.classes() : "") // l'objet peut fournire des classes css supplémentaires sous la forme d'un string\r
if (this.pageCourante.charger) {\r
this.pageCourante.charger();\r
}\r
+ \r
+ this.fragment.setVal("page", this.pageCourante.nom);\r
+ this.fragment.write();\r
};\r