Class: Jekyll::AttendeasePlugin::ScheduleGenerator

Inherits:
Generator
  • Object
show all
Defined in:
lib/jekyll/attendease_plugin/schedule_generator.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#schedule_dataObject (readonly)

Returns the value of attribute schedule_data.



6
7
8
# File 'lib/jekyll/attendease_plugin/schedule_generator.rb', line 6

def schedule_data
  @schedule_data
end

Instance Method Details

#generate(site) ⇒ Object



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
# File 'lib/jekyll/attendease_plugin/schedule_generator.rb', line 8

def generate(site)
  return if !site.config.event? || (site.config.event? && site.config.cms_theme?)

  if site.config['attendease']['api_host'] && site.config['attendease']['generate_schedule_pages']

    @schedule_data = ScheduleDataParser.new(site)

    #
    # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    # /schedule pages.
    dir = site.config['attendease']['schedule_path_name']

    if dir
      if (site.config['attendease'] && site.config['attendease']['show_schedule_index'])
        site.pages << ScheduleIndexPage.new(site, site.source, File.join(dir), @schedule_data.event['dates'])
      else
        site.pages << ScheduleDayPage.new(site, site.source, File.join(dir), @schedule_data.event['dates'].first, @schedule_data.sessions, @schedule_data.event['dates'])
      end

      site.pages << ScheduleSessionsPage.new(site, site.source, File.join(dir, 'sessions'), @schedule_data.sessions, @schedule_data.event['dates'])

      @schedule_data.event['dates'].each do |day|
        site.pages << ScheduleDayPage.new(site, site.source, File.join(dir, day['date']), day, @schedule_data.sessions, @schedule_data.event['dates'])
      end

      @schedule_data.sessions.each do |session|
        site.pages << ScheduleSessionPage.new(site, site.source, File.join(dir, 'sessions'), session)
      end
    end

    # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    # /presenters pages.
    dir = site.config['attendease']['presenters_path_name']

    if dir
      @schedule_data.presenters.each do |presenter|
        site.pages << PresenterPage.new(site, site.source, dir, presenter, @schedule_data.sessions)
      end

      site.pages << PresentersIndexPage.new(site, site.source, File.join(dir), @schedule_data.presenters)
    end

    # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    # /venue pages.


    # Create a single venue page at /venue
    if @schedule_data.venues.length == 1
      dir = site.config['attendease']['venue_path_name']

      if dir
        site.pages << VenuePage.new(site, site.source, dir, @schedule_data.venues.first, true)
      end
    end

    # Create a list of venues and venue pages to keep backwards compatibility.
    dir = site.config['attendease']['venues_path_name']

    if dir
      @schedule_data.venues.each do |venue|
        site.pages << VenuePage.new(site, site.source, dir, venue)
      end

      site.pages << VenuesIndexPage.new(site, site.source, File.join(dir), @schedule_data.venues)
    end
  end
end