Update to the new library 'json2'
[euphorik.git] / js / pages.js
index df515e6..9cf7fbb 100644 (file)
 \r
 \r
 /**\r
-  * Gestion des pages.\r
+  * Pages manager.\r
   */\r
-euphorik.Pages = function(fragment) {\r
-   this.fragment = fragment;\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
+  * Add a new page, must be done one time per page after the website is loaded.\r
+  * Accept a string or a Page object.\r
+  * If a string is given then a static object page is automatically created.\r
+  * A string is the name of the page without the 'html' extension, for example\r
+  *  "page" -> "page.html"\r
+  * @defaultPage If true then the page will be flaged as 'default'. It must be only one default page.\r
   */\r
-euphorik.Pages.prototype.ajouterPage = function(page, defaut) {\r
+euphorik.Pages.prototype.addPage = function(page, defaultPage) {\r
    if (typeof page === "string") {\r
-      page = new euphorik.PageStatique(page);\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
+   this.pages[page.name] = page;   \r
        \r
-   if (defaut) {\r
+   if (defaultPage) {\r
       this.pageDefaut = page;\r
    }\r
 };\r
 \r
-euphorik.Pages.prototype.afficherPage = function(nomPage, forcerChargement) {\r
-   forcerChargement = forcerChargement || false;\r
+/**\r
+  * Display a given page.\r
+  * If no page name given the the default page will be loaded.\r
+  * @pageName [optional] The page name to load. \r
+  * @forceToLoad [optional] If true then the page will be reloaded even it already displayed.\r
+  */\r
+euphorik.Pages.prototype.displayPage = function(pageName, forceToLoad) {\r
+   forceToLoad = forceToLoad || false;\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
+    if (!pageName) {\r
+      pageName = this.fragment.getVal("page");\r
     }\r
     \r
-   var page = this.pages[nomPage];\r
+   var page = this.pages[pageName];\r
    if (!page) {\r
       page = this.pageDefaut;\r
    }\r
 \r
-   if (!page || (!forcerChargement && page === this.pageCourante)) {\r
+   if (!page || (!forceToLoad && page === this.pageCourante)) {\r
       return;\r
    }\r
    \r
@@ -71,20 +81,21 @@ euphorik.Pages.prototype.afficherPage = function(nomPage, forcerChargement) {
    }\r
   \r
    $("#menu li").removeClass("courante");\r
-   $("#menu li." + page.nom).addClass("courante");\r
+   $("#menu li." + page.name).addClass("courante");\r
       \r
    this.pageCourante = page;\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
+      this.pageCourante.name +\r
+      // A page can bring some additionnals CSS classes\r
+      (this.pageCourante.classes ? " " + this.pageCourante.classes() : "")\r
    );\r
    \r
    if (this.pageCourante.charger) {\r
       this.pageCourante.charger();\r
    }\r
    \r
-   this.fragment.setVal("page", this.pageCourante.nom);\r
+   this.fragment.setVal("page", this.pageCourante.name);\r
    this.fragment.write();\r
 };\r