< template >
< div
v - show = "!loading"
class = "install-step"
>
< h2
v - t = "'Step 6 - Last check before install'"
class = "RequirementHeading mb-8"
/ >
< p
v - t = "'Here are the values you entered'"
class = "RequirementContent mb-4"
/ >
< div >
< h3
v - t = "'Administrator'"
class = "mb-4"
/ >
< div
v - if = "'new' === installerData.installType"
class = "formgroup-inline"
>
< div
v - t = "'Administrator login'"
class = "field text-body-2 font-semibold"
/ >
< div
class = "field text-body-2"
v - text = "installerData.stepData.loginForm"
/ >
< / div >
< div
v - if = "'new' === installerData.installType"
class = "formgroup-inline"
>
< div
v - t = "'Administrator password'"
class = "field text-body-2 font-semibold"
/ >
< div
class = "field text-body-2"
v - text = "installerData.stepData.passForm"
/ >
< div
v - t = "'You may want to change this'"
class = "field text-body-2 text-error"
/ >
< / div >
< div class = "formgroup-inline" >
< div
v - t = "'Administrator first name'"
class = "field text-body-2 font-semibold"
/ >
< div
class = "field text-body-2"
v - text = "installerData.stepData.adminFirstName"
/ >
< / div >
< div class = "formgroup-inline" >
< div
v - t = "'Administrator last name'"
class = "field text-body-2 font-semibold"
/ >
< div
class = "field text-body-2"
v - text = "installerData.stepData.adminLastName"
/ >
< / div >
< div class = "formgroup-inline" >
< div
v - t = "'Administrator e-mail'"
class = "field text-body-2 font-semibold"
/ >
< div
class = "field text-body-2"
v - text = "installerData.stepData.emailForm"
/ >
< / div >
< div class = "formgroup-inline" >
< div
v - t = "'Administrator telephone'"
class = "field text-body-2 font-semibold"
/ >
< div
class = "field text-body-2"
v - text = "installerData.stepData.adminPhoneForm"
/ >
< / div >
< div class = "field" >
< h3 v -t = " ' Portal ' " / >
< / div >
< div class = "formgroup-inline" >
< div
v - t = "'Your portal name'"
class = "field text-body-2 font-semibold"
/ >
< div
class = "field text-body-2"
v - text = "installerData.stepData.campusForm"
/ >
< / div >
< div class = "formgroup-inline" >
< div
v - t = "'Main language'"
class = "field text-body-2 font-semibold"
/ >
< div
class = "field text-body-2"
v - text = "installerData.stepData.languageForm"
/ >
< / div >
< div class = "formgroup-inline" >
< div
v - t = "'Allow self-registration'"
class = "field text-body-2 font-semibold"
/ >
< div
class = "field text-body-2"
v - text = "installerData.stepData.allowSelfRegistrationLiteral"
/ >
< / div >
< div class = "formgroup-inline" >
< div
v - t = "'Your company short name'"
class = "field text-body-2font-semibold"
/ >
< div
class = "field text-body-2"
v - text = "installerData.stepData.institutionForm"
/ >
< / div >
< div class = "formgroup-inline" >
< div
v - t = "'URL of this company'"
class = "field text-body-2 font-semibold"
/ >
< div
class = "field text-body-2"
v - text = "installerData.stepData.institutionUrlForm"
/ >
< / div >
< div class = "formgroup-inline" >
< div
v - t = "'Encryption method'"
class = "field text-body-2 font-semibold"
/ >
< div
class = "field text-body-2"
v - text = "installerData.stepData.encryptPassForm"
/ >
< / div >
< div class = "field" >
< h3 v -t = " ' Database ' " / >
< / div >
< div class = "formgroup-inline" >
< div
v - t = "'Database Host'"
class = "field text-body-2 font-semibold"
/ >
< div
class = "field text-body-2"
v - text = "installerData.stepData.dbHostForm"
/ >
< / div >
< div class = "formgroup-inline" >
< div
v - t = "'Port'"
class = "field text-body-2 font-semibold"
/ >
< div
class = "field text-body-2"
v - text = "installerData.stepData.dbPortForm"
/ >
< / div >
< div class = "formgroup-inline" >
< div
v - t = "'Database Login'"
class = "field text-body-2 font-semibold"
/ >
< div
class = "field text-body-2"
v - text = "installerData.stepData.dbUsernameForm"
/ >
< / div >
< div class = "formgroup-inline" >
< div
v - t = "'Database Password'"
class = "field text-body-2 font-semibold"
/ >
< div
class = "field text-body-2"
v - text = "installerData.stepData.dbPassForm"
/ >
< / div >
< div class = "formgroup-inline" >
< div
v - t = "'Database name'"
class = "field text-body-2 font-semibold"
/ >
< div
class = "field text-body-2"
v - text = "installerData.stepData.dbNameForm"
/ >
< / div >
< Message
v - if = "'new' === installerData.installType"
: closable = "false"
severity = "warn"
>
{ {
t (
"The install script will erase all tables of the selected database. We heavily recommend you do a full backup of them before confirming this last install step." ,
)
} }
< / Message >
< / div >
< hr / >
< div class = "formgroup-inline" >
< div class = "field" >
< Button
v - if = "!installerData.isUpdateAvailable"
: label = "t('Previous')"
class = "p-button-secondary"
icon = "mdi mdi-page-previous"
name = "step4"
type = "submit"
/ >
< input
id = "is_executable"
v - model = "isExecutable"
name = "is_executable"
type = "hidden"
/ >
< input
type = "hidden"
name = "step6"
value = "1"
/ >
< / div >
< Button
id = "button_step6"
: label = "installerData.isUpdateAvailable ? t('Update Chamilo') : t('Install Chamilo')"
: loading = "loading"
: disabled = "isButtonDisabled"
class = "p-button-success"
icon = "mdi mdi-progress-download"
name = "button_step6"
type = "button"
@ click = "btnStep6OnClick"
/ >
< / div >
< / div >
< div
v - show = "loading"
class = "install-step"
>
< h2
v - if = "'update' !== installerData.installType"
v - t = "'Step 7 - Installation process execution'"
class = "RequirementHeading mb-8"
/ >
< h2
v - else
v - t = "'Step 7 - Update process execution'"
class = "RequirementHeading mb-8"
/ >
< p >
< strong
v - if = "installerData.installationProfile"
v - text = "installerData.installationProfile"
/ >
< / p >
< Message
id = "pleasewait"
: closable = "false"
severity = "success"
>
< p
v - t = "'Please wait. This could take a while...'"
class = "mb-3"
/ >
< ProgressBar mode = "indeterminate" / >
< / Message >
< ProgressBar
: value = "progressPercentage"
style = "height: 22px"
>
{ { progressPercentage } } / 100 < / P r o g r e s s B a r
>
< div class = "log-container" >
< div v-html ="logTerminalContent" > < / div >
< / div >
< / div >
< / template >
< script setup >
import { inject , ref } from "vue"
import { useI18n } from "vue-i18n"
import Message from "primevue/message"
import Button from "primevue/button"
import ProgressBar from "primevue/progressbar"
const { t } = useI18n ( )
const installerData = inject ( "installerData" )
const loading = ref ( false )
const isButtonDisabled = ref ( installerData . value . isUpdateAvailable )
const isExecutable = ref ( "" )
const logTerminalContent = ref ( "" )
const progressPercentage = ref ( 0 )
function updateLog ( ) {
var xhr = new XMLHttpRequest ( )
xhr . onreadystatechange = function ( ) {
if ( xhr . readyState === 4 && xhr . status === 200 ) {
const response = JSON . parse ( xhr . responseText )
logTerminalContent . value = response . log _terminal
progressPercentage . value = response . progress _percentage
scrollToBottom ( )
isButtonDisabled . value = false
}
}
xhr . open ( "GET" , installerData . value . logUrl , true )
xhr . send ( )
}
function btnStep6OnClick ( ) {
loading . value = true
isExecutable . value = "step6"
document . getElementById ( "install_form" ) . submit ( )
}
function scrollToBottom ( ) {
const logContainer = document . querySelector ( ".log-container" )
logContainer . scrollTop = logContainer . scrollHeight
}
setInterval ( updateLog , 2000 )
< / script >