Changeset 1488


Ignore:
Timestamp:
Sep 29, 2010, 1:36:09 AM (10 years ago)
Author:
teymour
Message:

Ajout d'une liste de députés si pas de résultat de recherche
+refactorisation des liens pour la recherchre

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

Legend:

Unmodified
Added
Removed
  • cpc/trunk/project/apps/frontend/modules/parlementaire/actions/actions.class.php

    r1485 r1488  
    156156
    157157  public function executeList(sfWebRequest $request) {
    158     $this->search = strip_tags($request->getParameter('search'));
    159     if (!$this->search) $this->search = 'all';
    160     if (preg_match('/^[A-Z]$/', $this->search))
    161       return $this->redirect('@list_parlementaires#'.$this->search);
    162158    $query = Doctrine::getTable('Parlementaire')->createQuery('p');
    163     if ($this->search != 'all') {
    164       $searchs = explode(' ', preg_replace('/\W/', ' ', $this->search));
    165       $ns = count($searchs);
    166       for ($i=0; $i<$ns; $i++)
    167         $searchs[$i] = '%'.$searchs[$i].'%';
    168       $likes = 'p.nom LIKE ?';
    169       for ($i=1; $i<$ns; $i++)
    170         $likes .= ' AND p.nom LIKE ?';
    171       $query->where($likes, $searchs);
    172     }
    173159    $query->orderBy('p.nom_de_famille ASC');
    174     if ($this->search == 'all') {
    175       $this->parlementaires = array();
    176       foreach ($query->execute() as $depute) {
    177         $lettre = $depute->nom_de_famille[0];
    178         if (isset($this->parlementaires[$lettre])) $this->parlementaires[$lettre][] = $depute;
    179         else $this->parlementaires[$lettre] = array($depute);
    180       }
    181     } else $this->parlementaires = $query->execute();
    182     if (!preg_match('/^([A-ZÉ]|all)$/', $this->search)) {
    183       $nb = count($this->parlementaires);
    184       if ($nb == 1) {
    185         return $this->redirect('@parlementaire?slug='.$this->parlementaires[0]->slug);
    186       }
    187       if ($nb == 0) {
    188         $this->similars = Doctrine::getTable('Parlementaire')->similarTo($this->search, null, 1);
    189       }
    190     } else {
    191       $ctquery = Doctrine_Query::create()
    192         ->from('Parlementaire p')
    193         ->select('count(distinct p.id) as ct')
    194         ->fetchOne();
    195       $this->total = $ctquery['ct'];
    196       $ctquery = Doctrine_Query::create()
    197         ->from('Parlementaire p')
    198         ->select('count(distinct p.id) as ct')
    199         ->where('p.fin_mandat IS NULL')
    200         ->orWhere('p.fin_mandat < p.debut_mandat')
    201         ->fetchOne();
    202       $this->actifs = $ctquery['ct'];
    203     }
     160    $this->parlementaires = array();
     161    foreach ($query->execute() as $depute) {
     162      $lettre = $depute->nom_de_famille[0];
     163      if (isset($this->parlementaires[$lettre])) $this->parlementaires[$lettre][] = $depute;
     164      else $this->parlementaires[$lettre] = array($depute);
     165    }
     166    $ctquery = Doctrine_Query::create()
     167      ->from('Parlementaire p')
     168      ->select('count(distinct p.id) as ct')
     169      ->fetchOne();
     170    $this->total = $ctquery['ct'];
     171    $ctquery = Doctrine_Query::create()
     172      ->from('Parlementaire p')
     173      ->select('count(distinct p.id) as ct')
     174      ->where('p.fin_mandat IS NULL')
     175      ->orWhere('p.fin_mandat < p.debut_mandat')
     176      ->fetchOne();
     177    $this->actifs = $ctquery['ct'];
    204178  }
    205179
  • cpc/trunk/project/apps/frontend/modules/parlementaire/actions/components.class.php

    r1478 r1488  
    1919    return ;
    2020  }
     21  public function executeSearch() {
     22    $this->search = $this->query;
     23
     24    $query = Doctrine::getTable('Parlementaire')->createQuery('p');
     25
     26    $searchs = explode(' ', preg_replace('/\W/', ' ', $this->search));
     27    $ns = count($searchs);
     28    for ($i=0; $i<$ns; $i++)
     29      $searchs[$i] = '%'.$searchs[$i].'%';
     30    $likes = 'p.nom LIKE ?';
     31    for ($i=1; $i<$ns; $i++)
     32      $likes .= ' AND p.nom LIKE ?';
     33    $query->where($likes, $searchs);
     34    $query->orderBy('p.nom_de_famille ASC');
     35   
     36    $this->parlementaires = $query->execute();
     37   
     38    $nb = count($this->parlementaires);
     39    if ($nb == 0) {
     40      $this->similars = Doctrine::getTable('Parlementaire')->similarTo($this->search, null, 1);
     41    }
     42  }
    2143}
  • cpc/trunk/project/apps/frontend/modules/parlementaire/templates/listSuccess.php

    r1333 r1488  
    1 <?php if (!preg_match('/^([A-ZÉ]|all)$/', $search)) { ?>
    2   <h1 class="list_inter">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>
    5 <?php } else { ?>
    6   <h1 class="list_inter">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>
    9 <?php } ?>
     1<div class="liste"><?php
     2$listlettres = array_keys($parlementaires);
     3foreach($listlettres as $i) {
     4  echo '<div class="list_choix" id="'.$i.'">';
     5  foreach($listlettres as $l) {
     6    if ($l != $i) echo link_to($l , '@list_parlementaires#'.$l);
     7    else echo '<big><strong>'.$l.'</strong></big>';
     8    echo '&nbsp;&nbsp;';
     9  }
     10  echo '</div><div class="list_table">';
     11  include_partial('parlementaire/table', array('deputes' => $parlementaires[$i], 'list' => 1));
     12  echo '</div><div class="suivant"><a href="#">Haut de page</a></div>';
     13}
    1014
    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       echo '<div class="list_choix" id="'.$i.'">';
    23       foreach($listlettres as $l) {
    24         if ($l != $i) echo link_to($l , '@list_parlementaires#'.$l);
    25         else echo '<big><strong>'.$l.'</strong></big>';
    26         echo '&nbsp;&nbsp;';
    27       }
    28       echo '</div><div class="list_table">';
    29       include_partial('parlementaire/table', array('deputes' => $parlementaires[$i], 'list' => 1));
    30       echo '</div><div class="suivant"><a href="#">Haut de page</a></div>';
    31     }
    32   } else {
    33     echo '<div class="list_table">';
    34     include_partial('parlementaire/table', array('deputes' => $parlementaires, 'list' => 1));
    35     echo '</div>';
    36   }
    37 } ?>
     15 ?>
    3816</div>
    3917
  • cpc/trunk/project/apps/frontend/modules/solr/actions/actions.class.php

    r1487 r1488  
    122122      $params['facet.date.end'] = $to;
    123123      $params['facet.date.gap'] = '+1MONTH';
    124       $this->selected['from'][$from] = 1;
    125       $this->selected['to'][$to] = 1;
     124      $this->selected['from'][$from] = $from;
     125      $this->selected['to'][$to] = $to;
    126126    }
    127127    if ($date) {
    128       $this->selected['date'][$date] = 1;
     128      $this->selected['date'][$date] = $date;
    129129      if (!$from) {
    130130        $dates = explode(',', $date);
  • cpc/trunk/project/apps/frontend/modules/solr/templates/noresultsSuccess.php

    r1317 r1488  
    1 Nous n'avons pas trouvé de résultat pout votre recherche
     1<p>Désolé, nous n'avons pas trouvé de résultat pout votre recherche.</p>
     2
     3<?php include_component('parlementaire', 'search', array('query' => $query, 'msg'=>"Peut être recherchiez vous l'un de ces députés :")); ?>
  • cpc/trunk/project/apps/frontend/modules/solr/templates/searchSuccess.php

    r1483 r1488  
    22$sf_response->setTitle("Recherche de $query");  $style = "xneth";
    33
    4 function link_search($text, $query, $args, $options)
     4function url_search($query, $args)
    55{
    66  $extra = '';
     
    1313      $extra .= '&'.$k.'='.$v;
    1414  }
    15   if($options) { return link_to($text, $url.$extra, $options); }
    16   else { return link_to($text, $url.$extra); }
     15  return $url.$extra;
     16}
     17
     18function link_search($text, $query, $args, $options)
     19{
     20  if($options) {
     21    return link_to($text, url_search($query, $args), $options);
     22  }
     23  return link_to($text, url_search($query, $args));
    1724}
    1825
Note: See TracChangeset for help on using the changeset viewer.