* refactor(routes): remove unused sitemap route * style(comments): enforce consistent comment style * style(exports): enforce consistent export style * chore: Add jsDoc for contentful service * chore: Add jsDoc for contentful service \n \n closes #23 * refactor(app): move query parameter comment to right position and mention comment route middleware * test(npm): add temporary test script * refactor(middlewares): split up bootstrap middleware - fixes #23759 * refactor(cookies): use constances to give context the maxAge cookie setting * refactor(variables): use more descriptive names for variables * space became spaceId when it was just the id not the full space instance * all (access) token variable name variants became [api-type]Token * all clients are now called deliveryClient or previewClient * cpa and cda only remain when they are used as actual API id * env variables names adjusted * perf(helpers): only run marked when content is not empty * refactor(comments): fix typos * refactor(comments): add hint why error is logged to console in settings * chore: Add comments to routes and services * refactor(requires): order and group requires * fix(settings): add validation for wrong preview token * chore: Add comments to routes * chore: fix typo * chore: console.error -> throw * chore: move cookie name to a constant * chore: Fix app.js comment * typo: removing t * chore: typos * chore: removed unnecessary comment line sign * chore: newline for readabillity * chore: remove dangling `t` * chore: remove `t`, add `l` * chore: typos * Fleshed out title * build(npm): remove unused dependencies * build(npm): upgrade to latest stable contentful sdk * chore: Addressing David feedbak * fix(credentials): update to match the new space * chore: Addressing code review comments * chore: Addressing code review comments * chore: res -> response, req-> request * chore: include exactly what we need * chore: Address JPs comments * chore: Address JPs comments * chore: Address Fredericks comments * chore: Address Fredericks comments * fixup! chore: Address Fredericks comments * fixup! fixup! chore: Address Fredericks comments * fixup! fixup! fixup! chore: Address Fredericks comments * fixup! fixup! fixup! fixup! chore: Address Fredericks comments * fixup! fixup! fixup! fixup! fixup! chore: Address Fredericks comments * fixup! fixup! fixup! fixup! fixup! fixup! chore: Address Fredericks comments
37 lines
1.2 KiB
JavaScript
37 lines
1.2 KiB
JavaScript
/**
|
|
* This module renders a layout when its route is requested
|
|
* It is used for pages like home page
|
|
*/
|
|
const url = require('url')
|
|
|
|
const { getLandingPage } = require('../services/contentful')
|
|
const attachEntryState = require('./../lib/entry-state')
|
|
|
|
/**
|
|
* Renders a landing page when `/` route is requested
|
|
* based on the pathname an entry is queried from contentful
|
|
* and a view is rendered from the pulled data
|
|
*
|
|
* @param request - Object - Express request
|
|
* @param response - Object - Express response
|
|
* @param next - Function - Express callback
|
|
* @returns {undefined}
|
|
*/
|
|
module.exports.getLandingPage = async (request, response, next) => {
|
|
let pathname = url.parse(request.url).pathname.split('/').filter(Boolean)[0]
|
|
pathname = pathname || 'home'
|
|
let landingPage = await getLandingPage(
|
|
pathname,
|
|
response.locals.currentLocale.code,
|
|
response.locals.currentApi.id
|
|
)
|
|
|
|
// Attach entry state flags when using preview API
|
|
if (response.locals.settings.editorialFeatures && response.locals.currentApi.id === 'cpa') {
|
|
landingPage = await attachEntryState(landingPage)
|
|
}
|
|
|
|
response.render('landingPage', { title: pathname, landingPage })
|
|
}
|
|
|