Fix clear cache on X.net
[platal.git] / include / xnet / page.inc.php
index 5258903..8acc8eb 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /***************************************************************************
- *  Copyright (C) 2003-2006 Polytechnique.org                              *
+ *  Copyright (C) 2003-2008 Polytechnique.org                              *
  *  http://opensource.polytechnique.org/                                   *
  *                                                                         *
  *  This program is free software; you can redistribute it and/or modify   *
  *  59 Temple Place, Suite 330, Boston, MA  02111-1307  USA                *
  ***************************************************************************/
 
-require_once dirname(__FILE__).'/../../classes/Page.php';
-
 class XnetPage extends PlatalPage
 {
+    public $nomenu = false;
+
     // {{{ function XnetPage()
 
-    function XnetPage($tpl, $type=SKINNED)
+    public function __construct($tpl, $type=SKINNED)
     {
-        $this->PlatalPage($tpl, $type);
+        parent::__construct($tpl, $type);
 
         $this->register_function('list_all_my_groups', 'list_all_my_groups');
         $this->register_modifier('cat_pp', 'cat_pp');
@@ -41,15 +41,34 @@ class XnetPage extends PlatalPage
     // }}}
     // {{{ function run()
 
-    function run()
+    public function run()
     {
+        if (!$this->nomenu) {
+            $this->useMenu();
+        }
         $this->_run('xnet/skin.tpl');
     }
 
     // }}}
+    // {{{ function changeTpl()
+
+    public function changeTpl($tpl, $type = SKINNED)
+    {
+        global $globals;
+        parent::changeTpl($tpl, $type);
+        $this->assign('is_logged', S::logged());
+        if ($globals->asso('id')) {
+            $this->assign('asso', $globals->asso());
+            $this->setType($globals->asso('cat'));
+            $this->assign('is_admin', may_update());
+            $this->assign('is_member', is_member());
+        }
+    }
+
+    // }}}
     // {{{ function setType
 
-    function setType($type)
+    public function setType($type)
     {
         $this->assign('xnet_type', strtolower($type));
     }
@@ -57,56 +76,62 @@ class XnetPage extends PlatalPage
     // }}}
     // {{{ function useMenu
 
-    function useMenu()
+    private function useMenu()
     {
         global $globals;
 
         $menu = array();
 
-        if (S::logged()) {
-            $sub = array();
-            $sub['déconnexion']   = 'exit';
-            $menu['no_title'] = $sub;
-        }
-
         $sub = array();
-        $sub['accueil']           = '';
         $sub['liste des groupes'] = 'plan';
         $sub['documentation']     = 'Xnet';
-        $menu["Menu Principal"]   = $sub;
+        $sub['signaler un bug']   = array('href' => 'send_bug', 'class' => 'popup_840x600');
+        $menu["no_title"]   = $sub;
 
-        if (S::logged() && (is_member() || may_update())) {
+        $perms = S::v('perms');
+        $dim = $globals->asso('diminutif');
+        if (S::logged() && $globals->asso()) {
             $sub = array();
-            $dim = $globals->asso('diminutif');
-            $sub['présentation'] = "$dim/";
-            if (may_update() || $globals->asso('pub') == 'public') {
+            $sub['présentation'] = "login/$dim/";
+            if ($perms->hasFlag('groupannu')) {
                 $sub['annuaire du groupe'] = "$dim/annuaire";
-                $sub['carte'] = "$dim/geoloc";
+                $sub['trombinoscope'] = "$dim/trombi";
+                $sub['planisphère'] = "$dim/geoloc";
             }
-            if ($globals->asso('mail_domain')) {
-                $sub['listes de diffusion'] = "$dim/lists";
-                $sub['envoyer un mail']     = "$dim/mail";
+            if ($perms->hasFlag('groupmember')) {
+                if ($globals->asso('forum')) {
+                    $sub['forum'] = "$dim/forum";
+                }
+                if ($globals->asso('mail_domain')) {
+                    $sub['listes de diffusion'] = "$dim/lists";
+                }
+            }
+            $sub['événement'] = "$dim/events";
+            if ($perms->hasFlag('groupmember')) {
+                $sub['télépaiement'] = "$dim/payment";
             }
-            $sub['événement'] = "$dim/events";
-            $sub['télépaiement'] = "$dim/paiement";
 
             $menu[$globals->asso('nom')] = $sub;
         }
 
-        if (S::logged() && may_update()) {
+        if ($globals->asso() && is_object($perms) && $perms->hasFlag('groupadmin')) {
             $sub = array();
             $sub['modifier l\'accueil'] = "$dim/edit";
+            $sub['gérer les annonces'] = "$dim/admin/announces";
             if ($globals->asso('mail_domain')) {
-                $sub['créer une liste']     = "$dim/lists/create";
-                $sub['créer un alias']      = "$dim/alias/create";
+                $sub['envoyer un mail']     = "$dim/mail";
+                $sub['créer une liste']     = "$dim/lists/create";
+                $sub['créer un alias']      = "$dim/alias/create";
             }
             if (S::has_perms()) {
-                $sub['gérer les groupes'] = 'admin';
+                $sub['gérer les groupes'] = array('href' => 'admin', 'style' => 'color: gray;');
+                $sub['clear cache'] = array('href' => 'purge_cache?token=' . S::v('xsrf_token'), 'style' => 'color: gray;');
             }
             $menu['Administrer'] = $sub;
         } elseif (S::has_perms()) {
             $sub = array();
-            $sub['gérer les groupes'] = 'admin';
+            $sub['gérer les groupes'] = 'admin';
+            $sub['clear cache'] = 'purge_cache?token=' . S::v('xsrf_token');
             $menu['Administrer'] = $sub;
         }
 
@@ -128,9 +153,10 @@ function list_all_my_groups($params)
                FROM  groupex.asso    AS a
          INNER JOIN  groupex.membres AS m ON m.asso_id = a.id
               WHERE  m.uid={?}", S::v('uid'));
-    $html = '<div>Mes groupes :</div>';
+    $links = '<a href="exit">déconnexion</a>';
+    $html = '<div>Mes groupes (' . $links . ') :</div>';
     while (list($nom, $mini) = $res->next()) {
-        $html .= "<a class='gp' href='$mini/'>&bull; $nom</a>";
+        $html .= "<span class='gp'>&bull; <a href='login/$mini'>$nom</a></span>";
     }
     return $html;
 }
@@ -152,5 +178,5 @@ function cat_pp($cat)
 
 // }}}
 
-// vim:set et sw=4 sts=4 sws=4 foldmethod=marker:
+// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8:
 ?>