Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wiki-js
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
1
Issues
1
List
Board
Labels
Milestones
Merge Requests
1
Merge Requests
1
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Jacklull
wiki-js
Commits
2890d9cc
Commit
2890d9cc
authored
Jun 25, 2019
by
Nick
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fix: handle duplicate page entries without render content
parent
4e990d50
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
47 additions
and
28 deletions
+47
-28
common.js
server/controllers/common.js
+31
-27
render-page.js
server/jobs/render-page.js
+6
-0
pages.js
server/models/pages.js
+10
-1
No files found.
server/controllers/common.js
View file @
2890d9cc
...
...
@@ -160,35 +160,39 @@ router.get('/*', async (req, res, next) => {
return
res
.
status
(
403
).
render
(
'unauthorized'
,
{
action
:
'view'
})
}
const
page
=
await
WIKI
.
models
.
pages
.
getPage
({
path
:
pageArgs
.
path
,
locale
:
pageArgs
.
locale
,
userId
:
req
.
user
.
id
,
isPrivate
:
false
})
_
.
set
(
res
,
'locals.siteConfig.lang'
,
pageArgs
.
locale
)
if
(
page
)
{
_
.
set
(
res
.
locals
,
'pageMeta.title'
,
page
.
title
)
_
.
set
(
res
.
locals
,
'pageMeta.description'
,
page
.
description
)
const
sidebar
=
await
WIKI
.
models
.
navigation
.
getTree
({
cache
:
true
})
const
injectCode
=
{
css
:
WIKI
.
config
.
theming
.
injectCSS
,
head
:
WIKI
.
config
.
theming
.
injectHead
,
body
:
WIKI
.
config
.
theming
.
injectBody
}
res
.
render
(
'page'
,
{
page
,
sidebar
,
injectCode
})
}
else
if
(
pageArgs
.
path
===
'home'
)
{
_
.
set
(
res
.
locals
,
'pageMeta.title'
,
'Welcome'
)
res
.
render
(
'welcome'
)
}
else
{
_
.
set
(
res
.
locals
,
'pageMeta.title'
,
'Page Not Found'
)
if
(
WIKI
.
auth
.
checkAccess
(
req
.
user
,
[
'write:pages'
],
pageArgs
))
{
res
.
status
(
404
).
render
(
'new'
,
{
pagePath
:
req
.
path
})
try
{
const
page
=
await
WIKI
.
models
.
pages
.
getPage
({
path
:
pageArgs
.
path
,
locale
:
pageArgs
.
locale
,
userId
:
req
.
user
.
id
,
isPrivate
:
false
})
_
.
set
(
res
,
'locals.siteConfig.lang'
,
pageArgs
.
locale
)
if
(
page
)
{
_
.
set
(
res
.
locals
,
'pageMeta.title'
,
page
.
title
)
_
.
set
(
res
.
locals
,
'pageMeta.description'
,
page
.
description
)
const
sidebar
=
await
WIKI
.
models
.
navigation
.
getTree
({
cache
:
true
})
const
injectCode
=
{
css
:
WIKI
.
config
.
theming
.
injectCSS
,
head
:
WIKI
.
config
.
theming
.
injectHead
,
body
:
WIKI
.
config
.
theming
.
injectBody
}
res
.
render
(
'page'
,
{
page
,
sidebar
,
injectCode
})
}
else
if
(
pageArgs
.
path
===
'home'
)
{
_
.
set
(
res
.
locals
,
'pageMeta.title'
,
'Welcome'
)
res
.
render
(
'welcome'
)
}
else
{
res
.
status
(
404
).
render
(
'notfound'
,
{
action
:
'view'
})
_
.
set
(
res
.
locals
,
'pageMeta.title'
,
'Page Not Found'
)
if
(
WIKI
.
auth
.
checkAccess
(
req
.
user
,
[
'write:pages'
],
pageArgs
))
{
res
.
status
(
404
).
render
(
'new'
,
{
pagePath
:
req
.
path
})
}
else
{
res
.
status
(
404
).
render
(
'notfound'
,
{
action
:
'view'
})
}
}
}
catch
(
err
)
{
next
(
err
)
}
}
else
{
if
(
!
WIKI
.
auth
.
checkAccess
(
req
.
user
,
[
'read:assets'
],
pageArgs
))
{
...
...
server/jobs/render-page.js
View file @
2890d9cc
...
...
@@ -18,6 +18,12 @@ module.exports = async (pageId) => {
const
pipeline
=
await
WIKI
.
models
.
renderers
.
getRenderingPipeline
(
page
.
contentType
)
let
output
=
page
.
content
if
(
_
.
isEmpty
(
page
.
content
))
{
await
WIKI
.
models
.
knex
.
destroy
()
WIKI
.
logger
.
warn
(
`Failed to render page ID
${
pageId
}
because content was empty: [ FAILED ]`
)
}
for
(
let
core
of
pipeline
)
{
const
renderer
=
require
(
`../modules/rendering/
${
_
.
kebabCase
(
core
.
key
)}
/renderer.js`
)
output
=
await
renderer
.
render
.
call
({
...
...
server/models/pages.js
View file @
2890d9cc
...
...
@@ -306,11 +306,20 @@ module.exports = class Page extends Model {
}
static
async
getPage
(
opts
)
{
// -> Get from cache first
let
page
=
await
WIKI
.
models
.
pages
.
getPageFromCache
(
opts
)
if
(
!
page
)
{
// -> Get from DB
page
=
await
WIKI
.
models
.
pages
.
getPageFromDb
(
opts
)
if
(
page
)
{
await
WIKI
.
models
.
pages
.
savePageToCache
(
page
)
if
(
page
.
render
)
{
// -> Save render to cache
await
WIKI
.
models
.
pages
.
savePageToCache
(
page
)
}
else
{
// -> No render? Possible duplicate issue
/* TODO: Detect duplicate and delete */
throw
new
Error
(
'Error while fetching page. Duplicate entry detected. Reload the page to try again.'
)
}
}
}
return
page
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment