Просмотр исходного кода

feat(admin): make page extensions configurable

NGPixel 2 лет назад
Родитель
Сommit
48077fc9e5

+ 42 - 24
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')
 
 </template>
@@ -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

+ 4 - 4
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
 # ---------------------------------

+ 1 - 1
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)
 

+ 6 - 1
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')

+ 2 - 0
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