feat(admin): make page extensions configurable

This commit is contained in:
NGPixel 2022-06-24 22:20:36 -04:00
parent 18ac9da4c7
commit 48077fc9e5
No known key found for this signature in database
GPG Key ID: 8FDA2F1757F60D63
5 changed files with 55 additions and 30 deletions

View File

@ -164,6 +164,19 @@
//- disabled //- disabled
//- ) //- )
v-card.mt-5.animated.fadeInUp.wait-p6s
v-toolbar(color='primary', dark, dense, flat)
v-toolbar-title.subtitle-1 URL Handling
v-card-text
v-text-field(
outlined
:label='$t(`admin:general.pageExtensions`)'
v-model='config.pageExtensions'
prepend-icon='mdi-format-text-wrapping-overflow'
:hint='$t(`admin:general.pageExtensionsHint`)'
persistent-hint
)
component(:is='activeModal') component(:is='activeModal')
</template> </template>
@ -202,7 +215,8 @@ export default {
featurePageRatings: false, featurePageRatings: false,
featurePageComments: false, featurePageComments: false,
featurePersonalWikis: false, featurePersonalWikis: false,
featureTinyPNG: false featureTinyPNG: false,
pageExtensions: ''
}, },
metaRobots: [ metaRobots: [
{ text: 'Index', value: 'index' }, { text: 'Index', value: 'index' },
@ -247,32 +261,34 @@ export default {
await this.$apollo.mutate({ await this.$apollo.mutate({
mutation: gql` mutation: gql`
mutation ( mutation (
$host: String! $host: String
$title: String! $title: String
$description: String! $description: String
$robots: [String]! $robots: [String]
$analyticsService: String! $analyticsService: String
$analyticsId: String! $analyticsId: String
$company: String! $company: String
$contentLicense: String! $contentLicense: String
$logoUrl: String! $logoUrl: String
$featurePageRatings: Boolean! $pageExtensions: String
$featurePageComments: Boolean! $featurePageRatings: Boolean
$featurePersonalWikis: Boolean! $featurePageComments: Boolean
$featurePersonalWikis: Boolean
) { ) {
site { site {
updateConfig( updateConfig(
host: $host, host: $host
title: $title, title: $title
description: $description, description: $description
robots: $robots, robots: $robots
analyticsService: $analyticsService, analyticsService: $analyticsService
analyticsId: $analyticsId, analyticsId: $analyticsId
company: $company, company: $company
contentLicense: $contentLicense, contentLicense: $contentLicense
logoUrl: $logoUrl, logoUrl: $logoUrl
featurePageRatings: $featurePageRatings, pageExtensions: $pageExtensions
featurePageComments: $featurePageComments, featurePageRatings: $featurePageRatings
featurePageComments: $featurePageComments
featurePersonalWikis: $featurePersonalWikis featurePersonalWikis: $featurePersonalWikis
) { ) {
responseResult { responseResult {
@ -295,6 +311,7 @@ export default {
company: _.get(this.config, 'company', ''), company: _.get(this.config, 'company', ''),
contentLicense: _.get(this.config, 'contentLicense', ''), contentLicense: _.get(this.config, 'contentLicense', ''),
logoUrl: _.get(this.config, 'logoUrl', ''), logoUrl: _.get(this.config, 'logoUrl', ''),
pageExtensions: _.get(this.config, 'pageExtensions', ''),
featurePageRatings: _.get(this.config, 'featurePageRatings', false), featurePageRatings: _.get(this.config, 'featurePageRatings', false),
featurePageComments: _.get(this.config, 'featurePageComments', false), featurePageComments: _.get(this.config, 'featurePageComments', false),
featurePersonalWikis: _.get(this.config, 'featurePersonalWikis', false) featurePersonalWikis: _.get(this.config, 'featurePersonalWikis', false)
@ -347,6 +364,7 @@ export default {
company company
contentLicense contentLicense
logoUrl logoUrl
pageExtensions
featurePageRatings featurePageRatings
featurePageComments featurePageComments
featurePersonalWikis featurePersonalWikis

View File

@ -45,6 +45,10 @@ defaults:
company: '' company: ''
contentLicense: '' contentLicense: ''
logoUrl: https://static.requarks.io/logo/wikijs-butterfly.svg logoUrl: https://static.requarks.io/logo/wikijs-butterfly.svg
pageExtensions:
- md
- html
- txt
mail: mail:
host: '' host: ''
secure: true secure: true
@ -152,8 +156,4 @@ reservedPaths:
- img - img
- js - js
- svg - svg
pageExtensions:
- md
- html
- txt
# --------------------------------- # ---------------------------------

View File

@ -414,7 +414,7 @@ router.get('/_userav/:uid', async (req, res, next) => {
* View document / asset * View document / asset
*/ */
router.get('/*', async (req, res, next) => { router.get('/*', async (req, res, next) => {
const stripExt = _.some(WIKI.data.pageExtensions, ext => _.endsWith(req.path, `.${ext}`)) const stripExt = _.some(WIKI.config.pageExtensions, ext => _.endsWith(req.path, `.${ext}`))
const pageArgs = pageHelper.parsePath(req.path, { stripExt }) const pageArgs = pageHelper.parsePath(req.path, { stripExt })
const isPage = (stripExt || pageArgs.path.indexOf('.') === -1) const isPage = (stripExt || pageArgs.path.indexOf('.') === -1)

View File

@ -18,6 +18,7 @@ module.exports = {
company: WIKI.config.company, company: WIKI.config.company,
contentLicense: WIKI.config.contentLicense, contentLicense: WIKI.config.contentLicense,
logoUrl: WIKI.config.logoUrl, logoUrl: WIKI.config.logoUrl,
pageExtensions: WIKI.config.pageExtensions.join(', '),
...WIKI.config.seo, ...WIKI.config.seo,
...WIKI.config.features, ...WIKI.config.features,
...WIKI.config.security, ...WIKI.config.security,
@ -62,6 +63,10 @@ module.exports = {
WIKI.config.logoUrl = _.trim(args.logoUrl) WIKI.config.logoUrl = _.trim(args.logoUrl)
} }
if (args.hasOwnProperty('pageExtensions')) {
WIKI.config.pageExtensions = _.trim(args.pageExtensions).split(',').map(p => p.trim().toLowerCase()).filter(p => p !== '')
}
WIKI.config.seo = { WIKI.config.seo = {
description: _.get(args, 'description', WIKI.config.seo.description), description: _.get(args, 'description', WIKI.config.seo.description),
robots: _.get(args, 'robots', WIKI.config.seo.robots), robots: _.get(args, 'robots', WIKI.config.seo.robots),
@ -104,7 +109,7 @@ module.exports = {
forceDownload: _.get(args, 'uploadForceDownload', WIKI.config.uploads.forceDownload) forceDownload: _.get(args, 'uploadForceDownload', WIKI.config.uploads.forceDownload)
} }
await WIKI.configSvc.saveToDb(['host', 'title', 'company', 'contentLicense', 'seo', 'logoUrl', 'auth', 'features', 'security', 'uploads']) await WIKI.configSvc.saveToDb(['host', 'title', 'company', 'contentLicense', 'seo', 'logoUrl', 'pageExtensions', 'auth', 'features', 'security', 'uploads'])
if (WIKI.config.security.securityTrustProxy) { if (WIKI.config.security.securityTrustProxy) {
WIKI.app.enable('trust proxy') WIKI.app.enable('trust proxy')

View File

@ -33,6 +33,7 @@ type SiteMutation {
company: String company: String
contentLicense: String contentLicense: String
logoUrl: String logoUrl: String
pageExtensions: String
authAutoLogin: Boolean authAutoLogin: Boolean
authEnforce2FA: Boolean authEnforce2FA: Boolean
authHideLocal: Boolean authHideLocal: Boolean
@ -74,6 +75,7 @@ type SiteConfig {
company: String company: String
contentLicense: String contentLicense: String
logoUrl: String logoUrl: String
pageExtensions: String
authAutoLogin: Boolean authAutoLogin: Boolean
authEnforce2FA: Boolean authEnforce2FA: Boolean
authHideLocal: Boolean authHideLocal: Boolean