Utilisation de la dernière version de simple_calendar

This commit is contained in:
echarp 2014-06-27 00:52:47 +02:00
parent 20b8c11c66
commit 3873317c24
7 changed files with 70 additions and 63 deletions

View File

@ -63,8 +63,7 @@ gem 'email_validator'
# To display a patched diff for event descriptions # To display a patched diff for event descriptions
gem 'differ' gem 'differ'
gem 'simple_calendar', github: 'echarp/simple_calendar' gem 'simple_calendar'
#gem 'simple_calendar', github: 'excid3/simple_calendar', branch: '1.0'
# Markdown display # Markdown display
gem 'redcarpet' gem 'redcarpet'

View File

@ -1,10 +1,3 @@
GIT
remote: git://github.com/echarp/simple_calendar.git
revision: 415838f60847068bc29459f5a275c04d4db05ee9
specs:
simple_calendar (0.1.9)
rails (>= 3.0)
GIT GIT
remote: git://github.com/gregbell/active_admin.git remote: git://github.com/gregbell/active_admin.git
revision: 0e0b3694bace985f355135f9628ea7918c3695d2 revision: 0e0b3694bace985f355135f9628ea7918c3695d2
@ -110,7 +103,7 @@ GEM
activemodel activemodel
erubis (2.7.0) erubis (2.7.0)
eventmachine (1.0.3) eventmachine (1.0.3)
execjs (2.2.0) execjs (2.2.1)
fastercsv (1.5.5) fastercsv (1.5.5)
ffi (1.9.3) ffi (1.9.3)
font-awesome-rails (4.1.0.0) font-awesome-rails (4.1.0.0)
@ -250,6 +243,8 @@ GEM
json (~> 1.8) json (~> 1.8)
rdoc (~> 4.0, < 5.0) rdoc (~> 4.0, < 5.0)
sexp_processor (4.4.3) sexp_processor (4.4.3)
simple_calendar (1.1.3)
rails (>= 3.0)
slim (2.0.2) slim (2.0.2)
temple (~> 0.6.6) temple (~> 0.6.6)
tilt (>= 1.3.3, < 2.1) tilt (>= 1.3.3, < 2.1)
@ -319,7 +314,7 @@ DEPENDENCIES
redcarpet redcarpet
sass-rails (~> 4.0.1) sass-rails (~> 4.0.1)
sdoc (~> 0.4.0) sdoc (~> 0.4.0)
simple_calendar! simple_calendar
spring spring
therubyracer therubyracer
turbolinks turbolinks

View File

@ -1,8 +1,3 @@
$(document).ready -> $(document).ready ->
$('form.region_selector select').change -> $('form.region_selector select').change ->
this.form.submit() this.form.submit()
$('main form.region_selector + h2').each ->
selector = $(this)
year = selector.html().substr selector.html().search(/\d{4}</), 4
selector.html selector.html().replace(/\d{4}</, '<a class="year_selector" href="?year='+year+'">'+year+'</a><')

View File

@ -3,31 +3,34 @@
form.region_selector form.region_selector
width: 98% width: 98%
position: absolute position: absolute
margin-top: 2.5em margin: 2.45em 0.4em
label label
display: none display: none
main form.region_selector + h2
width: 100% header.calendar-header
font-size: 1.5em
margin-top: 1em margin-top: 1em
font-weight: bolder
margin-bottom: 0.1em
&.year
margin-top: 1em
margin-bottom: 2.55em
a
margin: 0
a a
margin: 0 6px
font-weight: normal font-weight: normal
&.previous-month &.year_selector
margin-right: 8px margin: 0
&.next-month font-size: normal
margin-left: 8px &.month_selector
display: block
font-size: 0.8em
font-weight: bolder
margin-bottom: -2.1em
// For whole year calendar body.events.index table
main form.region_selector + h2 + h2
padding: 0.26em 0 0
font-size: 1.2em
margin-bottom: 0.8em
table.calendar + h2
margin: 1em
font-size: 1.2em
table.calendar
width: 90% width: 90%
margin-top: 3.5em margin-top: 3.5em
tr tr
@ -56,7 +59,7 @@ table.calendar
.day_number .day_number
font-size: 0.8em font-size: 0.8em
margin-top: -1px margin-top: -1px
&.not-current-month &.prev-month, &.next-month
border: none border: none
background-color: #ededed background-color: #ededed
.day_number .day_number
@ -89,6 +92,7 @@ table.calendar
color: #444 color: #444
margin: 0 margin: 0
padding: 0 padding: 0
margin-top: 0.38em
.event .event
font-size: smaller font-size: smaller

View File

@ -12,11 +12,16 @@ class EventsController < ApplicationController
respond_to do |format| respond_to do |format|
format.html { format.html {
if (params[:year] and !params[:month]) if params[:year]
# Whole year calendar # Whole year calendar
@events = @events.year params[:year] @events = @events.year params[:year].to_i
else else
@events = @events.month(params[:year] || Date.today.year, params[:month] || Date.today.month) if params[:start_date]
start_date = Date.parse params[:start_date]
else
start_date = Date.today
end
@events = @events.month start_date.change day: 1
end end
} }

