feat: simplified setup

pull/901/head
Nick 5 years ago
parent 6e09522e89
commit 4f968cf230

@ -31,7 +31,7 @@
v-list-tile-content v-list-tile-content
v-list-tile-title.body-1 Setup analytics v-list-tile-title.body-1 Setup analytics
v-list-tile-subtitle.caption: em Installation checkpoint reached v-list-tile-subtitle.caption: em Installation checkpoint reached
.body-1.pl-3 Note that any data collected is stored for a maximum of 180 days, after which it is permanently deleted. .body-1.pl-3 Note that crash debug data is stored for a maximum of 30 days while analytics are stored for a maximum of 16 months, after which it is permanently deleted.
v-divider.my-3 v-divider.my-3
v-subheader What is it used for? v-subheader What is it used for?
.body-1.pl-3 Telemetry is used by developers to improve Wiki.js, mostly for the following reasons: .body-1.pl-3 Telemetry is used by developers to improve Wiki.js, mostly for the following reasons:

@ -1,83 +1,21 @@
<template lang="pug"> <template lang="pug">
v-app.setup v-app.setup
v-toolbar(color='blue darken-2', dark, app, clipped-left, fixed, flat) v-content
v-spacer v-container
v-toolbar-title v-layout
span.subheading Wiki.js {{wikiVersion}} v-flex(xs12, lg6, offset-lg3)
v-spacer v-card.radius-7
v-content.white
v-progress-linear.ma-0(indeterminate, height='4', :active='loading')
v-stepper.elevation-0(v-model='state')
v-stepper-header
v-stepper-step(step='1' :complete='state > 1')
| Welcome
small Wiki.js Installation Wizard
v-divider
v-stepper-step(step='2' :complete='state > 2')
| Administration Account
small Create the admin account
v-divider(v-if='this.conf.upgrade')
v-stepper-step(step='3' :complete='state > 3', v-if='this.conf.upgrade')
| Upgrade from Wiki.js 1.x
small Migrate your existing installation
v-divider
v-stepper-step(:step='this.conf.upgrade ? 4 : 3' :complete='this.conf.upgrade ? state > 3 : state > 4')
| Final Steps
small Finalizing your installation
v-stepper-items
//- ==============================================
//- WELCOME
//- ==============================================
v-stepper-content(step='1')
v-card.text-xs-center.pa-3(flat)
img(src='/svg/logo-wikijs.svg', alt='Wiki.js Logo', style='width: 300px;')
.text-xs-center .text-xs-center
.body-2.py-2 This installation wizard will guide you through the steps needed to get your wiki up and running in no time! img.setup-logo(src='/svg/logo-wikijs.svg', alt='Wiki.js Logo')
.body-1 Detailed information about installation and usage can be found on the #[a(href='https://wiki.requarks.io/docs') official documentation site]. v-alert(color='indigo lighten-5', icon='open_in_browser', :value='true')
.body-1 Should you have any question or would like to report something that doesn't look right, feel free to create a new issue on the #[a(href='https://github.com/Requarks/wiki/issues') GitHub project].
.body-1.py-3
v-icon.mr-2(color='indigo') open_in_browser
span.indigo--text You are about to install Wiki.js #[strong {{wikiVersion}}]. span.indigo--text You are about to install Wiki.js #[strong {{wikiVersion}}].
v-btn.mt-4(color='primary', @click='proceedToAdmin', :disabled='loading', large) v-card-text
span Start .body-2.pl-3 Create Administrator Account
v-icon(right) arrow_forward v-container.pa-3(grid-list-xl)
v-divider.my-5
.body-2 Additional Setup Options
div(style='display:inline-block;')
v-checkbox(
color='primary',
v-model='conf.telemetry',
label='Allow Telemetry',
persistent-hint,
hint='Help Wiki.js developers improve this app with anonymized telemetry.'
)
v-checkbox.mt-3(
color='primary',
v-model='conf.upgrade',
label='Upgrade from Wiki.js 1.x',
disabled
persistent-hint,
hint='Check this box if you are upgrading from Wiki.js 1.x and wish to migrate your existing data.'
)
//- ==============================================
//- ADMINISTRATOR ACCOUNT
//- ==============================================
v-stepper-content(step='2')
v-card.text-xs-center(flat)
svg.icons.is-64: use(xlink:href='#nc-man-black')
.subheading Administrator Account
.body-2 A root administrator account will be created for local authentication. From this account, you can create or authorize more users.
v-form
v-container
v-layout(row, wrap) v-layout(row, wrap)
v-flex(xs12) v-flex(xs12)
v-text-field( v-text-field(
outline outline
background-color='grey lighten-2'
v-model='conf.adminEmail', v-model='conf.adminEmail',
label='Administrator Email', label='Administrator Email',
hint='The email address of the administrator account', hint='The email address of the administrator account',
@ -89,10 +27,9 @@
:error-messages='errors.collect(`admin.adminEmail`)' :error-messages='errors.collect(`admin.adminEmail`)'
ref='adminEmailInput' ref='adminEmailInput'
) )
v-flex.pr-3(xs6) v-flex(xs6)
v-text-field( v-text-field(
outline outline
background-color='grey lighten-2'
ref='adminPassword', ref='adminPassword',
counter='255' counter='255'
v-model='conf.adminPassword', v-model='conf.adminPassword',
@ -111,7 +48,6 @@
v-flex(xs6) v-flex(xs6)
v-text-field( v-text-field(
outline outline
background-color='grey lighten-2'
ref='adminPasswordConfirm', ref='adminPasswordConfirm',
counter='255' counter='255'
v-model='conf.adminPasswordConfirm', v-model='conf.adminPasswordConfirm',
@ -126,74 +62,38 @@
data-vv-as='Confirm Password', data-vv-as='Confirm Password',
data-vv-scope='admin', data-vv-scope='admin',
:error-messages='errors.collect(`admin.adminPasswordConfirm`)' :error-messages='errors.collect(`admin.adminPasswordConfirm`)'
@keyup.enter='proceedToUpgrade' @keyup.enter='install'
) )
.pt-3.text-xs-center v-divider.mb-4
v-btn(@click='proceedToWelcome', :disabled='loading') Back v-checkbox.ml-3(
v-btn(color='primary', @click='proceedToUpgrade', :disabled='loading') Continue color='primary',
v-model='conf.telemetry',
//- ============================================== label='Allow Telemetry',
//- UPGRADE FROM 1.x
//- ==============================================
v-stepper-content(step='3', v-if='conf.upgrade')
v-card.text-xs-center(flat)
svg.icons.is-64: use(xlink:href='#nc-spaceship')
.subheading Upgrade from Wiki.js 1.x
.body-2 Migrating from a Wiki.js 1.x installation is quick and simple.
v-form
v-container
v-layout(row)
v-flex(xs12)
v-text-field(
outline
background-color='grey lighten-2'
v-model='conf.upgMongo',
placeholder='mongodb://',
label='Connection String to Wiki.js 1.x MongoDB database',
persistent-hint, persistent-hint,
hint='A MongoDB database connection string where a Wiki.js 1.x installation is located. No alterations will be made to this database.', hint='Help Wiki.js developers improve this app with anonymized telemetry.'
v-validate='{ required: true, min: 2 }',
data-vv-name='upgMongo',
data-vv-as='MongoDB Connection String',
data-vv-scope='upgrade',
:error-messages='errors.collect(`upgrade.upgMongo`)'
) )
.pt-3.text-xs-center v-alert(:value='error', type='error', icon='warning') {{ errorMessage }}
v-btn(@click='proceedToAdmin', :disabled='loading') Back v-divider.mt-3(v-if='!error')
v-btn(color='primary', @click='proceedToFinal', :disabled='loading') Continue v-card-actions
v-btn(color='primary', @click='install', :disabled='loading', large, flat, block)
//- ============================================== span Install
//- FINAL v-icon(right) arrow_forward
//- ==============================================
v-stepper-content(:step='conf.upgrade ? 4 : 3') v-dialog(v-model='loading', width='450', persistent)
v-card.text-xs-center(flat) v-card(color='primary', dark).radius-7
template(v-if='loading') v-card-text.text-xs-center.py-5
.mt-3(style='width: 64px; display:inline-block;') .py-3(style='width: 64px; display:inline-block;')
breeding-rhombus-spinner( breeding-rhombus-spinner(
:animation-duration='2000' :animation-duration='2000'
:size='64' :size='64'
color='#1976d2' color='#FFF'
) )
.subheading.primary--text.mt-3 Finalizing your installation... template(v-if='!success')
template(v-else-if='final.ok') .subheading Finalizing your installation...
svg.icons.is-64: use(xlink:href='#nc-check-bold') .caption Just a moment
.subheading.green--text Installation complete!
template(v-else) template(v-else)
svg.icons.is-64: use(xlink:href='#nc-square-remove') .subheading Installation complete!
.subheading.red--text Something went wrong... .caption Redirecting...
v-container
v-alert(type='success', outline, :value='!loading && final.ok') Wiki.js was configured successfully and is now ready for use.
v-alert(type='error', outline, :value='!loading && !final.ok') {{ final.error }}
v-divider
.pt-3.text-xs-center
v-btn(@click='!conf.upgrade ? proceedToAdmin() : proceedToUpgrade()', :disabled='loading') Back
v-btn(color='primary', @click='proceedToFinal', v-if='!loading && !final.ok') Try Again
v-btn(color='success', @click='finish', v-if='loading || final.ok', :disabled='loading') Continue
v-footer.pa-3(app, absolute, color='grey darken-3', height='auto')
.caption.grey--text Wiki.js {{wikiVersion}} Installation Wizard
</template> </template>
<script> <script>
@ -206,10 +106,6 @@ export default {
BreedingRhombusSpinner BreedingRhombusSpinner
}, },
props: { props: {
telemetryId: {
type: String,
required: true
},
wikiVersion: { wikiVersion: {
type: String, type: String,
required: true required: true
@ -218,98 +114,53 @@ export default {
data() { data() {
return { return {
loading: false, loading: false,
state: 1, success: false,
final: { error: false,
ok: false, errorMessage: '',
error: '',
redirectUrl: ''
},
conf: { conf: {
adminEmail: '', adminEmail: '',
adminPassword: '', adminPassword: '',
adminPasswordConfirm: '', adminPasswordConfirm: '',
telemetry: true, telemetry: true
upgrade: false,
upgMongo: 'mongodb://'
}, },
pwdMode: true, pwdMode: true,
pwdConfirmMode: true pwdConfirmMode: true
} }
}, },
methods: { mounted() {
proceedToWelcome () {
this.state = 1
this.loading = false
},
async proceedToAdmin () {
if (this.state < 2) {
const validationSuccess = await this.$validator.validateAll('general')
if (!validationSuccess) {
this.state = 1
return
}
}
this.state = 2
this.loading = false
_.delay(() => { _.delay(() => {
this.$refs.adminEmailInput.focus() this.$refs.adminEmailInput.focus()
}, 400) }, 500)
}, },
async proceedToUpgrade () { methods: {
if (this.state < 3) { async install () {
const validationSuccess = await this.$validator.validateAll('admin') const validationSuccess = await this.$validator.validateAll('admin')
if (!validationSuccess || this.conf.adminPassword !== this.conf.adminPasswordConfirm) { if (!validationSuccess || this.conf.adminPassword !== this.conf.adminPasswordConfirm) {
this.state = 2
return return
} }
}
if (this.conf.upgrade) {
this.state = 3
this.loading = false
} else {
this.proceedToFinal()
}
},
async proceedToFinal () {
if (this.conf.upgrade && this.state < 4) {
const validationSuccess = await this.$validator.validateAll('upgrade')
if (!validationSuccess) {
this.state = 3
return
}
}
this.state = this.conf.upgrade ? 4 : 3
this.loading = true this.loading = true
this.final = { this.success = false
ok: false, this.error = false
error: '',
redirectUrl: ''
}
this.$forceUpdate() this.$forceUpdate()
let self = this
_.delay(() => { _.delay(async () => {
axios.post('/finalize', self.conf).then(resp => { try {
const resp = await axios.post('/finalize', this.conf)
if (resp.data.ok === true) { if (resp.data.ok === true) {
this.success = true
_.delay(() => { _.delay(() => {
self.final.ok = true window.location.assign('/login')
self.loading = false }, 3000)
}, 5000)
} else { } else {
self.final.ok = false this.error = true
self.final.error = resp.data.error this.errorMessage = resp.data.error
self.loading = false this.loading = false
} }
self.$nextTick() } catch(err) {
}).catch(err => {
window.alert(err.message) window.alert(err.message)
}) }
}, 1000) }, 1000)
},
finish () {
window.location.assign('/login')
} }
} }
} }
@ -317,5 +168,17 @@ export default {
</script> </script>
<style lang='scss'> <style lang='scss'>
.setup {
.application--wrap {
padding-top: 10vh;
background-color: mc('grey', '900');
background-image: url(/svg/motif-circuit.svg) !important;
background-repeat: repeat;
}
&-logo {
width: 300px;
margin: 3rem 0 2rem 0;
}
}
</style> </style>

@ -349,7 +349,7 @@ module.exports = () => {
// Start HTTP server // Start HTTP server
// ---------------------------------------- // ----------------------------------------
WIKI.logger.info(`HTTP Server on port: [ ${WIKI.config.port} ]`) WIKI.logger.info(`Starting HTTP server on port ${WIKI.config.port}...`)
app.set('port', WIKI.config.port) app.set('port', WIKI.config.port)

Loading…
Cancel
Save