Ignore:
Timestamp:
Aug 16, 2010, 11:40:48 PM (11 years ago)
Author:
roux
Message:

liste alpha et recherche améliorée pour les députés et liste pagée pour citoyens

Location:
cpc/trunk/project/apps/frontend
Files:
1 added
6 edited

Legend:

Unmodified
Added
Removed
  • cpc/trunk/project/apps/frontend/config/routing.yml

    r1210 r1257  
    338338  param: {module: citoyen, action: activation}
    339339list_citoyens:
    340   url: /citoyens
     340  url: /citoyens/:order
    341341  param: {module: citoyen, action: index}
    342342photo_citoyen:
  • cpc/trunk/project/apps/frontend/modules/citoyen/actions/actions.class.php

    r961 r1257  
    1818  public function executeIndex(sfWebRequest $request)
    1919  {
    20     $this->citoyens_list = Doctrine::getTable('Citoyen')
     20    $this->order = $request->getParameter('order');
     21    if (!$this->order || !(preg_match('/^(alpha|comm|date|last)$/', $this->order)))
     22      $this->order = 'date';
     23    $datecom = "";
     24    if ($this->order === "last")
     25      $datecom = ", max(co.created_at) as date";
     26    $query = Doctrine::getTable('Citoyen')
    2127      ->createQuery('c')
     28      ->select('c.*, count(distinct(co.id)) as nb_comment'.$datecom)
     29      ->leftJoin('c.Commentaires co')
    2230      ->where('c.is_active = ?', true)
    23       ->orderBy('c.created_at DESC')
    24       ->execute();
    25     $response = $this->getResponse();
    26     $response->setTitle('Liste des citoyens inscrits');
     31      ->groupBy('c.id');
     32    if ($this->order === "date") {
     33      $this->title = 'Les derniers citoyens inscrits';
     34      $query->orderBy('c.created_at DESC');
     35    } else if ($this->order === "comm") {
     36      $this->title = 'Les citoyens ayant le plus commenté';
     37      $query->orderBy('nb_comment DESC');
     38    } else if ($this->order === "alpha") {
     39      $this->title = 'Les citoyens inscrits';
     40      $query->orderBy('c.login');
     41    } else if ($this->order === "last") {
     42      $this->title = 'Les derniers citoyens ayant commenté';
     43      $query->orderBy('date desc');
     44    }
     45    $this->pager = Doctrine::getTable('Citoyen')->getPager($request, $query);
     46    $this->citoyens = $query->execute();
     47    $this->getResponse()->setTitle($this->title." sur NosDéputés.fr");
     48    $this->comments = Doctrine_Query::create()
     49      ->select('count(distinct(citoyen_id)) as auteurs, count(distinct(id)) as comments')
     50      ->from('Commentaire')
     51      ->where('is_public = 1')
     52      ->fetchOne();
    2753  }
    2854 
  • cpc/trunk/project/apps/frontend/modules/citoyen/templates/indexSuccess.php

    r885 r1257  
    1 <h1>Liste des Citoyens</h1>
    2 <?php if (!$sf_user->isAuthenticated()) { ?>
    3 <p><strong><a href="<?php echo url_for('citoyen/new') ?>">S'inscrire</a></strong></p>
    4 <?php } ?>
    5 <p>
    6  <?php foreach ($citoyens_list as $citoyen): ?>
    7 <a href="<?php echo url_for('@citoyen?slug='.$citoyen->getSlug()); ?>">
    8 <?php echo $citoyen->getLogin(); ?></a>
    9 <?php if($citoyen->getActivite()) { echo '('.$citoyen->getActivite().')'; } ?>
    10 <br/>
    11 <?php endforeach; ?>
    12 </p>
     1<?php use_helper('Text') ?>
     2<h1><?php echo $title; ?></h1>
     3<?php $total = $pager->getNbResults();
     4      $ct = 0;
     5      $types = array("date"  => "date d'inscription",
     6                     "alpha" => "ordre alphabétique",
     7                     "comm"  => "commentaires postés",
     8                     "last"  => "derniers commentaires"); ?>
     9<div class="list_choix">Ordonner par&nbsp;:
     10<?php foreach($types as $type => $texte) {
     11  if (!($type === $order)) echo link_to($texte, '@list_citoyens?order='.$type);
     12  else echo '<strong>'.$texte.'</strong>';
     13  $ct++;
     14  if ($ct != count($types)) echo ', ';
     15} ?>
     16</div>
     17<p><?php echo $total; ?> citoyens se sont inscrits sur NosDéputés.fr depuis l'ouverture du site le 14 septembre 2009. <?php echo $comments['auteurs']; ?> d'entre eux ont laissé un total de <?php echo link_to($comments['comments'].'&nbsp;commentaires', '@commentaires'); ?>.<?php if (!$sf_user->isAuthenticated()) echo '<br/>Vous n\'avez pas encore de compte&nbsp;? Cliquez <a href="'.url_for('@inscription').'">ici pour vous inscrire</a> ou <a href="'.url_for('@signin').'">vous connecter</a>.'; ?></p>
     18
     19<div class="liste">
     20<?php if ($pager->haveToPaginate()) include_partial('parlementaire/paginate', array('pager'=>$pager, 'link'=>'@list_citoyens?order='.$order.'&')); ?>
     21<div class="list_table"><table><tr>
     22<?php $ct = 0;
     23  foreach($pager->getResults() as $citoyen) {
     24    $ct++; ?>
     25    <td><a href="<?php echo url_for('@citoyen?slug='.$citoyen->slug); ?>"><div class="list_cit">
     26      <div class="list_img_left">
     27      <?php if (!$citoyen->photo)
     28        echo ''.image_tag('xneth/avatar_citoyen.png', array('alt' => 'Avatar par défaut', 'height' => '50px'));
     29      else echo '<img src="'.url_for('@photo_citoyen?slug='.$citoyen->slug).'" alt="avatar de '.$citoyen->login.'" height="50px"/>'; ?>
     30      </div><div class="left">
     31      <span class="list_nom"><?php echo $citoyen->login; ?></span>
     32      <?php if (!empty($citoyen->activite)) echo '<br/><i>'.truncate_text(html_entity_decode(strip_tags($citoyen->activite), ENT_NOQUOTES, "UTF-8"), 40).' </i>'; if ($citoyen->naissance) echo ' ('.myTools::getAge($citoyen->naissance).'&nbsp;ans)'; ?>
     33      </div>
     34      <div class="list_details">
     35        <?php echo preg_replace('/membre/', 'inscrit', $citoyen->role).'&nbsp;&nbsp;<br/>le '.myTools::displayVeryShortDate($citoyen->created_at);
     36        if ($citoyen->nb_comment > 0) {
     37          echo '<br/><span class="list_com">'.$citoyen->nb_comment.'&nbsp;commentaire';
     38          if ($citoyen->nb_comment > 1) echo 's';
     39          echo '</span>';
     40        } else echo '<br/>'; ?>
     41      </div>
     42      <?php if (!empty($citoyen->url_site)) echo '<div class="list_link">'.truncate_text(html_entity_decode(strip_tags($citoyen->url_site), ENT_NOQUOTES, "UTF-8"), 40).'</div>'; ?>
     43    </div></a></td>
     44    <?php if ($ct % 3 == 0 && $ct != $total) echo '</tr><tr>';
     45  } ?>
     46  </td><?php while ($ct % 3 != 0) { $ct++; echo '<td/>'; } ?></tr></table>
     47</div>
     48<?php if ($pager->haveToPaginate()) include_partial('parlementaire/paginate', array('pager'=>$pager, 'link'=>'@list_citoyens?order='.$order.'&')); ?>
     49</div>
  • cpc/trunk/project/apps/frontend/modules/parlementaire/actions/actions.class.php

    r1255 r1257  
    146146  public function executeList(sfWebRequest $request) {
    147147    $this->search = strip_tags($request->getParameter('search'));
    148     if (!$this->search) $this->search = 'A';
     148    if (!$this->search) $this->search = 'all';
     149    if (preg_match('/^[A-Z]$/', $this->search))
     150      return $this->redirect('@list_parlementaires#'.$this->search);
    149151    $query = Doctrine::getTable('Parlementaire')->createQuery('p');
    150     if (preg_match('/^[A-Z]$/', $this->search)) {
    151       $query->where('p.nom_de_famille LIKE ?' , $this->search.'%');
    152       if (preg_match('/^[E]$/', $this->search))
    153         $query->orWhere('p.nom_de_famille LIKE ?' , 'É%');
    154     } else $query->where('p.nom LIKE ?' , '%'.$this->search.'%');
     152    if ($this->search != 'all') {
     153      $searchs = explode(' ', preg_replace('/\W/', ' ', $this->search));
     154      $ns = count($searchs);
     155      for ($i=0; $i<$ns; $i++)
     156        $searchs[$i] = '%'.$searchs[$i].'%';
     157      $likes = 'p.nom LIKE ?';
     158      for ($i=1; $i<$ns; $i++)
     159        $likes .= ' AND p.nom LIKE ?';
     160      $query->where($likes, $searchs);
     161    }
    155162    $query->orderBy('p.nom_de_famille ASC');
    156     $this->pager = Doctrine::getTable('Parlementaire')->getPager($request, $query);
    157     if (!preg_match('/^[A-ZÉ]$/', $this->search)) {
    158       $nb = $this->pager->getNbResults();
     163    if ($this->search == 'all') {
     164      $this->parlementaires = array();
     165      foreach ($query->execute() as $depute) {
     166        $lettre = $depute->nom_de_famille[0];
     167        if (isset($this->parlementaires[$lettre])) $this->parlementaires[$lettre][] = $depute;
     168        else $this->parlementaires[$lettre] = array($depute);
     169      }
     170    } else $this->parlementaires = $query->execute();
     171    if (!preg_match('/^([A-ZÉ]|all)$/', $this->search)) {
     172      $nb = count($this->parlementaires);
    159173      if ($nb == 1) {
    160         $p = $this->pager->getResults();
    161         return $this->redirect('parlementaire/show?slug='.$p[0]->slug);
     174        return $this->redirect('@parlementaire?slug='.$this->parlementaires[0]->slug);
    162175      }
    163176      if ($nb == 0) {
     
    174187        ->select('count(distinct p.id) as ct')
    175188        ->where('p.fin_mandat IS NULL')
     189        ->orWhere('p.fin_mandat < p.debut_mandat')
    176190        ->fetchOne();
    177191      $this->actifs = $ctquery['ct'];
     
    248262      ->orderBy('s.date DESC, s.moment ASC');
    249263    $this->pagerSeances = Doctrine::getTable('Seance')->getPager($request, $query2);
    250     $this->seances = Doctrine::getTable('Seance')->createQuery('s')
    251       ->leftJoin('s.Organisme o')
    252       ->where('o.slug = ?', $orga)
    253       ->orderBy('s.date DESC, s.moment ASC')
    254       ->execute();
    255264  }
    256265
  • cpc/trunk/project/apps/frontend/modules/parlementaire/templates/listSuccess.php

    r964 r1257  
    1 <?php if (!preg_match('/^[A-ZÉ]$/', $search)) { ?>
    2 <h1>Recherche de députés</h1>
    3 <?php $sf_response->setTitle('Recherche de députés "'.$search.'"'); ?>
    4 <p><?php $nResults = $pager->getNbResults(); echo $nResults; ?> résultat<?php if ($nResults > 1) echo 's'; ?> pour <em>"<?php echo $search; ?>"</em></p>
     1<?php if (!preg_match('/^([A-ZÉ]|all)$/', $search)) { ?>
     2  <h1>Recherche de députés</h1>
     3  <?php $sf_response->setTitle('Recherche de députés "'.$search.'"'); ?>
     4  <p><?php $nResults = count($parlementaires); echo $nResults; ?> parlementaire<?php if ($nResults > 1) echo 's'; ?> trouvé<?php if ($nResults > 1) echo 's'; ?> pour <em>"<?php echo $search; ?>"</em></p>
    55<?php } else { ?>
    6 <h1>La liste de tous les députés par ordre alphabétique</h1>
    7 <?php $sf_response->setTitle('La liste de tous les députés'); ?>
    8 <p>Les <?php echo $total; ?> députés de la législature (<?php echo $actifs; ?> en activité)&nbsp;:</p>
     6  <h1>La liste de tous les députés par ordre alphabétique</h1>
     7  <?php $sf_response->setTitle('La liste de tous les députés'); ?>
     8  <p>Les <?php echo $total; ?> députés de la législature (<?php echo $actifs; ?> en cours de mandat)&nbsp;:</p>
    99<?php } ?>
    10 <div class="liste_deputes">
    11 <?php if (preg_match('/^[A-ZÉ]$/', $search)) { ?>
    12 <div class="par_session">
    13 <?php foreach(range('A','Z') as $i) {
    14   if ($i != $search) echo link_to($i ,'@list_parlementaires_alpha?search='.$i);
    15   else echo $i;
    16   echo '&nbsp;&nbsp;';
     10
     11<div class="liste">
     12<?php if (isset($similars) && $similars) {
     13  echo '<p>Peut être, cherchiez vous : </p><ul>';
     14  foreach($similars as $s) {
     15    echo '<li>'.link_to($s['nom'], 'parlementaire/show?slug='.$s['slug']).'</li>';
     16  }
     17  echo '</ul>'; 
     18} else {
     19  if ($search === "all") {
     20    $listlettres = array_keys($parlementaires);
     21    foreach($listlettres as $i)
     22      include_partial('parlementaire/table', array('lettre' => $i, 'deputes' => $parlementaires[$i], 'listlettres' => $listlettres));
     23  } else
     24    include_partial('parlementaire/table', array('deputes' => $parlementaires));
    1725} ?>
    1826</div>
    19 <?php } ?>
    20 <?php if (isset($similars) && $similars) {
    21    echo '<p>Peut être, cherchiez vous : </p><ul>';
    22    foreach($similars as $s) {
    23      echo '<li>'.link_to($s['nom'], 'parlementaire/show?slug='.$s['slug']).'</li>';
    24    }
    25    echo '</ul>';
    26  }?>
    27 <ul>
    28 <?php foreach($pager->getResults() as $parlementaire) : ?>
    29 <li><?php echo link_to($parlementaire->nom, 'parlementaire/show?slug='.$parlementaire->slug); ?> (<?php echo $parlementaire->getStatut(1); ?>, <?php echo link_to($parlementaire->nom_circo, '@list_parlementaires_circo?search='.$parlementaire->nom_circo); ?>)</li>
    30 <?php endforeach ; ?>
    31 </ul>
    32 <?php include_partial('parlementaire/paginate', array('pager' => $pager, 'link' => '@list_parlementaires?search='.$search.'&')); ?>
    33 </div>
     27
  • cpc/trunk/project/apps/frontend/templates/layout.php

    r1208 r1257  
    7171          <div id="item2"><a <?php if ($menu_depute) echo 'class="selected" '; ?>href="<?php echo url_for('@list_parlementaires'); ?>"><span class="gris">Les</span> <span class="vert">D</span><span class="gris">&eacute;put&eacute;s</span></a></div>
    7272          <div id="item3"><a <?php if ($menu_dossier) echo 'class="selected" '; ?>href="<?php echo url_for('@sections?order=date')?>"><span class="gris">Les</span> <span class="orange">D</span><span class="gris">ossiers</span></a></div>
    73           <div id="item4"><a <?php if ($menu_citoyen) echo 'class="selected" '; ?>href="<?php echo url_for('@commentaires')?>"><span class="gris">Les</span> <span class="bleu">C</span><span class="gris">itoyens</span></a></div>
     73          <div id="item4"><a <?php if ($menu_citoyen) echo 'class="selected" '; ?>href="<?php echo url_for('@list_citoyens?order=date')?>"><span class="gris">Les</span> <span class="bleu">C</span><span class="gris">itoyens</span></a></div>
    7474          <div id="item5"><a href="<?php echo url_for('@faq')?>"><span class="gris">FAQ</span></a></div>
    7575        </div>
     
    117117              <div class="elements_sous_menu">
    118118          <ul>
    119             <li><a href="<?php echo url_for('@list_citoyens'); ?>">Tous les citoyens</a> <strong>|</strong></li>
     119            <li><a href="<?php echo url_for('@list_citoyens?order=date'); ?>">Tous les citoyens</a> <strong>|</strong></li>
    120120            <li><a href="<?php echo url_for('@commentaires'); ?>">Les derniers commentaires</a> <strong>|</strong></li>
    121121            <li><a href="<?php echo url_for('@compterendu_list'); ?>">Les comptes rendus citoyens</a></li>
Note: See TracChangeset for help on using the changeset viewer.