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
gem 'differ'
gem 'simple_calendar', github: 'echarp/simple_calendar'
#gem 'simple_calendar', github: 'excid3/simple_calendar', branch: '1.0'
gem 'simple_calendar'
# Markdown display
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
remote: git://github.com/gregbell/active_admin.git
revision: 0e0b3694bace985f355135f9628ea7918c3695d2
@ -110,7 +103,7 @@ GEM
activemodel
erubis (2.7.0)
eventmachine (1.0.3)
execjs (2.2.0)
execjs (2.2.1)
fastercsv (1.5.5)
ffi (1.9.3)
font-awesome-rails (4.1.0.0)
@ -250,6 +243,8 @@ GEM
json (~> 1.8)
rdoc (~> 4.0, < 5.0)
sexp_processor (4.4.3)
simple_calendar (1.1.3)
rails (>= 3.0)
slim (2.0.2)
temple (~> 0.6.6)
tilt (>= 1.3.3, < 2.1)
@ -319,7 +314,7 @@ DEPENDENCIES
redcarpet
sass-rails (~> 4.0.1)
sdoc (~> 0.4.0)
simple_calendar!
simple_calendar
spring
therubyracer
turbolinks

View File

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

View File

@ -12,11 +12,16 @@ class EventsController < ApplicationController
respond_to do |format|
format.html {
if (params[:year] and !params[:month])
if params[:year]
# Whole year calendar
@events = @events.year params[:year]
@events = @events.year params[:year].to_i
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
}

View File

@ -1,4 +1,6 @@
class Event < ActiveRecord::Base
extend SimpleCalendar
belongs_to :region, foreign_key: 'region'
has_many :notes
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_30, -> {
where('start_time >= now() and end_time <= ?', Date.today + 30)
.order(:start_time)
.order :start_time
}
scope :year, -> year {
where 'end_time >= ? and start_time < ?',
"#{year}-1-1", "#{year.to_i+1}-1-1"
where '? <= end_time and start_time <= ?',
Date.new(year, 1, 1).beginning_of_week, Date.new(year, 12, 31).end_of_week
}
scope :month, -> year, month {
where 'end_time >= ? and start_time <= ?',
"#{year}-#{month.to_i-1}-23",
"#{month == '12' ? year.to_i+1 : year}-#{month == '12' ? 1 : month.to_i+1}-7"
scope :month, -> start_date {
where '? <= end_time and start_time <= ?',
start_date.beginning_of_week,
start_date.next_month.end_of_week
}
scope :region, -> region { where 'region = ? or locality', region }
scope :tag, -> tag { where 'tags like ?', "%#{tag}%" }

View File

@ -1,36 +1,43 @@
%form.region_selector
- if (params[:month])
= hidden_field_tag :month, params[:month]
- if (params[:year])
- if params[:start_date]
= hidden_field_tag :start_date, params[:start_date]
- if params[:year]
= hidden_field_tag :year, params[:year]
= label_tag :region, Region.model_name.human
= select_tag :region,
options_from_collection_for_select(Region.all, 'id', 'name', params[:region]),
prompt: t('.all_regions')
- if (params[:year] and !params[:month])
- if params[:year]
-# Whole year calendar
%h2
- params[:year] ||= Date.today.year
%header.calendar-header.year
= link_to '<<', "?year=#{params[:year].to_i-1}"
= params[:year]
= link_to '>>', "?year=#{params[:year].to_i+1}"
- (1..12).each do |i|
- params[:month] = i
- params[:start_date] = "#{params[:year]}-#{i}-01"
= calendar @events, { prev_text: '', next_text: '', start_day: :monday,
params: { region: params[:region], tag: params[:tag] } } do |event|
= month_calendar events: @events,
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
- 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
= calendar @events, { prev_text: '<<', next_text: '>>', start_day: :monday,
params: { region: params[:region], tag: params[:tag] } } do |event|
= 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
= link_to event do
%strong= event.city.gsub('-', ' ')