diff --git a/server/boot/t-wiki.js b/server/boot/t-wiki.js index 254ee4b619..d19b6b1ccd 100644 --- a/server/boot/t-wiki.js +++ b/server/boot/t-wiki.js @@ -1,11 +1,17 @@ module.exports = function(app) { var router = app.loopback.Router(); router.get('/wiki/*', showWiki); - router.get('/wiki', showWiki); + router.get('/wiki', (req, res) => res.redirect(301, '/wiki/en/')); app.use(router); function showWiki(req, res) { - res.render('wiki/show', { title: 'Wiki | Free Code Camp' }); + res.render( + 'wiki/show', + { + title: 'Wiki | Free Code Camp', + path: req.path.replace(/^\/wiki/, '') + } + ); } }; diff --git a/server/views/wiki/show.jade b/server/views/wiki/show.jade index 5b2427e056..f8cf997089 100644 --- a/server/views/wiki/show.jade +++ b/server/views/wiki/show.jade @@ -2,6 +2,19 @@ extends ../layout-wide block content iframe#wikiFrame(frameborder='no') script. - var lang = window.location.toString().match(/\/\w{2}\//); - lang = (lang) ? lang[0] : '/en/'; - $('#wikiFrame').attr('src','//freecodecamp.github.io/wiki' + lang); + var wikiUrl = '//freecodecamp.github.io/wiki'; + var wikiOrigin = /https?:\/\/freecodecamp.github.io/; + var requestedPath = !{JSON.stringify(path) || ''}; + var lang = window.location.toString().match(/\/\w{2}\//); + lang = (lang) ? lang[0] : '/en/'; + $('#wikiFrame').attr( + 'src', + wikiUrl + (requestedPath ? requestedPath : lang) + ); + window.addEventListener('message', function(e) { + if (!wikiOrigin.test(e.origin)) { + return null; + } + history.replaceState(history.state, null, e.data); + return null; + });