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/components/installer/Step2.vue

371 lines
11 KiB

<template>
<div class="install-step">
<SectionHeader :title="t('Step 2 - Requirements')" />
<p class="RequirementText mb-4">
<strong v-text="t('Please read the following requirements thoroughly.')" />
</p>
<i18n-t
class="mb-4"
keypath="For more details {0}"
tag="p"
>
<a
v-t="'read the installation guide'"
href="/main/documentation/installation_guide.html"
target="_blank"
/>
</i18n-t>
<p
v-if="'update' === installerData.installType"
class="mb-4"
>
{{ t("If you plan to upgrade from an older version of Chamilo, you might want to") }}
<a
href="/main/documentation/changelog.html"
target="_blank"
v-text="t('have a look at the changelog')"
/>
{{ t("to know what's new and what has been changed.") }}
</p>
<h2
class="install-subtitle mb-8"
v-text="t('Server requirements')"
/>
<Message
v-if="!installerData.stepData.timezone"
:closable="false"
severity="warn"
>
{{
t(
"We have detected that your PHP installation does not define the date.timezone setting. This is a requirement of Chamilo. Please make sure it is configured by checking your php.ini configuration, otherwise you will run into problems. We warned you!",
)
}}
</Message>
<h3
class="install-requirement mb-8"
v-text="t('Server requirements information')"
/>
<div class="text-center mb-4">
<p class="text-body-2 font-semibold mb-2">{{ t("PHP version ") }} >= {{ installerData.phpRequiredVersion }}</p>
<p
v-if="installerData.stepData.isVersionPassed"
class="text-success text-body-1 font-semibold"
>
<span
aria-hidden="true"
class="mdi mdi-check"
/>
{{ t("Your PHP version matches the minimum requirement:") }}
{{ installerData.stepData.phpVersion }}
</p>
<p
v-else
class="text-error text-body-1 font-semibold"
v-text="
t(
'Your PHP version does not match the requirements for this software. Please check you have the latest version, then try again.',
)
"
/>
</div>
<div class="grid grid-flow-row-dense grid-cols-3 gap-x-3 gap-y-4 place-items-center mb-4">
<p
v-for="(extension, i) in installerData.stepData.extensions"
:key="i"
class="text-center"
>
<a
:href="extension.url"
class="block"
v-text="extension.title"
/>
<Tag
:icon="{
'pi pi-check': 'success' === extension.status.severity,
'pi pi-exclamation-triangle': 'warning' === extension.status.severity,
'pi pi-times': 'danger' === extension.status.severity,
}"
:severity="extension.status.severity"
:value="extension.status.message"
/>
</p>
</div>
<h4
class="install-subtitle mb-4"
v-text="t('Recommended settings')"
/>
<p
class="install-requirement mb-4"
v-text="
t(
'Recommended settings for your server configuration. These settings are set in the php.ini configuration file on your server.',
)
"
/>
<div class="table-responsive">
<table class="requirements-list">
<thead>
<tr>
<th
class="requirements-item"
v-text="t('Setting')"
/>
<th
class="requirements-recommended"
v-text="t('Recommended')"
/>
<th
class="requirements-value"
v-text="t('Currently')"
/>
</tr>
</thead>
<tbody>
<tr
v-for="({ title, recommended, current }, i) in installerData.stepData.phpIni"
:key="i"
>
<td
class="requirements-item"
v-text="title"
/>
<td class="requirements-recommended">
<Tag
:value="recommended"
severity="success"
/>
</td>
<td class="requirements-value">
<Tag
:severity="current.severity"
:value="current.value"
/>
</td>
</tr>
</tbody>
</table>
</div>
<h4
class="install-subtitle mb-4"
v-text="t('Directory and files permissions')"
/>
<p
v-t="
'Some directories and the files they include must be writable by the web server in order for Chamilo to run (user uploaded files, homepage html files, ...). This might imply a manual change on your server (outside of this interface).'
"
class="mb-4"
/>
<div class="table-responsive">
<table class="requirements-list">
<tbody>
<tr
v-for="({ item, status }, i) in installerData.stepData.pathPermissions"
:key="i"
>
<td v-text="item" />
<td>
<Tag
v-if="true === status"
:value="t('Writable')"
severity="success"
/>
<Tag
v-else-if="false === status"
:value="t('Not writable')"
severity="danger"
/>
<Tag
v-else
:value="status"
severity="info"
/>
</td>
</tr>
</tbody>
</table>
</div>
<div v-if="'update' === installerData.installType && (!installerData.updatePath || installerData.badUpdatePath)">
<Message
v-if="installerData.badUpdatePath"
:closable="false"
severity="warning"
>
<strong v-text="t('Error')" /><br />
Chamilo {{ installerData.upgradeFromVersion.join("|") }}
{{ t("has not been found in that directory") }}
</Message>
<!-- form inputs for old version path -->
<div class="field">
<div class="p-float-label">
<InputText
id="updatePath"
:value="installerData.badUpdatePath && installerData.updatePath ? updatePath : ''"
name="updatePath"
size="50"
/>
<label v-text="t('Old version\'s root path')" />
</div>
</div>
<div class="formgroup-inline">
<div class="field">
<Button
:label="t('Back')"
class="p-button-secondary"
icon="mdi mdi-page-previous"
name="step1"
type="submit"
/>
</div>
<Button
:label="t('Next')"
:name="installerData.stepData.step2_update_6 ? 'step2_update_6' : 'step2_update_8'"
class="p-button-secondary"
icon="mdi mdi-page-next"
type="submit"
/>
<input
id="is_executable"
name="is_executable"
type="hidden"
value="-"
/>
</div>
</div>
<div v-else>
<div v-if="installerData.stepData.notWritable.length > 0">
<strong
v-t="'Warning!'"
class="text-error"
/>
<p class="text-error">
{{
t(
"Some files or folders don't have writing permission. To be able to install Chamilo you should first change their permissions (using CHMOD). Please read the",
)
}}
<a
href="/main/documentation/installation_guide.html"
target="_blank"
v-text="t('installation guide')"
/>
</p>
<ul class="list-disc list-inside">
<li
v-for="(notWritable, i) in installerData.stepData.notWritable"
:key="i"
class="text-error"
v-text="notWritable"
/>
</ul>
</div>
<div v-else-if="installerData.stepData.existsConfigurationFile">
<!-- Check wether a Chamilo configuration file already exists -->
<Message
:closable="false"
severity="warning"
>
{{ t("The installer has detected an existing Chamilo platform on your system.") }}
</Message>
</div>
<div v-if="installerData.stepData.deprecatedToRemove.length > 0">
<p
class="text-error"
v-html="
t(
'Because the <code>newscorm</code> and <code>exercice</code> directories were renamed to <code>lp</code> and <code>exercise</code> respectively, is necessary to delete or rename to <code>newscorm_old</code> and <code>exercice_old</code>.',
)
"
/>
<ul class="list-disc list-inside">
<li
v-for="(deprecatedToRemove, i) in installerData.stepData.deprecatedToRemove"
:key="i"
class="text-error"
v-text="deprecatedToRemove"
/>
</ul>
</div>
<hr />
<div class="formgroup-inline">
<!-- And now display the choice buttons (go back or install) -->
<div class="field">
<Button
:label="t('Previous')"
class="p-button-plain"
icon="mdi mdi-page-previous"
name="step1"
type="button"
@click.prevent="goToIndex"
/>
</div>
<div class="field">
<Button
:disabled="installerData.stepData.installError || installerData.isUpdateAvailable"
:label="t('New installation')"
class="p-button-success"
icon="mdi mdi-page-next"
name="step2_install"
type="submit"
/>
</div>
<Button
:label="t('Upgrade Chamilo LMS version')"
class="p-button-secondary"
icon="mdi mdi-page-next"
name="step2_update_8"
type="button"
@click.prevent="goToUpgrade"
/>
<input
id="is_executable"
name="is_executable"
type="hidden"
value="-"
/>
</div>
</div>
</div>
</template>
<script setup>
import { useI18n } from "vue-i18n"
import { inject } from "vue"
import Message from "primevue/message"
import Tag from "primevue/tag"
import InputText from "primevue/inputtext"
import Button from "primevue/button"
import SectionHeader from "../layout/SectionHeader.vue"
const { t } = useI18n()
const installerData = inject("installerData")
function goToUpgrade() {
window.location = `/main/install/index.php?running=1&installType=${installerData.installType || "update"}&step=step2_update_8`
}
function goToIndex() {
window.location = "index.php"
}
</script>