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

Last change on this file since 1567 was 1567, checked in by popeye, 11 years ago

Mise en gras des titres

File size: 10.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 = explode("T", $date); 
25  $date = explode("-", $date[0]);
26  if($interval == 'mois') {
27    $date = mktime(0, 0, 0, $date[1] + 1, $date[2], $date[0]); 
28    #int mktime  ("H","m","s","M","j","Y", -1)
29  }
30  else { $date = mktime(0, 0, 0, $date[1], $date[2] - 1, $date[0]); }
31  $date = date("Y-m-d", $date).'T00%3A00%3A00Z';
32  return $date;
33}
34
35$recherche = preg_replace('/"/', '&quot;', $query);
36?>
37<script type="text/javascript">
38function urlParams(params) {
39        param = new Object();
40        if(jQuery.isArray(params)) {
41    jQuery.each(params, function() {
42      val = this.split('=');
43      param[val[0]] = val[1];
44    });
45  }
46  else {
47    val = params.split('=');
48    param[val[0]] = val[1];
49  }
50        return param;
51}
52
53periode = new Array();
54date_href = new Array();
55nb_li = 0;
56bh = 0;
57nh = 0;
58if(location.search.substring(1)) { parametre = urlParams(location.search.substring(1).split('&')); }
59else { parametre = new Object(); }
60
61$(document).ready(function() {
62  $(".date li").each(function() {
63    if($(this).height() > bh) { bh = $(this).height(); }
64    date_li = $(this).find('a').attr("title").split(':');
65    date_href[nb_li] = $(this).find('a').attr("href");
66    $(this).find("#hover_graph").attr("onclick", "document.location.replace('http://"+location.host+date_href[nb_li]+"')");
67    $(this).find("#hover_graph").css("cursor", "pointer");
68    periode[nb_li] = date_li[0];
69    nb_li++;
70  });
71  if(bh <= 30) {
72    $(".date li").each(function() {
73      nh = $(this).height() * 2; $(this).height(nh);
74    });
75    bh = bh * 2;
76  }
77  if(bh <= 170) { bh = bh + 30; $(".date").height(bh); }
78  $(".date").fadeIn(300); /* à revoir */
79        $(function() {
80                $("#slider_date_graph").slider({
81                        range: true,
82                        min: 0,
83                        max: nb_li-1,
84                        values: [0, nb_li],
85                        slide: function(event, ui) {
86                          from = date_href[ui.values[0]].split('?');
87                          from = urlParams(from[1].split('&'));
88                          from = from["date"].split('%2C');
89                          to = date_href[ui.values[1]].split('?');
90                          to = urlParams(to[1].split('&'));
91                          to = to["date"].split('%2C');
92                          parametre["date"] = from[0]+'%2C'+to[0];
93                         
94                          lien = "?date="+parametre.date;
95                          if(parametre.parlementaire != undefined) { lien = lien+"&parlementaire="+parametre.parlementaire; }
96                          if(parametre.object_name != undefined) { lien = lien+"&object_name="+parametre.object_name; }
97                          if(parametre.tag != undefined) { lien = lien+"&tag="+parametre.tag; }
98                          /* date parlementaire object_name tag */
99                          if(ui.values[0] == ui.values[1]) {
100                            texte_periode = '<a href="'+lien+'" style="text-decoration: underline;"><strong>'+periode[ui.values[0]]+'</strong></a>';
101                          }
102                          else {
103                            texte_periode = '<a href="'+lien+'" style="text-decoration: underline;"><strong>entre '+periode[ui.values[0]]+' et '+ periode[ui.values[1]]+'</strong></a>';
104                          }
105                         
106                          $("#periode").text("");
107                                $("#periode").append(texte_periode);
108                        }
109                });
110                $("#periode").text('entre ' + periode[$("#slider_date_graph").slider("values", 0)] + ' et ' + periode[$("#slider_date_graph").slider("values", 1)]);
111        });
112});
113</script>
114
115<div class="solr">
116  <div class="searchbox">
117  <form>
118  <p>
119    <input name="search" value="<?php echo $recherche; ?>" />
120    <input type="submit" value="Rechercher"/>
121  </p>
122  </form>
123</div>
124<?php 
125$start = explode("T", $start);
126if($end == 'NOW') { $end = date("Y-m-d").'T00%3A00%3A00Z'; }
127$end =  explode("T", $end);
128?>
129<h1><?php
130switch ($vue) {
131  case "jour":
132    echo 'Résultats pour "'.$recherche.'" le '.myTools::displayShortDate($start[0]);
133    $graph = 0;
134    break;
135  case "mois":
136    echo 'Résultats pour "'.$recherche.'" en '.myTools::displayMoisAnnee($start[0]);
137    $graph = 1;
138    break;
139  case "par_jour":
140    echo 'Résultats pour "'.$recherche.'" entre le '.myTools::displayShortDate($start[0]).' et le '.myTools::displayShortDate($end[0]);
141    $graph = 1;
142    break;
143  case "par_mois":
144    echo 'Résultats pour "'.$recherche.'" entre '.myTools::displayMoisAnnee($start[0]).' et '.myTools::displayMoisAnnee($end[0]);
145    $graph = 1;
146    break;
147  default:
148    echo 'Recherche de "'.$recherche;
149    $graph = 1;
150}
151?></h1>
152<?php 
153if($graph) { 
154  $width_date = 900;
155  $left = 2;
156  $espacement = 4;
157  $width = (($width_date - $left) / count($fdates['values'])) - $espacement;
158?>
159<div class="cont_date_graph">
160  <span>Affiner par date :</span> <span id="periode"></span>
161  <div class="date" style="width: <?php echo $width_date ?>px;">
162  <ul>
163    <?php $i = 0; foreach($fdates['values'] as $date => $nb) :
164    $i++;
165    $height = round($nb['pc']*100/($fdates['max']) * 2);
166    $padding = 200-$height; ?>
167    <li<?php echo ' style="list-style-image: none; width: '.$width.'px; height: '.$height.'px; left: '.$left.'px;">'; 
168    $left = $left + $width; if($i < (count($fdates['values']))) { $left = $left + $espacement; }
169    $newargs = $selected;
170   
171    $title_date = explode("T", $date);
172   
173    $newargs['date'] = $date.'%2C'.$date;
174   
175    if(($vue == 'jour') or ($vue == 'par_jour') or ($vue == 'mois')){ 
176      $title_date = myTools::displayShortDate($title_date[0]).' : '.$nb['nb'].' résultats';
177    }
178    if($vue == 'par_mois') { 
179      $title_date = ucfirst(myTools::displayMoisAnnee($title_date[0])).' : '.$nb['nb'].' résultats';
180    }
181    if($vue == 'par_mois') { 
182      $newargs['date'] = $date.'%2C'.addToDate($date, 'mois');
183    }
184   
185    echo '<div id="hover_graph" title="'.$title_date.'" style="width: '.$width.'px; height: '.$padding.'px;     bottom: '.$height.'px;"></div><span id="text_graph">'.link_search($nb['nb'], $query, $newargs, array('title' => $title_date)).'</span>'; 
186   
187    # echo ' '.$nb['nb'].' résultats ('; printf('%02d', $nb['pc']*100/($fdates['max'])); echo '%)';
188    ?>
189    </li>
190    <?php endforeach; ?>
191  </ul>
192  </div>
193  <div id="slider_date_graph"></div>
194</div>
195<?php } ?>
196<div class="nb_results">
197  <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> -
198  <span class="tri">
199  <?php 
200  $newargs = $selected;
201  if ($sort) {
202    if (isset($newargs['sort'])) { $newargs['sort'] = 0; }
203    echo link_search('trier par pertinence', $query, $newargs, 0); 
204  } 
205  else {
206    $newargs['sort'] = 1;
207    echo link_search('trier par date', $query, $newargs, 0); 
208  }
209  if(isset($newargs['date'])) {
210    $args_sans_date = $newargs;
211    unset($args_sans_date['date']);
212    echo ' - '.link_search('résultats sans contrainte de temps', $query, $args_sans_date, 0);
213  }
214  ?>
215  </span></h2>
216</div>
217<div class="options">
218  <div class="mail">
219  <h3>Alerte email</h3>
220  <?php 
221  $args = '';
222  foreach(array_keys($selected) as $k) {
223    if (!is_array($selected[$k])) 
224      continue;
225    if ($args)
226      $args .= '&';
227    $args.= "$k=".implode(',', array_keys($selected[$k]));
228  }
229  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));
230
231global $facetName2HumanName;
232$facetName2HumanName = array(
233                             'Parlementaire' => 'Filtrer par Parlementaire',
234                             'Types' => 'Filtrer par type de document',
235                             'Tags' => 'Filtrer par tags',
236                             'TexteLoi' => 'Document parlementaires',
237                             'QuestionEcrite' => 'Questions ecrites',
238                             'Tags' => 'Filtrer par tags'
239);
240function facet2Human($id) {
241  global $facetName2HumanName;
242  if (!isset($facetName2HumanName[$id])) {
243    return $id;
244  }
245  return $facetName2HumanName[$id];
246}
247  ?>
248  </div>
249  <div class="facets">
250  <h3>Affiner la recherche</h3>
251  <?php foreach(array_keys($facet) as $k) { if (isset($facet[$k]['values']) && count($facet[$k]['values'])) : ?>
252    <div class="<?php echo $k; ?>">
253       <p><strong><?php echo facet2Human($facet[$k]['name']); ?></strong></p>
254    <ul>
255    <?php foreach($facet[$k]['values'] as $value => $nb) : if ($nb) :
256      $is_selected = isset($selected[$facet[$k]['facet_field']][$facet[$k]['prefix'].$value]) && 
257                  $selected[$facet[$k]['facet_field']][$facet[$k]['prefix'].$value];
258    ?>
259      <li<?php if ($is_selected) echo ' class="selected"'; ?>><?php 
260      $newargs = $selected;
261      if ($is_selected) 
262        unset($newargs[$facet[$k]['facet_field']][$facet[$k]['prefix'].$value]);
263      else                           
264        $newargs[$facet[$k]['facet_field']][$facet[$k]['prefix'].$value] = 1;
265      echo link_search(facet2Human($value), $query, $newargs, 0); ?>&nbsp;(<?php echo $nb; ?>)
266      </li>
267    <?php endif; endforeach; ?>
268    </ul>
269    </div>
270  <?php endif; } ?>
271  </div>
272</div>
273<div class="results">
274  <?php foreach ($results['docs'] as $record) : ?>
275  <div class="item">
276  <h4><a href="<?php echo $record['link']; ?>"><?php echo $record['titre']; ?></a></h4>
277  <?php if ($record['photo']) { ?>
278  <p class="photo"><a href="<?php echo $record['link']; ?>" rel="nofollow"><?php echo $record['photo']; ?></a></p>
279  <?php } ?>
280  <p class="intervenant"><a href="<?php echo $record['link']; ?>" rel="nofollow"><?php echo $record['personne']; ?></a></p>
281  <p class="content"><?php echo $record['highlighting']; ?></p>
282  <p class="more"><a href="<?php echo $record['link']; ?>">Consulter</a></p>
283  </div>
284  <div class="record">
285  </div>
286  <?php endforeach; ?>
287</div>
288<div class="pager">
289  <div class="next">
290  <?php
291  if ($results['end']-1 != $results['numFound']) {
292    $newargs = $selected;
293    $newargs['page'][$results['page'] + 1] = 1;
294    echo link_search('page suivante', $query, $newargs, 0); 
295  }
296  ?>
297  </div>
298  <div class="last">
299  <?php
300  $newargs = $selected;
301  $newargs['page'][$results['page'] - 1] = 1;
302  if ($results['page'] > 1) {
303    if (isset($newargs['page'][1]))
304    unset($newargs['page'][1]);
305    echo link_search('page précédente', $query, $newargs, 0); 
306  }
307  ?>
308  </div>
309</div>
310</div>
Note: See TracBrowser for help on using the repository browser.