feat: content license notice option
This commit is contained in:
		| @@ -7,7 +7,7 @@ | ||||
|         v-spacer | ||||
|     v-navigation-drawer.pb-0.admin-sidebar(v-model='adminDrawerShown', app, fixed, clipped, :right='$vuetify.rtl', permanent, width='300') | ||||
|       vue-scroll(:ops='scrollStyle') | ||||
|         v-list(dense, nav) | ||||
|         v-list.radius-0(dense, nav) | ||||
|           v-list-item(to='/dashboard', color='primary') | ||||
|             v-list-item-avatar(size='24', tile): v-icon mdi-view-dashboard-variant | ||||
|             v-list-item-title {{ $t('admin:dashboard.title') }} | ||||
|   | ||||
| @@ -73,6 +73,16 @@ | ||||
|                       persistent-hint | ||||
|                       :hint='$t(`admin:general.companyNameHint`)' | ||||
|                       ) | ||||
|                     v-select.mt-3( | ||||
|                       outlined | ||||
|                       :label='$t(`admin:general.contentLicense`)' | ||||
|                       :items='contentLicenses' | ||||
|                       v-model='config.contentLicense' | ||||
|                       prepend-icon='mdi-creative-commons' | ||||
|                       :return-object='false' | ||||
|                       :hint='$t(`admin:general.contentLicenseHint`)' | ||||
|                       persistent-hint | ||||
|                       ) | ||||
|                   v-divider | ||||
|                   .overline.grey--text.pa-4 SEO | ||||
|                   .px-3.pb-3 | ||||
| @@ -251,8 +261,7 @@ | ||||
| <script> | ||||
| import _ from 'lodash' | ||||
| import { get, sync } from 'vuex-pathify' | ||||
| import siteConfigQuery from 'gql/admin/site/site-query-config.gql' | ||||
| import siteUpdateConfigMutation from 'gql/admin/site/site-mutation-save-config.gql' | ||||
| import gql from 'graphql-tag' | ||||
|  | ||||
| import editorStore from '../../store/editor' | ||||
|  | ||||
| @@ -281,6 +290,7 @@ export default { | ||||
|         analyticsService: '', | ||||
|         analyticsId: '', | ||||
|         company: '', | ||||
|         contentLicense: '', | ||||
|         logoUrl: '', | ||||
|         featureAnalytics: false, | ||||
|         featurePageRatings: false, | ||||
| @@ -317,13 +327,82 @@ export default { | ||||
|     siteTitle: sync('site/title'), | ||||
|     logoUrl: sync('site/logoUrl'), | ||||
|     company: sync('site/company'), | ||||
|     activeModal: sync('editor/activeModal') | ||||
|     contentLicense: sync('site/contentLicense'), | ||||
|     activeModal: sync('editor/activeModal'), | ||||
|     contentLicenses () { | ||||
|       return [ | ||||
|         { value: '', text: this.$t('common:license.none') }, | ||||
|         { value: 'alr', text: this.$t('common:license.alr') }, | ||||
|         { value: 'cc0', text: this.$t('common:license.cc0') }, | ||||
|         { value: 'ccby', text: this.$t('common:license.ccby') }, | ||||
|         { value: 'ccbysa', text: this.$t('common:license.ccbysa') }, | ||||
|         { value: 'ccbynd', text: this.$t('common:license.ccbynd') }, | ||||
|         { value: 'ccbync', text: this.$t('common:license.ccbync') }, | ||||
|         { value: 'ccbyncsa', text: this.$t('common:license.ccbyncsa') }, | ||||
|         { value: 'ccbyncnd', text: this.$t('common:license.ccbyncnd') } | ||||
|       ] | ||||
|     } | ||||
|   }, | ||||
|   methods: { | ||||
|     async save () { | ||||
|       try { | ||||
|         await this.$apollo.mutate({ | ||||
|           mutation: siteUpdateConfigMutation, | ||||
|           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! | ||||
|               $securityIframe: Boolean! | ||||
|               $securityReferrerPolicy: Boolean! | ||||
|               $securityTrustProxy: Boolean! | ||||
|               $securitySRI: Boolean! | ||||
|               $securityHSTS: Boolean! | ||||
|               $securityHSTSDuration: Int! | ||||
|               $securityCSP: Boolean! | ||||
|               $securityCSPDirectives: String! | ||||
|             ) { | ||||
|               site { | ||||
|                 updateConfig( | ||||
|                   host: $host, | ||||
|                   title: $title, | ||||
|                   description: $description, | ||||
|                   robots: $robots, | ||||
|                   analyticsService: $analyticsService, | ||||
|                   analyticsId: $analyticsId, | ||||
|                   company: $company, | ||||
|                   contentLicense: $contentLicense, | ||||
|                   logoUrl: $logoUrl, | ||||
|                   featurePageRatings: $featurePageRatings, | ||||
|                   featurePageComments: $featurePageComments, | ||||
|                   featurePersonalWikis: $featurePersonalWikis, | ||||
|                   securityIframe: $securityIframe, | ||||
|                   securityReferrerPolicy: $securityReferrerPolicy, | ||||
|                   securityTrustProxy: $securityTrustProxy, | ||||
|                   securitySRI: $securitySRI, | ||||
|                   securityHSTS: $securityHSTS, | ||||
|                   securityHSTSDuration: $securityHSTSDuration, | ||||
|                   securityCSP: $securityCSP, | ||||
|                   securityCSPDirectives: $securityCSPDirectives | ||||
|                 ) { | ||||
|                   responseResult { | ||||
|                     succeeded | ||||
|                     errorCode | ||||
|                     slug | ||||
|                     message | ||||
|                   } | ||||
|                 } | ||||
|               } | ||||
|             } | ||||
|           `, | ||||
|           variables: { | ||||
|             host: _.get(this.config, 'host', ''), | ||||
|             title: _.get(this.config, 'title', ''), | ||||
| @@ -332,6 +411,7 @@ export default { | ||||
|             analyticsService: _.get(this.config, 'analyticsService', ''), | ||||
|             analyticsId: _.get(this.config, 'analyticsId', ''), | ||||
|             company: _.get(this.config, 'company', ''), | ||||
|             contentLicense: _.get(this.config, 'contentLicense', ''), | ||||
|             logoUrl: _.get(this.config, 'logoUrl', ''), | ||||
|             featurePageRatings: _.get(this.config, 'featurePageRatings', false), | ||||
|             featurePageComments: _.get(this.config, 'featurePageComments', false), | ||||
| @@ -356,6 +436,7 @@ export default { | ||||
|         }) | ||||
|         this.siteTitle = this.config.title | ||||
|         this.company = this.config.company | ||||
|         this.contentLicense = this.config.contentLicense | ||||
|         this.logoUrl = this.config.logoUrl | ||||
|       } catch (err) { | ||||
|         this.$store.commit('pushGraphError', err) | ||||
| @@ -379,7 +460,34 @@ export default { | ||||
|   }, | ||||
|   apollo: { | ||||
|     config: { | ||||
|       query: siteConfigQuery, | ||||
|       query: gql` | ||||
|         { | ||||
|           site { | ||||
|             config { | ||||
|               host | ||||
|               title | ||||
|               description | ||||
|               robots | ||||
|               analyticsService | ||||
|               analyticsId | ||||
|               company | ||||
|               contentLicense | ||||
|               logoUrl | ||||
|               featurePageRatings | ||||
|               featurePageComments | ||||
|               featurePersonalWikis | ||||
|               securityIframe | ||||
|               securityReferrerPolicy | ||||
|               securityTrustProxy | ||||
|               securitySRI | ||||
|               securityHSTS | ||||
|               securityHSTSDuration | ||||
|               securityCSP | ||||
|               securityCSPDirectives | ||||
|             } | ||||
|           } | ||||
|         } | ||||
|       `, | ||||
|       fetchPolicy: 'network-only', | ||||
|       update: (data) => _.cloneDeep(data.site.config), | ||||
|       watchLoading (isLoading) { | ||||
|   | ||||
| @@ -1,52 +0,0 @@ | ||||
| mutation ( | ||||
|   $host: String! | ||||
|   $title: String! | ||||
|   $description: String! | ||||
|   $robots: [String]! | ||||
|   $analyticsService: String! | ||||
|   $analyticsId: String! | ||||
|   $company: String! | ||||
|   $logoUrl: String! | ||||
|   $featurePageRatings: Boolean! | ||||
|   $featurePageComments: Boolean! | ||||
|   $featurePersonalWikis: Boolean! | ||||
|   $securityIframe: Boolean! | ||||
|   $securityReferrerPolicy: Boolean! | ||||
|   $securityTrustProxy: Boolean! | ||||
|   $securitySRI: Boolean! | ||||
|   $securityHSTS: Boolean! | ||||
|   $securityHSTSDuration: Int! | ||||
|   $securityCSP: Boolean! | ||||
|   $securityCSPDirectives: String! | ||||
| ) { | ||||
|   site { | ||||
|     updateConfig( | ||||
|       host: $host, | ||||
|       title: $title, | ||||
|       description: $description, | ||||
|       robots: $robots, | ||||
|       analyticsService: $analyticsService, | ||||
|       analyticsId: $analyticsId, | ||||
|       company: $company, | ||||
|       logoUrl: $logoUrl, | ||||
|       featurePageRatings: $featurePageRatings, | ||||
|       featurePageComments: $featurePageComments, | ||||
|       featurePersonalWikis: $featurePersonalWikis, | ||||
|       securityIframe: $securityIframe, | ||||
|       securityReferrerPolicy: $securityReferrerPolicy, | ||||
|       securityTrustProxy: $securityTrustProxy, | ||||
|       securitySRI: $securitySRI, | ||||
|       securityHSTS: $securityHSTS, | ||||
|       securityHSTSDuration: $securityHSTSDuration, | ||||
|       securityCSP: $securityCSP, | ||||
|       securityCSPDirectives: $securityCSPDirectives | ||||
|     ) { | ||||
|       responseResult { | ||||
|         succeeded | ||||
|         errorCode | ||||
|         slug | ||||
|         message | ||||
|       } | ||||
|     } | ||||
|   } | ||||
| } | ||||
| @@ -1,25 +0,0 @@ | ||||
| { | ||||
|   site { | ||||
|     config { | ||||
|       host | ||||
|       title | ||||
|       description | ||||
|       robots | ||||
|       analyticsService | ||||
|       analyticsId | ||||
|       company | ||||
|       logoUrl | ||||
|       featurePageRatings | ||||
|       featurePageComments | ||||
|       featurePersonalWikis | ||||
|       securityIframe | ||||
|       securityReferrerPolicy | ||||
|       securityTrustProxy | ||||
|       securitySRI | ||||
|       securityHSTS | ||||
|       securityHSTSDuration | ||||
|       securityCSP | ||||
|       securityCSPDirectives | ||||
|     } | ||||
|   } | ||||
| } | ||||
| @@ -4,6 +4,7 @@ import { make } from 'vuex-pathify' | ||||
|  | ||||
| const state = { | ||||
|   company: siteConfig.company, | ||||
|   contentLicense: siteConfig.contentLicense, | ||||
|   dark: siteConfig.darkMode, | ||||
|   mascot: true, | ||||
|   title: siteConfig.title, | ||||
|   | ||||
| @@ -1,7 +1,9 @@ | ||||
| <template lang="pug"> | ||||
|   v-footer.justify-center(:color='bgColor', inset) | ||||
|     .caption.grey--text.text--darken-1 | ||||
|       span(v-if='company && company.length > 0') {{ $t('common:footer.copyright', { company: company, year: currentYear, interpolation: { escapeValue: false } }) }} |  | ||||
|       template(v-if='company && company.length > 0 && contentLicense !== ``') | ||||
|         span(v-if='contentLicense === `alr`') {{ $t('common:footer.copyright', { company: company, year: currentYear, interpolation: { escapeValue: false } }) }} |  | ||||
|         span(v-else) {{ $t('common:footer.license', { company: company, license: $t('common:license.' + contentLicense), interpolation: { escapeValue: false } }) }} |  | ||||
|       span {{ $t('common:footer.poweredBy') }} #[a(href='https://wiki.js.org', ref='nofollow') Wiki.js] | ||||
| </template> | ||||
|  | ||||
| @@ -26,6 +28,7 @@ export default { | ||||
|   }, | ||||
|   computed: { | ||||
|     company: get('site/company'), | ||||
|     contentLicense: get('site/contentLicense'), | ||||
|     darkMode: get('site/dark'), | ||||
|     bgColor() { | ||||
|       if (!this.darkMode) { | ||||
|   | ||||
		Reference in New Issue
	
	Block a user