| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309 | 
							- 'use strict'
 
- /* global appconfig */
 
- import jQuery from 'jquery'
 
- import _ from 'lodash'
 
- import Vue from 'vue'
 
- import VeeValidate from 'vee-validate'
 
- import axios from 'axios'
 
- Vue.use(VeeValidate, {
 
-   enableAutoClasses: true,
 
-   classNames: {
 
-     touched: 'is-touched', // the control has been blurred
 
-     untouched: 'is-untouched', // the control hasn't been blurred
 
-     valid: 'is-valid', // model is valid
 
-     invalid: 'is-invalid', // model is invalid
 
-     pristine: 'is-pristine', // control has not been interacted with
 
-     dirty: 'is-dirty' // control has been interacted with
 
-   }
 
- })
 
- jQuery(document).ready(function ($) {
 
-   new Vue({ // eslint-disable-line no-new
 
-     el: 'main',
 
-     data: {
 
-       loading: false,
 
-       state: 'welcome',
 
-       syscheck: {
 
-         ok: false,
 
-         error: '',
 
-         results: []
 
-       },
 
-       dbcheck: {
 
-         ok: false,
 
-         error: ''
 
-       },
 
-       gitcheck: {
 
-         ok: false,
 
-         error: ''
 
-       },
 
-       final: {
 
-         ok: false,
 
-         error: '',
 
-         results: []
 
-       },
 
-       conf: {
 
-         title: appconfig.title || 'Wiki',
 
-         host: appconfig.host || 'http://',
 
-         port: appconfig.port || 80,
 
-         lang: appconfig.lang || 'en',
 
-         public: (appconfig.public === true),
 
-         db: appconfig.db || 'mongodb://localhost:27017/wiki',
 
-         pathData: './data',
 
-         pathRepo: './repo',
 
-         gitUseRemote: (appconfig.git !== false),
 
-         gitUrl: '',
 
-         gitBranch: 'master',
 
-         gitAuthType: 'ssh',
 
-         gitAuthSSHKey: '',
 
-         gitAuthUser: '',
 
-         gitAuthPass: '',
 
-         gitAuthSSL: true,
 
-         gitSignatureName: '',
 
-         gitSignatureEmail: '',
 
-         adminEmail: '',
 
-         adminPassword: '',
 
-         adminPasswordConfirm: ''
 
-       },
 
-       considerations: {
 
-         https: false,
 
-         port: false,
 
-         localhost: false
 
-       }
 
-     },
 
-     computed: {
 
-       currentProgress: function () {
 
-         let perc = '0%'
 
-         switch (this.state) {
 
-           case 'welcome':
 
-             perc = '0%'
 
-             break
 
-           case 'syscheck':
 
-             perc = (this.syscheck.ok) ? '15%' : '5%'
 
-             break
 
-           case 'general':
 
-             perc = '20%'
 
-             break
 
-           case 'considerations':
 
-             perc = '30%'
 
-             break
 
-           case 'db':
 
-             perc = '35%'
 
-             break
 
-           case 'dbcheck':
 
-             perc = (this.dbcheck.ok) ? '50%' : '40%'
 
-             break
 
-           case 'paths':
 
-             perc = '55%'
 
-             break
 
-           case 'git':
 
-             perc = '60%'
 
-             break
 
-           case 'gitcheck':
 
-             perc = (this.gitcheck.ok) ? '75%' : '65%'
 
-             break
 
-           case 'admin':
 
-             perc = '80%'
 
-             break
 
-         }
 
-         return perc
 
-       }
 
-     },
 
-     mounted: function () {
 
-       if (appconfig.paths) {
 
-         this.conf.pathData = appconfig.paths.data || './data'
 
-         this.conf.pathRepo = appconfig.paths.repo || './repo'
 
-       }
 
-       if (appconfig.git !== false && _.isPlainObject(appconfig.git)) {
 
-         this.conf.gitUrl = appconfig.git.url || ''
 
-         this.conf.gitBranch = appconfig.git.branch || 'master'
 
-         if (_.isPlainObject(appconfig.git.auth)) {
 
-           this.conf.gitAuthType = appconfig.git.auth.type || 'ssh'
 
-           this.conf.gitAuthSSHKey = appconfig.git.auth.privateKey || ''
 
-           this.conf.gitAuthUser = appconfig.git.auth.username || ''
 
-           this.conf.gitAuthPass = appconfig.git.auth.password || ''
 
-           this.conf.gitAuthSSL = (appconfig.git.auth.sslVerify !== false)
 
-         }
 
-         if (_.isPlainObject(appconfig.git.signature)) {
 
-           this.conf.gitSignatureName = appconfig.git.signature.name || ''
 
-           this.conf.gitSignatureEmail = appconfig.git.signature.email || ''
 
-         }
 
-       }
 
-     },
 
-     methods: {
 
-       proceedToWelcome: function (ev) {
 
-         this.state = 'welcome'
 
-         this.loading = false
 
-       },
 
-       proceedToSyscheck: function (ev) {
 
-         let self = this
 
-         this.state = 'syscheck'
 
-         this.loading = true
 
-         self.syscheck = {
 
-           ok: false,
 
-           error: '',
 
-           results: []
 
-         }
 
-         _.delay(() => {
 
-           axios.post('/syscheck').then(resp => {
 
-             if (resp.data.ok === true) {
 
-               self.syscheck.ok = true
 
-               self.syscheck.results = resp.data.results
 
-             } else {
 
-               self.syscheck.ok = false
 
-               self.syscheck.error = resp.data.error
 
-             }
 
-             self.loading = false
 
-             self.$nextTick()
 
-           }).catch(err => {
 
-             window.alert(err.message)
 
-           })
 
-         }, 1000)
 
-       },
 
-       proceedToGeneral: function (ev) {
 
-         let self = this
 
-         self.state = 'general'
 
-         self.loading = false
 
-         self.$nextTick(() => {
 
-           self.$validator.validateAll('general')
 
-         })
 
-       },
 
-       proceedToConsiderations: function (ev) {
 
-         this.considerations = {
 
-           https: !_.startsWith(this.conf.host, 'https'),
 
-           port: false, // TODO
 
-           localhost: _.includes(this.conf.host, 'localhost')
 
-         }
 
-         this.state = 'considerations'
 
-         this.loading = false
 
-       },
 
-       proceedToDb: function (ev) {
 
-         let self = this
 
-         self.state = 'db'
 
-         self.loading = false
 
-         self.$nextTick(() => {
 
-           self.$validator.validateAll('db')
 
-         })
 
-       },
 
-       proceedToDbcheck: function (ev) {
 
-         let self = this
 
-         this.state = 'dbcheck'
 
-         this.loading = true
 
-         self.dbcheck = {
 
-           ok: false,
 
-           error: ''
 
-         }
 
-         _.delay(() => {
 
-           axios.post('/dbcheck', {
 
-             db: self.conf.db
 
-           }).then(resp => {
 
-             if (resp.data.ok === true) {
 
-               self.dbcheck.ok = true
 
-             } else {
 
-               self.dbcheck.ok = false
 
-               self.dbcheck.error = resp.data.error
 
-             }
 
-             self.loading = false
 
-             self.$nextTick()
 
-           }).catch(err => {
 
-             window.alert(err.message)
 
-           })
 
-         }, 1000)
 
-       },
 
-       proceedToPaths: function (ev) {
 
-         let self = this
 
-         self.state = 'paths'
 
-         self.loading = false
 
-         self.$nextTick(() => {
 
-           self.$validator.validateAll('paths')
 
-         })
 
-       },
 
-       proceedToGit: function (ev) {
 
-         let self = this
 
-         self.state = 'git'
 
-         self.loading = false
 
-         self.$nextTick(() => {
 
-           self.$validator.validateAll('git')
 
-         })
 
-       },
 
-       proceedToGitCheck: function (ev) {
 
-         let self = this
 
-         this.state = 'gitcheck'
 
-         this.loading = true
 
-         self.gitcheck = {
 
-           ok: false,
 
-           results: [],
 
-           error: ''
 
-         }
 
-         _.delay(() => {
 
-           axios.post('/gitcheck', self.conf).then(resp => {
 
-             if (resp.data.ok === true) {
 
-               self.gitcheck.ok = true
 
-               self.gitcheck.results = resp.data.results
 
-             } else {
 
-               self.gitcheck.ok = false
 
-               self.gitcheck.error = resp.data.error
 
-             }
 
-             self.loading = false
 
-             self.$nextTick()
 
-           }).catch(err => {
 
-             window.alert(err.message)
 
-           })
 
-         }, 1000)
 
-       },
 
-       proceedToAdmin: function (ev) {
 
-         let self = this
 
-         self.state = 'admin'
 
-         self.loading = false
 
-         self.$nextTick(() => {
 
-           self.$validator.validateAll('admin')
 
-         })
 
-       },
 
-       proceedToFinal: function (ev) {
 
-         let self = this
 
-         self.state = 'final'
 
-         self.loading = true
 
-         self.final = {
 
-           ok: false,
 
-           error: '',
 
-           results: []
 
-         }
 
-         _.delay(() => {
 
-           axios.post('/finalize', self.conf).then(resp => {
 
-             if (resp.data.ok === true) {
 
-               self.final.ok = true
 
-               self.final.results = resp.data.results
 
-             } else {
 
-               self.final.ok = false
 
-               self.final.error = resp.data.error
 
-             }
 
-             self.loading = false
 
-             self.$nextTick()
 
-           }).catch(err => {
 
-             window.alert(err.message)
 
-           })
 
-         }, 1000)
 
-       },
 
-       finish: function (ev) {
 
-         let self = this
 
-         self.state = 'restart'
 
-         _.delay(() => {
 
-           axios.post('/restart', {}).then(resp => {
 
-             _.delay(() => {
 
-               window.location.assign(self.conf.host)
 
-             }, 30000)
 
-           }).catch(err => {
 
-             window.alert(err.message)
 
-           })
 
-         }, 1000)
 
-       }
 
-     }
 
-   })
 
- })
 
 
  |