Add a mechanism for forcing the skin from within a view.
authorRaphaël Barrois <raphael.barrois@polytechnique.org>
Fri, 19 Aug 2011 17:02:52 +0000 (19:02 +0200)
committerRaphaël Barrois <raphael.barrois@polytechnique.org>
Thu, 8 Sep 2011 23:14:46 +0000 (01:14 +0200)
Use it for the 'register' page.

Signed-off-by: Raphaël Barrois <raphael.barrois@polytechnique.org>
classes/xorgpage.php
configs/platal.ini
modules/register.php

index 852b842..2bf2062 100644 (file)
@@ -21,6 +21,9 @@
 
 class XorgPage extends PlPage
 {
+    protected $forced_skin = null;
+    protected $default_skin = null;
+
     public function __construct()
     {
         parent::__construct();
@@ -52,13 +55,36 @@ class XorgPage extends PlPage
         }
     }
 
+    /** Force the skin to use, bypassing user choice.
+     * Typically used for the 'register' page.
+     * @param $skin The skin to use.
+     */
+    public function forceSkin($skin)
+    {
+        $this->forced_skin = $skin;
+    }
+
+    /** Choose another 'default' skin.
+     * Typically used for the 'Auth Groupe X' login page.
+     * @param $skin The default skin to use.
+     */
+    public function setDefaultSkin($skin)
+    {
+        $this->default_skin = $skin;
+    }
+
     public function run()
     {
         global $globals, $platal;
-        if (isset($platal) && $platal->path == 'register') {
-            $skin = $globals->register_skin . ".tpl";
+        if ($this->forced_skin !== null) {
+            $skin = $this->forced_skin . '.tpl';
         } else {
-            $skin = S::v('skin', $globals->skin . ".tpl");
+            if ($this->default_skin === null) {
+                $default_skin = $globals->skin;
+            } else {
+                $default_skin = $this->default_skin;
+            }
+            $skin = S::v('skin', $default_skin . '.tpl');
         }
         $this->_run('skin/' . $skin);
     }
index a7abb91..9ce8614 100644 (file)
@@ -149,10 +149,6 @@ memcache = ""
 ; select a skin.
 skin = "default"
 
-; $globals->register_skin
-; Skin to use during registration process
-register_skin = "register"
-
 ; $globals->core->econfiance
 ; Key used to perform transactions with the 'econfiance' webservice in order
 ; to synchronize the X-Informatique directory with polytechnique.net
index 6c55a23..83169e8 100644 (file)
@@ -31,6 +31,8 @@ class RegisterModule extends PLModule
 
     function handler_register($page, $hash = null)
     {
+        $page->forceSkin('register');
+
         $alert = array();
         $alert_details = '';
         $subState = new PlDict(S::v('subState', array()));