Made welcome page into own view

This commit is contained in:
Jonathan Barrow
2022-08-19 21:21:54 -04:00
parent 760dfb7a07
commit 1c46914bc7
4 changed files with 170 additions and 81 deletions

View File

@@ -1,15 +1,29 @@
const { Router } = require('express');
const router = new Router();
const util = require('../util');
const fs = require('fs');
const path = require('path');
const { marked } = require('marked');
const errorList = require('../../docs/common/errorList.json');
router.get('/', async (request, response) => {
response.redirect('/docs/welcome');
});
router.get('/welcome', async (request, response) => {
const renderData = {
currentPage: 'welcome',
};
response.render('docs/welcome', renderData);
});
router.get('/install', async (request, response) => {
const renderData = {
currentPage: 'install',
};
response.render('docs/install', renderData);
});
router.get('/search', async (request, response) => {
const renderData = {
errorList: JSON.stringify(errorList),
@@ -18,53 +32,6 @@ router.get('/search', async (request, response) => {
response.render('docs/search', renderData);
});
router.get('/install', async (request, response) => {
const renderData = {
currentPage: 'install',
};
response.render('docs/install', renderData);
});
function getRawDocs(locale, subpath, pageName) {
const localePath = path.join(__dirname, '../../docs', locale.replace('-', '_'), subpath, `${pageName}.md`);
const defaultPath = path.join(__dirname, '../../docs', 'en_US', subpath, `${pageName}.md`);
if (fs.existsSync(localePath)) {
return {
content: parseDocs(fs.readFileSync(localePath, 'utf8')),
MDLocale: locale,
};
} else if (fs.existsSync(defaultPath)) {
return {
content: parseDocs(fs.readFileSync(defaultPath, 'utf8')),
MDLocale: 'en-US'
};
} else {
return {
content: null,
MDLocale: null
};
}
}
function parseDocs(rawDocs) {
if (rawDocs) {
let markedContent = marked(rawDocs);
markedContent = markedContent.replaceAll(/\[yt-iframe\]\(.{11}\)/g, (match) => {
const videoIDRegex = /(?<=\[yt-iframe\]\().*(?=\))/g;
const videoID = match.match(videoIDRegex)[0];
return `<div class="aspectratio-fallback"><iframe src="https://www.youtube-nocookie.com/embed/${videoID}" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe></div>`;
});
const htmlContent = marked.parse(markedContent);
return htmlContent;
} else {
return null;
}
}
router.get('/:page', async (request, response, next) => {
const renderData = {};
@@ -72,7 +39,7 @@ router.get('/:page', async (request, response, next) => {
const pageName = request.params.page;
renderData.currentPage = pageName;
const { content, MDLocale } = getRawDocs(locale, '', pageName);
const { content, MDLocale } = util.getRawDocs(locale, '', pageName);
if (content) {
renderData.content = content;
} else {
@@ -80,27 +47,26 @@ router.get('/:page', async (request, response, next) => {
}
renderData.missingInLocale = locale !== MDLocale;
// A boolean to show the quick links grid or not.
if (pageName === 'welcome') {
renderData.showQuickLinks = true;
}
response.render('docs/docs', renderData);
});
router.get('/:subpath/:page', async (request, response, next) => {
const renderData = {};
router.get('/:subpath/:page', async (request, response, next) => {
const locale = response.locals.localeString;
const pageName = request.params.page;
const subpath = request.params.subpath;
renderData.currentPage = `${subpath}/${pageName}`;
const { content, MDLocale } = getRawDocs(locale, subpath, pageName);
const renderData = {
currentPage: `${subpath}/${pageName}`
};
const { content, MDLocale } = util.getRawDocs(locale, subpath, pageName);
if (content) {
renderData.content = content;
} else {
return next();
}
renderData.missingInLocale = locale !== MDLocale;
response.render('docs/docs', renderData);