spud_events 0.9.0
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 +7 -0
- data/README.md +57 -0
- data/Rakefile +28 -0
- data/app/assets/images/spud/admin/events_thumb.png +0 -0
- data/app/assets/javascripts/calendar_events.js +2 -0
- data/app/assets/javascripts/calendars.js +2 -0
- data/app/assets/javascripts/spud/admin/calendar_events.js +2 -0
- data/app/assets/javascripts/spud/admin/calendars.js +0 -0
- data/app/assets/javascripts/spud/admin/events.js +51 -0
- data/app/assets/javascripts/spud/events.js +0 -0
- data/app/assets/lib/colorpicker/colorpicker.css +161 -0
- data/app/assets/lib/colorpicker/colorpicker.js +484 -0
- data/app/assets/lib/colorpicker/images/blank.gif +0 -0
- data/app/assets/lib/colorpicker/images/colorpicker_background.png +0 -0
- data/app/assets/lib/colorpicker/images/colorpicker_hex.png +0 -0
- data/app/assets/lib/colorpicker/images/colorpicker_hsb_b.png +0 -0
- data/app/assets/lib/colorpicker/images/colorpicker_hsb_h.png +0 -0
- data/app/assets/lib/colorpicker/images/colorpicker_hsb_s.png +0 -0
- data/app/assets/lib/colorpicker/images/colorpicker_indic.gif +0 -0
- data/app/assets/lib/colorpicker/images/colorpicker_overlay.png +0 -0
- data/app/assets/lib/colorpicker/images/colorpicker_rgb_b.png +0 -0
- data/app/assets/lib/colorpicker/images/colorpicker_rgb_g.png +0 -0
- data/app/assets/lib/colorpicker/images/colorpicker_rgb_r.png +0 -0
- data/app/assets/lib/colorpicker/images/colorpicker_select.gif +0 -0
- data/app/assets/lib/colorpicker/images/colorpicker_submit.png +0 -0
- data/app/assets/lib/colorpicker/images/custom_background.png +0 -0
- data/app/assets/lib/colorpicker/images/custom_hex.png +0 -0
- data/app/assets/lib/colorpicker/images/custom_hsb_b.png +0 -0
- data/app/assets/lib/colorpicker/images/custom_hsb_h.png +0 -0
- data/app/assets/lib/colorpicker/images/custom_hsb_s.png +0 -0
- data/app/assets/lib/colorpicker/images/custom_indic.gif +0 -0
- data/app/assets/lib/colorpicker/images/custom_rgb_b.png +0 -0
- data/app/assets/lib/colorpicker/images/custom_rgb_g.png +0 -0
- data/app/assets/lib/colorpicker/images/custom_rgb_r.png +0 -0
- data/app/assets/lib/colorpicker/images/custom_submit.png +0 -0
- data/app/assets/lib/colorpicker/images/select.png +0 -0
- data/app/assets/lib/colorpicker/images/select2.png +0 -0
- data/app/assets/lib/colorpicker/images/slider.png +0 -0
- data/app/assets/stylesheets/spud/admin/events.css +16 -0
- data/app/assets/stylesheets/spud/calendar_events.css +18 -0
- data/app/assets/stylesheets/spud/calendars.css +136 -0
- data/app/assets/stylesheets/spud/events.css +4 -0
- data/app/controllers/calendar_events_controller.rb +8 -0
- data/app/controllers/calendars_controller.rb +30 -0
- data/app/controllers/spud/admin/calendar_events_controller.rb +64 -0
- data/app/controllers/spud/admin/calendars_controller.rb +52 -0
- data/app/helpers/calendars_helper.rb +49 -0
- data/app/helpers/spud/admin/calendar_events_helper.rb +2 -0
- data/app/helpers/spud/admin/calendars_helper.rb +13 -0
- data/app/models/spud_calendar.rb +7 -0
- data/app/models/spud_calendar_event.rb +11 -0
- data/app/views/calendar_events/show.html.erb +5 -0
- data/app/views/calendars/_calendar.html.erb +26 -0
- data/app/views/calendars/_calendar_options.html.erb +4 -0
- data/app/views/calendars/show.html.erb +4 -0
- data/app/views/spud/admin/calendar_events/_calendar.html.erb +14 -0
- data/app/views/spud/admin/calendar_events/_form.html.erb +98 -0
- data/app/views/spud/admin/calendar_events/edit.html.erb +1 -0
- data/app/views/spud/admin/calendar_events/index.html.erb +20 -0
- data/app/views/spud/admin/calendar_events/new.html.erb +1 -0
- data/app/views/spud/admin/calendars/_calendar_legend.html.erb +7 -0
- data/app/views/spud/admin/calendars/_form.html.erb +20 -0
- data/app/views/spud/admin/calendars/edit.html.erb +1 -0
- data/app/views/spud/admin/calendars/new.html.erb +1 -0
- data/config/application.rb +50 -0
- data/config/boot.rb +6 -0
- data/config/routes.rb +17 -0
- data/db/migrate/20120216191833_create_spud_calendars.rb +12 -0
- data/db/migrate/20120216192531_create_spud_calendar_events.rb +15 -0
- data/db/migrate/20130214131628_add_location_to_spud_calendar_event.rb +10 -0
- data/lib/spud_events.rb +8 -0
- data/lib/spud_events/calendar_builder.rb +133 -0
- data/lib/spud_events/configuration.rb +10 -0
- data/lib/spud_events/engine.rb +30 -0
- data/lib/spud_events/table_builder.rb +88 -0
- data/lib/spud_events/version.rb +5 -0
- metadata +258 -0
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/* ...
|
|
2
|
+
*= require spud/calendars
|
|
3
|
+
*= require spud/calendar_events
|
|
4
|
+
*= require colorpicker/colorpicker
|
|
5
|
+
*= require_self
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
/* Calendar Color Picker
|
|
9
|
+
----------------------- */
|
|
10
|
+
.spud_events_admin_color_picker {
|
|
11
|
+
height: 28px;
|
|
12
|
+
width: 28px;
|
|
13
|
+
display: block;
|
|
14
|
+
background-image: url('/assets/colorpicker/images/select2.png');
|
|
15
|
+
background-position: 50% 50%;
|
|
16
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
a.spud_events_admin_calendar_event_marker,
|
|
2
|
+
a.spud_events_calendar_event_marker {
|
|
3
|
+
color: black;
|
|
4
|
+
font-size: 11px;
|
|
5
|
+
padding: 0 3px;
|
|
6
|
+
margin: 0 0 3px 0;
|
|
7
|
+
line-height: 13px;
|
|
8
|
+
display: block;
|
|
9
|
+
-moz-border-radius: 3px;
|
|
10
|
+
-webkit-border-radius: 3px;
|
|
11
|
+
border-radius: 3px;
|
|
12
|
+
text-decoration: none;
|
|
13
|
+
}
|
|
14
|
+
span.spud_events_admin_calendar_event_marker:last-child,
|
|
15
|
+
span.spud_events_calendar_event_marker:last-child {
|
|
16
|
+
color: #191919;
|
|
17
|
+
margin: 0;
|
|
18
|
+
}
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
/* Calendar Tables
|
|
2
|
+
----------------------- */
|
|
3
|
+
#spud_events_admin_calendar table,
|
|
4
|
+
#spud_events_calendar table {
|
|
5
|
+
border-collapse: collapse;
|
|
6
|
+
font-size: 13px;
|
|
7
|
+
border: 1px solid #d9d9d9;;
|
|
8
|
+
width: 100%;
|
|
9
|
+
}
|
|
10
|
+
#spud_events_admin_calendar th,
|
|
11
|
+
#spud_events_calendar th {
|
|
12
|
+
background-image: -webkit-gradient(
|
|
13
|
+
linear,
|
|
14
|
+
left bottom,
|
|
15
|
+
left top,
|
|
16
|
+
color-stop(0, rgb(244,244,244)),
|
|
17
|
+
color-stop(1, rgb(255,255,255))
|
|
18
|
+
);
|
|
19
|
+
background-image: -moz-linear-gradient(
|
|
20
|
+
center bottom,
|
|
21
|
+
rgb(244,244,244) 6%,
|
|
22
|
+
rgb(255,255,255) 53%
|
|
23
|
+
);
|
|
24
|
+
}
|
|
25
|
+
#spud_events_admin_calendar td, #spud_events_admin_calendar th,
|
|
26
|
+
#spud_events_calendar td, #spud_events_calendar th {
|
|
27
|
+
padding: 0 10px;
|
|
28
|
+
line-height: 30px;
|
|
29
|
+
text-align: left;
|
|
30
|
+
vertical-align: middle;
|
|
31
|
+
}
|
|
32
|
+
#spud_events_admin_calendar td img, #spud_events_admin_calendar th img,
|
|
33
|
+
#spud_events_calendar td img, #spud_events_calendar th img {
|
|
34
|
+
display: block;
|
|
35
|
+
}
|
|
36
|
+
#spud_events_admin_calendar tbody tr,
|
|
37
|
+
#spud_events_calendar tbody tr {
|
|
38
|
+
border-top: 1px solid #d9d9d9;
|
|
39
|
+
border-bottom: 1px solid #d9d9d9;
|
|
40
|
+
-webkit-transition:background 0.15s ease-in;
|
|
41
|
+
-moz-transition:background 0.15s ease-in;
|
|
42
|
+
}
|
|
43
|
+
#spud_events_admin_calendar tbody tr:hover,
|
|
44
|
+
#spud_events_calendar tbody tr:hover {
|
|
45
|
+
background: #f0f0f0;
|
|
46
|
+
-webkit-transition:background 0.15s ease-in;
|
|
47
|
+
-moz-transition:background 0.15s ease-in;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
#spud_events_admin_calendar,
|
|
51
|
+
#spud_events_calendar {
|
|
52
|
+
width: 700px;
|
|
53
|
+
padding-bottom: 50px;
|
|
54
|
+
position: relative;
|
|
55
|
+
float: left;
|
|
56
|
+
}
|
|
57
|
+
#spud_events_calendar {
|
|
58
|
+
width: auto;
|
|
59
|
+
}
|
|
60
|
+
#spud_events_admin_calendar p:first-child,
|
|
61
|
+
#spud_events_calendar p:first-child {
|
|
62
|
+
float: right;
|
|
63
|
+
}
|
|
64
|
+
#spud_events_admin_calendar table,
|
|
65
|
+
#spud_events_calendar table {
|
|
66
|
+
margin: 15px 0 0;
|
|
67
|
+
}
|
|
68
|
+
#spud_events_admin_calendar th,
|
|
69
|
+
#spud_events_calendar th {
|
|
70
|
+
text-align: center;
|
|
71
|
+
}
|
|
72
|
+
#spud_events_admin_calendar td,
|
|
73
|
+
#spud_events_calendar td {
|
|
74
|
+
border: 1px solid #d9d9d9;;
|
|
75
|
+
position: relative;
|
|
76
|
+
height: 90px;
|
|
77
|
+
padding: 0;
|
|
78
|
+
vertical-align: top;
|
|
79
|
+
width: 98px;
|
|
80
|
+
}
|
|
81
|
+
.spud_events_admin_calendar_date_container,
|
|
82
|
+
.spud_events_calendar_date_container {
|
|
83
|
+
display: block;
|
|
84
|
+
padding: 18px 5px 0;
|
|
85
|
+
position: relative;
|
|
86
|
+
}
|
|
87
|
+
span.spud_events_admin_calendar_date,
|
|
88
|
+
span.spud_events_calendar_date {
|
|
89
|
+
position: absolute;
|
|
90
|
+
top: 3px;
|
|
91
|
+
right: 3px;
|
|
92
|
+
font-size: 11px;
|
|
93
|
+
line-height: 11px;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
/* Calendar Legend
|
|
97
|
+
----------------------- */
|
|
98
|
+
#spud_events_admin_calendar_legend,
|
|
99
|
+
#spud_events_calendar_legend {
|
|
100
|
+
list-style: none;
|
|
101
|
+
border: 1px solid #d9d9d9;
|
|
102
|
+
padding: 0;
|
|
103
|
+
margin: 45px 0 0 725px;
|
|
104
|
+
}
|
|
105
|
+
#spud_events_admin_calendar_legend li,
|
|
106
|
+
#spud_events_calendar_legend li {
|
|
107
|
+
display: block;
|
|
108
|
+
padding: 5px 5px 5px 3px;
|
|
109
|
+
-webkit-transition: background 0.15s ease-in;
|
|
110
|
+
}
|
|
111
|
+
#spud_events_admin_calendar_legend li:hover,
|
|
112
|
+
#spud_events_calendar_legend li:hover {
|
|
113
|
+
background: #F0F0F0;
|
|
114
|
+
}
|
|
115
|
+
#spud_events_admin_calendar_legend li,
|
|
116
|
+
#spud_events_calendar_legend li {
|
|
117
|
+
border-bottom: 1px solid #d9d9d9;
|
|
118
|
+
}
|
|
119
|
+
#spud_events_admin_calendar_legend li:last-child,
|
|
120
|
+
#spud_events_calendar_legend li:last-child {
|
|
121
|
+
border: none;
|
|
122
|
+
}
|
|
123
|
+
.spud_events_admin_calendar_actions,
|
|
124
|
+
.spud_events_calendar_actions {
|
|
125
|
+
text-align: right;
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
#spud_events_admin_calendar_legend span,
|
|
129
|
+
#spud_events_calendar_legend span {
|
|
130
|
+
display: inline-block;
|
|
131
|
+
-moz-border-radius: 3px;
|
|
132
|
+
-webkit-border-radius: 3px;
|
|
133
|
+
border-radius: 3px;
|
|
134
|
+
padding: 2px 8px;
|
|
135
|
+
margin: 8px 0 0 8px;
|
|
136
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
class CalendarsController < ApplicationController
|
|
2
|
+
|
|
3
|
+
layout Spud::Events.config.calendar_layout || 'spud/calendar'
|
|
4
|
+
|
|
5
|
+
def show
|
|
6
|
+
if params[:month]
|
|
7
|
+
year = params[:year] ? params[:year] : Time.new.year
|
|
8
|
+
begin
|
|
9
|
+
@calendar_date = Time.local(year, params[:month])
|
|
10
|
+
rescue
|
|
11
|
+
@calendar_date = default_date
|
|
12
|
+
end
|
|
13
|
+
else
|
|
14
|
+
@calendar_date = default_date
|
|
15
|
+
end
|
|
16
|
+
if params[:calendar] && calendar = SpudCalendar.find_by_title(params[:calendar].titleize)
|
|
17
|
+
@events = calendar.spud_calendar_events.where(["start_at >= ?",@calendar_date]).order(:start_at).all
|
|
18
|
+
else
|
|
19
|
+
@events = SpudCalendarEvent.where(["start_at >= ?",@calendar_date]).order(:start_at).all
|
|
20
|
+
end
|
|
21
|
+
@current_calendar = params[:calendar] ? params[:calendar] : 0
|
|
22
|
+
@page_title = @calendar_date.strftime("Calendar - %B %Y")
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def default_date
|
|
26
|
+
tempDate = Time.new
|
|
27
|
+
return Time.local(tempDate.year,tempDate.month)
|
|
28
|
+
|
|
29
|
+
end
|
|
30
|
+
end
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
class Spud::Admin::CalendarEventsController < Spud::Admin::ApplicationController
|
|
2
|
+
|
|
3
|
+
layout 'spud/admin/detail'
|
|
4
|
+
add_breadcrumb "Events", :spud_admin_list_spud_calendar_events_path
|
|
5
|
+
belongs_to_spud_app :events
|
|
6
|
+
|
|
7
|
+
respond_to :html, :xml, :json
|
|
8
|
+
respond_to :js, :only => [:index, ]
|
|
9
|
+
|
|
10
|
+
def index
|
|
11
|
+
if params[:month]
|
|
12
|
+
year = params[:year] ? params[:year] : Time.new.year
|
|
13
|
+
begin
|
|
14
|
+
@calendar_date = Time.local(year, params[:month])
|
|
15
|
+
rescue
|
|
16
|
+
@calendar_date = Time.new
|
|
17
|
+
end
|
|
18
|
+
else
|
|
19
|
+
@calendar_date = Time.new
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
if params[:spud_calendar] && calendar = SpudCalendar.find_by_title(params[:spud_calendar].titleize)
|
|
23
|
+
@calendar_events = calendar.events
|
|
24
|
+
else
|
|
25
|
+
@calendar_events = SpudCalendarEvent
|
|
26
|
+
end
|
|
27
|
+
@calendar_events = @calendar_events.in_month_of(@calendar_date).order('spud_calendar_events.start_at ASC').all
|
|
28
|
+
|
|
29
|
+
@calendars = SpudCalendar.all
|
|
30
|
+
@current_calendar = params[:spud_calendar] ? params[:spud_calendar] : 0
|
|
31
|
+
|
|
32
|
+
respond_with(@calendars, :include => :events)
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def new
|
|
36
|
+
@calendar_event = SpudCalendarEvent.new
|
|
37
|
+
if params[:spud_calendar]
|
|
38
|
+
@calendar_event.spud_calendar_id = SpudCalendar.find_by_title(params[:spud_calendar].titleize).id
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
def edit
|
|
43
|
+
@calendar_event = SpudCalendarEvent.find(params[:id])
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
def create
|
|
47
|
+
@calendar_event = SpudCalendarEvent.new(params[:spud_calendar_event])
|
|
48
|
+
flash[:notice] = 'Calendar event was successfully created.' if @calendar_event.save
|
|
49
|
+
respond_with(@calendar_event, :location => spud_admin_list_spud_calendar_events_path)
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
def update
|
|
53
|
+
@calendar_event = SpudCalendarEvent.find(params[:id])
|
|
54
|
+
flash[:notice] = 'Calendar event was successfully updated.' if @calendar_event.update_attributes(params[:spud_calendar_event])
|
|
55
|
+
respond_with(@calendar_event, :location =>spud_admin_list_spud_calendar_events_path)
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
def destroy
|
|
59
|
+
@calendar_event = SpudCalendarEvent.find(params[:id])
|
|
60
|
+
@calendar_event.destroy
|
|
61
|
+
respond_with(@calendar_event, :location => spud_admin_list_spud_calendar_events_path)
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
end
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
class Spud::Admin::CalendarsController < Spud::Admin::ApplicationController
|
|
2
|
+
|
|
3
|
+
layout 'spud/admin/detail'
|
|
4
|
+
add_breadcrumb "Events", :spud_admin_list_spud_calendar_events_path
|
|
5
|
+
|
|
6
|
+
belongs_to_spud_app :events
|
|
7
|
+
|
|
8
|
+
respond_to :html, :xml, :json, :js
|
|
9
|
+
|
|
10
|
+
def new
|
|
11
|
+
@page_name = "New Calendar"
|
|
12
|
+
@calendar = SpudCalendar.new
|
|
13
|
+
respond_with(@calendar)
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def create
|
|
17
|
+
@calendar = SpudCalendar.new(params[:spud_calendar])
|
|
18
|
+
if @calendar.save
|
|
19
|
+
redirect_to spud_admin_list_spud_calendar_events_path
|
|
20
|
+
else
|
|
21
|
+
render :action => "new"
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def edit
|
|
26
|
+
@page_name = "Edit Calendar"
|
|
27
|
+
@calendar = SpudCalendar.find(params[:id])
|
|
28
|
+
respond_with(@calendar)
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def update
|
|
32
|
+
@calendar = SpudCalendar.find(params[:id])
|
|
33
|
+
if @calendar.update_attributes(params[:spud_calendar])
|
|
34
|
+
flash[:notice] = 'Calendar was successfully updated.'
|
|
35
|
+
redirect_to spud_admin_list_spud_calendar_events_path
|
|
36
|
+
else
|
|
37
|
+
render :action => "edit"
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
def destroy
|
|
42
|
+
@calendar = SpudCalendar.find(params[:id])
|
|
43
|
+
@calendar.spud_calendar_events.each do |event|
|
|
44
|
+
event.update_attribute(:spud_calendar_id, 0)
|
|
45
|
+
end
|
|
46
|
+
@calendar.destroy
|
|
47
|
+
respond_with(@calendar) do |format|
|
|
48
|
+
format.js { render(:nothing => true) }
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
end
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
module CalendarsHelper
|
|
2
|
+
def build_calendar_for(objects, *args, &block)
|
|
3
|
+
raise ArgumentError, "Missing block" unless block_given?
|
|
4
|
+
options = args.last.is_a?(Hash) ? args.pop : {}
|
|
5
|
+
html_options = options[:html]
|
|
6
|
+
builder = options[:builder] || Spud::Events::CalendarBuilder
|
|
7
|
+
calendar = options[:calendar] || Spud::Events::Calendar
|
|
8
|
+
|
|
9
|
+
content = with_output_buffer{block.call(builder.new(objects||[], self, calendar, options))}
|
|
10
|
+
self.content_tag(:table, content, html_options, false)
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def get_calendar_options(text_for_all)
|
|
14
|
+
options_for_select(SpudCalendar.all.collect { |f| [f.title, f.title.gsub(/([^A-Z0-9]+)/i, "-").downcase] }.insert(0, text_for_all), @current_calendar)
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def calendar_fore_color(backcolor)
|
|
18
|
+
fore_color = "ffffff"
|
|
19
|
+
if backcolor.length != 6
|
|
20
|
+
return fore_color
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
red = backcolor[0,2].hex
|
|
24
|
+
green = backcolor[2,2].hex
|
|
25
|
+
blue = backcolor[4,2].hex
|
|
26
|
+
|
|
27
|
+
perceived_brightness = Math.sqrt(red*red*0.241 + green*green*0.691 + blue*blue*0.068)
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
# average = (red+green+blue) / 3
|
|
31
|
+
if(perceived_brightness >= 130)
|
|
32
|
+
return "000000"
|
|
33
|
+
else
|
|
34
|
+
return fore_color
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def link_to_previous_calendar_month(date, url_for_options)
|
|
39
|
+
date = date.advance(:months => -1)
|
|
40
|
+
calendar = params[:calendar] ? params[:calendar] : nil
|
|
41
|
+
link_to('« Previous Month'.html_safe, calendar_path(:month => date.month, :year => date.year, :calendar => calendar), :class => 'spud_events_calendar_link previous_calendar btn').html_safe
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
def link_to_next_calendar_month(date, url_for_options)
|
|
45
|
+
date = date.advance(:months => 1)
|
|
46
|
+
calendar = params[:calendar] ? params[:calendar] : nil
|
|
47
|
+
link_to('Next Month »'.html_safe, calendar_path(:month => date.month, :year => date.year, :calendar => calendar), :class => 'spud_events_calendar_link next_calendar btn').html_safe
|
|
48
|
+
end
|
|
49
|
+
end
|