Files

210 lines
10 KiB
PHP
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?php
/**
* CV au format Europass : aperçu A4, enregistrable en PDF depuis le navigateur.
* Variables : $c (candidat), $d (contenu préparé par donnees_europass()), $langue, $source, $anonyme, $options, $traduction.
* La barre d'outils suit la langue de l'interface, la feuille suit la langue du CV.
*/
$params = static fn (array $plus = []): array => $plus + ['id' => $c['id'], 'langue' => $langue]
+ ($anonyme ? ['anonyme' => 1] : [])
+ (!$anonyme && $options['photo'] ? ['photo' => 1] : [])
+ (!$anonyme && !$options['coordonnees'] ? ['coordonnees' => 0] : []);
$lien = static fn (string $page, array $plus = []): string => url($page, array_filter($params($plus), static fn ($v) => $v !== null));
$etat = $traduction['etat'];
?>
<!doctype html>
<html lang="<?= e(langue_courante()) ?>">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="robots" content="noindex, nofollow">
<title><?= e($d['fichier']) ?></title>
<link rel="stylesheet" href="assets/europass.css?v=1.8">
</head>
<body>
<div class="outils">
<a href="<?= e(url('profil', ['id' => $c['id']])) ?>"><?= e(t('Retour à la fiche')) ?></a>
<span class="versions" role="group" aria-label="<?= e(t('Version')) ?>">
<a href="<?= e(url('europass', ['id' => $c['id'], 'langue' => $langue])) ?>"<?= $anonyme ? '' : ' aria-current="true"' ?>><?= e(t('Nominatif')) ?></a>
<a href="<?= e(url('europass', ['id' => $c['id'], 'langue' => $langue, 'anonyme' => 1])) ?>"<?= $anonyme ? ' aria-current="true"' : '' ?>><?= e(t('Anonymisé')) ?></a>
</span>
<?php if (!$anonyme): ?>
<span class="versions" role="group" aria-label="<?= e(t('Contenu')) ?>">
<a href="<?= e($lien('europass', ['coordonnees' => $options['coordonnees'] ? 0 : null])) ?>" aria-pressed="<?= $options['coordonnees'] ? 'true' : 'false' ?>"><?= e(t('Coordonnées')) ?></a>
<?php if (!empty($c['photo'])): ?>
<a href="<?= e($lien('europass', ['photo' => $options['photo'] ? null : 1])) ?>" aria-pressed="<?= $options['photo'] ? 'true' : 'false' ?>"><?= e(t('Photo')) ?></a>
<?php endif; ?>
</span>
<?php endif; ?>
<span class="versions" role="group" aria-label="<?= e(t('Langue du CV')) ?>">
<?php foreach (LANGUES_CV as $code => $nom): ?>
<a href="<?= e($lien('europass', ['langue' => $code])) ?>" lang="<?= e($code) ?>" title="<?= e($nom) ?>"<?= $code === $langue ? ' aria-current="true"' : '' ?>><?= e(strtoupper($code)) ?></a>
<?php endforeach; ?>
</span>
<a class="action" href="<?= e($lien('europass_word')) ?>"><?= e(t('Télécharger en Word')) ?></a>
<button type="button" class="action" id="imprimer"><?= e(t('Enregistrer en PDF')) ?></button>
</div>
<?php if (!empty($_SESSION['flash'])): ?>
<?php foreach ($_SESSION['flash'] as $f): ?>
<p class="note note-<?= e($f['type']) ?>" role="status"><?= e($f['message']) ?></p>
<?php endforeach; unset($_SESSION['flash']); ?>
<?php endif; ?>
<?php if ($etat === 'absente' || $etat === 'perimee'): ?>
<div class="note">
<p><strong><?= e($etat === 'perimee'
? t('La fiche a changé depuis la traduction : le contenu s\'affiche dans sa langue d\'origine.')
: t('Seuls les intitulés sont traduits : le contenu reste dans la langue du CV d\'origine (%s).', strtoupper($source))) ?></strong></p>
<?php if (peut_ecrire() && Claude::configure()): ?>
<form method="post" action="<?= e(url('cv_traduire')) ?>" data-attente="<?= e(t('Traduction en cours…')) ?>">
<?= champ_csrf() ?>
<input type="hidden" name="id" value="<?= (int) $c['id'] ?>">
<input type="hidden" name="langue" value="<?= e($langue) ?>">
<input type="hidden" name="format" value="europass">
<?php if ($anonyme): ?><input type="hidden" name="anonyme" value="1"><?php endif; ?>
<button type="submit"><?= e(t('Traduire le contenu')) ?></button>
</form>
<?php elseif (peut_ecrire()): ?>
<p><a href="<?= e(url('cv', ['id' => $c['id'], 'langue' => $langue])) ?>"><?= e(t('Traduire par fichier, depuis l\'aperçu du CV IT Club')) ?></a></p>
<?php endif; ?>
</div>
<?php elseif ($etat === 'a_jour' && $traduction['origine'] === 'automatique'): ?>
<p class="note"><?= e(t('Contenu traduit automatiquement le %s. Relisez-le avant d\'envoyer le CV.', date_fr($traduction['cree_le']))) ?></p>
<?php endif; ?>
<div class="page" lang="<?= e($langue) ?>">
<header class="bandeau<?= $d['photo'] ? ' avec-photo' : '' ?>">
<?php if ($d['photo']): ?>
<img class="portrait" src="<?= e(url('photo', ['id' => $c['id'], 'v' => substr(basename($d['photo']), 0, 8)])) ?>" alt="" width="120" height="120">
<?php endif; ?>
<div class="identite">
<h1><?= e($d['nom']) ?></h1>
<?php if ($d['titre'] !== ''): ?><p class="titre"><?= e($d['titre']) ?></p><?php endif; ?>
<?php if ($d['coordonnees']): ?>
<p class="coordonnees">
<?php foreach ($d['coordonnees'] as $i => $k): ?>
<span><b><?= e($k['libelle'] . $d['deux_points']) ?></b> <?php if ($k['lien']): ?><a href="<?= e($k['lien']) ?>"><?= e($k['valeur']) ?></a><?php else: ?><?= e($k['valeur']) ?><?php endif; ?></span>
<?php endforeach; ?>
</p>
<?php endif; ?>
</div>
<img class="logo" src="assets/europass/logo-europass-blanc.png" alt="europass" width="150" height="30">
</header>
<?php /* L'en-tête et le pied vides du tableau se répètent sur chaque page imprimée : ils tiennent lieu de marges. */ ?>
<table class="corps" role="presentation">
<thead><tr><td><div class="marge-haut"></div></td></tr></thead>
<tfoot><tr><td><div class="marge-bas"></div></td></tr></tfoot>
<tbody><tr><td>
<?php if ($d['resume']): ?>
<section>
<h2><?= e($d['libelles']['apropos']) ?></h2>
<?php foreach ($d['resume'] as $l): ?><p><?= e($l) ?></p><?php endforeach; ?>
</section>
<?php endif; ?>
<?php if ($d['formations']): ?>
<section>
<h2><?= e($d['libelles']['formation']) ?></h2>
<?php foreach ($d['formations'] as $f): ?>
<article class="element">
<?php if ($f['dates'] !== '' || $f['lieu'] !== ''): ?><p class="date"><?= e(trim($f['dates'] . ' ' . $f['lieu'])) ?></p><?php endif; ?>
<h3><?= e($f['diplome']) ?><?php if ($f['etablissement'] !== ''): ?> <span class="maison"><?= e($f['etablissement']) ?></span><?php endif; ?></h3>
</article>
<?php endforeach; ?>
</section>
<?php endif; ?>
<?php if ($d['experiences']): ?>
<section>
<h2><?= e($d['libelles']['experience']) ?></h2>
<?php foreach ($d['experiences'] as $x): ?>
<article class="element">
<?php if ($x['employeur'] !== '' || $x['lieu'] !== ''): ?>
<p class="employeur"><b><?= e($x['employeur']) ?></b><?= $x['employeur'] !== '' && $x['lieu'] !== '' ? ' – ' : '' ?><?= e($x['lieu']) ?></p>
<?php endif; ?>
<h3><?= e($x['poste']) ?> <span class="dates">– <?= e($x['dates']) ?></span></h3>
<?php foreach ($x['details'] as [$libelle, $valeur]): ?>
<p><b><?= e($libelle . $d['deux_points']) ?></b> <?= e($valeur) ?></p>
<?php endforeach; ?>
<?php if ($x['realisations']): ?>
<p class="sous-titre"><b><?= e($d['libelles']['realisations']) ?></b></p>
<ul><?php foreach ($x['realisations'] as $r): ?><li><?= e($r) ?></li><?php endforeach; ?></ul>
<?php endif; ?>
</article>
<?php endforeach; ?>
</section>
<?php endif; ?>
<?php if ($d['maternelles'] || $d['autres']): ?>
<section>
<h2><?= e($d['libelles']['langues']) ?></h2>
<?php if ($d['maternelles']): ?>
<p><?= e($d['libelles']['maternelles']) ?> <b><?= e(implode(' | ', $d['maternelles'])) ?></b></p>
<?php endif; ?>
<?php if ($d['autres']): ?>
<p><?= e($d['libelles']['autres']) ?></p>
<?php if ($d['avec_grille']): ?>
<table class="grille">
<thead>
<tr><td></td><th colspan="2"><?= e(mb_strtoupper($d['libelles']['comprehension'])) ?></th><th colspan="2"><?= e(mb_strtoupper($d['libelles']['expression'])) ?></th><th><?= e(mb_strtoupper($d['libelles']['ecrit'])) ?></th></tr>
<tr class="sous"><td></td><?php foreach (array_slice($d['libelles']['grille'], 0, 4) as $g): ?><th><?= e($g) ?></th><?php endforeach; ?><th></th></tr>
</thead>
<tbody>
<?php foreach ($d['autres'] as $l): ?>
<tr>
<th scope="row"><?= e($l['langue']) ?></th>
<?php if ($l['grille']): ?>
<?php foreach ($l['grille'] as $niveau): ?><td><?= e($niveau ?: '–') ?></td><?php endforeach; ?>
<?php else: ?>
<td colspan="5"><?= e($l['niveau'] !== '' ? $d['libelles']['niveau'] . ' ' . $l['niveau'] : '–') ?></td>
<?php endif; ?>
</tr>
<?php endforeach; ?>
</tbody>
</table>
<p class="legende"><?= e($d['libelles']['niveaux']) ?></p>
<?php else: ?>
<ul class="langues-simples">
<?php foreach ($d['autres'] as $l): ?><li><b><?= e($l['langue']) ?></b><?= $l['niveau'] !== '' ? e($d['deux_points']) . ' ' . e($l['niveau']) : '' ?></li><?php endforeach; ?>
</ul>
<?php if (array_filter(array_column($d['autres'], 'niveau'))): ?><p class="legende"><?= e($d['libelles']['niveaux']) ?></p><?php endif; ?>
<?php endif; ?>
<?php endif; ?>
</section>
<?php endif; ?>
<?php if ($d['competences']): ?>
<section>
<h2><?= e($d['libelles']['competences']) ?></h2>
<?php foreach ($d['competences'] as $groupe => $liste): ?>
<h4><?= e($groupe) ?></h4>
<p class="liste"><?php foreach ($liste as $i => $item): ?><?= $i ? '<span class="sep" aria-hidden="true">|</span> ' : '' ?><span><?= e($item) ?></span> <?php endforeach; ?></p>
<?php endforeach; ?>
</section>
<?php endif; ?>
<?php if ($d['benevolat']): ?>
<section>
<h2><?= e($d['libelles']['benevolat']) ?></h2>
<?php foreach ($d['benevolat'] as $b): ?><p class="benevolat"><?= e($b) ?></p><?php endforeach; ?>
</section>
<?php endif; ?>
<?php if ($d['permis']): ?>
<section>
<h2><?= e($d['libelles']['permis']) ?></h2>
<?php foreach ($d['permis'] as $p): ?><p><b><?= e($d['libelles']['permis_ligne']) ?></b> <?= e($p) ?></p><?php endforeach; ?>
</section>
<?php endif; ?>
</td></tr></tbody>
</table>
</div>
<script src="assets/cv.js?v=1.8" defer></script>
</body>
</html>