From b68fd149b9a1b46cf8f449ab3f1ec92863849048 Mon Sep 17 00:00:00 2001 From: "Pierre Habouzit (MadCoder" Date: Thu, 28 Apr 2005 11:45:08 +0000 Subject: [PATCH] better navigation in the member list git-archimport-id: opensource@polytechnique.org--2005/platal--mainline--0.9--patch-603 --- htdocs.net/css/xnet.css | 4 ++-- htdocs.net/groupe/annuaire.php | 35 +++++++++++++++++++++++++++++++---- templates/xnet/groupe/annuaire.tpl | 16 ++++++++-------- 3 files changed, 41 insertions(+), 14 deletions(-) diff --git a/htdocs.net/css/xnet.css b/htdocs.net/css/xnet.css index eb361eb..5cd8c06 100644 --- a/htdocs.net/css/xnet.css +++ b/htdocs.net/css/xnet.css @@ -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; } diff --git a/htdocs.net/groupe/annuaire.php b/htdocs.net/groupe/annuaire.php index 0330b97..2a0a36f 100644 --- a/htdocs.net/groupe/annuaire.php +++ b/htdocs.net/groupe/annuaire.php @@ -1,27 +1,48 @@ 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(); diff --git a/templates/xnet/groupe/annuaire.tpl b/templates/xnet/groupe/annuaire.tpl index 6ce73bd..45f0d50 100644 --- a/templates/xnet/groupe/annuaire.tpl +++ b/templates/xnet/groupe/annuaire.tpl @@ -38,19 +38,13 @@ Fonctionnalit {/if} -

-Choisis une initiale pour restreindre la liste aux membres dont le nom commence par cette lettre. Tu -peux aussi afficher toute la liste. -

-

+[tout] {foreach from=$alphabet item=c} -[{$c}] +[{$c}] {/foreach}

- - @@ -86,4 +80,10 @@ peux aussi afficher toute la liste. {/iterate}
prénom et nom
+

+{foreach from=$links item=ofs key=txt} +{$txt} +{/foreach} +

+ {* vim:set et sw=2 sts=2 sws=2: *} -- 2.1.4