generated from gitea_admin/default
academie
This commit is contained in:
128
app/components/RessourcesCard.vue
Normal file
128
app/components/RessourcesCard.vue
Normal file
@@ -0,0 +1,128 @@
|
|||||||
|
<template>
|
||||||
|
<article class="ressources-card bg-surface-container-lowest border border-outline-variant/10 rounded-xl overflow-hidden shadow-sm transition-shadow hover:shadow-xl">
|
||||||
|
<div class="ressources-card__media bg-surface-container-low">
|
||||||
|
<img
|
||||||
|
v-if="imgSrc"
|
||||||
|
:src="imgSrc"
|
||||||
|
:alt="imgAlt || title"
|
||||||
|
class="h-full w-full object-cover"
|
||||||
|
>
|
||||||
|
<div
|
||||||
|
v-else
|
||||||
|
class="flex h-full w-full items-center justify-center bg-surface-container-low text-outline"
|
||||||
|
aria-hidden="true"
|
||||||
|
>
|
||||||
|
<span class="material-symbols-outlined text-5xl">image</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<span
|
||||||
|
v-if="badge"
|
||||||
|
class="absolute left-3 top-3 rounded-md bg-surface px-2.5 py-1 text-xs font-extrabold uppercase text-error shadow-sm"
|
||||||
|
>
|
||||||
|
{{ badge }}
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="grid gap-6 p-6">
|
||||||
|
<div class="grid gap-3">
|
||||||
|
<h3 class="text-xl font-extrabold leading-tight tracking-tight text-primary">
|
||||||
|
{{ title }}
|
||||||
|
</h3>
|
||||||
|
<p
|
||||||
|
v-if="description"
|
||||||
|
class="text-sm leading-7 text-on-surface-variant"
|
||||||
|
>
|
||||||
|
{{ description }}
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<a
|
||||||
|
v-if="fileUrl"
|
||||||
|
:href="fileUrl"
|
||||||
|
:download="downloadName"
|
||||||
|
class="group flex items-center justify-between gap-4 rounded-lg border border-outline-variant/30 bg-surface-container-low px-4 py-3 text-on-surface transition-colors hover:bg-primary-container"
|
||||||
|
target="_blank"
|
||||||
|
rel="noopener noreferrer"
|
||||||
|
>
|
||||||
|
<span class="min-w-0">
|
||||||
|
<span class="block truncate text-sm font-bold text-primary group-hover:text-on-primary-container">
|
||||||
|
{{ fileLabel }}
|
||||||
|
</span>
|
||||||
|
<span
|
||||||
|
v-if="fileSize"
|
||||||
|
class="block text-xs text-on-surface-variant group-hover:text-on-primary-container/80"
|
||||||
|
>
|
||||||
|
{{ fileSize }}
|
||||||
|
</span>
|
||||||
|
</span>
|
||||||
|
|
||||||
|
<span class="grid h-9 w-9 shrink-0 place-items-center rounded-full bg-primary-container text-primary transition-colors group-hover:bg-primary group-hover:text-on-primary">
|
||||||
|
<span class="material-symbols-outlined text-xl">download</span>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
|
||||||
|
<div
|
||||||
|
v-else
|
||||||
|
class="flex items-center justify-between gap-4 rounded-lg border border-outline-variant/30 bg-surface-container-low px-4 py-3 text-on-surface opacity-70"
|
||||||
|
>
|
||||||
|
<span>
|
||||||
|
<span class="block text-sm font-bold text-primary">{{ fileLabel }}</span>
|
||||||
|
<span
|
||||||
|
v-if="fileSize"
|
||||||
|
class="block text-xs text-on-surface-variant"
|
||||||
|
>
|
||||||
|
{{ fileSize }}
|
||||||
|
</span>
|
||||||
|
</span>
|
||||||
|
<span class="grid h-9 w-9 shrink-0 place-items-center rounded-full bg-surface-container text-outline">
|
||||||
|
<span class="material-symbols-outlined text-xl">download</span>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</article>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts" setup>
|
||||||
|
const props = withDefaults(defineProps<{
|
||||||
|
title: string
|
||||||
|
description?: string
|
||||||
|
imgSrc?: string
|
||||||
|
imgAlt?: string
|
||||||
|
badge?: string
|
||||||
|
fileLabel?: string
|
||||||
|
fileSize?: string
|
||||||
|
fileUrl?: string
|
||||||
|
fileName?: string
|
||||||
|
}>(), {
|
||||||
|
description: '',
|
||||||
|
imgSrc: '',
|
||||||
|
imgAlt: '',
|
||||||
|
badge: 'PDF',
|
||||||
|
fileLabel: 'Fiche pédagogique (PDF)',
|
||||||
|
fileSize: '',
|
||||||
|
fileUrl: '',
|
||||||
|
fileName: '',
|
||||||
|
})
|
||||||
|
|
||||||
|
const downloadName = computed(() => props.fileName || true)
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.ressources-card {
|
||||||
|
max-width: 392px;
|
||||||
|
font-family: 'Inter', sans-serif;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ressources-card__media {
|
||||||
|
position: relative;
|
||||||
|
aspect-ratio: 392 / 200;
|
||||||
|
}
|
||||||
|
|
||||||
|
.material-symbols-outlined {
|
||||||
|
font-variation-settings:
|
||||||
|
'FILL' 0,
|
||||||
|
'wght' 400,
|
||||||
|
'GRAD' 0,
|
||||||
|
'opsz' 24;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@@ -603,7 +603,7 @@
|
|||||||
const diplomaTypeOptions = ["fin de cycle 2", "DEM", "CEM", "Autre"]
|
const diplomaTypeOptions = ["fin de cycle 2", "DEM", "CEM", "Autre"]
|
||||||
const emergencyRelationOptions = ["Parent", "Frère - sœur", "Conjoint.e", "Ami", "Autre"]
|
const emergencyRelationOptions = ["Parent", "Frère - sœur", "Conjoint.e", "Ami", "Autre"]
|
||||||
//const regulationFileUrl = "/contenus/reglement-academie-orchestre.pdf"
|
//const regulationFileUrl = "/contenus/reglement-academie-orchestre.pdf"
|
||||||
const regulationFileUrl = "https://media.orchestre-ile.com/uploads/25_26_ONDIF_reglement_academie_57934f522a.pdf"
|
const regulationFileUrl = "https://media.orchestre-ile.com/uploads/ondif_reglement_academie_2027_3d088ffcb2.pdf"
|
||||||
|
|
||||||
function createDiploma() {
|
function createDiploma() {
|
||||||
return {
|
return {
|
||||||
|
|||||||
@@ -256,7 +256,8 @@
|
|||||||
<option value="eac_4">4</option>
|
<option value="eac_4">4</option>
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
<div class="space-y-2">
|
<!-- CONCERT COMMENTÉ POUR LE MOMENT ON NE LE PROPOSE PAS -->
|
||||||
|
<!-- <div class="space-y-2">
|
||||||
<label for="quote-type_commente" class="block text-sm font-medium text-on-surface pl-[2px]">
|
<label for="quote-type_commente" class="block text-sm font-medium text-on-surface pl-[2px]">
|
||||||
Concert commenté
|
Concert commenté
|
||||||
</label>
|
</label>
|
||||||
@@ -272,7 +273,7 @@
|
|||||||
<option value="concert_commente_3">3</option>
|
<option value="concert_commente_3">3</option>
|
||||||
<option value="concert_commente_4">4</option>
|
<option value="concert_commente_4">4</option>
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div> -->
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</section>
|
</section>
|
||||||
|
|||||||
@@ -110,7 +110,7 @@
|
|||||||
|
|
||||||
<PageSection tone="" content-size="default" padded_size="md" class="contact_spe_wp">
|
<PageSection tone="" content-size="default" padded_size="md" class="contact_spe_wp">
|
||||||
<ContactSpecifique
|
<ContactSpecifique
|
||||||
titre="Renseignements Académie d'Orchestre 2026"
|
titre="Renseignements Académie d'Orchestre"
|
||||||
nom="Zoë Crampon"
|
nom="Zoë Crampon"
|
||||||
poste="Service action culturelle"
|
poste="Service action culturelle"
|
||||||
numero="06 82 73 65 01"
|
numero="06 82 73 65 01"
|
||||||
|
|||||||
@@ -114,6 +114,56 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<!-- RESSOURCES PEDAGOGIQUES -->
|
||||||
|
<section>
|
||||||
|
<PageSection :content="false">
|
||||||
|
<Decalage
|
||||||
|
tone="brand"
|
||||||
|
title-tone="invert"
|
||||||
|
position="left"
|
||||||
|
button-tone="invert"
|
||||||
|
:ensavoirplus-target="ressourcesSectionId"
|
||||||
|
ensavoirplus-group="ressources"
|
||||||
|
>
|
||||||
|
<template #title>
|
||||||
|
TITRE
|
||||||
|
</template>
|
||||||
|
<DsText as="p" tone="invert" align="justify">
|
||||||
|
texte
|
||||||
|
</DsText>
|
||||||
|
</Decalage>
|
||||||
|
</PageSection>
|
||||||
|
<PageSection
|
||||||
|
:id="ressourcesSectionId"
|
||||||
|
data-ensavoirplus-group="ressources"
|
||||||
|
tone=""
|
||||||
|
content-size="default"
|
||||||
|
padded_size="md"
|
||||||
|
class="decalage_ensavoirplus--hidden"
|
||||||
|
>
|
||||||
|
<section class="ressources-pedagogiques__list">
|
||||||
|
<RessourcesCard
|
||||||
|
v-for="ressource in ressourcesPedagogiques"
|
||||||
|
:key="ressource.id"
|
||||||
|
:title="ressource.title"
|
||||||
|
:description="ressource.description"
|
||||||
|
:img-src="ressource.imgSrc"
|
||||||
|
:img-alt="ressource.imgAlt"
|
||||||
|
:badge="ressource.badge"
|
||||||
|
:file-label="ressource.fileLabel"
|
||||||
|
:file-size="ressource.fileSize"
|
||||||
|
:file-url="ressource.fileUrl"
|
||||||
|
:file-name="ressource.fileName"
|
||||||
|
/>
|
||||||
|
</section>
|
||||||
|
</PageSection>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<!-- ================== -->
|
<!-- ================== -->
|
||||||
<!-- CONTACT -->
|
<!-- CONTACT -->
|
||||||
<!-- ================== -->
|
<!-- ================== -->
|
||||||
@@ -130,7 +180,16 @@ et de la programmation jeune public"
|
|||||||
/>
|
/>
|
||||||
</PageSection>
|
</PageSection>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup>
|
<script setup>
|
||||||
@@ -167,6 +226,21 @@ et de la programmation jeune public"
|
|||||||
// PRÉPARATION DES DONNÉES POUR AFFICHAGE DANS LA PAGE
|
// PRÉPARATION DES DONNÉES POUR AFFICHAGE DANS LA PAGE
|
||||||
// ======================================
|
// ======================================
|
||||||
const scolaire_donnees_servies = computed(() => scolaires.value?.[0] || {})
|
const scolaire_donnees_servies = computed(() => scolaires.value?.[0] || {})
|
||||||
|
const ressourcesSectionId = "texte_cache_ressources"
|
||||||
|
const ressourcesPedagogiques = [
|
||||||
|
{
|
||||||
|
id: "decouverte-orchestre-symphonique",
|
||||||
|
title: "Découverte de l'orchestre symphonique",
|
||||||
|
description: "Un guide complet pour initier les élèves aux instruments de l'orchestre et à leurs familles. Ce document présente les pupitres, leur rôle et propose des activités d'écoute adaptées au cycle 3.",
|
||||||
|
imgSrc: "/img/photos/orchestre.jpg",
|
||||||
|
imgAlt: "Musiciens de l'orchestre en répétition",
|
||||||
|
badge: "PDF",
|
||||||
|
fileLabel: "Fiche pédagogique (PDF)",
|
||||||
|
fileSize: "2.4 Mo",
|
||||||
|
fileUrl: "",
|
||||||
|
fileName: "",
|
||||||
|
},
|
||||||
|
]
|
||||||
|
|
||||||
const scolairesChiffres = computed(() =>
|
const scolairesChiffres = computed(() =>
|
||||||
(scolaires.value?.[0]?.chiffres_scolaires?.[0]?.chiffres || []).map((item) => ({
|
(scolaires.value?.[0]?.chiffres_scolaires?.[0]?.chiffres || []).map((item) => ({
|
||||||
@@ -253,6 +327,12 @@ et de la programmation jeune public"
|
|||||||
margin-top: 50px;
|
margin-top: 50px;
|
||||||
margin-bottom: 20px;
|
margin-bottom: 20px;
|
||||||
}
|
}
|
||||||
|
.ressources-pedagogiques__list {
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: repeat(auto-fit, minmax(min(100%, 320px), 392px));
|
||||||
|
gap: 24px;
|
||||||
|
justify-content: center;
|
||||||
|
}
|
||||||
.strapi-blocks {
|
.strapi-blocks {
|
||||||
h2 {
|
h2 {
|
||||||
color: var(--c-bleu);
|
color: var(--c-bleu);
|
||||||
|
|||||||
BIN
public/contenus/droit_image_majeur.pdf
Normal file
BIN
public/contenus/droit_image_majeur.pdf
Normal file
Binary file not shown.
BIN
public/contenus/droit_image_mineur.pdf
Normal file
BIN
public/contenus/droit_image_mineur.pdf
Normal file
Binary file not shown.
BIN
public/contenus/lettre_engagement_academie_2027.pdf
Normal file
BIN
public/contenus/lettre_engagement_academie_2027.pdf
Normal file
Binary file not shown.
@@ -39,6 +39,15 @@ function getTransporter() {
|
|||||||
return transporter
|
return transporter
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function escapeHtml(value) {
|
||||||
|
return String(value)
|
||||||
|
.replaceAll("&", "&")
|
||||||
|
.replaceAll("<", "<")
|
||||||
|
.replaceAll(">", ">")
|
||||||
|
.replaceAll('"', """)
|
||||||
|
.replaceAll("'", "'")
|
||||||
|
}
|
||||||
|
|
||||||
export async function sendParcDemandEmails(payload) {
|
export async function sendParcDemandEmails(payload) {
|
||||||
const config = useRuntimeConfig()
|
const config = useRuntimeConfig()
|
||||||
const mailer = getTransporter()
|
const mailer = getTransporter()
|
||||||
@@ -271,6 +280,9 @@ export async function sendProjetAcademieEmails(payload) {
|
|||||||
|
|
||||||
const summary = getProjetAcademieSummary(payload)
|
const summary = getProjetAcademieSummary(payload)
|
||||||
const fullName = `${payload.lastName} ${payload.firstName}`
|
const fullName = `${payload.lastName} ${payload.firstName}`
|
||||||
|
const dropboxUrl = "https://www.dropbox.com/scl/fo/nu76b9k860kxkczlgpvwc/AO3pMAvoG9EVcsiRWcRk4cE?rlkey=rjnsqvgl9v1topm8mno3uns4a&e=2&st=dsrnbdca&dl=0"
|
||||||
|
const siteUrl = process.env.NUXT_PUBLIC_SITE_URL || "https://www.orchestre-ile.com"
|
||||||
|
const academieUrl = new URL("/mediation/academie", siteUrl).toString()
|
||||||
|
|
||||||
const adminSubject = `WONDIF - Candidature Academie d'orchestre - ${fullName}`
|
const adminSubject = `WONDIF - Candidature Academie d'orchestre - ${fullName}`
|
||||||
const adminText = [
|
const adminText = [
|
||||||
@@ -283,10 +295,45 @@ export async function sendProjetAcademieEmails(payload) {
|
|||||||
const userText = [
|
const userText = [
|
||||||
`Bonjour ${payload.firstName} ${payload.lastName},`,
|
`Bonjour ${payload.firstName} ${payload.lastName},`,
|
||||||
"",
|
"",
|
||||||
"Votre candidature à l'Académie d'orchestre de l'Orchestre national d'Île-de-France a bien été transmise.",
|
`Nous vous confirmons que votre inscription à l’Académie d’Orchestre 2027 a bien été prise en compte pour l’instrument suivant : ${payload.instrument}.`,
|
||||||
"",
|
"",
|
||||||
"Recapitulatif :",
|
"Afin de préparer les auditions, vous trouverez ci-dessous un lien vers les cahiers de traits d’orchestre à travailler :",
|
||||||
summary,
|
`Lien traits d’orchestre (Dropbox) - ${dropboxUrl}`,
|
||||||
|
"",
|
||||||
|
"Vous pourrez accéder au cahier correspondant à l’instrument présenté aux auditions et commencer votre préparation dès à présent.",
|
||||||
|
`Ce lien est également accessible depuis la page Académie 2027 du site de l’Orchestre national d’Île-de-France : ${academieUrl}`,
|
||||||
|
"",
|
||||||
|
"Une fois les inscriptions clôturées, vous recevrez une convocation pour les auditions, qui se dérouleront entre le 2 et le 16 novembre 2026. Cette convocation vous sera envoyée début octobre.",
|
||||||
|
"",
|
||||||
|
"Nous vous remercions de bien vouloir apporter le jour des auditions :",
|
||||||
|
"- la lettre d’engagement signée",
|
||||||
|
"- le formulaire de droit à l’image, complété et signé",
|
||||||
|
"",
|
||||||
|
"Vous trouverez ces deux documents en pièces jointes de ce message.",
|
||||||
|
"",
|
||||||
|
"Pour toute question ou besoin de renseignement complémentaire, vous pouvez contacter Zoe Crampon :",
|
||||||
|
"par mail : zoe.crampon@orchestre-ile.com",
|
||||||
|
"par téléphone : 06 82 73 65 01",
|
||||||
|
"",
|
||||||
|
"Nous vous remercions de votre inscription et vous souhaitons une excellente préparation.",
|
||||||
|
"",
|
||||||
|
"Bien cordialement,",
|
||||||
|
"L’équipe d’action culturelle de l’Orchestre national d’Île-de-France",
|
||||||
|
].join("\n")
|
||||||
|
const userHtml = [
|
||||||
|
`<p>Bonjour ${escapeHtml(payload.firstName)} ${escapeHtml(payload.lastName)},</p>`,
|
||||||
|
`<p>Nous vous confirmons que votre inscription à l’Académie d’Orchestre 2027 a bien été prise en compte pour l’instrument suivant : ${escapeHtml(payload.instrument)}.</p>`,
|
||||||
|
"<p>Afin de préparer les auditions, vous trouverez ci-dessous un lien vers les cahiers de traits d’orchestre à travailler :</p>",
|
||||||
|
`<p><a href="${dropboxUrl}">Lien traits d’orchestre (Dropbox)</a></p>`,
|
||||||
|
"<p>Vous pourrez accéder au cahier correspondant à l’instrument présenté aux auditions et commencer votre préparation dès à présent.</p>",
|
||||||
|
`<p>Ce lien est également accessible depuis la page <a href="${academieUrl}">Académie 2027</a> du site de l’Orchestre national d’Île-de-France.</p>`,
|
||||||
|
"<p>Une fois les inscriptions clôturées, vous recevrez une convocation pour les auditions, qui se dérouleront entre le 2 et le 16 novembre 2026. Cette convocation vous sera envoyée début octobre.</p>",
|
||||||
|
"<p>Nous vous remercions de bien vouloir apporter le jour des auditions :</p>",
|
||||||
|
"<ul><li>la lettre d’engagement signée</li><li>le formulaire de droit à l’image, complété et signé</li></ul>",
|
||||||
|
"<p>Vous trouverez ces deux documents en pièces jointes de ce message.</p>",
|
||||||
|
"<p>Pour toute question ou besoin de renseignement complémentaire, vous pouvez contacter Zoe Crampon :<br>par mail : zoe.crampon@orchestre-ile.com<br>par téléphone : 06 82 73 65 01</p>",
|
||||||
|
"<p>Nous vous remercions de votre inscription et vous souhaitons une excellente préparation.</p>",
|
||||||
|
"<p>Bien cordialement,<br>L’équipe d’action culturelle de l’Orchestre national d’Île-de-France</p>",
|
||||||
].join("\n")
|
].join("\n")
|
||||||
|
|
||||||
await Promise.all([
|
await Promise.all([
|
||||||
@@ -302,6 +349,21 @@ export async function sendProjetAcademieEmails(payload) {
|
|||||||
to: payload.email,
|
to: payload.email,
|
||||||
subject: userSubject,
|
subject: userSubject,
|
||||||
text: userText,
|
text: userText,
|
||||||
|
html: userHtml,
|
||||||
|
attachments: [
|
||||||
|
{
|
||||||
|
filename: "Lettre d'engagement - Académie 2027.pdf",
|
||||||
|
path: "public/contenus/lettre_engagement_academie_2027.pdf",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
filename: "Droit à l'image - majeur.pdf",
|
||||||
|
path: "public/contenus/droit_image_majeur.pdf",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
filename: "Droit à l'image - mineur.pdf",
|
||||||
|
path: "public/contenus/droit_image_mineur.pdf",
|
||||||
|
},
|
||||||
|
],
|
||||||
}),
|
}),
|
||||||
])
|
])
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user