Add filter to select whether POIs should be filtered by competence or by presence...
[infos-pratiques:etalage.git] / etalage / templates / index.mako
1 ## -*- coding: utf-8 -*-
2
3
4 ## Etalage -- Open Data POIs portal
5 ## By: Emmanuel Raviart <eraviart@easter-eggs.com>
6 ##     Romain Soufflet <rsoufflet@easter-eggs.com>
7 ##
8 ## Copyright (C) 2011 Easter-eggs
9 ## http://gitorious.org/infos-pratiques/etalage
10 ##
11 ## This file is part of Etalage.
12 ##
13 ## Etalage is free software; you can redistribute it and/or modify
14 ## it under the terms of the GNU Affero General Public License as
15 ## published by the Free Software Foundation, either version 3 of the
16 ## License, or (at your option) any later version.
17 ##
18 ## Etalage is distributed in the hope that it will be useful,
19 ## but WITHOUT ANY WARRANTY; without even the implied warranty of
20 ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
21 ## GNU Affero General Public License for more details.
22 ##
23 ## You should have received a copy of the GNU Affero General Public License
24 ## along with this program.  If not, see <http://www.gnu.org/licenses/>.
25
26
27 <%!
28 import urlparse
29
30 from etalage import conf, urls
31 %>
32
33
34 <%inherit file="/site.mako"/>
35
36
37 <%def name="container_content()" filter="trim">
38         <form action="${urls.get_url(ctx, mode)}" class="internal" id="search-form" method="get">
39             <fieldset>
40     % for name, value in sorted(params.iteritems()):
41 <%
42         if name in (
43                 'category' if not ctx.hide_category else None,
44                 'filter',
45                 'page',
46                 'term',
47                 'territory',
48                 ):
49             continue
50         if value is None or value == u'':
51             continue
52 %>\
53         % if isinstance(value, list):
54             % for item_value in value:
55                 <input name="${name}" type="hidden" value="${item_value or ''}">
56             % endfor
57         % else:
58                 <input name="${name}" type="hidden" value="${value or ''}">
59         % endif
60     % endfor
61     % if not ctx.hide_category:
62 <%
63         error = errors.get('category') if errors is not None else None
64 %>\
65                 <div class="clearfix${' error' if error else ''}">
66                     <label for="category">Catégorie</label>
67                     <div class="input">
68                         <input class="span6" id="category" name="category" type="text" value="${params['category'] or ''}">
69         % if error:
70                         <span class="help-inline">${error}</span>
71         % endif
72                     </div>
73                 </div>
74     % endif
75 <%
76     error = errors.get('term') if errors is not None else None
77 %>\
78                 <div class="clearfix${' error' if error else ''}">
79                     <label for="term">Intitulé</label>
80                     <div class="input">
81                         <input class="span6" id="term" name="term" type="text" value="${params['term'] or ''}">
82     % if error:
83                         <span class="help-inline">${error}</span>
84     % endif
85                     </div>
86                 </div>
87 <%
88     error = errors.get('territory') if errors is not None else None
89 %>\
90                 <div class="clearfix${' error' if error else ''}">
91                     <label for="territory">Territoire</label>
92                     <div class="input">
93                         <input class="span6" id="territory" name="territory" type="text" value="${params['territory'] or ''}">
94     % if error:
95                         <span class="help-inline">${error}</span>
96     % endif
97                     </div>
98                 </div>
99 <%
100     error = errors.get('filter') if errors is not None else None
101 %>\
102                 <div class="clearfix${' error' if error else ''}">
103                     <label for="filter">Afficher</label>
104                     <div class="input">
105                         <ul class="inputs-list">
106                             <li>
107                                 <label>
108                                     <input${' checked' if not params['filter'] else ''} name="filter" type="radio" value="">
109                                     <span>Tous les organismes</span>
110                                 </label>
111                             </li>
112                             <li>
113                                 <label>
114                                     <input${' checked' if params['filter'] == 'competence' else ''} name="filter" type="radio" value="competence">
115                                     <span>Uniquement les organismes compétents pour le territoire</span>
116                                 </label>
117                             </li>
118                             <li>
119                                 <label>
120                                     <input${' checked' if params['filter'] == 'presence' else ''} name="filter" type="radio" value="presence">
121                                     <span>Uniquement les organismes présents sur le territoire</span>
122                                 </label>
123                             </li>
124                         </ul>
125     % if error:
126                         <span class="help-inline">${error}</span>
127     % endif
128                     </div>
129                 </div>
130                 <div class="actions">
131                     <input class="btn primary" type="submit" value="${_('Search')}">
132                 </div>
133             </fieldset>
134         </form>
135         <ul class="tabs">
136 <%
137     modes_infos = (
138         (u'carte', u'Carte'),
139         (u'liste', u'Liste'),
140         (u'annuaire', u'Annuaire'),
141         (u'export', u'Export'),
142         )
143 %>\
144     % for tab_mode, tab_name in modes_infos:
145             <li${' class="active"' if tab_mode == mode else '' | n}>
146                 <a class="internal" href="${urls.get_url(ctx, tab_mode, **params)}">${tab_name}</a>
147             </li>
148     % endfor
149         </ul>
150         ## There is a bug in the tabs CSS above that requires a style="clear: left;".
151         ## Remove the div below once it is repaired.
152         <div style="clear: left;">
153 ##    % if errors is None:
154         <%self:results/>
155 ##    % endif
156         </div>
157 </%def>
158
159
160 <%def name="scripts()" filter="trim">
161     <%parent:scripts/>
162     <script src="/js/categories.js"></script>
163     <script src="/js/territories.js"></script>
164     <script>
165 var etalage = etalage || {};
166 etalage.categories.tags = ${ctx.category_tags_slug | n, js};
167 etalage.territories.autocompleterUrl = ${urlparse.urljoin(conf['territoria_url'],
168     '/api/v1/autocomplete-territory') | n, js};
169 etalage.params = ${params | n, js};
170
171 $(function () {
172     etalage.categories.createAutocompleter($('#category'));
173     etalage.territories.createAutocompleter($('#territory'));
174 });
175     </script>
176 </%def>
177