caboose-cms 0.9.124 → 0.9.125
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/controllers/caboose/calendars_controller.rb +54 -1
- data/app/controllers/caboose/event_groups_controller.rb +2 -1
- data/app/controllers/caboose/events_controller.rb +41 -22
- data/app/models/caboose/calendar_event.rb +24 -4
- data/app/models/caboose/calendar_event_group.rb +5 -5
- data/app/models/caboose/schema.rb +5 -1
- data/app/views/caboose/calendars/admin_edit.html.erb +118 -122
- data/app/views/caboose/calendars/admin_edit_old.html.erb +141 -0
- data/app/views/caboose/calendars/admin_index.html.erb +7 -4
- data/app/views/caboose/events/admin_edit.html.erb +52 -33
- data/app/views/caboose/events/admin_new.html.erb +5 -1
- data/app/views/caboose/events/show.html.erb +68 -0
- data/app/views/caboose/pages/_admin_header.html.erb +2 -2
- data/app/views/caboose/users/admin_edit.html.erb +1 -0
- data/lib/caboose/version.rb +1 -1
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6d0f41c9e4aac8144f0c2ea941bb103882a5816b
|
4
|
+
data.tar.gz: 56262fc53302f3ff7796ab9fe98a7ce744a44567
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2123ed23c5f19fdb0a2884c9143bf34b59fbfd6a282299805b19fa45ecbd0c3d98d385dc0aa3f9b72a8ea95ec2122a78321887cae945ac49bd684ff5931e395f
|
7
|
+
data.tar.gz: 5096d6d79e8e5fb41afc0ca2e93aaa0d854ed6612ae5cad8ddff65d6bee9fa0ea5011e3072a4454d6fb2510dce0cbee4e6a560ceac95cca60603a9b4278d8f17
|
@@ -6,7 +6,60 @@ module Caboose
|
|
6
6
|
|
7
7
|
def before_action
|
8
8
|
@page = Page.page_with_uri(request.host_with_port, '/admin')
|
9
|
-
end
|
9
|
+
end
|
10
|
+
|
11
|
+
# @route GET /calendar/feed/:id
|
12
|
+
def feed
|
13
|
+
cal = Caboose::Calendar.find(params[:id])
|
14
|
+
if cal
|
15
|
+
query = []
|
16
|
+
args = []
|
17
|
+
d1 = Date.parse(params[:start])
|
18
|
+
d2 = Date.parse(params[:end])
|
19
|
+
query << "(( cast(begin_date as date) >= ? and cast(begin_date as date) <= ?) or ( cast(end_date as date) >= ? and cast(end_date as date) <= ? )) or ( cast(begin_date as date) <= ? and cast(end_date as date) >= ? )"
|
20
|
+
args << d1
|
21
|
+
args << d2
|
22
|
+
args << d1
|
23
|
+
args << d2
|
24
|
+
args << d1
|
25
|
+
args << d2
|
26
|
+
where = [query.join(' and ')]
|
27
|
+
where2 = params[:admin] == 'true' && params[:published] == 'false' ? '(published is false)' : '(published is true)'
|
28
|
+
args.each { |arg| where << arg }
|
29
|
+
events = Caboose::CalendarEvent.where(where2).where("calendar_id = ?", cal.id).where(where).reorder(:begin_date).all
|
30
|
+
render :json => events.collect { |e|
|
31
|
+
begin_date = e.all_day ? Date.parse(e.begin_date.strftime("%Y-%m-%d")) : e.begin_date
|
32
|
+
end_date = e.all_day ? Date.parse(e.end_date.strftime("%Y-%m-%d")).next : e.end_date
|
33
|
+
{
|
34
|
+
'id' => e.id,
|
35
|
+
'title' => (e.published ? e.name : "#{e.name} (DRAFT)"),
|
36
|
+
'start' => begin_date.strftime('%Y-%m-%d %H:%M:%S'),
|
37
|
+
'end' => end_date.strftime('%Y-%m-%d %H:%M:%S'),
|
38
|
+
'url' => (params[:admin] == 'true' ? "/admin/calendars/#{cal.id}/events/#{e.id}" : "/calendar-events/#{e.id}"),
|
39
|
+
'allDay' => e.all_day
|
40
|
+
}
|
41
|
+
}
|
42
|
+
else
|
43
|
+
return nil
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
# @route GET /calendar/event/:id/json
|
48
|
+
def json
|
49
|
+
event = Caboose::CalendarEvent.find(params[:id])
|
50
|
+
e = {
|
51
|
+
'id' => event.id,
|
52
|
+
'name' => event.name,
|
53
|
+
'begin_date' => event.begin_date.strftime('%Y-%m-%d %H:%M:%S'),
|
54
|
+
'end_date' => event.end_date.strftime('%Y-%m-%d %H:%M:%S'),
|
55
|
+
'location' => event.location,
|
56
|
+
'description' => event.description,
|
57
|
+
'all_day' => event.all_day
|
58
|
+
}
|
59
|
+
if event
|
60
|
+
render :json => e
|
61
|
+
end
|
62
|
+
end
|
10
63
|
|
11
64
|
# @route GET /admin/calendars
|
12
65
|
def admin_index
|
@@ -39,9 +39,10 @@ module Caboose
|
|
39
39
|
# @route DELETE /admin/event-groups/:id
|
40
40
|
def admin_delete
|
41
41
|
return unless user_is_allowed('calendars', 'delete')
|
42
|
+
cal_id = CalendarEvent.where(:calendar_event_group_id => params[:id]).first.calendar_id
|
42
43
|
CalendarEvent.where(:calendar_event_group_id => params[:id]).destroy_all
|
43
44
|
CalendarEventGroup.find(params[:id]).destroy
|
44
|
-
resp = StdClass.new({ 'redirect' => "/admin/calendars" })
|
45
|
+
resp = StdClass.new({ 'redirect' => "/admin/calendars/#{cal_id}" })
|
45
46
|
render :json => resp
|
46
47
|
end
|
47
48
|
|
@@ -13,36 +13,40 @@ module Caboose
|
|
13
13
|
@event.calendar_event_group_id = g.id
|
14
14
|
@event.save
|
15
15
|
end
|
16
|
-
render :layout => 'caboose/
|
16
|
+
render :layout => 'caboose/admin'
|
17
|
+
end
|
18
|
+
|
19
|
+
# @route GET /calendar-events/:id
|
20
|
+
def show
|
21
|
+
@event = CalendarEvent.where(:id => params[:id], :published => true).first
|
22
|
+
render :file => "caboose/extras/error404" and return if @event.nil?
|
23
|
+
@page.title = @event.name if @event
|
24
|
+
render :layout => 'caboose/application'
|
17
25
|
end
|
18
26
|
|
19
27
|
# @route_priority 1
|
20
28
|
# @route GET /admin/calendars/:calendar_id/events/new
|
21
|
-
def admin_new
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
end
|
29
|
+
# def admin_new
|
30
|
+
# return unless user_is_allowed('calendars', 'edit')
|
31
|
+
# @calendar = Calendar.find(params[:calendar_id])
|
32
|
+
# @begin_date = DateTime.iso8601(params[:begin_date])
|
33
|
+
# render :layout => 'caboose/admin'
|
34
|
+
# end
|
27
35
|
|
28
36
|
# @route POST /admin/calendars/:calendar_id/events
|
29
37
|
def admin_add
|
30
38
|
return unless user_is_allowed('calendars', 'edit')
|
31
|
-
|
32
39
|
resp = StdClass.new
|
33
40
|
event = CalendarEvent.new
|
34
41
|
event.calendar_id = params[:calendar_id]
|
35
42
|
event.name = params[:name]
|
36
|
-
event.begin_date = DateTime.
|
37
|
-
event.end_date = DateTime.
|
38
|
-
event.all_day =
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
event.save
|
44
|
-
resp.redirect = "/admin/calendars/#{event.calendar_id}/events/#{event.id}"
|
45
|
-
end
|
43
|
+
event.begin_date = DateTime.parse("#{params[:begin_date]}T10:00:00-05:00")
|
44
|
+
event.end_date = DateTime.parse("#{params[:begin_date]}T10:00:00-05:00")
|
45
|
+
event.all_day = false
|
46
|
+
event.published = false
|
47
|
+
event.url_label = "More Information"
|
48
|
+
event.save
|
49
|
+
resp.redirect = "/admin/calendars/#{event.calendar_id}/events/#{event.id}"
|
46
50
|
render :json => resp
|
47
51
|
end
|
48
52
|
|
@@ -59,6 +63,9 @@ module Caboose
|
|
59
63
|
when 'name' then event.name = value
|
60
64
|
when 'location' then event.location = value
|
61
65
|
when 'description' then event.description = value
|
66
|
+
when 'url' then event.url = value
|
67
|
+
when 'url_label' then event.url_label = value
|
68
|
+
when 'published' then event.published = value
|
62
69
|
when 'all_day' then event.all_day = value
|
63
70
|
when 'begin_date'
|
64
71
|
t = event.begin_date ? event.begin_date.strftime('%H:%M %z') : '10:00 -0500'
|
@@ -79,20 +86,32 @@ module Caboose
|
|
79
86
|
g.date_end = event.end_date.to_date if g.date_end.nil?
|
80
87
|
g.save
|
81
88
|
end
|
82
|
-
event.repeats = value
|
83
|
-
|
89
|
+
event.repeats = value
|
84
90
|
end
|
85
91
|
end
|
86
92
|
|
87
93
|
resp.success = save && event.save
|
88
94
|
render :json => resp
|
89
|
-
end
|
95
|
+
end
|
96
|
+
|
97
|
+
|
98
|
+
# @route POST /admin/calendars/:calendar_id/events/:event_id/image
|
99
|
+
def admin_update_image
|
100
|
+
return if !user_is_allowed('calendars', 'edit')
|
101
|
+
resp = Caboose::StdClass.new
|
102
|
+
event = CalendarEvent.find(params[:event_id])
|
103
|
+
event.image = params[:image]
|
104
|
+
resp.success = event.save
|
105
|
+
resp.attributes = { 'image' => { 'value' => event.image.url(:thumb) }}
|
106
|
+
render :text => resp.to_json
|
107
|
+
end
|
90
108
|
|
91
109
|
# @route DELETE /admin/calendars/:calendar_id/events/:id
|
92
110
|
def admin_delete
|
93
111
|
return unless user_is_allowed('calendars', 'delete')
|
112
|
+
cal_id = CalendarEvent.find(params[:id]).calendar_id
|
94
113
|
CalendarEvent.find(params[:id]).destroy
|
95
|
-
resp = StdClass.new({ 'redirect' => "/admin/calendars" })
|
114
|
+
resp = StdClass.new({ 'redirect' => "/admin/calendars/#{cal_id}" })
|
96
115
|
render :json => resp
|
97
116
|
end
|
98
117
|
|
@@ -13,7 +13,21 @@ module Caboose
|
|
13
13
|
:begin_date ,
|
14
14
|
:end_date ,
|
15
15
|
:all_day ,
|
16
|
-
:repeats
|
16
|
+
:repeats ,
|
17
|
+
:published ,
|
18
|
+
:url ,
|
19
|
+
:url_label
|
20
|
+
|
21
|
+
|
22
|
+
has_attached_file :image,
|
23
|
+
:path => ':caboose_prefixevents/:id_:style.:extension',
|
24
|
+
:default_url => 'http://placehold.it/300x300',
|
25
|
+
:styles => {
|
26
|
+
:thumb => '150x150>',
|
27
|
+
:large => '800x800>',
|
28
|
+
:huge => '1600x1600>'
|
29
|
+
}
|
30
|
+
do_not_validate_attachment_file_type :image
|
17
31
|
|
18
32
|
def self.events_for_day(calendar_id, d)
|
19
33
|
q = ["calendar_id = ?
|
@@ -24,16 +38,22 @@ module Caboose
|
|
24
38
|
end
|
25
39
|
|
26
40
|
def duplicate(d)
|
41
|
+
btime = self.begin_date.to_s[10..-1]
|
42
|
+
etime = self.end_date.to_s[10..-1]
|
43
|
+
bdate = DateTime.parse(d.to_s + btime)
|
44
|
+
edate = DateTime.parse(d.to_s + btime) + (self.end_date - self.begin_date).seconds
|
27
45
|
e = CalendarEvent.create(
|
28
46
|
:calendar_id => self.calendar_id,
|
29
47
|
:calendar_event_group_id => self.calendar_event_group_id,
|
30
48
|
:name => self.name,
|
31
49
|
:description => self.description,
|
32
50
|
:location => self.location,
|
33
|
-
:begin_date =>
|
34
|
-
:end_date =>
|
51
|
+
:begin_date => bdate,
|
52
|
+
:end_date => edate,
|
35
53
|
:all_day => self.all_day,
|
36
|
-
:repeats => self.repeats
|
54
|
+
:repeats => self.repeats,
|
55
|
+
:published => self.published,
|
56
|
+
:url => self.url
|
37
57
|
)
|
38
58
|
return e
|
39
59
|
end
|
@@ -40,8 +40,8 @@ module Caboose
|
|
40
40
|
while d <= self.date_end
|
41
41
|
if !CalendarEvent.where("calendar_event_group_id = ? and cast(begin_date as date) = ?", self.id, d).exists?
|
42
42
|
e.duplicate(d)
|
43
|
-
dates << d.to_date
|
44
43
|
end
|
44
|
+
dates << d.to_date
|
45
45
|
d = d + 1.day
|
46
46
|
end
|
47
47
|
|
@@ -59,8 +59,8 @@ module Caboose
|
|
59
59
|
Caboose.log("Found a day")
|
60
60
|
if !CalendarEvent.where("calendar_event_group_id = ? and cast(begin_date as date) = ?", self.id, d).exists?
|
61
61
|
e.duplicate(d)
|
62
|
-
dates << d.to_date
|
63
62
|
end
|
63
|
+
dates << d.to_date
|
64
64
|
end
|
65
65
|
end
|
66
66
|
d = d + (self.frequency-1).weeks
|
@@ -68,12 +68,12 @@ module Caboose
|
|
68
68
|
|
69
69
|
elsif self.period == 'Month'
|
70
70
|
d = self.date_start
|
71
|
-
if self.repeat_by ==
|
71
|
+
if self.repeat_by == 'Day of month'
|
72
72
|
while d <= self.date_end
|
73
73
|
if !CalendarEvent.where("calendar_event_group_id = ? and cast(begin_date as date) = ?", self.id, d).exists?
|
74
74
|
e.duplicate(d)
|
75
|
-
dates << d.to_date
|
76
75
|
end
|
76
|
+
dates << d.to_date
|
77
77
|
d = d + self.frequency.months
|
78
78
|
end
|
79
79
|
elsif self.repeat_by == self::REPEAT_BY_DAY_OF_WEEK
|
@@ -106,8 +106,8 @@ module Caboose
|
|
106
106
|
while d <= self.date_end
|
107
107
|
if !CalendarEvent.where("calendar_event_group_id = ? and cast(begin_date as date) = ?", self.id, d).exists?
|
108
108
|
e.duplicate(d)
|
109
|
-
dates << d.to_date
|
110
109
|
end
|
110
|
+
dates << d.to_date
|
111
111
|
d = d + 1.year
|
112
112
|
end
|
113
113
|
|
@@ -233,7 +233,11 @@ class Caboose::Schema < Caboose::Utilities::Schema
|
|
233
233
|
[ :begin_date , :datetime ],
|
234
234
|
[ :end_date , :datetime ],
|
235
235
|
[ :all_day , :boolean , { :default => false }],
|
236
|
-
[ :repeats , :boolean , { :default => false }]
|
236
|
+
[ :repeats , :boolean , { :default => false }],
|
237
|
+
[ :published , :boolean , { :default => false }],
|
238
|
+
[ :url , :string ],
|
239
|
+
[ :url_label , :string ],
|
240
|
+
[ :image , :attachment ]
|
237
241
|
],
|
238
242
|
Caboose::CalendarEventGroup => [
|
239
243
|
[ :frequency , :integer , { :default => 1 }],
|
@@ -1,54 +1,22 @@
|
|
1
|
-
|
2
1
|
<h1>Edit Calendar</h1>
|
3
2
|
<p><div id='calendar_<%= @calendar.id %>_name' ></div></p>
|
4
3
|
<p><div id='calendar_<%= @calendar.id %>_color' ></div></p>
|
5
|
-
<p><div id='calendar_<%= @calendar.id %>_description' ></div></p>
|
4
|
+
<!-- <p><div id='calendar_<%= @calendar.id %>_description' ></div></p> -->
|
6
5
|
|
7
|
-
<
|
8
|
-
<
|
6
|
+
<form action='/admin/calendars' method='post' id='new_calendar_form' style="display:none;">
|
7
|
+
<input type='hidden' name='authenticity_token' value='<%= form_authenticity_token %>'>
|
8
|
+
<p><input type='text' name='name' id='name' placeholder='Name' style='width: 500px;'></p>
|
9
|
+
<div id='new_message'></div>
|
9
10
|
<p>
|
10
|
-
<input type='button' value='
|
11
|
-
<input type='
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
<th>Tue</th>
|
20
|
-
<th>Wed</th>
|
21
|
-
<th>Thu</th>
|
22
|
-
<th>Fri</th>
|
23
|
-
<th>Sat</th>
|
24
|
-
</tr>
|
25
|
-
<%
|
26
|
-
days_in_previous_month = (@d - (@d - 1.month)).to_f.ceil.to_i
|
27
|
-
days_in_month = ((@d + 1.month) - @d).to_f.ceil.to_i
|
28
|
-
start_day = @d.strftime('%w').to_i
|
29
|
-
%>
|
30
|
-
<tr>
|
31
|
-
<% (0...start_day).each do |i| %><td class='blank'><span class='day'><%= days_in_previous_month - (start_day - i) %></span></td><% end %>
|
32
|
-
<% day = 1 %>
|
33
|
-
<% while day <= days_in_month %>
|
34
|
-
<% d = @d + (day-1).days %>
|
35
|
-
<% if (day + start_day-1) % 7 == 0 %></tr><% if day < days_in_month %><tr><% end %><% end %>
|
36
|
-
<td id='day_<%= d.strftime('%Y-%m-%d') %>'>
|
37
|
-
<span class='day'><%= day %></span>
|
38
|
-
<% events = Caboose::CalendarEvent.events_for_day(@calendar.id, d) %>
|
39
|
-
<% if events.count > 0 %>
|
40
|
-
<ul>
|
41
|
-
<% events.each do |ev| %><li><a href='/admin/calendars/<%= @calendar.id %>/events/<%= ev.id %>' class='event_link'><%= ev.name %></a></li><% end %>
|
42
|
-
</ul>
|
43
|
-
<% end %>
|
44
|
-
</td>
|
45
|
-
<% day = day + 1 %>
|
46
|
-
<% end %>
|
47
|
-
<% last_day = (start_day + days_in_month) % 7 %>
|
48
|
-
<% remaining_days = 7 - last_day %>
|
49
|
-
<% if last_day > 0 %><% (0...remaining_days).each do |i| %><td class='blank'><span class='day'><%= (i + 1) %></span></td><% end %><% end %>
|
50
|
-
<% if (start_day + days_in_month) != 0 %></tr><% end %>
|
51
|
-
</table><br />
|
11
|
+
<input type='button' value='Cancel' onclick="$('#new_calendar_form').slideToggle();">
|
12
|
+
<input type='submit' value='Add New Calendar' onclick="add_calendar(); return false;">
|
13
|
+
</p>
|
14
|
+
</form>
|
15
|
+
|
16
|
+
<p>To add an event to the calendar, click the date below:</p>
|
17
|
+
|
18
|
+
<div class="calendar-wrapper">
|
19
|
+
<div id="calendar"></div>
|
52
20
|
</div>
|
53
21
|
|
54
22
|
<div id='message'></div>
|
@@ -57,85 +25,113 @@
|
|
57
25
|
<input type='button' value='Delete Calendar' onclick="delete_calendar(<%= @calendar.id %>);" />
|
58
26
|
</div>
|
59
27
|
|
28
|
+
<% content_for :caboose_css do %>
|
29
|
+
<%= stylesheet_link_tag "//cdnjs.cloudflare.com/ajax/libs/fullcalendar/3.6.2/fullcalendar.min.css" %>
|
30
|
+
<%= stylesheet_link_tag 'caboose/spectrum' %>
|
31
|
+
<style>
|
32
|
+
.calendar-wrapper {
|
33
|
+
max-width: 1200px;
|
34
|
+
margin: 0 auto;
|
35
|
+
padding: 20px 2%;
|
36
|
+
}
|
37
|
+
.fc-day-grid-event {
|
38
|
+
padding: 2px 2px 1px 2px;
|
39
|
+
}
|
40
|
+
.calendar_<%= @calendar.id %>_color_bound_color {
|
41
|
+
width: 100px !important;
|
42
|
+
}
|
43
|
+
.fc-day {
|
44
|
+
cursor: pointer;
|
45
|
+
}
|
46
|
+
.fc-day:hover {
|
47
|
+
background-color: #e7f3ff;
|
48
|
+
}
|
49
|
+
#content {
|
50
|
+
padding-right: 30px;
|
51
|
+
}
|
52
|
+
</style>
|
53
|
+
<% end %>
|
60
54
|
<% content_for :caboose_js do %>
|
61
|
-
<%= javascript_include_tag "
|
62
|
-
<%= javascript_include_tag "
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
55
|
+
<%= javascript_include_tag "//cdn.jsdelivr.net/npm/moment@2.19.1/moment.js" %>
|
56
|
+
<%= javascript_include_tag "//cdnjs.cloudflare.com/ajax/libs/fullcalendar/3.6.2/fullcalendar.min.js" %>
|
57
|
+
<%= javascript_include_tag "caboose/model/all" %>
|
58
|
+
<%= javascript_include_tag "caboose/spectrum" %>
|
59
|
+
<script>
|
60
|
+
var toshow = 'month';
|
61
|
+
$(document).ready(function() {
|
62
|
+
$("#calendar").fullCalendar({
|
63
|
+
defaultView: toshow,
|
64
|
+
height: '700',
|
65
|
+
header: {
|
66
|
+
left: 'title',
|
67
|
+
center: '',
|
68
|
+
right: 'prev,next today'
|
69
|
+
},
|
70
|
+
eventSources: [
|
71
|
+
{
|
72
|
+
url: "/calendar/feed/<%= @calendar.id %>?admin=true&published=true",
|
73
|
+
color: "<%= @calendar.color %>",
|
74
|
+
textColor: "white"
|
75
|
+
},
|
76
|
+
{
|
77
|
+
url: "/calendar/feed/<%= @calendar.id %>?admin=true&published=false",
|
78
|
+
color: "#a9a9a9",
|
79
|
+
textColor: "white"
|
80
|
+
}
|
81
|
+
],
|
82
|
+
eventClick: function(calEvent, jsEvent, view) {
|
83
|
+
window.location = '/admin/calendars/<%= @calendar.id %>/events/' + calEvent.id;
|
84
|
+
},
|
85
|
+
dayClick: function(date, jsEvent, view) {
|
86
|
+
$.ajax({
|
87
|
+
url: '/admin/calendars/<%= @calendar.id %>/events',
|
88
|
+
type: 'post',
|
89
|
+
data: {
|
90
|
+
begin_date: date.format()
|
91
|
+
},
|
92
|
+
success: function(resp) {
|
93
|
+
if (resp.redirect) window.location = resp.redirect;
|
94
|
+
}
|
95
|
+
});
|
96
|
+
}
|
97
|
+
});
|
88
98
|
});
|
89
|
-
|
90
|
-
.
|
91
|
-
|
92
|
-
|
93
|
-
|
99
|
+
|
100
|
+
$(document).ready(function() {
|
101
|
+
new ModelBinder({
|
102
|
+
name: 'Calendar',
|
103
|
+
id: <%= @calendar.id %>,
|
104
|
+
update_url: '/admin/calendars/<%= @calendar.id %>',
|
105
|
+
authenticity_token: '<%= form_authenticity_token %>',
|
106
|
+
attributes: [
|
107
|
+
{ name: 'name' , nice_name: 'Name' , type: 'text' , value: <%= raw Caboose.json(@calendar.name ) %>, width: 400 },
|
108
|
+
// { name: 'description' , nice_name: 'Description' , type: 'textarea', value: <%= raw Caboose.json(@calendar.description ) %>, width: 400, height: 100 },
|
109
|
+
{ name: 'color' , nice_name: 'Color' , type: 'color', value: <%= raw Caboose.json(@calendar.color ) %>, width: 400, height: 100 }
|
110
|
+
]
|
111
|
+
});
|
94
112
|
});
|
95
|
-
});
|
96
113
|
|
97
|
-
function delete_calendar(calendar_id, confirm)
|
98
|
-
{
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
114
|
+
function delete_calendar(calendar_id, confirm)
|
115
|
+
{
|
116
|
+
if (!confirm)
|
117
|
+
{
|
118
|
+
var p = $('<p/>').addClass('note confirm')
|
119
|
+
.append('Are you sure you want to delete the calendar? ')
|
120
|
+
.append($('<input/>').attr('type','button').val('Yes').click(function() { delete_calendar(calendar_id, true); })).append(' ')
|
121
|
+
.append($('<input/>').attr('type','button').val('No').click(function() { $('#message').empty(); }));
|
122
|
+
$('#message').empty().append(p);
|
123
|
+
return;
|
124
|
+
}
|
125
|
+
$('#message').html("<p class='loading'>Deleting calendar...</p>");
|
126
|
+
$.ajax({
|
127
|
+
url: '/admin/calendars/' + calendar_id,
|
128
|
+
type: 'delete',
|
129
|
+
success: function(resp) {
|
130
|
+
if (resp.error) $('#message').html("<p class='note error'>" + resp.error + "</p>");
|
131
|
+
if (resp.redirect) window.location = resp.redirect;
|
132
|
+
}
|
133
|
+
});
|
115
134
|
}
|
116
|
-
});
|
117
|
-
}
|
118
135
|
|
119
|
-
</script>
|
120
|
-
<% end %>
|
121
|
-
|
122
|
-
<% content_for :caboose_css do %>
|
123
|
-
<%= stylesheet_link_tag 'caboose/spectrum' %>
|
124
|
-
<style type='text/css'>
|
125
|
-
|
126
|
-
#calendar table { border-collapse: collapse; width: 95%; }
|
127
|
-
#calendar th { border: #666 1px solid; background: #666; color: #fff; margin: 0; padding: 4px 8px; }
|
128
|
-
#calendar td { border: #666 1px solid; position: relative; margin: 0; padding: 0; width: 14%; height: 100px; cursor: pointer;vertical-align: top; }
|
129
|
-
#calendar td.blank { background: #efefef; border: #666 1px solid; }
|
130
|
-
#calendar td.over { background: #ffcc99; }
|
131
|
-
#calendar td span.day { display: block; float: left; border-right: #666 1px solid; border-bottom: #666 1px solid; width: 20px; text-align: center; }
|
132
|
-
#calendar td ul { margin: 0; padding: 0; list-style: none; }
|
133
|
-
#calendar td ul li { margin: 0; padding: 0; list-style: none; }
|
134
|
-
#calendar td ul li a { display: block; }
|
135
|
-
#calendar td ul li a:hover { background: #fff; }
|
136
|
-
.calendar_<%= @calendar.id %>_color_bound_color {
|
137
|
-
width: 100px !important;
|
138
|
-
}
|
139
|
-
|
140
|
-
</style>
|
141
|
-
<% end %>
|
136
|
+
</script>
|
137
|
+
<% end %>
|
@@ -0,0 +1,141 @@
|
|
1
|
+
|
2
|
+
<h1>Edit Calendar</h1>
|
3
|
+
<p><div id='calendar_<%= @calendar.id %>_name' ></div></p>
|
4
|
+
<p><div id='calendar_<%= @calendar.id %>_color' ></div></p>
|
5
|
+
<p><div id='calendar_<%= @calendar.id %>_description' ></div></p>
|
6
|
+
|
7
|
+
<div id='calendar'>
|
8
|
+
<h2><%= @d.strftime('%B %Y') %></h2>
|
9
|
+
<p>
|
10
|
+
<input type='button' value='< Previous Month' onclick="window.location='/admin/calendars/<%= @calendar.id %>?d=<%= (@d - 1.month).strftime('%Y-%m-%d') %>';" />
|
11
|
+
<input type='button' value='Current Month' onclick="window.location='/admin/calendars/<%= @calendar.id %>?d=<%= DateTime.now.strftime('%Y-%m-%d') %>';" />
|
12
|
+
<input type='button' value='Next Month >' onclick="window.location='/admin/calendars/<%= @calendar.id %>?d=<%= (@d + 1.month).strftime('%Y-%m-%d') %>';" />
|
13
|
+
</p>
|
14
|
+
<p>To add an event to the calendar, click the date below:</p>
|
15
|
+
<table>
|
16
|
+
<tr>
|
17
|
+
<th>Sun</th>
|
18
|
+
<th>Mon</th>
|
19
|
+
<th>Tue</th>
|
20
|
+
<th>Wed</th>
|
21
|
+
<th>Thu</th>
|
22
|
+
<th>Fri</th>
|
23
|
+
<th>Sat</th>
|
24
|
+
</tr>
|
25
|
+
<%
|
26
|
+
days_in_previous_month = (@d - (@d - 1.month)).to_f.ceil.to_i
|
27
|
+
days_in_month = ((@d + 1.month) - @d).to_f.ceil.to_i
|
28
|
+
start_day = @d.strftime('%w').to_i
|
29
|
+
%>
|
30
|
+
<tr>
|
31
|
+
<% (0...start_day).each do |i| %><td class='blank'><span class='day'><%= days_in_previous_month - (start_day - i) %></span></td><% end %>
|
32
|
+
<% day = 1 %>
|
33
|
+
<% while day <= days_in_month %>
|
34
|
+
<% d = @d + (day-1).days %>
|
35
|
+
<% if (day + start_day-1) % 7 == 0 %></tr><% if day < days_in_month %><tr><% end %><% end %>
|
36
|
+
<td id='day_<%= d.strftime('%Y-%m-%d') %>'>
|
37
|
+
<span class='day'><%= day %></span>
|
38
|
+
<% events = Caboose::CalendarEvent.events_for_day(@calendar.id, d) %>
|
39
|
+
<% if events.count > 0 %>
|
40
|
+
<ul>
|
41
|
+
<% events.each do |ev| %><li><a href='/admin/calendars/<%= @calendar.id %>/events/<%= ev.id %>' class='event_link'><%= ev.name %></a></li><% end %>
|
42
|
+
</ul>
|
43
|
+
<% end %>
|
44
|
+
</td>
|
45
|
+
<% day = day + 1 %>
|
46
|
+
<% end %>
|
47
|
+
<% last_day = (start_day + days_in_month) % 7 %>
|
48
|
+
<% remaining_days = 7 - last_day %>
|
49
|
+
<% if last_day > 0 %><% (0...remaining_days).each do |i| %><td class='blank'><span class='day'><%= (i + 1) %></span></td><% end %><% end %>
|
50
|
+
<% if (start_day + days_in_month) != 0 %></tr><% end %>
|
51
|
+
</table><br />
|
52
|
+
</div>
|
53
|
+
|
54
|
+
<div id='message'></div>
|
55
|
+
<div id='controls'>
|
56
|
+
<input type='button' value='Back' onclick="window.location='/admin/calendars';" />
|
57
|
+
<input type='button' value='Delete Calendar' onclick="delete_calendar(<%= @calendar.id %>);" />
|
58
|
+
</div>
|
59
|
+
|
60
|
+
<% content_for :caboose_js do %>
|
61
|
+
<%= javascript_include_tag "caboose/model/all" %>
|
62
|
+
<%= javascript_include_tag "caboose/spectrum" %>
|
63
|
+
<script type="text/javascript">
|
64
|
+
|
65
|
+
$(document).ready(function() {
|
66
|
+
new ModelBinder({
|
67
|
+
name: 'Calendar',
|
68
|
+
id: <%= @calendar.id %>,
|
69
|
+
update_url: '/admin/calendars/<%= @calendar.id %>',
|
70
|
+
authenticity_token: '<%= form_authenticity_token %>',
|
71
|
+
attributes: [
|
72
|
+
{ name: 'name' , nice_name: 'Name' , type: 'text' , value: <%= raw Caboose.json(@calendar.name ) %>, width: 400 },
|
73
|
+
{ name: 'description' , nice_name: 'Description' , type: 'textarea', value: <%= raw Caboose.json(@calendar.description ) %>, width: 400, height: 100 },
|
74
|
+
{ name: 'color' , nice_name: 'Color' , type: 'color', value: <%= raw Caboose.json(@calendar.color ) %>, width: 400, height: 100 }
|
75
|
+
]
|
76
|
+
});
|
77
|
+
$('#calendar td')
|
78
|
+
.mouseover(function(e) { $(this).addClass('over'); })
|
79
|
+
.mouseout(function(e) { $(this).removeClass('over'); })
|
80
|
+
.click(function(e) {
|
81
|
+
e.preventDefault();
|
82
|
+
e.stopPropagation();
|
83
|
+
if (!$(this).hasClass('blank'))
|
84
|
+
{
|
85
|
+
var d = $(this).attr('id').replace('day_', '');
|
86
|
+
caboose_modal_url('/admin/calendars/<%= @calendar.id %>/events/new?begin_date=' + d);
|
87
|
+
}
|
88
|
+
});
|
89
|
+
$('#calendar td a.event_link')
|
90
|
+
.click(function(e) {
|
91
|
+
e.preventDefault();
|
92
|
+
e.stopPropagation();
|
93
|
+
caboose_modal_url($(this).attr('href'));
|
94
|
+
});
|
95
|
+
});
|
96
|
+
|
97
|
+
function delete_calendar(calendar_id, confirm)
|
98
|
+
{
|
99
|
+
if (!confirm)
|
100
|
+
{
|
101
|
+
var p = $('<p/>').addClass('note confirm')
|
102
|
+
.append('Are you sure you want to delete the calendar? ')
|
103
|
+
.append($('<input/>').attr('type','button').val('Yes').click(function() { delete_calendar(calendar_id, true); })).append(' ')
|
104
|
+
.append($('<input/>').attr('type','button').val('No').click(function() { $('#message').empty(); }));
|
105
|
+
$('#message').empty().append(p);
|
106
|
+
return;
|
107
|
+
}
|
108
|
+
$('#message').html("<p class='loading'>Deleting calendar...</p>");
|
109
|
+
$.ajax({
|
110
|
+
url: '/admin/calendars/' + calendar_id,
|
111
|
+
type: 'delete',
|
112
|
+
success: function(resp) {
|
113
|
+
if (resp.error) $('#message').html("<p class='note error'>" + resp.error + "</p>");
|
114
|
+
if (resp.redirect) window.location = resp.redirect;
|
115
|
+
}
|
116
|
+
});
|
117
|
+
}
|
118
|
+
|
119
|
+
</script>
|
120
|
+
<% end %>
|
121
|
+
|
122
|
+
<% content_for :caboose_css do %>
|
123
|
+
<%= stylesheet_link_tag 'caboose/spectrum' %>
|
124
|
+
<style type='text/css'>
|
125
|
+
|
126
|
+
#calendar table { border-collapse: collapse; width: 95%; }
|
127
|
+
#calendar th { border: #666 1px solid; background: #666; color: #fff; margin: 0; padding: 4px 8px; }
|
128
|
+
#calendar td { border: #666 1px solid; position: relative; margin: 0; padding: 0; width: 14%; height: 100px; cursor: pointer;vertical-align: top; }
|
129
|
+
#calendar td.blank { background: #efefef; border: #666 1px solid; }
|
130
|
+
#calendar td.over { background: #ffcc99; }
|
131
|
+
#calendar td span.day { display: block; float: left; border-right: #666 1px solid; border-bottom: #666 1px solid; width: 20px; text-align: center; }
|
132
|
+
#calendar td ul { margin: 0; padding: 0; list-style: none; }
|
133
|
+
#calendar td ul li { margin: 0; padding: 0; list-style: none; }
|
134
|
+
#calendar td ul li a { display: block; }
|
135
|
+
#calendar td ul li a:hover { background: #fff; }
|
136
|
+
.calendar_<%= @calendar.id %>_color_bound_color {
|
137
|
+
width: 100px !important;
|
138
|
+
}
|
139
|
+
|
140
|
+
</style>
|
141
|
+
<% end %>
|
@@ -5,9 +5,9 @@
|
|
5
5
|
<input type='submit' value='Search' />
|
6
6
|
</form>
|
7
7
|
|
8
|
-
<p><a href='/admin/calendars/new' id='new_calendar' class="caboose-btn-white">New Calendar</a></p>
|
8
|
+
<p style="margin:0;"><a href='/admin/calendars/new' id='new_calendar' class="caboose-btn-white">New Calendar</a></p>
|
9
9
|
|
10
|
-
<form action='/admin/calendars' method='post' id='new_calendar_form'>
|
10
|
+
<form action='/admin/calendars' method='post' id='new_calendar_form' style="display:none;">
|
11
11
|
<input type='hidden' name='authenticity_token' value='<%= form_authenticity_token %>'>
|
12
12
|
<p><input type='text' name='name' id='name' placeholder='Name' style='width: 500px;'></p>
|
13
13
|
<div id='new_message'></div>
|
@@ -17,17 +17,20 @@
|
|
17
17
|
</p>
|
18
18
|
</form>
|
19
19
|
|
20
|
+
<br />
|
21
|
+
<br />
|
22
|
+
|
20
23
|
<% if @calendars.count > 0 %>
|
21
24
|
<table class='data'>
|
22
25
|
<tr>
|
23
26
|
<th>Name</th>
|
24
|
-
|
27
|
+
<!-- <th>Description</th> -->
|
25
28
|
<th>Color</th>
|
26
29
|
</tr>
|
27
30
|
<% @calendars.each do |calendar| %>
|
28
31
|
<tr onclick="window.location='/admin/calendars/<%= calendar.id %>';">
|
29
32
|
<td><%= calendar.name %></td>
|
30
|
-
|
33
|
+
<!-- <td><%= calendar.description %></td> -->
|
31
34
|
<td><div class="swatch" style="background-color:<%= calendar.color %>"></div></td>
|
32
35
|
</tr>
|
33
36
|
<% end %>
|
@@ -6,6 +6,14 @@ g = @event.calendar_event_group
|
|
6
6
|
<h1>Edit Event</h1>
|
7
7
|
<p><div id='calendarevent_<%= e.id %>_name' ></div></p>
|
8
8
|
<p><div id='calendarevent_<%= e.id %>_location' ></div></p>
|
9
|
+
<p><div id='calendarevent_<%= e.id %>_url' ></div>
|
10
|
+
<span style="display:block;font-size:13px;margin:3px 0 0 3px;">Use for registration link, more info, or external website.</span>
|
11
|
+
</p>
|
12
|
+
<p><div id='calendarevent_<%= e.id %>_url_label' ></div></p>
|
13
|
+
<p><div id='calendarevent_<%= e.id %>_published' ></div>
|
14
|
+
<span style="display:block;font-size:13px;margin:3px 0 0 3px;">Only published events will display on the website.</span>
|
15
|
+
</p>
|
16
|
+
<p><div id='calendarevent_<%= e.id %>_image' ></div></p>
|
9
17
|
<p><div id='calendarevent_<%= @event.id %>_description' ></div></p>
|
10
18
|
<div id='datetime_container' class='<%= @event.all_day ? 'all_day' : 'non_all_day' %>'>
|
11
19
|
<div id='calendarevent_<%= e.id %>_begin_date' ></div>
|
@@ -48,19 +56,20 @@ g = @event.calendar_event_group
|
|
48
56
|
|
49
57
|
<div id='message'></div>
|
50
58
|
<p>
|
51
|
-
<input type='button' value='
|
59
|
+
<input type='button' value='Back' onclick="window.location = '/admin/calendars/<%= @event.calendar_id %>';" />
|
52
60
|
<input type='button' value='Delete Event' onclick="delete_event(<%= @event.id %>);" />
|
53
61
|
<input type='button' value='Delete Event Group' onclick="delete_event_group(<%= @event.id %>);" />
|
54
62
|
</p>
|
55
63
|
|
56
64
|
<% content_for :caboose_js do %>
|
57
65
|
<%= javascript_include_tag "caboose/model/all" %>
|
66
|
+
<%= raw caboose_tinymce %>
|
58
67
|
<script type="text/javascript">
|
59
68
|
|
60
|
-
var modal = false;
|
61
|
-
$(window).ready(function() {
|
62
|
-
|
63
|
-
});
|
69
|
+
// var modal = false;
|
70
|
+
// $(window).ready(function() {
|
71
|
+
// modal = new CabooseModal(460);
|
72
|
+
// });
|
64
73
|
|
65
74
|
$(document).ready(function() {
|
66
75
|
new ModelBinder({
|
@@ -69,17 +78,21 @@ $(document).ready(function() {
|
|
69
78
|
update_url: '/admin/calendars/<%= c.id %>/events/<%= e.id %>',
|
70
79
|
authenticity_token: '<%= form_authenticity_token %>',
|
71
80
|
attributes: [
|
72
|
-
{ name: 'name' , nice_name: 'Name' , type: 'text' , value: <%= raw Caboose.json(e.name ) %>, width:
|
73
|
-
{ name: 'description' , nice_name: 'Description' , type: '
|
74
|
-
{ name: 'location' , nice_name: 'Location' , type: 'text' , value: <%= raw Caboose.json(e.location ) %>, width:
|
75
|
-
{ name: '
|
76
|
-
{ name: '
|
77
|
-
{ name: '
|
78
|
-
{ name: '
|
81
|
+
{ name: 'name' , nice_name: 'Name' , type: 'text' , value: <%= raw Caboose.json(e.name ) %>, width: 600 },
|
82
|
+
{ name: 'description' , nice_name: 'Description' , type: 'richtext' , value: <%= raw Caboose.json(e.description ) %>, width: 600, height: 300 },
|
83
|
+
{ name: 'location' , nice_name: 'Location' , type: 'text' , value: <%= raw Caboose.json(e.location ) %>, width: 600 },
|
84
|
+
{ name: 'url' , nice_name: 'URL' , type: 'text' , value: <%= raw Caboose.json(e.url ) %>, width: 600 },
|
85
|
+
{ name: 'url_label' , nice_name: 'URL Label' , type: 'text' , value: <%= raw Caboose.json(e.url_label ) %>, width: 600 },
|
86
|
+
{ name: 'published' , nice_name: 'Published' , type: 'checkbox' , value: <%= raw Caboose.json(e.published ) %>, width: 600 },
|
87
|
+
{ name: 'image' , nice_name: 'Image' , type: 'image' , value: <%= raw Caboose.json(e.image.url(:thumb)) %>, width: 400, update_url: '/admin/calendars/<%= c.id %>/events/<%= e.id %>/image' },
|
88
|
+
{ name: 'begin_date' , nice_name: 'Begin date' , type: 'date' , value: <%= raw Caboose.json(e.begin_date.strftime('%m/%d/%Y') ) %>, width: 250 , align: 'right' },
|
89
|
+
{ name: 'begin_time' , nice_name: 'Begin time' , type: 'time' , value: <%= raw Caboose.json(e.begin_date.strftime('%I:%M %P') ) %>, width: 250 , fixed_placeholder: false },
|
90
|
+
{ name: 'end_date' , nice_name: 'End date' , type: 'date' , value: <%= raw Caboose.json(e.end_date.strftime('%m/%d/%Y') ) %>, width: 250 , align: 'right' },
|
91
|
+
{ name: 'end_time' , nice_name: 'End time' , type: 'time' , value: <%= raw Caboose.json(e.end_date.strftime('%I:%M %P') ) %>, width: 250 , fixed_placeholder: false },
|
79
92
|
{ name: 'all_day' , nice_name: 'All day' , type: 'checkbox' , value: <%= raw e.all_day ? 1 : 0 %>, width: 100, after_update: after_all_day_update },
|
80
93
|
{ name: 'repeats' , nice_name: 'Repeats' , type: 'checkbox' , value: <%= raw e.repeats ? 1 : 0 %>, width: 100, after_update: after_repeats_update }
|
81
94
|
],
|
82
|
-
on_load: function() {
|
95
|
+
on_load: function() { }
|
83
96
|
});
|
84
97
|
new ModelBinder({
|
85
98
|
name: 'CalendarEventGroup',
|
@@ -100,7 +113,7 @@ $(document).ready(function() {
|
|
100
113
|
{ name: 'fri' , nice_name: 'fri' , type: 'checkbox' , value: <%= raw g.fri ? 1 : 0 %>, width: 21 , fixed_placeholder: false },
|
101
114
|
{ name: 'sat' , nice_name: 'sat' , type: 'checkbox' , value: <%= raw g.sat ? 1 : 0 %>, width: 21 , fixed_placeholder: false }
|
102
115
|
],
|
103
|
-
on_load: function() {
|
116
|
+
on_load: function() { }
|
104
117
|
});
|
105
118
|
});
|
106
119
|
|
@@ -112,16 +125,16 @@ function delete_event(event_id, confirm)
|
|
112
125
|
.append('Are you sure you want to delete the event? ')
|
113
126
|
.append($('<input/>').attr('type','button').val('Yes').click(function() { delete_event(event_id, true); })).append(' ')
|
114
127
|
.append($('<input/>').attr('type','button').val('No').click(function() { $('#message').empty(); }));
|
115
|
-
|
128
|
+
$("#message").html(p);
|
116
129
|
return;
|
117
130
|
}
|
118
|
-
|
131
|
+
$("#message").html("<p class='loading'>Deleting event...</p>");
|
119
132
|
$.ajax({
|
120
133
|
url: '/admin/calendars/<%= c.id %>/events/' + event_id,
|
121
134
|
type: 'delete',
|
122
135
|
success: function(resp) {
|
123
|
-
if (resp.error)
|
124
|
-
if (resp.redirect)
|
136
|
+
if (resp.error) $("#message").html("<p class='note error'>" + resp.error + "</p>");
|
137
|
+
if (resp.redirect) window.location = resp.redirect;
|
125
138
|
}
|
126
139
|
});
|
127
140
|
}
|
@@ -134,16 +147,16 @@ function delete_event_group(event_id, confirm)
|
|
134
147
|
.append('Are you sure you want to delete the event group? ')
|
135
148
|
.append($('<input/>').attr('type','button').val('Yes').click(function() { delete_event_group(event_id, true); })).append(' ')
|
136
149
|
.append($('<input/>').attr('type','button').val('No').click(function() { $('#message').empty(); }));
|
137
|
-
|
150
|
+
$("#message").html(p);
|
138
151
|
return;
|
139
152
|
}
|
140
|
-
|
153
|
+
$("#message").html("<p class='loading'>Deleting event group...</p>");
|
141
154
|
$.ajax({
|
142
155
|
url: '/admin/event-groups/<%= g.id %>',
|
143
156
|
type: 'delete',
|
144
157
|
success: function(resp) {
|
145
|
-
if (resp.error)
|
146
|
-
if (resp.redirect)
|
158
|
+
if (resp.error) $("#message").html("<p class='note error'>" + resp.error + "</p>");
|
159
|
+
if (resp.redirect) window.location = resp.redirect;
|
147
160
|
}
|
148
161
|
});
|
149
162
|
}
|
@@ -155,13 +168,13 @@ function after_all_day_update()
|
|
155
168
|
el.removeClass('all_day').addClass('non_all_day');
|
156
169
|
else
|
157
170
|
el.removeClass('non_all_day').addClass('all_day');
|
158
|
-
|
171
|
+
// modal.autosize();
|
159
172
|
}
|
160
173
|
|
161
174
|
function after_repeats_update()
|
162
175
|
{
|
163
176
|
var el = $('#repeat_container');
|
164
|
-
el.slideToggle(function() {
|
177
|
+
el.slideToggle(function() { });
|
165
178
|
}
|
166
179
|
|
167
180
|
function after_period_update()
|
@@ -175,10 +188,11 @@ function after_period_update()
|
|
175
188
|
$('#repeat_by_container').show();
|
176
189
|
else
|
177
190
|
$('#repeat_by_container').hide();
|
178
|
-
modal.autosize();
|
191
|
+
// modal.autosize();
|
179
192
|
}
|
180
193
|
|
181
194
|
</script>
|
195
|
+
|
182
196
|
<% end %>
|
183
197
|
|
184
198
|
<% content_for :caboose_css do %>
|
@@ -190,16 +204,21 @@ function after_period_update()
|
|
190
204
|
#calendarevent_<%= e.id %>_all_day_container { float: left; width: 130px; }
|
191
205
|
#calendarevent_<%= e.id %>_repeats_container { width: 200px; }
|
192
206
|
|
193
|
-
div
|
207
|
+
div#datetime_container > div > input {
|
208
|
+
display: block;
|
209
|
+
width: 100% !important;
|
210
|
+
}
|
211
|
+
|
212
|
+
div.all_day #calendarevent_<%= e.id %>_begin_date_container { float: left; width: 250px; margin-right: 10px; }
|
194
213
|
div.all_day #calendarevent_<%= e.id %>_begin_time_container { display: none; }
|
195
|
-
div.all_day #calendarevent_<%= e.id %>_end_date_container { width:
|
214
|
+
div.all_day #calendarevent_<%= e.id %>_end_date_container { width: 250px; }
|
196
215
|
div.all_day #calendarevent_<%= e.id %>_end_time_container { display: none; }
|
197
216
|
div.all_day .spacer { clear: left; }
|
198
217
|
|
199
|
-
div.non_all_day #calendarevent_<%= e.id %>_begin_date_container { float: left; width:
|
200
|
-
div.non_all_day #calendarevent_<%= e.id %>_begin_time_container { width:
|
201
|
-
div.non_all_day #calendarevent_<%= e.id %>_end_date_container { float: left; width:
|
202
|
-
div.non_all_day #calendarevent_<%= e.id %>_end_time_container { float: left; width:
|
218
|
+
div.non_all_day #calendarevent_<%= e.id %>_begin_date_container { float: left; width: 250px; margin-bottom: 10px; margin-right: 10px; }
|
219
|
+
div.non_all_day #calendarevent_<%= e.id %>_begin_time_container { width: 250px; margin-bottom: 10px; }
|
220
|
+
div.non_all_day #calendarevent_<%= e.id %>_end_date_container { float: left; width: 250px; clear: left; margin-right: 10px; }
|
221
|
+
div.non_all_day #calendarevent_<%= e.id %>_end_time_container { float: left; width: 250px; }
|
203
222
|
div.non_all_day .spacer { clear: left; }
|
204
223
|
|
205
224
|
#repeat_every { float: left; width: 110px; }
|
@@ -208,8 +227,8 @@ div.non_all_day .spacer { clear: left; }
|
|
208
227
|
#calendareventgroup_<%= g.id %>_repeat_by { float: left; width: 100px; }
|
209
228
|
|
210
229
|
#repeat_dates_container { clear: left; }
|
211
|
-
#calendareventgroup_<%= g.id %>_date_start_container { float: left; width:
|
212
|
-
#calendareventgroup_<%= g.id %>_date_end_container { width:
|
230
|
+
#calendareventgroup_<%= g.id %>_date_start_container { float: left; width: 250px; }
|
231
|
+
#calendareventgroup_<%= g.id %>_date_end_container { width: 250px; }
|
213
232
|
|
214
233
|
#week_container { clear: left; padding-top: 10px; }
|
215
234
|
|
@@ -30,7 +30,11 @@ function add_event()
|
|
30
30
|
data: $('#new_event_form').serialize(),
|
31
31
|
success: function(resp) {
|
32
32
|
if (resp.error) $('#message').html("<p class='note error'>" + resp.error + "</p>");
|
33
|
-
if (resp.redirect)
|
33
|
+
if (resp.redirect) {
|
34
|
+
modal.close();
|
35
|
+
modal = false;
|
36
|
+
window.location = resp.redirect;
|
37
|
+
}
|
34
38
|
}
|
35
39
|
});
|
36
40
|
}
|
@@ -0,0 +1,68 @@
|
|
1
|
+
<%
|
2
|
+
bt = Caboose::BlockType.where(:description => 'Caboose Calendar').first
|
3
|
+
b1 = Caboose::Block.where(:block_type_id => bt.id).where(:page_id => Caboose::Page.where(:site_id => @event.calendar.site_id).pluq(:id)).first if bt && @event.calendar
|
4
|
+
b2 = b1.child('calendars_to_show') if b1
|
5
|
+
bl = Caboose::Block.where(:id => b2.id).where("value ILIKE ? OR value = ?","%#{@event.calendar_id}%","all").first if b2
|
6
|
+
pg = bl.parent.page if bl && bl.parent
|
7
|
+
%>
|
8
|
+
|
9
|
+
<div class="post-details-wrapper event">
|
10
|
+
<div class="constrain">
|
11
|
+
<div class="main-post-content event">
|
12
|
+
<% if @event.image && !@event.image.url.blank? && !@event.image.url.include?('placehold') %>
|
13
|
+
<img src="<%= @event.image.url(:large) %>" alt="<%= @event.name %>" width="300" style="display:block;margin:0 0 20px 0;" />
|
14
|
+
<% end %>
|
15
|
+
<div class="post-text">
|
16
|
+
<h2 class="post-title"><%= @event.name %></h2>
|
17
|
+
<% if !@event.location.blank? %><h4 class="location"><%= @event.location %></h4><% end %>
|
18
|
+
<% if !@event.begin_date.blank? && !@event.end_date.blank? %>
|
19
|
+
<% bd = @event.begin_date.in_time_zone("Central Time (US & Canada)") %>
|
20
|
+
<% ed = @event.end_date.in_time_zone("Central Time (US & Canada)") %>
|
21
|
+
<% if @event.all_day %>
|
22
|
+
<% if bd.strftime("%B") == ed.strftime("%B") && bd.strftime("%Y") == ed.strftime("%Y") && bd.strftime("%d") == ed.strftime("%d") %>
|
23
|
+
<p class="begin-date"><%= bd.strftime("%B %-d, %Y") %></p>
|
24
|
+
<% else %>
|
25
|
+
<p class="begin-date">Begins: <%= bd.strftime("%B %-d, %Y") %></p>
|
26
|
+
<p class="end-date">Ends: <%= ed.strftime("%B %-d, %Y") %></p>
|
27
|
+
<% end %>
|
28
|
+
<% else %>
|
29
|
+
<p class="begin-date">Begins: <%= bd.strftime("%B %-d, %Y at %l:%M%P") %></p>
|
30
|
+
<p class="end-date">Ends: <%= ed.strftime("%B %-d, %Y at %l:%M%P") %></p>
|
31
|
+
<% end %>
|
32
|
+
<% end %>
|
33
|
+
<div class='share-icons clearfix' style="margin-top:20px;">
|
34
|
+
<div class="share-buttons">
|
35
|
+
<% url = "http://" + @site.primary_domain.domain + '/calendar-events/' + @event.id.to_s %>
|
36
|
+
<a href="https://www.facebook.com/sharer/sharer.php?u=<%= url %>" target="_blank" title="Share on Facebook" class="holder" id="facebook" onclick="window.open(this.href, 'mywin',
|
37
|
+
'left=20,top=20,width=500,height=500,toolbar=1,resizable=0'); return false;"><span class="icon-facebook white"></span></a>
|
38
|
+
<a href="https://twitter.com/home?status=<%= @event.name + ' @ ' + url %>" title="Share on Twitter" target="_blank" class="holder" id="twitter" onclick="window.open(this.href, 'mywin',
|
39
|
+
'left=20,top=20,width=500,height=500,toolbar=1,resizable=0'); return false;"><span class="icon-twitter white"></span></a>
|
40
|
+
<a href="https://plus.google.com/share?url=<%= url %>" title="Share on Google +" target="_blank" class="holder" id="google-plus" onclick="window.open(this.href, 'mywin',
|
41
|
+
'left=20,top=20,width=500,height=500,toolbar=1,resizable=0'); return false;"><span class="icon-google-plus white"></span></a>
|
42
|
+
<a href="mailto:?subject=<%= @event.name %>&body=<%= url %>" title="Share by Email" class="holder" id="email"><span class="icon-mail white"></span></a>
|
43
|
+
</div>
|
44
|
+
</div>
|
45
|
+
<div class="post-body richtext" style="margin-bottom:30px;">
|
46
|
+
<div class="content_body">
|
47
|
+
<%== @event.description %>
|
48
|
+
</div>
|
49
|
+
</div>
|
50
|
+
<% if !@event.url.blank? %>
|
51
|
+
<a <% if @event.url.include?('http') %>target="_blank"<% end %> href="<%= @event.url %>" style="margin-right:15px;" class="btn"><%= @event.url_label.blank? ? "More Info" : @event.url_label %></a>
|
52
|
+
<% end %>
|
53
|
+
<% if pg %>
|
54
|
+
<a href="/<%= pg.uri %>" class="btn">Back to Calendar</a>
|
55
|
+
<% end %>
|
56
|
+
</div>
|
57
|
+
</div>
|
58
|
+
</div>
|
59
|
+
</div>
|
60
|
+
|
61
|
+
<% content_for :caboose_css do %>
|
62
|
+
<style>
|
63
|
+
.begin-date, .end-date {
|
64
|
+
font-weight: bold;
|
65
|
+
margin-bottom: 5px;
|
66
|
+
}
|
67
|
+
</style>
|
68
|
+
<% end %>
|
data/lib/caboose/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: caboose-cms
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.9.
|
4
|
+
version: 0.9.125
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- William Barry
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-04-
|
11
|
+
date: 2018-04-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: pg
|
@@ -956,6 +956,7 @@ files:
|
|
956
956
|
- app/views/caboose/blocks/admin_render_second_level.json.erb
|
957
957
|
- app/views/caboose/blocks/tinymce.js.erb
|
958
958
|
- app/views/caboose/calendars/admin_edit.html.erb
|
959
|
+
- app/views/caboose/calendars/admin_edit_old.html.erb
|
959
960
|
- app/views/caboose/calendars/admin_index.html.erb
|
960
961
|
- app/views/caboose/cart/index.html.erb
|
961
962
|
- app/views/caboose/categories/admin_edit.html.erb
|
@@ -997,6 +998,7 @@ files:
|
|
997
998
|
- app/views/caboose/events/admin_edit.html.erb
|
998
999
|
- app/views/caboose/events/admin_index.html.erb
|
999
1000
|
- app/views/caboose/events/admin_new.html.erb
|
1001
|
+
- app/views/caboose/events/show.html.erb
|
1000
1002
|
- app/views/caboose/extras/error.html.erb
|
1001
1003
|
- app/views/caboose/extras/error404.html.erb
|
1002
1004
|
- app/views/caboose/extras/error_invalid_site.html.erb
|