diff --git a/.gitignore b/.gitignore
index 3d1aa7002..be13cd0a7 100644
--- a/.gitignore
+++ b/.gitignore
@@ -4,3 +4,6 @@ _site/
.jekyll-cache/
.DS_Store
node_modules
+
+# Local Netlify folder
+.netlify/state.json
diff --git a/.netlify/edge-functions-import-map.json b/.netlify/edge-functions-import-map.json
new file mode 100644
index 000000000..ef311bf52
--- /dev/null
+++ b/.netlify/edge-functions-import-map.json
@@ -0,0 +1 @@
+{"imports":{"netlify:edge":"https://edge.netlify.com/v1/index.ts"},"scopes":{}}
\ No newline at end of file
diff --git a/.netlify/functions/README.md b/.netlify/functions/README.md
new file mode 100644
index 000000000..a406bc46a
--- /dev/null
+++ b/.netlify/functions/README.md
@@ -0,0 +1,30 @@
+# Netlify Edge Functions
+Below is a list of the edge functions we currently have.
+
+## OG Image Generator
+
+Path: `/og-image`
+
+Accepted parameters:
+ - `?id=gym-100`
+ - `?path=courses/take5`
+
+The parameters are used in turn to look up entries in the `/feeds/data.json` file, which provides everything we need to render content specific to each course.
+
+### Layouts
+Most layouts are automatically determined by the id or path passed in.
+
+#### Logo only
+Visiting `/og-image` without any parameters will display the single column logo only layout.
+
+#### Two-Column Layouts
+All courses use a two-column layout.
+
+##### Full & Short Course Layouts
+Standard course layouts use a course icon/badge and a hex color value to color the background area behind the icon.
+
+##### Take 5 Tutorial Layouts
+Take 5 tutorials are visually different from course layouts, utilizing a custom image and an image offset.
+
+### Additional Documentation
+- [Satori](https://github.com/vercel/satori) - documentation on the Satori library, by Vercel. Of particular interest should be the section on permissible CSS.
diff --git a/.netlify/functions/og.tsx b/.netlify/functions/og.tsx
new file mode 100644
index 000000000..9df6eeaf0
--- /dev/null
+++ b/.netlify/functions/og.tsx
@@ -0,0 +1,421 @@
+import React from 'https://esm.sh/react@18.2.0';
+import { ImageResponse } from 'https://deno.land/x/og_edge/mod.ts';
+
+// Parse Data File
+async function getData(domain: string, id:any, path:any) {
+ try {
+ const JSON = await fetch(`${domain}/feeds/data.json`);
+ const data = await JSON.json();
+ id = id ? id.toLowerCase(): null;
+ path = path ? `/${path.toLowerCase()}/meta/`: null;
+ let itemData: any;
+ let type: any;
+
+ if (id) {
+ if (id.startsWith('web')) {
+ type = 'webinars';
+ } else if (id.startsWith('gym-')) {
+ type = 'courses';
+ }
+
+ Object.entries(data[type]).map(obj => {
+ const item:any = obj[1];
+
+ if (id === item['id'].toLowerCase()) {
+ itemData = item;
+ }
+ });
+
+ } else if (path) {
+ type = 'static';
+
+ Object.entries(data[type]).map(obj => {
+ const item:any = obj[1];
+
+ if (path === item['path'].toLowerCase()) {
+ itemData = item;
+ }
+ });
+ }
+
+ return itemData;
+ } catch(e:any) {
+ console.warn(`${e.message}`);
+ return new Response(`Couldn't find matching id!`, {
+ status: 500,
+ });
+ }
+}
+
+// Calculate aspect ratio of a resized image, assuming one knows the initial dimensions
+async function aspectRatio(width:number, height:number, dimension:{type: string,value: number}) {
+ let ratio: any;
+
+ try {
+ if (dimension.type === 'width') {
+ // return a width
+ ratio = width/height;
+ } else if (dimension.type === 'height') {
+ // return a height
+ ratio = height/width;
+ } else {
+ throw new Error('dimension.type must be `width` or `height`!');
+ }
+ } catch(e:any) {
+ console.warn(`${e.message}`);
+ return new Response(`Failed to calculate aspect ratio.`, {
+ status: 500,
+ });
+ }
+ return dimension.value * ratio;
+}
+
+export default async function handler(req: Request) {
+ const url = new URL(req.url);
+ const domain = url.origin;
+
+ // load webfont
+ const fontData = await fetch(`${domain}/fonts/brandon_bld-webfont.woff`).then(
+ (res) => res.arrayBuffer(),
+ );
+
+ // Get the query parameters from the request
+ const params:any = new URLSearchParams(url.search);
+ const id = params.get('id') ?? null;
+ const path = params.get('path') ?? null;
+ let bgColor = params.get('bg') ?? '222';
+ let imgBgColor = params.get('imgbg') ?? '222';
+ let imgOffset:any = Math.abs(params.get('offset')) ?? 0;
+ let titleFontSize = 50;
+ let footerText = params.get('footer') ?? 'thegymnasium.com';
+ // const pubDate = params.get('pubDate') ?? new Date().toISOString();
+ let imgPath: any;
+ let title: any;
+ let topic: any;
+ let type: any;
+ let metaData: any;
+ let hideFooter: boolean = false;
+ let layoutType = 'default';
+ let debug: boolean = false;
+
+ if (params.has('debug')) {
+ debug = true;
+ params.delete('debug');
+ }
+
+ // Are there any URL parameters (other than debug [see above]) attached? If not, hide the footer too. This is to display only the Gymnasium logo when visiting /og-image
+ if (params && params.toString().length === 0) {
+ hideFooter = true;
+ layoutType = 'logo';
+ }
+
+ // have id?
+ if (id) {
+ try {
+ metaData = await getData(domain, id, null);
+ } catch(e: any) {
+ console.warn(`${e.message}`);
+ return new Response(`Invalid id (data file not found)`, {
+ status: 500,
+ });
+ }
+ }
+
+ // have path?
+ if (path) {
+ try {
+ metaData = await getData(domain, null, path);
+ } catch(e: any) {
+ console.warn(`${e.message}`);
+ return new Response(`Invalid path (data not found)`, {
+ status: 500,
+ });
+ }
+ }
+
+ if (metaData) {
+ if (metaData.img) {
+ imgPath = metaData.img;
+ }
+ if (metaData.img_bg_color) {
+ imgBgColor = metaData.img_bg_color;
+
+ if (!imgBgColor.includes('#')) {
+ imgBgColor = `#${imgBgColor}`;
+ }
+ }
+ if (metaData.img_offset) {
+ imgOffset = metaData.img_offset;
+ }
+ if (metaData.bg_color) {
+ bgColor = metaData.bg_color;
+
+ if (!bgColor.includes('#')) {
+ bgColor = `#${bgColor}`;
+ }
+ }
+ if (metaData.type) {
+ type = metaData.type;
+ }
+ if (metaData.title) {
+ title = metaData.title;
+ }
+ if (metaData.topic) {
+ topic = metaData.topic;
+ }
+ }
+
+ // defaults
+ const wrapperWidth = 1200;
+ const wrapperHeight = 628;
+ let imgDisplay = 'none';
+ let imgWidth = 0;
+ let bgImg = 'none';
+ let bgSize = 'contain';
+ let bgPos = '0 0';
+ let contentBorderLeft = 'none';
+ let contentAlign = 'center';
+ let contentJustify = 'center';
+ let footerCase = 'initial';
+ let footerColor = 'ff5f14';
+ let footerDisplay = 'flex';
+ let logoDisplay = 'flex';
+ let logoWidth = 834;
+ let headerDisplay = 'none';
+ let headerText = '';
+ let wrapperAlign = 'center';
+ let wrapperJustify = 'center';
+
+ // Permit hiding the footer (?footer=false)
+ if (hideFooter === true) {
+ footerDisplay = 'none';
+ }
+
+ let imgUrl:any;
+
+ if (imgPath) {
+ imgUrl = `${domain}${imgPath}`;
+ }
+
+ if (params.get('title')) {
+ title = params.get('title')
+ }
+
+ // TODO: something to calculate number of words to apply font size adjustments?
+ let numWords:number;
+
+ if (title) {
+ numWords = title.split(' ').length;
+ }
+
+ if (path) {
+ contentAlign = 'flex-start';
+ contentJustify = 'space-between';
+ wrapperJustify = 'space-between';
+ logoWidth = 400;
+ }
+
+ if (imgUrl) {
+ // General defaults + some take 5 settings
+ bgImg = `url('${imgUrl}')`;
+ bgSize = 'contain';
+ wrapperJustify = 'flex-start';
+ wrapperAlign = 'flex-start';
+ imgDisplay = 'flex';
+ contentAlign = 'flex-start';
+ logoWidth = 300;
+
+ if (type === 'take5') {
+ // let iconWidth = await newImgWidth(1920,1080,wrapperHeight);
+ let iconWidth = await aspectRatio(1920,1080,{type:'width',value:wrapperHeight});
+
+ bgSize = `${iconWidth}px ${wrapperHeight}px`;
+ titleFontSize = 80;
+ contentBorderLeft = '2px solid #ccc';
+ imgWidth = 320;
+ footerColor = 'ccc';
+ contentAlign = 'flex-start';
+ contentJustify = 'space-between';
+ bgPos = imgOffset ? `-${imgOffset}px 0px` : '0 0';
+ footerCase = 'uppercase';
+ logoDisplay = 'none';
+ headerDisplay = 'flex';
+ headerText = 'Take 5';
+ if (topic) {
+ footerText = topic;
+ }
+
+ // TODO: improve logic for font size, based on sentence length
+ if (title.length >= 50) {
+ titleFontSize = titleFontSize * 0.75;
+ } else if (title.length >= 45) {
+ titleFontSize = titleFontSize * 0.80;
+ } else if (title.length >= 40) {
+ titleFontSize = titleFontSize * 0.85;
+ } else if (title.length >= 35) {
+ titleFontSize = titleFontSize * 0.90;
+ } else {
+ titleFontSize = titleFontSize;
+ }
+
+ console.log(title.length, titleFontSize);
+
+ } else {
+ // calculate aspect ratio for proportional resizing
+ const iconWidth = 516;
+ let iconHeight:any = await aspectRatio(574,488,{type:'height',value:iconWidth});
+ const iconVOffset = (wrapperHeight - iconHeight)/2;
+
+ bgSize = `${iconWidth}px ${iconHeight}px`;
+ imgWidth = iconWidth;
+ bgPos = `0px ${iconVOffset}px`;
+ titleFontSize = 70;
+ contentJustify = 'center';
+ }
+ }
+
+ let contentWidth = wrapperWidth - imgWidth;
+
+ let CONFIG_WRAPPER = {
+ height: '100%',
+ width: '100%',
+ display: 'flex',
+ flexWrap: 'nowrap',
+ flexDirection: 'row',
+ justifyContent: `${wrapperJustify}`,
+ // alignContent: 'stretch',
+ alignItems: `${wrapperAlign}`,
+ backgroundColor: '#222',
+ color: '#fff',
+ fontSize: '50px',
+ fontWeight: 'bold',
+ fontFamily: 'brandon-grotesque',
+ position: 'relative',
+ zIndex: 1,
+ lineHeight: 1,
+ }
+
+ let CONFIG_IMG = {
+ display: `${imgDisplay}`,
+ order: 1,
+ flexGrow: 0,
+ flexShrink: 0,
+ alignSelf: 'center',
+ justifyContent: 'center',
+ height: '100%',
+ width: '100%',
+ backgroundImage: `${bgImg}`,
+ backgroundColor: `${imgBgColor}`,
+ backgroundOrigin: 'border-box',
+ backgroundRepeat: 'no-repeat',
+ backgroundPosition: `${bgPos}`,
+ backgroundSize: `${bgSize}`,
+ position: 'absolute',
+ top: 0,
+ left: 0,
+ zIndex: 2,
+ }
+
+ let CONFIG_CONTENT = {
+ borderLeft: `${contentBorderLeft}`,
+ display: 'flex',
+ flexDirection: 'column',
+ justifyContent: `${contentJustify}`,
+ alignItems: `${contentAlign}`,
+ padding: '60px',
+ marginLeft: `${imgWidth}px`,
+ backgroundColor: `${bgColor}`,
+ width: `${contentWidth}px`,
+ height: '100%',
+ lineHeight: 1,
+ }
+
+ let CONFIG_TITLE = {
+ color: '#fff',
+ textTransform: 'uppercase',
+ fontSize: titleFontSize,
+ lineHeight: 1,
+ }
+
+ let CONFIG_HEADER = {
+ color: '#000',
+ display: `${headerDisplay}`,
+ lineHeight: 1,
+ }
+
+ let CONFIG_LOGO = {
+ display: `${logoDisplay}`,
+ width: `${logoWidth}`,
+ }
+
+ let CONFIG_FOOTER = {
+ color: `#${footerColor}`,
+ textTransform: `${footerCase}`,
+ display: `${footerDisplay}`,
+ lineHeight: 1,
+ }
+
+ if (debug) {
+ console.log(
+ 'URL parameters: ',
+ params.toString(), '\n',
+ 'CONFIG_WRAPPER =',
+ CONFIG_WRAPPER, '\n',
+ 'CONFIG_IMG =',
+ CONFIG_IMG, '\n',
+ 'CONFIG_CONTENT =',
+ CONFIG_CONTENT, '\n',
+ 'CONFIG_HEADER =',
+ CONFIG_HEADER, '\n',
+ 'CONFIG_LOGO =',
+ CONFIG_LOGO, '\n',
+ 'CONFIG_TITLE =',
+ CONFIG_TITLE, '\n',
+ 'CONFIG_FOOTER =',
+ CONFIG_FOOTER, '\n',
+ );
+ }
+
+ const layoutDefault = (
+
+
+
+
+
+ {title}
+ {footerText}
+
+
+ );
+
+ const layoutLogo = (
+
+
+
+
+
+ );
+
+ let layout = layoutDefault;
+
+ // TODO: refactor to improve logic
+ if (layoutType === 'logo') {
+ layout = layoutLogo;
+ }
+
+ // Generate the open graph image
+ return new ImageResponse(layout,
+ {
+ width: 1200,
+ height: 628,
+ debug: debug,
+ fonts: [
+ {
+ name: 'brandon-grotesque',
+ data: fontData,
+ style: 'normal',
+ }
+ ],
+ }
+ );
+}
diff --git a/.nvmrc b/.nvmrc
new file mode 100644
index 000000000..3c032078a
--- /dev/null
+++ b/.nvmrc
@@ -0,0 +1 @@
+18
diff --git a/Gemfile.lock b/Gemfile.lock
index 021ef3977..8fafd48e5 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -1,21 +1,21 @@
GEM
remote: https://rubygems.org/
specs:
- addressable (2.8.0)
- public_suffix (>= 2.0.2, < 5.0)
+ addressable (2.8.1)
+ public_suffix (>= 2.0.2, < 6.0)
colorator (1.1.0)
- concurrent-ruby (1.1.6)
- deep_merge (1.2.1)
- em-websocket (0.5.1)
+ concurrent-ruby (1.1.10)
+ deep_merge (1.2.2)
+ em-websocket (0.5.3)
eventmachine (>= 0.12.9)
- http_parser.rb (~> 0.6.0)
+ http_parser.rb (~> 0)
eventmachine (1.2.7)
- ffi (1.13.1)
+ ffi (1.15.5)
forwardable-extended (2.6.0)
- http_parser.rb (0.6.0)
- i18n (1.8.3)
+ http_parser.rb (0.8.0)
+ i18n (1.12.0)
concurrent-ruby (~> 1.0)
- jekyll (4.1.0)
+ jekyll (4.1.1)
addressable (~> 2.4)
colorator (~> 1.0)
em-websocket (~> 0.5)
@@ -33,39 +33,40 @@ GEM
jekyll-get-json (1.0.0)
deep_merge (~> 1.2)
jekyll (>= 3.0)
- jekyll-sass-converter (2.1.0)
+ jekyll-sass-converter (2.2.0)
sassc (> 2.0.1, < 3.0)
jekyll-watch (2.2.1)
listen (~> 3.0)
- kramdown (2.3.1)
+ kramdown (2.4.0)
rexml
kramdown-parser-gfm (1.1.0)
kramdown (~> 2.0)
liquid (4.0.3)
- listen (3.3.0)
+ listen (3.7.1)
rb-fsevent (~> 0.10, >= 0.10.3)
rb-inotify (~> 0.9, >= 0.9.10)
mercenary (0.4.0)
pathutil (0.16.2)
forwardable-extended (~> 2.6)
- public_suffix (4.0.6)
- rb-fsevent (0.10.4)
+ public_suffix (5.0.0)
+ rb-fsevent (0.11.2)
rb-inotify (0.10.1)
ffi (~> 1.0)
rexml (3.2.5)
- rouge (3.20.0)
+ rouge (3.30.0)
safe_yaml (1.0.5)
sassc (2.4.0)
ffi (~> 1.9)
terminal-table (1.8.0)
unicode-display_width (~> 1.1, >= 1.1.1)
- unicode-display_width (1.7.0)
+ unicode-display_width (1.8.0)
webrick (1.7.0)
PLATFORMS
arm64-darwin-21
ruby
universal-darwin-19
+ x86_64-darwin-21
x86_64-linux
x86_64-linux-musl
@@ -75,4 +76,4 @@ DEPENDENCIES
webrick (~> 1.7)
BUNDLED WITH
- 2.2.2
+ 2.3.26
diff --git a/_config.yml b/_config.yml
index 8f503aa73..50ef6367f 100644
--- a/_config.yml
+++ b/_config.yml
@@ -16,6 +16,7 @@ exclude:
- 'netlify.toml'
- '.jekyll-cache'
- 'local'
+ - '.netlify/functions/README.md'
include:
- '_redirects'
@@ -52,14 +53,14 @@ jekyll_get_json:
json: 'https://stag-assets.aquent.com/apps/gym/jobs.json?limit=1500'
- data: markets
json: 'https://stag-assets.aquent.com/apps/gym/markets.json'
- - data: privacy-index
- json: 'https://assets.aquent.com/api/content/render/false/type/json/query/+contentType:webPageContent%20+webPageContent.title:*privacy-policy-index*%20+languageId:1%20+deleted:false%20+working:true/'
- - data: privacy-shield-notice
- json: 'https://assets.aquent.com/api/content/render/false/type/json/query/+contentType:webPageContent%20+webPageContent.title:*privacy-policy-privacy-shield-notice*%20+languageId:1%20+deleted:false%20+working:true/'
- - data: privacy-ccpa
- json: 'https://assets.aquent.com/api/content/render/false/type/json/query/+contentType:webPageContent%20+webPageContent.title:*privacy-policy-ccpa-policy*%20+languageId:1%20+deleted:false%20+working:true/'
- - data: privacy-data-category
- json: 'https://assets.aquent.com/api/content/render/false/type/json/query/+contentType:webPageContent%20+webPageContent.title:*privacy-policy-data-category*%20+languageId:1%20+deleted:false%20+working:true/'
- - data: privacy-eu-rights
- json: 'https://assets.aquent.com/api/content/render/false/type/json/query/+contentType:webPageContent%20+webPageContent.title:*privacy-policy-european-rights*%20+languageId:1%20+deleted:false%20+working:true/'
+ # - data: privacy-index
+ # json: 'https://assets.aquent.com/api/content/render/false/type/json/query/+contentType:webPageContent%20+webPageContent.title:*privacy-policy-index*%20+languageId:1%20+deleted:false%20+working:true/'
+ # - data: privacy-shield-notice
+ # json: 'https://assets.aquent.com/api/content/render/false/type/json/query/+contentType:webPageContent%20+webPageContent.title:*privacy-policy-privacy-shield-notice*%20+languageId:1%20+deleted:false%20+working:true/'
+ # - data: privacy-ccpa
+ # json: 'https://assets.aquent.com/api/content/render/false/type/json/query/+contentType:webPageContent%20+webPageContent.title:*privacy-policy-ccpa-policy*%20+languageId:1%20+deleted:false%20+working:true/'
+ # - data: privacy-data-category
+ # json: 'https://assets.aquent.com/api/content/render/false/type/json/query/+contentType:webPageContent%20+webPageContent.title:*privacy-policy-data-category*%20+languageId:1%20+deleted:false%20+working:true/'
+ # - data: privacy-eu-rights
+ # json: 'https://assets.aquent.com/api/content/render/false/type/json/query/+contentType:webPageContent%20+webPageContent.title:*privacy-policy-european-rights*%20+languageId:1%20+deleted:false%20+working:true/'
diff --git a/_data/courses/GYM-001.yml b/_data/courses/GYM-001.yml
index b79287551..c9b0e9ca7 100644
--- a/_data/courses/GYM-001.yml
+++ b/_data/courses/GYM-001.yml
@@ -5,6 +5,8 @@ date: 2019-10-28T00:00:00-04:00
course_type: short
url: /courses/GYM/001/0/about
poster_art: /img/course-artwork/png/gym-001.png
+og_gen_data:
+ img_bg_color: 2c9959
live: true
topic: "Career Skills"
short_description: "Learn how to estimate, plan, track, and manage your time in order to complete projects. Being busy isn’t a bad thing, but not being in control of your own time is."
diff --git a/_data/courses/GYM-002.yml b/_data/courses/GYM-002.yml
index 15ad3cee8..3385af06a 100644
--- a/_data/courses/GYM-002.yml
+++ b/_data/courses/GYM-002.yml
@@ -8,6 +8,8 @@ retired_message:
1: "This course has been retired. Due to outdated content, we don’t offer a badge for this course, but you can still view the lessons. We recommend taking the updated course Introduction to Node.js (and earning a badge) instead."
url: /courses/GYM/002/0/about
poster_art: /img/course-artwork/png/gym-002.png
+og_gen_data:
+ img_bg_color: 764c9f
topic: "Development"
short_description: "This course has been retired."
short_description_orig: "Learn the basics of Node.js by building a “sample social” profile form."
diff --git a/_data/courses/GYM-003.yml b/_data/courses/GYM-003.yml
index f564a4c64..a03e96ecd 100644
--- a/_data/courses/GYM-003.yml
+++ b/_data/courses/GYM-003.yml
@@ -8,6 +8,8 @@ retired_message:
1: "This course has been retired. Due to outdated content, we don’t offer a badge for this course, but you can still view the lessons. We recommend watching the tutorial Prototyping in the Browser with CSS Grid Layout instead."
url: /courses/GYM/003/0/about
poster_art: /img/course-artwork/png/gym-003.png
+og_gen_data:
+ img_bg_color: d73158
topic: "Development"
short_description: "This course has been retired."
short_description_orig: "Get up to speed with the Twitter Bootstrap’s grid layout system and learn how to build a responsive layout that looks great on multiple screen sizes and devices."
diff --git a/_data/courses/GYM-004.yml b/_data/courses/GYM-004.yml
index c9fcb1734..61d39ef25 100644
--- a/_data/courses/GYM-004.yml
+++ b/_data/courses/GYM-004.yml
@@ -6,6 +6,8 @@ course_type: short
live: true
url: /courses/GYM/004/0/about
poster_art: /img/course-artwork/png/gym-004.png
+og_gen_data:
+ img_bg_color: d73158
topic: "Development"
short_description: "Learn how to convert your HTML/CSS design into a WordPress website. Discover how to set up a local development environment, and add WordPress tags to your design."
instructor: ghodgkinson
diff --git a/_data/courses/GYM-005.yml b/_data/courses/GYM-005.yml
index 06d101744..4db0eb8db 100644
--- a/_data/courses/GYM-005.yml
+++ b/_data/courses/GYM-005.yml
@@ -8,6 +8,8 @@ retired_message:
1: "This course has been retired. Due to outdated content, we don’t offer a badge for this course, but you can still view the lessons."
url: /courses/GYM/005/0/about
poster_art: /img/course-artwork/png/gym-005.png
+og_gen_data:
+ img_bg_color: 5ca5a0
topic: "UX"
subtopics:
- label: "Prototyping"
diff --git a/_data/courses/GYM-006.yml b/_data/courses/GYM-006.yml
index 684ac6b5a..7935c7608 100644
--- a/_data/courses/GYM-006.yml
+++ b/_data/courses/GYM-006.yml
@@ -6,6 +6,8 @@ course_type: short
live: true
url: /courses/GYM/006/0/about
poster_art: /img/course-artwork/png/gym-006.png
+og_gen_data:
+ img_bg_color: 2c9959
topic: "Development"
short_description: "Learn the basics of version control and get a high-level overview of both Git and GitHub. Perfect for someone with little to no first-hand experience with either."
instructor: jausura
diff --git a/_data/courses/GYM-007.yml b/_data/courses/GYM-007.yml
index 9cf8a3630..53104e3fb 100644
--- a/_data/courses/GYM-007.yml
+++ b/_data/courses/GYM-007.yml
@@ -6,6 +6,8 @@ course_type: short
live: true
url: /courses/GYM/007/0/about
poster_art: /img/course-artwork/png/gym-007.png
+og_gen_data:
+ img_bg_color: d73158
topic: "Development"
short_description: "Learn some of the latest standards and thinking around coding HTML forms using the new HTML5 tags and attributes."
instructor: jkramer
diff --git a/_data/courses/GYM-008.yml b/_data/courses/GYM-008.yml
index d52ea5705..70124f284 100644
--- a/_data/courses/GYM-008.yml
+++ b/_data/courses/GYM-008.yml
@@ -8,6 +8,8 @@ retired_message:
1: "This course has been retired. Due to outdated content, we don’t offer a badge for this course, but you can still view the lessons."
url: /courses/GYM/008/0/about
poster_art: /img/course-artwork/png/gym-008.png
+og_gen_data:
+ img_bg_color: 5ca5a0
topic: "UX"
subtopics:
- label: "Prototyping"
diff --git a/_data/courses/GYM-009.yml b/_data/courses/GYM-009.yml
index 04b76adbd..fc4100594 100644
--- a/_data/courses/GYM-009.yml
+++ b/_data/courses/GYM-009.yml
@@ -6,6 +6,8 @@ course_type: short
live: true
url: /courses/GYM/009/0/about
poster_art: /img/course-artwork/png/gym-009.png
+og_gen_data:
+ img_bg_color: d73158
topic: "Development"
short_description: "This course will teach you how to create themes for Drupal 8. Specifically, you will learn how to install a local development environment for Drupal 8, and use the new TWIG templating engine to customize the structure and style of your theme."
instructor: ghodgkinson
diff --git a/_data/courses/GYM-011.yml b/_data/courses/GYM-011.yml
index 81ecf3ca6..1b2f07e8c 100644
--- a/_data/courses/GYM-011.yml
+++ b/_data/courses/GYM-011.yml
@@ -6,6 +6,8 @@ course_type: short
live: true
url: /courses/course-v1:GYM+011+0/about
poster_art: /img/course-artwork/png/gym-011.png
+og_gen_data:
+ img_bg_color: d73158
topic: "Development"
short_description: "In this course, you will get a familiarity with all aspects of the built-in developer tools within the Chrome browser. Understanding how to use these tools will speed up your development time and help you create bug-free, high-performing pages and web applications."
instructor: kpeters
diff --git a/_data/courses/GYM-012.yml b/_data/courses/GYM-012.yml
index 2439bd7fa..ad8162ce5 100644
--- a/_data/courses/GYM-012.yml
+++ b/_data/courses/GYM-012.yml
@@ -6,6 +6,8 @@ course_type: short
live: true
url: /courses/course-v1:GYM+012+0/about
poster_art: /img/course-artwork/png/gym-012.png
+og_gen_data:
+ img_bg_color: 764c9f
topic: "Development"
subtopics:
- label: "JavaScript"
diff --git a/_data/courses/GYM-013.yml b/_data/courses/GYM-013.yml
index bb2356f93..202465a75 100644
--- a/_data/courses/GYM-013.yml
+++ b/_data/courses/GYM-013.yml
@@ -6,6 +6,8 @@ course_type: short
live: true
url: /courses/course-v1:GYM+013+0/about
poster_art: /img/course-artwork/png/gym-013.png
+og_gen_data:
+ img_bg_color: 5ca5a0
topic: "Design"
short_description: "Learn how to create 3D generated imagery in Maya for use in Virtual Reality production."
instructor: groberts
diff --git a/_data/courses/GYM-014.yml b/_data/courses/GYM-014.yml
index bbd9666a5..1654e416d 100644
--- a/_data/courses/GYM-014.yml
+++ b/_data/courses/GYM-014.yml
@@ -6,6 +6,8 @@ course_type: short
live: true
url: /courses/course-v1:GYM+014+0/about
poster_art: /img/course-artwork/png/gym-014.png
+og_gen_data:
+ img_bg_color: 5ca5a0
topic: "Development"
subtopics:
- label: "Design Systems"
diff --git a/_data/courses/GYM-015.yml b/_data/courses/GYM-015.yml
index b10c32cb2..6cd6bf4da 100644
--- a/_data/courses/GYM-015.yml
+++ b/_data/courses/GYM-015.yml
@@ -6,6 +6,8 @@ course_type: short
live: true
url: /courses/course-v1:GYM+015+0/about
poster_art: /img/course-artwork/png/gym-015.png
+og_gen_data:
+ img_bg_color: 5ca5a0
topic: "UX"
subtopics:
- label: "Prototyping"
diff --git a/_data/courses/GYM-016.yml b/_data/courses/GYM-016.yml
index 8d216b497..ac6d1d51f 100644
--- a/_data/courses/GYM-016.yml
+++ b/_data/courses/GYM-016.yml
@@ -6,6 +6,8 @@ course_type: short
live: true
url: /courses/course-v1:GYM+016+0/about
poster_art: /img/course-artwork/png/gym-016.png
+og_gen_data:
+ img_bg_color: d73158
topic: "Development"
subtopics:
- label: "Accessibility"
@@ -22,4 +24,4 @@ audience:
lessons_duration: "1 hour"
completion_duration: "Up to 2 hours"
skill_level: "Intermediate"
----
\ No newline at end of file
+---
diff --git a/_data/courses/GYM-017.yml b/_data/courses/GYM-017.yml
index fb7b93dd7..7cb99fc28 100644
--- a/_data/courses/GYM-017.yml
+++ b/_data/courses/GYM-017.yml
@@ -6,6 +6,8 @@ course_type: short
live: true
url: /courses/course-v1:GYM+017+0/about
poster_art: /img/course-artwork/png/gym-017.png
+og_gen_data:
+ img_bg_color: 2c9959
topic: "Design"
subtopics:
- label: "Design Systems"
diff --git a/_data/courses/GYM-018.yml b/_data/courses/GYM-018.yml
index 3e72fa969..b2862472b 100644
--- a/_data/courses/GYM-018.yml
+++ b/_data/courses/GYM-018.yml
@@ -6,6 +6,8 @@ course_type: short
live: true
url: /courses/course-v1:GYM+018+0/about
poster_art: /img/course-artwork/png/gym-018.png
+og_gen_data:
+ img_bg_color: 5ca5a0
topic: "Design"
subtopics:
- label: "Design Systems"
diff --git a/_data/courses/GYM-019.yml b/_data/courses/GYM-019.yml
index 067b1a032..579f7ec18 100644
--- a/_data/courses/GYM-019.yml
+++ b/_data/courses/GYM-019.yml
@@ -6,6 +6,8 @@ course_type: short
live: true
url: /courses/course-v1:GYM+019+0/about
poster_art: /img/course-artwork/png/gym-019.png
+og_gen_data:
+ img_bg_color: d73158
topic: "Development"
subtopics:
- label: "Design Systems"
diff --git a/_data/courses/GYM-020.yml b/_data/courses/GYM-020.yml
index 5c096caeb..549ca3d34 100644
--- a/_data/courses/GYM-020.yml
+++ b/_data/courses/GYM-020.yml
@@ -6,6 +6,8 @@ course_type: short
live: true
url: /courses/course-v1:GYM+020+0/about
poster_art: /img/course-artwork/png/gym-020.png
+og_gen_data:
+ img_bg_color: 5ca5a0
topic: "Design"
subtopics:
- label: "Design Systems"
diff --git a/_data/courses/GYM-100.yml b/_data/courses/GYM-100.yml
index 43e7e3e85..16d060057 100644
--- a/_data/courses/GYM-100.yml
+++ b/_data/courses/GYM-100.yml
@@ -9,6 +9,8 @@ retired_message:
2: "This course has been retired. We recommend taking the course Modern Web Design instead. It’s a bit more advanced, but we think you’d get a lot out of it."
url: /courses/GYM/100/0/about
poster_art: /img/course-artwork/png/gym-100.png
+og_gen_data:
+ img_bg_color: d73158
topic: "Development"
short_description: "This course has been retired."
short_description_orig: "Learn HTML and CSS and become the Web Designer that Developers love. Professional design experience is a prerequisite, but no prior web or coding experience is necessary."
diff --git a/_data/courses/GYM-101.yml b/_data/courses/GYM-101.yml
index b8304dc10..f7eb67da4 100644
--- a/_data/courses/GYM-101.yml
+++ b/_data/courses/GYM-101.yml
@@ -8,6 +8,8 @@ retired_message:
1: "This course has been retired. Due to outdated content, we don’t offer a certificate for this course, but you can still view the lessons. We recommend taking the course Responsive Web Design Fundamentals (and earning a certificate) instead."
url: /courses/GYM/101/0/about
poster_art: /img/course-artwork/png/gym-101.png
+og_gen_data:
+ img_bg_color: d73158
topic: "Development"
short_description: "This course has been retired."
short_description_orig: "In this course, you’ll learn best practices for building responsive websites that adapt to different devices and user behaviors."
diff --git a/_data/courses/GYM-102.yml b/_data/courses/GYM-102.yml
index bf507063a..80eb3f324 100644
--- a/_data/courses/GYM-102.yml
+++ b/_data/courses/GYM-102.yml
@@ -6,6 +6,8 @@ course_type: full
live: true
url: /courses/GYM/102/0/about
poster_art: /img/course-artwork/png/gym-102.png
+og_gen_data:
+ img_bg_color: 764c9f
topic: "Development"
subtopics:
- label: "JavaScript"
diff --git a/_data/courses/GYM-103.yml b/_data/courses/GYM-103.yml
index c4eff024f..8119c612f 100644
--- a/_data/courses/GYM-103.yml
+++ b/_data/courses/GYM-103.yml
@@ -6,6 +6,8 @@ course_type: full
live: true
url: /courses/GYM/103/0/about
poster_art: /img/course-artwork/png/gym-103.png
+og_gen_data:
+ img_bg_color: 5ca5a0
topic: "UX"
short_description: "Learn how to apply user-centered design principles to improve your website and mobile app design. A must-take course for anyone working in design and development."
instructor: jwebb
diff --git a/_data/courses/GYM-104.yml b/_data/courses/GYM-104.yml
index 4d9f44319..fdfd3362f 100644
--- a/_data/courses/GYM-104.yml
+++ b/_data/courses/GYM-104.yml
@@ -6,6 +6,8 @@ course_type: full
live: true
url: /courses/GYM/104/0/about
poster_art: /img/course-artwork/png/gym-104.png
+og_gen_data:
+ img_bg_color: 764c9f
topic: "Development"
subtopics:
- label: "JavaScript"
diff --git a/_data/courses/GYM-105.yml b/_data/courses/GYM-105.yml
index 65d61e1e6..9787273ae 100644
--- a/_data/courses/GYM-105.yml
+++ b/_data/courses/GYM-105.yml
@@ -8,6 +8,8 @@ retired_message:
1: "This course has been retired."
url: /courses/GYM/105/0/about
poster_art: /img/course-artwork/png/gym-105.png
+og_gen_data:
+ img_bg_color: 2c9959
topic: "Career Skills"
short_description: "This course has been retired."
short_description_orig: "Learn how to write compelling content through meaningful audience research and find the right words to attract and engage users."
diff --git a/_data/courses/GYM-106.yml b/_data/courses/GYM-106.yml
index 6cff71fba..b8f4dd500 100644
--- a/_data/courses/GYM-106.yml
+++ b/_data/courses/GYM-106.yml
@@ -6,6 +6,8 @@ course_type: full
live: true
url: /courses/GYM/106/0/about
poster_art: /img/course-artwork/png/gym-106.png
+og_gen_data:
+ img_bg_color: 2c9959
topic: "Design"
short_description: "Learn the design and visual principles needed to create effective information graphics and data visualizations."
instructor: groberts
diff --git a/_data/courses/GYM-107.yml b/_data/courses/GYM-107.yml
index c612d001a..d57a67fd5 100644
--- a/_data/courses/GYM-107.yml
+++ b/_data/courses/GYM-107.yml
@@ -6,6 +6,8 @@ course_type: full
live: true
url: /courses/GYM/107/0/about
poster_art: /img/course-artwork/png/gym-107.png
+og_gen_data:
+ img_bg_color: d73158
topic: "Development"
short_description: "This course will prepare you to be a front-end developer by walking you through the process of building a simple, responsive website using HTML, CSS, and JavaScript."
instructor: agustafson
diff --git a/_data/courses/GYM-108.yml b/_data/courses/GYM-108.yml
index c8d4e12bd..c21eee255 100644
--- a/_data/courses/GYM-108.yml
+++ b/_data/courses/GYM-108.yml
@@ -6,6 +6,8 @@ course_type: full
live: true
url: /courses/course-v1:GYM+108+0/about
poster_art: /img/course-artwork/png/gym-108.png
+og_gen_data:
+ img_bg_color: 764c9f
topic: "Development"
subtopics:
- label: "JavaScript"
diff --git a/_data/courses/GYM-109.yml b/_data/courses/GYM-109.yml
index 2c6faf2a9..d6a251e40 100644
--- a/_data/courses/GYM-109.yml
+++ b/_data/courses/GYM-109.yml
@@ -6,6 +6,8 @@ course_type: full
live: true
url: /courses/course-v1:GYM+109+0/about
poster_art: /img/course-artwork/png/gym-109.png
+og_gen_data:
+ img_bg_color: d73158
topic: "Development"
short_description: "This is a hands-on, code-intensive course on how to build high-performance, responsive websites that look great across multiple screen sizes and devices."
instructor: jpamental
diff --git a/_data/courses/GYM-700.yml b/_data/courses/GYM-700.yml
deleted file mode 100644
index d39588f22..000000000
--- a/_data/courses/GYM-700.yml
+++ /dev/null
@@ -1,22 +0,0 @@
----
-course_ID: GYM-700
-title: "Portfolio Workshop"
-date: 2021-11-30T00:00:00-00:00
-course_type: workshop
-live: false
-url: /courses/course-v1:GYM+700+0/about
-poster_art: /img/course-artwork/png/gym-700.png
-topic: "Portfolio Workshop"
-short_description: "Portfolio Workshop"
-instructor: josborn
-skills:
- - label: "Populate me"
- - label: "Populate me"
- - label: "Populate me"
- - label: "Populate me"
-audience:
- - label: "Populate me"
- - label: "Populate me"
- - label: "Populate me"
- - label: "Populate me"
----
diff --git a/_data/take5/GYM-5001.yml b/_data/take5/GYM-5001.yml
index 756a8b6a1..96142492d 100644
--- a/_data/take5/GYM-5001.yml
+++ b/_data/take5/GYM-5001.yml
@@ -5,6 +5,11 @@ date: 2019-10-28T00:00:00-04:00
course_type: take5
url: /courses/take5/GYM-5001/
poster_art: /img/take5/posters/gym-5001.jpg
+og_gen_data:
+og_gen_data:
+ img_bg_color:
+ img_offset: 520
+ bg_color: d73158
live: true
instructor: "Jeremy Osborn"
instructor_bio: "Director of Learning at Aquent Gymnasium"
diff --git a/_data/take5/GYM-5002.yml b/_data/take5/GYM-5002.yml
index a74401640..b60ace536 100644
--- a/_data/take5/GYM-5002.yml
+++ b/_data/take5/GYM-5002.yml
@@ -5,6 +5,10 @@ date: 2019-10-29T00:00:00-04:00
course_type: take5
url: /courses/take5/GYM-5002/
poster_art: /img/take5/posters/gym-5002.jpg
+og_gen_data:
+ img_bg_color:
+ img_offset: 520
+ bg_color: d73158
live: true
instructor: "Jeremy Osborn"
instructor_bio: "Director of Learning at Aquent Gymnasium"
diff --git a/_data/take5/GYM-5003.yml b/_data/take5/GYM-5003.yml
index 446d448fe..e83e0b01c 100644
--- a/_data/take5/GYM-5003.yml
+++ b/_data/take5/GYM-5003.yml
@@ -5,6 +5,10 @@ date: 2019-10-30T00:00:00-04:00
course_type: take5
url: /courses/take5/GYM-5003/
poster_art: /img/take5/posters/gym-5003.jpg
+og_gen_data:
+ img_bg_color:
+ img_offset: 315
+ bg_color: d73158
live: true
instructor: "Jeremy Osborn"
instructor_bio: "Director of Learning at Aquent Gymnasium"
diff --git a/_data/take5/GYM-5004.yml b/_data/take5/GYM-5004.yml
index 582daf5ff..bb8f7356e 100644
--- a/_data/take5/GYM-5004.yml
+++ b/_data/take5/GYM-5004.yml
@@ -5,6 +5,10 @@ date: 2019-10-31T00:00:00-04:00
course_type: take5
url: /courses/take5/GYM-5004/
poster_art: /img/take5/posters/gym-5004.jpg
+og_gen_data:
+ img_bg_color:
+ img_offset: 385
+ bg_color: d73158
live: true
instructor: "Jeremy Osborn"
instructor_bio: "Director of Learning at Aquent Gymnasium"
diff --git a/_data/take5/GYM-5005.yml b/_data/take5/GYM-5005.yml
index ea621de77..945e6097d 100644
--- a/_data/take5/GYM-5005.yml
+++ b/_data/take5/GYM-5005.yml
@@ -5,6 +5,10 @@ date: 2019-11-01T00:00:00-04:00
course_type: take5
url: /courses/take5/GYM-5005/
poster_art: /img/take5/posters/gym-5005.jpg
+og_gen_data:
+ img_bg_color:
+ img_offset: 385
+ bg_color: d73158
live: true
instructor: "Jeremy Osborn"
instructor_bio: "Director of Learning at Aquent Gymnasium"
diff --git a/_data/take5/GYM-5006.yml b/_data/take5/GYM-5006.yml
index 98acdc2b0..fb38fcba7 100644
--- a/_data/take5/GYM-5006.yml
+++ b/_data/take5/GYM-5006.yml
@@ -5,6 +5,10 @@ date: 2019-11-18T00:00:00-04:00
course_type: take5
url: /courses/take5/GYM-5006/
poster_art: /img/take5/posters/gym-5006.jpg
+og_gen_data:
+ img_bg_color:
+ img_offset: 280
+ bg_color: 5ca5a0
live: true
instructor: "Heather O’Neill"
instructor_bio: "CEO of Pixels for Humans"
diff --git a/_data/take5/GYM-5007.yml b/_data/take5/GYM-5007.yml
index 5af4837b9..f1bbcf248 100644
--- a/_data/take5/GYM-5007.yml
+++ b/_data/take5/GYM-5007.yml
@@ -5,6 +5,10 @@ date: 2019-11-19T00:00:00-04:00
course_type: take5
url: /courses/take5/GYM-5007/
poster_art: /img/take5/posters/gym-5007.jpg
+og_gen_data:
+ img_bg_color:
+ img_offset: 100
+ bg_color: 5ca5a0
live: true
instructor: "Heather O’Neill"
instructor_bio: "CEO of Pixels for Humans"
diff --git a/_data/take5/GYM-5008.yml b/_data/take5/GYM-5008.yml
index 40928ee98..9b6cc5e1b 100644
--- a/_data/take5/GYM-5008.yml
+++ b/_data/take5/GYM-5008.yml
@@ -5,6 +5,10 @@ date: 2019-11-20T00:00:00-04:00
course_type: take5
url: /courses/take5/GYM-5008/
poster_art: /img/take5/posters/gym-5008.jpg
+og_gen_data:
+ img_bg_color:
+ img_offset: 335
+ bg_color: 5ca5a0
live: true
instructor: "Heather O’Neill"
instructor_bio: "CEO of Pixels for Humans"
diff --git a/_data/take5/GYM-5009.yml b/_data/take5/GYM-5009.yml
index 62ee1a5f1..995eeb132 100644
--- a/_data/take5/GYM-5009.yml
+++ b/_data/take5/GYM-5009.yml
@@ -5,6 +5,10 @@ date: 2019-11-21T00:00:00-04:00
course_type: take5
url: /courses/take5/GYM-5009/
poster_art: /img/take5/posters/gym-5009.jpg
+og_gen_data:
+ img_bg_color:
+ img_offset: 205
+ bg_color: 5ca5a0
live: true
instructor: "Heather O’Neill"
instructor_bio: "CEO of Pixels for Humans"
diff --git a/_data/take5/GYM-5010.yml b/_data/take5/GYM-5010.yml
index d4aa3643a..66303cb6d 100644
--- a/_data/take5/GYM-5010.yml
+++ b/_data/take5/GYM-5010.yml
@@ -5,6 +5,10 @@ date: 2019-11-22T00:00:00-04:00
course_type: take5
url: /courses/take5/GYM-5010/
poster_art: /img/take5/posters/gym-5010.jpg
+og_gen_data:
+ img_bg_color:
+ img_offset: 187
+ bg_color: 5ca5a0
live: true
instructor: "Jeremy Osborn"
instructor_bio: "Director of Learning at Aquent Gymnasium"
diff --git a/_data/take5/GYM-5011.yml b/_data/take5/GYM-5011.yml
index 621fffb2f..4edd1762a 100644
--- a/_data/take5/GYM-5011.yml
+++ b/_data/take5/GYM-5011.yml
@@ -5,6 +5,10 @@ date: 2019-11-04T00:00:00-04:00
course_type: take5
url: /courses/take5/GYM-5011/
poster_art: /img/take5/posters/gym-5011.jpg
+og_gen_data:
+ img_bg_color:
+ img_offset:
+ bg_color: 5ca5a0
live: true
instructor: "Jeremy Osborn"
instructor_bio: "Director of Learning at Aquent Gymnasium"
diff --git a/_data/take5/GYM-5012.yml b/_data/take5/GYM-5012.yml
index a0c985a7e..c6a466d78 100644
--- a/_data/take5/GYM-5012.yml
+++ b/_data/take5/GYM-5012.yml
@@ -5,6 +5,10 @@ date: 2019-11-05T00:00:00-04:00
course_type: take5
url: /courses/take5/GYM-5012/
poster_art: /img/take5/posters/gym-5012.jpg
+og_gen_data:
+ img_bg_color:
+ img_offset: 685
+ bg_color: d73158
live: true
instructor: "Jeremy Osborn"
instructor_bio: "Director of Learning at Aquent Gymnasium"
diff --git a/_data/take5/GYM-5013.yml b/_data/take5/GYM-5013.yml
index 96671df98..bd795eeae 100644
--- a/_data/take5/GYM-5013.yml
+++ b/_data/take5/GYM-5013.yml
@@ -5,6 +5,10 @@ date: 2019-11-06T00:00:00-04:00
course_type: take5
url: /courses/take5/GYM-5013/
poster_art: /img/take5/posters/gym-5013.jpg
+og_gen_data:
+ img_bg_color:
+ img_offset: 510
+ bg_color: 5ca5a0
live: true
instructor: "Jeremy Osborn"
instructor_bio: "Director of Learning at Aquent Gymnasium"
diff --git a/_data/take5/GYM-5014.yml b/_data/take5/GYM-5014.yml
index 1490eee5f..32d25d364 100644
--- a/_data/take5/GYM-5014.yml
+++ b/_data/take5/GYM-5014.yml
@@ -5,6 +5,10 @@ date: 2019-11-07T00:00:00-04:00
course_type: take5
url: /courses/take5/GYM-5014/
poster_art: /img/take5/posters/gym-5014.jpg
+og_gen_data:
+ img_bg_color:
+ img_offset: 355
+ bg_color: 5ca5a0
live: true
instructor: "Jeremy Osborn"
instructor_bio: "Director of Learning at Aquent Gymnasium"
diff --git a/_data/take5/GYM-5015.yml b/_data/take5/GYM-5015.yml
index dd97f9c7a..852dcbfcc 100644
--- a/_data/take5/GYM-5015.yml
+++ b/_data/take5/GYM-5015.yml
@@ -5,6 +5,10 @@ date: 2019-11-08T00:00:00-04:00
course_type: take5
url: /courses/take5/GYM-5015/
poster_art: /img/take5/posters/gym-5015.jpg
+og_gen_data:
+ img_bg_color:
+ img_offset: 795
+ bg_color: 5ca5a0
live: true
instructor: "Jeremy Osborn"
instructor_bio: "Director of Learning at Aquent Gymnasium"
diff --git a/_data/take5/GYM-5016.yml b/_data/take5/GYM-5016.yml
index fe51078d4..21abbc26f 100644
--- a/_data/take5/GYM-5016.yml
+++ b/_data/take5/GYM-5016.yml
@@ -5,6 +5,10 @@ date: 2019-11-11T00:00:00-04:00
course_type: take5
url: /courses/take5/GYM-5016/
poster_art: /img/take5/posters/gym-5016.jpg
+og_gen_data:
+ img_bg_color:
+ img_offset: 70
+ bg_color: 2c9959
live: true
instructor: "Lee Andrese"
instructor_bio: "Vice President of Learning and Development at Onward Search"
diff --git a/_data/take5/GYM-5017.yml b/_data/take5/GYM-5017.yml
index 63248864d..e575b5e04 100644
--- a/_data/take5/GYM-5017.yml
+++ b/_data/take5/GYM-5017.yml
@@ -5,6 +5,10 @@ date: 2019-11-12T00:00:00-04:00
course_type: take5
url: /courses/take5/GYM-5017/
poster_art: /img/take5/posters/gym-5017.jpg
+og_gen_data:
+ img_bg_color:
+ img_offset: 175
+ bg_color: 2c9959
live: true
instructor: "Anne Ditmeyer"
instructor_bio: "Creative Coach"
diff --git a/_data/take5/GYM-5018.yml b/_data/take5/GYM-5018.yml
index 5f7564542..fd67ea446 100644
--- a/_data/take5/GYM-5018.yml
+++ b/_data/take5/GYM-5018.yml
@@ -5,6 +5,10 @@ date: 2019-11-13T00:00:00-04:00
course_type: take5
url: /courses/take5/GYM-5018/
poster_art: /img/take5/posters/gym-5018.jpg
+og_gen_data:
+ img_bg_color:
+ img_offset: 95
+ bg_color: 2c9959
live: true
instructor: "Lee Andrese"
instructor_bio: "Vice President of Learning and Development at Onward Search"
diff --git a/_data/take5/GYM-5019.yml b/_data/take5/GYM-5019.yml
index f11cb43b5..839f11de9 100644
--- a/_data/take5/GYM-5019.yml
+++ b/_data/take5/GYM-5019.yml
@@ -5,6 +5,10 @@ date: 2019-11-14T00:00:00-04:00
course_type: take5
url: /courses/take5/GYM-5019/
poster_art: /img/take5/posters/gym-5019.jpg
+og_gen_data:
+ img_bg_color:
+ img_offset: 390
+ bg_color: 2c9959
live: true
instructor: "Anne Ditmeyer"
instructor_bio: "Creative Coach"
diff --git a/_data/take5/GYM-5020.yml b/_data/take5/GYM-5020.yml
index e9b5c6913..1cc214f85 100644
--- a/_data/take5/GYM-5020.yml
+++ b/_data/take5/GYM-5020.yml
@@ -5,6 +5,10 @@ date: 2019-11-15T00:00:00-04:00
course_type: take5
url: /courses/take5/GYM-5020/
poster_art: /img/take5/posters/gym-5020.jpg
+og_gen_data:
+ img_bg_color:
+ img_offset: 365
+ bg_color: 2c9959
live: true
instructor: "Lee Andrese"
instructor_bio: "Vice President of Learning and Development at Onward Search"
diff --git a/_data/take5/GYM-5021.yml b/_data/take5/GYM-5021.yml
index 8b5fcf89c..87b16571a 100644
--- a/_data/take5/GYM-5021.yml
+++ b/_data/take5/GYM-5021.yml
@@ -5,6 +5,10 @@ date: 2019-12-03T00:00:00-04:00
course_type: take5
url: /courses/take5/GYM-5021/
poster_art: /img/take5/posters/gym-5021.jpg
+og_gen_data:
+ img_bg_color:
+ img_offset: 50
+ bg_color: d73158
live: true
instructor: "Jeremy Osborn"
instructor_bio: "Director of Learning at Aquent Gymnasium"
diff --git a/_data/take5/GYM-5022.yml b/_data/take5/GYM-5022.yml
index d6ee871df..2398e5f38 100644
--- a/_data/take5/GYM-5022.yml
+++ b/_data/take5/GYM-5022.yml
@@ -5,6 +5,10 @@ date: 2019-12-10T00:00:00-04:00
course_type: take5
url: /courses/take5/GYM-5022/
poster_art: /img/take5/posters/gym-5022.jpg
+og_gen_data:
+ img_bg_color:
+ img_offset:
+ bg_color: d73158
live: true
instructor: "Jeremy Osborn"
instructor_bio: "Director of Learning at Aquent Gymnasium"
diff --git a/_data/take5/GYM-5023.yml b/_data/take5/GYM-5023.yml
index 027ea92d1..5dbd866e6 100644
--- a/_data/take5/GYM-5023.yml
+++ b/_data/take5/GYM-5023.yml
@@ -5,6 +5,10 @@ date: 2020-01-13T00:00:00-04:00
course_type: take5
url: /courses/take5/GYM-5023/
poster_art: /img/take5/posters/gym-5023.jpg
+og_gen_data:
+ img_bg_color:
+ img_offset:
+ bg_color: d73158
live: true
instructor: "Jeremy Osborn"
instructor_bio: "Director of Learning at Aquent Gymnasium"
diff --git a/_data/take5/GYM-5024.yml b/_data/take5/GYM-5024.yml
index 129a3182a..98e6bbe63 100644
--- a/_data/take5/GYM-5024.yml
+++ b/_data/take5/GYM-5024.yml
@@ -5,6 +5,10 @@ date: 2020-01-20T00:00:00-04:00
course_type: take5
url: /courses/take5/GYM-5024/
poster_art: /img/take5/posters/gym-5024.jpg
+og_gen_data:
+ img_bg_color:
+ img_offset:
+ bg_color: d73158
live: true
instructor: "Jeremy Osborn"
instructor_bio: "Director of Learning at Aquent Gymnasium"
diff --git a/_data/take5/GYM-5025.yml b/_data/take5/GYM-5025.yml
index bbb992acb..fa123554a 100644
--- a/_data/take5/GYM-5025.yml
+++ b/_data/take5/GYM-5025.yml
@@ -5,6 +5,10 @@ date: 2020-01-27T00:00:00-04:00
course_type: take5
url: /courses/take5/GYM-5025/
poster_art: /img/take5/posters/gym-5025.jpg
+og_gen_data:
+ img_bg_color:
+ img_offset:
+ bg_color: d73158
live: true
instructor: "Jeremy Osborn"
instructor_bio: "Director of Learning at Aquent Gymnasium"
diff --git a/_data/take5/GYM-5026.yml b/_data/take5/GYM-5026.yml
index 86bd45d61..6416a1c4e 100644
--- a/_data/take5/GYM-5026.yml
+++ b/_data/take5/GYM-5026.yml
@@ -5,6 +5,10 @@ date: 2020-02-03T00:00:00-04:00
course_type: take5
url: /courses/take5/GYM-5026/
poster_art: /img/take5/posters/gym-5026.jpg
+og_gen_data:
+ img_bg_color:
+ img_offset:
+ bg_color: d73158
live: true
instructor: "Mike Bifulco"
instructor_bio: "Developer Advocate at Stripe"
diff --git a/_data/take5/GYM-5027.yml b/_data/take5/GYM-5027.yml
index 7d0537f42..5bc4157fc 100644
--- a/_data/take5/GYM-5027.yml
+++ b/_data/take5/GYM-5027.yml
@@ -5,6 +5,10 @@ date: 2020-02-10T00:00:00-04:00
course_type: take5
url: /courses/take5/GYM-5027/
poster_art: /img/take5/posters/gym-5027.jpg
+og_gen_data:
+ img_bg_color:
+ img_offset:
+ bg_color: 2c9959
live: true
instructor: "Jeremy Osborn"
instructor_bio: "Director of Learning at Aquent Gymnasium"
diff --git a/_data/take5/GYM-5028.yml b/_data/take5/GYM-5028.yml
index 3483e67f0..b78a87a65 100644
--- a/_data/take5/GYM-5028.yml
+++ b/_data/take5/GYM-5028.yml
@@ -5,6 +5,10 @@ date: 2020-02-17T00:00:00-04:00
course_type: take5
url: /courses/take5/GYM-5028/
poster_art: /img/take5/posters/gym-5028.jpg
+og_gen_data:
+ img_bg_color:
+ img_offset:
+ bg_color: d73158
live: true
instructor: "Jeremy Osborn"
instructor_bio: "Director of Learning at Aquent Gymnasium"
diff --git a/_data/take5/GYM-5029.yml b/_data/take5/GYM-5029.yml
index 1e6290071..0bcd31c37 100644
--- a/_data/take5/GYM-5029.yml
+++ b/_data/take5/GYM-5029.yml
@@ -5,6 +5,10 @@ date: 2020-02-24T00:00:00-04:00
course_type: take5
url: /courses/take5/GYM-5029/
poster_art: /img/take5/posters/gym-5029.jpg
+og_gen_data:
+ img_bg_color:
+ img_offset:
+ bg_color: 5ca5a0
live: true
instructor: "Jeremy Osborn"
instructor_bio: "Director of Learning at Aquent Gymnasium"
diff --git a/_data/take5/GYM-5030.yml b/_data/take5/GYM-5030.yml
index 76d68f3e1..c43dd2c81 100644
--- a/_data/take5/GYM-5030.yml
+++ b/_data/take5/GYM-5030.yml
@@ -5,6 +5,10 @@ date: 2020-03-03T00:00:00-04:00
course_type: take5
url: /courses/take5/GYM-5030/
poster_art: /img/take5/posters/gym-5030.jpg
+og_gen_data:
+ img_bg_color:
+ img_offset:
+ bg_color: 5ca5a0
live: true
instructor: "Jeremy Osborn"
instructor_bio: "Director of Learning at Aquent Gymnasium"
diff --git a/_data/take5/GYM-5031.yml b/_data/take5/GYM-5031.yml
index b542eef10..c1a4c255c 100644
--- a/_data/take5/GYM-5031.yml
+++ b/_data/take5/GYM-5031.yml
@@ -5,6 +5,10 @@ date: 2020-03-31T00:00:00-04:00
course_type: take5
url: /courses/take5/GYM-5031/
poster_art: /img/take5/posters/gym-5031.jpg
+og_gen_data:
+ img_bg_color:
+ img_offset:
+ bg_color: d73158
live: true
instructor: "Jeremy Osborn"
instructor_bio: "Director of Learning at Aquent Gymnasium"
diff --git a/_data/take5/GYM-5032.yml b/_data/take5/GYM-5032.yml
index 2bda8bcd9..428932554 100644
--- a/_data/take5/GYM-5032.yml
+++ b/_data/take5/GYM-5032.yml
@@ -5,6 +5,10 @@ date: 2020-06-22T00:00:00-04:00
course_type: take5
url: /courses/take5/GYM-5032/
poster_art: /img/take5/posters/gym-5032.jpg
+og_gen_data:
+ img_bg_color:
+ img_offset:
+ bg_color: d73158
live: true
instructor: "Ethan Marcotte"
instructor_bio: "Partner at Autogram"
diff --git a/_data/take5/GYM-5033.yml b/_data/take5/GYM-5033.yml
index f3580f17c..540058af7 100644
--- a/_data/take5/GYM-5033.yml
+++ b/_data/take5/GYM-5033.yml
@@ -5,6 +5,10 @@ date: 2020-06-23T00:00:00-04:00
course_type: take5
url: /courses/take5/GYM-5033/
poster_art: /img/take5/posters/gym-5033.jpg
+og_gen_data:
+ img_bg_color:
+ img_offset:
+ bg_color: d73158
live: true
instructor: "Ethan Marcotte"
instructor_bio: "Partner at Autogram"
diff --git a/_data/take5/GYM-5034.yml b/_data/take5/GYM-5034.yml
index 167e6692a..3681fface 100644
--- a/_data/take5/GYM-5034.yml
+++ b/_data/take5/GYM-5034.yml
@@ -5,6 +5,10 @@ date: 2020-06-24T00:00:00-04:00
course_type: take5
url: /courses/take5/GYM-5034/
poster_art: /img/take5/posters/gym-5034.jpg
+og_gen_data:
+ img_bg_color:
+ img_offset:
+ bg_color: d73158
live: true
instructor: "Ethan Marcotte"
instructor_bio: "Partner at Autogram"
diff --git a/_data/take5/GYM-5035.yml b/_data/take5/GYM-5035.yml
index 1aa5f58ab..6265ce7aa 100644
--- a/_data/take5/GYM-5035.yml
+++ b/_data/take5/GYM-5035.yml
@@ -5,6 +5,10 @@ date: 2020-06-25T00:00:00-04:00
course_type: take5
url: /courses/take5/GYM-5035/
poster_art: /img/take5/posters/gym-5035.jpg
+og_gen_data:
+ img_bg_color:
+ img_offset:
+ bg_color: d73158
live: true
instructor: "Ethan Marcotte"
instructor_bio: "Partner at Autogram"
diff --git a/_data/take5/GYM-5036.yml b/_data/take5/GYM-5036.yml
index f6654d1ea..d78c83249 100644
--- a/_data/take5/GYM-5036.yml
+++ b/_data/take5/GYM-5036.yml
@@ -5,6 +5,10 @@ date: 2020-06-26T00:00:00-04:00
course_type: take5
url: /courses/take5/GYM-5036/
poster_art: /img/take5/posters/gym-5036.jpg
+og_gen_data:
+ img_bg_color:
+ img_offset:
+ bg_color: d73158
live: true
instructor: "Ethan Marcotte"
instructor_bio: "Partner at Autogram"
diff --git a/_data/take5/GYM-5037.yml b/_data/take5/GYM-5037.yml
index 918c545ad..516ab39d3 100644
--- a/_data/take5/GYM-5037.yml
+++ b/_data/take5/GYM-5037.yml
@@ -5,6 +5,10 @@ date: 2020-09-02T00:00:00-04:00
course_type: take5
url: /courses/take5/GYM-5037/
poster_art: /img/take5/posters/gym-5037.jpg
+og_gen_data:
+ img_bg_color:
+ img_offset:
+ bg_color: d73158
live: true
instructor: "Clarissa Peterson"
instructor_bio: "Strategy Director at Forum One"
diff --git a/_data/take5/GYM-5038.yml b/_data/take5/GYM-5038.yml
index 3a961bcbc..c4305c94a 100644
--- a/_data/take5/GYM-5038.yml
+++ b/_data/take5/GYM-5038.yml
@@ -5,6 +5,10 @@ date: 2020-09-15T00:00:00-04:00
course_type: take5
url: /courses/take5/GYM-5038/
poster_art: /img/take5/posters/gym-5038.jpg
+og_gen_data:
+ img_bg_color:
+ img_offset:
+ bg_color: d73158
live: true
instructor: "Clarissa Peterson"
instructor_bio: "Strategy Director at Forum One"
diff --git a/_data/take5/GYM-5039.yml b/_data/take5/GYM-5039.yml
index 535fdcc42..807850b3d 100644
--- a/_data/take5/GYM-5039.yml
+++ b/_data/take5/GYM-5039.yml
@@ -5,6 +5,10 @@ date: 2020-09-22T00:00:00-04:00
course_type: take5
url: /courses/take5/GYM-5039/
poster_art: /img/take5/posters/gym-5039.jpg
+og_gen_data:
+ img_bg_color:
+ img_offset:
+ bg_color: d73158
live: true
instructor: "Clarissa Peterson"
instructor_bio: "Strategy Director at Forum One"
diff --git a/_data/take5/GYM-5040.yml b/_data/take5/GYM-5040.yml
index 5787436c2..297142c15 100644
--- a/_data/take5/GYM-5040.yml
+++ b/_data/take5/GYM-5040.yml
@@ -5,6 +5,10 @@ date: 2020-09-29T00:00:00-04:00
course_type: take5
url: /courses/take5/GYM-5040/
poster_art: /img/take5/posters/gym-5040.jpg
+og_gen_data:
+ img_bg_color:
+ img_offset:
+ bg_color: d73158
live: true
instructor: "Clarissa Peterson"
instructor_bio: "Strategy Director at Forum One"
diff --git a/_data/take5/GYM-5041.yml b/_data/take5/GYM-5041.yml
index d603fb325..3338a3672 100644
--- a/_data/take5/GYM-5041.yml
+++ b/_data/take5/GYM-5041.yml
@@ -5,6 +5,10 @@ date: 2020-10-06T00:00:00-04:00
course_type: take5
url: /courses/take5/GYM-5041/
poster_art: /img/take5/posters/gym-5041.jpg
+og_gen_data:
+ img_bg_color:
+ img_offset:
+ bg_color: d73158
live: true
instructor: "Clarissa Peterson"
instructor_bio: "Strategy Director at Forum One"
diff --git a/_data/take5/GYM-5042.yml b/_data/take5/GYM-5042.yml
index dc3da0f8a..157771209 100644
--- a/_data/take5/GYM-5042.yml
+++ b/_data/take5/GYM-5042.yml
@@ -5,6 +5,10 @@ date: 2020-10-13T00:00:00-04:00
course_type: take5
url: /courses/take5/GYM-5042/
poster_art: /img/take5/posters/gym-5042.jpg
+og_gen_data:
+ img_bg_color:
+ img_offset:
+ bg_color: d73158
live: true
instructor: "Clarissa Peterson"
instructor_bio: "Strategy Director at Forum One"
diff --git a/_data/take5/GYM-5043.yml b/_data/take5/GYM-5043.yml
index b351a83c0..96927102f 100644
--- a/_data/take5/GYM-5043.yml
+++ b/_data/take5/GYM-5043.yml
@@ -5,6 +5,10 @@ date: 2020-10-20T00:00:00-04:00
course_type: take5
url: /courses/take5/GYM-5043/
poster_art: /img/take5/posters/gym-5043.jpg
+og_gen_data:
+ img_bg_color:
+ img_offset:
+ bg_color: d73158
live: true
instructor: "Clarissa Peterson"
instructor_bio: "Strategy Director at Forum One"
diff --git a/_data/take5/GYM-5044.yml b/_data/take5/GYM-5044.yml
index 98f771427..c4242c7b4 100644
--- a/_data/take5/GYM-5044.yml
+++ b/_data/take5/GYM-5044.yml
@@ -5,6 +5,10 @@ date: 2020-10-27T00:00:00-04:00
course_type: take5
url: /courses/take5/GYM-5044/
poster_art: /img/take5/posters/gym-5044.jpg
+og_gen_data:
+ img_bg_color:
+ img_offset:
+ bg_color: d73158
live: true
instructor: "Clarissa Peterson"
instructor_bio: "Strategy Director at Forum One"
diff --git a/_data/take5/GYM-5045.yml b/_data/take5/GYM-5045.yml
index a191b480c..282330a03 100644
--- a/_data/take5/GYM-5045.yml
+++ b/_data/take5/GYM-5045.yml
@@ -5,6 +5,10 @@ date: 2020-11-03T00:00:00-04:00
course_type: take5
url: /courses/take5/GYM-5045/
poster_art: /img/take5/posters/gym-5045.jpg
+og_gen_data:
+ img_bg_color:
+ img_offset:
+ bg_color: d73158
live: true
instructor: "Clarissa Peterson"
instructor_bio: "Strategy Director at Forum One"
diff --git a/_data/take5/GYM-5046.yml b/_data/take5/GYM-5046.yml
index 997b2f052..e87fb1d88 100644
--- a/_data/take5/GYM-5046.yml
+++ b/_data/take5/GYM-5046.yml
@@ -5,6 +5,10 @@ date: 2020-11-10T00:00:00-04:00
course_type: take5
url: /courses/take5/GYM-5046/
poster_art: /img/take5/posters/gym-5046.jpg
+og_gen_data:
+ img_bg_color:
+ img_offset:
+ bg_color: d73158
live: true
instructor: "Clarissa Peterson"
instructor_bio: "Strategy Director at Forum One"
diff --git a/_data/take5/GYM-5047.yml b/_data/take5/GYM-5047.yml
index d428e3195..bb032338d 100644
--- a/_data/take5/GYM-5047.yml
+++ b/_data/take5/GYM-5047.yml
@@ -5,6 +5,10 @@ date: 2020-11-17T00:00:00-04:00
course_type: take5
url: /courses/take5/GYM-5047/
poster_art: /img/take5/posters/gym-5047.jpg
+og_gen_data:
+ img_bg_color:
+ img_offset:
+ bg_color: d73158
live: true
instructor: "Clarissa Peterson"
instructor_bio: "Strategy Director at Forum One"
diff --git a/_data/take5/GYM-5048.yml b/_data/take5/GYM-5048.yml
index 27a3746ac..6a43e9346 100644
--- a/_data/take5/GYM-5048.yml
+++ b/_data/take5/GYM-5048.yml
@@ -5,6 +5,10 @@ date: 2020-11-24T00:00:00-04:00
course_type: take5
url: /courses/take5/GYM-5048/
poster_art: /img/take5/posters/gym-5048.jpg
+og_gen_data:
+ img_bg_color:
+ img_offset:
+ bg_color: d73158
live: true
instructor: "Clarissa Peterson"
instructor_bio: "Strategy Director at Forum One"
diff --git a/_data/take5/GYM-5049.yml b/_data/take5/GYM-5049.yml
index fb07239cb..d10092ece 100644
--- a/_data/take5/GYM-5049.yml
+++ b/_data/take5/GYM-5049.yml
@@ -5,6 +5,10 @@ date: 2021-06-01T00:00:00-04:00
course_type: take5
url: /courses/take5/GYM-5049/
poster_art: /img/take5/posters/gym-5049.jpg
+og_gen_data:
+ img_bg_color:
+ img_offset:
+ bg_color: 5ca5a0
live: true
instructor: "Jeremy Osborn"
instructor_bio: "Director of Learning at Aquent Gymnasium"
diff --git a/_data/take5/GYM-5050.yml b/_data/take5/GYM-5050.yml
index 819379637..38b3b57a6 100644
--- a/_data/take5/GYM-5050.yml
+++ b/_data/take5/GYM-5050.yml
@@ -5,6 +5,10 @@ date: 2021-06-15T00:00:00-04:00
course_type: take5
url: /courses/take5/GYM-5050/
poster_art: /img/take5/posters/gym-5050.jpg
+og_gen_data:
+ img_bg_color:
+ img_offset:
+ bg_color: 5ca5a0
live: true
instructor: "Jeremy Osborn"
instructor_bio: "Director of Learning at Aquent Gymnasium"
diff --git a/_data/take5/GYM-5051.yml b/_data/take5/GYM-5051.yml
index 4a9464d2e..4796d9dcb 100644
--- a/_data/take5/GYM-5051.yml
+++ b/_data/take5/GYM-5051.yml
@@ -5,6 +5,10 @@ date: 2021-06-29T00:00:00-04:00
course_type: take5
url: /courses/take5/GYM-5051/
poster_art: /img/take5/posters/gym-5051.jpg
+og_gen_data:
+ img_bg_color:
+ img_offset:
+ bg_color: 5ca5a0
live: true
instructor: "Jeremy Osborn"
instructor_bio: "Director of Learning at Aquent Gymnasium"
diff --git a/_data/take5/GYM-5052.yml b/_data/take5/GYM-5052.yml
index ca207995e..e2668b70b 100644
--- a/_data/take5/GYM-5052.yml
+++ b/_data/take5/GYM-5052.yml
@@ -5,6 +5,10 @@ date: 2022-08-22T00:00:00-04:00
course_type: take5
url: /courses/take5/GYM-5052/
poster_art: /img/take5/posters/gym-5052.jpg
+og_gen_data:
+ img_bg_color:
+ img_offset:
+ bg_color: 2c9959
live: false
instructor: "Jeremy Osborn"
instructor_bio: "Director of Learning at Aquent Gymnasium"
diff --git a/_data/take5/GYM-5053.yml b/_data/take5/GYM-5053.yml
index ef2529637..7839b97d5 100644
--- a/_data/take5/GYM-5053.yml
+++ b/_data/take5/GYM-5053.yml
@@ -5,6 +5,10 @@ date: 2022-08-24T00:00:00-04:00
course_type: take5
url: /courses/take5/GYM-5053/
poster_art: /img/take5/posters/gym-5053.jpg
+og_gen_data:
+ img_bg_color:
+ img_offset:
+ bg_color: 2c9959
live: false
instructor: "Jeremy Osborn"
instructor_bio: "Director of Learning at Aquent Gymnasium"
diff --git a/_data/take5/GYM-5056.yml b/_data/take5/GYM-5056.yml
index c0abd7dd5..fde9c3724 100644
--- a/_data/take5/GYM-5056.yml
+++ b/_data/take5/GYM-5056.yml
@@ -4,6 +4,10 @@ title: "Taking Your Portfolio Case Studies to the Next Level"
date: 2022-12-05T00:00:00-04:00
course_type: take5
url: /courses/take5/GYM-5056/
+og_gen_data:
+ img_bg_color:
+ img_offset:
+ bg_color: 2c9959
poster_art: /img/take5/posters/gym-5056.jpg
live: false
instructor: "Jeremy Osborn"
diff --git a/_data/workshops/GYM-700.yml b/_data/workshops/GYM-700.yml
index 8b6c04b8a..0fa14eb29 100644
--- a/_data/workshops/GYM-700.yml
+++ b/_data/workshops/GYM-700.yml
@@ -6,6 +6,7 @@ datetime: "December 5–9, Monday–Friday, 4–5 PM EST"
course_type: workshop
url: /courses/GYM/700/0/about
poster_art: /img/course-artwork/png/gym-700.png
+img_bg_color: 2c9959
live: false
topic: "Career Skills"
short_description: "This workshop will teach students how to create an outstanding portfolio using content strategy and storytelling skills. Students will leave with actionable next steps to improve their portfolio."
diff --git a/_dev_config.yml b/_dev_config.yml
index 57f617edf..c6a72740f 100644
--- a/_dev_config.yml
+++ b/_dev_config.yml
@@ -16,6 +16,7 @@ exclude:
- 'netlify.toml'
- '.jekyll-cache'
- 'local'
+ - '.netlify/functions/README.md'
include:
- '_redirects'
@@ -52,14 +53,14 @@ jekyll_get_json:
json: 'https://stag-assets.aquent.com/apps/gym/jobs.json?limit=1500'
- data: markets
json: 'https://stag-assets.aquent.com/apps/gym/markets.json'
- - data: privacy-index
- json: 'https://assets.aquent.com/api/content/render/false/type/json/query/+contentType:webPageContent%20+webPageContent.title:*privacy-policy-index*%20+languageId:1%20+deleted:false%20+working:true/'
- - data: privacy-shield-notice
- json: 'https://assets.aquent.com/api/content/render/false/type/json/query/+contentType:webPageContent%20+webPageContent.title:*privacy-policy-privacy-shield-notice*%20+languageId:1%20+deleted:false%20+working:true/'
- - data: privacy-ccpa
- json: 'https://assets.aquent.com/api/content/render/false/type/json/query/+contentType:webPageContent%20+webPageContent.title:*privacy-policy-ccpa-policy*%20+languageId:1%20+deleted:false%20+working:true/'
- - data: privacy-data-category
- json: 'https://assets.aquent.com/api/content/render/false/type/json/query/+contentType:webPageContent%20+webPageContent.title:*privacy-policy-data-category*%20+languageId:1%20+deleted:false%20+working:true/'
- - data: privacy-eu-rights
- json: 'https://assets.aquent.com/api/content/render/false/type/json/query/+contentType:webPageContent%20+webPageContent.title:*privacy-policy-european-rights*%20+languageId:1%20+deleted:false%20+working:true/'
+ # - data: privacy-index
+ # json: 'https://assets.aquent.com/api/content/render/false/type/json/query/+contentType:webPageContent%20+webPageContent.title:*privacy-policy-index*%20+languageId:1%20+deleted:false%20+working:true/'
+ # - data: privacy-shield-notice
+ # json: 'https://assets.aquent.com/api/content/render/false/type/json/query/+contentType:webPageContent%20+webPageContent.title:*privacy-policy-privacy-shield-notice*%20+languageId:1%20+deleted:false%20+working:true/'
+ # - data: privacy-ccpa
+ # json: 'https://assets.aquent.com/api/content/render/false/type/json/query/+contentType:webPageContent%20+webPageContent.title:*privacy-policy-ccpa-policy*%20+languageId:1%20+deleted:false%20+working:true/'
+ # - data: privacy-data-category
+ # json: 'https://assets.aquent.com/api/content/render/false/type/json/query/+contentType:webPageContent%20+webPageContent.title:*privacy-policy-data-category*%20+languageId:1%20+deleted:false%20+working:true/'
+ # - data: privacy-eu-rights
+ # json: 'https://assets.aquent.com/api/content/render/false/type/json/query/+contentType:webPageContent%20+webPageContent.title:*privacy-policy-european-rights*%20+languageId:1%20+deleted:false%20+working:true/'
diff --git a/_includes/partials/meta/logic-courses.html b/_includes/partials/meta/logic-courses.html
index 523e9cf73..d9cbffc28 100644
--- a/_includes/partials/meta/logic-courses.html
+++ b/_includes/partials/meta/logic-courses.html
@@ -7,3 +7,4 @@
{%- assign og_title = course.title -%}
{%- assign page_title = course.title | append: " | Gymnasium" -%}
{%- assign og_art = course.course_ID | downcase | append: "-social.png" | prepend: "/img/social/courses/" -%}
+{%- assign data_topic = course.topic -%}
diff --git a/_includes/partials/meta/logic-take5.html b/_includes/partials/meta/logic-take5.html
index 793f87867..59b898f47 100644
--- a/_includes/partials/meta/logic-take5.html
+++ b/_includes/partials/meta/logic-take5.html
@@ -8,3 +8,4 @@
{%- assign page_title = course.title | append: " | Gymnasium" -%}
{%- assign og_art = course.course_ID | downcase | append: "-og.png" | prepend: "/img/take5/og/" -%}
{%- assign og_img_alt = course.title | prepend: "Video poster for tutorial titled " -%}
+{%- assign data_topic = course.topic -%}
diff --git a/_local_config.yml b/_local_config.yml
index 719e2a238..3633d38f6 100644
--- a/_local_config.yml
+++ b/_local_config.yml
@@ -15,6 +15,7 @@ exclude:
- 'README.md'
- 'netlify.toml'
- '.jekyll-cache'
+ - '.netlify/functions/README.md'
include:
- '_redirects'
diff --git a/_production_config.yml b/_production_config.yml
index a7e31aa7e..b9064b8ac 100644
--- a/_production_config.yml
+++ b/_production_config.yml
@@ -15,7 +15,8 @@ exclude:
- 'README.md'
- 'netlify.toml'
- '.jekyll-cache'
- - 'local'
+ - 'local'
+ - '.netlify/functions/README.md'
include:
- '_redirects'
@@ -57,14 +58,14 @@ jekyll_get_json:
json: 'https://assets.aquent.com/apps/gym/jobs.json?limit=1500'
- data: markets
json: 'https://assets.aquent.com/apps/gym/markets.json'
- - data: privacy-index
- json: 'https://assets.aquent.com/api/content/render/false/type/json/query/+contentType:webPageContent%20+webPageContent.title:*privacy-policy-index*%20+languageId:1%20+deleted:false%20+working:true/'
- - data: privacy-shield-notice
- json: 'https://assets.aquent.com/api/content/render/false/type/json/query/+contentType:webPageContent%20+webPageContent.title:*privacy-policy-privacy-shield-notice*%20+languageId:1%20+deleted:false%20+working:true/'
- - data: privacy-ccpa
- json: 'https://assets.aquent.com/api/content/render/false/type/json/query/+contentType:webPageContent%20+webPageContent.title:*privacy-policy-ccpa-policy*%20+languageId:1%20+deleted:false%20+working:true/'
- - data: privacy-data-category
- json: 'https://assets.aquent.com/api/content/render/false/type/json/query/+contentType:webPageContent%20+webPageContent.title:*privacy-policy-data-category*%20+languageId:1%20+deleted:false%20+working:true/'
- - data: privacy-eu-rights
- json: 'https://assets.aquent.com/api/content/render/false/type/json/query/+contentType:webPageContent%20+webPageContent.title:*privacy-policy-european-rights*%20+languageId:1%20+deleted:false%20+working:true/'
+ # - data: privacy-index
+ # json: 'https://assets.aquent.com/api/content/render/false/type/json/query/+contentType:webPageContent%20+webPageContent.title:*privacy-policy-index*%20+languageId:1%20+deleted:false%20+working:true/'
+ # - data: privacy-shield-notice
+ # json: 'https://assets.aquent.com/api/content/render/false/type/json/query/+contentType:webPageContent%20+webPageContent.title:*privacy-policy-privacy-shield-notice*%20+languageId:1%20+deleted:false%20+working:true/'
+ # - data: privacy-ccpa
+ # json: 'https://assets.aquent.com/api/content/render/false/type/json/query/+contentType:webPageContent%20+webPageContent.title:*privacy-policy-ccpa-policy*%20+languageId:1%20+deleted:false%20+working:true/'
+ # - data: privacy-data-category
+ # json: 'https://assets.aquent.com/api/content/render/false/type/json/query/+contentType:webPageContent%20+webPageContent.title:*privacy-policy-data-category*%20+languageId:1%20+deleted:false%20+working:true/'
+ # - data: privacy-eu-rights
+ # json: 'https://assets.aquent.com/api/content/render/false/type/json/query/+contentType:webPageContent%20+webPageContent.title:*privacy-policy-european-rights*%20+languageId:1%20+deleted:false%20+working:true/'
diff --git a/feeds/data.json b/feeds/data.json
new file mode 100644
index 000000000..281862047
--- /dev/null
+++ b/feeds/data.json
@@ -0,0 +1,113 @@
+---
+layout: null
+permalink: /feeds/data.json
+---
+{%- if site.data -%}
+{
+ "title": "Gymnasium Edge Function Data Feed",
+ "feed_url": "{{site.url}}{{page.permalink}}",
+ "date_modified": "{{ site.time | date_to_xmlschema }}",
+ "courses":[
+ {%- assign sorted = site.data.courses | sort: course_id -%}
+ {%- for hash in sorted -%}
+ {%- include_relative og-data-logic.liquid -%}
+ {
+ "id": "{{ id }}",
+ "title": "{{ title }}",
+ "type": "{{ type }}",
+ "topic": "{{ topic }}",
+ "img": "{{ img }}",
+ "img_offset": "{{ img_offset }}",
+ "img_bg_color": "{{ img_bg_color }}",
+ "bg_color": "{{ bg_color }}"
+ },
+ {%- endfor -%}
+
+ {%- assign sorted = site.data.workshops | sort: course_id -%}
+ {%- for hash in sorted -%}
+ {%- include_relative og-data-logic.liquid -%}
+ {
+ "id": "{{ id }}",
+ "title": "{{ title }}",
+ "type": "{{ type }}",
+ "topic": "{{ topic }}",
+ "img": "{{ img }}",
+ "img_offset": "{{ img_offset }}",
+ "img_bg_color": "{{ img_bg_color }}",
+ "bg_color": "{{ bg_color }}"
+ },
+ {%- endfor -%}
+
+ {%- assign sorted = site.data.take5 | sort: course_id -%}
+ {%- for hash in sorted -%}
+ {%- include_relative og-data-logic.liquid -%}
+ {
+ "id": "{{ id }}",
+ "title": "{{ title }}",
+ "type": "{{ type }}",
+ "topic": "{{ topic }}",
+ "img": "{{ img | replace: '.jpg', '-hero.jpg' }}",
+ "img_offset": "{{ img_offset }}",
+ "img_bg_color": "{{ img_bg_color }}",
+ "bg_color": "{{ bg_color }}"
+ }
+ {%- if forloop.index != forloop.length -%},{%- endif -%}
+ {%- endfor -%}
+ ],
+ "webinars":[
+ {%- assign sorted = site.data.webinars | sort: event_ID -%}
+ {%- for hash in sorted -%}
+ {%- assign id = hash[0] -%}
+ {%- assign item = hash[1] -%}
+ {
+ "id": "{{ id | slice: 0,7 }}",
+ "title": "{{ item.event_title | strip_html }}",
+ "type": "webinar",
+ "topic": "{{ item.topic | strip_html }}",
+ "img": "/img/social/webinars/{{ item.event_ogimage }}",
+ "img_offset": "{{ item.img_offset }}",
+ "img_bg_color": "{{ item.img_bg_color }}",
+ "bg_color": "{{ item.bg_color }}"
+ }
+ {%- if forloop.index != forloop.length -%},{%- endif -%}
+ {%- endfor -%}
+ ],
+
+ {%- assign sortedpages = site.pages | where_exp: 'page', "page.permalink contains '/meta/'" | sort: "url" -%}
+ {%- assign filtered_pages = "" | split: ", " -%}
+ {%- for page in sortedpages -%}
+ {%- unless page.permalink contains '/courses/' or page.permalink contains '/webinars/' or page.permalink contains '/tests/' -%}
+ {%- assign filtered_pages = filtered_pages | push: page -%}
+ {%- endunless -%}
+ {%-if page.permalink == '/courses/meta/' or page.permalink == '/webinars/meta/' or page.permalink == '/courses/take5/meta/' or page.permalink == '/courses/gym-shorts/meta/' or page.permalink == '/courses/full/meta/' -%}
+ {%- assign filtered_pages = filtered_pages | push: page -%}
+ {%- endif -%}
+ {%- endfor -%}
+
+ "static":[
+ {%- for page in filtered_pages -%}
+ {
+ "id": "",
+ "data": [{
+ {%- for item in page -%}
+ "{{item[0] | JSON }}": "{{item[1] | JSON }}"
+ {%- if forloop.index != forloop.length -%},{%- endif -%}
+ {%- endfor -%}
+ }],
+ "path": "{{ page.permalink }}",
+ "title": "{{ page.og_description }}",
+ "type": "static",
+ "topic": "",
+ "img": "",
+ "img_offset": "",
+ "img_bg_color": "",
+ "bg_color": ""
+ }
+ {%- if forloop.index != forloop.length -%},{%- endif -%}
+ {%- endfor -%}
+ ]
+}
+{%- else -%}
+{"error": "no JSON feed found!"}
+{%- endif -%}
+
diff --git a/feeds/og-data-logic.liquid b/feeds/og-data-logic.liquid
new file mode 100644
index 000000000..a36c1e265
--- /dev/null
+++ b/feeds/og-data-logic.liquid
@@ -0,0 +1,32 @@
+{%- assign id = hash[0] -%}
+{%- assign item = hash[1] -%}
+{%- assign title = item.title -%}
+{%- assign type = item.course_type -%}
+{%- assign topic = item.topic -%}
+{%- assign img = item.poster_art -%}
+{%- assign img_offset = item.img_offset -%}
+{%- assign img_bg_color = item.img_bg_color -%}
+{%- assign bg_color = item.bg_color -%}
+{%- if item.og_gen_data -%}
+ {%- if item.og_gen_data.bg_color -%}
+ {%- assign bg_color = item.og_gen_data.bg_color -%}
+ {%- endif -%}
+ {%- if item.og_gen_data.title -%}
+ {%- assign title = item.og_gen_data.title -%}
+ {%- endif -%}
+ {%- if item.og_gen_data.topic -%}
+ {%- assign topic = item.og_gen_data.topic -%}
+ {%- endif -%}
+ {%- if item.og_gen_data.img -%}
+ {%- assign img = item.og_gen_data.img -%}
+ {%- endif -%}
+ {%- if item.og_gen_data.img2 -%}
+ {%- assign img2 = item.og_gen_data.img2 -%}
+ {%- endif -%}
+ {%- if item.og_gen_data.img_bg_color -%}
+ {%- assign img_bg_color = item.og_gen_data.img_bg_color -%}
+ {%- endif -%}
+ {%- if item.og_gen_data.img_offset -%}
+ {%- assign img_offset = item.og_gen_data.img_offset -%}
+ {%- endif -%}
+{%- endif -%}
diff --git a/index.md b/index.md
index a408ae46f..7a359a1d2 100644
--- a/index.md
+++ b/index.md
@@ -3,7 +3,7 @@ title: thegymcms
layout: default
---
-{% if site.url == "http://0.0.0.0:4000" %}
+{% if site.url == "http://0.0.0.0:4000" or site.url == "http://localhost:4000" %}
# Local Development
{% else %}
# {{ site.url }}
diff --git a/netlify.toml b/netlify.toml
index 869953fcf..2d34f69e7 100644
--- a/netlify.toml
+++ b/netlify.toml
@@ -22,6 +22,13 @@
Access-Control-Allow-Origin = "*"
Cache-Control = "public, max-age=31536000, immutable"
+[build]
+edge_functions = ".netlify/functions"
+
+[[edge_functions]]
+ function = "og"
+ path = "/og-image"
+
# dev branch build
# https://dev--gymcms.netlify.com/
[context.dev]