From e72014b40fe89928d310aa7bcc09ecc07e0371cd Mon Sep 17 00:00:00 2001 From: ajuvercr Date: Mon, 12 Oct 2020 19:40:15 +0200 Subject: [PATCH 1/4] Add tags filter to blog posts --- Rules | 2 ++ content/blog/19-20/corona.md | 2 ++ content/blog/19-20/vleor.md | 2 ++ content/blog/20-21/bestuur20_21.md | 3 ++- content/blog/20-21/wij-coden-voort.md | 3 +++ layouts/blogs.erb | 25 +++++++++++++++++---- lib/helpers/archives.rb | 32 +++++++++++++++++++++++++-- lib/helpers/preprocess.rb | 19 ++++++++++++++-- 8 files changed, 79 insertions(+), 9 deletions(-) diff --git a/Rules b/Rules index e6fb788..86f2da2 100644 --- a/Rules +++ b/Rules @@ -24,6 +24,8 @@ preprocess do update_blog_attributes create_yearly_items('Blog') create_yearly_items('Events') + create_tagly_items('Blog') + create_tagly_items('Events') convert_event_time_to_timestamps all_events.each do |event| diff --git a/content/blog/19-20/corona.md b/content/blog/19-20/corona.md index d5e9395..9fbe8ab 100644 --- a/content/blog/19-20/corona.md +++ b/content/blog/19-20/corona.md @@ -3,6 +3,8 @@ title: "Zeus en Corona" created_at: 11-03-2020 description: Corona en de invloed ervan op Zeus WPI author: Robbe Van Herck +tags: + - Corona --- Beste Zeussers en Zeusinnen, diff --git a/content/blog/19-20/vleor.md b/content/blog/19-20/vleor.md index b10a6d7..7bcdef1 100644 --- a/content/blog/19-20/vleor.md +++ b/content/blog/19-20/vleor.md @@ -4,6 +4,8 @@ title: "Het vervolg op het avontuur van de Vleor" created_at: 07-07-2020 description: Eindelijk, de Zeuskelder heeft weer een nieuwe vloer! toc: true +tags: + - vloer --- **vleor** (_de; m;_ meervoud: _vleoren_) diff --git a/content/blog/20-21/bestuur20_21.md b/content/blog/20-21/bestuur20_21.md index b962fe4..bbbcd8f 100644 --- a/content/blog/20-21/bestuur20_21.md +++ b/content/blog/20-21/bestuur20_21.md @@ -3,6 +3,8 @@ title: "Zeusbestuur 2020-2021" created_at: 6-7-2020 description: "Het gloriZeuse nieuw bestuur" author: "Robbe Van Herck" +tags: + - Bestuur --- > Hallo mijn naam is Jasper en ik zou nog steeds sysadmin willen blijven @@ -25,4 +27,3 @@ Voor iedereen die niet op de verkiezingen was of de uitslag vergeten is, hier ee | Evenementen | Ruben De Facq | Veel succes en veel plezier van jullie oud bestuur. Het gaat gegarandeerd onvergetelijk worden! 🧡 - diff --git a/content/blog/20-21/wij-coden-voort.md b/content/blog/20-21/wij-coden-voort.md index 645c0bc..daef3a9 100644 --- a/content/blog/20-21/wij-coden-voort.md +++ b/content/blog/20-21/wij-coden-voort.md @@ -3,6 +3,9 @@ title: "Wij coden voort" created_at: 21-7-2020 description: "We mogen de kelder opnieuw openen" author: "Jasper Devreker" +tags: + - Corona + - General update --- We hebben via het WVK[^wvk] doorgekregen dat we onze geliefde kelder terug mogen openen. diff --git a/layouts/blogs.erb b/layouts/blogs.erb index 41f6de0..78bcea3 100644 --- a/layouts/blogs.erb +++ b/layouts/blogs.erb @@ -19,24 +19,41 @@ <% end %> <% end %> + +
- <% posts_in_year(item[:academic_year]).each_with_index.select {|e, i| i.even?}.map(&:first).each do |post| %> + <% posts_in_year_or_with_tag(item).each_with_index.select {|e, i| i.even?}.map(&:first).each do |post| %> <%= render '/partials/_blog_preview.*', post: post %> <% end %>
- <% posts_in_year(item[:academic_year]).each_with_index.reject {|e, i| i.even?}.map(&:first).each do |post| %> + <% posts_in_year_or_with_tag(item).each_with_index.reject {|e, i| i.even?}.map(&:first).each do |post| %> <%= render '/partials/_blog_preview.*', post: post %> <% end %>
-
- <% if posts_in_year(@item[:academic_year]).empty? %> + <% if posts_in_year_or_with_tag(item).empty? %>

