Moving to GitHub.
[platal.git] / classes / xorgpage.php
index 2bc6d59..b132fe8 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /***************************************************************************
- *  Copyright (C) 2003-2010 Polytechnique.org                              *
+ *  Copyright (C) 2003-2014 Polytechnique.org                              *
  *  http://opensource.polytechnique.org/                                   *
  *                                                                         *
  *  This program is free software; you can redistribute it and/or modify   *
 
 class XorgPage extends PlPage
 {
+    protected $forced_skin = null;
+    protected $default_skin = null;
+
     public function __construct()
     {
+        global $globals;
         parent::__construct();
 
         // Set the default page
         $this->changeTpl('platal/index.tpl');
-        $this->addJsLink('jquery.js');
+        if (strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE') !== false) {
+            $this->addJsLink('json2.js');
+        }
+        $this->addJsLink('jquery.xorg.js');
         $this->addJsLink('overlib.js');
-        $this->addJsLink('secure_hash.js');
-        $this->addJsLink('sha1.js');
-        $this->addJsLink('wiki.js');
+        $this->addJsLink('core.js');
         $this->addJsLink('xorg.js');
+        if ($globals->core->sentry_js_dsn) {
+            $this->addJsLink('raven.min.js');
+        }
         $this->setTitle('le site des élèves et anciens élèves de l\'École polytechnique');
         if (S::logged() && S::user()->checkPerms('admin')) {
             $types = array(S::user()->type);
@@ -44,20 +52,47 @@ class XorgPage extends PlPage
                 }
             }
             $this->assign('account_types_list', $types);
+
+            $skins = DirEnum::getOptions(DirEnum::SKINS);
+            asort($skins);
+            $this->assign('skin_list', $skins);
         }
     }
 
+    /** 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);
     }
 }
 
-// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8:
+// vim:set et sw=4 sts=4 sws=4 foldmethod=marker fenc=utf-8:
 ?>