2016-09-19 01:13:23 +00:00
|
|
|
module Jekyll
|
|
|
|
class GalleryIndex < Page
|
2016-09-20 01:18:51 +00:00
|
|
|
def initialize(site, base, dir, galleries)
|
2016-09-19 01:13:23 +00:00
|
|
|
@site = site
|
|
|
|
@base = base
|
|
|
|
@dir = dir
|
|
|
|
@name = 'index.html'
|
|
|
|
|
|
|
|
self.process(@name)
|
|
|
|
self.read_yaml(File.join(base, '_layouts'), 'gallery-index.html')
|
2016-09-20 01:18:51 +00:00
|
|
|
self.data['galleries'] = galleries
|
|
|
|
end
|
|
|
|
end
|
|
|
|
class GalleryPage < Page
|
|
|
|
def initialize(site, base, dir, gallery)
|
|
|
|
@site = site
|
|
|
|
@base = base
|
|
|
|
@dir = dir
|
|
|
|
@name = 'index.html'
|
|
|
|
|
|
|
|
self.process(@name)
|
|
|
|
self.read_yaml(File.join(base, "_layouts"), 'gallery-page.html')
|
|
|
|
self.data['gallery'] = gallery
|
|
|
|
end
|
|
|
|
end
|
|
|
|
class GalleryPhoto < Page
|
2016-09-20 02:20:03 +00:00
|
|
|
def initialize(site, base, dir, photo)
|
2016-09-20 01:18:51 +00:00
|
|
|
@site = site
|
|
|
|
@base = base
|
|
|
|
@dir = dir
|
2016-09-20 02:20:03 +00:00
|
|
|
@name = 'index.html'
|
2016-09-20 01:18:51 +00:00
|
|
|
|
|
|
|
self.process(@name)
|
|
|
|
self.read_yaml(File.join(base, "_layouts"), 'gallery-photo.html')
|
|
|
|
self.data['photo'] = photo
|
2016-09-19 01:13:23 +00:00
|
|
|
end
|
|
|
|
end
|
|
|
|
class GenerateGalleryIndex < Generator
|
|
|
|
safe true
|
|
|
|
|
|
|
|
def generate(site)
|
2016-09-20 01:18:51 +00:00
|
|
|
gallery_index = Array.new()
|
2016-09-19 01:13:23 +00:00
|
|
|
@galleries = site.pages.select { |page|
|
2016-09-27 01:02:09 +00:00
|
|
|
page.path =~ /^albums\/(.*)\.yaml$/ }
|
2016-09-20 23:17:05 +00:00
|
|
|
@galleries_sorted = @galleries.sort_by { |g| g['gallery-date'] }
|
|
|
|
@galleries_sorted.reverse.each { |gallery|
|
2016-09-20 01:18:51 +00:00
|
|
|
index_record = Hash.new()
|
|
|
|
index_record['title'] = gallery['gallery-title']
|
|
|
|
index_record['slug'] = gallery['gallery-slug']
|
|
|
|
index_record['key'] = gallery['gallery-key']
|
2016-09-20 23:17:05 +00:00
|
|
|
index_record['date'] = gallery['gallery-date'].strftime("%Y-%m-%d")
|
2016-09-20 01:18:51 +00:00
|
|
|
gallery_index.push(index_record)
|
2016-09-20 02:20:03 +00:00
|
|
|
gallery_page = index_record.clone
|
2016-09-20 23:17:05 +00:00
|
|
|
gallery_page['images'] = gallery['images'].sort_by{|g| g['date']}
|
2016-09-20 02:20:03 +00:00
|
|
|
site.pages << GalleryPage.new(site, site.source,
|
2016-09-27 01:02:09 +00:00
|
|
|
"#{gallery['gallery-slug']}",
|
2016-09-20 01:18:51 +00:00
|
|
|
gallery_page)
|
|
|
|
|
2016-09-20 02:20:03 +00:00
|
|
|
gallery['images'].each_with_index { |image, i|
|
|
|
|
gallery_photo = index_record.clone
|
2016-09-20 01:18:51 +00:00
|
|
|
gallery_photo['image'] = image
|
2016-09-20 02:20:03 +00:00
|
|
|
site.pages << GalleryPhoto.new(site, site.source,
|
2016-09-27 01:02:09 +00:00
|
|
|
"#{gallery['gallery-slug']}/#{image['basename']}",
|
2016-09-20 02:20:03 +00:00
|
|
|
gallery_photo)
|
2016-09-20 01:18:51 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
site.pages << GalleryIndex.new(site, site.source,
|
2016-09-27 01:02:09 +00:00
|
|
|
'', gallery_index)
|
2016-09-19 01:13:23 +00:00
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|