Browse Source

Les calendriers au format ical sont en place

recurrent
echarp 8 years ago
parent
commit
60dfb82c00
  1. 2
      Gemfile
  2. 9
      Gemfile.lock
  3. 4
      app/controllers/events_controller.rb
  4. 2
      app/controllers/regions_controller.rb
  5. 2
      app/models/region.rb
  6. 19
      app/views/events/index.ics.erb
  7. 2
      app/views/layouts/application.html.haml
  8. 40
      app/views/regions/icallist.html.haml
  9. 2
      config/application.rb
  10. 2
      config/locales/fr.yml
  11. 5
      config/routes.rb

2
Gemfile

@ -58,4 +58,6 @@ group :development do
gem 'guard-livereload'
gem 'guard-bundler'
gem 'guard-minitest'
gem 'quiet_assets'
gem 'webrick', '>= 1.3.1'
end

9
Gemfile.lock

@ -90,7 +90,7 @@ GEM
eventmachine (1.0.3)
execjs (2.0.2)
ffi (1.9.3)
font-awesome-rails (4.0.3.0)
font-awesome-rails (4.0.3.1)
railties (>= 3.2, < 5.0)
formatador (0.2.4)
formtastic (2.3.0.rc2)
@ -128,7 +128,7 @@ GEM
inherited_resources (1.4.1)
has_scope (~> 0.6.0.rc)
responders (~> 1.0.0.rc)
jbuilder (2.0.1)
jbuilder (2.0.2)
activesupport (>= 3.0.0)
multi_json (>= 1.2.0)
jquery-rails (3.0.4)
@ -164,6 +164,8 @@ GEM
coderay (~> 1.0)
method_source (~> 0.8)
slop (~> 3.4)
quiet_assets (1.0.2)
railties (>= 3.1, < 5.0)
rack (1.5.2)
rack-test (0.6.2)
rack (>= 1.0)
@ -230,6 +232,7 @@ GEM
json (>= 1.8.0)
warden (1.2.3)
rack (>= 1.0)
webrick (1.3.1)
PLATFORMS
ruby
@ -249,6 +252,7 @@ DEPENDENCIES
jquery-rails
jquery-turbolinks
mysql2
quiet_assets
rails
rails-i18n
redcarpet
@ -257,3 +261,4 @@ DEPENDENCIES
simple_calendar!
turbolinks
uglifier
webrick (>= 1.3.1)

4
app/controllers/events_controller.rb

@ -22,6 +22,10 @@ class EventsController < InheritedResources::Base
@events = @events.future
@events = @events.limit params[:daylimit] if params[:daylimit]
}
format.ics {
@events = @events.where('start_time > ?', 360.days.ago).order :id
}
end
end

2
app/controllers/regions_controller.rb

@ -1,5 +1,5 @@
class RegionsController < InheritedResources::Base
def index
def icallist
@regions = Region.all
end
end

2
app/models/region.rb

@ -1,5 +1,5 @@
class Region < ActiveRecord::Base
has_many :lugs, foreign_key: :region
default_scope { order(:name) }
default_scope { order :name }
end

19
app/views/events/index.ics.erb

@ -0,0 +1,19 @@
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//AgendaDuLibre.org
X-WR-CALNAME:Agenda du Libre
X-WR-TIMEZONE:Europe/Paris
CALSCALE:GREGORIAN
X-WR-CALDESC:L'Agenda des évènements autour du Libre
<% @events.each do |event| %>
BEGIN:VEVENT
DTSTART;TZID=Europe/Paris:<%= event.start_time.strftime '%Y%m%dT%H%M%S' %>
DTEND;TZID=Europe/Paris:<%= event.end_time.strftime '%Y%m%dT%H%M%S' %>
UID:<%= event.id %>@agendadulibre.org
SUMMARY:<%= event.title %>
URL:<%= event_url event %>
DESCRIPTION:Un évènement de l'Agenda du Libre
LOCATION:<%= event.city.gsub('-', ' ') %>
END:VEVENT
<% end %>
END:VCALENDAR

2
app/views/layouts/application.html.haml

@ -60,7 +60,7 @@
%nav
= link_to t('.propose'), new_event_path
= link_to t('.rss'), regions_url
= link_to t('.ical'), users_url
= link_to t('.ical'), icallist_regions_url
= link_to t('.map'), users_url
= link_to t('.tags'), users_url
= link_to t('.infos'), users_url

40
app/views/regions/icallist.html.haml

