source: spip-zone/_galaxie_/code.spip.net/autodoc/trunk/templates/zora/content/recherche.twig @ 74958

Last change on this file since 74958 was 74958, checked in by marcimat@…, 6 years ago

Gérer la recherche et une page listant toutes les fonctions dépréciées

File size: 3.2 KB
Line 
1<ul class="breadcrumb">
2        <li><a href="{{ path(project) }}">Projet</a> <span class="divider">/</span></li>
3        <li class="active titre">Recherche</li>
4</ul>
5
6<h1 id="titre">Recherche</h1>
7
8<script type='text/javascript'>
9;(function($){
10$(document).ready(function() {
11        // elements de recherche
12        var $datasearch;
13
14        $affiche_recherche = function() {
15
16                $('#results').empty();
17                $('#titre em').remove();
18                $('.breadcrumb li.search').remove();
19                $('.breadcrumb li.titre .divider').remove();
20               
21                $q = $.getURLParameter('q');
22                if ($q) {
23                        $('#recherche input').val($q);
24                        $('#titre').append('<em> « ' + $q + ' »</em>')
25                        $('.breadcrumb .titre')
26                                .append(' <span class="divider">/</span>')
27                                .after('<li class="search active">' + $q + '</li>')
28                        $('#results').append(
29                                "<div class='chargement'>Recherche en cours…</div>"
30                        );
31                }
32        }
33
34        $.get("{{ path("recherche_data.xml") }}", function(xml) {
35                $datasearch = $( xml ).find('items item');
36        });
37
38        $recherche = function() {
39                $q = $.getURLParameter('q');
40                if ($q) {
41                        var count = 0;
42                        var timer = setInterval(function(){
43                                count++;
44                                if ($datasearch) {
45                                        clearInterval(timer);
46
47                                        $results = []
48                                        $urls = []
49
50                                        $datasearch.find("item[data-points]").each(function(){
51                                                $(this).data('points', null);
52                                        });
53
54                                        // pour ajouter un resultat pondéré
55                                        $add_result = function(item, points) {
56
57                                                // definir la ponderation
58                                                p = item.data('points');
59                                                if (!p) p = points;
60                                                else p += points;
61                                                item.data('points', p);
62
63                                                // on ajoute cet element aux resultats, s'il n'y est pas déjà
64                                                url = item.find('url').text();
65                                                if (!$urls[url]) {
66                                                        $results[ $results.length ] = {url: url, item: item}
67                                                        $urls[url] = true;
68                                                }
69                                        }
70
71                                        if ($res = $datasearch.find("titre:contains('" + $q + "')")) {
72                                                $res.each(function(){
73                                                        $add_result($(this).parent(), 10);
74                                                });
75                                        }
76                                        if ($res = $datasearch.find("intro:contains('" + $q + "')")) {
77                                                $res.each(function(){
78                                                        $add_result($(this).parent(), 5);
79                                                });
80                                        }
81                                        if ($res = $datasearch.find("text:contains('" + $q + "')")) {
82                                                $res.each(function(){
83                                                        $add_result($(this).parent(), 2);
84                                                });
85                                        }
86
87                                        $results.sort(function(a, b) {
88                                                return (b.item.data('points') - a.item.data('points'));
89                                        });
90
91                                        var $liste =
92                                                "<div class='alert'>" + $results.length + " résultats</div>"
93                                                + "<ul class='resultats'>";
94                                        $.each($results, function(key, result){
95                                                me = result.item;
96                                                $liste += "<li title='Score: " + me.data('points') + "'>"
97                                                        + "<h3>"
98                                                                + "<a href='" + result.url + "'>"
99                                                                + me.find('titre').text()
100                                                                + "</a>"
101                                                        + "</h3>"
102                                                        + "<p class='slogan'>" + me.find('intro').text() + "</p>"
103                                                        + "</li>";
104                                        });
105                                        $liste += "</ul>";
106
107                                        $('#results .chargement').remove();
108                                        $('#results').append($liste);
109                                }
110                                if (count == 5 * 15) {
111                                        clearInterval(timer);
112                                        $('#results .chargement').remove();
113                                        $('#results').append("<div class='alert'>"
114                                                + "Problème dans la lecture des données (délai trop long)..."
115                                                + "</div>");
116                                }
117                        }, 200);
118                }
119        }
120
121        $affiche_recherche()
122        $recherche()
123})
124})(jQuery);
125</script>
126
127<div id="results">
128
129</div>
Note: See TracBrowser for help on using the repository browser.