Sorry.

No blog posts yet this year.

diff --git a/lib/helpers/archives.rb b/lib/helpers/archives.rb index 68ec04f..7915c51 100644 --- a/lib/helpers/archives.rb +++ b/lib/helpers/archives.rb @@ -3,8 +3,8 @@ module ArchiveHelper # Set.to_a to prevent duplicates Set.new(items .find_all('/blog/*/*') - .map { |i| i.identifier.to_s[/\d\d-\d\d/] }) - .to_a + .map { |i| i.identifier.to_s.split('/')[-2] }) + .to_a .sort .push(@config[:academic_year]) .uniq @@ -14,6 +14,20 @@ module ArchiveHelper academic_years.reverse.map { |y| [y, items["/blog/#{y}.html"]] } end + def tags + # Set.to_a to prevent duplicates + Set.new(items + .find_all('/blog/*/*') + .flat_map { |i| i[:tags] || [] }) + .to_a + .sort + .uniq + end + + def tag_blog_items + tags.map { |y| [y, items["/blog/#{y}.html"]]} + end + def pretty_year(year) year = year.scan(/\d\d/) "'#{year[0]} - '#{year[1]}" @@ -22,4 +36,18 @@ module ArchiveHelper def posts_in_year(y) items.find_all("/blog/#{y}/*").sort_by { |x| x[:created_at] }.reverse end + + def posts_with_tag(tag) + items + .find_all('/blog/*/*') + .filter{|i| (i[:tags] || []).include? tag } + end + + def posts_in_year_or_with_tag(item) + if item[:is_yearly] + posts_in_year(item[:academic_year]) + else + posts_with_tag(item[:tag]) + end + end end diff --git a/lib/helpers/preprocess.rb b/lib/helpers/preprocess.rb index 07ff4a9..a6eb65e 100644 --- a/lib/helpers/preprocess.rb +++ b/lib/helpers/preprocess.rb @@ -56,7 +56,7 @@ module PreprocessHelper i.update_attributes( # Tag all posts with article (for Blogging helper) kind: 'article', - academic_year: i.identifier.to_s[/\d\d-\d\d/], + academic_year: i.identifier.to_s[/\d-\d/], created_at: Date.parse(i[:created_at]) ) end @@ -72,7 +72,7 @@ module PreprocessHelper years.each do |year| @items.create( '', - { academic_year: year, title: type }, + { academic_year: year, title: type, is_yearly: true }, "/#{type.downcase}/#{year}.html" ) end @@ -84,6 +84,21 @@ module PreprocessHelper ) end + def create_tagly_items(type) + type = type.to_s + tags = @items.find_all("/#{type.downcase}/*/*") + .flat_map { |i| i[:tags] || [] } + .uniq + + tags.each do |tag| + @items.create( + '', + { tag: tag, title: type, is_yearly: false }, + "/#{type.downcase}/#{tag}.html" + ) + end + end + def convert_event_time_to_timestamps @items.find_all('/events/*/*.md').each do |event| # HACK: Strings in a format like "2017-10-05T20:45:00+0200" automatically get converted to Time From 7dc3816ab0c1e02ea984e1656887eafec8cbc4c7 Mon Sep 17 00:00:00 2001 From: ajuvercr Date: Mon, 12 Oct 2020 20:23:23 +0200 Subject: [PATCH 2/4] fix deploy check --- content/blog/20-21/wij-coden-voort.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/blog/20-21/wij-coden-voort.md b/content/blog/20-21/wij-coden-voort.md index daef3a9..634eb4f 100644 --- a/content/blog/20-21/wij-coden-voort.md +++ b/content/blog/20-21/wij-coden-voort.md @@ -5,7 +5,7 @@ description: "We mogen de kelder opnieuw openen" author: "Jasper Devreker" tags: - Corona - - General update + - General --- We hebben via het WVK[^wvk] doorgekregen dat we onze geliefde kelder terug mogen openen. From d52fd267fceb0bf2ed70052f0981713d36e95332 Mon Sep 17 00:00:00 2001 From: redfast00 Date: Mon, 12 Oct 2020 22:20:40 +0200 Subject: [PATCH 3/4] Test Travis From beecd1c5af8dc661cd0ca76ec98378336222ee30 Mon Sep 17 00:00:00 2001 From: ajuvercr Date: Tue, 13 Oct 2020 12:01:47 +0200 Subject: [PATCH 4/4] Add search event on tag --- content/events/20-21/04_hacktoberfest.md | 3 ++- content/events/20-21/05_exofru.md | 2 ++ layouts/events.erb | 28 +++++++++++++++---- lib/helpers/archives.rb | 17 +++++------- lib/helpers/events.rb | 34 +++++++++++++++++++++++- lib/helpers/preprocess.rb | 2 +- 6 files changed, 67 insertions(+), 19 deletions(-) diff --git a/content/events/20-21/04_hacktoberfest.md b/content/events/20-21/04_hacktoberfest.md index 82a6f27..69ae9e9 100644 --- a/content/events/20-21/04_hacktoberfest.md +++ b/content/events/20-21/04_hacktoberfest.md @@ -9,6 +9,8 @@ locationlink: $s9 facebook: //www.facebook.com/events/2759136070856741/ banner: //zeus.ugent.be/zeuswpi/Itsb0YbN.png header_text_background: true +tags: + - Code Hacking --- @@ -31,4 +33,3 @@ Er kunnen snacks en drank gekocht worden op het event. Er zal ook om takeaway ge [hacktob]: https://hacktoberfest.digitalocean.com/ [gandalf]: https://event.fkgent.be/events/305 - diff --git a/content/events/20-21/05_exofru.md b/content/events/20-21/05_exofru.md index 02aae92..1ad38a4 100644 --- a/content/events/20-21/05_exofru.md +++ b/content/events/20-21/05_exofru.md @@ -11,6 +11,8 @@ banner: //zeus.ugent.be/zeuswpi/7k6hvPJw.webp image: //zeus.ugent.be/zeuswpi/a28GvLuO.png header_text_background: true header_text_background_color: 'rgba(80, 50, 80, 0.75)' +tags: + - Esoterisch --- Geen betere manier om Java meer te appreciëren dan kennis te maken met een esoterische programmeertaal. Dit zijn talen die bepaalde programmeerconcepten tot in het absurde trekken. Ondertussen leer je Zeus WPI kennen, en kunnen we samen vloeken op de meest verschrikkelijke uitvindingen in de geschiedenis van de informatica. Geen voorkennis programmeren vereist (het is misschien zelfs beter). diff --git a/layouts/events.erb b/layouts/events.erb index c967bf7..fe6914f 100644 --- a/layouts/events.erb +++ b/layouts/events.erb @@ -19,15 +19,33 @@ <% end %> <% end %> + +
- <% unless upcoming_events(@item[:academic_year]).empty? %> + <% unless upcoming_events_in_year_or_tag(@item).empty? %>

