adding paged

develop
HerrHase 2 years ago
parent 8c165e3121
commit 19a4579134

@ -10,7 +10,7 @@ const server = fastify()
/** /**
* Add liquidjs * add liquidjs
* *
* *
*/ */
@ -33,9 +33,10 @@ server.register(view, {
/** /**
* adding preHandler * adding preHandler
* *
*
*/ */
import SettingsStore from './stores/settings.js' import SettingsStore from './stores/Settings.js'
// getting options from directus add to all views // getting options from directus add to all views
server.addHook('preHandler', async function (request, response) { server.addHook('preHandler', async function (request, response) {
@ -48,21 +49,35 @@ server.addHook('preHandler', async function (request, response) {
}) })
// check url for paged // check url for paged
server.addHook('preHandler', async function (request, response) { server.addHook('onRequest', async function (request, response) {
const url = request.url
const url = new URL(request.params.url) let pathname = url.split('/')
const pathname = url.pathname.split('/') pathname.shift()
// default value for paged // default value for paged
let paged = 1 let paged = 1
// check if pathname has values // check if pathname has values
if (pathname.length > 0) { if (pathname.length > 0) {
const result = pathname[pathname.length - 1]
// try to get number
const result = Number(pathname[pathname.length - 1])
// is result is integer // is result is integer
if (Number.isInteger(result)) { if (Number.isInteger(result)) {
paged = result paged = result
// remove last element
pathname.pop()
// @TODO change, thats looks strange
if (pathname.length > 0) {
request.raw.url = pathname.join('/')
} else {
request.raw.url = '/'
}
} }
} }
@ -72,7 +87,12 @@ server.addHook('preHandler', async function (request, response) {
} }
}) })
// routing
/**
* routing
*
*
*/
import commentHttp from './http/api/comment.js' import commentHttp from './http/api/comment.js'

@ -10,7 +10,7 @@
*/ */
const directusResponseHandler = { const directusResponseHandler = {
async one(entity, response) { single(entity, response) {
// if data is empty redirect to 404 // if data is empty redirect to 404
if (entity.data.length === 0) { if (entity.data.length === 0) {

@ -1,4 +1,4 @@
import CommentStore from './../stores/comment.js' import CommentStore from './../../stores/comment.js'
import path from 'path' import path from 'path'
/** /**

@ -28,9 +28,8 @@ export default async function(fastify, opts) {
const pageStore = new PageStore() const pageStore = new PageStore()
// getting single page // getting single page
let page = await pageStore.findOneByPermalink(request.url) const page = await pageStore.findOneByPermalink(request.url)
directusResponseHandler.getOne(page, response) response.page = directusResponseHandler.single(page, response)
}) })
/** /**
@ -42,7 +41,7 @@ export default async function(fastify, opts) {
*/ */
fastify.get('/*', async function(request, response) { fastify.get('/*', async function(request, response) {
return response.view('../frontend/views/templates/page/' + response.page.data.template, { return response.view('../frontend/views/templates/page/' + response.page.data.template, {
'page' : page 'page' : response.page
}) })
}) })
} }

@ -38,7 +38,7 @@ export default async function(fastify, opts) {
* *
*/ */
fastify.get('/:slug([-a-zA-Z0-9]{0,255})', async function(request, response) { fastify.get('/:slug([-a-zA-Z0-9]{0,255})', async function(request, response) {
response.view('../frontend/views/templates/post/' + response.post.data..template, { response.view('../frontend/views/templates/post/' + response.post.data.template, {
'page' : post 'page' : post
}) })
}) })

@ -45,4 +45,4 @@ class CommentStore extends DirectusAbstractStore {
} }
export default PageStore export default CommentStore
Loading…
Cancel
Save