175 lines
5.7 KiB
Vue
175 lines
5.7 KiB
Vue
<template lang='pug'>
|
|
v-container(fluid, grid-list-lg)
|
|
v-layout(row wrap)
|
|
v-flex(xs12)
|
|
.admin-header
|
|
img.animated.fadeInUp(src='/_assets/svg/icon-installing-updates.svg', alt='Extensions', style='width: 80px;')
|
|
.admin-header-title
|
|
.headline.primary--text.animated.fadeInLeft {{ $t('admin:extensions.title') }}
|
|
.subtitle-1.grey--text.animated.fadeInLeft {{ $t('admin:extensions.subtitle') }}
|
|
v-form.pt-3
|
|
v-layout(row wrap)
|
|
v-flex(xl6 lg8 xs12)
|
|
v-alert.mb-4(outlined, color='error', icon='mdi-alert')
|
|
span New extensions cannot be installed at the moment. This feature is coming in a future release.
|
|
v-expansion-panels.admin-extensions-exp(hover, popout)
|
|
v-expansion-panel(v-for='ext of extensions', :key='`ext-` + ext.key')
|
|
v-expansion-panel-header(disable-icon-rotate)
|
|
span {{ext.title}}
|
|
template(v-slot:actions)
|
|
v-chip(label, color='success', small, v-if='ext.installed') Installed
|
|
v-chip(label, color='warning', small, v-else) Not Installed
|
|
v-expansion-panel-content.pa-0
|
|
v-card(flat, :class='$vuetify.theme.dark ? `grey darken-3` : `grey lighten-5`', tile)
|
|
v-card-text
|
|
.body-2 {{ext.description}}
|
|
v-divider.my-4
|
|
.body-2
|
|
strong.mr-3 Supported Platforms:
|
|
v-chip.mr-1(label, small, :color='ext.platforms[`linux-amd64`] ? `success` : `error`') Linux (x64)
|
|
v-chip.mr-1(label, small, :color='ext.platforms[`linux-arm64`] ? `success` : `error`') Linux (arm64)
|
|
v-chip.mr-1(label, small, :color='ext.platforms[`linux-armv7`] ? `success` : `error`') Linux (armv7)
|
|
v-chip.mr-1(label, small, :color='ext.platforms.macos ? `success` : `error`') MacOS
|
|
v-chip.mr-1(label, small, :color='ext.platforms.windows ? `success` : `error`') Windows
|
|
v-card-chin
|
|
v-spacer
|
|
v-btn(disabled)
|
|
v-icon(left) mdi-plus
|
|
span Install
|
|
|
|
</template>
|
|
|
|
<script>
|
|
import _ from 'lodash'
|
|
import gql from 'graphql-tag'
|
|
|
|
export default {
|
|
data() {
|
|
return {
|
|
config: {},
|
|
extensions: [
|
|
{
|
|
key: 'git',
|
|
title: 'Git',
|
|
description: 'Distributed version control system. Required for the Git storage module.',
|
|
platforms: {
|
|
'linux-amd64': true,
|
|
'linux-arm64': true,
|
|
'linux-armv7': true,
|
|
'macos': true,
|
|
'windows': true
|
|
},
|
|
installed: true
|
|
},
|
|
{
|
|
key: 'pandoc',
|
|
title: 'Pandoc',
|
|
description: 'Convert between markup formats. Required for converting from other formats such as MediaWiki, AsciiDoc, Textile and other wikis.',
|
|
platforms: {
|
|
'linux-amd64': true,
|
|
'linux-arm64': false,
|
|
'linux-armv7': false,
|
|
'macos': true,
|
|
'windows': true
|
|
},
|
|
installed: false
|
|
},
|
|
{
|
|
key: 'puppeteer',
|
|
title: 'Puppeteer',
|
|
description: 'Headless chromium browser for server-side rendering. Required for generating PDF versions of pages and render content elements on the server (e.g. Mermaid diagrams)',
|
|
platforms: {
|
|
'linux-amd64': true,
|
|
'linux-arm64': false,
|
|
'linux-armv7': false,
|
|
'macos': true,
|
|
'windows': true
|
|
},
|
|
installed: false
|
|
},
|
|
{
|
|
key: 'sharp',
|
|
title: 'Sharp',
|
|
description: 'Process and transform images. Required to generate thumbnails of uploaded images and perform transformations.',
|
|
platforms: {
|
|
'linux-amd64': true,
|
|
'linux-arm64': false,
|
|
'linux-armv7': false,
|
|
'macos': true,
|
|
'windows': true
|
|
},
|
|
installed: false
|
|
}
|
|
]
|
|
}
|
|
},
|
|
computed: {
|
|
},
|
|
methods: {
|
|
async save () {
|
|
try {
|
|
await this.$apollo.mutate({
|
|
mutation: gql`
|
|
mutation (
|
|
$host: String!
|
|
) {
|
|
site {
|
|
updateConfig(
|
|
host: $host
|
|
) {
|
|
responseResult {
|
|
succeeded
|
|
errorCode
|
|
slug
|
|
message
|
|
}
|
|
}
|
|
}
|
|
}
|
|
`,
|
|
variables: {
|
|
host: _.get(this.config, 'host', '')
|
|
},
|
|
watchLoading (isLoading) {
|
|
this.$store.commit(`loading${isLoading ? 'Start' : 'Stop'}`, 'admin-site-update')
|
|
}
|
|
})
|
|
this.$store.commit('showNotification', {
|
|
style: 'success',
|
|
message: 'Configuration saved successfully.',
|
|
icon: 'check'
|
|
})
|
|
} catch (err) {
|
|
this.$store.commit('pushGraphError', err)
|
|
}
|
|
}
|
|
}
|
|
// apollo: {
|
|
// config: {
|
|
// query: gql`
|
|
// {
|
|
// site {
|
|
// config {
|
|
// host
|
|
// }
|
|
// }
|
|
// }
|
|
// `,
|
|
// fetchPolicy: 'network-only',
|
|
// update: (data) => _.cloneDeep(data.site.config),
|
|
// watchLoading (isLoading) {
|
|
// this.$store.commit(`loading${isLoading ? 'Start' : 'Stop'}`, 'admin-site-refresh')
|
|
// }
|
|
// }
|
|
// }
|
|
}
|
|
</script>
|
|
|
|
<style lang='scss'>
|
|
.admin-extensions-exp {
|
|
.v-expansion-panel-content__wrap {
|
|
padding: 0;
|
|
}
|
|
}
|
|
</style>
|