From 62ecdfe60c5a16c9db937a404dbc47d7b77830da Mon Sep 17 00:00:00 2001 From: Khaled Garbaya Date: Wed, 27 Sep 2017 11:50:00 +0200 Subject: [PATCH] feat(lessons): Add lessons modules --- helpers.js | 1 + services/contentful.js | 2 +- views/course.pug | 5 +++-- views/mixins/_lesson.pug | 16 +++++++++++++--- views/mixins/_lessonModuleCodeSnippet.pug | 15 +++++++++++++++ views/mixins/_lessonModuleCopy.pug | 5 +++++ views/mixins/_lessonModuleImage.pug | 5 +++++ 7 files changed, 43 insertions(+), 6 deletions(-) create mode 100644 views/mixins/_lessonModuleCodeSnippet.pug create mode 100644 views/mixins/_lessonModuleCopy.pug create mode 100644 views/mixins/_lessonModuleImage.pug diff --git a/helpers.js b/helpers.js index 5c5547c..690db2c 100644 --- a/helpers.js +++ b/helpers.js @@ -2,6 +2,7 @@ const marked = require('marked') // Parse markdown text exports.markdown = (content) => { + content = content || '' return marked(removeIvalidDataURL(content), {sanitize: true}) } diff --git a/services/contentful.js b/services/contentful.js index 68a3835..709cfb2 100644 --- a/services/contentful.js +++ b/services/contentful.js @@ -25,7 +25,7 @@ exports.getCourse = (slug) => { // the SDK support link resolution only when you request the collection endpoint // That's why we are using getEntries with a query instead of getEntry(entryId) // make sure to specify the content_type whenever you want to perform a query - return client.getEntries({content_type: 'course', 'fields.slug': slug}) + return client.getEntries({content_type: 'course', 'fields.slug': slug, include: 10}) .then((response) => response.items[0]) } diff --git a/views/course.pug b/views/course.pug index 0a43896..28ccb3e 100644 --- a/views/course.pug +++ b/views/course.pug @@ -1,5 +1,7 @@ extends layout +include mixins/_lesson + block content .wrapper.wrapper-with-sidebar section.wrapper__sidebar @@ -15,8 +17,7 @@ block content h1= course.fields.title if lesson - h2= lesson.fields.title - p !{helpers.markdown(lesson.fields.description)} + +lesson(lesson) if lessonIndex + 1< lessons.length a.cta(href=`/courses/${course.fields.slug}/lessons/${lessons[lessonIndex + 1].fields.slug}`) View next lesson else diff --git a/views/mixins/_lesson.pug b/views/mixins/_lesson.pug index a36394a..1fd0bb4 100644 --- a/views/mixins/_lesson.pug +++ b/views/mixins/_lesson.pug @@ -1,7 +1,17 @@ +include _lessonModuleCodeSnippet +include _lessonModuleCopy +include _lessonModuleImage + mixin lesson(lesson) .lesson h1.lesson__tilte #{lesson.fields.title} - div.lesson__shortDescription !{helpers.markdown(lesson.fields.shortDescription)} + div.lesson__shortDescription !{helpers.markdown(lesson.fields.description)} img.lesson__image(src=`${lesson.fields.image.fields.file.url}` alt=`${lesson.fields.image.fields.title}`) - - + each module in lesson.fields.modules + case module.sys.contentType.sys.id + when 'lessonModuleCodeSnippets' + +lessonModuleCodeSnippet(module) + when 'lessonModuleCopy' + +lessonModuleCopy(module) + when 'lessonModuleImage' + +lessonModuleImage(module) \ No newline at end of file diff --git a/views/mixins/_lessonModuleCodeSnippet.pug b/views/mixins/_lessonModuleCodeSnippet.pug new file mode 100644 index 0000000..8f3fe38 --- /dev/null +++ b/views/mixins/_lessonModuleCodeSnippet.pug @@ -0,0 +1,15 @@ +mixin lessonModuleCodeSnippet(module) + .lessonModule + .lessonModule__code + h1.lessonModule__title #{module.fields.title} + pre.lessonModule__code__curl !{helpers.markdown(module.fields.curl)} + pre.lessonModule__code__dotnet !{helpers.markdown(module.fields.dotNet)} + pre.lessonModule__code__javascript !{helpers.markdown(module.fields.javascript)} + pre.lessonModule__code__java !{helpers.markdown(module.fields.java)} + pre.lessonModule__code__javaAndroid !{helpers.markdown(module.fields.javaAndroid)} + pre.lessonModule__code__php !{helpers.markdown(module.fields.php)} + pre.lessonModule__code__python !{helpers.markdown(module.fields.python)} + pre.lessonModule__code__ruby !{helpers.markdown(module.fields.ruby)} + pre.lessonModule__code__swift !{helpers.markdown(module.fields.swift)} + + \ No newline at end of file diff --git a/views/mixins/_lessonModuleCopy.pug b/views/mixins/_lessonModuleCopy.pug new file mode 100644 index 0000000..55b952d --- /dev/null +++ b/views/mixins/_lessonModuleCopy.pug @@ -0,0 +1,5 @@ +mixin lessonModuleCopy(module) + .lessonModule + .lessonModule__copy + h1.lessonModule__copy__title #{module.fields.title} + .lessonModule__copy__copy !{helpers.markdown(module.fields.copy)} \ No newline at end of file diff --git a/views/mixins/_lessonModuleImage.pug b/views/mixins/_lessonModuleImage.pug new file mode 100644 index 0000000..a7bc87d --- /dev/null +++ b/views/mixins/_lessonModuleImage.pug @@ -0,0 +1,5 @@ +mixin lessonModuleImage(module) + .lessonModule + .lessonModule__image + h1.lessonModule__image__title #{module.fields.title} + img.lessonModule__image__image(src=module.fields.file.url alt=module.fields.title) \ No newline at end of file