better navigation in the member list
authorPierre Habouzit (MadCoder <pierre.habouzit@m4x.org>
Thu, 28 Apr 2005 11:45:08 +0000 (11:45 +0000)
committerFlorent Bruneau <florent.bruneau@polytechnique.org>
Thu, 26 Jun 2008 21:28:47 +0000 (23:28 +0200)
git-archimport-id: opensource@polytechnique.org--2005/platal--mainline--0.9--patch-603

htdocs.net/css/xnet.css
htdocs.net/groupe/annuaire.php
templates/xnet/groupe/annuaire.tpl

index eb361eb..5cd8c06 100644 (file)
@@ -136,8 +136,8 @@ div.breadcrumb {
     padding: 0.5em 0em;
 }
 
-.erreur { color: red; }
-.error  { color: red; }
+.erreur { color: red !important; }
+.error  { color: red !important; }
 .center { text-align: center; }
 .right  { text-align: right; }
 
index 0330b97..2a0a36f 100644 (file)
@@ -1,27 +1,48 @@
 <?php
 require 'xnet.inc.php';
 
+define('NB_PER_PAGE', 25);
+
 new_group_page('xnet/groupe/annuaire.tpl');
 $page->assign('admin', may_update());
 
 $tri = (Env::get('order') == 'alpha' ? 'promo, nom, prenom' : 'nom, prenom, promo');
 $res = $globals->xdb->iterRow(
-            'SELECT  SUBSTRING(IF(m.origine="X",u.nom,m.nom), 1, 1), COUNT(IF(m.origine="X",u.nom,m.nom))
+            'SELECT  UPPER(SUBSTRING(IF(m.origine="X",u.nom,m.nom), 1, 1)), COUNT(IF(m.origine="X",u.nom,m.nom))
                FROM  groupex.membres AS m
           LEFT JOIN  auth_user_md5   AS u ON ( u.user_id = m.uid )
               WHERE  asso_id = {?}
-           GROUP BY  SUBSTRING(IF(m.origine="X",u.nom,m.nom), 1, 1)', $globals->asso('id'));
+           GROUP BY  UPPER(SUBSTRING(IF(m.origine="X",u.nom,m.nom), 1, 1))', $globals->asso('id'));
 $alphabet = array();
 $nb_tot = 0;
 while (list($char, $nb) = $res->next()) {
     $alphabet[ord($char)] = $char;
     $nb_tot += $nb;
+    if (Env::has('initiale') && $char == strtoupper(Env::get('initiale'))) {
+        $tot = $nb;
+    }
 }
 $page->assign('alphabet', $alphabet);
 $page->assign('nb_tot',   $nb_tot);
 
-$ini = Env::has('initiale') ? 'AND IF(m.origine="X",u.nom,m.nom) LIKE "'.addslashes(Env::get('initiale')).'%"' : '';
+$ofs   = Env::getInt('offset');
+$tot   = Env::get('initiale') ? $tot-1 : $nb_tot-1;
+$nbp   = intval(($tot-1)/NB_PER_PAGE);
+$links = array();
+if ($ofs) {
+    $links['précédent'] = $ofs-1;
+}
+for ($i = 0; $i <= $nbp; $i++) {
+    $links[(string)($i+1)] = $i;
+}
+if ($ofs < $nbp) {
+    $links['suivant'] = $ofs+1;
+}
+if (count($links)>1) {
+    $page->assign('links', $links);
+}
 
+$ini = Env::has('initiale') ? 'AND IF(m.origine="X",u.nom,m.nom) LIKE "'.addslashes(Env::get('initiale')).'%"' : '';
 $ann = $globals->xdb->iterator(
           "SELECT  IF(m.origine='X',IF(u.nom_usage, u.nom_usage, u.nom) ,m.nom) AS nom,
                    IF(m.origine='X',u.prenom,m.prenom) AS prenom,
@@ -34,7 +55,13 @@ $ann = $globals->xdb->iterator(
         LEFT JOIN  auth_user_md5   AS u ON ( u.user_id = m.uid )
         LEFT JOIN  aliases         AS a ON ( a.id = m.uid AND a.type='a_vie' )
             WHERE  m.asso_id = {?} $ini
-         ORDER BY  $tri", $globals->asso('id'));
+         ORDER BY  $tri
+            LIMIT  {?},{?}", $globals->asso('id'), $ofs*NB_PER_PAGE, NB_PER_PAGE);
+
+$nb = $globals->xdb->query("SELECT  FOUND_ROWS()");
+$nb = $nb->fetchOneCell();
+
+
 $page->assign('ann', $ann);
 
 $page->run();
index 6ce73bd..45f0d50 100644 (file)
@@ -38,19 +38,13 @@ Fonctionnalit
 </ul>
 {/if}
 
-<p class="descr">
-Choisis une initiale pour restreindre la liste aux membres dont le nom commence par cette lettre. Tu
-peux aussi <a href='{$smarty.server.PHP_SELF}'>afficher toute la liste</a>.
-</p>
-
 <p class="center">
+[<a href="{$smarty.server.PHP_SELF}" {if !$smarty.request.initiale}class="erreur"{/if}>tout</a>]
 {foreach from=$alphabet item=c}
-[<a href="?initiale={$c}">{$c}</a>]
+[<a href="?initiale={$c}"{if $smarty.request.initiale eq $c} class="erreur"{/if}>{$c}</a>]
 {/foreach}
 </p>
 
-
-
 <table summary="membres du groupe" style="width: 100%">
   <tr>
     <th>prénom et nom</th>
@@ -86,4 +80,10 @@ peux aussi <a href='{$smarty.server.PHP_SELF}'>afficher toute la liste</a>.
   {/iterate}
 </table>
 
+<p class="descr">
+{foreach from=$links item=ofs key=txt}
+<a href="?offset={$ofs}&amp;initiale={$smarty.request.initiale}"{if $smarty.request.offset eq $ofs} class="erreur"{/if}>{$txt}</a>
+{/foreach}
+</p>
+
 {* vim:set et sw=2 sts=2 sws=2: *}