simple_calendar 0.1.5 → 0.1.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README.md +10 -2
- data/lib/simple_calendar/version.rb +1 -1
- data/lib/simple_calendar/view_helpers.rb +15 -38
- metadata +4 -4
data/README.md
CHANGED
@@ -98,6 +98,7 @@ Possible options:
|
|
98
98
|
:next_text # next month link text, default: »
|
99
99
|
:start_day # starting day of week, default: :sunday
|
100
100
|
:empty_date # block called when a date is empty
|
101
|
+
:class # HTML class attribute for the calendar
|
101
102
|
|
102
103
|
If you wish to have Monday as the first day of the week, you'll need to
|
103
104
|
change a couple things. First, when rendering the calendar, use the
|
@@ -134,5 +135,12 @@ the following line to your css:
|
|
134
135
|
.calendar td { height: 100px; width: 14.28%; }
|
135
136
|
```
|
136
137
|
|
137
|
-
By default simple_calendar will set the calendar to use .
|
138
|
-
and .calendar classes.
|
138
|
+
By default simple_calendar will set the calendar to use .table
|
139
|
+
.table-bordered .table-striped and .calendar classes.
|
140
|
+
|
141
|
+
You can also override the class by passing in the `class` option.
|
142
|
+
|
143
|
+
```erb
|
144
|
+
<%= calendar @events, class: "simple-calendar" do |event| %>
|
145
|
+
<% end %>
|
146
|
+
```
|
@@ -10,14 +10,16 @@ module SimpleCalendar
|
|
10
10
|
:month => (params[:month] || Time.zone.now.month).to_i,
|
11
11
|
:prev_text => raw("«"),
|
12
12
|
:next_text => raw("»"),
|
13
|
-
:start_day => :sunday
|
13
|
+
:start_day => :sunday,
|
14
|
+
:class => "table table-bordered table-striped calendar",
|
15
|
+
|
14
16
|
}
|
15
17
|
options.reverse_merge! opts
|
16
18
|
events ||= []
|
17
|
-
selected_month = Date.
|
19
|
+
selected_month = Date.new(options[:year], options[:month])
|
18
20
|
current_date = Date.today
|
19
21
|
range = build_range selected_month, options
|
20
|
-
month_array =
|
22
|
+
month_array = range.each_slice(7).to_a
|
21
23
|
|
22
24
|
draw_calendar(selected_month, month_array, current_date, events, options, block)
|
23
25
|
end
|
@@ -25,42 +27,20 @@ module SimpleCalendar
|
|
25
27
|
private
|
26
28
|
|
27
29
|
def build_range(selected_month, options)
|
28
|
-
start_date = selected_month.beginning_of_month
|
29
|
-
|
30
|
-
|
31
|
-
end_date = selected_month.end_of_month
|
32
|
-
end_date = end_date.saturday? ? end_date : end_date.end_of_week(options[:start_day])
|
30
|
+
start_date = selected_month.beginning_of_month.beginning_of_week(options[:start_day])
|
31
|
+
end_date = selected_month.end_of_month.end_of_week(options[:start_day])
|
33
32
|
|
34
33
|
(start_date..end_date).to_a
|
35
34
|
end
|
36
35
|
|
37
|
-
def build_month(date_range)
|
38
|
-
month = []
|
39
|
-
week = []
|
40
|
-
i = 0
|
41
|
-
|
42
|
-
date_range.each do |date|
|
43
|
-
week << date
|
44
|
-
if i == 6
|
45
|
-
i = 0
|
46
|
-
month << week
|
47
|
-
week = []
|
48
|
-
else
|
49
|
-
i += 1
|
50
|
-
end
|
51
|
-
end
|
52
|
-
|
53
|
-
month
|
54
|
-
end
|
55
|
-
|
56
36
|
# Renders the calendar table
|
57
37
|
def draw_calendar(selected_month, month, current_date, events, options, block)
|
58
38
|
tags = []
|
59
39
|
today = Date.today
|
60
|
-
content_tag(:table, :class =>
|
40
|
+
content_tag(:table, :class => options[:class]) do
|
61
41
|
tags << month_header(selected_month, options)
|
62
42
|
day_names = I18n.t("date.abbr_day_names")
|
63
|
-
day_names.rotate(
|
43
|
+
day_names = day_names.rotate((Date::DAYS_INTO_WEEK[options[:start_day]] + 1) % 7)
|
64
44
|
tags << content_tag(:thead, content_tag(:tr, day_names.collect { |name| content_tag :th, name, :class => (selected_month.month == Date.today.month && Date.today.strftime("%a") == name ? "current-day" : nil)}.join.html_safe))
|
65
45
|
tags << content_tag(:tbody, :'data-month'=>selected_month.month, :'data-year'=>selected_month.year) do
|
66
46
|
|
@@ -75,12 +55,15 @@ module SimpleCalendar
|
|
75
55
|
td_class << "future" if today < date
|
76
56
|
td_class << "wday-#{date.wday.to_s}" # <- to enable different styles for weekend, etc
|
77
57
|
|
58
|
+
cur_events = day_events(date, events)
|
59
|
+
|
60
|
+
td_class << (cur_events.any? ? "events" : "no-events")
|
61
|
+
|
78
62
|
content_tag(:td, :class => td_class.join(" "), :'data-date-iso'=>date.to_s, 'data-date'=>date.to_s.gsub('-', '/')) do
|
79
63
|
content_tag(:div) do
|
80
64
|
divs = []
|
81
65
|
concat content_tag(:div, date.day.to_s, :class=>"day_number")
|
82
66
|
|
83
|
-
cur_events = day_events(date, events)
|
84
67
|
if cur_events.empty? && options[:empty_date]
|
85
68
|
concat options[:empty_date].call(date)
|
86
69
|
else
|
@@ -122,14 +105,8 @@ module SimpleCalendar
|
|
122
105
|
end
|
123
106
|
|
124
107
|
# Generates the link to next and previous months
|
125
|
-
def month_link(text,
|
126
|
-
link_to(text,
|
127
|
-
end
|
128
|
-
|
129
|
-
# Returns the full path to the calendar
|
130
|
-
# This is used for generating the links to the next and previous months
|
131
|
-
def simple_calendar_path
|
132
|
-
request.fullpath.split('?').first
|
108
|
+
def month_link(text, date, opts={})
|
109
|
+
link_to(text, {:month => date.month, :year => date.year}, opts)
|
133
110
|
end
|
134
111
|
end
|
135
112
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: simple_calendar
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.6
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-02-
|
12
|
+
date: 2013-02-25 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rails
|
@@ -57,7 +57,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
57
57
|
version: '0'
|
58
58
|
segments:
|
59
59
|
- 0
|
60
|
-
hash:
|
60
|
+
hash: 2470290329357686492
|
61
61
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
62
62
|
none: false
|
63
63
|
requirements:
|
@@ -66,7 +66,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
66
66
|
version: '0'
|
67
67
|
segments:
|
68
68
|
- 0
|
69
|
-
hash:
|
69
|
+
hash: 2470290329357686492
|
70
70
|
requirements: []
|
71
71
|
rubyforge_project: simple_calendar
|
72
72
|
rubygems_version: 1.8.24
|