Upcoming events

- <% upcoming_events(@item[:academic_year]).each_slice(1) do |slice| %> + <% upcoming_events_in_year_or_tag(@item).each_slice(1) do |slice| %>
<% slice.each do |event| %>
@@ -38,11 +56,11 @@ <% end %> <% end %> - <% unless past_events(@item[:academic_year]).empty? %> + <% unless past_events_in_year_or_tag(@item).empty? %>

Past events

- <% past_events(@item[:academic_year]).each_slice(1) do |slice| %> + <% past_events_in_year_or_tag(@item).each_slice(1) do |slice| %>
<% slice.each do |event| %>
@@ -53,7 +71,7 @@ <% end %> <% end %> - <% if past_events(@item[:academic_year]).empty? and upcoming_events(@item[:academic_year]).empty? %> + <% if past_events_in_year_or_tag(@item).empty? and upcoming_events_in_year_or_tag(@item).empty? %>

Sorry.

No events planned yet this year.

diff --git a/lib/helpers/archives.rb b/lib/helpers/archives.rb index 7915c51..5fe64ad 100644 --- a/lib/helpers/archives.rb +++ b/lib/helpers/archives.rb @@ -14,18 +14,13 @@ module ArchiveHelper academic_years.reverse.map { |y| [y, items["/blog/#{y}.html"]] } end - def tags - # Set.to_a to prevent duplicates - Set.new(items - .find_all('/blog/*/*') - .flat_map { |i| i[:tags] || [] }) - .to_a - .sort - .uniq - end - def tag_blog_items - tags.map { |y| [y, items["/blog/#{y}.html"]]} + Set.new(items + .find_all('/blog/*/*') + .flat_map { |i| i[:tags] || [] }) + .to_a + .sort + .uniq.map { |y| [y, items["/blog/#{y.gsub(' ', '_')}.html"]]} end def pretty_year(year) diff --git a/lib/helpers/events.rb b/lib/helpers/events.rb index 0649079..198d1b7 100644 --- a/lib/helpers/events.rb +++ b/lib/helpers/events.rb @@ -13,6 +13,22 @@ module EventsHelper items_.select { |x| x[:soon] == soon }.sort_by { |x| x[:time] } end + def tag_event_items + Set.new(items + .find_all('/events/*/*') + .flat_map { |i| i[:tags] || [] }) + .to_a + .sort + .uniq.map { |y| [y, items["/events/#{y.gsub(' ', '_')}.html"]]} + end + + def all_events_by_tag(tag = nil, soon = nil) + @items.find_all('/events/*/*.md') + .filter{|i| (i[:tags] || []).include? tag } + .select { |x| x[:soon] == soon } + .sort_by { |x| x[:time] } + end + def soon_events all_events(nil, true) end @@ -21,12 +37,28 @@ module EventsHelper all_events(year).reject { |x| x[:time] <= Date.today } end + def upcoming_events_in_year_or_tag(item) + if item[:is_yearly] + upcoming_events(item[:academic_year]) + else + all_events_by_tag(item[:tag]).reject { |x| x[:time] <= Date.today } + end + end + def past_events(year = nil) all_events(year).reject { |x| x[:time] > Date.today }.reverse end + def past_events_in_year_or_tag(item) + if item[:is_yearly] + past_events(item[:academic_year]) + else + all_events_by_tag(item[:tag]).reject { |x| x[:time] > Date.today }.reverse + end + end + def academic_years_event_items - items.find_all('/events/*').map { |e| [e[:academic_year], e] }.sort_by(&:first).reverse + items.find_all('/events/*').reject { |e| e[:academic_year].nil? }.map { |e| [e[:academic_year], e] }.sort_by(&:first).reverse end def grouped_events diff --git a/lib/helpers/preprocess.rb b/lib/helpers/preprocess.rb index a6eb65e..6c787de 100644 --- a/lib/helpers/preprocess.rb +++ b/lib/helpers/preprocess.rb @@ -94,7 +94,7 @@ module PreprocessHelper @items.create( '', { tag: tag, title: type, is_yearly: false }, - "/#{type.downcase}/#{tag}.html" + "/#{type.downcase}/#{tag.gsub(' ', '_')}.html" ) end end