Rework events admin page
authorx2003bruneau <x2003bruneau@839d8a87-29fc-0310-9880-83ba4fa771e5>
Sat, 29 Jul 2006 17:05:36 +0000 (17:05 +0000)
committerx2003bruneau <x2003bruneau@839d8a87-29fc-0310-9880-83ba4fa771e5>
Sat, 29 Jul 2006 17:05:36 +0000 (17:05 +0000)
Need tests, please :)

git-svn-id: svn+ssh://murphy/home/svn/platal/trunk@696 839d8a87-29fc-0310-9880-83ba4fa771e5

htdocs/images/icons/package_add.gif [new file with mode: 0644]
htdocs/images/icons/package_delete.gif [new file with mode: 0644]
htdocs/images/icons/thumb_down.gif [new file with mode: 0644]
htdocs/images/icons/thumb_up.gif [new file with mode: 0644]
modules/events.php
templates/admin/evenements.tpl

diff --git a/htdocs/images/icons/package_add.gif b/htdocs/images/icons/package_add.gif
new file mode 100644 (file)
index 0000000..51753bc
Binary files /dev/null and b/htdocs/images/icons/package_add.gif differ
diff --git a/htdocs/images/icons/package_delete.gif b/htdocs/images/icons/package_delete.gif
new file mode 100644 (file)
index 0000000..9e96b17
Binary files /dev/null and b/htdocs/images/icons/package_delete.gif differ
diff --git a/htdocs/images/icons/thumb_down.gif b/htdocs/images/icons/thumb_down.gif
new file mode 100644 (file)
index 0000000..d2e54b0
Binary files /dev/null and b/htdocs/images/icons/thumb_down.gif differ
diff --git a/htdocs/images/icons/thumb_up.gif b/htdocs/images/icons/thumb_up.gif
new file mode 100644 (file)
index 0000000..8ff3f1f
Binary files /dev/null and b/htdocs/images/icons/thumb_up.gif differ
index 5fa4150..8c13572 100644 (file)
@@ -247,67 +247,82 @@ class EventsModule extends PLModule
         }
     }
 
