jekyll-attendease 0.6.4 → 0.6.5.pre
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/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:
|