diff --git a/services/web/app/coffee/Features/Wiki/WikiController.coffee b/services/web/app/coffee/Features/Wiki/WikiController.coffee new file mode 100644 index 0000000000..4be6a960ea --- /dev/null +++ b/services/web/app/coffee/Features/Wiki/WikiController.coffee @@ -0,0 +1,34 @@ +request = require("request") +settings = require("settings-sharelatex") +logger = require("logger-sharelatex") +ErrorController = require "../Errors/ErrorController" + +module.exports = WikiController = + getPage: (req, res, next) -> + page = req.url.replace(/^\/learn/, "").replace(/^\//, "") + if page == "" + page = "Main_Page" + + wikiUrl = "#{settings.apis.wiki.url}/api.php" + + logger.log page: page, "proxying request to wiki" + + request { + url: wikiUrl + qs: { + page: page + action: "parse" + format: "json" + } + }, (err, response, data)-> + if response?.statusCode == 404 + return ErrorController.notFound(req, res, next) + try + data = JSON.parse(data) + catch err + logger.err err:err, data:data, "error parsing data from wiki" + logger.log data: data, "got response from wiki" + res.render "wiki/page", { + content: data.parse.text['*'] + title: data.parse.title + } diff --git a/services/web/app/coffee/router.coffee b/services/web/app/coffee/router.coffee index 83bec789aa..0fbb31e18c 100644 --- a/services/web/app/coffee/router.coffee +++ b/services/web/app/coffee/router.coffee @@ -37,6 +37,7 @@ PasswordResetRouter = require("./Features/PasswordReset/PasswordResetRouter") StaticPagesRouter = require("./Features/StaticPages/StaticPagesRouter") ChatController = require("./Features/Chat/ChatController") BlogController = require("./Features/Blog/BlogController") +WikiController = require("./Features/Wiki/WikiController") ConnectedUsersController = require("./Features/ConnectedUsers/ConnectedUsersController") logger = require("logger-sharelatex") @@ -162,6 +163,8 @@ module.exports = class Router app.get "/project/:Project_id/messages", SecurityManager.requestCanAccessProject, ChatController.getMessages app.post "/project/:Project_id/messages", SecurityManager.requestCanAccessProject, ChatController.sendMessage + + app.get /learn(\/.*)?/, WikiController.getPage #Admin Stuff app.get '/admin', SecurityManager.requestIsAdmin, AdminController.index diff --git a/services/web/app/views/wiki/page.jade b/services/web/app/views/wiki/page.jade new file mode 100644 index 0000000000..903d2a5097 --- /dev/null +++ b/services/web/app/views/wiki/page.jade @@ -0,0 +1,17 @@ +extends ../layout + +block content + .content + .container.wiki + .row + .col-lg-8.col-lg-offset-2.col-md-10.col-md-offset-1 + .page-header + - if (title == "Main Page") + h1 ShareLaTeX Documentation + - else + h1 #{title} + a(href="/learn") + i.fa.fa-long-arrow-left + |   Back to all articles + + | !{content} \ No newline at end of file diff --git a/services/web/public/stylesheets/app/editor.less b/services/web/public/stylesheets/app/editor.less index ac985ff76d..6c0da22dc5 100644 --- a/services/web/public/stylesheets/app/editor.less +++ b/services/web/public/stylesheets/app/editor.less @@ -65,7 +65,7 @@ left: 50%; width: 400px; margin-left: -200px; - margin-top: -140px; + margin-top: -200px; } } diff --git a/services/web/public/stylesheets/app/wiki.less b/services/web/public/stylesheets/app/wiki.less new file mode 100644 index 0000000000..4cbf995de8 --- /dev/null +++ b/services/web/public/stylesheets/app/wiki.less @@ -0,0 +1,92 @@ +.wiki { + .page-header { + a { + font-size: 0.8em; + line-height: 1; + } + } + + .editsection { + display: none; + } + + table { + th, td { + padding: (@line-height-computed / 4) (@line-height-computed / 2); + border-bottom: 1px solid @gray-lighter; + } + th { + font-weight: 700; + text-align: left; + font-family: @font-family-serif; + } + margin-bottom: @line-height-computed / 2; + } + + .example { + .code { + pre { + background-color: @gray-lightest; + border-radius: 6px; + padding: (@line-height-computed / 2); + white-space: pre-wrap; + margin: 0; + } + } + .output { + img { + width: auto !important; + height: auto !important; + max-width: 100% !important; + box-shadow: 0 1px 3px @gray-light; + border-radius: 6px; + } + } + } + @media (min-width: 1190px) { + .example { + margin-right: -200px; + } + } + + /**/ + +} \ No newline at end of file diff --git a/services/web/public/stylesheets/style.less b/services/web/public/stylesheets/style.less index f05070664b..1aac74dcd4 100755 --- a/services/web/public/stylesheets/style.less +++ b/services/web/public/stylesheets/style.less @@ -65,3 +65,4 @@ @import "app/blog.less"; @import "app/features.less"; @import "app/templates.less"; +@import "app/wiki.less";