Jelajahi Sumber

added contentful uni pages as fallback

Henry Oswald 10 tahun lalu
induk
melakukan
2339cda318

+ 32 - 2
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
+		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
+
+
+

+ 19 - 0
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}
+

+ 2 - 1
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",