diff --git a/client/components/admin/admin-general.vue b/client/components/admin/admin-general.vue index 24829c8c1e..85561381cc 100644 --- a/client/components/admin/admin-general.vue +++ b/client/components/admin/admin-general.vue @@ -164,6 +164,19 @@ //- 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') @@ -202,7 +215,8 @@ export default { featurePageRatings: false, featurePageComments: false, featurePersonalWikis: false, - featureTinyPNG: false + featureTinyPNG: false, + pageExtensions: '' }, metaRobots: [ { text: 'Index', value: 'index' }, @@ -247,32 +261,34 @@ export default { await this.$apollo.mutate({ mutation: gql` mutation ( - $host: String! - $title: String! - $description: String! - $robots: [String]! - $analyticsService: String! - $analyticsId: String! - $company: String! - $contentLicense: String! - $logoUrl: String! - $featurePageRatings: Boolean! - $featurePageComments: Boolean! - $featurePersonalWikis: Boolean! + $host: String + $title: String + $description: String + $robots: [String] + $analyticsService: String + $analyticsId: String + $company: String + $contentLicense: String + $logoUrl: String + $pageExtensions: String + $featurePageRatings: Boolean + $featurePageComments: Boolean + $featurePersonalWikis: Boolean ) { site { updateConfig( - host: $host, - title: $title, - description: $description, - robots: $robots, - analyticsService: $analyticsService, - analyticsId: $analyticsId, - company: $company, - contentLicense: $contentLicense, - logoUrl: $logoUrl, - featurePageRatings: $featurePageRatings, - featurePageComments: $featurePageComments, + host: $host + title: $title + description: $description + robots: $robots + analyticsService: $analyticsService + analyticsId: $analyticsId + company: $company + contentLicense: $contentLicense + logoUrl: $logoUrl + pageExtensions: $pageExtensions + featurePageRatings: $featurePageRatings + featurePageComments: $featurePageComments featurePersonalWikis: $featurePersonalWikis ) { responseResult { @@ -295,6 +311,7 @@ export default { company: _.get(this.config, 'company', ''), contentLicense: _.get(this.config, 'contentLicense', ''), logoUrl: _.get(this.config, 'logoUrl', ''), + pageExtensions: _.get(this.config, 'pageExtensions', ''), featurePageRatings: _.get(this.config, 'featurePageRatings', false), featurePageComments: _.get(this.config, 'featurePageComments', false), featurePersonalWikis: _.get(this.config, 'featurePersonalWikis', false) @@ -347,6 +364,7 @@ export default { company contentLicense logoUrl + pageExtensions featurePageRatings featurePageComments featurePersonalWikis diff --git a/server/app/data.yml b/server/app/data.yml index ca48a5eae7..c122145e0a 100644 --- a/server/app/data.yml +++ b/server/app/data.yml @@ -45,6 +45,10 @@ defaults: company: '' contentLicense: '' logoUrl: https://static.requarks.io/logo/wikijs-butterfly.svg + pageExtensions: + - md + - html + - txt mail: host: '' secure: true @@ -152,8 +156,4 @@ reservedPaths: - img - js - svg -pageExtensions: - - md - - html - - txt # --------------------------------- diff --git a/server/controllers/common.js b/server/controllers/common.js index 052c375748..0cd47db22b 100644 --- a/server/controllers/common.js +++ b/server/controllers/common.js @@ -414,7 +414,7 @@ router.get('/_userav/:uid', async (req, res, next) => { * View document / asset */ 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 isPage = (stripExt || pageArgs.path.indexOf('.') === -1) diff --git a/server/graph/resolvers/site.js b/server/graph/resolvers/site.js index f36b2f7f46..255bef525d 100644 --- a/server/graph/resolvers/site.js +++ b/server/graph/resolvers/site.js @@ -18,6 +18,7 @@ module.exports = { company: WIKI.config.company, contentLicense: WIKI.config.contentLicense, logoUrl: WIKI.config.logoUrl, + pageExtensions: WIKI.config.pageExtensions.join(', '), ...WIKI.config.seo, ...WIKI.config.features, ...WIKI.config.security, @@ -62,6 +63,10 @@ module.exports = { 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 = { description: _.get(args, 'description', WIKI.config.seo.description), robots: _.get(args, 'robots', WIKI.config.seo.robots), @@ -104,7 +109,7 @@ module.exports = { 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) { WIKI.app.enable('trust proxy') diff --git a/server/graph/schemas/site.graphql b/server/graph/schemas/site.graphql index 5544fffe8c..9ff3663985 100644 --- a/server/graph/schemas/site.graphql +++ b/server/graph/schemas/site.graphql @@ -33,6 +33,7 @@ type SiteMutation { company: String contentLicense: String logoUrl: String + pageExtensions: String authAutoLogin: Boolean authEnforce2FA: Boolean authHideLocal: Boolean @@ -74,6 +75,7 @@ type SiteConfig { company: String contentLicense: String logoUrl: String + pageExtensions: String authAutoLogin: Boolean authEnforce2FA: Boolean authHideLocal: Boolean