Changeset 1468


Ignore:
Timestamp:
Sep 28, 2010, 4:45:25 PM (10 years ago)
Author:
popeye
Message:

Interface de Solr (pas fini juste pour montrer)

Location:
cpc/trunk/project
Files:
7 edited

Legend:

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

    r1418 r1468  
    101101
    102102  public function executeTag(sfWebRequest $request) {
    103     $this->tags = split('\|', $request->getParameter('tags'));
     103    $this->tags = explode('\|', $request->getParameter('tags'));
    104104   
    105105    if (Doctrine::getTable('Tag')->findOneByName($this->tags[0]))
  • cpc/trunk/project/apps/frontend/modules/solr/actions/actions.class.php

    r1467 r1468  
    120120      $period = 'MONTH';
    121121      if (count($dates) == 1)
    122         $period = 'DAY';
     122            $period = 'DAY';
    123123      $query .= ' date:['.$date.' TO '.$date.'+1'.$period.']';
    124124      $this->selected['date'][$date] = 1;
     
    128128    }else {
    129129      if ($from) {
    130         $to = $request->getParameter('to', 'NOW');
    131         $query .= ' date:['.$from.' TO '.$to.']';
    132         $params['facet.date.start']=$from;
    133         $params['facet.date.end'] = $to;
    134         $params['facet.date.gap'] = '+1MONTH';
    135       }
    136     }
     130              $to = $request->getParameter('to', 'NOW');
     131              $query .= ' date:['.$from.' TO '.$to.']';
     132        $params['facet.date.start']=$from;
     133              $params['facet.date.end'] = $to;
     134              $params['facet.date.gap'] = '+1MONTH';
     135      }
     136    }
     137   
     138    $this->date_en_cours = $date;
     139    $this->start = $params['facet.date.start'];
     140    $this->end = $params['facet.date.end'];
     141    $this->interval = $params['facet.date.gap'];
     142   
    137143    $results = $s->search($query, $params, $deb, $nb);
    138144    //Reconstitut les résultats
  • cpc/trunk/project/apps/frontend/modules/solr/templates/searchSuccess.php

    r1446 r1468  
    1 <?php $sf_response->setTitle("Recherche de $query");  $style = "xneth"; ?>
    2 <!-- Mal placé pour éviter conflit avec la layout en cours --->
    3 <div class="mail">
    4 <?php
    5     $args = '';
    6 foreach(array_keys($selected) as $k) {
    7   if (!is_array($selected[$k]))
    8     continue;
    9   if ($args)
    10     $args .= '&';
    11   $args.= "$k=".implode(',', array_keys($selected[$k]));
    12 }
    13 echo link_to('Etre alerté par mail lorsque de nouveaux résoltats sont publiés', 'alerte/create?filter='.urlencode($args).'&query='.urlencode($query));
    14 ?>
    15 </div>
    16 <?php
    17 
    18 function link_search($text, $query, $args)
     1<?php
     2$sf_response->setTitle("Recherche de $query");  $style = "xneth";
     3
     4function link_search($text, $query, $args, $options)
    195{
    206  $extra = '';
     
    2713      $extra .= '&'.$k.'='.$v;
    2814  }
    29   return link_to($text, $url.$extra);
    30 }
    31 ?>
     15  if($options) { return link_to($text, $url.$extra, $options); }
     16  else { return link_to($text, $url.$extra); }
     17}
     18
     19$recherche = preg_replace('/"/', '&quot;', $query);
     20
     21if($interval == '+1MONTH') { $par = 'mois'; }
     22else { $par = 'jour'; }
     23?>
     24<script type="text/javascript">
     25function urlParams(params) {
     26        param = new Object();
     27        if(jQuery.isArray(params)) {
     28    jQuery.each(params, function() {
     29      val = this.split('=');
     30      param[val[0]] = val[1];
     31    });
     32  }
     33        return param;
     34}
     35
     36periode = new Array();
     37date_href = new Array();
     38nb_li = 0;
     39bh = 0;
     40nh = 0;
     41parametre = urlParams(location.search.substring(1).split('&'));
     42
     43$(document).ready(function() {
     44  $(".date li").each(function() {
     45    if($(this).height() > bh) { bh = $(this).height(); }
     46    date_li = $(this).find('a').attr("title").split(':');
     47    date_href[nb_li] = $(this).find('a').attr("href");
     48    periode[nb_li] = date_li[0];
     49    nb_li++;
     50  });
     51  if(bh <= 30) {
     52    $(".date li").each(function() {
     53      nh = $(this).height() * 2; $(this).height(nh);
     54    });
     55    bh = bh * 2;
     56  }
     57  if(bh <= 170) { bh = bh + 30; $(".date").height(bh); }
     58  $(".date").fadeIn(300);
     59        $(function() {
     60                $("#slider_date_graph").slider({
     61                        range: true,
     62                        min: 0,
     63                        max: nb_li-1,
     64                        values: [0, nb_li],
     65                        slide: function(event, ui) {
     66                          from = date_href[ui.values[0]].split('?');
     67                          from = urlParams(from[1].split('&'));
     68                          from = from["date"].split('%2C');
     69                          parametre["from"] = from[1];
     70                          to = date_href[ui.values[1]].split('?');
     71                          to = urlParams(to[1].split('&'));
     72                          to = to["date"].split('%2C');
     73                          parametre["to"] = to[1];
     74                         
     75                          if(parametre.date != undefined) { delete(parametre.date); }
     76                          lien = "?";
     77                          if(ui.values[0] == ui.values[1]) { lien = lien+"date="+parametre.from; }
     78                          else {
     79                            if(parametre.from != undefined) { lien = lien+"from="+parametre.from; }
     80                            if(parametre.to != undefined) { lien = lien+"&to="+parametre.to; }
     81                          }
     82                          if(parametre.parlementaire != undefined) { lien = lien+"&parlementaire="+parametre.parlementaire; }
     83                          if(parametre.object_name != undefined) { lien = lien+"&object_name="+parametre.object_name; }
     84                          if(parametre.tag != undefined) { lien = lien+"&tag="+parametre.tag; }
     85                          /* parlementaire object_name tag date to from */
     86                          texte_periode = '<a href="'+lien+'">entre '+periode[ui.values[0]]+' et '+ periode[ui.values[1]]+'</a>';
     87                         
     88                          $("#periode").text("");
     89                                $("#periode").append(texte_periode);
     90                        }
     91                });
     92                $("#periode").text('entre ' + periode[$("#slider_date_graph").slider("values", 0)] + ' et ' + periode[$("#slider_date_graph").slider("values", 1)]);
     93        });
     94});
     95</script>
     96
    3297<div class="solr">
    3398<div class="searchbox">
    3499<form>
    35     <input name="search" value="<?php echo preg_replace('/"/', '&quot;', $query); ?>" />
     100    <input name="search" value="<?php echo $recherche; ?>" />
    36101    <input type="submit" value="Rechercher"/>
    37102</form>
    38103</div>
     104<?php
     105if(count($fdates['values']) > 1) {
     106$width_date = 900;
     107$left = 2;
     108$espacement = 4;
     109$width = (($width_date - $left) / count($fdates['values'])) - $espacement;
     110$start = explode("T", $start);
     111
     112if($par == 'mois') {
     113  if($end == 'NOW') { $end = "aujourd'hui"; }
     114  else {
     115  $end = explode("T", $end);
     116  $end = explode("-", $end[0]);
     117  $end = mktime(0, 0, 0, $end[1], $end[2] - 1, $end[0]);
     118  $end = date("Y-m-d", $end);
     119  $end = 'le '.myTools::displayShortDate($end); }
     120  echo '<h1>Résultats pour "<em>'.$recherche.'</em>" entre le '.myTools::displayShortDate($start[0]).' et '.$end.'</h1>';
     121}
     122else {
     123  $end = explode("T", $end);
     124  echo '<h1>Résultats pour "<em>'.$recherche.'</em>" en '.myTools::displayMoisAnnee($start[0]).'</h1>';
     125}
     126
     127?>
     128<div class="cont_date_graph">
     129<span>Affiner par date :</span> <span id="periode"></span>
     130<div class="date" style="width: <?php echo $width_date ?>px;">
     131<ul>
     132   <?php $i = 0; foreach($fdates['values'] as $date => $nb) :
     133    $height = round($nb['pc']*100/($fdates['max']) * 2);
     134    $padding = 200-$height; ?>
     135    <li<?php echo ' style="list-style-image: none; width: '.$width.'px; height: '.$height.'px; left: '.$left.'px;">';
     136    $left = $left + $width; if($i < (count($fdates['values']) - 1)) { $left = $left + $espacement; }
     137    $newargs = $selected;
     138    $newargs['date'][$date] = 1;
     139    $title_date = explode("T", $date);
     140    if($par == "mois") {
     141      $title_date = ucfirst(myTools::displayMoisAnnee($title_date[0])).' : '.$nb['nb'].' résultats';
     142    }
     143    else {
     144      $title_date = myTools::displayShortDate($title_date[0]).' : '.$nb['nb'].' résultats';
     145    }
     146    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>';
     147   
     148    # echo ' '.$nb['nb'].' résultats ('; printf('%02d', $nb['pc']*100/($fdates['max'])); echo '%)';
     149   ?>
     150   </li>
     151<?php endforeach; ?>
     152</ul>
     153</div>
     154<div id="slider_date_graph"></div>
     155</div>
     156<?php } else { echo '<h1>Résultats pour "<em>'.$recherche.'</em>" le '.strtolower(myTools::displayDateSemaine($date_en_cours)).'</h1>'; } ?>
    39157<div class="nb_results">
    40     <p>Résultats <?php echo $results['start']+1; ?> à <?php echo $results['end']; ?> sur <?php echo $results['numFound'] - 1; ?> triés par <?php echo $sort_type; ?></p>
     158    <h2>Résultats <?php echo $results['start']+1; ?> à <?php echo $results['end']-1; ?> sur <?php echo $results['numFound']; ?> <strong>triés par <?php echo $sort_type; ?></strong> -
     159<span class="tri">
     160<?php
     161  $newargs = $selected;
     162  if ($sort)
     163    echo link_search('trier par pertinence', $query, $newargs, 0);
     164  else {
     165    $newargs['sort'] = 1;
     166    echo link_search('trier par date', $query, $newargs, 0);
     167  }
     168?>
     169</span></h2>
     170</div>
     171<div class="options">
     172<div class="mail">
     173<h3>Alerte email</h3>
     174<?php
     175    $args = '';
     176foreach(array_keys($selected) as $k) {
     177  if (!is_array($selected[$k]))
     178    continue;
     179  if ($args)
     180    $args .= '&';
     181  $args.= "$k=".implode(',', array_keys($selected[$k]));
     182}
     183echo link_to('Recevoir un email lorsque de nouveaux résultats seront publiés pour cette recherche', 'alerte/create?filter='.urlencode($args).'&query='.urlencode($query));
     184?>
    41185</div>
    42186<div class="facets">
    43 <div class="tri">
    44     <?php
    45     $newargs = $selected;
    46     if ($sort)
    47       echo link_search('Trier par pertinence', $query, $newargs);
    48     else {
    49       $newargs['sort'] = 1;
    50       echo link_search('Trier par date', $query, $newargs);
    51     }
    52 ?>
    53 </div>
     187<h3>Filtres supplémentaires</h3>
    54188<?php   foreach(array_keys($facet) as $k) { if (isset($facet[$k]['values']) && count($facet[$k]['values'])) : ?>
    55189<div class="<?php echo $k; ?>">
     
    68202echo link_search($value,
    69203                 $query,
    70                  $newargs
     204                 $newargs,
     205                 0
    71206                 ); ?> (<?php echo $nb; ?>)</li>
    72207<?php endif; endforeach; ?>
     
    74209</div>
    75210<?php endif; } ?>
    76 <div class="date">
    77 <p>Dates</p>
    78 <ul>
    79    <?php foreach($fdates['values'] as $date => $nb) : ?>
    80     <li><?php
    81     $newargs = $selected;
    82     $newargs['date'][$date] = 1;
    83     echo link_search($date,
    84                      $query,
    85                      $newargs);
    86 ?> (<?php echo $nb['nb'].' '; printf('%02d', $nb['pc']*100/($fdates['max']));?>%)</li>
    87 <?php endforeach; ?>
    88 </ul>
     211
    89212</div>
    90213</div>
     
    110233  echo link_search('page suivante',
    111234                   $query,
    112                    $newargs);
     235                   $newargs,
     236                   0
     237                   );
    113238}
    114239?>
     
    123248  echo link_search('page précédente',
    124249                   $query,
    125                    $newargs);
     250                   $newargs,
     251                   0
     252                   );
    126253 }
    127254?>
  • cpc/trunk/project/lib/model/doctrine/myTools.class.php

    r1333 r1468  
    5555    $date = $date.substr($d,5,2)."/";  // mois
    5656    $date = $date.substr($d,2,2);      // année
     57    return $date;
     58  }
     59 
     60  public static function displayMoisAnnee($d) {
     61    $date = self::$num_mois[substr($d,5,2)].' ';  // mois txt
     62    $date = $date.substr($d,0,4);      // année num
    5763    return $date;
    5864  }
  • cpc/trunk/project/web/css/xneth/style.css

    r1466 r1468  
    99.cont_date_graph {
    1010  margin-right: 4px;
    11   padding-left: 7px;
    12   padding-right: 7px;
    1311}
    1412.date {
     
    1816        margin: 0;
    1917        padding: 0;
     18  margin-left: 7px;
     19  margin-right: 7px;
    2020        position: relative;
    2121  background-color: #fff;
    22         overflow-y: hidden;
    23         overflow-x: auto;
     22        overflow: hidden;
     23}
     24#slider_date_graph {
     25  width: 870px;
     26  margin-top: 7px;
     27  margin-left: 20px;
     28  margin-right: 6px;
    2429}
    2530.date li {
     
    5156#text_graph a{
    5257  color: transparent;
    53 }
    54 #slider_date_graph {
    55   width: 900px;
    56   margin-top: 7px;
    57   margin-right: 7px;
    5858}
    5959.searchbox {
Note: See TracChangeset for help on using the changeset viewer.