source: cpc/trunk/project/apps/frontend/modules/solr/templates/searchSuccess.php @ 1636

Last change on this file since 1636 was 1636, checked in by teymour, 11 years ago

Avec une petite image

File size: 12.0 KB
Line 
1<?php 
2$sf_response->setTitle("Recherche de $query");  $style = "xneth";
3
4function url_search($query, $args) 
5{
6  $extra = '';
7  $url = "solr/search?query=".$query;
8  foreach($args as $key => $value) {
9    if (is_array($value)) {
10      if (count($value)) { $extra .= '&'.$key.'='.implode(',', array_keys($value)); }
11    }   
12    else { $extra .= '&'.$key.'='.$value; }
13  }
14  return $url.$extra;
15}
16
17function link_search($text, $query, $args, $options) 
18{
19  if($options) { return link_to($text, url_search($query, $args), $options); }
20  else { return link_to($text, url_search($query, $args)); }
21}
22
23function addToDate($date, $interval) {
24  $date = preg_replace('/\-/', '', $date);
25  $annee = substr($date, 0, 4);
26  $mois = substr($date, 4, 2);
27  $jour = substr($date, 6, 2);
28  if($interval == 'mois') {
29    $date = mktime(0, 0, 0, $mois + 1, $jour, $annee); 
30    #int mktime  ("H","m","s","M","j","Y", -1)
31  }
32  else { $date = mktime(0, 0, 0, $mois, $jour - 1, $annee); }
33  $date = date("Ymd", $date);
34  return $date;
35}
36
37$recherche = preg_replace('/"/', '&quot;', $query);
38
39switch ($vue) {
40  case "jour":
41    $periode_text = 'le '.myTools::displayShortDate($start);
42    $intitule_resultats = 'Résultats pour "<em>'.$recherche.'</em>" '.$periode_text;
43    $graph = 0;
44    break;
45  case "mois":
46    $periode_text = 'en '.myTools::displayMoisAnnee($start);
47    $intitule_resultats = 'Résultats pour "<em>'.$recherche.'</em>" ';
48    $graph = 1;
49    break;
50  case "par_jour":
51    $periode_text = 'entre le '.myTools::displayShortDate($start).' et le '.myTools::displayShortDate($end);
52    $intitule_resultats = 'Résultats pour "<em>'.$recherche.'</em>" ';
53    $graph = 1;
54    break;
55  case "par_mois":
56    $periode_text = 'entre '.myTools::displayMoisAnnee($start).' et '.myTools::displayMoisAnnee($end);
57    $intitule_resultats = 'Résultats pour "<em>'.$recherche.'</em>" ';
58    $graph = 1;
59    break;
60  default:
61    $periode_text = "supprimer les critère de dates";
62    $intitule_resultats = 'Recherche de "<em>'.$recherche.'</em>';
63    $graph = 1;
64}
65
66//////////////////// DEBUT SANS AJAX /////////////////////
67//////////////////////////////////////////////////////////
68
69if (!$ajax) :
70?>
71<script type="text/javascript">
72<!--
73function urlParams(params) {
74        param = new Object();
75        if(jQuery.isArray(params)) {
76    jQuery.each(params, function() {
77      val = this.split('=');
78      param[val[0]] = val[1];
79    });
80  }
81  else {
82    val = params.split('=');
83    param[val[0]] = val[1];
84  }
85        return param;
86}
87
88periode = new Array();
89date_href = new Array();
90nb_li = 0;
91bh = 0;
92nh = 0;
93if(location.search.substring(1)) { parametre = urlParams(location.search.substring(1).split('&')); }
94else { parametre = new Object(); }
95
96timer4update = null;
97function realAjaxUpdate(lien) {
98  lien += '&ajax=1';
99  $('#results_container').load(lien, function() {$('#results_container').fadeTo(100,1);});
100}
101function ajaxUpdateFor(lien) {
102  if (timer4update) {
103    clearTimeout(timer4update);
104    timer4update = null;
105  }
106  $('#results_container').css('opacity', 0.5);
107  timer4update = setTimeout('realAjaxUpdate("'+lien+'")', 2500);
108}
109
110function constructLien(date) {
111  lien = document.location+'';
112  lien = lien.replace(/\??date=[^&]+/, '');
113  lien = lien.replace(/#.*/, '');
114  if (!lien.match(/\?/))
115    lien += '?';
116  else
117    lien += '&';
118  lien += 'date='+date;
119  return lien;
120}
121
122$(document).ready(function() {
123  $(".date li").each(function() {
124    if($(this).height() > bh) { bh = $(this).height(); }
125    date_li = $(this).attr("title").split('--');
126    date_href[nb_li] = $(this).find('a').attr("href");
127    $(this).find(".hover_graph").attr("onclick", "document.location.replace('http://"+location.host+date_href[nb_li]+"')");
128    $(this).find(".hover_graph").css("cursor", "pointer");
129    periode[nb_li] = date_li[0];
130    nb_li++;
131  });
132  if(bh <= 30) {
133    $(".date li").each(function() {
134      nh = $(this).height() * 2; $(this).height(nh);
135    });
136    bh = bh * 2;
137  }
138  if(bh <= 170) { bh = bh + 30; $(".date").height(bh); }
139  $(".date").fadeIn(300); /* à revoir */
140        $(function() {
141                $("#slider_date_graph").slider({
142                        range: true,
143                        min: 0,
144                        max: nb_li-1,
145                        values: [0, nb_li],
146                        slide: function(event, ui) {
147                          from = date_href[ui.values[0]].split('?');
148                          from = urlParams(from[1].split('&'));
149                          from = from["date"].split('%2C');
150                          to = date_href[ui.values[1]].split('?');
151                          to = urlParams(to[1].split('&'));
152                          to = to["date"].split('%2C');
153                          parametre["date"] = from[0]+'%2C'+to[0];
154
155                          lien = constructLien(parametre['date']);
156                          document.location = '#date='+parametre['date'];
157
158                          if(ui.values[0] == ui.values[1]) {
159                            texte_periode = '<a href="'+lien+'" style="text-decoration: underline;"><strong>'+periode[ui.values[0]].toLowerCase()+'<`\/strong><\/a>';
160                          }
161                          else {
162                            texte_periode = '<a href="'+lien+'" style="text-decoration: underline;"><strong>entre '+periode[ui.values[0]].toLowerCase()+' et '+ periode[ui.values[1]].toLowerCase()+'<\/strong><\/a>';
163                          }
164                          ajaxUpdateFor(lien);
165                          $("#periode").text("");
166                                $("#periode").append(texte_periode);
167                        }
168                });
169                $("#periode").text('entre ' + periode[$("#slider_date_graph").slider("values", 0)].toLowerCase() + ' et ' + periode[$("#slider_date_graph").slider("values", 1)].toLowerCase());
170        });
171});
172//-->
173</script>
174
175<div class="solr">
176  <?php include_partial('solr/searchbox'); ?>
177<h1><?php echo $intitule_resultats; ?></h1>
178<?php 
179if($graph) { 
180  $width_date = 900;
181  $left = 2;
182  $espacement = 4;
183  $width = (($width_date - $left) / count($fdates['values'])) - $espacement;
184?>
185<div class="cont_date_graph">
186   <span>Affiner par date :</span> <span id="periode"><?php echo $periode_text; ?></span>
187  <div class="date" style="width: <?php echo $width_date ?>px;">
188  <ul>
189    <?php $i = 0; foreach($fdates['values'] as $date => $nb) :
190    $i++;
191    $height = round($nb['pc']*100/($fdates['max']) * 2);
192    $padding = 200-$height; 
193    $left = $left + $width; if($i < (count($fdates['values']))) { $left = $left + $espacement; }
194    $newargs = $selected;
195   
196    $newargs['date'] = $date.'%2C'.$date;
197   
198    if(($vue == 'jour') or ($vue == 'par_jour') or ($vue == 'mois')){ 
199      $title_date = myTools::displayShortDate($date).' -- '.$nb['nb'].' résultats';
200    }
201    if($vue == 'par_mois') { 
202      $title_date = ucfirst(myTools::displayMoisAnnee($date)).' -- '.$nb['nb'].' résultats';
203    }
204    if($vue == 'par_mois') { 
205      $newargs['date'] = $date.'%2C'.addToDate($date, 'mois');
206    }
207   
208    echo '<li title="'.$title_date.'" class="jstitle" style="list-style-image: none; width: '.$width.'px; height: '.$height.'px; left: '.$left.'px;">'; 
209    echo '<div class="hover_graph" style="width: '.$width.'px; height: '.$padding.'px;  bottom: '.$height.'px;"></div><span class="text_graph">'.link_search($nb['nb'], $query, $newargs, array()).'</span>'; 
210   
211    # echo ' '.$nb['nb'].' résultats ('; printf('%02d', $nb['pc']*100/($fdates['max'])); echo '%)';
212    ?>
213    </li>
214    <?php endforeach; ?>
215  </ul>
216  </div>
217  <div id="slider_date_graph"></div>
218</div>
219<?php } ?>
220<div id="results_container">
221<?php 
222endif; 
223///////////////////// FIN SANS AJAX /////////////////////
224?>
225<div class="nb_results">
226  <h2>Résultats <?php echo $results['start']+1; ?> à <?php echo min($results['end'],$results['numFound']); ?> sur <?php echo $results['numFound']; ?> <strong>triés par <?php echo $sort_type; ?></strong>&nbsp;&mdash;
227  <span class="tri">
228  <?php 
229  $newargs = $selected;
230  if ($sort) {
231    if (isset($newargs['sort'])) { $newargs['sort'] = 0; }
232    echo link_search('trier par pertinence', $query, $newargs, 0); 
233  } 
234  else {
235    $newargs['sort'] = 1;
236    echo link_search('trier par date', $query, $newargs, 0); 
237  }
238  ?>
239  </span></h2>
240</div>
241<div class="options">
242  <div class="mail">
243  <h3 class="aligncenter">S'abonner aux résultats<br/>de cette recherche</h3>
244<?php $args = '';
245  foreach(array_keys($selected) as $k) {
246    if (!is_array($selected[$k]) || $k == 'date')
247      continue;
248    if ($args)
249      $args .= '&';
250    $args.= "$k=".implode(',', array_keys($selected[$k]));
251  } ?>
252<table width=100% style="text-align: center"><tr>
253       <td><a href="<?php echo url_for('alerte/create?filter='.urlencode($args).'&query='.urlencode($query)); ?>"><?php echo image_tag('xneth/email.png', 'alt="Email"'); ?></a><br/><a href="<?php echo url_for('alerte/create?filter='.urlencode($args).'&query='.urlencode($query)); ?>">par email</a></td>
254       <td><a href="<?php $newargs = $selected; $newargs['format']['rss'] = 'rss'; echo url_for(url_search($query, $newargs)); ?>"><?php echo image_tag('xneth/rss_obliq.png', 'alt="Flux rss"'); ?></a><br/><a href="<?php echo url_for(url_search($query, $newargs)); ?>">par RSS</a></td>
255</tr></table>
256<?php
257global $facetName2HumanName;
258$facetName2HumanName = array(
259                             'Parlementaires' => 'Filtrer par député',
260                             'Parlementaire' => 'Députés',
261                             'Types' => 'Filtrer par type de résultat',
262                             'Tags' => 'Filtrer par mot-clé',
263                             'Texteloi' => 'Documents parlementaires',
264                             'NonObjectPage' => 'Départements',
265                             'QuestionEcrite' => 'Questions écrites',
266                             'Tags' => 'Filtrer par tags',
267                             'Intervention' => 'Interventions',
268                             'Amendement' => 'Amendements',
269                             'Commentaire' => 'Commentaires'
270);
271function facet2Human($id, $facet = "") {
272  global $facetName2HumanName;
273  if (!isset($facetName2HumanName[$id])) {
274    if ($facet === "Parlementaires")
275      return ucwords($id);
276    return $id;
277  }
278  return $facetName2HumanName[$id];
279}
280  ?>
281  </div>
282  <div class="facets">
283  <h3 class="aligncenter">Affiner la recherche</h3>
284  <?php 
285  if(isset($newargs['date'])) {
286    $args_sans_date = $newargs;
287    unset($args_sans_date['date']);
288    echo '<p><strong>'.link_search('Réinitialiser les dates', $query, $args_sans_date, 0).'</strong></ul>';
289  }
290 
291  foreach(array_keys($facet) as $k) { if (isset($facet[$k]['values']) && count($facet[$k]['values'])) : ?>
292    <div class="<?php echo $k; ?>">
293       <p><strong><?php echo facet2Human($facet[$k]['name']); ?></strong></p>
294    <ul>
295    <?php foreach($facet[$k]['values'] as $value => $nb) : if ($nb) :
296      $is_selected = isset($selected[$facet[$k]['facet_field']][$facet[$k]['prefix'].$value]) && 
297                  $selected[$facet[$k]['facet_field']][$facet[$k]['prefix'].$value];
298    ?>
299      <li<?php if ($is_selected) echo ' class="selected"'; ?>><?php 
300      $newargs = $selected;
301      if ($is_selected) 
302        unset($newargs[$facet[$k]['facet_field']][$facet[$k]['prefix'].$value]);
303      else                           
304        $newargs[$facet[$k]['facet_field']][$facet[$k]['prefix'].$value] = 1;
305      echo link_search(facet2Human($value, $facet[$k]['name']), $query, $newargs, 0); ?>&nbsp;(<?php echo $nb; ?>)
306      </li>
307    <?php endif; endforeach; ?>
308    </ul>
309    </div>
310  <?php endif; } ?>
311  </div>
312</div>
313<div class="results">
314  <?php foreach ($results['docs'] as $record) : ?>
315  <div class="item">
316  <h4><a href="<?php echo $record['link']; ?>"><?php echo $record['titre']; ?></a></h4>
317  <?php if ($record['photo']) { ?>
318  <p class="photo"><a href="<?php echo $record['link']; ?>" rel="nofollow"><?php echo $record['photo']; ?></a></p>
319  <?php } ?>
320  <p class="intervenant"><a href="<?php echo $record['link']; ?>" rel="nofollow"><?php echo $record['personne']; ?></a></p>
321  <p class="content"><?php echo $record['highlighting']; ?></p>
322  <p class="more"><a href="<?php echo $record['link']; ?>">Consulter</a></p>
323  </div>
324  <div class="record">
325  </div>
326  <?php endforeach; ?>
327</div>
328<div class="pager">
329  <span class="last">
330  <?php
331  $newargs = $selected;
332  $newargs['page'][$results['page'] - 1] = 1;
333  if ($results['page'] > 1) {
334    if (isset($newargs['page'][1]))
335    unset($newargs['page'][1]);
336    echo link_search('<img src="/images/xneth/left.png" alt="fleche gauche"/> page précédente', $query, $newargs, 0); 
337  }
338  ?>
339  </span>
340  <span class="next">
341  <?php
342  if ($results['end']-1 != $results['numFound']) {
343    $newargs = $selected;
344    $newargs['page'][$results['page'] + 1] = 1;
345    echo link_search('page suivante <img src="/images/xneth/right.png" alt="fleche droite"/>', $query, $newargs, 0); 
346  }
347  ?>
348  </span>
349</div>
350</div>
351<?php if (!$ajax) : ?>
352</div>
353<?php endif; ?>
Note: See TracBrowser for help on using the repository browser.