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

Last change on this file since 1601 was 1601, checked in by teymour, 10 years ago

Pas de date pour les alertes

File size: 11.2 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  <div class="searchbox">
177  <form action="">
178  <p>
179    <input name="search" value="<?php echo $recherche; ?>" />
180    <input type="submit" value="Rechercher"/>
181  </p>
182  </form>
183</div>
184<h1><?php echo $intitule_resultats; ?></h1>
185<?php 
186if($graph) { 
187  $width_date = 900;
188  $left = 2;
189  $espacement = 4;
190  $width = (($width_date - $left) / count($fdates['values'])) - $espacement;
191?>
192<div class="cont_date_graph">
193   <span>Affiner par date :</span> <span id="periode"><?php echo $periode_text; ?></span>
194  <div class="date" style="width: <?php echo $width_date ?>px;">
195  <ul>
196    <?php $i = 0; foreach($fdates['values'] as $date => $nb) :
197    $i++;
198    $height = round($nb['pc']*100/($fdates['max']) * 2);
199    $padding = 200-$height; 
200    $left = $left + $width; if($i < (count($fdates['values']))) { $left = $left + $espacement; }
201    $newargs = $selected;
202   
203    $newargs['date'] = $date.'%2C'.$date;
204   
205    if(($vue == 'jour') or ($vue == 'par_jour') or ($vue == 'mois')){ 
206      $title_date = myTools::displayShortDate($date).' -- '.$nb['nb'].' résultats';
207    }
208    if($vue == 'par_mois') { 
209      $title_date = ucfirst(myTools::displayMoisAnnee($date)).' -- '.$nb['nb'].' résultats';
210    }
211    if($vue == 'par_mois') { 
212      $newargs['date'] = $date.'%2C'.addToDate($date, 'mois');
213    }
214   
215    echo '<li title="'.$title_date.'" class="jstitle" style="list-style-image: none; width: '.$width.'px; height: '.$height.'px; left: '.$left.'px;">'; 
216    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>'; 
217   
218    # echo ' '.$nb['nb'].' résultats ('; printf('%02d', $nb['pc']*100/($fdates['max'])); echo '%)';
219    ?>
220    </li>
221    <?php endforeach; ?>
222  </ul>
223  </div>
224  <div id="slider_date_graph"></div>
225</div>
226<?php } ?>
227<div id="results_container">
228<?php 
229endif; 
230///////////////////// FIN SANS AJAX /////////////////////
231?>
232<div class="nb_results">
233  <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> -
234  <span class="tri">
235  <?php 
236  $newargs = $selected;
237  if ($sort) {
238    if (isset($newargs['sort'])) { $newargs['sort'] = 0; }
239    echo link_search('trier par pertinence', $query, $newargs, 0); 
240  } 
241  else {
242    $newargs['sort'] = 1;
243    echo link_search('trier par date', $query, $newargs, 0); 
244  }
245  ?>
246  </span></h2>
247</div>
248<div class="options">
249  <div class="mail">
250  <h3>Alerte email</h3>
251  <?php 
252  $args = '';
253  foreach(array_keys($selected) as $k) {
254    if (!is_array($selected[$k]) || $k == 'date') 
255      continue;
256    if ($args)
257      $args .= '&';
258    $args.= "$k=".implode(',', array_keys($selected[$k]));
259  }
260  echo link_to('Recevoir un email lorsque de nouveaux résultats seront publiés pour cette recherche', 'alerte/create?filter='.urlencode($args).'&query='.urlencode($query));
261
262global $facetName2HumanName;
263$facetName2HumanName = array(
264                             'Parlementaires' => 'Filtrer par député',
265                             'Parlementaire' => 'Députés',
266                             'Types' => 'Filtrer par type de document',
267                             'Tags' => 'Filtrer par tags',
268                             'Texteloi' => 'Documents parlementaires',
269                             'QuestionEcrite' => 'Questions écrites',
270                             'Tags' => 'Filtrer par tags'
271);
272function facet2Human($id) {
273  global $facetName2HumanName;
274  if (!isset($facetName2HumanName[$id])) {
275    return $id;
276  }
277  return $facetName2HumanName[$id];
278}
279  ?>
280  </div>
281  <div class="facets">
282  <h3>Affiner la recherche</h3>
283  <?php 
284  if(isset($newargs['date'])) {
285    $args_sans_date = $newargs;
286    unset($args_sans_date['date']);
287    echo '<p><strong>Filtrer par dates</strong></p><ul><li class="selected">'.link_search($periode_text, $query, $args_sans_date, 0).'</li></ul>';
288  }
289 
290  foreach(array_keys($facet) as $k) { if (isset($facet[$k]['values']) && count($facet[$k]['values'])) : ?>
291    <div class="<?php echo $k; ?>">
292       <p><strong><?php echo facet2Human($facet[$k]['name']); ?></strong></p>
293    <ul>
294    <?php foreach($facet[$k]['values'] as $value => $nb) : if ($nb) :
295      $is_selected = isset($selected[$facet[$k]['facet_field']][$facet[$k]['prefix'].$value]) && 
296                  $selected[$facet[$k]['facet_field']][$facet[$k]['prefix'].$value];
297    ?>
298      <li<?php if ($is_selected) echo ' class="selected"'; ?>><?php 
299      $newargs = $selected;
300      if ($is_selected) 
301        unset($newargs[$facet[$k]['facet_field']][$facet[$k]['prefix'].$value]);
302      else                           
303        $newargs[$facet[$k]['facet_field']][$facet[$k]['prefix'].$value] = 1;
304      echo link_search(facet2Human($value), $query, $newargs, 0); ?>&nbsp;(<?php echo $nb; ?>)
305      </li>
306    <?php endif; endforeach; ?>
307    </ul>
308    </div>
309  <?php endif; } ?>
310  </div>
311</div>
312<div class="results">
313  <?php foreach ($results['docs'] as $record) : ?>
314  <div class="item">
315  <h4><a href="<?php echo $record['link']; ?>"><?php echo $record['titre']; ?></a></h4>
316  <?php if ($record['photo']) { ?>
317  <p class="photo"><a href="<?php echo $record['link']; ?>" rel="nofollow"><?php echo $record['photo']; ?></a></p>
318  <?php } ?>
319  <p class="intervenant"><a href="<?php echo $record['link']; ?>" rel="nofollow"><?php echo $record['personne']; ?></a></p>
320  <p class="content"><?php echo $record['highlighting']; ?></p>
321  <p class="more"><a href="<?php echo $record['link']; ?>">Consulter</a></p>
322  </div>
323  <div class="record">
324  </div>
325  <?php endforeach; ?>
326</div>
327<div class="pager">
328  <div class="next">
329  <?php
330  if ($results['end']-1 != $results['numFound']) {
331    $newargs = $selected;
332    $newargs['page'][$results['page'] + 1] = 1;
333    echo link_search('page suivante', $query, $newargs, 0); 
334  }
335  ?>
336  </div>
337  <div class="last">
338  <?php
339  $newargs = $selected;
340  $newargs['page'][$results['page'] - 1] = 1;
341  if ($results['page'] > 1) {
342    if (isset($newargs['page'][1]))
343    unset($newargs['page'][1]);
344    echo link_search('page précédente', $query, $newargs, 0); 
345  }
346  ?>
347  </div>
348</div>
349</div>
350<?php if (!$ajax) : ?>
351</div>
352<?php endif; ?>
Note: See TracBrowser for help on using the repository browser.