conschedule 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/MIT-LICENSE +20 -0
- data/README.md +154 -0
- data/Rakefile +37 -0
- data/app/assets/config/conschedule_manifest.js +2 -0
- data/app/assets/fonts/icomoon.eot +0 -0
- data/app/assets/fonts/proxima_nova_100.eot +0 -0
- data/app/assets/fonts/proxima_nova_400.eot +0 -0
- data/app/assets/fonts/proxima_nova_700.eot +0 -0
- data/app/assets/images/conschedule/chosen-sprite-small.png +0 -0
- data/app/assets/images/conschedule/chosen-sprite.png +0 -0
- data/app/assets/images/conschedule/close.png +0 -0
- data/app/assets/images/conschedule/spinner-small.gif +0 -0
- data/app/assets/images/conschedule/spinner.gif +0 -0
- data/app/assets/javascripts/conschedule/application.js +22 -0
- data/app/assets/javascripts/conschedule/calendar.js +467 -0
- data/app/assets/javascripts/conschedule/date.js +104 -0
- data/app/assets/javascripts/conschedule/form.js +53 -0
- data/app/assets/javascripts/conschedule/home.js +149 -0
- data/app/assets/javascripts/conschedule/jquery-ui-datepicker.min.js +1674 -0
- data/app/assets/javascripts/conschedule/jquery.easing.min.js +44 -0
- data/app/assets/javascripts/conschedule/jquery.validate.js +1532 -0
- data/app/assets/javascripts/conschedule/js_time_zone.js +1433 -0
- data/app/assets/javascripts/conschedule/moment-timezone.js +1209 -0
- data/app/assets/javascripts/conschedule/moment.js +4195 -0
- data/app/assets/javascripts/conschedule/schedules.js +22 -0
- data/app/assets/javascripts/conschedule/time_zones_drop_down.js +609 -0
- data/app/assets/stylesheets/conschedule/application.css +4 -0
- data/app/assets/stylesheets/conschedule/common.css +816 -0
- data/app/assets/stylesheets/conschedule/home.css +2441 -0
- data/app/assets/stylesheets/conschedule/main.css +884 -0
- data/app/assets/stylesheets/conschedule/schedules.css +4 -0
- data/app/controllers/conschedule/application_controller.rb +49 -0
- data/app/controllers/conschedule/schedules_controller.rb +125 -0
- data/app/helpers/conschedule/application_helper.rb +15 -0
- data/app/helpers/conschedule/schedules_helper.rb +43 -0
- data/app/jobs/conschedule/application_job.rb +4 -0
- data/app/mailers/conschedule/schedules_mailer.rb +46 -0
- data/app/models/conschedule/application_record.rb +5 -0
- data/app/models/conschedule/schedule.rb +63 -0
- data/app/views/conschedule/schedules/_confirmation.html.erb +38 -0
- data/app/views/conschedule/schedules/_page_one.html.erb +75 -0
- data/app/views/conschedule/schedules/_page_three.html.erb +94 -0
- data/app/views/conschedule/schedules/_page_two.html.erb +22 -0
- data/app/views/conschedule/schedules/_schedules.html.erb +122 -0
- data/app/views/conschedule/schedules/create.js.erb +11 -0
- data/app/views/conschedule/schedules/index.html.erb +123 -0
- data/app/views/conschedule/schedules/index.js.erb +3 -0
- data/app/views/conschedule/schedules/new.html.erb +11 -0
- data/app/views/conschedule/schedules_mailer/send_cancel_email_owner.html.erb +61 -0
- data/app/views/conschedule/schedules_mailer/send_cancel_email_user.html.erb +29 -0
- data/app/views/conschedule/schedules_mailer/send_confirmation_email_owner.html.erb +77 -0
- data/app/views/conschedule/schedules_mailer/send_confirmation_email_user.html.erb +30 -0
- data/app/views/kaminari/custom_theme/_first_page.html.erb +3 -0
- data/app/views/kaminari/custom_theme/_gap.html.erb +1 -0
- data/app/views/kaminari/custom_theme/_last_page.html.erb +3 -0
- data/app/views/kaminari/custom_theme/_next_page.html.erb +1 -0
- data/app/views/kaminari/custom_theme/_page.html.erb +5 -0
- data/app/views/kaminari/custom_theme/_paginator.html.erb +23 -0
- data/app/views/kaminari/custom_theme/_prev_page.html.erb +1 -0
- data/app/views/layouts/conschedule/application.html.erb +14 -0
- data/app/views/layouts/conschedule/mailer.html.erb +11 -0
- data/app/views/layouts/conschedule/schedules.html.erb +14 -0
- data/config/initializers/assets.rb +11 -0
- data/config/routes.rb +11 -0
- data/db/migrate/20160812085505_create_conschedule_schedules.rb +27 -0
- data/lib/conschedule.rb +34 -0
- data/lib/conschedule/configuration.rb +25 -0
- data/lib/conschedule/engine.rb +5 -0
- data/lib/conschedule/gem_dependencies.rb +2 -0
- data/lib/conschedule/version.rb +3 -0
- data/lib/generators/conschedule/install_generator.rb +23 -0
- data/lib/generators/conschedule/views_generator.rb +45 -0
- data/lib/generators/templates/README +40 -0
- data/lib/generators/templates/initializer.rb +25 -0
- data/lib/tasks/conschedule_tasks.rake +4 -0
- metadata +182 -0
@@ -0,0 +1,94 @@
|
|
1
|
+
<div id="main-region">
|
2
|
+
<div>
|
3
|
+
<div class="header">
|
4
|
+
<div class="js-profile-region">
|
5
|
+
<div class="wrapper">
|
6
|
+
<div class="step-back icon-arrow-left js-step-back"> </div>
|
7
|
+
<div class="label">
|
8
|
+
<%= @page_info[:main_heading] %>
|
9
|
+
<div class="js-popover-region"></div>
|
10
|
+
</div>
|
11
|
+
</div>
|
12
|
+
</div>
|
13
|
+
</div>
|
14
|
+
<hr class="mbl">
|
15
|
+
<div class="wrapper">
|
16
|
+
<div class="notification js-event-error-block mbl" style="display: none;">
|
17
|
+
<span class="js-event-error-message"></span>
|
18
|
+
<a class="button ghost js-step-back">Find a new spot</a>
|
19
|
+
</div>
|
20
|
+
<div class="row adaptive">
|
21
|
+
<div class="col1of2 hidden-phone prm mbm">
|
22
|
+
<div class="mbs row">
|
23
|
+
<% unless @page_info[:purpose].blank? %>
|
24
|
+
<div class="marker" style="background-color: #fff200"></div>
|
25
|
+
<div class="last-col">
|
26
|
+
<h2><%= @page_info[:purpose] %></h2>
|
27
|
+
</div>
|
28
|
+
<% end %>
|
29
|
+
</div>
|
30
|
+
<div class="iconed-text emphasis slot-details"></div>
|
31
|
+
<div class="iconed-text tz-details"></div>
|
32
|
+
<div class="iconed-text">
|
33
|
+
<% unless @page_info[:instructions].blank? %>
|
34
|
+
<i class="icon-description"></i>
|
35
|
+
<div class="last-col">
|
36
|
+
<%= @page_info[:instructions] %>
|
37
|
+
</div>
|
38
|
+
<% end %>
|
39
|
+
</div>
|
40
|
+
<div class="iconed-text">
|
41
|
+
<% unless @page_info[:location_details].blank? %>
|
42
|
+
<i class="icon-location-target"></i>
|
43
|
+
<div class="last-col">
|
44
|
+
<%= @page_info[:location_details] %>
|
45
|
+
</div>
|
46
|
+
<% end %>
|
47
|
+
</div>
|
48
|
+
</div>
|
49
|
+
<div class="col1of2 plm">
|
50
|
+
<div class="error_explanation"></div>
|
51
|
+
<h2 class="mbm">Enter Details</h2>
|
52
|
+
<%= f.hidden_field :slot_start_time %>
|
53
|
+
<%= f.hidden_field :slot_end_time %>
|
54
|
+
<%= f.hidden_field :app_tz_offset %>
|
55
|
+
<%= f.hidden_field :user_tz_offset %>
|
56
|
+
<div class="row">
|
57
|
+
<div class="col1of2 prs">
|
58
|
+
<div class="field mbm">
|
59
|
+
<label>First Name *</label>
|
60
|
+
<%= f.text_field :first_name, autocomplete: "off", autocorrect: "off", maxlength: "155" %>
|
61
|
+
<span data-error="first_name"></span>
|
62
|
+
</div>
|
63
|
+
</div>
|
64
|
+
<div class="col1of2 pls">
|
65
|
+
<div class="field mbm">
|
66
|
+
<label>Last Name</label>
|
67
|
+
<%= f.text_field :last_name, autocomplete: "off", autocorrect: "off", maxlength: "155" %>
|
68
|
+
<span data-error="last_name"></span>
|
69
|
+
</div>
|
70
|
+
</div>
|
71
|
+
</div>
|
72
|
+
<div class="field mbm">
|
73
|
+
<label>Your phone *</label>
|
74
|
+
<%= f.text_field :phone, autocomplete: "off" %>
|
75
|
+
<span data-error="phone"></span>
|
76
|
+
</div>
|
77
|
+
<div class="field mbm">
|
78
|
+
<label>Your e-mail address *</label>
|
79
|
+
<%= f.text_field :email, autocomplete: "off" %>
|
80
|
+
<span data-error="email"></span>
|
81
|
+
</div>
|
82
|
+
<div class="field mbm">
|
83
|
+
<label>Message</label>
|
84
|
+
<%= f.text_area :message, autocomplete: "off", maxlength: "255", class: "js-input" %>
|
85
|
+
<span data-error="message"></span>
|
86
|
+
</div>
|
87
|
+
<div class="ptm">
|
88
|
+
<%= f.submit "Schedule Event", :class => "button schedule-event" %>
|
89
|
+
</div>
|
90
|
+
</div>
|
91
|
+
</div>
|
92
|
+
</div>
|
93
|
+
</div>
|
94
|
+
</div>
|
@@ -0,0 +1,22 @@
|
|
1
|
+
<div id="main-region">
|
2
|
+
<div>
|
3
|
+
<div class="header">
|
4
|
+
<div class="wrapper">
|
5
|
+
<div class="step-back icon-arrow-left js-step-back"> </div>
|
6
|
+
<h2 class="selected_day"></h2>
|
7
|
+
<div class="mbm selected_date"></div>
|
8
|
+
<div class="mbl selected_tz"></div>
|
9
|
+
</div>
|
10
|
+
</div>
|
11
|
+
<hr class="mbl">
|
12
|
+
<div class="wrapper narrow">
|
13
|
+
<div class="text-center mbm">
|
14
|
+
</div>
|
15
|
+
<div class="row mbm">
|
16
|
+
<h2 class="left">Select a Time</h2>
|
17
|
+
</div>
|
18
|
+
<div class="js-spot-list mbl">
|
19
|
+
</div>
|
20
|
+
</div>
|
21
|
+
</div>
|
22
|
+
</div>
|
@@ -0,0 +1,122 @@
|
|
1
|
+
<ul class="date-list mbl">
|
2
|
+
<% unless @grouped.blank? %>
|
3
|
+
<% @grouped.each do |key,values| %>
|
4
|
+
<li class="date">
|
5
|
+
<div class="heading">
|
6
|
+
<%= fdtime(key.to_date,:date) %>
|
7
|
+
<% if is_today?(key.to_date,@page_info[:system_time_zone]) %>
|
8
|
+
<strong class="mls">
|
9
|
+
TODAY
|
10
|
+
</strong>
|
11
|
+
<% end %>
|
12
|
+
</div>
|
13
|
+
<div class="js-events-region">
|
14
|
+
<div class="event-list">
|
15
|
+
<% values.each do |value| %>
|
16
|
+
<div class="event <%= value.status %> collapsed">
|
17
|
+
<div class="js-title-region js-content-toggle">
|
18
|
+
<div class="title row">
|
19
|
+
<div class="duration ">
|
20
|
+
<div>
|
21
|
+
<span class="h4 time">
|
22
|
+
<%= slot_start_end_time(value,"app") %>
|
23
|
+
</span>
|
24
|
+
<span class="marker" style="background: #fff200;"></span>
|
25
|
+
</div>
|
26
|
+
<div class="locked-time muted">
|
27
|
+
<%= slot_start_end_time(value,"user") %> (<%= value.user_time_zone %>)
|
28
|
+
</div>
|
29
|
+
</div>
|
30
|
+
<div class="description">
|
31
|
+
<div class="toggle">
|
32
|
+
<div class="expand">
|
33
|
+
Details
|
34
|
+
<i class="icon-angle-down"></i>
|
35
|
+
</div>
|
36
|
+
<div class="collapse">
|
37
|
+
Close
|
38
|
+
<i class="icon-close"></i>
|
39
|
+
</div>
|
40
|
+
</div>
|
41
|
+
<div class="primary">
|
42
|
+
<a class="h4">
|
43
|
+
<strong class="user-name">
|
44
|
+
<%= value.full_name %>
|
45
|
+
</strong>
|
46
|
+
</a>
|
47
|
+
<span class="muted">with you</span>
|
48
|
+
</div>
|
49
|
+
<div class="secondary">
|
50
|
+
Event type
|
51
|
+
<strong class="schedule-name"><%= value.event_name %></strong>
|
52
|
+
</div>
|
53
|
+
<% if value.cancelled? %>
|
54
|
+
<div class="pts">
|
55
|
+
<small class="text-danger">
|
56
|
+
Cancel Message:
|
57
|
+
</small>
|
58
|
+
<small class="muted">
|
59
|
+
<%= cancel_reason(value) %>
|
60
|
+
</small>
|
61
|
+
</div>
|
62
|
+
<% end %>
|
63
|
+
</div>
|
64
|
+
</div>
|
65
|
+
</div>
|
66
|
+
<div class="details row js-content-body">
|
67
|
+
<div class="controls">
|
68
|
+
<% if value.display_action? %>
|
69
|
+
<a class="action-button js-cancel-event-button" href="" data-sch-id="<%= value.id %>">
|
70
|
+
<i class="icon-trash"></i>
|
71
|
+
<span class="label">
|
72
|
+
Cancel Event
|
73
|
+
</span>
|
74
|
+
</a>
|
75
|
+
<% end %>
|
76
|
+
</div>
|
77
|
+
<div class="content pvm">
|
78
|
+
<div class="entry">
|
79
|
+
<label>
|
80
|
+
Email
|
81
|
+
</label>
|
82
|
+
<div>
|
83
|
+
<%= value.email %>
|
84
|
+
</div>
|
85
|
+
</div>
|
86
|
+
<div class="entry">
|
87
|
+
<label>
|
88
|
+
Location
|
89
|
+
</label>
|
90
|
+
<div class="text-wrap">
|
91
|
+
<%= value.location_details %>
|
92
|
+
</div>
|
93
|
+
</div>
|
94
|
+
<div class="timestamp">
|
95
|
+
created <%= fdtime(value.created_at,:month_date) %>
|
96
|
+
</div>
|
97
|
+
</div>
|
98
|
+
</div>
|
99
|
+
</div>
|
100
|
+
<% end %>
|
101
|
+
</div>
|
102
|
+
</div>
|
103
|
+
</li>
|
104
|
+
<% end %>
|
105
|
+
<% else %>
|
106
|
+
<div class="centered muted ptl">
|
107
|
+
<% if @filters_applied %>
|
108
|
+
<h3 class="pvl">
|
109
|
+
<%= @filter_message %> matching the filtered criteria.
|
110
|
+
</h3>
|
111
|
+
<h3 class="pbl">
|
112
|
+
Suggestion:
|
113
|
+
<a class="js-reset-filters">reset filters </a>to see all <%= @suggestion_message %>.
|
114
|
+
</h3>
|
115
|
+
<% else %>
|
116
|
+
<h3 class="pvl">
|
117
|
+
<%= @filter_message %>
|
118
|
+
</h3>
|
119
|
+
<% end %>
|
120
|
+
</div>
|
121
|
+
<% end %>
|
122
|
+
</ul>
|
@@ -0,0 +1,11 @@
|
|
1
|
+
$(".error_explanation").html("")
|
2
|
+
<% unless @schedule.errors.any? %>
|
3
|
+
$(".page-loaded").html("<%= escape_javascript(render 'confirmation') %>")
|
4
|
+
<% else %>
|
5
|
+
$(".error_explanation").append("<h2><%= pluralize(@schedule.errors.count, 'error')%> prohibited this form from being saved:</h2>")
|
6
|
+
$(".error_explanation").append("<p class='error-heading'>There were problems with the following fields:</p>")
|
7
|
+
$(".error_explanation").append("<ul class='form-errors'></ul>")
|
8
|
+
<% @schedule.errors.full_messages.each do |message| %>
|
9
|
+
$("ul.form-errors").append($("<li />").html("<%= message.html_safe %>"))
|
10
|
+
<% end %>
|
11
|
+
<% end %>
|
@@ -0,0 +1,123 @@
|
|
1
|
+
<div id="popup-region"></div>
|
2
|
+
<div class="main-wrapper">
|
3
|
+
<div class="body-content">
|
4
|
+
<div id="main-region" id="main-region">
|
5
|
+
<div class="dashboard">
|
6
|
+
<div class="controls">
|
7
|
+
<div class="wrapper">
|
8
|
+
<div class="scopes-row">
|
9
|
+
<div class="js-scope-filter-region">
|
10
|
+
<div class="tabs">
|
11
|
+
<div class="tab active" data-value="user">
|
12
|
+
My Schedules
|
13
|
+
</div>
|
14
|
+
</div>
|
15
|
+
</div>
|
16
|
+
<div class="js-daterangepicker-region">
|
17
|
+
<div class="daterange">
|
18
|
+
<div class="js-daterangepicker-toggle">
|
19
|
+
<%= @date_range_label %>
|
20
|
+
<i class="icon-angle-down"></i>
|
21
|
+
</div>
|
22
|
+
</div>
|
23
|
+
</div>
|
24
|
+
</div>
|
25
|
+
<div class="event-types-row">
|
26
|
+
<div class="js-event-types-region left">
|
27
|
+
<div class="quick-menu"></div>
|
28
|
+
</div>
|
29
|
+
<div class="js-filters-toggle-region last-col">
|
30
|
+
<div class="filters-toggle scope-user">
|
31
|
+
<span class="js-filters-toggle right">
|
32
|
+
<small class="label filter-label">Show Filter</small>
|
33
|
+
<i class="icon-manage"></i>
|
34
|
+
</span>
|
35
|
+
</div>
|
36
|
+
</div>
|
37
|
+
</div>
|
38
|
+
</div>
|
39
|
+
<div class="filters-row">
|
40
|
+
<div class="wrapper js-nested-filters-region" style="display:none;">
|
41
|
+
<div class="filters row">
|
42
|
+
<div class="row annotation">
|
43
|
+
<small>Show me events matching:</small>
|
44
|
+
</div>
|
45
|
+
<div class="row">
|
46
|
+
<div class="filters-list js-filters-list">
|
47
|
+
<div class="filter">
|
48
|
+
<div class="name">Status</div>
|
49
|
+
<span class="label muted js-label events-tab">
|
50
|
+
Active Events
|
51
|
+
<i class="icon-angle-down"></i>
|
52
|
+
</span>
|
53
|
+
<div class="js-content-region event-options" style="display:none;">
|
54
|
+
<div class="options-dropdown">
|
55
|
+
<div style="max-height: 260px;" class="scroller">
|
56
|
+
<ul class="checkbox-list js-filter-items">
|
57
|
+
<li class="checkbox-group">
|
58
|
+
<div class="present-items plm js-present-items-region">
|
59
|
+
<ul>
|
60
|
+
<li>
|
61
|
+
<div class="checkbox">
|
62
|
+
<input checked="checked" class="js-checkbox filter-active" id="option-c514" type="checkbox" data-filter-type="active">
|
63
|
+
<label for="option-c514">
|
64
|
+
Active events
|
65
|
+
</label>
|
66
|
+
</div>
|
67
|
+
</li>
|
68
|
+
<li>
|
69
|
+
<div class="checkbox">
|
70
|
+
<input class="js-checkbox filter-cancel" id="option-c515" type="checkbox" data-filter-type="canceled">
|
71
|
+
<label for="option-c515">
|
72
|
+
Cancelled events
|
73
|
+
</label>
|
74
|
+
</div>
|
75
|
+
</li>
|
76
|
+
</ul>
|
77
|
+
</div>
|
78
|
+
<div class="plm js-deleted-items-region"></div>
|
79
|
+
</li>
|
80
|
+
</ul>
|
81
|
+
<div class="empty muted hidden js-search-empty">
|
82
|
+
No Status match your search.
|
83
|
+
</div>
|
84
|
+
</div>
|
85
|
+
<div class="decision centered">
|
86
|
+
<button class="mrs js-apply">Apply</button>
|
87
|
+
<button class="hollow js-close">Cancel</button>
|
88
|
+
</div>
|
89
|
+
</div>
|
90
|
+
</div>
|
91
|
+
</div>
|
92
|
+
</div>
|
93
|
+
<span class="ghost-action js-clear-filters" style="display:none;">
|
94
|
+
Reset Filters
|
95
|
+
</span>
|
96
|
+
</div>
|
97
|
+
</div>
|
98
|
+
</div>
|
99
|
+
</div>
|
100
|
+
</div>
|
101
|
+
<div class="wrapper">
|
102
|
+
<div class="js-summary-region pagination-summary">
|
103
|
+
<div class="row muted">
|
104
|
+
<% unless @grouped.blank? %>
|
105
|
+
<strong class="pagination-entries">
|
106
|
+
<%= page_entries_info @schedules, entry_name: 'Event' %>
|
107
|
+
</strong>
|
108
|
+
<% end %>
|
109
|
+
</div>
|
110
|
+
</div>
|
111
|
+
<div class="js-results-region">
|
112
|
+
<div class="schedule">
|
113
|
+
<%= render 'schedules' %>
|
114
|
+
</div>
|
115
|
+
</div>
|
116
|
+
<div class="schedule-pagination">
|
117
|
+
<%= paginate @schedules, theme: 'custom_theme', remote: true %>
|
118
|
+
</div>
|
119
|
+
</div>
|
120
|
+
</div>
|
121
|
+
</div>
|
122
|
+
</div>
|
123
|
+
</div>
|
@@ -0,0 +1,3 @@
|
|
1
|
+
$('.schedule').html("<%= escape_javascript(render 'schedules') %>");
|
2
|
+
$('.schedule-pagination').html("<%= escape_javascript(paginate(@schedules, theme: 'custom_theme', remote: true).to_s) %>");
|
3
|
+
$('.pagination-entries').html("<%= escape_javascript(page_entries_info(@schedules, entry_name: 'Events')) %>");
|
@@ -0,0 +1,11 @@
|
|
1
|
+
<%= form_for @schedule, remote: true, html: {class: 'schedule_wizard'} do |f| %>
|
2
|
+
<fieldset class="section-division">
|
3
|
+
<%= render 'page_one', f: f %>
|
4
|
+
</fieldset>
|
5
|
+
<fieldset class="section-division">
|
6
|
+
<%= render 'page_two' %>
|
7
|
+
</fieldset>
|
8
|
+
<fieldset class="section-division">
|
9
|
+
<%= render 'page_three', f: f %>
|
10
|
+
</fieldset>
|
11
|
+
<% end %>
|
@@ -0,0 +1,61 @@
|
|
1
|
+
<div bgcolor="#ffffff" style="background-color:#ffffff">
|
2
|
+
<div style="padding:20px 0;margin:0 auto;max-width:600px">
|
3
|
+
<table style="width:80%;margin:0 auto;padding-bottom:20px;border-bottom:1px dashed #dadada">
|
4
|
+
<tbody>
|
5
|
+
<tr>
|
6
|
+
<td style="text-align:center">
|
7
|
+
</td>
|
8
|
+
</tr>
|
9
|
+
</tbody>
|
10
|
+
</table>
|
11
|
+
<table style="width:80%;margin:30px auto 0;font-size:16px">
|
12
|
+
<tbody>
|
13
|
+
<tr>
|
14
|
+
<td style="color:#666a7a;line-height:22px">
|
15
|
+
<p>Hi <%= Conschedule.contact_name %>,</p>
|
16
|
+
<p style="margin-top:20px">The event below has been canceled.</p>
|
17
|
+
<p style="margin-top:20px">
|
18
|
+
<strong style="font-size:14px">Invitee:</strong>
|
19
|
+
<br>
|
20
|
+
<span style="font-size:16px"><%= @schedule.full_name %></span>
|
21
|
+
</p>
|
22
|
+
<p style="margin-top:20px">
|
23
|
+
<strong style="font-size:14px">Invitee Email:</strong>
|
24
|
+
<br>
|
25
|
+
<span style="font-size:16px">
|
26
|
+
<a href="mailto:<%= @schedule.email %>" target="_blank"><%= @schedule.email %></a>
|
27
|
+
</span>
|
28
|
+
</p>
|
29
|
+
<p style="margin-top:20px">
|
30
|
+
<strong style="font-size:14px">Event Date/Time:</strong>
|
31
|
+
<br>
|
32
|
+
<span style="font-size:16px">
|
33
|
+
<span tabindex="0">
|
34
|
+
<span><%= @slot_start_time.strftime("%-l:%M%P") %></span>
|
35
|
+
</span> -
|
36
|
+
<span tabindex="0">
|
37
|
+
<span><%= @schedule.slot_start_time.strftime("%A, %B %-d, %Y") %></span>
|
38
|
+
</span> (<%= @schedule.app_tz_offset %>)
|
39
|
+
</span>
|
40
|
+
</p>
|
41
|
+
<% unless @schedule.cancel_reason.blank? %>
|
42
|
+
<p style="margin-top:20px;color:#e41600">
|
43
|
+
<strong style="font-size:14px">Cancellation Reason:</strong>
|
44
|
+
<br>
|
45
|
+
<span style="font-size:16px"><%= @schedule.cancel_reason %></span>
|
46
|
+
</p>
|
47
|
+
<% end %>
|
48
|
+
</td>
|
49
|
+
</tr>
|
50
|
+
</tbody>
|
51
|
+
</table>
|
52
|
+
<table style="width:80%;margin:30px auto;border-top:1px dashed #dadada">
|
53
|
+
<tbody>
|
54
|
+
<tr>
|
55
|
+
<td style="color:#a8a8a8;padding-top:15px">
|
56
|
+
</td>
|
57
|
+
</tr>
|
58
|
+
</tbody>
|
59
|
+
</table>
|
60
|
+
</div>
|
61
|
+
</div>
|