Changeset 1542


Ignore:
Timestamp:
Oct 3, 2010, 1:27:13 AM (10 years ago)
Author:
popeye
Message:

Interface de solr
un pbm de décalage de dates à règler

Location:
cpc/trunk/project/apps/frontend/modules/solr
Files:
2 edited

Legend:

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

    r1535 r1542  
    117117    }
    118118   
    119     $this->vue = 'par mois';
     119    $this->vue = 'par_mois';
    120120   
    121121    if ($date) {
     
    125125     
    126126      $nbjours = round((strtotime($to) - strtotime($from))/(60*60*24)-1);
    127       $jours_max = 90; // Seuil en nb de jours qui détermine l'affichage par jour ou par mois
     127      $jours_max = 90; // Seuil en nb de jours qui détermine l'affichage par jour ou par mois d'une période
    128128     
    129129      $comp_date_from = explode("T", $from);
     
    132132      $comp_date_from = date("Y-m-d", $comp_date_from).'T00:00:00Z';
    133133     
    134       // Affichage d'un jour
    135       if($from == $to) {
    136         $period = 'DAY'; 
    137         $this->vue = 'ce jour';
    138       }
    139       // Affichage d'un mois
    140       if($comp_date_from == $to) {
    141         $period = 'DAY';
    142         $this->vue = 'le mois de';
    143       }
    144134      // Affichage d'une période
    145135      if(($nbjours < $jours_max) and ($from != $to) and ($comp_date_from != $to)) {
    146136        $period = 'DAY';
    147         $to = $to.'+1DAY';
    148         $this->vue = 'par jour';
     137        $this->vue = 'par_jour';
    149138      }
    150139      if($nbjours > $jours_max) {
    151140        $period = 'MONTH';
    152141        $to = $to.'+1MONTH';
    153         $this->vue = 'par mois';
     142        $this->vue = 'par_mois';
     143      }
     144      // Affichage d'un jour
     145      if($from == $to) {
     146        $period = 'DAY';
     147        $this->vue = 'jour';
     148      }
     149      // Affichage d'un mois
     150      if($comp_date_from == $to) {
     151        $period = 'DAY';
     152        $this->vue = 'mois';
    154153      }
    155154     
  • cpc/trunk/project/apps/frontend/modules/solr/templates/searchSuccess.php

    r1520 r1542  
    66  $extra = '';
    77  $url = "solr/search?query=".$query;
    8   foreach($args as $k => $v) {
    9     if (is_array($v)) {
    10       if (count($v))
    11         $extra .= '&'.$k.'='.implode(',', array_keys($v));
    12     }    else
    13       $extra .= '&'.$k.'='.$v;
     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; }
    1413  }
    1514  return $url.$extra;
     
    1817function link_search($text, $query, $args, $options)
    1918{
    20   if($options) {
    21     return link_to($text, url_search($query, $args), $options);
    22   }
    23   return link_to($text, url_search($query, $args));
     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;
    2433}
    2534
    2635$recherche = preg_replace('/"/', '&quot;', $query);
    27 
    28 if($interval == '+1MONTH') { $par = 'mois'; }
    29 else { $par = 'jour'; }
    3036?>
    3137<script type="text/javascript">
     
    3844    });
    3945  }
     46  else {
     47    val = params.split('=');
     48    param[val[0]] = val[1];
     49  }
    4050        return param;
    4151}
     
    5363    if($(this).height() > bh) { bh = $(this).height(); }
    5464    date_li = $(this).find('a').attr("title").split(':');
    55     date_href[nb_li] = $(this).find('a').attr("href"); /* ajouter onclick haut colonnes */
     65    date_href[nb_li] = $(this).find('a').attr("href");
    5666    $(this).find("#hover_graph").attr("onclick", "document.location.replace('http://"+location.host+date_href[nb_li]+"')");
    5767    $(this).find("#hover_graph").css("cursor", "pointer");
     
    6676  }
    6777  if(bh <= 170) { bh = bh + 30; $(".date").height(bh); }
    68   $(".date").fadeIn(300);
     78  $(".date").fadeIn(300); /* à revoir */
    6979        $(function() {
    7080                $("#slider_date_graph").slider({
     
    7787                          from = urlParams(from[1].split('&'));
    7888                          from = from["date"].split('%2C');
    79                           parametre["from"] = from[1];
    8089                          to = date_href[ui.values[1]].split('?');
    8190                          to = urlParams(to[1].split('&'));
    8291                          to = to["date"].split('%2C');
    83                           parametre["to"] = to[1];
     92                          parametre["date"] = from[0]+'%2C'+to[0];
    8493                         
    85                           if(parametre.date != undefined) { delete(parametre.date); }
    86                           lien = "?";
    87                           if(ui.values[0] == ui.values[1]) {
    88                             lien = lien+"date="+parametre.from;
    89                           }
    90                           else {
    91                             if(parametre.from != undefined) { lien = lien+"from="+parametre.from; }
    92                             if(parametre.to != undefined) { lien = lien+"&to="+parametre.to; }
    93                           }
     94                          lien = "?date="+parametre.date;
    9495                          if(parametre.parlementaire != undefined) { lien = lien+"&parlementaire="+parametre.parlementaire; }
    9596                          if(parametre.object_name != undefined) { lien = lien+"&object_name="+parametre.object_name; }
    9697                          if(parametre.tag != undefined) { lien = lien+"&tag="+parametre.tag; }
    97                           /* parlementaire object_name tag date to from */
    98                           <?php if($par == 'mois') { echo "en = 'en';"; } else { echo "en = 'le';"; } ?>
     98                          /* date parlementaire object_name tag */
    9999                          if(ui.values[0] == ui.values[1]) {
    100                             texte_periode = '<a href="'+lien+'">'+en+' '+periode[ui.values[0]]+'</a>';
     100                            texte_periode = '<a href="'+lien+'">'+periode[ui.values[0]]+'</a>';
    101101                          }
    102102                          else {
     
    114114
    115115<div class="solr">
    116 <div class="searchbox">
    117 <form>
     116  <div class="searchbox">
     117  <form>
     118  <p>
    118119    <input name="search" value="<?php echo $recherche; ?>" />
    119120    <input type="submit" value="Rechercher"/>
    120 </form>
     121  </p>
     122  </form>
    121123</div>
    122124<?php
    123 if(count($fdates['values']) > 1) {
    124 $width_date = 900;
    125 $left = 2;
    126 $espacement = 4;
    127 $width = (($width_date - $left) / count($fdates['values'])) - $espacement;
    128125$start = explode("T", $start);
    129 
    130 if($par == 'mois') {
    131   if($end == 'NOW') { $end = "aujourd'hui"; }
    132   else {
    133   $end = explode("T", $end);
    134   $end = explode("-", $end[0]);
    135   $end = mktime(0, 0, 0, $end[1], $end[2] - 1, $end[0]);
    136   $end = date("Y-m-d", $end);
    137   $end = 'le '.myTools::displayShortDate($end); }
    138   echo '<h1>Résultats pour "<em>'.$recherche.'</em>" entre le '.myTools::displayShortDate($start[0]).' et '.$end.'</h1>';
    139 }
    140 else {
    141   $end = explode("T", $end);
    142   echo '<h1>Résultats pour "<em>'.$recherche.'</em>" en '.myTools::displayMoisAnnee($start[0]).'</h1>';
    143 }
    144 
     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 if($graph) {
     153  $width_date = 900;
     154  $left = 2;
     155  $espacement = 4;
     156  $width = (($width_date - $left) / count($fdates['values'])) - $espacement;
    145157?>
    146158<div class="cont_date_graph">
    147 <span>Affiner par date :</span> <span id="periode"></span>
    148 <div class="date" style="width: <?php echo $width_date ?>px;">
    149 <ul>
    150    <?php $i = 0; foreach($fdates['values'] as $date => $nb) :
     159  <span>Affiner par date :</span> <span id="periode"></span>
     160  <div class="date" style="width: <?php echo $width_date ?>px;">
     161  <ul>
     162    <?php $i = 0; foreach($fdates['values'] as $date => $nb) :
    151163    $i++;
    152164    $height = round($nb['pc']*100/($fdates['max']) * 2);
     
    155167    $left = $left + $width; if($i < (count($fdates['values']))) { $left = $left + $espacement; }
    156168    $newargs = $selected;
    157     $newargs['date'][$date] = 1;
    158     if ($par != "mois" && preg_match('/01T00/', $date))
    159       $newargs['date'][$date."#"] = 1;
    160     else $newargs['date'][$date] = 1;
     169   
    161170    $title_date = explode("T", $date);
    162     if($par == "mois") {
     171   
     172    $newargs['date'] = $date.'%2C'.$date;
     173   
     174    if(($vue == 'jour') or ($vue == 'par_jour') or ($vue == 'mois')){
     175      $title_date = myTools::displayShortDate($title_date[0]).' : '.$nb['nb'].' résultats';
     176    }
     177    if($vue == 'par_mois') {
    163178      $title_date = ucfirst(myTools::displayMoisAnnee($title_date[0])).' : '.$nb['nb'].' résultats';
    164179    }
    165     else {
    166       $title_date = myTools::displayShortDate($title_date[0]).' : '.$nb['nb'].' résultats';
     180    if($vue == 'par_mois') {
     181      $newargs['date'] = $date.'%2C'.addToDate($date, 'mois');
    167182    }
     183   
    168184    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>';
    169185   
    170186    # echo ' '.$nb['nb'].' résultats ('; printf('%02d', $nb['pc']*100/($fdates['max'])); echo '%)';
    171    ?>
    172    </li>
    173 <?php endforeach; ?>
    174 </ul>
    175 </div>
    176 <div id="slider_date_graph"></div>
    177 </div>
    178 <?php } else { echo '<h1>Résultats pour "<em>'.$recherche.'</em>" le '.strtolower(myTools::displayDateSemaine($date_en_cours)).'</h1>'; } ?>
     187    ?>
     188    </li>
     189    <?php endforeach; ?>
     190  </ul>
     191  </div>
     192  <div id="slider_date_graph"></div>
     193</div>
     194<?php } ?>
    179195<div class="nb_results">
    180     <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> -
    181 <span class="tri">
    182 <?php
     196  <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> -
     197  <span class="tri">
     198  <?php
    183199  $newargs = $selected;
    184200  if ($sort) {
    185     if (isset($newargs['sort']))
    186       $newargs['sort'] = 0;
     201    if (isset($newargs['sort'])) { $newargs['sort'] = 0; }
    187202    echo link_search('trier par pertinence', $query, $newargs, 0);
    188   } else {
     203  }
     204  else {
    189205    $newargs['sort'] = 1;
    190206    echo link_search('trier par date', $query, $newargs, 0);
    191207  }
    192 ?>
    193 </span></h2>
     208  ?>
     209  </span></h2>
    194210</div>
    195211<div class="options">
    196 <div class="mail">
    197 <h3>Alerte email</h3>
    198 <?php
    199     $args = '';
    200 foreach(array_keys($selected) as $k) {
    201   if (!is_array($selected[$k]))
    202     continue;
    203   if ($args)
    204     $args .= '&';
    205   $args.= "$k=".implode(',', array_keys($selected[$k]));
    206 }
    207 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));
    208 ?>
    209 </div>
    210 <div class="facets">
    211 <h3>Filtres supplémentaires</h3>
    212 <?php   foreach(array_keys($facet) as $k) { if (isset($facet[$k]['values']) && count($facet[$k]['values'])) : ?>
    213 <div class="<?php echo $k; ?>">
    214 <p><?php echo $facet[$k]['name']; ?></p>
    215 <ul>
    216 <?php foreach($facet[$k]['values'] as $value => $nb) : if ($nb) :
    217 $is_selected = isset($selected[$facet[$k]['facet_field']][$facet[$k]['prefix'].$value]) &&
    218                      $selected[$facet[$k]['facet_field']][$facet[$k]['prefix'].$value];
    219 ?>
    220 <li<?php if ($is_selected) echo ' class="selected"'; ?>><?php
    221 $newargs = $selected;
    222 if ($is_selected)
    223   unset($newargs[$facet[$k]['facet_field']][$facet[$k]['prefix'].$value]);
    224 else                         
    225   $newargs[$facet[$k]['facet_field']][$facet[$k]['prefix'].$value] = 1;
    226 echo link_search($value,
    227                  $query,
    228                  $newargs,
    229                  0
    230                  ); ?> (<?php echo $nb; ?>)</li>
    231 <?php endif; endforeach; ?>
    232 </ul>
    233 </div>
    234 <?php endif; } ?>
    235 
    236 </div>
     212  <div class="mail">
     213  <h3>Alerte email</h3>
     214  <?php
     215  $args = '';
     216  foreach(array_keys($selected) as $k) {
     217    if (!is_array($selected[$k]))
     218      continue;
     219    if ($args)
     220      $args .= '&';
     221    $args.= "$k=".implode(',', array_keys($selected[$k]));
     222  }
     223  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));
     224  ?>
     225  </div>
     226  <div class="facets">
     227  <h3>Filtres supplémentaires</h3>
     228  <?php foreach(array_keys($facet) as $k) { if (isset($facet[$k]['values']) && count($facet[$k]['values'])) : ?>
     229    <div class="<?php echo $k; ?>">
     230    <p><?php echo $facet[$k]['name']; ?></p>
     231    <ul>
     232    <?php foreach($facet[$k]['values'] as $value => $nb) : if ($nb) :
     233      $is_selected = isset($selected[$facet[$k]['facet_field']][$facet[$k]['prefix'].$value]) &&
     234                  $selected[$facet[$k]['facet_field']][$facet[$k]['prefix'].$value];
     235    ?>
     236      <li<?php if ($is_selected) echo ' class="selected"'; ?>><?php
     237      $newargs = $selected;
     238      if ($is_selected)
     239        unset($newargs[$facet[$k]['facet_field']][$facet[$k]['prefix'].$value]);
     240      else                           
     241        $newargs[$facet[$k]['facet_field']][$facet[$k]['prefix'].$value] = 1;
     242      echo link_search($value, $query, $newargs, 0); ?>(<?php echo $nb; ?>)
     243      </li>
     244    <?php endif; endforeach; ?>
     245    </ul>
     246    </div>
     247  <?php endif; } ?>
     248  </div>
    237249</div>
    238250<div class="results">
    239 <?php foreach ($results['docs'] as $record) : ?>
    240 <div class="item">
    241       <h4><a href="<?php echo $record['link']; ?>"><?php echo $record['titre']; ?></a></h4>
    242       <?php if ($record['photo']) { ?><p class="photo"><a href="<?php echo $record['link']; ?>" rel="nofollow"><?php echo $record['photo']; ?></a></p><?php } ?>
    243       <p class="intervenant"><a href="<?php echo $record['link']; ?>" rel="nofollow"><?php echo $record['personne']; ?></a></p>
    244       <p class="content"><?php echo $record['highlighting']; ?></p>
    245       <p class="more"><a href="<?php echo $record['link']; ?>">Consulter</a></p>
    246 </div>
    247 <div class="record">
    248 </div>
    249 <?php endforeach; ?>
     251  <?php foreach ($results['docs'] as $record) : ?>
     252  <div class="item">
     253  <h4><a href="<?php echo $record['link']; ?>"><?php echo $record['titre']; ?></a></h4>
     254  <?php if ($record['photo']) { ?>
     255  <p class="photo"><a href="<?php echo $record['link']; ?>" rel="nofollow"><?php echo $record['photo']; ?></a></p>
     256  <?php } ?>
     257  <p class="intervenant"><a href="<?php echo $record['link']; ?>" rel="nofollow"><?php echo $record['personne']; ?></a></p>
     258  <p class="content"><?php echo $record['highlighting']; ?></p>
     259  <p class="more"><a href="<?php echo $record['link']; ?>">Consulter</a></p>
     260  </div>
     261  <div class="record">
     262  </div>
     263  <?php endforeach; ?>
    250264</div>
    251265<div class="pager">
    252 <div class="next">
    253 <?php
    254 if ($results['end']-1 != $results['numFound']) {
     266  <div class="next">
     267  <?php
     268  if ($results['end']-1 != $results['numFound']) {
     269    $newargs = $selected;
     270    $newargs['page'][$results['page'] + 1] = 1;
     271    echo link_search('page suivante', $query, $newargs, 0);
     272  }
     273  ?>
     274  </div>
     275  <div class="last">
     276  <?php
    255277  $newargs = $selected;
    256   $newargs['page'][$results['page'] + 1] = 1;
    257   echo link_search('page suivante',
    258                    $query,
    259                    $newargs,
    260                    0
    261                    );
    262 }
    263 ?>
    264 </div>
    265 <div class="last">
    266 <?php
    267 $newargs = $selected;
    268 $newargs['page'][$results['page'] - 1] = 1;
    269 if ($results['page'] > 1) {
    270   if (isset($newargs['page'][1]))
     278  $newargs['page'][$results['page'] - 1] = 1;
     279  if ($results['page'] > 1) {
     280    if (isset($newargs['page'][1]))
    271281    unset($newargs['page'][1]);
    272   echo link_search('page précédente',
    273                    $query,
    274                    $newargs,
    275                    0
    276                    );
    277  }
    278 ?>
    279 </div>
    280 </div>
    281 </div>
     282    echo link_search('page précédente', $query, $newargs, 0);
     283  }
     284  ?>
     285  </div>
     286</div>
     287</div>
Note: See TracChangeset for help on using the changeset viewer.