wiki.clockworkpi.com/_plugins/hook-wiki-page-enhancer.rb
2019-05-18 12:58:23 +02:00

51 lines
1.8 KiB
Ruby

Jekyll::Hooks.register :site, :post_read do |site|
user_pages = site.collections
.select { |key, collection| key.start_with?('special') }
.map { |key, collection| collection.docs }
.flatten
.select { |page| page.data['layout'] == 'user' }
wiki_pages = site.collections
.select { |key, collection| key.start_with?('wiki') }
.map { |key, collection| collection.docs }
.flatten
site.data['wiki_pages'] = wiki_pages
wiki_tags = wiki_pages
.map { |page| page.data['tags'] }
.flatten
.uniq
site.data['wiki_tags'] = wiki_tags
prefix = site.data['i18n'][site.config['lang']]['prefix']['user']
authors = site.data['users'].map do |user|
contributions = wiki_pages.select { |page| page.data['author'] == user[0] }
author = {'id' => user[0],
'name' => user[1]['name'],
'logo' => user[1]['logo'],
'url' => "/#{prefix}#{user[0]}",
'contributions' => contributions,
'contributions_count' => contributions.length,
'contributions_url' => "/#{prefix}#{user[0]}:Contributions"
}
user_pages.select { |page| page.url == author['url'] }
.each { |page| page.data['author_full'] = author }
author
end
site.data['authors'] = authors
wiki_pages.each do |page|
page.data['author_full'] = authors.select { |author| author['id'] == page.data['author'] }.first
end
end
Jekyll::Hooks.register :documents, :post_render do |doc|
if doc.content then
doc.data['size']=doc.content.size
doc.data['bytes']=doc.content.bytesize
else
doc.data['size']=0
doc.data['bytes']=0
end
end