View File

@ -1,4 +1,6 @@
class Event < ActiveRecord::Base class Event < ActiveRecord::Base
extend SimpleCalendar
belongs_to :region, foreign_key: 'region' belongs_to :region, foreign_key: 'region'
has_many :notes has_many :notes
has_one :related_city, foreign_key: :name, primary_key: :city, class_name: City has_one :related_city, foreign_key: :name, primary_key: :city, class_name: City
@ -14,16 +16,16 @@ class Event < ActiveRecord::Base
scope :future, -> { where('end_time >= now()').order(start_time: :asc) } scope :future, -> { where('end_time >= now()').order(start_time: :asc) }
scope :future_30, -> { scope :future_30, -> {
where('start_time >= now() and end_time <= ?', Date.today + 30) where('start_time >= now() and end_time <= ?', Date.today + 30)
.order(:start_time) .order :start_time
} }
scope :year, -> year { scope :year, -> year {
where 'end_time >= ? and start_time < ?', where '? <= end_time and start_time <= ?',
"#{year}-1-1", "#{year.to_i+1}-1-1" Date.new(year, 1, 1).beginning_of_week, Date.new(year, 12, 31).end_of_week
} }
scope :month, -> year, month { scope :month, -> start_date {
where 'end_time >= ? and start_time <= ?', where '? <= end_time and start_time <= ?',
"#{year}-#{month.to_i-1}-23", start_date.beginning_of_week,
"#{month == '12' ? year.to_i+1 : year}-#{month == '12' ? 1 : month.to_i+1}-7" start_date.next_month.end_of_week
} }
scope :region, -> region { where 'region = ? or locality', region } scope :region, -> region { where 'region = ? or locality', region }
scope :tag, -> tag { where 'tags like ?', "%#{tag}%" } scope :tag, -> tag { where 'tags like ?', "%#{tag}%" }

View File

@ -1,41 +1,48 @@
%form.region_selector %form.region_selector
- if (params[:month]) - if params[:start_date]
= hidden_field_tag :month, params[:month] = hidden_field_tag :start_date, params[:start_date]
- if (params[:year]) - if params[:year]
= hidden_field_tag :year, params[:year] = hidden_field_tag :year, params[:year]
= label_tag :region, Region.model_name.human = label_tag :region, Region.model_name.human
= select_tag :region, = select_tag :region,
options_from_collection_for_select(Region.all, 'id', 'name', params[:region]), options_from_collection_for_select(Region.all, 'id', 'name', params[:region]),
prompt: t('.all_regions') prompt: t('.all_regions')
- if (params[:year] and !params[:month]) - if params[:year]
-# Whole year calendar -# Whole year calendar
%h2 %header.calendar-header.year
- params[:year] ||= Date.today.year
= link_to '<<', "?year=#{params[:year].to_i-1}" = link_to '<<', "?year=#{params[:year].to_i-1}"
= params[:year] = params[:year]
= link_to '>>', "?year=#{params[:year].to_i+1}" = link_to '>>', "?year=#{params[:year].to_i+1}"
- (1..12).each do |i| - (1..12).each do |i|
- params[:month] = i - params[:start_date] = "#{params[:year]}-#{i}-01"
= calendar @events, { prev_text: '', next_text: '', start_day: :monday, = month_calendar events: @events,
params: { region: params[:region], tag: params[:tag] } } do |event| title: -> (start_date) { raw link_to I18n.t('date.month_names')[start_date.month]+' '+params[:year], root_url( start_date: start_date), class: 'month_selector' },
previous_link: -> (param, date_range) { },
next_link: -> (param, date_range) { } do |date, events|
.day_number= date.day
%ul.events %ul.events
- events.select { |e| e.start_time.to_date <= date and date <= e.end_time.to_date }.sort_by { |e| e.city }.each do |event|
%li.event
= link_to event do
%strong= event.city.gsub('-', ' ')
= event.title
- else
= month_calendar events: @events,
title: -> (start_date) { raw "#{I18n.t('date.month_names')[start_date.month]} #{link_to start_date.year, root_url( year: start_date.year), class: 'year_selector'}" },
previous_link: -> (param, date_range) { link_to '<<', { param => date_range.first - 1.day } },
next_link: -> (param, date_range) { link_to '>>', { param => date_range.last + 1.day } } do |date, events|
.day_number= date.day
%ul.events
- events.select { |e| e.start_time.to_date <= date and date <= e.end_time.to_date }.sort_by { |e| e.city }.each do |event|
%li.event %li.event
= link_to event do = link_to event do
%strong= event.city.gsub('-', ' ') %strong= event.city.gsub('-', ' ')
= event.title = event.title
- else
= calendar @events, { prev_text: '<<', next_text: '>>', start_day: :monday,
params: { region: params[:region], tag: params[:tag] } } do |event|
%ul.events
%li.event
= link_to event do
%strong= event.city.gsub('-', ' ')
= event.title
.formats .formats
=t '.calendar_in' =t '.calendar_in'
= link_to('rss', events_url(:rss, tag: params[:tag]))+',' = link_to('rss', events_url(:rss, tag: params[:tag]))+','