-    function handler_admin_events(&$page, $arch) {
+    function handler_admin_events(&$page, $action = 'list', $eid = null) 
+    {
         $page->changeTpl('admin/evenements.tpl');
         $page->assign('xorg_title','Polytechnique.org - Administration - Evenements');
-        
-        $arch = $arch == 'archives';
-        $evid = Post::i('evt_id');
-        $page->assign('arch', $arch);
-        
-        switch(Post::v('action')) {
-            case "Proposer":
-                XDB::execute('UPDATE evenements SET titre={?}, texte={?}, peremption={?}, promo_min={?}, promo_max={?} WHERE id = {?}', 
-                        Post::v('titre'), Post::v('texte'), Post::v('peremption'), Post::v('promo_min'), Post::v('promo_max'), $evid);
-                break;
-        
-            case "Valider":
-                XDB::execute('UPDATE evenements SET creation_date = creation_date, flags = CONCAT(flags,",valide") WHERE id = {?}', $evid);
-                break;
-        
-            case "Invalider":
-                XDB::execute('UPDATE evenements SET creation_date = creation_date, flags = REPLACE(flags,"valide", "") WHERE id = {?}', $evid);
-                break;
-        
-            case "Supprimer":
-                XDB::execute('DELETE from evenements WHERE id = {?}', $evid);
-                break;
-        
-            case "Archiver":
-                XDB::execute('UPDATE evenements SET creation_date = creation_date, flags = CONCAT(flags,",archive") WHERE id = {?}', $evid);
-                break;
-        
-            case "Desarchiver":
-                XDB::execute('UPDATE evenements SET creation_date = creation_date, flags = REPLACE(flags,"archive","") WHERE id = {?}', $evid);
-                break;
-        
-            case "Editer":
-                $res = XDB::query('SELECT titre, texte, peremption, promo_min, promo_max FROM evenements WHERE id={?}', $evid);
-                list($titre, $texte, $peremption, $promo_min, $promo_max) = $res->fetchOneRow();
-                $page->assign('mode', 'edit');
-                $page->assign('titre',$titre);
-                $page->assign('texte',$texte);
-                $page->assign('promo_min',$promo_min);
-                $page->assign('promo_max',$promo_max);
-                $page->assign('peremption',$peremption);
-        
-                $select = "";
-                for ($i = 1 ; $i < 30 ; $i++) {
-                    $p_stamp=date("Ymd",time()+3600*24*$i);
-                    $year=substr($p_stamp,0,4);
-                    $month=substr($p_stamp,4,2);
-                    $day=substr($p_stamp,6,2);
-        
-                    $select .= "<option value=\"$p_stamp\"" . (($p_stamp == strtr($peremption, array("-" => ""))) ? " selected" : "")."> $day / $month / $year</option>\n";
-                }
-                $page->assign('select',$select);
-        
-                break;
+        $page->register_modifier('hde', 'html_entity_decode');
+
+        $arch = $action == 'archives';
+        $page->assign('action', $action);
+        if (Post::v('action') == "Proposer") {
+            XDB::execute('UPDATE evenements
+                             SET titre={?}, texte={?}, peremption={?}, promo_min={?}, promo_max={?}
+                           WHERE id = {?}', 
+                          Post::v('titre'), Post::v('texte'), Post::v('peremption'),
+                          Post::v('promo_min'), Post::v('promo_max'), Post::i('evt_id'));
         }
-        
-        if ($action != "Editer") {
-        
-            $sql = "SELECT  e.id, e.titre, e.texte,
+
+        if ($action == 'edit') {
+            $res = XDB::query('SELECT titre, texte, peremption, promo_min, promo_max
+                                 FROM evenements
+                                WHERE id={?}', $eid);
+            list($titre, $texte, $peremption, $promo_min, $promo_max) = $res->fetchOneRow();
+            $page->assign('titre',$titre);
+            $page->assign('texte',$texte);
+            $page->assign('promo_min',$promo_min);
+            $page->assign('promo_max',$promo_max);
+            $page->assign('peremption',$peremption);
+
+            $select = "";
+            for ($i = 1 ; $i < 30 ; $i++) {
+                $p_stamp=date("Ymd",time()+3600*24*$i);
+                $year=substr($p_stamp,0,4);
+                $month=substr($p_stamp,4,2);
+                $day=substr($p_stamp,6,2);
+
+                $select .= "<option value=\"$p_stamp\"" 
+                        . (($p_stamp == strtr($peremption, array("-" => ""))) ? " selected" : "")
+                        . "> $day / $month / $year</option>\n";
+            }
+            $page->assign('select',$select);
+        } else {
+            switch ($action) {
+                case 'delete':
+                    XDB::execute('DELETE from evenements
+                                   WHERE id = {?}', $eid);
+                    break;
+
+                case "archive":
+                    XDB::execute('UPDATE evenements
+                                     SET creation_date = creation_date, flags = CONCAT(flags,",archive")
+                                   WHERE id = {?}', $eid);
+                    break;
+
+                case "unarchive":
+                    XDB::execute('UPDATE evenements
+                                     SET creation_date = creation_date, flags = REPLACE(flags,"archive","")
+                                   WHERE id = {?}', $eid);
+                    $action = 'archives';
+                    $arch   = true;
+                    break;
+
+                case "valid":
+                    XDB::execute('UPDATE evenements
+                                     SET creation_date = creation_date, flags = CONCAT(flags,",valide")
+                                   WHERE id = {?}', $eid);
+                    break;
+
+                case "unvalid":
+                    XDB::execute('UPDATE evenements
+                                     SET creation_date = creation_date, flags = REPLACE(flags,"valide", "")
+                                   WHERE id = {?}', $eid);
+                    break;
+            }
+
+            $pid = ($eid && $action == 'preview') ? $eid : -1;
+            $sql = "SELECT  e.id, e.titre, e.texte,e.id = $pid AS preview,
                             DATE_FORMAT(e.creation_date,'%d/%m/%Y %T') AS creation_date,
                             DATE_FORMAT(e.peremption,'%d/%m/%Y') AS peremption,
                             e.promo_min, e.promo_max,
@@ -318,9 +333,10 @@ class EventsModule extends PLModule
                 INNER JOIN  auth_user_md5 AS u ON(e.user_id = u.user_id)
                 INNER JOIN  aliases AS a ON (u.user_id = a.id AND a.type='a_vie')
                      WHERE  ".($arch ? "" : "!")."FIND_IN_SET('archive',e.flags)
-                  ORDER BY  FIND_IN_SET('valide',e.flags), peremption";
+                  ORDER BY  FIND_IN_SET('valide',e.flags), e.peremption DESC";
             $page->assign('evs', XDB::iterator($sql));
         }
+        $page->assign('arch', $arch);
     }
 
     function handler_admin_nl(&$page, $new = false) {
index ed9f8f5..f3269df 100644 (file)
 
 <h1>
   Gestion des événements :
-  {if $arch eq 'archives'}
-  [&nbsp;<a href="admin/events/actu">Actualités</a>&nbsp;|&nbsp;Archives&nbsp;]
+  [&nbsp;
+  {if $arch || $action eq 'edit'}
+  <a href="admin/events">Actualités</a>
   {else}
-  [&nbsp;Actualités&nbsp;|&nbsp;<a href="admin/events/archives">Archives</a>&nbsp;]
+  Actualités
   {/if}
+  &nbsp;|&nbsp;
+  {if !$arch || $action eq 'edit'}
+  <a href="admin/events/archives">Archives</a>
+  {else}
+  Archives
+  {/if}
+  &nbsp;]
 </h1>
 
-{if $mode}
+{if $action eq 'edit'}
 
 {include file="include/form.evenement.tpl"}
 
 {else}
 
-{iterate from=$evs item=ev}
 <table class="bicol">
   <tr>
-    <th>
-      Posté par <a href="profile/{$ev.forlife}" class='popup2'>{$ev.prenom} {$ev.nom} (X{$ev.promo})</a>
-    </th>
+    <th>Titre</th>
+    <th>Péremption</th>
+    <th></th>
   </tr>
-  <tr class="{if $ev.fvalide}impair{else}pair{/if}">
-    <td>
-      <strong>{$ev.titre}</strong>
+  {iterate from=$evs item=ev}
+  <tr class="{cycle values="impair,pair"}">
+    <td>{if !$ev.fvalide}<strong>{/if}
+      <a href="admin/events/preview/{$ev.id}">{$ev.titre}</a><br />
+      {if !$ev.fvalide}</strong>{/if}
+      <small>
+        Proposée par <a href="profile/{$ev.forlife}" class='popup2'>{$ev.prenom} {$ev.nom} (X{$ev.promo})</a>
+      </small>
     </td>
-  </tr>
-  <tr class="{if $ev.fvalide}impair{else}pair{/if}">
-    <td>
-      {tidy}{$ev.texte|nl2br}{/tidy}
+    <td class="right">{if !$ev.fvalide}<strong>{/if}{$ev.peremption}{if !$ev.fvalide}</strong>{/if}</td>
+    <td class="right" style="width: 42px">
+      {if $arch}
+        <a href="admin/events/unarchive/{$ev.id}">{icon name=package_delete title="Désarchiver"}</a><br />
+      {else}
+        {if $ev.fvalide}
+        <a href="admin/events/unvalid/{$ev.id}">{icon name=thumb_down title="Invalider"}</a>
+        <a href="admin/events/archive/{$ev.id}">{icon name=package_add title="Archiver"}</a><br />
+        {else}
+        <a href="admin/events/valid/{$ev.id}">{icon name=thumb_up title="Valider"}</a><br />
+        {/if}
+      {/if}
+      <a href="admin/events/edit/{$ev.id}">{icon name=page_edit title="Editer"}</a>
+      <a href="admin/events/delete/{$ev.id}">{icon name=delete title="Supprimer"}</a>
     </td>
   </tr>
-  <tr class="{if $ev.fvalide}impair{else}pair{/if}">
-    <td>
-      Création : {$ev.creation_date}<br />
-      Péremption : {$ev.peremption}<br />
-      Promos : {$ev.promo_min} - {$ev.promo_max}<br />
+  {if $ev.preview}
+  <tr class="{cycle value="impair,pair"}">
+    <td colspan="3">
+      {$ev.texte|hde|nl2br}
     </td>
   </tr>
-  <tr>
-    <th>
-      <form action="admin/events/{if $ev.arch}archives{else}actu{/if}" method="post">
-        <div>
-          <input type="hidden" name="evt_id" value="{$ev.id}" />
-          {if $ev.farch}
-          <input type="submit" name="action" value="Desarchiver" />
-          {else}
-          <input type="submit" name="action" value="Editer" />
-          {if $ev.fvalide}
-          <input type="submit" name="action" value="Invalider" />
-          <input type="submit" name="action" value="Archiver" />
-          {else}
-          <input type="submit" name="action" value="Valider" />
-          {/if}
-          <input type="submit" name="action" value="Supprimer" />
-          {/if}
-        </div>
-      </form>
-    </th>
-  </tr>
+  {/if}
+  {/iterate}
 </table>
 
-<br />
-{/iterate}
-
 {/if}