Преглед на файлове

wiki will try and get spanish version of page then fall back to english if it is not there

Henry Oswald преди 12 години
родител
ревизия
aeb956c8a4
променени са 1 файла, в които са добавени 35 реда и са изтрити 14 реда
  1. 35 14
      services/web/app/coffee/Features/Wiki/WikiController.coffee

+ 35 - 14
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
+		}