Browse Source

A separate filter page lets users search more precisely for events or organisations, in different formats

filter
echarp 5 years ago
parent
commit
40bfa440a6
  1. 24
      app/assets/stylesheets/form.sass
  2. 91
      app/views/application/filter.haml
  3. 1
      app/views/events/index.html.haml
  4. 1
      app/views/orgas/index.html.haml
  5. 41
      app/views/regions/_selector.haml
  6. 13
      config/locales/views/en.yml
  7. 51
      config/locales/views/fr.yml

24
app/assets/stylesheets/form.sass

@ -1,18 +1,19 @@
@import font-awesome-sprockets
@import font-awesome
.events form, .moderations form, .orgas, .digests form
.events form, .moderations form, .orgas, .digests form, .filter form
.field, .actions
max-width: 70em
text-align: left
margin-left: auto
margin-right: auto
.helper p
.helper
color: gray
margin: 0
font-style: italic
margin-left: 8em
padding-left: 0.4em
p
margin: 0
margin-left: 8em
padding-left: 0.4em
label
width: 8em
display: inline-block
@ -89,6 +90,19 @@
.field.feed label:before, th.feed:before
content: $fa-var-rss
.field.future label:before
content: $fa-var-backward
.field.period_year label:before
content: $fa-var-fast-backward
.field.period_week label:before
content: $fa-var-step-backward
.field.near_location label:before
content: $fa-var-dot-circle-o
.field.near_distance label:before
content: $fa-var-arrows-h
.field.iframe label:before
content: $fa-var-arrows-alt
.field .radios label
width: auto !important
margin-right: 1em

91
app/views/application/filter.haml

@ -1,9 +1,86 @@
= form_for :event do |f|
.field.tag
= f.label :tag
= f.text_field :tag
%h2
%em.fa.fa-filter
= title t('.title')
:markdown
#{t '.helper'}
= form_tag events_url, method: :get do
.field.future
= label_tag :future, t('.past')
= check_box_tag :future, :false
%span.helper= t '.past_helper'
.field.period_year
.helper
:markdown
#{t '.period_year_helper'}
= label_tag 'period[year]', t('.period_year')
= number_field_tag 'period[year]', (Time.zone.today + 7.days).year
.field.period_week
= label_tag 'period[week]', t('.period_week')
= number_field_tag 'period[week]', (Time.zone.today + 7.days).cweek
.field.near_location
= label_tag 'near[location]', t('.near_location')
= text_field_tag 'near[location]', params['near[location]'],
placeholder: t('.near_location_helper')
.field.near_distance
= label_tag 'near[distance]', t('.near_distance')
= number_field_tag 'near[distance]', params['near[distance]'],
placeholder: t('.near_distance_helper')
km
.field.region
= label_tag :region, t('.region')
= select_tag :region,
options_from_collection_for_select(Region.all, :id, :name),
include_blank: true
.field.tags
= label_tag :tag, t('.tag')
= text_field_tag :tag
.field.iframe
= label_tag :iframe, t('.iframe')
= check_box_tag :iframe, :false
%span.helper= t '.iframe_helper'
.actions
= f.button do
%em.fa.fa-check
= t '.filter'
= button_tag do
%em.fa.fa-calendar
= t '.events'
= button_tag formaction: maps_url do
%em.fa.fa-map-marker
= t '.map'
= button_tag formaction: maps_url(format: :json) do
%em.fa.fa-map-pin
= t '.geojson'
= button_tag formaction: events_url(format: :json) do
%em.fa {}
= t '.json'
= button_tag formaction: events_url(format: :rss) do
%em.fa.fa-rss
= t '.rss'
= button_tag formaction: events_url(format: :ics) do
%em.fa.fa-calendar-check-o
= t '.ics'
= button_tag formaction: events_url(format: :xml) do
%em.fa.fa-code
= t '.xml'
= button_tag formaction: orgas_url do
%em.fa.fa-users
= t '.orgas'
= button_tag formaction: digest_url(:markdown) do
%em.fa.fa-hashtag
= t '.digest'

1
app/views/events/index.html.haml

@ -1,5 +1,4 @@
= render '/orgas/search'
= render '/regions/selector'
- if params[:year]
-# Whole year calendar

1
app/views/orgas/index.html.haml

@ -1,5 +1,4 @@
= render 'search'
= render '/regions/selector'
%h2
%em.fa.fa-users

41
app/views/regions/_selector.haml

@ -1,41 +0,0 @@
%nav.region_selector
-# Display the currently selected region
%h3
- if params[:region] && params[:region] != 'all'
%em.locality.fa.fa-shield
= Region.find params[:region]
%em.fa.fa-chevron-down
- elsif params[:locality]
%span.placeholder
%em.locality.fa.fa-globe
= t '.national'
%em.fa.fa-chevron-down
- else
%span.placeholder
%em.locality.fa.fa-globe
= t '.all_regions'
%em.fa.fa-chevron-down
-# Choose a region to filter events with
%ul
%li
= link_to t('.all_regions'), region: nil,
start_date: params[:start_date],
year: params[:year],
tag: params[:tag]
- Region.pluck(:id, :name).each do |id, name|
%li
= link_to name, region: id,
start_date: params[:start_date],
year: params[:year],
tag: params[:tag]
- unless controller.class == OrgasController
%li
= link_to locality: 1,
start_date: params[:start_date],
year: params[:year],
tag: params[:tag] do
%em.fa.fa-globe
= t '.national'

