feat(courses): Add Categories listing
This commit is contained in:
committed by
Benedikt Rötsch
parent
0c66b6678c
commit
200a8ae2f1
@@ -1,5 +1,5 @@
|
|||||||
const express = require('express')
|
const express = require('express')
|
||||||
const {getCourses, getCourse} = require('./../services/contentful')
|
const {getCourses, getCourse, getCategories, getCoursesByCategory} = require('./../services/contentful')
|
||||||
|
|
||||||
const router = express.Router()
|
const router = express.Router()
|
||||||
|
|
||||||
@@ -7,12 +7,28 @@ const router = express.Router()
|
|||||||
router.get('/', async function (req, res, next) {
|
router.get('/', async function (req, res, next) {
|
||||||
// we get all the entries with the content type `course`
|
// we get all the entries with the content type `course`
|
||||||
let courses = []
|
let courses = []
|
||||||
|
let categories = []
|
||||||
try {
|
try {
|
||||||
courses = await getCourses()
|
courses = await getCourses()
|
||||||
|
categories = await getCategories()
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
console.log('Error ', e)
|
console.log('Error ', e)
|
||||||
}
|
}
|
||||||
res.render('courses', { title: 'Courses', courses: courses.items })
|
res.render('courses', { title: 'Courses', categories, courses })
|
||||||
|
})
|
||||||
|
|
||||||
|
/* GET courses listing. */
|
||||||
|
router.get('/categories/:category', async function (req, res, next) {
|
||||||
|
// we get all the entries with the content type `course`
|
||||||
|
let courses = []
|
||||||
|
let categories = []
|
||||||
|
try {
|
||||||
|
courses = await getCoursesByCategory(req.params.category)
|
||||||
|
categories = await getCategories()
|
||||||
|
} catch (e) {
|
||||||
|
console.log('Error ', e)
|
||||||
|
}
|
||||||
|
res.render('courses', { title: 'Courses', categories, courses })
|
||||||
})
|
})
|
||||||
|
|
||||||
/* GET course detail. */
|
/* GET course detail. */
|
||||||
|
|||||||
@@ -5,7 +5,6 @@ const router = express.Router()
|
|||||||
/* GET home page. */
|
/* GET home page. */
|
||||||
router.get('/', async function (req, res, next) {
|
router.get('/', async function (req, res, next) {
|
||||||
const landingPage = await getLandingPage()
|
const landingPage = await getLandingPage()
|
||||||
console.log(landingPage.fields.contentModules[1].fields)
|
|
||||||
res.render('index', { landingPage })
|
res.render('index', { landingPage })
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ exports.getCourses = () => {
|
|||||||
// to get all the courses we simply request from Contentful all the entries
|
// to get all the courses we simply request from Contentful all the entries
|
||||||
// with the content_type `course`
|
// with the content_type `course`
|
||||||
return client.getEntries({content_type: 'course'})
|
return client.getEntries({content_type: 'course'})
|
||||||
|
.then((response) => response.items)
|
||||||
}
|
}
|
||||||
|
|
||||||
exports.getLandingPage = () => {
|
exports.getLandingPage = () => {
|
||||||
@@ -33,10 +34,15 @@ exports.getLessons = (courseId) => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
exports.getCategories = () => {
|
exports.getCategories = () => {
|
||||||
// TODO
|
return client.getEntries({content_type: 'category'})
|
||||||
|
.then((response) => response.items)
|
||||||
}
|
}
|
||||||
|
|
||||||
exports.getCoursesByCategory = (category) => {
|
exports.getCoursesByCategory = (category) => {
|
||||||
// TODO
|
return client.getEntries({
|
||||||
|
content_type: 'course',
|
||||||
|
'fields.category.sys.contentType.sys.id': category
|
||||||
|
})
|
||||||
|
.then((response) => response.items)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -3,6 +3,9 @@ extends layout
|
|||||||
include mixins/_courseCard
|
include mixins/_courseCard
|
||||||
|
|
||||||
block content
|
block content
|
||||||
h1= title
|
ul
|
||||||
|
each category in categories
|
||||||
|
li
|
||||||
|
a(href=`/courses/categories/${category.sys.id}`) #{category.fields.title}
|
||||||
each course in courses
|
each course in courses
|
||||||
+courseCard(course)
|
+courseCard(course)
|
||||||
|
|||||||
Reference in New Issue
Block a user