<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width={% if embedded is defined%}800{% else %}device-width{% endif %}, initial-scale={% if embedded is defined%}1{% else %}1.0{% endif %}">
<title>Formulaire de Carte de Visite Moderne</title>
<!-- Inclure le lien vers le fichier CSS de Bootstrap -->
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css" rel="stylesheet">
<link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.1/css/all.min.css" rel="stylesheet">
{# Run `composer require symfony/webpack-encore-bundle` to start using Symfony UX #}
{% block stylesheets %}
{{ encore_entry_link_tags('app') }}
<link rel="stylesheet" media="all" href="//cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.3/css/all.min.css">
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css" rel="stylesheet">
<!-- link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.1/css/all.min.css" rel="stylesheet" -->
<link rel="stylesheet" href="https://site-assets.fontawesome.com/releases/v6.5.1/css/all.css" rel="stylesheet">
<style>
/* Style pour les onglets */
.nav-tabs {
margin-top: 20px;
}
.required-label::after {
content: " *";
color: red;
}
.btn-interdire {
max-width: 90px;
}
.bg-primary {
background-color: #80276C !important;
}
.btn-primary,#vcard_btn_validate {
background-color: #80276C !important;
border-color: #80276C !important;
}
#vcard_btn_duplicate {
max-width: 40%;
margin: 20px;
}
#vcard_btn_reject_confirm {
background-color: #f29400 !important;
border-color: #f29400 !important;
}
#vcard_btn_validate,#vcard_btn_reject_confirm {
color: #ffffff;
}
#cardPreview .modal-dialog {
min-width: 35% !important;
}
.reject-msg-block {
margin-left: 1.25rem;
}
#comm_error {
margin: 1em;
color: red;
}
a,.custom-control-input,span.nav-link {
color: #f29400;
text-decoration: underline;
}
.btn-link {
color: #f29400;
text-decoration: none;
}
.social-media-block {
display: none;
margin-left: 28%;
}
.photo-perso {
margin-bottom: 20px;
}
.photo-perso ul {
list-style-type: none;
margin: 0;
padding: 0;
}
.photo-perso li {
float: left;
}
.photo-perso-img {
position: absolute;
width: 77px;
height: 77px;
border: 1px solid black;
margin: 0 auto;
background: white;
}
.photo-perso-img img {
width: 100%;
height: auto;
}
.photo-perso-infos {
margin-left: 81px;
/*
max-width: 49%;
*/
}
.submit-warning {
margin: 1em;
color: red;
}
@media screen and (max-width: 1024px) {
.photo-perso-infos {
max-width: 48% !important;
overflow-x: hidden !important;
}
}
{% if embedded is defined %}
@media screen and (orientation: portrait) {
html {
/*
transform: rotate(-90deg);
*/
transform-origin: left top;
width: 70vh;
/*
height: 100vw;
*/
overflow-x: hidden;
position: absolute;
top: 0;
left: 0;
}
.container {
padding-left: 0px !important;
padding-right: 0px !important;
}
}
@media only screen and (orientation:landscape){
html {
transform: rotate(0deg);
width: 90%;
height: 50%;
}
.card-owner-ids-details {
display: none;
}
.photo-bg {
display: none !important;
}
.social-media-block .inner-block {
float: left !important;
margin-left: 20px;
}
.social-media-block {
margin-bottom: 0px !important;
}
#qrcode {
position: absolute;
top: 110px;
right: 47px;
}
.col-md-9 {
margin-top: 10px;
}
.mt-5, .my-5 {
margin-top: 0 !important;
}
#container {
-webkit-transform: rotate(0deg);
-moz-transform: rotate(0deg);
-o-transform: rotate(0deg);
-ms-transform: rotate(0deg);
transform: rotate(0deg);
}
.card-body {
padding-bottom: 0px !important;
}
}
.col, .col-1, .col-10, .col-11, .col-12, .col-2, .col-3, .col-4, .col-5, .col-6, .col-7, .col-8, .col-9, .col-auto, .col-lg, .col-lg-1, .col-lg-10, .col-lg-11, .col-lg-12, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-auto, .col-md, .col-md-1, .col-md-10, .col-md-11, .col-md-12, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-auto, .col-sm, .col-sm-1, .col-sm-10, .col-sm-11, .col-sm-12, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-auto, .col-xl, .col-xl-1, .col-xl-10, .col-xl-11, .col-xl-12, .col-xl-2, .col-xl-3, .col-xl-4, .col-xl-5, .col-xl-6, .col-xl-7, .col-xl-8, .col-xl-9, .col-xl-auto {
position: relative;
width: 100%;
padding-right: 15px;
padding-left: 15px;
max-width: 100% !important;
}
.row {
display: block !important;
}
{% endif %}
/*** autocomplete **/
.autocomplete{
width: 250px;
position: relative;
}
.autocomplete #searchResult{
list-style: none;
padding: 0px;
width: 100%;
position: absolute;
margin: 0;
background: white;
top: 77px;
left: 15px;
}
.autocomplete #searchResult li{
background: #F2F3F4;
padding: 4px;
margin-bottom: 1px;
}
.autocomplete #searchResult li:nth-child(even){
background: #E5E7E9;
color: black;
}
.autocomplete #searchResult li:hover{
cursor: pointer;
background: #CACFD2;
}
.autocomplete input[type=text]{
padding: 5px;
width: 100%;
letter-spacing: 1px;
}
/*****/
.nav-item .nav-link.active {
font-weight: bold;
background-color: #f0f0f0;
border-color: #f0f0f0;
border-top-left-radius: 0;
border-top-right-radius: 0;
}
</style>
<link href="/css/application.css" rel="stylesheet" crossorigin="anonymous">
{% endblock %}
{% block javascripts %}
<script src="/application.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.16.0/umd/popper.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js"></script>
{{ encore_entry_script_tags('app') }}
{% endblock %}
</head>
<body>
{%if embedded is not defined%}
<nav class="navbar navbar-expand-md navbar-dark fixed-top bg-dark">
<div class="container-fluid">
<span>
<img id="logo" src="/img/LogoHeader.jpeg">
<div class="navbar-brand" href="#"></div>
</span>
</div>
</nav>
<div id="bloc_titre" class="">
<p>
</p><h3>Gestion des cartes</h3>
<p></p>
</div>
{% endif %}
<div class="container mt-5">
<div class="row">
{%if embedded is not defined%}
<div class="col-md-3">
<!-- Onglets -->
<ul class="nav flex-column nav-tabs" id="myTabs">
{%if manager_v is not defined %}
{{ include('_nav.html.twig') }}
{%endif%}
{%if false and needs_auth is defined and back_url is defined %}
<li class="nav-item">
<a class="nav-link" id="cv-tab" data-toggle="tab" href="{{back_url}}" onclick="window.location='/v/card/search';">Retour</a>
</li>
{% elseif needs_auth is not defined and (disp_vcard is defined or disp_search is defined or disp_manager is defined or disp_message is defined) %}
<li class="nav-item">
<a class="nav-link {%if published_card is defined and from_search is not defined%}active{%endif%}" id="cv-tab" data-toggle="tab" href="#" onclick="window.location='/v/card/last';">Version publiée</a>
</li>
{%endif%}
{%if manager_v is not defined %}
<li class="nav-item">
<a class="nav-link {%if disp_search is defined or from_search is defined %}active{%endif%}" id="search-tab" data-toggle="tab" href="/v/card/search" onclick="window.location='/v/card/search';">Rechercher</a>
</li>
{%endif%}
{%if is_manager is defined and is_manager%}
<li class="nav-item">
<a class="nav-link {%if disp_manager is defined %}active{%endif%}" id="cv-tab" data-toggle="tab" href="#" onclick="window.location='/v/card/manager';">Administrer les cartes</a>
</li>
{%endif%}
</ul>
</li>
</ul>
</div>
{%endif%}{# end not embedded #}
<div class="col-md-9">
<!-- Contenu des onglets -->
<div class="tab-content" id="myTabsContent">
<!-- Partie 1: Photo -->
<div class="tab-pane fade" id="photo-form">
<div class="card shadow mb-4">
<div class="card-header bg-primary text-white text-center">
<h3 class="mb-0">Photo d'identité</h3>
</div>
<div class="card-body">
<form>
<div class="form-group">
<div class="form-group row">
<label for="email" class="col-sm-4 col-form-label required-label">Email</label>
<div class="col-sm-8">
<input type="email" readonly class="form-control" id="photo_form_email" value="{%if user_email is defined %}{{user_email}}{%endif%}"/>
</div>
</div>
</div>
<div class="form-group">
<label class="required-label" for="photo">Photo d'identité</label>
<p class="font-italic">Les photographies fournies pour établir une carte professionnelle doivent être récentes, de type photographie d’identité (de face et uniquement le visage) et sous un format numérique (préalablement enregistrée sur votre ordinateur). Si la photographie ne respecte pas ces règles, elle sera rejetée et la carte professionnelle ne sera pas délivrée.</p>
<input required type="file" class="form-control-file mb-2" id="photo" accept="image/*">
<div class="text-center">
<img src="#" alt="Aperçu de la photo" id="photo-preview" style="max-width: 200px; height: auto; display: none;">
</div>
<div class="text-center mt-2">
<p id="photo-size" class="text-muted" style="display: none;">Taille de la photo :</p>
</div>
<button type="button" class="btn btn-danger mt-2" id="remove-photo" style="display: none;">Supprimer la photo</button>
</div>
</form>
</div>
</div>
</div>
<!-- Partie 2 : Droits à l'image -->
<div class="tab-pane fade" id="di-form">
<div class="card shadow mb-4">
<div class="card-header bg-primary text-white text-center">
<h3 class="mb-0">Droits à l'image</h3>
</div>
<div class="card-body">
<form>
<div class="form-group">
<div class="form-group row">
<label for="email" class="col-sm-4 col-form-label required-label">Droits à l'image</label>
</div>
<div class="btn-group btn-group-toggle d-flex align-items-center" data-toggle="buttons">
<label class="btn btn-success" onclick="selectImageOption(1)">
<input type="radio" name="image-options" id="image-option1">Autoriser
<i class="fas fa-check-circle"></i>
</label>
<label class="ml-2">J’autorise l’ENSAM à utiliser ma photographie pour un usage interne à l’établissement (notamment dans la diffusion au sein des annuaires)</label>
</div>
</div>
<div class="form-group">
<div class="btn-group btn-group-toggle d-flex align-items-center" data-toggle="buttons">
<label class="btn btn-interdire" onclick="selectImageOption(2)">
<input type="radio" name="image-options" id="image-option2">Interdire
<i class="fas fa-times-circle"></i>
</label>
<label class="ml-2">J’interdis l’ENSAM à utiliser ma photographie à l’exception de la carte professionnelle</label>
</div>
</div>
<p class="font-italic"> « Le droit à l'image permet à toute personne de s'opposer - quelle que soit la nature du support utilisé - à la reproduction et à la diffusion, sans son autorisation expresse, de son image. La diffusion, à partir d'un site web, de l'image ou de la vidéo d'une personne doit respecter ces principes. Pour autant, lorsque la capture de l'image d'une personne a été accomplie au vu et au su de l'intéressée sans qu'elle s'y soit opposée alors qu'elle était en mesure de le faire, le consentement de celle-ci est présumé. La loi "informatique et libertés" conduit le responsable du traitement à informer les personnes dont les images sont utilisées de son identité, de la finalité du traitement (diffusion de son image sur un intranet, sur internet, etc.), des personnes destinataires des images et de l'existence d'un droit d'accès et de rectification. L'article 38 de la loi reconnaît à toute personne physique le droit de "s'opposer, pour des motifs légitimes, à ce que des données à caractère personnel la concernant fassent l'objet d'un traitement." Ainsi, une personne qui contesterait, par exemple, la diffusion de son image par un site web pourrait s'adresser soit au juge en s'appuyant sur les principes du droit à l'image (obligation de recueil du consentement), soit à la CNIL, après avoir, en application du droit d'opposition, demandé sans succès l'arrêt de cette diffusion au responsable du site. » </p>
</form>
</div>
</div>
</div>
<div class="tab-pane fade show active" id="cv-form">
{% if disp_form is defined %}
{{ include('v_card/_vcard_form.html.twig') }}
{% elseif disp_search is defined %}
{{ include('v_card/_search.html.twig') }}
{% elseif disp_message is defined %}
{{ include('v_card/_message.html.twig') }}
{% elseif disp_vcard is defined %}
{{ include('v_card/_vcard.html.twig') }}
{% elseif disp_manager is defined %}
{{ include('v_card/_manager.html.twig') }}
{% endif %}
</div>
<!-- Partie 4 : Restauration CROUS -->
<div class="tab-pane fade" id="crous-form">
<div class="card shadow mb-4">
<div class="card-header bg-primary text-white text-center">
<h3 class="mb-0">Restauration CROUS</h3>
</div>
<div class="card-body">
<p class="font-italic">L'établissement a signé des conventions avec les CROUS régionaux qui s'équipent à partir de septembre 2015 de la nouvelle monétique IZLY.
<br> La carte professionnelle intégrera cette nouvelle monétique.</p>
<p class="required-label">Demande de création de compte IZLY ?</p>
<form>
<div class="form-group">
<div class="custom-control custom-radio">
<input type="radio" id="crous-option1" name="crous-options" class="custom-control-input" checked>
<label class="custom-control-label" for="crous-option1">OUI</label>
</div>
<div class="custom-control custom-radio">
<input type="radio" id="crous-option2" name="crous-options" class="custom-control-input">
<label class="custom-control-label" for="crous-option2">NON</label>
</div>
</div>
</form>
<p class="font-weight-light">Le compte IZLY vous permettra de gérer le porte-monnaie virtuel servant à payer votre repas au CROUS. Pour plus d'informations, veuillez cliquer ici. La demande de création du porte-monnaie IZLY entraîne l'envoi d'informations personnelles au CROUS. Ces informations personnelles concernent votre identité (prénom, nom, courriel professionnel) ainsi que le code tarif CROUS correspondant à votre indice de rémunération.</p>
</div>
</div>
</div>
</div>
</div>
</div>
</div> <!-- container mt-5 v20231005 //-->
<!-- Inclure le lien vers le fichier JavaScript de Bootstrap -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.16.0/umd/popper.min.js"></script>
<script>
var vcard_tab = document.getElementById('cv-tab');
if (vcard_tab !== undefined) {
vcard_tab.onclick = function(evt) {
evt.preventDefault();
window.location = '/v/card/';
};
}
var protect_link = document.getElementById('protect_donnes');
if (protect_link !== undefined) {
protect_link.onclick = function(evt) {
evt.preventDefault();
let dest = protect_link.getAttribute('href');
if (dest !== undefined
&& dest != ''
) {
window.open(dest);
}
};
}
// Fonction pour basculer la visibilité des sous-menus
function toggleSousMenus(menuId) {
/*
TODO: Enable with Carte Pro
var sousMenus = document.getElementById(menuId + '-sous-menus');
if (sousMenus.style.display === 'none') {
sousMenus.style.display = 'block';
} else {
sousMenus.style.display = 'none';
}
*/
}
</script>
{#
<script>
$(document).ready(function() {
// Gérer la sélection de la photo
$('#photo').change(function() {
var reader = new FileReader();
reader.onload = function(e) {
$('#photo-preview').attr('src', e.target.result).show();
$('#thumbnail').attr('src', e.target.result); // Afficher la miniature
$('#thumbnail-container').show();
$('#remove-photo').show();
// Afficher la taille de la photo
var fileSize = (e.total / 1024).toFixed(2); // Taille en kilo-octets (Ko)
$('#photo-size').text('Taille de la photo : ' + fileSize + ' Ko').show();
};
reader.readAsDataURL(this.files[0]);
});
// Gérer la suppression de la photo
$('#remove-photo').click(function() {
$('#photo').val('');
$('#photo-preview').hide();
$('#thumbnail-container').hide();
$('#photo-size').hide();
$(this).hide();
});
// ajouter téléphone
$('#toggleTelephone2').click(function() {
$('#telephone2').toggle();
$('#indicatifTelephone2').toggle();
if ($('#telephone2').is(':visible')) {
$(this).text('-');
} else {
$(this).text('+');
}
});
// ajouter email
$('#toggleEmail2').click(function() {
$('#email2').toggle();
if ($('#email2').is(':visible')) {
$(this).text('-');
} else {
$('#email2').val('');
$(this).text('+');
}
});
// ajouter titre
$('#toggleTitre2').click(function() {
$('#titre2').toggle();
if ($('#titre2').is(':visible')) {
$(this).text('-');
} else {
$(this).text('+');
}
});
{%if embedded is defined %}
viewport = document.querySelector("meta[name=viewport]");
viewport.setAttribute('content', 'width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0');
{% endif %}
}); // END: $ready
const autoriserButton = document.getElementById('image-option1');
const interdireButton = document.getElementById('image-option2');
autoriserButton.addEventListener('click', function () {
autoriserButton.checked = true;
interdireButton.checked = false;
});
interdireButton.addEventListener('click', function () {
autoriserButton.checked = false;
interdireButton.checked = true;
});
/*
const vcard_link = document.getElementById('cv-tab');
vcard_link.onclick = function(evt) {
document.location = '/v/card';
};
*/
</script>
#}
{% block body %}
{% endblock %}
</body>
</html>