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'