jekyll-attendease 0.6.4 → 0.6.5.pre
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/lib/jekyll/attendease_plugin/schedule_data_parser.rb +149 -0
- data/lib/jekyll/attendease_plugin/schedule_generator.rb +12 -106
- data/lib/jekyll/attendease_plugin/tags.rb +20 -0
- data/lib/jekyll/attendease_plugin/version.rb +1 -1
- data/lib/jekyll/attendease_plugin.rb +9 -0
- data/lib/jekyll-attendease.rb +1 -0
- data/spec/lib/jekyll/attendease_plugin/schedule_generator_spec.rb +9 -29
- data/templates/_includes/attendease/presenters/index.html +0 -35
- data/templates/_includes/attendease/presenters/presenter.html +0 -35
- data/templates/_includes/attendease/schedule/widget.html +22 -0
- data/templates/_includes/attendease/sponsors/index.html +1 -1
- metadata +36 -51
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: d42713f38f6ac2e2b80dcb0fcd05006ef5d57599
|
4
|
+
data.tar.gz: 6185913b55bb21f09c8962471cfc5a2e6423dc27
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 9562d7c55430c5fcc29d07639e76a45ea6c516e46ad38807c95f4a1077ef434f96099212428f1291fe382b514d37ccb5988f2b33b27feab461c8e7dedc3653b0
|
7
|
+
data.tar.gz: 87d5ba4337fcd5cd758bc9b38186c503b6c887c595861d2826b9ef800e3de05d3305cc00b9789cfa5d9708419105e6a4f4bd20b5f4935020d02972228deae716
|
@@ -0,0 +1,149 @@
|
|
1
|
+
module Jekyll
|
2
|
+
module AttendeasePlugin
|
3
|
+
class ScheduleDataParser
|
4
|
+
|
5
|
+
attr_accessor :site
|
6
|
+
|
7
|
+
def initialize(site)
|
8
|
+
@site = site
|
9
|
+
end
|
10
|
+
|
11
|
+
def event
|
12
|
+
site.config['attendease']['event']
|
13
|
+
end
|
14
|
+
|
15
|
+
def presenters
|
16
|
+
raw_presenters.each do |presenter|
|
17
|
+
presenter['slug'] = Helpers.parameterize("#{presenter['first_name']} #{presenter['last_name']}") + '.html'
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
def venues
|
22
|
+
raw_venues.each do |venue|
|
23
|
+
venue['slug'] = Helpers.parameterize(venue['name']) + '.html'
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
def rooms
|
28
|
+
raw_rooms
|
29
|
+
end
|
30
|
+
|
31
|
+
def sessions
|
32
|
+
raw_sessions.each do |session|
|
33
|
+
if site.config['attendease']['session_slug_uses_code']
|
34
|
+
session['slug'] = session['code'] + '.html'
|
35
|
+
else
|
36
|
+
session['slug'] = Helpers.parameterize(session['name']) + '.html'
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
populate_sessions_with_related_data!(raw_sessions)
|
41
|
+
end
|
42
|
+
|
43
|
+
def filters
|
44
|
+
raw_filters
|
45
|
+
end
|
46
|
+
|
47
|
+
protected
|
48
|
+
|
49
|
+
def raw_presenters
|
50
|
+
@raw_presenters ||= JSON.parse(File.read("#{data_path}/presenters.json")).sort{|p1, p2| p1['last_name'] <=> p2['last_name']}
|
51
|
+
end
|
52
|
+
|
53
|
+
def raw_venues
|
54
|
+
@raw_venues ||= JSON.parse(File.read("#{data_path}/venues.json")).sort{|v1, v2| v1['name'] <=> v2['name']}
|
55
|
+
end
|
56
|
+
|
57
|
+
def raw_rooms
|
58
|
+
@raw_rooms ||= JSON.parse(File.read("#{data_path}/rooms.json")).sort{|r1, r2| r1['name'] <=> r2['name']}
|
59
|
+
end
|
60
|
+
|
61
|
+
def raw_sessions
|
62
|
+
@raw_sessions ||= JSON.parse(File.read("#{data_path}/sessions.json")).sort{|s1, s2| s1['name'] <=> s2['name']}
|
63
|
+
end
|
64
|
+
|
65
|
+
def raw_filters
|
66
|
+
@raw_filters ||= JSON.parse(File.read("#{data_path}/filters.json")).sort{|f1, f2| f1['name'] <=> f2['name']}
|
67
|
+
end
|
68
|
+
|
69
|
+
def data_path
|
70
|
+
File.join(site.config['source'], '_attendease', 'data')
|
71
|
+
end
|
72
|
+
|
73
|
+
def populate_sessions_with_related_data!(sessions)
|
74
|
+
sessions.inject([]) do |memo, s|
|
75
|
+
session = s.select do |k, v|
|
76
|
+
%w{ id name description code speaker_ids slug }.include?(k)
|
77
|
+
end
|
78
|
+
|
79
|
+
session['presenters'] = get_session_presenters(s)
|
80
|
+
populate_session_filters!(session, s)
|
81
|
+
session['instances'] = get_session_instances(s)
|
82
|
+
|
83
|
+
memo << session
|
84
|
+
end
|
85
|
+
end
|
86
|
+
|
87
|
+
def get_session_presenters(session)
|
88
|
+
session_presenters = presenters.select do |presenter|
|
89
|
+
session['speaker_ids'].include?(presenter['id'])
|
90
|
+
end
|
91
|
+
|
92
|
+
session_presenters.inject([]) do |memo, presenter|
|
93
|
+
memo << presenter.select do |k, v|
|
94
|
+
%w{ id first_name last_name company title profile_url slug }.include?(k)
|
95
|
+
end
|
96
|
+
end
|
97
|
+
end
|
98
|
+
|
99
|
+
# Populates filter realted data into session,
|
100
|
+
# from source.
|
101
|
+
def populate_session_filters!(session, source)
|
102
|
+
filters_for_session_hash = {}
|
103
|
+
filters.each do |filter|
|
104
|
+
filter['filter_items'].each_with_index do |filter_item, index|
|
105
|
+
if source['filters'].include?(filter_item['id'])
|
106
|
+
filters_for_session_hash[filter['name']] ||= []
|
107
|
+
filters_for_session_hash[filter['name']] << {
|
108
|
+
'name' => filter_item['name'],
|
109
|
+
'index' => index,
|
110
|
+
}
|
111
|
+
if event['primary_filter_id'] && event['primary_filter_id'] == filter['id']
|
112
|
+
session['primary_filter_name'] = filter['name']
|
113
|
+
session['primary_filter'] = filter_item['name']
|
114
|
+
end
|
115
|
+
end
|
116
|
+
end
|
117
|
+
end
|
118
|
+
|
119
|
+
session['filters'] = filters_for_session_hash.map { |key, value| { 'name' => key, 'items' => value } }
|
120
|
+
session['filter_tags'] = get_session_filter_tags(session['filters'])
|
121
|
+
end
|
122
|
+
|
123
|
+
def get_session_filter_tags(session_filters)
|
124
|
+
session_filters.inject([]) do |memo, filter|
|
125
|
+
filter['items'].each do |item|
|
126
|
+
memo << Helpers.parameterize('attendease-filter-' + filter['name'] + "-" + item['name'], '-')
|
127
|
+
end
|
128
|
+
memo
|
129
|
+
end.join(" ")
|
130
|
+
end
|
131
|
+
|
132
|
+
def get_session_instances(session)
|
133
|
+
session['instances'] ||= []
|
134
|
+
session['instances'].inject([]) do |memo, i|
|
135
|
+
instance = i.select do |k, v|
|
136
|
+
%w{ id date time end_time duration date_formatted time_formatted end_time_formatted duration_formatted room_id }.include?(k)
|
137
|
+
end
|
138
|
+
|
139
|
+
room = rooms.select { |r| r['id'] == i['room_id'] }.first
|
140
|
+
venue = venues.select { |v| v['id'] == room['venue_id'] }.first
|
141
|
+
instance['room'] = room.merge({ 'venue_name' => venue['name'] })
|
142
|
+
instance['venue_slug'] = venue['slug']
|
143
|
+
|
144
|
+
memo << instance
|
145
|
+
end
|
146
|
+
end
|
147
|
+
end
|
148
|
+
end
|
149
|
+
end
|
@@ -12,37 +12,7 @@ module Jekyll
|
|
12
12
|
def generate(site)
|
13
13
|
if site.config['attendease'] && site.config['attendease']['api_host'] && site.config['attendease']['generate_schedule_pages']
|
14
14
|
|
15
|
-
|
16
|
-
attendease_api_host = site.config['attendease']['api_host']
|
17
|
-
attendease_access_token = site.config['attendease']['access_token']
|
18
|
-
|
19
|
-
attendease_data_path = File.join(site.source, '_attendease', 'data')
|
20
|
-
|
21
|
-
@event = site.config['attendease']['event']
|
22
|
-
|
23
|
-
sessions = JSON.parse(File.read("#{attendease_data_path}/sessions.json")).sort{|s1, s2| s1['name'] <=> s2['name']}
|
24
|
-
@presenters = JSON.parse(File.read("#{attendease_data_path}/presenters.json")).sort{|p1, p2| p1['last_name'] <=> p2['last_name']}
|
25
|
-
@rooms = JSON.parse(File.read("#{attendease_data_path}/rooms.json")).sort{|r1, r2| r1['name'] <=> r2['name']}
|
26
|
-
@filters = JSON.parse(File.read("#{attendease_data_path}/filters.json")).sort{|f1, f2| f1['name'] <=> f2['name']}
|
27
|
-
@venues = JSON.parse(File.read("#{attendease_data_path}/venues.json")).sort{|v1, v2| v1['name'] <=> v2['name']}
|
28
|
-
|
29
|
-
@presenters.each do |presenter|
|
30
|
-
presenter['slug'] = Helpers.parameterize("#{presenter['first_name']} #{presenter['last_name']}") + '.html'
|
31
|
-
end
|
32
|
-
|
33
|
-
@venues.each do |venue|
|
34
|
-
venue['slug'] = Helpers.parameterize(venue['name']) + '.html'
|
35
|
-
end
|
36
|
-
|
37
|
-
sessions.each do |session|
|
38
|
-
if site.config['attendease']['session_slug_uses_code']
|
39
|
-
session['slug'] = session['code'] + '.html'
|
40
|
-
else
|
41
|
-
session['slug'] = Helpers.parameterize(session['name']) + '.html'
|
42
|
-
end
|
43
|
-
end
|
44
|
-
|
45
|
-
@sessions = sessions_with_all_data(@event, sessions, @presenters, @rooms, @venues, @filters)
|
15
|
+
schedule_data = ScheduleDataParser.new(site)
|
46
16
|
|
47
17
|
#
|
48
18
|
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
@@ -51,18 +21,18 @@ module Jekyll
|
|
51
21
|
|
52
22
|
unless dir.nil?
|
53
23
|
if (site.config['attendease'] && site.config['attendease']['show_day_index'])
|
54
|
-
site.pages << ScheduleIndexPage.new(site, site.source, File.join(dir),
|
24
|
+
site.pages << ScheduleIndexPage.new(site, site.source, File.join(dir), schedule_data.event['dates'])
|
55
25
|
else
|
56
|
-
site.pages << ScheduleDayPage.new(site, site.source, File.join(dir),
|
26
|
+
site.pages << ScheduleDayPage.new(site, site.source, File.join(dir), schedule_data.event['dates'].first, schedule_data.sessions, schedule_data.event['dates'])
|
57
27
|
end
|
58
28
|
|
59
|
-
site.pages << ScheduleSessionsPage.new(site, site.source, File.join(dir, 'sessions'),
|
29
|
+
site.pages << ScheduleSessionsPage.new(site, site.source, File.join(dir, 'sessions'), schedule_data.sessions, schedule_data.event['dates'])
|
60
30
|
|
61
|
-
|
62
|
-
site.pages << ScheduleDayPage.new(site, site.source, File.join(dir, day['date']), day,
|
31
|
+
schedule_data.event['dates'].each do |day|
|
32
|
+
site.pages << ScheduleDayPage.new(site, site.source, File.join(dir, day['date']), day, schedule_data.sessions, schedule_data.event['dates'])
|
63
33
|
end
|
64
34
|
|
65
|
-
|
35
|
+
schedule_data.sessions.each do |session|
|
66
36
|
site.pages << ScheduleSessionPage.new(site, site.source, File.join(dir, 'sessions'), session)
|
67
37
|
end
|
68
38
|
end
|
@@ -72,11 +42,11 @@ module Jekyll
|
|
72
42
|
dir = site.config['attendease']['presenters_path_name']
|
73
43
|
|
74
44
|
unless dir.nil?
|
75
|
-
|
76
|
-
site.pages << PresenterPage.new(site, site.source, dir, presenter,
|
45
|
+
schedule_data.presenters.each do |presenter|
|
46
|
+
site.pages << PresenterPage.new(site, site.source, dir, presenter, schedule_data.sessions)
|
77
47
|
end
|
78
48
|
|
79
|
-
site.pages << PresentersIndexPage.new(site, site.source, File.join(dir),
|
49
|
+
site.pages << PresentersIndexPage.new(site, site.source, File.join(dir), schedule_data.presenters)
|
80
50
|
end
|
81
51
|
|
82
52
|
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
@@ -84,77 +54,13 @@ module Jekyll
|
|
84
54
|
dir = site.config['attendease']['venues_path_name']
|
85
55
|
|
86
56
|
unless dir.nil?
|
87
|
-
|
57
|
+
schedule_data.venues.each do |venue|
|
88
58
|
site.pages << VenuePage.new(site, site.source, dir, venue)
|
89
59
|
end
|
90
60
|
|
91
|
-
site.pages << VenuesIndexPage.new(site, site.source, File.join(dir),
|
92
|
-
end
|
93
|
-
end
|
94
|
-
end
|
95
|
-
|
96
|
-
def sessions_with_all_data(event, sessions, presenters, rooms, venues, filters)
|
97
|
-
sessionsData = []
|
98
|
-
|
99
|
-
sessions.each do |s|
|
100
|
-
session = s.select { |k, v| %w{ id name description code speaker_ids slug }.include?(k) }
|
101
|
-
session['presenters'] = []
|
102
|
-
presenters.select{|presenter| s['speaker_ids'].include?(presenter['id'])}.each do |presenter|
|
103
|
-
session['presenters'] << presenter.select { |k, v| %w{ id first_name last_name company title profile_url slug }.include?(k) }
|
104
|
-
end
|
105
|
-
|
106
|
-
filters_for_session_hash = {}
|
107
|
-
filters.each do |filter|
|
108
|
-
filter['filter_items'].each do |filter_item|
|
109
|
-
if s['filters'].include?(filter_item['id'])
|
110
|
-
filters_for_session_hash[filter['name']] = [] unless filters_for_session_hash[filter['name']]
|
111
|
-
filters_for_session_hash[filter['name']] << {
|
112
|
-
'name' => filter_item['name']
|
113
|
-
}
|
114
|
-
if event['primary_filter_id'] && event['primary_filter_id'] == filter['id']
|
115
|
-
session['primary_filter_name'] = filter['name']
|
116
|
-
session['primary_filter'] = filter_item['name']
|
117
|
-
end
|
118
|
-
end
|
119
|
-
end
|
120
|
-
end
|
121
|
-
|
122
|
-
filters_for_session = filters_for_session_hash.map { |key, value| { 'name' => key, 'items' => value } }
|
123
|
-
|
124
|
-
session['filters'] = filters_for_session
|
125
|
-
|
126
|
-
filter_tags = []
|
127
|
-
filters_for_session.each do |filter|
|
128
|
-
item_names = []
|
129
|
-
if !filter['items'].nil?
|
130
|
-
filter['items'].each do |item|
|
131
|
-
filter_tags << Helpers.parameterize('attendease-filter-' + filter['name'] + "-" + item['name'], '-')
|
132
|
-
end
|
133
|
-
end
|
134
|
-
end
|
135
|
-
session['filter_tags'] = filter_tags.join(" ")
|
136
|
-
|
137
|
-
if s['instances']
|
138
|
-
instances = []
|
139
|
-
s['instances'].each do |i|
|
140
|
-
instance = i.select { |k, v| %w{ id date time end_time duration date_formatted time_formatted end_time_formatted duration_formatted room_id }.include?(k) }
|
141
|
-
|
142
|
-
room = rooms.select { |room| room['id'] == i['room_id'] }.first
|
143
|
-
venue = venues.select { |venue| venue['id'] == room['venue_id'] }.first
|
144
|
-
instance['room'] = room.merge({ 'venue_name' => venue['name'] })
|
145
|
-
instance['venue_slug'] = venue['slug']
|
146
|
-
|
147
|
-
instances << instance
|
148
|
-
end
|
149
|
-
session['instances'] = instances
|
150
|
-
else
|
151
|
-
session['instances'] = []
|
61
|
+
site.pages << VenuesIndexPage.new(site, site.source, File.join(dir), schedule_data.venues)
|
152
62
|
end
|
153
|
-
|
154
|
-
sessionsData << session
|
155
63
|
end
|
156
|
-
|
157
|
-
sessionsData
|
158
64
|
end
|
159
65
|
end
|
160
66
|
end
|
@@ -1,5 +1,25 @@
|
|
1
1
|
module Jekyll
|
2
2
|
module AttendeasePlugin
|
3
|
+
class ScheduleWidgetTag < Liquid::Tag
|
4
|
+
def render(context)
|
5
|
+
schedule_data = ScheduleDataParser.new(context.registers[:site])
|
6
|
+
base = File.join(context.registers[:site].config['source'])
|
7
|
+
|
8
|
+
instances = schedule_data.sessions.inject([]) do |memo, s|
|
9
|
+
s['instances'].each do |instance|
|
10
|
+
instance['session'] = s
|
11
|
+
memo << instance
|
12
|
+
end
|
13
|
+
memo
|
14
|
+
end
|
15
|
+
instances.sort!{|x,y| [x['time'], x['session']['name']] <=> [y['time'], y['session']['name']]}
|
16
|
+
|
17
|
+
source_template_path = File.join(base, '_attendease', 'templates', 'schedule', 'widget.html')
|
18
|
+
|
19
|
+
Liquid::Template.parse(File.read(source_template_path)).render('instances' => instances, 'filters' => schedule_data.filters)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
3
23
|
class AuthScriptTag < Liquid::Tag
|
4
24
|
def render(context)
|
5
25
|
api_host = context.registers[:site].config['attendease']['api_host']
|
@@ -1,13 +1,22 @@
|
|
1
|
+
# Helper class that handles loading & parsing schedule data.
|
2
|
+
require 'jekyll/attendease_plugin/schedule_data_parser'
|
3
|
+
|
4
|
+
# Generators:
|
1
5
|
require 'jekyll/attendease_plugin/event_data_generator'
|
2
6
|
require 'jekyll/attendease_plugin/event_layout_generator'
|
3
7
|
require 'jekyll/attendease_plugin/schedule_generator'
|
4
8
|
require 'jekyll/attendease_plugin/sponsor_generator'
|
5
9
|
require 'jekyll/attendease_plugin/pre_zero_point_six_link_redirect_generator'
|
10
|
+
|
11
|
+
# Redirect page
|
6
12
|
require 'jekyll/attendease_plugin/redirect_page'
|
13
|
+
|
14
|
+
# Tags, filters and helpers
|
7
15
|
require 'jekyll/attendease_plugin/tags'
|
8
16
|
require 'jekyll/attendease_plugin/filters'
|
9
17
|
require 'jekyll/attendease_plugin/helpers'
|
10
18
|
|
19
|
+
# Pages
|
11
20
|
require 'jekyll/attendease_plugin/event_layout_page'
|
12
21
|
require 'jekyll/attendease_plugin/presenters_index_page'
|
13
22
|
require 'jekyll/attendease_plugin/presenter_page'
|
data/lib/jekyll-attendease.rb
CHANGED
@@ -5,6 +5,7 @@ require 'i18n'
|
|
5
5
|
|
6
6
|
require 'jekyll/attendease_plugin'
|
7
7
|
|
8
|
+
Liquid::Template.register_tag('attendease_schedule_widget', Jekyll::AttendeasePlugin::ScheduleWidgetTag)
|
8
9
|
Liquid::Template.register_tag('attendease_auth_script', Jekyll::AttendeasePlugin::AuthScriptTag)
|
9
10
|
Liquid::Template.register_tag('attendease_scheduler_script', Jekyll::AttendeasePlugin::SchedulerScriptTag)
|
10
11
|
Liquid::Template.register_tag('attendease_locales_script', Jekyll::AttendeasePlugin::LocalesScriptTag)
|
@@ -5,15 +5,13 @@ RSpec.describe Jekyll::AttendeasePlugin::ScheduleGenerator do
|
|
5
5
|
before(:all) do
|
6
6
|
@schedule_generator = find_generator(described_class)
|
7
7
|
@date = @schedule_generator.event['dates'].first['date']
|
8
|
-
@index_file = 'index.html'
|
9
8
|
@session_slug = @schedule_generator.sessions.first['slug']
|
10
9
|
@presenter_slug = @schedule_generator.presenters.first['slug']
|
11
|
-
@presenter_social = @schedule_generator.presenters.first['social']
|
12
10
|
@venue_slug = Jekyll::AttendeasePlugin::Helpers.parameterize(@schedule_generator.venues.first['name'], '_') + '.html'
|
13
11
|
end
|
14
12
|
|
15
13
|
it 'creates a presenters index page' do
|
16
|
-
file = File.join(@site.config['destination'], @site.config['attendease']['presenters_path_name'],
|
14
|
+
file = File.join(@site.config['destination'], @site.config['attendease']['presenters_path_name'], 'index.html')
|
17
15
|
expect(File.exists?(file)).to eq(true)
|
18
16
|
expect(File.file?(file)).to eq(true)
|
19
17
|
end
|
@@ -25,7 +23,7 @@ RSpec.describe Jekyll::AttendeasePlugin::ScheduleGenerator do
|
|
25
23
|
end
|
26
24
|
|
27
25
|
it 'creates a venue index page' do
|
28
|
-
file = File.join(@site.config['destination'], @site.config['attendease']['venues_path_name'],
|
26
|
+
file = File.join(@site.config['destination'], @site.config['attendease']['venues_path_name'], 'index.html')
|
29
27
|
expect(File.exists?(file)).to eq(true)
|
30
28
|
expect(File.file?(file)).to eq(true)
|
31
29
|
end
|
@@ -37,20 +35,20 @@ RSpec.describe Jekyll::AttendeasePlugin::ScheduleGenerator do
|
|
37
35
|
end
|
38
36
|
|
39
37
|
it 'creates a schedule index page' do
|
40
|
-
file = File.join(@site.config['destination'], @site.config['attendease']['schedule_path_name'],
|
38
|
+
file = File.join(@site.config['destination'], @site.config['attendease']['schedule_path_name'], 'index.html')
|
41
39
|
expect(File.exists?(file)).to eq(true)
|
42
40
|
expect(File.file?(file)).to eq(true)
|
43
41
|
end
|
44
42
|
|
45
43
|
it 'creates a schedule day index page' do
|
46
|
-
file = File.join(@site.config['destination'], @site.config['attendease']['schedule_path_name'], @date,
|
44
|
+
file = File.join(@site.config['destination'], @site.config['attendease']['schedule_path_name'], @date, 'index.html')
|
47
45
|
expect(File.exists?(file)).to eq(true)
|
48
46
|
expect(File.file?(file)).to eq(true)
|
49
|
-
expect(File.read(File.join(@site.config['destination'], @site.config['attendease']['schedule_path_name'],
|
47
|
+
expect(File.read(File.join(@site.config['destination'], @site.config['attendease']['schedule_path_name'], 'index.html'))).to include 'attendease-session-and-instance'
|
50
48
|
end
|
51
49
|
|
52
50
|
it 'creates a schedule sessions index page' do
|
53
|
-
file = File.join(@site.config['destination'], @site.config['attendease']['schedule_path_name'], 'sessions',
|
51
|
+
file = File.join(@site.config['destination'], @site.config['attendease']['schedule_path_name'], 'sessions', 'index.html')
|
54
52
|
expect(File.exists?(file)).to eq(true)
|
55
53
|
expect(File.file?(file)).to eq(true)
|
56
54
|
end
|
@@ -63,7 +61,7 @@ RSpec.describe Jekyll::AttendeasePlugin::ScheduleGenerator do
|
|
63
61
|
|
64
62
|
context 'presenter linking' do
|
65
63
|
it 'links presenters correctly from the presenter index page' do
|
66
|
-
expect(File.read(File.join(@site.config['destination'], @site.config['attendease']['presenters_path_name'],
|
64
|
+
expect(File.read(File.join(@site.config['destination'], @site.config['attendease']['presenters_path_name'], 'index.html'))).to include @presenter_slug
|
67
65
|
end
|
68
66
|
|
69
67
|
it 'links presenters correctly from the session page' do
|
@@ -71,27 +69,9 @@ RSpec.describe Jekyll::AttendeasePlugin::ScheduleGenerator do
|
|
71
69
|
end
|
72
70
|
end
|
73
71
|
|
74
|
-
context 'presenter social links' do
|
75
|
-
it 'includes the included social links' do
|
76
|
-
expect(File.read(File.join(@site.config['destination'], @site.config['attendease']['presenters_path_name'], @index_file))).to include "twitter.com/#{@presenter_social['twitter']}"
|
77
|
-
expect(File.read(File.join(@site.config['destination'], @site.config['attendease']['presenters_path_name'], @index_file))).to include "facebook.com/#{@presenter_social['facebook']}"
|
78
|
-
|
79
|
-
expect(File.read(File.join(@site.config['destination'], @site.config['attendease']['presenters_path_name'], @presenter_slug))).to include "twitter.com/#{@presenter_social['twitter']}"
|
80
|
-
expect(File.read(File.join(@site.config['destination'], @site.config['attendease']['presenters_path_name'], @presenter_slug))).to include "facebook.com/#{@presenter_social['facebook']}"
|
81
|
-
end
|
82
|
-
|
83
|
-
it 'does not include social links that are not there' do
|
84
|
-
expect(File.read(File.join(@site.config['destination'], @site.config['attendease']['presenters_path_name'], @index_file))).to_not include "linkedin"
|
85
|
-
expect(File.read(File.join(@site.config['destination'], @site.config['attendease']['presenters_path_name'], @index_file))).to_not include "googleplus"
|
86
|
-
|
87
|
-
expect(File.read(File.join(@site.config['destination'], @site.config['attendease']['presenters_path_name'], @presenter_slug))).to_not include "linkedin"
|
88
|
-
expect(File.read(File.join(@site.config['destination'], @site.config['attendease']['presenters_path_name'], @presenter_slug))).to_not include "googleplus"
|
89
|
-
end
|
90
|
-
end
|
91
|
-
|
92
72
|
context 'venue linking' do
|
93
73
|
it 'links venues correctly from the venue index page' do
|
94
|
-
expect(File.read(File.join(@site.config['destination'], @site.config['attendease']['venues_path_name'],
|
74
|
+
expect(File.read(File.join(@site.config['destination'], @site.config['attendease']['venues_path_name'], 'index.html'))).to include @venue_slug
|
95
75
|
end
|
96
76
|
|
97
77
|
it 'links venues correctly from the presenter page' do
|
@@ -106,7 +86,7 @@ RSpec.describe Jekyll::AttendeasePlugin::ScheduleGenerator do
|
|
106
86
|
context 'in a site with attendease.show_day_index = true' do
|
107
87
|
it 'creates the day index page' do
|
108
88
|
site = build_site({ 'attendease' => { 'show_day_index' => true } })
|
109
|
-
expect(File.read(File.join(site.config['destination'], site.config['attendease']['schedule_path_name'],
|
89
|
+
expect(File.read(File.join(site.config['destination'], site.config['attendease']['schedule_path_name'], 'index.html'))).to_not include 'attendease-session-and-instance'
|
110
90
|
end
|
111
91
|
end
|
112
92
|
|
@@ -22,41 +22,6 @@
|
|
22
22
|
<div class="attendease-presenter-company">
|
23
23
|
{{ presenter.company }}
|
24
24
|
</div>
|
25
|
-
|
26
|
-
{% if presenter.social %}
|
27
|
-
<div class="attendease-presenter-social">
|
28
|
-
{% if presenter.social.twitter and presenter.social.twitter != '' %}
|
29
|
-
<a class="attendease-social-icon twitter" href="https://twitter.com/{{ presenter.social.twitter }}" target="_blank">
|
30
|
-
<i class="fa fa-twitter-square fa-3"></i>
|
31
|
-
<span class="attendease-social-network">Twitter</span>
|
32
|
-
<span class="attendease-social-handle">@{{ presenter.social.twitter }}</span>
|
33
|
-
<span class="attendease-social-url">https://twitter.com/{{ presenter.social.twitter }}</span>
|
34
|
-
</a>
|
35
|
-
{% endif %}
|
36
|
-
{% if presenter.social.facebook and presenter.social.facebook != '' %}
|
37
|
-
<a class="attendease-social-icon facebook" href="https://www.facebook.com/{{ presenter.social.facebook }}" target="_blank">
|
38
|
-
<i class="fa fa-facebook-square fa-3"></i>
|
39
|
-
<span class="attendease-social-network">Facebook</span>
|
40
|
-
<span class="attendease-social-handle">{{ presenter.social.facebook }}</span>
|
41
|
-
<span class="attendease-social-url">https://www.facebook.com/{{ presenter.social.facebook }}</span>
|
42
|
-
</a>
|
43
|
-
{% endif %}
|
44
|
-
{% if presenter.social.linkedin and presenter.social.linkedin != '' %}
|
45
|
-
<a class="attendease-social-icon linkedin" href="{{ presenter.social.linkedin }}" target="_blank">
|
46
|
-
<i class="fa fa-linkedin-square"></i>
|
47
|
-
<span class="attendease-social-network">LinkedIn</span>
|
48
|
-
<span class="attendease-social-url">{{ presenter.social.linkedin }}</span>
|
49
|
-
</a>
|
50
|
-
{% endif %}
|
51
|
-
{% if presenter.social.googleplus and presenter.social.googleplus != '' %}
|
52
|
-
<a class="attendease-social-icon googleplus" href="{{ presenter.social.googleplus }}" target="_blank">
|
53
|
-
<i class="fa fa-google-plus-square"></i>
|
54
|
-
<span class="attendease-social-network">Google+</span>
|
55
|
-
<span class="attendease-social-url">{{ presenter.social.googleplus }}</span>
|
56
|
-
</a>
|
57
|
-
{% endif %}
|
58
|
-
</div>
|
59
|
-
{% endif %}
|
60
25
|
</div>
|
61
26
|
{% endfor %}
|
62
27
|
</div>
|
@@ -16,41 +16,6 @@
|
|
16
16
|
{{ page.presenter.company }}
|
17
17
|
</div>
|
18
18
|
|
19
|
-
{% if page.presenter.social %}
|
20
|
-
<div class="attendease-presenter-social">
|
21
|
-
{% if page.presenter.social.twitter and page.presenter.social.twitter != '' %}
|
22
|
-
<a class="attendease-social-icon twitter" href="https://twitter.com/{{ page.presenter.social.twitter }}" target="_blank">
|
23
|
-
<i class="fa fa-twitter-square fa-3"></i>
|
24
|
-
<span class="attendease-social-network">Twitter</span>
|
25
|
-
<span class="attendease-social-handle">@{{ page.presenter.social.twitter }}</span>
|
26
|
-
<span class="attendease-social-url">https://twitter.com/{{ page.presenter.social.twitter }}</span>
|
27
|
-
</a>
|
28
|
-
{% endif %}
|
29
|
-
{% if page.presenter.social.facebook and page.presenter.social.facebook != '' %}
|
30
|
-
<a class="attendease-social-icon facebook" href="https://www.facebook.com/{{ page.presenter.social.facebook }}" target="_blank">
|
31
|
-
<i class="fa fa-facebook-square fa-3"></i>
|
32
|
-
<span class="attendease-social-network">Facebook</span>
|
33
|
-
<span class="attendease-social-handle">{{ page.presenter.social.facebook }}</span>
|
34
|
-
<span class="attendease-social-url">https://www.facebook.com/{{ page.presenter.social.facebook }}</span>
|
35
|
-
</a>
|
36
|
-
{% endif %}
|
37
|
-
{% if page.presenter.social.linkedin and page.presenter.social.linkedin != '' %}
|
38
|
-
<a class="attendease-social-icon linkedin" href="{{ page.presenter.social.linkedin }}" target="_blank">
|
39
|
-
<i class="fa fa-linkedin-square"></i>
|
40
|
-
<span class="attendease-social-network">LinkedIn</span>
|
41
|
-
<span class="attendease-social-url">{{ page.presenter.social.linkedin }}</span>
|
42
|
-
</a>
|
43
|
-
{% endif %}
|
44
|
-
{% if page.presenter.social.googleplus and page.presenter.social.googleplus != '' %}
|
45
|
-
<a class="attendease-social-icon googleplus" href="{{ page.presenter.social.googleplus }}" target="_blank">
|
46
|
-
<i class="fa fa-google-plus-square"></i>
|
47
|
-
<span class="attendease-social-network">Google+</span>
|
48
|
-
<span class="attendease-social-url">{{ page.presenter.social.googleplus }}</span>
|
49
|
-
</a>
|
50
|
-
{% endif %}
|
51
|
-
</div>
|
52
|
-
{% endif %}
|
53
|
-
|
54
19
|
<div class="attendease-presenter-bio">
|
55
20
|
{{ page.presenter.bio | markdownify }}
|
56
21
|
</div>
|
@@ -0,0 +1,22 @@
|
|
1
|
+
<div class="attendease-schedule-widget">
|
2
|
+
{% for instance in instances %}
|
3
|
+
<div class="attendease-session-and-instance {{ instance.session.filter_tags }}" data-instance-id="{{ instance.id }}" data-session-id="{{ instance.session.id }}">
|
4
|
+
<div class="attendease-instance-details">
|
5
|
+
<div class="attendease-instance-detail attendease-time-range" data-duration="{{ instance.duration }}" data-start-time="{{ instance.time }}">
|
6
|
+
{{ instance.time_formatted }} - {{ instance.end_time_formatted}}
|
7
|
+
|
8
|
+
<div class="attendease-duration" data-duration="{{ instance.duration }}">
|
9
|
+
{{ instance.duration_formatted }}
|
10
|
+
</div>
|
11
|
+
</div>
|
12
|
+
</div>
|
13
|
+
<div class="attendease-name">
|
14
|
+
{% for tag in instance.session.filter_tags %}
|
15
|
+
<span class="{{ tag }}">{{ tag }}</span>
|
16
|
+
{% endfor %}
|
17
|
+
<h2>{{ instance.session.name }}</h2>
|
18
|
+
</div>
|
19
|
+
</div>
|
20
|
+
{% endfor %}
|
21
|
+
</div>
|
22
|
+
|
metadata
CHANGED
@@ -1,8 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jekyll-attendease
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.6.
|
5
|
-
prerelease:
|
4
|
+
version: 0.6.5.pre
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Michael Wood
|
@@ -16,119 +15,104 @@ dependencies:
|
|
16
15
|
- !ruby/object:Gem::Dependency
|
17
16
|
name: httparty
|
18
17
|
requirement: !ruby/object:Gem::Requirement
|
19
|
-
none: false
|
20
18
|
requirements:
|
21
|
-
- - ~>
|
19
|
+
- - "~>"
|
22
20
|
- !ruby/object:Gem::Version
|
23
21
|
version: 0.13.1
|
24
22
|
type: :runtime
|
25
23
|
prerelease: false
|
26
24
|
version_requirements: !ruby/object:Gem::Requirement
|
27
|
-
none: false
|
28
25
|
requirements:
|
29
|
-
- - ~>
|
26
|
+
- - "~>"
|
30
27
|
- !ruby/object:Gem::Version
|
31
28
|
version: 0.13.1
|
32
29
|
- !ruby/object:Gem::Dependency
|
33
30
|
name: json
|
34
31
|
requirement: !ruby/object:Gem::Requirement
|
35
|
-
none: false
|
36
32
|
requirements:
|
37
|
-
- - ~>
|
33
|
+
- - "~>"
|
38
34
|
- !ruby/object:Gem::Version
|
39
35
|
version: 1.8.1
|
40
36
|
type: :runtime
|
41
37
|
prerelease: false
|
42
38
|
version_requirements: !ruby/object:Gem::Requirement
|
43
|
-
none: false
|
44
39
|
requirements:
|
45
|
-
- - ~>
|
40
|
+
- - "~>"
|
46
41
|
- !ruby/object:Gem::Version
|
47
42
|
version: 1.8.1
|
48
43
|
- !ruby/object:Gem::Dependency
|
49
44
|
name: i18n
|
50
45
|
requirement: !ruby/object:Gem::Requirement
|
51
|
-
none: false
|
52
46
|
requirements:
|
53
|
-
- - ~>
|
47
|
+
- - "~>"
|
54
48
|
- !ruby/object:Gem::Version
|
55
49
|
version: 0.6.9
|
56
50
|
type: :runtime
|
57
51
|
prerelease: false
|
58
52
|
version_requirements: !ruby/object:Gem::Requirement
|
59
|
-
none: false
|
60
53
|
requirements:
|
61
|
-
- - ~>
|
54
|
+
- - "~>"
|
62
55
|
- !ruby/object:Gem::Version
|
63
56
|
version: 0.6.9
|
64
57
|
- !ruby/object:Gem::Dependency
|
65
58
|
name: redcarpet
|
66
59
|
requirement: !ruby/object:Gem::Requirement
|
67
|
-
none: false
|
68
60
|
requirements:
|
69
|
-
- - ~>
|
61
|
+
- - "~>"
|
70
62
|
- !ruby/object:Gem::Version
|
71
63
|
version: 2.3.0
|
72
64
|
type: :runtime
|
73
65
|
prerelease: false
|
74
66
|
version_requirements: !ruby/object:Gem::Requirement
|
75
|
-
none: false
|
76
67
|
requirements:
|
77
|
-
- - ~>
|
68
|
+
- - "~>"
|
78
69
|
- !ruby/object:Gem::Version
|
79
70
|
version: 2.3.0
|
80
71
|
- !ruby/object:Gem::Dependency
|
81
72
|
name: bundler
|
82
73
|
requirement: !ruby/object:Gem::Requirement
|
83
|
-
none: false
|
84
74
|
requirements:
|
85
|
-
- - ~>
|
75
|
+
- - "~>"
|
86
76
|
- !ruby/object:Gem::Version
|
87
77
|
version: '1.3'
|
88
78
|
type: :development
|
89
79
|
prerelease: false
|
90
80
|
version_requirements: !ruby/object:Gem::Requirement
|
91
|
-
none: false
|
92
81
|
requirements:
|
93
|
-
- - ~>
|
82
|
+
- - "~>"
|
94
83
|
- !ruby/object:Gem::Version
|
95
84
|
version: '1.3'
|
96
85
|
- !ruby/object:Gem::Dependency
|
97
86
|
name: rake
|
98
87
|
requirement: !ruby/object:Gem::Requirement
|
99
|
-
none: false
|
100
88
|
requirements:
|
101
|
-
- -
|
89
|
+
- - ">="
|
102
90
|
- !ruby/object:Gem::Version
|
103
91
|
version: '0'
|
104
92
|
type: :development
|
105
93
|
prerelease: false
|
106
94
|
version_requirements: !ruby/object:Gem::Requirement
|
107
|
-
none: false
|
108
95
|
requirements:
|
109
|
-
- -
|
96
|
+
- - ">="
|
110
97
|
- !ruby/object:Gem::Version
|
111
98
|
version: '0'
|
112
99
|
- !ruby/object:Gem::Dependency
|
113
100
|
name: rspec
|
114
101
|
requirement: !ruby/object:Gem::Requirement
|
115
|
-
none: false
|
116
102
|
requirements:
|
117
|
-
- -
|
103
|
+
- - ">="
|
118
104
|
- !ruby/object:Gem::Version
|
119
105
|
version: '0'
|
120
106
|
type: :development
|
121
107
|
prerelease: false
|
122
108
|
version_requirements: !ruby/object:Gem::Requirement
|
123
|
-
none: false
|
124
109
|
requirements:
|
125
|
-
- -
|
110
|
+
- - ">="
|
126
111
|
- !ruby/object:Gem::Version
|
127
112
|
version: '0'
|
128
113
|
- !ruby/object:Gem::Dependency
|
129
114
|
name: jekyll
|
130
115
|
requirement: !ruby/object:Gem::Requirement
|
131
|
-
none: false
|
132
116
|
requirements:
|
133
117
|
- - '='
|
134
118
|
- !ruby/object:Gem::Version
|
@@ -136,7 +120,6 @@ dependencies:
|
|
136
120
|
type: :development
|
137
121
|
prerelease: false
|
138
122
|
version_requirements: !ruby/object:Gem::Requirement
|
139
|
-
none: false
|
140
123
|
requirements:
|
141
124
|
- - '='
|
142
125
|
- !ruby/object:Gem::Version
|
@@ -147,6 +130,8 @@ executables: []
|
|
147
130
|
extensions: []
|
148
131
|
extra_rdoc_files: []
|
149
132
|
files:
|
133
|
+
- lib/jekyll-attendease.rb
|
134
|
+
- lib/jekyll/attendease_plugin.rb
|
150
135
|
- lib/jekyll/attendease_plugin/event_data_generator.rb
|
151
136
|
- lib/jekyll/attendease_plugin/event_layout_generator.rb
|
152
137
|
- lib/jekyll/attendease_plugin/event_layout_page.rb
|
@@ -156,6 +141,7 @@ files:
|
|
156
141
|
- lib/jekyll/attendease_plugin/presenter_page.rb
|
157
142
|
- lib/jekyll/attendease_plugin/presenters_index_page.rb
|
158
143
|
- lib/jekyll/attendease_plugin/redirect_page.rb
|
144
|
+
- lib/jekyll/attendease_plugin/schedule_data_parser.rb
|
159
145
|
- lib/jekyll/attendease_plugin/schedule_day_page.rb
|
160
146
|
- lib/jekyll/attendease_plugin/schedule_generator.rb
|
161
147
|
- lib/jekyll/attendease_plugin/schedule_index_page.rb
|
@@ -167,8 +153,16 @@ files:
|
|
167
153
|
- lib/jekyll/attendease_plugin/venue_page.rb
|
168
154
|
- lib/jekyll/attendease_plugin/venues_index_page.rb
|
169
155
|
- lib/jekyll/attendease_plugin/version.rb
|
170
|
-
- lib/jekyll/attendease_plugin.rb
|
171
|
-
- lib/jekyll
|
156
|
+
- spec/lib/jekyll/attendease_plugin/event_data_generator_spec.rb
|
157
|
+
- spec/lib/jekyll/attendease_plugin/event_layout_generator_spec.rb
|
158
|
+
- spec/lib/jekyll/attendease_plugin/filters_spec.rb
|
159
|
+
- spec/lib/jekyll/attendease_plugin/helpers_spec.rb
|
160
|
+
- spec/lib/jekyll/attendease_plugin/pre_zero_point_six_link_redirect_generator_spec.rb
|
161
|
+
- spec/lib/jekyll/attendease_plugin/schedule_generator_spec.rb
|
162
|
+
- spec/lib/jekyll/attendease_plugin/sponsor_generator_spec.rb
|
163
|
+
- spec/lib/jekyll/attendease_plugin/tags_spec.rb
|
164
|
+
- spec/spec_helper.rb
|
165
|
+
- spec/support/fixtures_helpers.rb
|
172
166
|
- templates/_includes/attendease/presenters/index.html
|
173
167
|
- templates/_includes/attendease/presenters/presenter.html
|
174
168
|
- templates/_includes/attendease/redirect.html
|
@@ -176,44 +170,34 @@ files:
|
|
176
170
|
- templates/_includes/attendease/schedule/index.html
|
177
171
|
- templates/_includes/attendease/schedule/session.html
|
178
172
|
- templates/_includes/attendease/schedule/sessions.html
|
173
|
+
- templates/_includes/attendease/schedule/widget.html
|
179
174
|
- templates/_includes/attendease/sponsors/index.html
|
180
175
|
- templates/_includes/attendease/venues/index.html
|
181
176
|
- templates/_includes/attendease/venues/venue.html
|
182
177
|
- templates/layout.html
|
183
|
-
- spec/lib/jekyll/attendease_plugin/event_data_generator_spec.rb
|
184
|
-
- spec/lib/jekyll/attendease_plugin/event_layout_generator_spec.rb
|
185
|
-
- spec/lib/jekyll/attendease_plugin/filters_spec.rb
|
186
|
-
- spec/lib/jekyll/attendease_plugin/helpers_spec.rb
|
187
|
-
- spec/lib/jekyll/attendease_plugin/pre_zero_point_six_link_redirect_generator_spec.rb
|
188
|
-
- spec/lib/jekyll/attendease_plugin/schedule_generator_spec.rb
|
189
|
-
- spec/lib/jekyll/attendease_plugin/sponsor_generator_spec.rb
|
190
|
-
- spec/lib/jekyll/attendease_plugin/tags_spec.rb
|
191
|
-
- spec/spec_helper.rb
|
192
|
-
- spec/support/fixtures_helpers.rb
|
193
178
|
homepage: https://attendease.com/
|
194
179
|
licenses:
|
195
180
|
- MIT
|
181
|
+
metadata: {}
|
196
182
|
post_install_message:
|
197
183
|
rdoc_options: []
|
198
184
|
require_paths:
|
199
185
|
- lib
|
200
186
|
required_ruby_version: !ruby/object:Gem::Requirement
|
201
|
-
none: false
|
202
187
|
requirements:
|
203
|
-
- -
|
188
|
+
- - ">="
|
204
189
|
- !ruby/object:Gem::Version
|
205
190
|
version: '0'
|
206
191
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
207
|
-
none: false
|
208
192
|
requirements:
|
209
|
-
- -
|
193
|
+
- - ">"
|
210
194
|
- !ruby/object:Gem::Version
|
211
|
-
version:
|
195
|
+
version: 1.3.1
|
212
196
|
requirements: []
|
213
197
|
rubyforge_project:
|
214
|
-
rubygems_version:
|
198
|
+
rubygems_version: 2.2.0
|
215
199
|
signing_key:
|
216
|
-
specification_version:
|
200
|
+
specification_version: 4
|
217
201
|
summary: Attendease event helper for Jekyll
|
218
202
|
test_files:
|
219
203
|
- spec/lib/jekyll/attendease_plugin/event_data_generator_spec.rb
|
@@ -226,3 +210,4 @@ test_files:
|
|
226
210
|
- spec/lib/jekyll/attendease_plugin/tags_spec.rb
|
227
211
|
- spec/spec_helper.rb
|
228
212
|
- spec/support/fixtures_helpers.rb
|
213
|
+
has_rdoc:
|