From aeb956c8a4e68fc0ceb003bd9968b966119e1c91 Mon Sep 17 00:00:00 2001 From: Henry Oswald Date: Fri, 31 Oct 2014 12:15:03 +0000 Subject: [PATCH] wiki will try and get spanish version of page then fall back to english if it is not there --- .../Features/Wiki/WikiController.coffee | 49 +++++++++++++------ 1 file changed, 35 insertions(+), 14 deletions(-) diff --git a/services/web/app/coffee/Features/Wiki/WikiController.coffee b/services/web/app/coffee/Features/Wiki/WikiController.coffee index 69dda8bba0..47023c913d 100644 --- a/services/web/app/coffee/Features/Wiki/WikiController.coffee +++ b/services/web/app/coffee/Features/Wiki/WikiController.coffee @@ -2,30 +2,37 @@ request = require("request") settings = require("settings-sharelatex") logger = require("logger-sharelatex") ErrorController = require "../Errors/ErrorController" +_ = require("underscore") + +other_lngs = ["es"] module.exports = WikiController = getPage: (req, res, next) -> + page = req.url.replace(/^\/learn/, "").replace(/^\//, "") if page == "" page = "Main_Page" logger.log page: page, "getting page from wiki" - + if _.include(other_lngs, req.lng) + lngPage = "#{page}_#{req.lng}" + else + lngPage = page + WikiController._getPageContent "Contents", (error, contents) -> return next(error) if error? - WikiController._getPageContent page, (error, page) -> + WikiController._getPageContent lngPage, (error, pageData) -> return next(error) if error? - if page.title == "Main Page" - title = "Documentation" + if pageData.content?.length > 280 + WikiController._renderPage(pageData, contents, res) else - title = page.title - - res.render "wiki/page", { - page: page - contents: contents - title: title - } - + WikiController._getPageContent page, (error, pageData) -> + return next(error) if error? + WikiController._renderPage(pageData, contents, res) + + + + _getPageContent: (page, callback = (error, data = { content: "", title: "" }) ->) -> request { url: "#{settings.apis.wiki.url}/learn-scripts/api.php" @@ -40,7 +47,21 @@ module.exports = WikiController = data = JSON.parse(data) catch err logger.err err:err, data:data, "error parsing data from wiki" - callback null, { + result = content: data?.parse?.text?['*'] title: data?.parse?.title - } + + callback null, result + + + _renderPage: (page, contents, res)-> + if page.title == "Main Page" + title = "Documentation" + else + title = page.title + + res.render "wiki/page", { + page: page + contents: contents + title: title + } \ No newline at end of file