feat(courses): Add Categories listing

This commit is contained in:
Khaled Garbaya
2017-09-26 15:24:12 +02:00
committed by Benedikt Rötsch
parent 0c66b6678c
commit 200a8ae2f1
4 changed files with 30 additions and 6 deletions

View File

@@ -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. */

View File

@@ -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 })
}) })

View File

@@ -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)
} }

View File

@@ -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)