diff --git a/services/web/app/coffee/Features/StaticPages/UniversityController.coffee b/services/web/app/coffee/Features/StaticPages/UniversityController.coffee index 9b55b60077..e607c3a020 100644 --- a/services/web/app/coffee/Features/StaticPages/UniversityController.coffee +++ b/services/web/app/coffee/Features/StaticPages/UniversityController.coffee @@ -5,6 +5,12 @@ _ = require("underscore") ErrorController = require "../Errors/ErrorController" StaticPageHelpers = require("./StaticPageHelpers") sanitize = require('sanitizer') +Settings = require("settings-sharelatex") +contentful = require('contentful') +marked = require("marked") + + + module.exports = UniversityController = @@ -17,7 +23,7 @@ module.exports = UniversityController = logger.log url:url, "proxying request to university api" request.get universityUrl, (err, r, data)-> if r?.statusCode == 404 - return ErrorController.notFound(req, res, next) + return UniversityController.getContentfulPage(req, res, next) if err? return res.send 500 data = data.trim() @@ -37,4 +43,28 @@ module.exports = UniversityController = upstream = request.get(originUrl) upstream.on "error", (error) -> logger.error err: error, "university proxy error" - upstream.pipe res \ No newline at end of file + upstream.pipe res + + getContentfulPage: (req, res, next)-> + console.log Settings.contentful + if !Settings.contentful?.uni?.space? and !Settings.contentful?.uni?.accessToken? + return ErrorController.notFound(req, res, next) + + client = contentful.createClient({ + space: Settings.contentful?.uni?.space + accessToken: Settings.contentful?.uni?.accessToken + }) + + url = req.url?.toLowerCase().replace("/university/","") + client.getEntries({content_type: 'caseStudy', 'fields.slug':url}) + .catch (e)-> + return res.send 500 + .then (entry)-> + if !entry? or !entry.items? or entry.items.length == 0 + return ErrorController.notFound(req, res, next) + viewData = entry.items[0].fields + viewData.html = marked(viewData.content) + res.render "university/case_study", viewData:viewData + + + diff --git a/services/web/app/views/university/case_study.jade b/services/web/app/views/university/case_study.jade new file mode 100644 index 0000000000..7974eb9e6c --- /dev/null +++ b/services/web/app/views/university/case_study.jade @@ -0,0 +1,19 @@ +extends ../layout + +block content + .masthead + .container + .row + .col-md-12 + h1 !{viewData.title} + .row.row-spaced + + .pattern-container + .content + .container + .row + .col-md-10.col-md-offset-1 + .card + .row + | !{viewData.html} + diff --git a/services/web/package.json b/services/web/package.json index e34a564309..ff82759f65 100644 --- a/services/web/package.json +++ b/services/web/package.json @@ -18,6 +18,7 @@ "body-parser": "^1.13.1", "bufferedstream": "1.6.0", "connect-redis": "2.3.0", + "contentful": "^3.3.14", "cookie": "^0.2.3", "cookie-parser": "1.3.5", "csurf": "^1.8.3", @@ -31,7 +32,7 @@ "ldapjs": "^1.0.0", "logger-sharelatex": "git+https://github.com/sharelatex/logger-sharelatex.git#v1.3.1", "lynx": "0.1.1", - "marked": "^0.3.3", + "marked": "^0.3.5", "method-override": "^2.3.3", "metrics-sharelatex": "git+https://github.com/sharelatex/metrics-sharelatex.git#v1.3.0", "mimelib": "0.2.14",