@ -0,0 +1,40 @@
%h2=t '.title'
:markdown
Chaque calendrier iCal liste les évènements pour les 30 jours à venir dans une région donnée. En vous inscrivant au calendrier de votre région, vous verrez apparaître les évènements de votre région à portée locale, ainsi que tous les évènements à portée nationale, comme les RMLL. Le lien *webcal* permet d'ajouter un calendrier dans votre logiciel favori, tandis que le lien *google* permet d'ajouter un calendrier à votre agenda Google.
%table.list
%tr
-#http://www.google.com/calendar/render?cid=http://www.agendadulibre.org/ical.php?region%3Dall
%td=t :all, scope: 'activerecord.attributes.region.name_values'
%td= link_to :webcal, events_path(protocol: :webcal, format: :ics, region: :all, only_path: false)
%td= link_to :google, "http://www.google.com/calendar/render?cid=#{events_url(format: :ics, region: :all)}"
- @regions.each do |region|
%tr
%td= region.name
%td= link_to :webcal, events_path(protocol: :webcal, format: :ics, region: region.id, only_path: false)
%td= link_to :google, "http://www.google.com/calendar/render?cid=#{events_url(format: :ics, region: region.id)}"
:markdown
Ce calendrier a été testé avec succès avec:
* [Mozilla Sunbird](http://www.mozilla.org/projects/calendar/sunbird.html), l'application Calendrier indépendante de Mozilla.
Pour ajouter l'Agenda du Libre, allez dans *File* puis *Subscribe to Remote Calendars*. Indiquer qu'il s'agit d'un calendrier distant en sélectionnant *Remote*. À l'étape suivante, sélectionnez *WebDAV*, et indiquer l'URL du calendrier que vous trouverez ci-dessous. À l'étape qui suit, donner un nom à ce calendrier, puis validez.
* L'[extension Calendar](http://www.mozilla.org/projects/calendar/download.html) pour Mozilla Firefox.
Pour ajouter l'Agenda du Libre, allez dans *Fichier* puis *S'abonner à un calendrier distant*. Dans la fenêtre qui s'ouvre, entrez un nom pour le calendrier, ainsi que l'URL de celui-ci, disponible dans la liste ci-dessus.
* [KOrganizer](http://korganizer.kde.org/), le calendrier de KDE
* [Evolution](http://www.gnome.org/projects/evolution/) (versions 2.0.4 et 2.2.x).
* vCalendar, [un plugin](http://claws.sylpheed.org/plugins.php) pour [Sylpheed Claws](http://claws.sylpheed.org/). Chargez le module par le menu Configuration/Modules, puis avec un clic droit sur le dossier vCalender, choisissez "S'inscrire à un Webcal".
* [GNU Emacs](http://www.gnu.org/software/emacs/emacs.html), à l'aide de l'extension [icalendar.el](http://de.geocities.com/ulf_jasper/lisp/icalendar.el.txt)
Les applications suivantes peuvent sans doute fonctionner:
* Une [extension Calendar](http://www.mozilla.org/projects/calendar/download.html) pour Thunderbird.
N'hésitez pas à [nous faire part](devel AT agendadulibre.org) de vos succès et de vos échecs avec d'autres logiciels.
Quelques fonctionnalités additionnelles des calendriers iCal :
* Vous pouvez limiter les évènements d'un calendrier iCal à un certain tag, en passant le paramètre `tag`. Cela permet par exemple de récupérer un calendrier iCal des évènements organisés uniquement par votre association, à partir du moment où vous pensez à marquer tous vos évènements avec un tag précis.
Exemple: `http://www.agendadulibre.org/ical.php?tag=toulibre`.

2
config/application.rb

@ -22,5 +22,7 @@ module AgendaDuLibreRails
config.i18n.default_locale = :fr
I18n.config.enforce_available_locales = true
#config.quiet_assets = false
end
end

2
config/locales/fr.yml

@ -108,3 +108,5 @@ fr:
regions:
index:
title: Liste des flux RSS
icallist:
title: Liste des calendriers iCal

5
config/routes.rb

@ -1,8 +1,11 @@
AgendaDuLibreRails::Application.routes.draw do
resources :regions, only: :index
resources :regions, only: [ :index ] do
get 'icallist', on: :collection
end
resources :events
resources :users
get 'ical.php' => 'events#index', format: :ics
get ':format.php' => 'events#index'
devise_for :admin_users, ActiveAdmin::Devise.config

Loading…
Cancel
Save