templates: migrate Research Group template from v1 to v2 blocks (#2914)

This commit is contained in:
Federico Agostini authored and GitHub committed 2023-04-18 20:32:26 +01:00
1 parent 9ea080c354
commit a4e5661b88
22 files changed
+410 -267

No files matched your search

@@ -0,0 +1,24 @@
{{/* Uniform 'sort_by' parameter between built-in Hugo and Wowchemy ones */}}
{{/* Input: 'sort_by' parameter (string) */}}
{{/* Output: fixed 'sort_by' parameter (string) */}}
{{/*
Fix the 'sort_by' parameter, by adding "Params." as prefix if it is not a built-in Hugo parameter.
Since Wowchemy parameters are all standardised to lowercase-underscore convention, we:
- remove any leading ".": ".Date" is the same as "Date"
- check the first letter:
- if it is capitalized, then we have a built-in Hugo parameter, and we do nothing
- otherwise, it is a custom Wowchemy parameter, and we add "Params." as prefix
This logic should also be backward compatible, since "Params.my_param" is not modified.
*/}}
{{ $param := strings.TrimLeft "." . }}
{{/* Get first letter */}}
{{ $first := substr $param 0 }}
{{/* Check if it is lowercase */}}
{{ if eq $first (lower $first) }}
{{/* Add 'Params.' prefix */}}
{{ $param = printf "Params.%s" $param }}
{{ end }}
{{ return $param }}
@@ -63,6 +63,7 @@
{{/* Sort */}}
{{ $sort_by := $block.content.sort_by | default "Date" }}
{{ $sort_by = partial "functions/get_sort_by_parameter" $sort_by }}
{{ $sort_ascending := $block.content.sort_ascending | default (eq $block.content.order "asc") | default false }}
{{ $sort_order := cond $sort_ascending "asc" "desc" }}
{{ $query = sort $query $sort_by $sort_order }}
@@ -24,7 +24,7 @@
{{ end }}
<div class="col-12 {{if eq $columns "2"}}col-lg-8{{end}}">
{{ with $block.content.text }}{{ . | emojify | $page.RenderString }}{{ end }}
{{ with $block.content.text }}<p>{{ . | emojify | $page.RenderString }}</p>{{ end }}
{{ if $use_form }}
@@ -0,0 +1,73 @@
{{/* Wowchemy Blocks: People */}}
{{/* Documentation: https://wowchemy.com/blocks/ */}}
{{/* License: https://github.com/wowchemy/wowchemy-hugo-themes/blob/main/LICENSE.md */}}
{{/* Initialise */}}
{{ $page := .wcPage }}
{{ $block := .wcBlock }}
{{ $show_social := $block.design.show_social | default false }}
{{ $show_interests := $block.design.show_interests | default true }}
{{ $show_organizations := $block.design.show_organizations | default false }}
{{ $show_role := $block.design.show_role | default true }}
<div class="row justify-content-center people-widget">
{{ with $block.content.title }}
<div class="section-heading col-12 mb-3 text-center">
<h1 class="mb-0">{{ . | markdownify | emojify }}</h1>
{{ with $block.content.subtitle }}<p class="mt-1">{{ . | markdownify | emojify }}</p>{{ end }}
</div>
{{ end }}
{{ with $block.content.text }}
<div class="col-md-12">
{{ . | emojify | $page.RenderString }}
</div>
{{ end }}
{{ range $block.content.user_groups }}
{{ $query := where (where site.Pages "Section" "authors") ".Params.user_groups" "intersect" (slice .) }}
{{/* Sort */}}
{{ $sort_by := $block.content.sort_by | default "Params.last_name" }}
{{ $sort_by = partial "functions/get_sort_by_parameter" $sort_by }}
{{ $sort_ascending := $block.content.sort_ascending | default true }}
{{ $sort_order := cond $sort_ascending "asc" "desc" }}
{{ $query = sort $query $sort_by $sort_order }}
{{if $query | and (gt (len $block.content.user_groups) 1) }}
<div class="col-md-12">
<h2 class="mb-4">{{ . | markdownify }}</h2>
</div>
{{end}}
{{ range $query }}
{{ $avatar := (.Resources.ByType "image").GetMatch "*avatar*" }}
{{/* Get link to user's profile page. */}}
{{ $link := "" }}
{{ with site.GetPage (printf "/authors/%s" (path.Base .File.Dir)) }}
{{ $link = .RelPermalink }}
{{ end }}
<div class="col-12 col-sm-auto people-person">
{{ $src := "" }}
{{ if site.Params.features.avatar.gravatar }}
{{ $src = printf "https://s.gravatar.com/avatar/%s?s=150" (md5 .Params.email) }}
{{ else if $avatar }}
{{ $avatar_image := $avatar.Fill "270x270 Center" }}
{{ $src = $avatar_image.RelPermalink }}
{{ end }}
{{ if $src }}
{{ $avatar_shape := site.Params.features.avatar.shape | default "circle" }}
{{with $link}}<a href="{{.}}">{{end}}<img width="270" height="270" loading="lazy" class="avatar {{if eq $avatar_shape "square"}}avatar-square{{else}}avatar-circle{{end}}" src="{{ $src }}" alt="Avatar">{{if $link}}</a>{{end}}
{{ end }}
<div class="portrait-title">
<h2>{{with $link}}<a href="{{.}}">{{end}}{{ .Title }}{{if $link}}</a>{{end}}</h2>
{{ if and $show_organizations .Params.organizations }}{{ range .Params.organizations }}<h3>{{ .name }}</h3>{{ end }}{{ end }}
{{ if and $show_role .Params.role }}<h3>{{ .Params.role | markdownify | emojify }}</h3>{{ end }}
{{ if $show_social }}{{ partial "social_links" . }}{{ end }}
{{ if and $show_interests .Params.interests }}<p class="people-interests">{{ delimit .Params.interests ", " | markdownify | emojify }}</p>{{ end }}
</div>
</div>
{{ end }}
{{ end }}
</div>
@@ -87,6 +87,7 @@
{{/* Sort */}}
{{ $sort_by := $block.content.sort_by | default "Date" }}
{{ $sort_by = partial "functions/get_sort_by_parameter" $sort_by }}
{{ $sort_ascending := $block.content.sort_ascending | default (eq $block.content.order "asc") | default false }}
{{ $sort_order := cond $sort_ascending "asc" "desc" }}
{{ $query = sort $query $sort_by $sort_order }}
@@ -0,0 +1,91 @@
{{/* Wowchemy Blocks: Slider */}}
{{/* Documentation: https://wowchemy.com/blocks/ */}}
{{/* License: https://github.com/wowchemy/wowchemy-hugo-themes/blob/main/LICENSE.md */}}
{{/* Initialise */}}
{{ $page := .wcPage }}
{{ $block := .wcBlock }}
{{ $hash_id := .wcIdentifier }}
<!-- Indicators -->
<ol class="carousel-indicators">
{{ range $index, $item := $block.content.slides }}
<li data-target="#{{$hash_id}}" data-slide-to="{{$index}}" {{if eq $index 0}}class="active"{{end}}></li>
{{ end }}
</ol>
<!-- Carousel slides wrapper -->
<div class="carousel-inner">
{{ range $index, $item := $block.content.slides }}
{{ $style_bg := "" }}
{{ $style_filter := "" }}
{{with $block.design.slide_height}}
{{ $style_bg = printf "%s height: %s;" $style_bg . }}
{{end}}
{{ $bg := $item.background}}
{{ with $bg.color }}
{{ $style_bg = printf "%s background-color: %s;" $style_bg (. | default "transparent") }}
{{ end }}
{{ if and $bg.gradient_start $bg.gradient_end }}
{{ $angle := string $bg.gradient_angle | default "90" }}
{{ $style_bg = printf "%sbackground-image: linear-gradient(%sdeg, %s, %s);" $style_bg $angle $bg.gradient_start $bg.gradient_end }}
{{ end }}
{{ if $bg.image.filename }}
{{ $bg_img := resources.Get (printf "media/%s" $bg.image.filename) }}
{{ if $bg_img }}
{{ $style_bg = printf "%sbackground-image: url('%s'); background-repeat: no-repeat; background-position: %s; background-size: %s; " $style_bg $bg_img.Permalink ($bg.image.position | default "center") ($bg.image.size | default "cover") }}
{{ else }}
{{ errorf "Couldn't find `%s` in the `assets/media/` folder - please add it." $bg.image.filename }}
{{ end }}
{{ with $bg.image.filters.brightness }}
{{ $style_filter = printf "%s-webkit-backdrop-filter: brightness(%s); backdrop-filter: brightness(%s);" $style_filter (string .) (string .) }}
{{ end }}
{{ end }}
<div class="carousel-item{{if eq $index 0}} active{{end}} {{with $block.design.is_fullscreen}}fullscreen{{end}}" style="{{$style_bg | safeCSS}}">
<div class="position-absolute d-flex w-100 h-100 justify-content-center align-items-center" style="{{$style_filter | safeCSS}}">
{{/* To prevent control overlap, margins are based on $carousel-control-* in bootstrap-variables.scss */}}
<div class="wg-hero dark container" style="margin-left: 6rem; margin-right: 6rem; text-align: {{$item.align | default "left"}};">
<h1 class="hero-title ">
{{ with $item.title }}{{ . | markdownify | emojify }}{{ end }}
</h1>
{{ with $item.content }}
<p class="hero-lead" style="{{if eq $item.align "center"}}margin: 0 auto 0 auto;{{else if eq $item.align "right"}}margin-left: auto; margin-right: 0{{end}}">
{{ . | emojify | $page.RenderString }}
</p>
{{ end }}
{{ if $item.link.url }}
{{ $pack := $item.link.icon_pack | default "fas" }}
{{ $pack_prefix := $pack }}
{{ if in (slice "fab" "fas" "far" "fal") $pack }}
{{ $pack_prefix = "fa" }}
{{ end }}
<p>
<a href="{{ $item.link.url }}" class="btn btn-light btn-lg mt-3">
{{- with $item.link.icon -}}<i class="{{ $pack }} {{ $pack_prefix }}-{{ . }}" style="padding-right: 10px;"></i>{{- end -}}
{{- $item.link.text | emojify | markdownify | safeHTML -}}
</a>
</p>
{{ end }}
</div>
</div>
</div>
{{ end }}
</div>
<!-- Left and right controls -->
<a class="carousel-control-prev" href="#{{$hash_id}}" data-slide="prev">
<span class="carousel-control-prev-icon"></span>
<span class="sr-only">Previous</span>
</a>
<a class="carousel-control-next" href="#{{$hash_id}}" data-slide="next">
<span class="carousel-control-next-icon"></span>
<span class="sr-only">Next</span>
</a>
+67
View File
@@ -0,0 +1,67 @@
---
# Leave the homepage title empty to use the site title
title:
date: 2022-10-24
type: landing
sections:
- block: hero
content:
title: |
Wowchemy
Research Group
image:
filename: welcome.jpg
text: |
<br>
The **Wowchemy Research Group** has been a center of excellence for Artificial Intelligence research, teaching, and practice since its founding in 2016.
- block: collection
content:
title: Latest News
subtitle:
text:
count: 5
filters:
author: ''
category: ''
exclude_featured: false
publication_type: ''
tag: ''
offset: 0
order: desc
page_type: post
design:
view: card
columns: '1'
- block: markdown
content:
title:
subtitle: ''
text:
design:
columns: '1'
background:
image:
filename: coders.jpg
filters:
brightness: 1
parallax: false
position: center
size: cover
text_color_light: true
spacing:
padding: ['20px', '0', '20px', '0']
css_class: fullscreen
- block: markdown
content:
title:
subtitle:
text: |
{{% cta cta_link="./people/" cta_text="Meet the team →" %}}
design:
columns: '1'
---
@@ -2,6 +2,10 @@
# Display name
title: Nelson Bighetti
# Full Name (for SEO)
first_name: Nelson
last_name: Bighetti
# Is this the primary user of the site?
superuser: true
@@ -1,6 +1,10 @@
---
# Display name
title: 吳恩達
title: Alice Wu 吳恩達
# Full name (for SEO)
first_name: Alice
last_name: Wu
# Username (this should match the folder name)
authors:
@@ -1,57 +0,0 @@
---
# An instance of the Contact widget.
# Documentation: https://wowchemy.com/docs/page-builder/
widget: contact
# This file represents a page section.
headless: true
# Order that this section appears on the page.
weight: 10
title: Contact
subtitle:
content:
# Contact (edit or remove options as required)
email: test@example.org
phone: 888 888 88 88
address:
street: 450 Serra Mall
city: Stanford
region: CA
postcode: '94305'
country: United States
country_code: US
coordinates:
latitude: '37.4275'
longitude: '-122.1697'
directions: Enter Building 1 and take the stairs to Office 200 on Floor 2
office_hours:
- 'Monday 10:00 to 13:00'
- 'Wednesday 09:00 to 10:00'
appointment_url: 'https://calendly.com'
#contact_links:
# - icon: comments
# icon_pack: fas
# name: Discuss on Forum
# link: 'https://discourse.gohugo.io'
# Automatically link email and phone or display as text?
autolink: true
# Email form provider
form:
provider: netlify
formspree:
id:
netlify:
# Enable CAPTCHA challenge to reduce spam?
captcha: false
design:
columns: '1'
---
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer tempus augue non tempor egestas. Proin nisl nunc, dignissim in accumsan dapibus, auctor ullamcorper neque. Quisque at elit felis. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Aenean eget elementum odio. Cras interdum eget risus sit amet aliquet. In volutpat, nisl ut fringilla dignissim, arcu nisl suscipit ante, at accumsan sapien nisl eu eros.
@@ -1,28 +0,0 @@
---
# An instance of the Blank widget.
# Documentation: https://wowchemy.com/docs/page-builder/
widget: blank
# This file represents a page section.
headless: true
# Order that this section appears on the page.
weight: 20
title:
subtitle:
design:
columns: '1'
background:
image: contact.jpg
image_darken: 0
image_parallax: false
image_position: center
image_size: cover
text_color_light: true
spacing:
padding: ['20px', '0', '20px', '0']
advanced:
css_class: fullscreen
---
@@ -1,4 +1,69 @@
---
# Files in this folder represent a Widget Page
type: widget_page
title: Contact
date: 2022-10-24
type: landing
sections:
- block: contact
content:
title: Contact
text: |-
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer tempus augue non tempor egestas. Proin nisl nunc, dignissim in accumsan dapibus, auctor ullamcorper neque. Quisque at elit felis. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Aenean eget elementum odio. Cras interdum eget risus sit amet aliquet. In volutpat, nisl ut fringilla dignissim, arcu nisl suscipit ante, at accumsan sapien nisl eu eros.
email: test@example.org
phone: 888 888 88 88
address:
street: 450 Serra Mall
city: Stanford
region: CA
postcode: '94305'
country: United States
country_code: US
coordinates:
latitude: '37.4275'
longitude: '-122.1697'
directions: Enter Building 1 and take the stairs to Office 200 on Floor 2
office_hours:
- 'Monday 10:00 to 13:00'
- 'Wednesday 09:00 to 10:00'
appointment_url: 'https://calendly.com'
#contact_links:
# - icon: comments
# icon_pack: fas
# name: Discuss on Forum
# link: 'https://discourse.gohugo.io'
# Automatically link email and phone or display as text?
autolink: true
# Email form provider
form:
provider: netlify
formspree:
id:
netlify:
# Enable CAPTCHA challenge to reduce spam?
captcha: false
design:
columns: '1'
- block: markdown
content:
title:
subtitle: ''
text:
design:
columns: '1'
background:
image:
filename: contact.jpg
filters:
brightness: 1
parallax: false
position: center
size: cover
text_color_light: true
spacing:
padding: ['20px', '0', '20px', '0']
css_class: fullscreen
---
@@ -1,11 +0,0 @@
---
title:
subtitle:
widget: blank
headless: true
weight: 40
design:
columns: '1'
---
{{% cta cta_link="./people/" cta_text="Meet the team →" %}}
@@ -1,31 +0,0 @@
---
# An instance of the Blank widget.
# Documentation: https://wowchemy.com/docs/page-builder/
widget: blank
# Activate this widget? true/false
active: true
# This file represents a page section.
headless: true
# Order that this section appears on the page.
weight: 30
title:
subtitle:
design:
columns: '1'
background:
image: coders.jpg
image_darken: 0
image_parallax: false
image_position: center
image_size: cover
text_color_light: true
spacing:
padding: ['20px', '0', '20px', '0']
advanced:
css_class: fullscreen
---
@@ -1,7 +0,0 @@
---
# Files in this folder represent a Widget Page (homepage)
type: widget_page
# Homepage is headless, other widget pages are not.
headless: true
---
@@ -1,24 +0,0 @@
---
# Documentation: https://wowchemy.com/docs/page-builder/
widget: pages
headless: true
weight: 20
title: Latest News
subtitle:
content:
count: 5
filters:
author: ''
category: ''
exclude_featured: false
publication_type: ''
tag: ''
offset: 0
order: desc
page_type: post
design:
view: 3
columns: '1'
---
@@ -1,23 +0,0 @@
---
# A Demo section created with the Blank widget.
# Any elements can be added in the body: https://wowchemy.com/docs/writing-markdown-latex/
# Add more sections by duplicating this file and customizing to your requirements.
widget: hero # See https://wowchemy.com/docs/page-builder/
headless: true # This file represents a page section.
weight: 10 # Order that this section will appear.
title: |
Wowchemy
Research Group
hero_media: welcome.jpg
design:
# Choose how many columns the section has. Valid values: 1 or 2.
columns: '1'
# Add custom styles
css_style:
css_class:
---
<br>
The **Wowchemy Research Group** has been a center of excellence for Artificial Intelligence research, teaching, and practice since its founding in 2016.
@@ -1,4 +1,26 @@
---
# Files in this folder represent a Widget Page
type: widget_page
---
title: People
date: 2022-10-24
type: landing
sections:
- block: people
content:
title: Meet the Team
# Choose which groups/teams of users to display.
# Edit `user_groups` in each user's profile to add them to one or more of these groups.
user_groups:
- Principal Investigators
- Researchers
- Grad Students
- Administration
- Visitors
- Alumni
sort_by: Params.last_name
sort_ascending: true
design:
show_interests: false
show_role: true
show_social: true
---
@@ -1,29 +0,0 @@
---
# An instance of the People widget.
# Documentation: https://wowchemy.com/docs/page-builder/
widget: people
# This file represents a page section.
headless: true
# Order that this section appears on the page.
weight: 68
title: Meet the Team
subtitle:
content:
# Choose which groups/teams of users to display.
# Edit `user_groups` in each user's profile to add them to one or more of these groups.
user_groups:
- Principal Investigators
- Researchers
- Grad Students
- Administration
- Visitors
- Alumni
design:
show_interests: false
show_role: true
show_social: true
---
+50 -2
View File
@@ -1,6 +1,54 @@
---
title: Tour
date: 2022-10-24
# Files in this folder represent a Widget Page
type: widget_page
type: landing
sections:
- block: slider
content:
slides:
- title: 👋 Welcome to the group
content: Take a look at what we're working on...
align: center
background:
image:
filename: coders.jpg
filters:
brightness: 0.7
position: right
color: '#666'
- title: Lunch & Learn ☕️
content: 'Share your knowledge with the group and explore exciting new topics together!'
align: left
background:
image:
filename: contact.jpg
filters:
brightness: 0.7
position: center
color: '#555'
- title: World-Class Semiconductor Lab
content: 'Just opened last month!'
align: right
background:
image:
filename: welcome.jpg
filters:
brightness: 0.5
position: center
color: '#333'
link:
icon: graduation-cap
icon_pack: fas
text: Join Us
url: ../contact/
design:
# Slide height is automatic unless you force a specific height (e.g. '400px')
slide_height: ''
is_fullscreen: true
# Automatically transition through slides?
loop: false
# Duration of transition between slides (in ms)
interval: 2000
---
@@ -1,47 +0,0 @@
---
widget: slider
weight: 1
active: true
headless: true
design:
# Slide height is automatic unless you force a specific height (e.g. '400px')
slide_height: ''
is_fullscreen: true
# Automatically transition through slides?
loop: false
# Duration of transition between slides (in ms)
interval: 2000
content:
slides:
- title: 👋 Welcome to the group
content: Take a look at what we're working on...
align: center
background:
position: right
color: '#666'
brightness: 0.7
media: coders.jpg
- title: Lunch & Learn ☕️
content: 'Share your knowledge with the group and explore exciting new topics together!'
align: left
background:
position: center
color: '#555'
brightness: 0.7
media: contact.jpg
- title: World-Class Semiconductor Lab
content: 'Just opened last month!'
align: right
background:
position: center
color: '#333'
brightness: 0.5
media: welcome.jpg
link:
icon: graduation-cap
icon_pack: fas
text: Join Us
url: ../contact/
---
+1 -1
View File
@@ -5,5 +5,5 @@ go 1.15
require (
github.com/wowchemy/wowchemy-hugo-themes/modules/wowchemy-plugin-netlify v1.0.0 // indirect
github.com/wowchemy/wowchemy-hugo-themes/modules/wowchemy-plugin-netlify-cms v1.0.0 // indirect
github.com/wowchemy/wowchemy-hugo-themes/modules/wowchemy/v5 v5.6.0 // indirect
github.com/wowchemy/wowchemy-hugo-themes/modules/wowchemy/v5 main // indirect
)