From 19a45791347c0875af69c885fc745f2d90a730bf Mon Sep 17 00:00:00 2001 From: HerrHase Date: Thu, 28 Jul 2022 23:03:12 +0200 Subject: [PATCH] adding paged --- packages/server/_bootstrap.js | 34 +++++++++++++++---- packages/server/handlers/directusResponse.js | 2 +- packages/server/http/api/comment.js | 2 +- packages/server/http/page.js | 7 ++-- packages/server/http/post.js | 2 +- .../server/stores/{Comment.js => comment.js} | 2 +- 6 files changed, 34 insertions(+), 15 deletions(-) rename packages/server/stores/{Comment.js => comment.js} (96%) diff --git a/packages/server/_bootstrap.js b/packages/server/_bootstrap.js index e949a44..e25b581 100644 --- a/packages/server/_bootstrap.js +++ b/packages/server/_bootstrap.js @@ -10,7 +10,7 @@ const server = fastify() /** - * Add liquidjs + * add liquidjs * * */ @@ -33,9 +33,10 @@ server.register(view, { /** * adding preHandler * + * */ -import SettingsStore from './stores/settings.js' +import SettingsStore from './stores/Settings.js' // getting options from directus add to all views server.addHook('preHandler', async function (request, response) { @@ -48,21 +49,35 @@ server.addHook('preHandler', async function (request, response) { }) // 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) - const pathname = url.pathname.split('/') + let pathname = url.split('/') + pathname.shift() // default value for paged let paged = 1 // check if pathname has values 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 if (Number.isInteger(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' diff --git a/packages/server/handlers/directusResponse.js b/packages/server/handlers/directusResponse.js index e7df571..9cd9195 100644 --- a/packages/server/handlers/directusResponse.js +++ b/packages/server/handlers/directusResponse.js @@ -10,7 +10,7 @@ */ const directusResponseHandler = { - async one(entity, response) { + single(entity, response) { // if data is empty redirect to 404 if (entity.data.length === 0) { diff --git a/packages/server/http/api/comment.js b/packages/server/http/api/comment.js index fb07261..001f746 100644 --- a/packages/server/http/api/comment.js +++ b/packages/server/http/api/comment.js @@ -1,4 +1,4 @@ -import CommentStore from './../stores/comment.js' +import CommentStore from './../../stores/comment.js' import path from 'path' /** diff --git a/packages/server/http/page.js b/packages/server/http/page.js index 135bd4a..2944178 100644 --- a/packages/server/http/page.js +++ b/packages/server/http/page.js @@ -28,9 +28,8 @@ export default async function(fastify, opts) { const pageStore = new PageStore() // getting single page - let page = await pageStore.findOneByPermalink(request.url) - directusResponseHandler.getOne(page, response) - + const page = await pageStore.findOneByPermalink(request.url) + response.page = directusResponseHandler.single(page, response) }) /** @@ -42,7 +41,7 @@ export default async function(fastify, opts) { */ fastify.get('/*', async function(request, response) { return response.view('../frontend/views/templates/page/' + response.page.data.template, { - 'page' : page + 'page' : response.page }) }) } \ No newline at end of file diff --git a/packages/server/http/post.js b/packages/server/http/post.js index f3b479d..b848807 100644 --- a/packages/server/http/post.js +++ b/packages/server/http/post.js @@ -38,7 +38,7 @@ export default async function(fastify, opts) { * */ 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 }) }) diff --git a/packages/server/stores/Comment.js b/packages/server/stores/comment.js similarity index 96% rename from packages/server/stores/Comment.js rename to packages/server/stores/comment.js index 8437389..9a09eec 100644 --- a/packages/server/stores/Comment.js +++ b/packages/server/stores/comment.js @@ -45,4 +45,4 @@ class CommentStore extends DirectusAbstractStore { } -export default PageStore \ No newline at end of file +export default CommentStore \ No newline at end of file