Chamilo is a learning management system focused on ease of use and accessibility
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
chamilo-lms/assets/vue/AppInstaller.vue

299 lines
7.3 KiB

<template>
<div class="grid grid-cols-3 gap-4 rounded bg-white p-6 mb-4">
<aside class="install-steps hidden md:block">
<a
class="logo-install"
href="index.php"
>
<img
alt="Chamilo"
src="/build/css/themes/chamilo/images/header-logo.png"
>
</a>
<ol>
<li
v-for="{step, stepTitle} in steps"
:key="step"
:class="{ 'install-steps__step--active': step === installerData.currentStep }"
class="install-steps__step"
>
{{ stepTitle }}
</li>
</ol>
<div id="note">
<a
class="p-button p-component p-button-info p-button-outlined"
href="../../documentation/installation_guide.html"
target="_blank"
>
<span
aria-hidden="true"
class="p-button-icon p-button-icon-left mdi mdi-text-box-search-outline"
/>
<span class="p-button-text">{{ t('Read the installation guide') }}</span>
</a>
</div>
</aside>
<main class="install-step-container col-span-3 md:col-span-2 row-span-2">
<h1
v-if="'new' === installerData.installType"
v-t="'New installation'"
class="mb-4"
/>
<h1
v-else-if="'update' === installerData.installType"
v-t="{
path: 'Update from Chamilo {versions}',
args: { 'versions': installerData.upgradeFromVersion.join(' | ') }
}"
class="mb-4"
/>
<h1
v-else
v-t="'Chamilo\'s installation wizard'"
class="mb-8"
/>
<form
id="install_form"
:action="installerData.formAction"
method="post"
>
<input
:value="installerData.updatePath"
name="updatePath"
type="hidden"
>
<input
:value="installerData.urlAppendPath"
name="urlAppendPath"
type="hidden"
>
<input
:value="installerData.pathForm"
name="pathForm"
type="hidden"
>
<input
:value="installerData.urlForm"
name="urlForm"
type="hidden"
>
<input
:value="installerData.dbHostForm"
name="dbHostForm"
type="hidden"
>
<input
:value="installerData.dbPortForm"
name="dbPortForm"
type="hidden"
>
<input
:value="installerData.dbUsernameForm"
name="dbUsernameForm"
type="hidden"
>
<input
:value="installerData.dbPassForm"
name="dbPassForm"
type="hidden"
>
<input
:value="installerData.dbNameForm"
name="dbNameForm"
type="hidden"
>
<input
:value="installerData.allowSelfReg"
name="allowSelfReg"
type="hidden"
>
<input
:value="installerData.allowSelfRegProf"
name="allowSelfRegProf"
type="hidden"
>
<input
:value="installerData.emailForm"
name="emailForm"
type="hidden"
>
<input
:value="installerData.adminLastName"
name="adminLastName"
type="hidden"
>
<input
:value="installerData.adminFirstName"
name="adminFirstName"
type="hidden"
>
<input
:value="installerData.adminPhoneForm"
name="adminPhoneForm"
type="hidden"
>
<input
:value="installerData.loginForm"
name="loginForm"
type="hidden"
>
<input
:value="installerData.passForm"
name="passForm"
type="hidden"
>
<input
:value="installerData.languageForm"
name="languageForm"
type="hidden"
>
<input
:value="installerData.campusForm"
name="campusForm"
type="hidden"
>
<input
:value="installerData.educationForm"
name="educationForm"
type="hidden"
>
<input
:value="installerData.institutionForm"
name="institutionForm"
type="hidden"
>
<input
:value="installerData.institutionUrlForm"
name="institutionUrlForm"
type="hidden"
>
<input
:value="installerData.checkEmailByHashSent"
name="checkEmailByHashSent"
type="hidden"
>
<input
:value="installerData.showEmailNotCheckedToStudent"
name="ShowEmailNotCheckedToStudent"
type="hidden"
>
<input
:value="installerData.userMailCanBeEmpty"
name="userMailCanBeEmpty"
type="hidden"
>
<input
:value="installerData.encryptPassForm"
name="encryptPassForm"
type="hidden"
>
<input
:value="installerData.session_lifetime"
name="session_lifetime"
type="hidden"
>
<input
:value="installerData.old_version"
name="old_version"
type="hidden"
>
<input
:value="installerData.new_version"
name="new_version"
type="hidden"
>
<input
:value="installerData.installationProfile"
name="installationProfile"
type="hidden"
>
<Step1 v-if="1 === installerData.currentStep" />
<Step2 v-else-if="2 === installerData.currentStep" />
<Step3 v-else-if="3 === installerData.currentStep" />
<Step4 v-else-if="4 === installerData.currentStep" />
<Step5 v-else-if="5 === installerData.currentStep" />
<Step6 v-else-if="6 === installerData.currentStep" />
<Step7 v-else-if="7 === installerData.currentStep" />
</form>
</main>
</div>
<footer class="text-center">
<p v-html="installerData.poweredBy" />
</footer>
</template>
<script setup>
import { useI18n } from 'vue-i18n';
import { onMounted, provide, ref } from 'vue';
import Step1 from './components/installer/Step1';
import Step2 from './components/installer/Step2';
import Step3 from './components/installer/Step3';
import Step4 from './components/installer/Step4';
import Step5 from './components/installer/Step5';
import Step6 from './components/installer/Step6';
import Step7 from './components/installer/Step7';
const { t } = useI18n();
const installerData = ref(window.installerData);
provide('installerData', installerData);
const steps = ref([
{
step: 1,
stepTitle: t('Installation language')
},
{
step: 2,
stepTitle: t('Requirements')
},
{
step: 3,
stepTitle: t('Licence')
},
{
step: 4,
stepTitle: t('Database settings')
},
{
step: 5,
stepTitle: t('Config settings')
},
{
step: 6,
stepTitle: t('Show Overview')
},
{
step: 7,
stepTitle: t('Install')
},
]);
onMounted(() => {
const txtIsExecutable = document.getElementById('is_executable');
if (!txtIsExecutable) {
return;
}
document.querySelectorAll('button')
.forEach(
button => button.addEventListener(
'click',
() => txtIsExecutable.value = button.name
)
);
});
</script>