REPORT de la branche 1.1 : 477->494
[euphorik.git] / js / pages.js
index fe28860..2f0abfc 100644 (file)
 /**\r
   * Gestion des pages.\r
   */\r
-euphorik.Pages = function() {\r
+euphorik.Pages = function(fragment, communication) {\r
+   this.fragment = fragment;
+   this.communication = communication;\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
-   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
+euphorik.Pages.prototype.ajouterPage = function(page, defaut) {\r
+   if (typeof page === "string") {\r
+      page = new euphorik.PageStatique(page, this.communication);\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 || (!forcerChargement && page == this.pageCourante)) {\r
+   if (!page) {\r
+      page = this.pageDefaut;\r
+   }\r
+\r
+   if (!page || (!forcerChargement && page === this.pageCourante)) {\r
       return;\r
    }\r
    \r
@@ -53,16 +72,11 @@ euphorik.Pages.prototype.afficherPage = function(nomPage, forcerChargement) {
    }\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
@@ -71,4 +85,7 @@ euphorik.Pages.prototype.afficherPage = function(nomPage, forcerChargement) {
    if (this.pageCourante.charger) {\r
       this.pageCourante.charger();\r
    }\r
+   \r
+   this.fragment.setVal("page", this.pageCourante.nom);\r
+   this.fragment.write();\r
 };\r