13
config/locales/views/en.yml

@ -418,3 +418,16 @@ reason:
update_html: <em class='fa fa-exchange'></em>
destroy_html: <em class='fa fa-trash'></em>
feed: RSS feed
application:
filter:
title: Advanced filtering
helper: Parameters can be used in the agenda, for consultation or integration in another website
past: Past
period_year: Year
period_week: Week
near_location: Near
near_distance: Distance
region: Region
tag: Tag
iframe: Borderless

51
config/locales/views/fr.yml

@ -42,8 +42,8 @@ fr:
copy: Dupliquer événement
at: À
dateAndPlace: Date et lieu
noMap: Aucune carte OpenStreetMap n'a pu être associée à cette adresse.
Vous pouvez tester d'autres syntaxes ici
noMap: Aucune carte n'a pu être associée à cette adresse. Vous pouvez
tester d'autres syntaxes ici
description: Description
infos: Informations
actions: Actions
@ -85,8 +85,8 @@ fr:
description_helper: Décrivez de la manière la plus complète possible
votre événement
address_helper: "*Associée à la ville et la région, elle générera une
carte [OpenStreetMap](http://www.openstreetmap.org), affichée aux côtés
de l'événement*"
[carte](http://www.openstreetmap.org), affichée aux côtés de
l'événement*"
url_helper: Lien **direct** vers une page donnant plus d'informations sur
l'événement
contact_helper: Adresse e-mail de contact, affichée de manière peu
@ -115,13 +115,13 @@ fr:
national: Événements nationaux
index:
title: Liste des flux
quick: Chaque flux liste les évènements pour les 30 prochains jours dans
quick: Chaque flux liste les événements pour les 30 prochains jours dans
une région donnée
help: "Quelques fonctionnalités intéressantes à l'aide de paramètres:\n
\n
* `tag`: limiter les évènements à un certain tag. Cela permet par
exemple de récupérer un flux des évènements d'une organisation, à
partir du moment où vous pensez à marquer tous vos évènements avec un
* `tag`: limiter les événements à un certain tag. Cela permet par
exemple de récupérer un flux des événements d'une organisation, à
partir du moment où vous pensez à marquer tous vos événements avec un
tag précis. \n
Exemple: `%{tag}`\n
* `daylimit`: limiter les énévenements futurs à un certain nombre de
@ -149,7 +149,7 @@ fr:
tags:
index:
title: Mots-clés
limited: Seuls les mots-clés portants sur plus de trois évènements sont
limited: Seuls les mots-clés portants sur plus de trois événements sont
affichés dans cette liste
show:
links: Voir aussi
@ -272,8 +272,8 @@ description plus complète."
ok: L'organisation a été mise à jour
form:
address_helper: "*Associée à la ville et la région, elle générera une
carte [OpenStreetMap](http://www.openstreetmap.org), affichée aux côtés
de l'organisation*"
[carte](http://www.openstreetmap.org), affichée aux côtés de
l'organisation*"
url_helper: Lien vers le site web de l'organisation
feed_helper: Lien **direct** vers un flux de syndication, type RSS ou atom
contact_helper: Adresse e-mail de contact, affichée de manière peu
@ -303,7 +303,7 @@ description plus complète."
digests:
markdown:
title: Agenda du Libre pour la semaine %{week} de l'année %{year}
week: Calendrier web, regroupant des évènements liés au Libre (logiciel, salon, atelier, install party, conférence) en France, annoncés par leurs organisateurs. Voici un récapitulatif de la semaine à venir. Le détail de chacun de ces %{count} événements est en seconde partie de dépêche.
week: Calendrier web, regroupant des événements liés au Libre (logiciel, salon, atelier, install party, conférence) en France, annoncés par leurs organisateurs. Voici un récapitulatif de la semaine à venir. Le détail de chacun de ces %{count} événements est en seconde partie de dépêche.
devise:
sessions:
@ -422,3 +422,30 @@ l'adresse:"
update_html: <em class='fa fa-exchange'></em>
destroy_html: <em class='fa fa-trash'></em>
feed: Flux RSS
application:
filter:
title: Filtrage avancé
helper: Plusieurs paramètres sont prévus dans l'agenda, en consultation ou pour l'intégrer à un autre site
past: Passés
past_helper: Inclure aussi les événements passés dans les flux RSS, carte et geojson
period_year: Année
period_year_helper: Pour définir la semaine/année du résumé
period_week: Semaine
near_location: Près de
near_location_helper: ville ou lieu géographique
near_distance: Distance
near_distance_helper: du lieu
region: Région
tag: Mot-clé
iframe: Sans cadre
iframe_helper: Supprime l'en-tête et bas de page, pour intégration dans une iframe
events: Agenda
map: Carte
geojson: GeoJSON
json: JSON
rss: RSS
ics: iCal
xml: XML
digest: Résumé
orgas: Orgas

Loading…
Cancel
Save