bugs 268 et 391 : cache les articles evenements deja lus, et fleche pour remonter...
authorx2001corpet <x2001corpet@839d8a87-29fc-0310-9880-83ba4fa771e5>
Sun, 4 Jun 2006 22:48:23 +0000 (22:48 +0000)
committerx2001corpet <x2001corpet@839d8a87-29fc-0310-9880-83ba4fa771e5>
Sun, 4 Jun 2006 22:48:23 +0000 (22:48 +0000)
git-svn-id: svn+ssh://murphy/home/svn/platal/trunk@293 839d8a87-29fc-0310-9880-83ba4fa771e5

ChangeLog
htdocs/login.php
templates/login.tpl
upgrade/0.9.10/01_events.sql [new file with mode: 0644]

index 2c18ae7..b194ce7 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -11,7 +11,9 @@ Bug/Wish :
     * Admin :
         - #408: Admin can change sex of users without root intervention.    -Car
 
-    * Core :
+    * Events :
+        - #268: Hide read events.                                           -Car
+        - #391: Go back to top link at end of each event.                   -Car
         - #411: Count chars in events proposals to make them smaller.       -Car
         
     * Profile :
index d67ee86..dccab73 100644 (file)
@@ -72,6 +72,15 @@ if (Session::has('core_rss_hash')) {
     $page->assign('xorg_rss', Array("title" => "Polytechnique.org :: News", "href" => "/rss.php/".Session::get('forlife')."/".Session::get('core_rss_hash').".xml"));
 }
 
+// cache les evenements lus et raffiche les evenements a relire
+if (Env::has('lu')){
+  $globals->xdb->execute('DELETE FROM evenements_vus AS ev INNER JOIN evenements AS e ON e.id = ev.evt_id WHERE peremption < NOW)');
+  $globals->xdb->execute('REPLACE INTO evenements_vus VALUES({?},{?})', Env::get('lu'), Session::getInt('uid'));
+}
+if (Env::has('nonlu')){
+  $globals->xdb->execute('DELETE FROM evenements_vus WHERE evt_id = {?} AND user_id = {?}', Env::get('nonlu'), Session::getInt('uid'));
+}
+
 // affichage des evenements
 // annonces promos triées par présence d'une limite sur les promos
 // puis par dates croissantes d'expiration
@@ -80,11 +89,22 @@ $sql = "SELECT  e.id,e.titre,e.texte,a.user_id,a.nom,a.prenom,a.promo,l.alias AS
           FROM  evenements    AS e
     INNER JOIN  auth_user_md5 AS a ON e.user_id=a.user_id
     INNER JOIN  aliases       AS l ON ( a.user_id=l.id AND l.type='a_vie' )
+    LEFT JOIN   evenements_vus AS ev ON (e.id = ev.evt_id AND ev.user_id = {?})
+         WHERE  FIND_IN_SET(e.flags, 'valide') AND peremption >= NOW()
+               AND (e.promo_min = 0 || e.promo_min <= {?})
+               AND (e.promo_max = 0 || e.promo_max >= {?})
+               AND ev.user_id IS NULL
+      ORDER BY  (e.promo_min != 0 AND  e.promo_max != 0) DESC,  e.peremption";
+$page->assign('evenement', $globals->xdb->iterator($sql, Session::getInt('uid'), $promo, $promo));
+
+$sql = "SELECT  e.id,e.titre, ev.user_id IS NULL AS nonlu
+          FROM  evenements    AS e
+    LEFT JOIN   evenements_vus AS ev ON (e.id = ev.evt_id AND ev.user_id = {?})
          WHERE  FIND_IN_SET(e.flags, 'valide') AND peremption >= NOW()
                AND (e.promo_min = 0 || e.promo_min <= {?})
                AND (e.promo_max = 0 || e.promo_max >= {?})
       ORDER BY  (e.promo_min != 0 AND  e.promo_max != 0) DESC,  e.peremption";
-$page->assign('evenement', $globals->xdb->iterator($sql, $promo, $promo));
+$page->assign('evenement_summary', $globals->xdb->iterator($sql, Session::getInt('uid'), $promo, $promo));
 
 $page->assign('refe',$_SERVER['PHP_SELF']);
 
index a8e1b50..8dfc684 100644 (file)
@@ -82,6 +82,8 @@ Bienvenue {$smarty.session.prenom}
   <table class="bicol">
     <tr>
       <th>
+        <a href="?lu={$ev.id}{if $previd}#newsid{$previd}{/if}" style="display:block;float:right"><img alt="Cacher" title="Cacher cet article" src="{rel}/images/retirer.gif"/></a>
+        {assign var="previd" value=$ev.id}
         <a id="newsid{$ev.id}"></a>
         {tidy}
           {$ev.titre|nl2br}
@@ -94,7 +96,7 @@ Bienvenue {$smarty.session.prenom}
           {$ev.texte|smarty:nodefaults|nl2br}
         {/tidy}
         <br />
-        <p class="smaller">Annonce proposée par
+        <p class="smaller"><a href="#" style="display:block;float:right"><img alt="Sommaire" title="Remonter tout en haut" src="{rel}/images/up.png"/></a>Annonce proposée par
         <a href="{rel}/fiche.php?user={$ev.forlife}" class="popup2">
           {$ev.prenom} {$ev.nom} X{$ev.promo}
         </a>
@@ -104,6 +106,30 @@ Bienvenue {$smarty.session.prenom}
   </table>
   {/iterate}
 
+  <br/>
+  
+  <table class="bicol">
+    <tr>
+      <th>
+        Sommaire des informations événementielles
+      </th>
+    </tr>
+    {iterate item=ev from=$evenement_summary}
+    <tr class="{cycle values="impair,pair"}">
+      <td class="half">
+        &bull;
+        <a href="{if !$ev.nonlu}?nonlu={$ev.id}{/if}#newsid{$ev.id}">
+        {if $ev.nonlu}<strong>{/if}
+        {tidy}
+          {$ev.titre|nl2br}
+        {/tidy}
+        {if $ev.nonlu}</strong>{/if}
+        </a>
+      </td>
+    </tr>
+    {/iterate}
+  </table>
+
   <p class="smaller">
   Nota Bene : les informations présentées ici n'engagent que leurs auteurs
   respectifs et sont publiées à leur initiative. L'association Polytechnique.org
diff --git a/upgrade/0.9.10/01_events.sql b/upgrade/0.9.10/01_events.sql
new file mode 100644 (file)
index 0000000..4de7eb0
--- /dev/null
@@ -0,0 +1,5 @@
+CREATE TABLE `evenements_vus` (
+  `evt_id` smallint(4) unsigned NOT NULL default '0',
+  `user_id` smallint(4) unsigned NOT NULL default '0',
+  PRIMARY KEY  (`user_id`,`evt_id`)
+);