diff --git a/app/assets/stylesheets/events.sass b/app/assets/stylesheets/events.sass
index 88599525..caf59557 100644
--- a/app/assets/stylesheets/events.sass
+++ b/app/assets/stylesheets/events.sass
@@ -97,9 +97,8 @@ body.events.index table
color: black
font-weight: bolder
-.formats
+.links
float: right
- font-size: smaller
margin-right: 5%
padding-right: 2px
@@ -108,7 +107,7 @@ a#banner
margin-left: 5%
padding-left: 2px
-body.events.show, body.orgas.show, body.tags.show
+body.events.show, body.orgas.show, body.tags.show, body.filter
main
padding: 1em
max-width: 60em
diff --git a/app/assets/stylesheets/form.sass b/app/assets/stylesheets/form.sass
index f7178dbe..7630e0fc 100644
--- a/app/assets/stylesheets/form.sass
+++ b/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
diff --git a/app/assets/stylesheets/mobile.sass b/app/assets/stylesheets/mobile.sass
index f0e3976b..663b3e2b 100644
--- a/app/assets/stylesheets/mobile.sass
+++ b/app/assets/stylesheets/mobile.sass
@@ -14,7 +14,7 @@
form#orga_search
right: 0
- .formats, a#banner
+ .links, a#banner
margin: 0.6em auto
table, table.list, table.dates, table.list.dates
@@ -107,7 +107,7 @@
aside
display: none
- .formats, a#banner
+ .links, a#banner
float: none
padding: 0.4em 0
diff --git a/app/views/application/filter.haml b/app/views/application/filter.haml
new file mode 100644
index 00000000..cdf9c9f6
--- /dev/null
+++ b/app/views/application/filter.haml
@@ -0,0 +1,86 @@
+%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
+ = 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'
diff --git a/app/views/events/index.html.haml b/app/views/events/index.html.haml
index ee21fdd7..1c9e7b04 100644
--- a/app/views/events/index.html.haml
+++ b/app/views/events/index.html.haml
@@ -1,5 +1,4 @@
= render '/orgas/search'
-= render '/regions/selector'
- if params[:year]
-# Whole year calendar
@@ -40,8 +39,7 @@
.day_number= date.day
%ul.events.fa-ul= render events
-.formats
- %em.fa.fa-rss
+.links
= raw t '.calendar_in',
rss: link_to('RSS', events_path(:rss,
tag: params[:tag], region: params[:region])),
@@ -50,6 +48,12 @@
ical: link_to('iCal', events_path(:rss,
tag: params[:tag], format: :ics, region: params[:region]))
+ \-
+
+ = link_to application_filter_path do
+ %em.fa.fa-filter
+ = t '.filter'
+
%a#banner(href='http://april.org/campagne')
= image_tag 'priorite-logiciel-libre-je-soutiens-april_2_m.png',
width: '374', height: '48',
diff --git a/app/views/layouts/application.html.haml b/app/views/layouts/application.html.haml
index 340bd120..fd5f2cb9 100644
--- a/app/views/layouts/application.html.haml
+++ b/app/views/layouts/application.html.haml
@@ -50,9 +50,6 @@
%em.fa.fa-users
= t '.propose_orga'
%br/
- = link_to regions_path do
- %em.fa.fa-rss
- = t '.feeds'
= link_to maps_path do
%em.fa.fa-map-marker
= t '.map'
diff --git a/app/views/orgas/index.html.haml b/app/views/orgas/index.html.haml
index c32a660e..6059a29b 100644
--- a/app/views/orgas/index.html.haml
+++ b/app/views/orgas/index.html.haml
@@ -1,5 +1,4 @@
= render 'search'
-= render '/regions/selector'
%h2
%em.fa.fa-users
diff --git a/app/views/regions/_selector.haml b/app/views/regions/_selector.haml
deleted file mode 100644
index 8c5cc1a3..00000000
--- a/app/views/regions/_selector.haml
+++ /dev/null
@@ -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'
diff --git a/config/locales/views/en.yml b/config/locales/views/en.yml
index d2884e93..251aa7e1 100644
--- a/config/locales/views/en.yml
+++ b/config/locales/views/en.yml
@@ -23,7 +23,6 @@ en:
suisse: Suisse
propose: Propose an event
propose_orga: Propose an organisation
- feeds: Feeds
map: Map
tags: Tags
infos: Infos
@@ -34,8 +33,9 @@ en:
title: Hello,
events:
index:
- calendar_in: This calendar in %{rss}, %{webcal} or %{ical}
+ calendar_in: This calendar in %{rss}, %{webcal} or %{ical}
nb_events: "%{count} events"
+ filter: Advanced filter
show:
orga-list: Region's orgas
add_to_calendar: Add to my calendar
@@ -418,3 +418,16 @@ reason:
update_html:
destroy_html:
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
diff --git a/config/locales/views/fr.yml b/config/locales/views/fr.yml
index fd157971..a37eaea9 100644
--- a/config/locales/views/fr.yml
+++ b/config/locales/views/fr.yml
@@ -23,7 +23,6 @@ fr:
suisse: Suisse
propose: Proposer un événement
propose_orga: Proposer une organisation
- feeds: Flux
map: Carte
tags: Mots-clés
infos: Infos
@@ -34,16 +33,17 @@ fr:
title: Bonjour,
events:
index:
- calendar_in: Ce calendrier en %{rss}, %{webcal} ou %{ical}
+ calendar_in: Ce calendrier en %{rss}, %{webcal} ou %{ical}
nb_events: "%{count} événements"
+ filter: Filtrage avancé
show:
orga-list: Orgas de la région
add_to_calendar: Ajouter à mon calendrier
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:
destroy_html:
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
diff --git a/config/routes.rb b/config/routes.rb
index 5641272e..132614f2 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -2,6 +2,7 @@ Rails.application.routes.draw do
get 'application/infos'
get 'application/contact'
get 'application/rules'
+ get 'application/filter'
get 'stats', to: 'stats#index'
get 'versions', to: 'versions#index'