calendar_view 0.0.2 → 0.0.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.
- data/README.markdown +28 -4
- data/app/helpers/calendar_view_helper.rb +84 -38
- data/lib/calendar_view/version.rb +1 -1
- data/public/stylesheets/calendar_olive.css +57 -0
- metadata +5 -4
data/README.markdown
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
## Introduction
|
|
2
|
-
_Calendar view_ is a rails plugin which extends application of calendar
|
|
2
|
+
_Calendar view_ is a rails plugin which extends application of calendar views.
|
|
3
3
|
|
|
4
4
|
## Requirements
|
|
5
5
|
|
|
6
|
-
|
|
6
|
+
Plugin was built as Rails 3 Engine plugin.
|
|
7
7
|
|
|
8
8
|
## Usage
|
|
9
9
|
|
|
10
10
|
Add to Gemfile of application:
|
|
11
11
|
|
|
12
12
|
```ruby
|
|
13
|
-
gem "calendar_view"
|
|
13
|
+
gem "calendar_view", "~> 0.0.3"
|
|
14
14
|
```
|
|
15
15
|
|
|
16
16
|
than
|
|
@@ -19,9 +19,33 @@ than
|
|
|
19
19
|
bundle install
|
|
20
20
|
```
|
|
21
21
|
|
|
22
|
+
to install gem.
|
|
23
|
+
|
|
22
24
|
In views of Your application add:
|
|
23
25
|
|
|
24
26
|
```ruby
|
|
25
|
-
|
|
27
|
+
<% 1.upto(6) do |i| %>
|
|
28
|
+
<%= calendar_square(:month=>i,:highlight_between => Date.new(2011,9,19)..Date.new(2011,9,25)) %>
|
|
29
|
+
<% end %>
|
|
30
|
+
<%= calendar_square %>
|
|
31
|
+
<%= calendar_square(:month_delta=>-12,:year_delta=>-1) %>
|
|
32
|
+
<%= calendar_square(:month_delta=>12) %>
|
|
33
|
+
<%= calendar_square(:month=>12,:highlight_date => Date.new(2011,12,2)) %>
|
|
34
|
+
<%= calendar_square(:month=>1,:first_wday=>0) %>
|
|
35
|
+
<%= calendar_square(
|
|
36
|
+
:month => 1, # month
|
|
37
|
+
:year => 2011, # year
|
|
38
|
+
:month_delta => -1, # relative to month
|
|
39
|
+
:year_delta => -2, # relative to year
|
|
40
|
+
:first_wday => 0, # start of week 0 - Sunday, 1 - Monday
|
|
41
|
+
:highlight_date => Date.new(2011,12,2), # highlight specific day
|
|
42
|
+
:highlight_day => 2, # highlight specific day
|
|
43
|
+
:highlight_month => 12, # highlight specific day
|
|
44
|
+
:highlight_year => 2011, # highlight specific day
|
|
45
|
+
:highlight_between => Date.new(2011,12,1)..Date.new(2011,12,10) # highlight range of days
|
|
46
|
+
) %>
|
|
26
47
|
```
|
|
27
48
|
|
|
49
|
+
Customize _public/stylesheets_ and copy to Your public directory.
|
|
50
|
+
|
|
51
|
+
|
|
@@ -1,56 +1,102 @@
|
|
|
1
1
|
module CalendarViewHelper
|
|
2
|
-
|
|
2
|
+
|
|
3
|
+
def color_follow_day(today,follow_day,highlight)
|
|
4
|
+
day = follow_day.day
|
|
5
|
+
c = ""
|
|
6
|
+
c << "this " if (highlight.class.eql?(Range) && highlight.include?(follow_day)) || follow_day == highlight
|
|
7
|
+
c << "today " if follow_day == today
|
|
8
|
+
c << "weekend " if [0,6].include?(follow_day.wday)
|
|
9
|
+
"<td class=\"#{c}\">#{day}</td>"
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def wdays_names(first_wday)
|
|
13
|
+
html = ""
|
|
14
|
+
first_wday.upto(first_wday+6) do |i|
|
|
15
|
+
html << "<td class=\"wday\">#{t(:abbr_day_names,:scope=>:date)[i == 7 ? 0 : i]}</td>"
|
|
16
|
+
end
|
|
17
|
+
html
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def calendar_square(options={})
|
|
21
|
+
|
|
3
22
|
now = DateTime.now
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
1.upto(6) do |i|
|
|
14
|
-
html << "<td class=\"wday\">#{t(:abbr_day_names,:scope=>:date)[i]}</td>"
|
|
23
|
+
month = options[:month] ? options[:month] : now.month
|
|
24
|
+
year = options[:year] ? options[:year] : now.year
|
|
25
|
+
|
|
26
|
+
month_delta = options[:month_delta] ? options[:month_delta] : 0
|
|
27
|
+
year_delta = options[:year_delta] ? options[:year_delta] : 0
|
|
28
|
+
|
|
29
|
+
highlight = options[:highlight_date] ? options[:highlight_date] : nil
|
|
30
|
+
if options[:highlight_day] && options[:highlight_month] && options[:highlight_year]
|
|
31
|
+
highlight = Date.new(options[:highlight_year],options[:highlight_month],options[:highlight_day])
|
|
15
32
|
end
|
|
16
|
-
|
|
17
|
-
|
|
33
|
+
highlight = options[:highlight_between] if options[:highlight_between]
|
|
34
|
+
|
|
35
|
+
month = month + month_delta
|
|
36
|
+
year = year + year_delta
|
|
37
|
+
delta = month.divmod(12)
|
|
38
|
+
|
|
39
|
+
if delta[1].zero?
|
|
40
|
+
year = year + delta[0] -1
|
|
41
|
+
month = 12
|
|
42
|
+
else
|
|
43
|
+
year = year + delta[0]
|
|
44
|
+
month = delta[1]
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
first_wday = options[:first_wday] == 0 ? 0 : 1
|
|
48
|
+
last_wday = first_wday == 0 ? 6 : 0
|
|
49
|
+
first = Date.new(year,month,1)
|
|
50
|
+
last = Date.new(year,month,-1)
|
|
51
|
+
today = Date.new(now.year,now.month,now.day)
|
|
18
52
|
|
|
53
|
+
html = ""
|
|
54
|
+
html << "<div class=\"calendar square\">"
|
|
55
|
+
html << "<h3>"
|
|
56
|
+
html << t(:month_names,:scope=>:date)[month]
|
|
57
|
+
html << " #{year}" if year != now.year
|
|
58
|
+
html << "</h3>"
|
|
59
|
+
html << "<div class=\"content\">"
|
|
60
|
+
html << "<table>"
|
|
19
61
|
|
|
20
|
-
html << "<tr>"
|
|
21
|
-
html <<
|
|
62
|
+
html << "<tr><td class=\"outside\"> </td>"
|
|
63
|
+
html << wdays_names(first_wday)
|
|
64
|
+
html << "</tr>"
|
|
22
65
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
66
|
+
if first.wday != first_wday
|
|
67
|
+
(first_wday == 0 ? (first.wday == 0 ? 7 : first.wday) : (first.wday == 0 ? 7 : first.wday) - 1).downto(1) do |i|
|
|
68
|
+
prev = first - i
|
|
69
|
+
logger.custom(i,prev.to_s)
|
|
70
|
+
if prev.wday == first_wday
|
|
71
|
+
html << "<tr>"
|
|
72
|
+
html << "<td class=\"weeknum\">#{prev.cweek}</td>"
|
|
73
|
+
end
|
|
74
|
+
html << "<td class=\"outside\">#{prev.day}</td>"
|
|
75
|
+
end
|
|
26
76
|
end
|
|
27
77
|
|
|
28
78
|
(first.day).upto(last.day) do |i|
|
|
29
|
-
|
|
30
|
-
if
|
|
31
|
-
html << "</tr>"
|
|
79
|
+
follow_day = Date.new(year,month,i)
|
|
80
|
+
if follow_day.wday == first_wday
|
|
32
81
|
html << "<tr>"
|
|
33
|
-
|
|
34
|
-
html << "<td class=\"week\">#{curr_week}</td>"
|
|
82
|
+
html << "<td class=\"weeknum\">#{follow_day.cweek}</td>"
|
|
35
83
|
end
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
if curr.wday == 0 || curr.wday == 6
|
|
40
|
-
html << "<td class=\"weekend\">#{i}</td>"
|
|
41
|
-
else
|
|
42
|
-
html << "<td>#{i}</td>"
|
|
43
|
-
end
|
|
84
|
+
html << color_follow_day(today,follow_day,highlight)
|
|
85
|
+
if follow_day.wday == last_wday
|
|
86
|
+
html << "</tr>"
|
|
44
87
|
end
|
|
45
88
|
end
|
|
46
89
|
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
90
|
+
if last_wday != last.wday
|
|
91
|
+
1.upto(7-(first_wday == 0 ? last.wday+1 : last.wday)) do |i|
|
|
92
|
+
post = last + i
|
|
93
|
+
html << "<td class=\"outside\">#{post.day}</td>"
|
|
94
|
+
end
|
|
50
95
|
end
|
|
51
|
-
|
|
52
96
|
html << "</tr>"
|
|
53
|
-
|
|
54
|
-
html
|
|
97
|
+
|
|
98
|
+
html << "</table></div></div>"
|
|
99
|
+
html.html_safe
|
|
55
100
|
end
|
|
101
|
+
|
|
56
102
|
end
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
div.calendar {
|
|
2
|
+
margin-bottom: 10px;
|
|
3
|
+
background: none repeat scroll 0 0 #FFFFFF;
|
|
4
|
+
border-bottom-left-radius: 4px;
|
|
5
|
+
border-bottom-right-radius: 4px;
|
|
6
|
+
border-top-left-radius: 4px;
|
|
7
|
+
border-top-right-radius: 4px;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
div.calendar h3 {
|
|
11
|
+
background: none repeat scroll 0 0 #5E634E;
|
|
12
|
+
border-bottom: 6px solid #DACF77;
|
|
13
|
+
color: #FFFFFF;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
div.calendar div.content {
|
|
17
|
+
padding: 4px;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
div.calendar table {
|
|
21
|
+
width: 100%;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
div.calendar td {
|
|
25
|
+
text-align: right;
|
|
26
|
+
background-color: #EFF3E4;
|
|
27
|
+
padding: 2px;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
div.calendar td.wday, div.calendar td.weeknum {
|
|
31
|
+
color: white;
|
|
32
|
+
background-color: #DACF77;
|
|
33
|
+
font-weight: bold;
|
|
34
|
+
text-align: center;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
div.calendar td.weekend {
|
|
38
|
+
color: white;
|
|
39
|
+
background-color: #5E634E;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
div.calendar td.outside {
|
|
43
|
+
background-color: white;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
div.calendar td.this {
|
|
47
|
+
font-weight: bold;
|
|
48
|
+
font-size: 13px;
|
|
49
|
+
text-decoration: underline;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
div.calendar td.today {
|
|
53
|
+
font-weight: bold;
|
|
54
|
+
color: red;
|
|
55
|
+
font-size: 13px;
|
|
56
|
+
text-decoration: underline;
|
|
57
|
+
}
|
metadata
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: calendar_view
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
hash:
|
|
4
|
+
hash: 25
|
|
5
5
|
prerelease:
|
|
6
6
|
segments:
|
|
7
7
|
- 0
|
|
8
8
|
- 0
|
|
9
|
-
-
|
|
10
|
-
version: 0.0.
|
|
9
|
+
- 3
|
|
10
|
+
version: 0.0.3
|
|
11
11
|
platform: ruby
|
|
12
12
|
authors:
|
|
13
13
|
- Wojciech Todryk
|
|
@@ -15,7 +15,7 @@ autorequire:
|
|
|
15
15
|
bindir: bin
|
|
16
16
|
cert_chain: []
|
|
17
17
|
|
|
18
|
-
date: 2011-09-
|
|
18
|
+
date: 2011-09-23 00:00:00 Z
|
|
19
19
|
dependencies:
|
|
20
20
|
- !ruby/object:Gem::Dependency
|
|
21
21
|
name: rails
|
|
@@ -51,6 +51,7 @@ files:
|
|
|
51
51
|
- calendar_view.gemspec
|
|
52
52
|
- lib/calendar_view.rb
|
|
53
53
|
- lib/calendar_view/version.rb
|
|
54
|
+
- public/stylesheets/calendar_olive.css
|
|
54
55
|
homepage: https://github.com/musashimm/calendar_view
|
|
55
56
|
licenses: []
|
|
56
57
|
|