simple_calendar 1.1.2 → 1.1.3
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.
- checksums.yaml +4 -4
- data/README.md +64 -8
- data/lib/simple_calendar/calendar.rb +25 -9
- data/lib/simple_calendar/month_calendar.rb +2 -2
- data/lib/simple_calendar/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 796aabd52df101faf850fc78a815ff5c77cdec9f
|
4
|
+
data.tar.gz: 624565897e01b55df78704601826f9c7bac1d432
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5998574923fe285b6bbe1ff027961dec8217fa2a88dfcb15985dbd1926c5ddb8d39ac74d585aa5f2f9fb19343d2e1f620dff5f4132f7a25e218fe6697ff7a3be
|
7
|
+
data.tar.gz: 4e06bc29b002fcb7dfb288907634637dee753bddf74b6db7e7a02c1b3b4986cc41aab3fc35636590a4c49d39a2f71c61e93296c785f49f3ea0d15d4e2837259a
|
data/README.md
CHANGED
@@ -224,25 +224,27 @@ And then your view would use `month_calendar_td_options` as the value.
|
|
224
224
|
<% end %>
|
225
225
|
```
|
226
226
|
|
227
|
-
### Custom Header Links
|
227
|
+
### Custom Header Title And Links
|
228
228
|
|
229
229
|
Each of the calendar methods will generate a header with links to the
|
230
230
|
previous and next views. The `month_calendar` also includes a header
|
231
|
-
that tells you the current month and year that you are viewing.
|
231
|
+
with a title that tells you the current month and year that you are viewing.
|
232
232
|
|
233
|
-
To change these, you can pass in the `prev_link`, `
|
233
|
+
To change these, you can pass in the `prev_link`, `title`, and
|
234
234
|
`next_link` options into the calendar methods.
|
235
235
|
|
236
236
|
The default `month_calendar` look like this:
|
237
237
|
|
238
238
|
```erb
|
239
239
|
<%= month_calendar prev_link: ->(range) { link_to raw("«"), param_name => range.first - 1.day },
|
240
|
-
|
240
|
+
title: ->{ content_tag :span, "#{I18n.t("date.month_names")[start_date.month]} #{start_date.year}", class: "calendar-title" },
|
241
241
|
next_link: ->(range) { link_to raw("»"), param_name => range.last + 1.day } do |day| %>
|
242
242
|
|
243
243
|
<% end %>
|
244
244
|
```
|
245
245
|
|
246
|
+
`title` option is a lambda that
|
247
|
+
|
246
248
|
`prev_link` option is a standard `link_to` that is a left arrow and
|
247
249
|
with the current url having `?start_date=2014-04-30` appended to it as
|
248
250
|
a date in the previous view of the calendar.
|
@@ -251,17 +253,71 @@ a date in the previous view of the calendar.
|
|
251
253
|
with the current url having `?start_date=2014-06-01` appended to it as
|
252
254
|
a date in the next view of the calendar.
|
253
255
|
|
254
|
-
`
|
256
|
+
`title` option is, by default, a simple span tag with the month and year
|
255
257
|
inside of it.
|
256
258
|
|
257
|
-
If you wish to
|
258
|
-
|
259
|
+
If you wish to add some styles to the header, you can use the `header`
|
260
|
+
option:
|
261
|
+
|
262
|
+
```erb
|
263
|
+
<%= month_calendar header: {class: "calendar-header"} do |day| %>
|
264
|
+
<% end %>
|
265
|
+
```
|
266
|
+
|
267
|
+
The table header (thead) is the row of day names across the top. It
|
268
|
+
tells you which column is which day. For example `Sun Mon Tue Wed`
|
269
|
+
|
270
|
+
If you want to use full day names instead of the abbreviated ones in the
|
271
|
+
table header, you can pass in the `day_names` option which points to a
|
272
|
+
validate I18n array.
|
273
|
+
|
274
|
+
```erb
|
275
|
+
<%= calendar day_names: "date.day_names" do |day, events| %>
|
276
|
+
<% end %>
|
277
|
+
```
|
278
|
+
|
279
|
+
Which renders:
|
280
|
+
|
281
|
+
```html
|
282
|
+
<thead>
|
283
|
+
<tr>
|
284
|
+
<th>Sunday</th>
|
285
|
+
<th>Monday</th>
|
286
|
+
<th>Tuesday</th>
|
287
|
+
<th>Wednesday</th>
|
288
|
+
</tr>
|
289
|
+
</thead>
|
290
|
+
```
|
291
|
+
|
292
|
+
By default we use the `date.abbr_day_names` translation to have shorter
|
293
|
+
header names.
|
259
294
|
|
260
295
|
```erb
|
261
|
-
<%=
|
296
|
+
<%= calendar day_names: "date.abbr_day_names" do |day, events| %>
|
262
297
|
<% end %>
|
263
298
|
```
|
264
299
|
|
300
|
+
This renders:
|
301
|
+
|
302
|
+
```html
|
303
|
+
<thead>
|
304
|
+
<tr>
|
305
|
+
<th>Sun</th>
|
306
|
+
<th>Mon</th>
|
307
|
+
<th>Tue</th>
|
308
|
+
<th>Wed</th>
|
309
|
+
</tr>
|
310
|
+
</thead>
|
311
|
+
```
|
312
|
+
|
313
|
+
You can disable the `thead` line if you like by passing in `false`.
|
314
|
+
|
315
|
+
```erb
|
316
|
+
<%= month_calendar thead: false do |day| %>
|
317
|
+
<% end %>
|
318
|
+
```
|
319
|
+
|
320
|
+
|
265
321
|
## TODO
|
266
322
|
|
267
323
|
- Multi-day events?
|
@@ -9,11 +9,12 @@ module SimpleCalendar
|
|
9
9
|
@events = opts.delete(:events) { [] }
|
10
10
|
|
11
11
|
opts.reverse_merge!(
|
12
|
+
header: {class: "calendar-header"},
|
12
13
|
previous_link: default_previous_link,
|
13
|
-
|
14
|
+
title: default_title,
|
14
15
|
next_link: default_next_link,
|
15
16
|
td: default_td_classes,
|
16
|
-
|
17
|
+
thead: default_thead,
|
17
18
|
)
|
18
19
|
|
19
20
|
@options = opts
|
@@ -30,9 +31,9 @@ module SimpleCalendar
|
|
30
31
|
|
31
32
|
def render_header
|
32
33
|
capture do
|
33
|
-
content_tag :
|
34
|
+
content_tag :header, get_option(:header) do
|
34
35
|
concat get_option(:previous_link, param_name, date_range)
|
35
|
-
concat get_option(:
|
36
|
+
concat get_option(:title, start_date)
|
36
37
|
concat get_option(:next_link, param_name, date_range)
|
37
38
|
end
|
38
39
|
end
|
@@ -40,8 +41,9 @@ module SimpleCalendar
|
|
40
41
|
|
41
42
|
def render_table
|
42
43
|
content_tag :table, get_option(:table) do
|
43
|
-
|
44
|
-
|
44
|
+
capture do
|
45
|
+
concat get_option(:thead, date_range.to_a.slice(0, 7))
|
46
|
+
concat content_tag(:tbody, render_weeks, get_option(:tbody))
|
45
47
|
end
|
46
48
|
end
|
47
49
|
end
|
@@ -57,7 +59,7 @@ module SimpleCalendar
|
|
57
59
|
def render_week(week)
|
58
60
|
results = week.map do |day|
|
59
61
|
content_tag :td, get_option(:td, start_date, day) do
|
60
|
-
block.call
|
62
|
+
block.call(day, events_for_date(day))
|
61
63
|
end
|
62
64
|
end
|
63
65
|
safe_join results
|
@@ -81,7 +83,7 @@ module SimpleCalendar
|
|
81
83
|
->(param, date_range) { link_to raw("«"), param => date_range.first - 1.day }
|
82
84
|
end
|
83
85
|
|
84
|
-
def
|
86
|
+
def default_title
|
85
87
|
->(start_date) { }
|
86
88
|
end
|
87
89
|
|
@@ -89,8 +91,22 @@ module SimpleCalendar
|
|
89
91
|
->(param, date_range) { link_to raw("»"), param => date_range.last + 1.day }
|
90
92
|
end
|
91
93
|
|
94
|
+
def default_thead
|
95
|
+
->(dates) {
|
96
|
+
content_tag(:thead) do
|
97
|
+
content_tag(:tr) do
|
98
|
+
capture do
|
99
|
+
dates.each do |date|
|
100
|
+
concat content_tag(:th, I18n.t(options.fetch(:day_names, "date.abbr_day_names"))[date.wday])
|
101
|
+
end
|
102
|
+
end
|
103
|
+
end
|
104
|
+
end
|
105
|
+
}
|
106
|
+
end
|
107
|
+
|
92
108
|
def start_date
|
93
|
-
@start_date ||= (params[param_name] ||Time.zone.now).to_date
|
109
|
+
@start_date ||= (params[param_name] || Time.zone.now).to_date
|
94
110
|
end
|
95
111
|
|
96
112
|
def date_range
|
@@ -4,8 +4,8 @@ module SimpleCalendar
|
|
4
4
|
@date_range ||= start_date.beginning_of_month.beginning_of_week..start_date.end_of_month.end_of_week
|
5
5
|
end
|
6
6
|
|
7
|
-
def
|
8
|
-
->(start_date) { content_tag :span, month_name(start_date)
|
7
|
+
def default_title
|
8
|
+
->(start_date) { content_tag :span, month_name(start_date) }
|
9
9
|
end
|
10
10
|
|
11
11
|
def month_name(start_date)
|