Skip to content

Commit 5269358

Browse files
committed
Add course metadata
1 parent 6e8941a commit 5269358

2 files changed

Lines changed: 84 additions & 36 deletions

File tree

course-metadata.json

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
{
2+
"@context": "http://schema.org",
3+
"@type": "Course",
4+
"name": "Ohjelmoinnin MOOC 2019",
5+
"description": "Helsingin yliopiston kaikille avoin ja ilmainen ohjelmoinnin perusteet opettava verkkokurssi. Kurssilla perehdytään nykyaikaisen ohjelmoinnin perusideoihin sekä ohjelmoinnissa käytettävien työvälineiden lisäksi algoritmien laatimiseen. Kurssille osallistuminen ei vaadi ennakkotietoja ohjelmoinnista.",
6+
"provider": {
7+
"@type": "Organization",
8+
"name": "MOOC.fi",
9+
"sameAs": "https://mooc.fi"
10+
},
11+
"publisher": {
12+
"@type": "Organization",
13+
"name": "University of Helsinki",
14+
"sameAs": "https://www.helsinki.fi/"
15+
},
16+
"hasCourseInstance": [
17+
{
18+
"@type": "CourseInstance",
19+
"name": "Ohjelmoinnin MOOC 2019",
20+
"courseMode": ["MOOC", "online"],
21+
"location": {
22+
"@type": "Place",
23+
"name": "Exactum, Kumpulan kampus",
24+
"address": "Gustaf Hällströmin katu 2b 00560 Helsinki, Finland"
25+
},
26+
"startDate": "2018-12-14",
27+
"audience": {
28+
"@type": "EducationalAudience",
29+
"educationalRole": "student",
30+
"audienceType": "everyone"
31+
},
32+
"inLanguage": {
33+
"@type": "Language",
34+
"name": "Finnish",
35+
"alternateName": "fi"
36+
},
37+
"isAccessibleForFree": true
38+
}
39+
]
40+
}

src/templates/Layout.js

Lines changed: 44 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import React from 'react'
1+
import React, { Fragment } from 'react'
22
import Helmet from 'react-helmet'
33
import Sidebar from '../components/Sidebar'
44
import ContentArea from '../components/ContentArea'
@@ -9,6 +9,8 @@ import withMaterialUiRoot from './withMaterialUiRoot'
99
import Pheromones from '../util/pheromones'
1010
import styled from 'styled-components'
1111

12+
import courseMetaData from '../../course-metadata.json'
13+
1214
import './reboot.css'
1315
import './theme.css'
1416
import './remark.css'
@@ -100,41 +102,47 @@ class Layout extends React.Component {
100102
const { children } = this.props
101103

102104
return (
103-
<StaticQuery
104-
query={layoutQuery}
105-
render={data => {
106-
const siteTitle = data.title.siteMetadata.title
107-
return (
108-
<Wrapper mobileMenuOpen={this.state.mobileMenuOpen}>
109-
<Helmet
110-
defaultTitle={siteTitle}
111-
titleTemplate={`%s - ${siteTitle}`}
112-
meta={[
113-
{
114-
name: 'description',
115-
content:
116-
'Helsingin yliopiston kaikille avoin ja ilmainen ohjelmoinnin perusteet opettava verkkokurssi. Kurssilla perehdytään nykyaikaisen ohjelmoinnin perusideoihin sekä ohjelmoinnissa käytettävien työvälineiden lisäksi algoritmien laatimiseen. Kurssille osallistuminen ei vaadi ennakkotietoja ohjelmoinnista.',
117-
},
118-
{
119-
name: 'keywords',
120-
content:
121-
'ohjelmointi, java, programming, CS1, MOOC, 2019, ohjelmointikurssi, avoin, ilmainen, helsingin yliopisto',
122-
},
123-
]}
124-
/>
125-
<Sidebar
126-
mobileMenuOpen={this.state.mobileMenuOpen}
127-
toggleMobileMenu={this.toggleMobileMenu}
128-
/>
129-
<TopBar />
130-
<ContentArea mobileMenuOpen={this.state.mobileMenuOpen}>
131-
{children}
132-
</ContentArea>
133-
<Footer />
134-
</Wrapper>
135-
)
136-
}}
137-
/>
105+
<Fragment>
106+
<StaticQuery
107+
query={layoutQuery}
108+
render={data => {
109+
const siteTitle = data.title.siteMetadata.title
110+
return (
111+
<Wrapper mobileMenuOpen={this.state.mobileMenuOpen}>
112+
<Helmet
113+
defaultTitle={siteTitle}
114+
titleTemplate={`%s - ${siteTitle}`}
115+
meta={[
116+
{
117+
name: 'description',
118+
content:
119+
'Helsingin yliopiston kaikille avoin ja ilmainen ohjelmoinnin perusteet opettava verkkokurssi. Kurssilla perehdytään nykyaikaisen ohjelmoinnin perusideoihin sekä ohjelmoinnissa käytettävien työvälineiden lisäksi algoritmien laatimiseen. Kurssille osallistuminen ei vaadi ennakkotietoja ohjelmoinnista.',
120+
},
121+
{
122+
name: 'keywords',
123+
content:
124+
'ohjelmointi, java, programming, CS1, MOOC, 2019, ohjelmointikurssi, avoin, ilmainen, helsingin yliopisto',
125+
},
126+
]}
127+
/>
128+
<Sidebar
129+
mobileMenuOpen={this.state.mobileMenuOpen}
130+
toggleMobileMenu={this.toggleMobileMenu}
131+
/>
132+
<TopBar />
133+
<ContentArea mobileMenuOpen={this.state.mobileMenuOpen}>
134+
{children}
135+
</ContentArea>
136+
<Footer />
137+
</Wrapper>
138+
)
139+
}}
140+
/>
141+
<script
142+
type="application/ld+json"
143+
dangerouslySetInnerHTML={{ __html: JSON.stringify(courseMetaData) }}
144+
/>
145+
</Fragment>
138146
)
139147
}
140148
}

0 commit comments

Comments
 (0)