Compare commits

...

21 Commits

Author SHA1 Message Date
devtt cf78529385 Error de config 2021-06-28 10:22:21 +02:00
devtt 0002b814c0 MEP v2.11.2 2021-06-28 10:10:39 +02:00
llaniau 8ca69f778c Epuration code avant MEP 2021-06-28 08:46:31 +02:00
llaniau 6ae87a487a Correction bugs suite recette 14 06 2021-06-14 16:07:52 +02:00
llaniau f52dcc7c96 ... 2021-06-14 12:52:43 +02:00
llaniau 639e1b2bcd Page talent referencement 2021-06-14 12:50:07 +02:00
llaniau 991e04dbaf talent show, metier 2021-06-14 12:43:53 +02:00
llaniau 09e021f02e Résolution de bugs 2021-06-14 12:28:03 +02:00
llaniau 3adfbb57e1 BaseTalent referencement 2021-06-07 17:05:42 +02:00
llaniau 195ec8c4bd US 558 2021-06-07 16:59:56 +02:00
devtt 4ba368ea27 Modif page partage profil public 2021-06-07 15:35:15 +02:00
devtt 1491178bd8 Nouvelle page partage profil public (candidat) 2021-06-03 08:40:17 +02:00
devtt ce8301bfc6 Init V2.11.1 2021-05-31 15:54:31 +02:00
llaniau 264e97dbaf Config vimeo pre prod 2021-05-31 12:52:09 +02:00
llaniau a26841091c media manager 2021-05-31 12:20:36 +02:00
llaniau 8c797c884a V2.10.4 2021-05-25 18:09:28 +02:00
llaniau 96c4c726b4 Changement tel 2021-05-25 17:43:48 +02:00
llaniau a20990ec04 Suppression talent 2021-05-17 16:07:55 +02:00
llaniau 684ecd94b1 MEP V2.10.3 2021-05-17 10:52:50 +02:00
llaniau b6b473d54f US 549 /550 2021-05-03 16:45:16 +02:00
llaniau 1616739b78 Init V2.10.1 2021-04-26 11:30:15 +02:00
25 changed files with 1525 additions and 37 deletions
@@ -65,7 +65,7 @@
©2017-2021 Talents Tube
</p>
<p class="small no-margin pull-right sm-pull-reset">
Besoin d'aide ? 02 30 05 06 31
Besoin d'aide ? 07 56 85 27 36
</p>
<div class="clearfix"></div>
</div>
@@ -65,7 +65,7 @@
©2017-2021 Talents Tube
</p>
<p class="small no-margin pull-right sm-pull-reset">
Besoin d'aide ? 02 30 05 06 31
Besoin d'aide ? 07 56 85 27 36
</p>
<div class="clearfix"></div>
</div>
@@ -5,6 +5,9 @@
<h1>
Modification d'un talent
<small>{{ user.firstname }} {{ user.lastname }}</small>
<a class="delete-user" href="{{ path('admin_user_delete',{'id':user.id}) }}" data-toggle="tooltip" title="Supprimer">
<i class="fa fa-trash"></i>
</a>
</h1>
<ol class="breadcrumb">
<li><a href="{{ path('admin_dashboard') }}"><i class="fa fa-dashboard"></i> Dashboard</a></li>
+3 -5
View File
@@ -49,11 +49,9 @@
<meta name="twitter:card" content="summary_large_image" />
{% endblock %}
{% if app.environment == "dev" %}
{# <meta name="robots" content="noindex,nofollow"> #}
{% else %}
{# <meta name="robots" content="noindex,nofollow"> #}
{% endif %}
{# A ENLEVER EN PROD #}
<meta name="robots" content="noindex,nofollow">
</head>
<body>
@@ -0,0 +1,274 @@
<!DOCTYPE html>
<html lang="fr">
<head>
<!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-98246968-7"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag() {
dataLayer.push(arguments);
}
gtag('js', new Date());
gtag('config', 'UA-98246968-7');
</script>
<!-- End Google Tag Manager -->
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>{% block title %}Talents Tube : La 1ère plateforme pour lemploi 100% vidéo{% endblock %}</title>
<link rel="icon" type="image/x-icon" href="{{ asset('favicon.ico') }}" />
{% block metarobot %}
{# A ENLEVER EN PROD #}
<meta name="robots" content="noindex,nofollow">
{% endblock %}
<meta name="description" content="{% block description %}
Talents Tube est la première plateforme réservée aux offres d'emploi et aux CV vidéos. Découvrez un nouvelle méthode de recrutement !
{% endblock %}">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<meta name="robots" content="index,follow">
{# OG et TC #}
{% if app.request.attributes.get('_route') != null %}
{% block ogtc %}
{#Twitter Card data pour les données enrichies sur Twitter#}
<meta name="twitter:card" content="summary">
<meta name="twitter:site" content="@TalentsTube">
<meta name="twitter:title" content="Talents Tube : Le 1er job board 100% vidéo">
<meta name="twitter:description"
content="Talents Tube est la première plateforme réservée aux offres d'emploi et aux CV vidéos. Découvrez un nouvelle méthode de recrutement !">
<meta name="twitter:image" content="{{ absolute_url(asset('img/mail/logo-talents-tube.png')) }}">
{#Open Graph data pour le partage sur les réseaux sociaux (ex Facebook..)#}
<meta property="og:title" content="Talents Tube : Le 1er job board 100% vidéo" />
<meta property="og:type" content="article" />
<meta property="og:image" content="{{ absolute_url(asset('img/mail/logo-talents-tube.png')) }}" />
<meta property="og:description"
content="Talents Tube est la première plateforme réservée aux offres d'emploi et aux CV vidéos. Découvrez un nouvelle méthode de recrutement !" />
<meta property="og:site_name" content="Talents Tube" />
<meta property="og:url"
content="{{ url(app.request.attributes.get('_route'), app.request.attributes.get('_route_params')) }}" />
{% endblock %}
{# Canonical #}
<link rel="canonical"
href="{% block urlCanonical %}{{ url(app.request.attributes.get('_route'), app.request.attributes.get('_route_params')) }}{% endblock %}">
{% endif %}
{# CSS #}
<link href="/landing/css/bootstrap.min.css" rel="stylesheet">
<link href="/v2/css/product.css" rel="stylesheet">
<link href="css/bootstrap-responsive.min.css" rel="stylesheet" type="text/css" />
<link href="css/bootstrap-lightbox.min.css" rel="stylesheet" type="text/css" />
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
<link
href="https://fonts.googleapis.com/css?family=Raleway:100,100i,200,200i,300,300i,400,400i,500,500i,600,600i,700,700i,800,800i,900,900i|Varela+Round"
rel="stylesheet">
{# <link rel="stylesheet" href="{{ asset('css/styles.css') }}"> #}
{% block stylesheets %}
{% endblock %}
<script type="text/javascript">
window.$crisp = [];
window.CRISP_WEBSITE_ID = "78ec5756-1cd5-4f3f-b0db-cb408c8171da";
(function () {
d = document;
s = d.createElement("script");
s.src = "https://client.crisp.chat/l.js";
s.async = 1;
d.getElementsByTagName("head")[0].appendChild(s);
})();
</script>
</head>
<body>
{% block modalCallToAction %}
<!-- Modal : Formulaire -->
<div class="modal fade" id="exampleModal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel"
aria-hidden="true">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
</div>
<div class="modal-body">
<div class="container-fluid">
<div class="row" id="demandeRdvContainer">
<div class="col-sm-12">
<h2>Envoyer un message à {{ user.firstname }}</h2>
<p>Pour contacter le candidat, vous devez compléter les champs ci-dessous. Ces informations vont
permettre au candidat de répondre à votre message.</p>
<div class="row">
<div class="col-12 col-sm-12">
<div class="form-group">
<label for="exampleInputPrenom>">Prénom</label>
<input type="text" class="form-control" id="prenom" placeholder="Votre prénom">
</div>
</div>
</div>
<div class="row">
<div class="col-12 col-sm-12">
<div class="form-group">
<label for="exampleInputNom">Nom</label>
<input type="text" class="form-control" id="nom" placeholder="Votre nom">
</div>
</div>
</div>
<div class="row">
<div class="col-12 col-sm-12">
<div class="form-group">
<label for="exampleInputEntreprise">Entreprise</label>
<input type="text" class="form-control" id="entreprise" placeholder="Nom de l'entreprise">
</div>
</div>
</div>
<div class="row">
<div class="col-12 col-sm-12">
<div class="form-group">
<label for="exampleInputEmail1">E-mail</label>
<input type="email" class="form-control" id="email" placeholder="Votre email">
</div>
</div>
</div>
<div class="row">
<div class="col-12 col-sm-12">
<div class="form-group">
<label for="exampleInputPhone">Téléphone</label>
<input type="hidden" id="userId" value="{{ user.id }}">
<input type="phone" class="form-control" id="telephone" placeholder="Votre téléphone">
</div>
</div>
</div>
<div class="row">
<div class="col-12 col-sm-12">
<div class="form-group">
<label for="exampleInputMessage">Message</label>
<textarea class="form-control" id="message"
placeholder="Ecrivez le message que vous souhaitez envoyer à ce talent."></textarea>
</div>
</div>
<div class="form-group">
<p class="text-danger" id="erreur">Veuillez compléter l'ensemble des champs ci-dessus pour
envoyer votre message</p>
<p class="text-danger" id="erreurCgu">Vous devez accepter les CGU pour contacter un candidat.</p>
</div>
</div>
<div class="form-check">
<input type="checkbox" class="form-check-input" id="cgu">
<label class="form-check-label" for="cgu">J'accepte les <a href="https://recruteur.talentstube.com/cgu">conditions générales d'utilisation</a></label>
<p>* En acceptant nos CGU, vous acceptez de recevoir des propositions commerciales de la part de Talents Tube</p>
</div>
</div>
</div>
<div class="row" id="felicitationRdvContainer" class="text-center">
<div class="text-center">
<img src="/landing/img/demande-rendez-vous.svg">
<h2>Message envoyé !</h2>
<p>Votre message a bien été envoyé à {{ user.firstname }} {{ user.lastname }}.</p>
<p>Découvrez la plateforme <a href="/">Talents Tube</a>.</p>
</div>
</div>
</div>
</div>
<div class="modal-footer">
<button class="bttn" onClick="miseEnRelationTalentEntreprise();" id="boutonDemandeRdv">Envoyer le message</button>
</div>
</div>
</div>
</div>
<!--Modal : Formulaire End -->
{% endblock %}
<!-- Google Tag Manager (noscript) -->
<noscript>
<iframe src="https://www.googletagmanager.com/ns.html?id=GTM-P4G65WJ" height="0" width="0"
style="display:none;visibility:hidden"></iframe>
</noscript>
<!-- End Google Tag Manager (noscript) -->
{#{% include 'default/alert.html.twig' %}#}
{# {% include 'default/user_switch.html.twig' %} #}
{% include 'default/headerTalent.html.twig' %}
{# {% include 'default/props_settings.html.twig' %} #}
{% block content %}
{% endblock %}
{# {% include 'default/footertemporaire.html.twig' %} #}
<script src="/landing/js/jquery-2.1.3.min.js"></script>
<script src="/landing/js/bootstrap.min.js"></script>
<script src="/landing/js/waypoints.min.js"></script>
<!--Ordre important-->
<script src="/landing/js/waypoints-sticky.min.js"></script> <!-- Nécessaire header sticky -->
<script src="/landing/js/retina.min.js"></script> <!-- Nécessaire logo header (à voir pour l'enlever) -->
<script src="/landing/js/owl.carousel.min.js"></script> <!-- Nécessaire avec les avantages (+de 3 avantages) -->
<script src="/landing/js/jquery.ajaxchimp.min.js"></script> <!-- Nécessaire FAQ-->
<script src="/landing/js/jquery.validate.min.js"></script>
<script src="/landing/js/main.js"></script>
{% block javascripts %}
{% javascripts
'@vendors'
'@global'
output='assetic/main.js' filter='?uglifyjs2' %}
<script src="{{ asset_url }}"></script>
{% endjavascripts %}
{% endblock %}
<script>
$("#erreur").hide();
$("#erreurCgu").hide();
$("#felicitationRdvContainer").hide();
function miseEnRelationTalentEntreprise() {
if ($("#nom").val() == "" || $("#prenom").val() == "" || $("#entreprise").val() == "" || $("#email").val() == "" || $("#telephone").val() == "" || $("#message").val() == "") {
$("#erreur").show();
$("#erreurCgu").hide();
}else if ($("#cgu").prop('checked')==false){
$("#erreurCgu").show();
$("#erreur").hide();
}else {
$("#erreur").hide();
$("#erreurCgu").hide();
$("#boutonDemandeRdv").hide();
$("#felicitationRdvContainer").show();
$("#demandeRdvContainer").hide();
$.ajax({
//L'URL de la requête
url: "/app_dev.php/api/miseEnRelationTalentEntreprise?nom=" + $("#nom").val() + "&prenom=" + $("#prenom").val()+ "&entreprise=" + $("#entreprise").val() + "&email=" +
$("#email").val() + "&telephone=" + $("#telephone").val()+ "&userId=" + $("#userId").val()+ "&message=" + $("#message").val() + "&page=Demande mise en relation",
method: "GET",
//La méthode d'envoi (type de requête)
//Le format de réponse attendu
dataType: "json",
})
//Ce code sera exécuté en cas de succès - La réponse du serveur est passée à done()
/*On peut par exemple convertir cette réponse en chaine JSON et insérer
* cette chaine dans un div id="res"*/
.done(function (response) {
console.log("Requête mise en relation done");
})
//Ce code sera exécuté en cas d'échec - L'erreur est passée à fail()
//On peut afficher les informations relatives à la requête et à l'erreur
.fail(function (error) {
console.log("Requête mise en relation fail");
console.log(error);
})
//Ce code sera exécuté que la requête soit un succès ou un échec
.always(function () {
console.log("Requête mise en relation effectuée");
});
}
}
</script>
</body>
</html>
@@ -16,11 +16,10 @@
<!-- Required Meta Tags Always Come First -->
<meta charset="utf-8">
{% if app.environment == "dev" %}
{# <meta name="robots" content="noindex,nofollow"> #}
{% else %}
{# <meta name="robots" content="noindex,nofollow"> #}
{% endif %}
{# A ENLEVER EN PROD #}
<meta name="robots" content="noindex,nofollow">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
{% block meta %}
{% endblock %}
@@ -478,6 +478,7 @@
});
</script>
<script>
//appel de l'api getAppelationsLibelle
$(document)
.ready(function () {
// Construction du champ typeahead d'auto compléetion de métier
@@ -56,7 +56,7 @@
</p>
<h5 class="white-text">Contactez-nous !</h5>
<a class="white-text" href="mailto:&#098;&#111;&#110;&#106;&#111;&#117;&#114;&#064;&#116;&#097;&#108;&#101;&#110;&#116;&#115;&#116;&#117;&#098;&#101;&#046;&#099;&#111;&#109;">Par mail</a>
<p class="white-text">02 30 05 06 31</p>
<p class="white-text">07 56 85 27 36</p>
<p class="footer-newsletter">
<a class="btn-large btn-round" href="#" title="Newsletter" data-token="ecea5416671e97e3abfa8195848a9140" onclick="mjOpenPopin(event, this)">
<i class="fa fa-envelope-open-o left" aria-hidden="true"></i>
@@ -35,7 +35,7 @@
</p>
<h5 class="white-text">Contactez-nous !</h5>
<a class="white-text" href="mailto:&#098;&#111;&#110;&#106;&#111;&#117;&#114;&#064;&#116;&#097;&#108;&#101;&#110;&#116;&#115;&#116;&#117;&#098;&#101;&#046;&#099;&#111;&#109;">Par mail</a>
<p class="white-text">02 30 05 06 31</p>
<p class="white-text">07 56 85 27 36/p>
<p class="footer-newsletter">
<a class="btn-large btn-round" href="#" title="Newsletter" data-token="ecea5416671e97e3abfa8195848a9140" onclick="mjOpenPopin(event, this)">
<i class="fa fa-envelope-open-o left" aria-hidden="true"></i>
@@ -0,0 +1,69 @@
<div class="fluid-container header-fixed-top sticky-top " id="header-wrapper">
<div id="header" class="">
<nav class="nav-wrapper site-header sticky-top p-3 ">
<div class=" logo-wrapper d-flex flex-column flex-md-row justify-content-between w-100 pl-md-3">
<a class="py-2" href="{{ path('homepage') }}" class="brand-logo">
<img alt="talents-tube" src="{{ asset('img/logo-talentstube-blanc-header.svg') }}"
alt="Talents Tube" />
</a>
</div>
</nav>
</div>
{# <div id="newApp" class="container-fluid">
<div class="row">
</div>
</div> #}
</div>
{# <div class="nav-wrapper">
<ul class="side-nav collapsible" data-collapsible="accordion" id="mobile-demo">
<li class="header-links">
{% include 'default/button_login.html.twig' with {'app': app } %}
</li>
<li>
<a class="collapsible-header" title="Talents">Talents</a>
<div class="collapsible-body">
<ul>
<li><a href="{{ path('ad_search_result') }}" title="Offres d'emploi vidéos">Offres d'emploi</a></li>
<li><a href="{{ path('page_cvVideo') }}" title="Le Cv vidéo">Le CV vidéo</a></li>
<li><a href="{{ path('page_reussirCVvideo') }}" title="Comment faire son CV Vidéo ?">Comment faire
son CV Vidéo ?</a></li>
<li><a href="{{ path('page_accompagnementTalent') }}"
title="Accompagnement talent">Accompagnement</a></li>
</ul>
</div>
</li>
<li>
<a class="collapsible-header" href="{{ path('ad_search_result') }}" title="Offres d'emploi vidéos">Offres
d'emploi</a>
</li>
<li>
<a class="collapsible-header" title="Les entreprises de talents">Entreprises</a>
<div class="collapsible-body">
<ul>
<li><a href="{{ path('company_list') }}" title="Listes entreprises">Listes entreprises</a></li>
<li><a href="{{ path('page_OffreEmploi') }}" title="L'offre d'emploi en vidéo">L'offre d'emploi en
vidéo</a></li>
<li><a href="{{ path('page_reussirOffrevideo') }}" title="Comment faire une offre en vidéo">Comment
faire une offre en vidéo</a></li>
<li><a href="{{ path('page_MarqueEmployeur') }}" title="Vidéo Marque Employeur">Vidéo Marque
Employeur</a></li>
<li><a href="{{ path('page_accompagnementEntreprise') }}" title="Conseils & accompagnement">Conseils
& accompagnement</a></li>
</ul>
</div>
</li>
<li>
<a class="collapsible-header" title="Les territoires">Territoires</a>
<div class="collapsible-body">
<ul>
<li><a href="{{ path('territory_list') }}">Liste des territoires</a></li>
<li><a href="{{ path('page_VideoTerritory') }}">La vidéo territoire</a></li>
<li><a href="{{ path('page_AccompagnementTerritory') }}">Conseils et accompagnement</a></li>
</ul>
</div>
</li>
<li>
<a class="collapsible-header" href="https://blog.talentstube.com" title="Blog Talents Tube">Blog</a>
</li>
</ul>
</div> #}
@@ -56,7 +56,7 @@
</p>
<h5 class="white-text">Contactez-nous !</h5>
<a class="white-text" href="mailto:&#098;&#111;&#110;&#106;&#111;&#117;&#114;&#064;&#116;&#097;&#108;&#101;&#110;&#116;&#115;&#116;&#117;&#098;&#101;&#046;&#099;&#111;&#109;">Par mail</a>
<p class="white-text">02 30 05 06 31</p>
<p class="white-text">07 56 85 27 36</p>
<p class="footer-newsletter">
<a class="btn-large btn-round" href="#" title="Newsletter" data-token="ecea5416671e97e3abfa8195848a9140" onclick="mjOpenPopin(event, this)">
<i class="fa fa-envelope-open-o left" aria-hidden="true"></i>
@@ -42,7 +42,7 @@
<p>Talents Tube est joignable :</p>
<p>- Par internet : via le **formulaire de contact** </p>
<p>- Par téléphone au 02 30 05 06 31, du lundi au vendredi de 9 h à 18 h;</p>
<p>- Par téléphone au 07 56 85 27 36, du lundi au vendredi de 9 h à 18 h;</p>
<p>- Par voie postale :</p>
<p>Talents Tube</p>
<p>3 Rue Louis de Broglie</p>
@@ -0,0 +1,456 @@
{% extends 'baseTalent.html.twig' %}
{% block title %}Recruter
{% if user.appellationLibelle %}
un poste de {{ user.appellationLibelle }}
{% endif %}
| Talents Tube{% endblock %}
{% block description %}Découvrez le CV vidéo de
{{ user.firstname }}. Trouvez le prochain talent de votre équipe sur Talents Tube.{% endblock %}
{% block ogtc %}
{#Twitter Card data pour les données enrichies sur Twitter#}
<meta name="twitter:card" content="summary">
<meta name="twitter:site" content="@TalentsTube">
<meta name="twitter:title" content="Découvrez le CV vidéo de
{{ user.firstname }} sur Talents Tube">
<meta name="twitter:description" content="Découvrez le CV vidéo de
{{ user.firstname }}. Trouvez le prochain talent de votre équipe sur Talents Tube.">
<meta name="twitter:image" content="{{ absolute_url(asset('img/mail/logo-talents-tube.png')) }}">
{#Open Graph data pour le partage sur les réseaux sociaux (ex Facebook..)#}
<meta property="og:title" content="Découvrez le CV vidéo de
{{ user.firstname }} sur Talents Tube" />
<meta property="og:type" content="article" />
<meta property="og:image" content="{{ absolute_url(asset('img/mail/logo-talents-tube.png')) }}" />
<meta property="og:description" content="Découvrez le CV vidéo de
{{ user.firstname }}. Trouvez le prochain talent de votre équipe sur Talents Tube." />
<meta property="og:site_name" content="Talents Tube" />
<meta property="og:url"
content="{{ url(app.request.attributes.get('_route'), app.request.attributes.get('_route_params')) }}" />
{% endblock %}
{% block content %}
{# {% include 'default/flash_message.html.twig' %} #}
<div class="col-md-12 text-center section-spacing">
<div class="col-md-12 p-lg-5 mx-auto my-1">
<h1 class="display-6 font-weight-normal">Découvrez le CV vidéo de {{ user.firstname }} {{ user.lastname }}
{% if user.appellationLibelle %}
qui recherche un poste de {{ user.appellationLibelle }}</h1>
{% endif %}
</div>
</div>
<section class="col-md-12 p-5 fond-clair">
<div class="col-md-12 ">
<div class="col-md-8 text-center">
<div class="col s12 detail-item-video">
{% if talent.presentationVideo %}
<iframe
src="https://player.vimeo.com/video/{{ talent.presentationVideo.cdnUrl|replace({ "/videos/": ""}) }}"
width="100%" height="640" frameborder="0" webkitallowfullscreen="webkitallowfullscreen"
mozallowfullscreen="mozallowfullscreen" allowfullscreen="allowfullscreen"></iframe>
{% endif %}
</div>
</div>
<div class="col-md-4 text-center">
<div class="profil center-align color-t">
{% set company = user.company %}
{# Photo de profil du candidat : À garder pour V2
<div class="profil-picture">
{% if user.socialPicture is not null and user.photo is null %}
<img class="circle responsive-img" src="{{ user.socialPicture }}" alt="{{ user.firstname }} {{ user.lastname|first|upper }}"/>
{% elseif user.photo %}
<img class="circle responsive-img" src="{{ user.webPath | imagine_filter('profile_square') }}" alt="{{ user.firstname }} {{ user.lastname }}"/>
{% else %}
<div class="circle-letters font-2">{{ user.firstname|first|upper }}{{ user.lastname|first|upper }}</div>
{% endif %}
</div> #}
<h2 class="profil-name">
{{ user.firstname }}
{{ user.lastname }}
</h2>
{# À modifier par Laurent : Nouveau format d'adresse Géoloc Google Maps #}
{% if user.geoloc is defined %}
<p class="lead font-weight-normal">{{ user.geoloc[0].locality }}-
{{ user.geoloc[0].country }}</p>
{% elseif company.addresses.billing is defined %}
<p class="lead font-weight-normal">{{ company.addresses.billing.city }}
-
{{ company.addresses.billing.country|country }}</p>
{% endif %}
</div>
<div class="row">
<div class="col">
{% if talent.extra.linkedin or talent.extra.linkedin !='null' %}
<a target="_blank" href="{{ talent.extra.linkedin }}" class="btn">Linkedin</a>
{% endif %}
{% if talent.extra.twitter or talent.extra.twitter !='null' %}
<a target="_blank" href="{{ talent.extra.twitter }}" class="btn">Twitter</a>
{% endif %}
{% if talent.website or talent.extra.website !='null' or talent.extra.website !='NULL'%}
<a target="_blank" href="{{ talent.website }}" class="btn">Site internet</a>
{% endif %}
</div>
</div>
<div class="row p-4">
<div class="col-md p-2">
{# Bouton de téléchargement de CV PDF
Je pense avoir réussi, mais je n'arrive pas vérifier. Je n'ai pas de compte candidat avec un CV PDF#}
{# Code à remplacer avec celui-ci-dessous #}
{# {% if user.company.cv %}
<a class="btn btn-outline-primary m-1" target="_blank" href="/uploads/cv/{{ user.company.cv }}" class="btn">Télécharger le CV</a>
{% endif %} #}
{% if company.cv %}
<a class="btn btn-default m-1" target="_blank" href="/uploads/cv/{{ user.company.cv }}">Télécharger le CV</a>
{% endif %}
{# Modal pour envoyer un email au candidat et Talents Tube #}
<!-- Button trigger modal -->
<button type="button" class="btn btn-primary" data-toggle="modal" data-target="#exampleModal">
Contacter {{ user.firstname }}
</button>
</div>
</div>
{# Afficher la dernière date de connexion = Dernière connexion : mois/année #}
<small class="font-weight-light text-muted">Dernière connexion : {{ user.lastLogin|date('d-m-Y') }}</small>
</div>
</div>
</section>
<section class="col-md-12 p-3 mt-4">
<!-- Card -->
<div class="col-md-6">
<a class="card shadow-none fond-clair text-indigo transition-3d-hover p-5 p-lg-7 mb-3 mb-sm-5 mb-lg-11"
href="https://blog.talentstube.com/cv-video/">
<h3 class="mb-1">Je suis candidat</h3>
<p class="text-dark">Découvrir comment faire un CV vidéo</p>
</a>
</div>
<!-- End Card -->
<!-- Card -->
<div class="col-md-6">
<a class="card shadow-none bg-soft-info text-indigo transition-3d-hover p-5 p-lg-7 mb-3 mb-sm-5 mb-lg-11"
href="/">
<h3 class="mb-1">Je suis recruteur</h3>
<p class=" text-dark">Découvrir la solution de recrutement Talents Tube</p>
</a>
</div>
<!-- End Card -->
</section>
<footer class="col-md-12 p-3 mt-4">
<div class="container">
<div class="col-12 col-md-3">
<a class="py-2" href="/">
<img alt="talents-tube"
src="https://blog.talentstube.com/wp-content/uploads/2021/05/logo-talentstube-bleu-1.svg">
</a>
<div><small class="d-block mt-3 text-muted">&copy; 2017-2021</small></div>
</div>
<div class="col-12 col-md-3">
<h5>Plateforme</h5>
<ul class="list-unstyled text-small">
<li><a class="text-muted" href="/">Espace recruteurs</a></li>
<li><a class="text-muted" href="https://www.talentstube.com/">Jobs</a></li>
<li><a class="text-muted" href="http://blog.talentstube.com/">Blog</a></li>
</ul>
</div>
<div class="col-12 col-md-3">
<h5>Informations</h5>
<ul class="list-unstyled text-small">
<li><a class="text-muted" href="/mentions-legales">Mentions légales</a>
</li>
<li><a class="text-muted" href="/cgu">CGU</a></li>
<li><a class="text-muted" href="/politique-confidentialite">Politique
de confidentialité</a></li>
<li><a class="text-muted" href="https://blog.talentstube.com/contact">Contact</a></li>
</ul>
</div>
<div class="col-12 col-md-3">
<h5>Contact</h5>
<ul class="list-unstyled text-small">
<li>
<p class="text-muted">3, rue Louis de Broglie</p>
</li>
<li>
<p class="text-muted">56 000 Vannes</p>
</li>
<li><a class="text-muted" href="tel:+33756852736">07 56 85 27 36</a></li>
</ul>
</div>
</div>
</footer>
{# <div class="fluid-container bg-grey-3" id="talent-show">
<div class="container contentWrapper contentPage">
<div class="row">
<div class="col s12 m4 l3" id="sidebar">
<div class="profil center-align">
{% set company = user.company %}
<div class="profil-picture">
{% if user.socialPicture is not null and user.photo is null %}
<img class="circle responsive-img" src="{{ user.socialPicture }}"
alt="{{ user.firstname }} {{ user.lastname|first|upper }}" />
{% elseif user.photo %}
<img class="circle responsive-img" src="{{ user.webPath | imagine_filter('profile_square') }}"
alt="{{ user.firstname }} {{ user.lastname }}" />
{% else %}
<div class="circle-letters font-2">
{{ user.firstname|first|upper }}{{ user.lastname|first|upper }}</div>
{% endif %}
</div>
<p class="profil-name">
<b>{{ user.firstname }}
{{ user.lastname|upper }}</b>
</p>
{% if company.addresses.billing is defined %}
<p class="profil-city">{{ company.addresses.billing.city }}
-
{{ company.addresses.billing.country|country }}</p>
{% endif %}
</div>
<div class="col s12 center-align">
<div class="divider"></div>
<br />
{% if is_granted("ROLE_COMPANY") %}
<a class="btn btn-default contact-talent" href="#modal1">Contacter le talent</a>
{% endif %}
</div>
</div>
<div class="col s12 m8 l9">
<div class="row bg-bordered">
<div class="col s12 detail-item-video">
{% if talent.presentationVideo %}
<div class="video-responsive">
<iframe
src="https://player.vimeo.com/video/{{ talent.presentationVideo.cdnUrl|replace({ "/videos/": ""}) }}"
width="100%" height="640" frameborder="0" webkitallowfullscreen="webkitallowfullscreen"
mozallowfullscreen="mozallowfullscreen" allowfullscreen="allowfullscreen"></iframe>
</div>
{% endif %}
</div>
</div>
<div class="row bg-bordered talent-profile">
<div class="col s8">
<h3 class="no-margin-top">{{ user.company.extra.titleTalent }}</h3>
<span>{{ user.company.extra.situationTalent|trans }}</span>
</div>
<div class="col s4 talent-border-left">
<h3 class="no-margin-top talent-profile-title">DÉCOUVRIR SON PROFIL</h3>
<div class="profil-links">
{% if talent.extra.linkedin %}
<a target="_blank" href="{{ talent.extra.linkedin }}">
<i class="fa fa-linkedin fa-inverse"></i>
</a>
{% endif %}
{% if talent.extra.twitter %}
<a target="_blank" href="{{ talent.extra.twitter }}">
<i class="fa fa-twitter fa-inverse"></i>
</a>
{% endif %}
{% if talent.website %}
<a target="_blank" href="{{ talent.website }}">
<i class="fa fa-globe-africa fa-inverse"></i>
</a>
{% endif %}
</div>
</div>
<div class="col s12 talent-border-top">
{% for tag in talent.publicTag if talent.publicTag[0] is not empty %}
<div class="chip {% if loop.index > 5 %}chip-invisible{% endif %}">{{ tag }}</div>
{% endfor %}
{% if talent.publicTag|length > 5 %}
<div class="chip chip-more">+ {{ talent.publicTag|length - 5 }}</div>
{% endif %}
</div>
</div>
{% if user.company.extra.descriptionTalent %}
<div class="row bg-bordered">
<div class="col s12">
<h3 class="blue-text no-margin-top">{{ user.firstname }} {% trans %}en quelques
mots{% endtrans %}</h3>
</div>
<div class="col s12">
<p>
{{ user.company.extra.descriptionTalent|raw|nl2br }}
</p>
</div>
</div>
{% endif %}
{% if user.career %}
<div class="row bg-bordered">
<div class="col s12">
<h3 class="blue-text no-margin-top">Expériences</h3>
</div>
<div class="col s12">
<div class="col s12" id="career_container">
{% include 'talent/profile_career.html.twig' with {'career': user.career } %}
</div>
</div>
</div>
{% endif %}
<div class="row bg-bordered">
<div class="col s12 header-recommendations">
<h3 class="blue-text no-margin-top">{% trans %}label.recommendations{% endtrans %}</h3>
{% if showRecommendation %}
<a title="Recommander {{ user.firstname }} {{ user.lastname }}" href="{{urlRecommendation}}"
id="recommendation" class=" btn btn-large btn-default" type="submit">
{% trans %}label.button.recommendation{% endtrans %}
{{ user.firstname }}
</a>
{% endif %}
</div>
{% if recommendations is not null %}
<div class="recommendations-list">
{% for recommendation in recommendations if recommendation.isVisible != false %}
<div class="col s6 recommendation-block">
<div class="video-responsive">
<iframe
src="https://player.vimeo.com/video/{{ recommendation.video.cdnUrl|replace({ "/videos/": ""}) }}"
width="100%" height="640" frameborder="0"
webkitallowfullscreen="webkitallowfullscreen"
mozallowfullscreen="mozallowfullscreen" allowfullscreen="allowfullscreen"></iframe>
</div>
<div class="recommendation-user-infos">
<div class="profil-picture">
{% if recommendation.sender.socialPicture is not null and recommendation.sender.photo is null %}
<img class="circle responsive-img" src="{{ recommendation.sender.socialPicture }}"
alt="{{ recommendation.sender.firstname }} {{ recommendation.sender.lastname|first|upper }}" />
{% elseif user.photo %}
<img class="circle responsive-img"
src="{{ recommendation.sender.webPath | imagine_filter('profile_square') }}"
alt="{{ recommendation.sender.firstname }} {{ recommendation.sender.lastname }}" />
{% else %}
<div class="circle-letters font-2">
{{ recommendation.sender.firstname|first|upper }}{{ recommendation.sender.lastname|first|upper }}
</div>
{% endif %}
</div>
<div>
<span class="recommendation-user-name">{{ recommendation.sender.firstname }}
{{ recommendation.sender.lastname }}</span>
<br />
<span
class="recommendation-date">{{ recommendation.ctime|localizeddate('medium', 'none', 'fr_FR') }},
{{ recommendation.relationType|replace({'choice': 'front'})|trans({'%{name}' : user.firstname,'%{name2}' : recommendation.sender.firstname})}}</span>
</div>
</div>
</div>
{% endfor %}
</div>
{% endif %}
</div>
{% if user.formation %}
<div class="row bg-bordered">
<div class="col s12">
<h3 class="blue-text no-margin-top">Formations & Certifications </h3>
</div>
<div class="col s12">
<div class="col s12" id="formation_container">
{% include 'talent/profile_formation.html.twig' with {'formation': user.formation } %}
</div>
</div>
</div>
{% endif %}
{% if user.language %}
<div class="row bg-bordered">
<div class="col s12">
<h3 class="blue-text no-margin-top">Langues </h3>
</div>
<div class="col s12">
<div class="col s12" id="formation_container">
{% include 'talent/profile_language.html.twig' with {'language': user.language } %}
</div>
</div>
</div>
{% endif %}
</div>
</div>
</div>
</div> #}
{# {% set popup_recommendation = app.session.flashbag.get('popup_recommendation') %}
{% if popup_recommendation is not empty %}
{% if popup_recommendation == true %}
<div id="modal-recommendation" class="modal">
<div class="modal-content">
<div class="col-content center-align">
<span class="color-blue1">Votre recommandation a bien été envoyée à <br />{{ user.firstname }}
{{ user.lastname }}</span>
<hr />
<a class="btn btn-default modal-action modal-close text-center">Fermer</a>
</div>
</div>
</div>
{% endif %}
{% endif %} #}
{# {% if is_granted("ROLE_COMPANY") %}
<div id="modal1" class="modal">
<div class="col s12 m12 l12">
<div class="bg-bordered inside-m">
<h4 class="no-margin-top">
Contacter le talent
</h4>
<p>
Expéditeur :
{{ app.user.firstname }}
{{ app.user.lastname }}
</p>
{{ form_start(form) }}
{{ form_rest(form) }}
<button type="submit" class="btn btn-default">Envoyer</button>
{{ form_end(form) }}
</div>
</div>
</div>
{% endif %} #}
{% endblock %}
{% block modalCallToAction %}
{{ parent() }}
{% endblock %}
{% block stylesheets %}
<script type="text/javascript" src="//s7.addthis.com/js/300/addthis_widget.js#pubid=ra-5a095d2dd3cf90df"></script>
{% endblock %}
{% block javascripts %}
{{ parent() }}
{#
<script type="text/javascript">
{
%
if mustLogin == true %
}
$('#recommendation').on('click', function (event) {
event.preventDefault();
$('#modal_login').modal('open');
}); {
%
endif %
}
</script>
<script>
$(document).ready(function () {
$.get("{{ path('talent_ajaxRecStat',{'id': talent.id }) }}", function (data) {});
if ($('#modal-recommendation').length > 0) {
$('#modal-recommendation').modal({
dismissible: false,
ready: function (modal, trigger) {}
});
$('#modal-recommendation').modal('open');
}
$(".chip-more").on('click', function () {
$(this).fadeOut();
$(".chip-invisible").css('display', 'inline-block');
});
});
</script> #}
{% endblock %}
+7 -1
View File
@@ -80,7 +80,7 @@ twig:
globals:
push_public_key: "%push_params.public_key%"
fairlane_cookie_consent: '@fairlane_cookie_consent.twig'
version: '2.9.2'
version: '2.11.2'
@@ -132,6 +132,12 @@ request_lab_vimeo:
client_secret: "q8zbdPscn+GD1hd9aXQ5RX9pKJbj60vzLPjCOGMqjbKqSW3p71FboX6U06ufi799317kQlRLmPQrV78gG6bY0uoy2QPRLntNUp0PsePWjq3cfREAX+PS9KFji2Qq23ma"
access_token: "8159fe43dfc819d5744033de2adbbc64"
# Vimeo Preprod
# request_lab_vimeo:
# client_id: "c84050827c12ae80080f48a5970bb089bd7f672e"
# client_secret: "JJxwoBXo/wsP59LjsRQwk9Lu69QL6pmFujoOU86nST+P9aXjcEak6t6BCzxubzLrYDNZ7IcKWCdLvSQHlIsxVOvoVmqvPsznmFmo520kCnnslakZUZoxxQLUwzu3qUGp"
# access_token: "db8ca407e8ddb66358a380327664f589"
# Video
dubture_f_fmpeg:
ffmpeg_binary: /usr/bin/ffmpeg
@@ -131,7 +131,7 @@ class UserController extends Controller
// }
//$em->flush();
return $this->redirectToRoute('admin_config_others_user');
return $this->redirectToRoute('admin_config_talent');
}
public function deleteRelation($user)
@@ -400,9 +400,9 @@ class AnswerController extends Controller
$mj = new Client($this->getParameter('mailjet_public'), $this->getParameter('mailjet_private'));
// $link = $this->generateUrl('company_answer_show', array('id' => $answer->getId()), UrlGeneratorInterface::ABSOLUTE_URL);
$contactMail = $answer->getUser()->getEmail();
if ($this->container->get( 'kernel' )->getEnvironment() == "dev") {
$contactMail = "dev@talentstube.com";
}
// if ($this->container->get( 'kernel' )->getEnvironment() == "dev") {
// $contactMail = "dev@talentstube.com";
// }
// if($message->getVideo() == null){
$body = [
'FromEmail' => "noreply@talentstube.io",
@@ -177,7 +177,7 @@ class AnswerController extends FOSRestController
$link = $this->generateUrl('company_answer_show', array('id' => $answer->getId()), UrlGeneratorInterface::ABSOLUTE_URL);
$contactMail = $user->getEmail();
if ($this->container->get( 'kernel' )->getEnvironment() == "dev") {
$contactMail = "dev@talentstube.com";
//$contactMail = "dev@talentstube.com";
}else{
// $complSubject="";
@@ -320,7 +320,7 @@ class AnswerController extends FOSRestController
$usr->getUsername();
$file = $request->files->get('upload');
$status = array('status' => "success", "fileUploaded" => false);
$status = array('statusPres' => "failure", "fileUploaded" => false);
//dump($file);
// If a file was uploaded
if (!is_null($file)) {
@@ -332,7 +332,7 @@ class AnswerController extends FOSRestController
// $filename = uniqid().".".$file->getClientOriginalExtension();
// $path = "/path/where/we/want-to-save-the-file";
// $file->move($path,$filename); // move the file to a path
$status = array('status' => "success", "fileUploaded" => true, "message" => $message);
$status = array('statusPres' => "success", "fileUploaded" => true, "message" => $message);
}
return new JsonResponse($status);
@@ -368,7 +368,7 @@ class AnswerController extends FOSRestController
$company = $usr->getCompany();
$file = $request->files->get('upload');
$status = array('status' => "success", "companyUpdated" => false);
$status = array('status' => "success",'statusCv' => "failure", "companyUpdated" => false, "loadingCv" => false);
//dump($file);
// If a file was uploaded
//TODO Controle sur l'extension du fichier (pdf, word)
@@ -382,7 +382,7 @@ class AnswerController extends FOSRestController
// $filename = uniqid().".".$file->getClientOriginalExtension();
// $path = "/path/where/we/want-to-save-the-file";
// $file->move($path,$filename); // move the file to a path
$status = array('status' => "success", "companyUpdated" => true, "message" => $message);
$status = array('status' => "success", 'statusCv' => "success", "companyUpdated" => true, "message" => $message, "loadingCv" => true);
}
return new JsonResponse($status);
@@ -443,7 +443,7 @@ class AnswerController extends FOSRestController
// $link = $this->generateUrl('company_answer_show', array('id' => $existAnswer->getId()), UrlGeneratorInterface::ABSOLUTE_URL);
$contactMail = $user->getEmail();
if ($this->container->get( 'kernel' )->getEnvironment() == "dev") {
$contactMail = "dev@talentstube.com";
//$contactMail = "dev@talentstube.com";
}
$body = [
'FromEmail' => "noreply@talentstube.io",
@@ -383,6 +383,104 @@ class CompanyController extends FOSRestController
return new JsonResponse(array('retour' => "true"));
}
/**
* @Rest\Get(path="/api/miseEnRelationTalentEntreprise", name="miseEnRelationTalentEntreprise")
* @Rest\View
*/
public function miseEnRelationTalentEntrepriseAction(Request $request)
{
//APPEL de l'api Pole emploi pour recuperer Token
$nom=$request->query->get('nom');
$prenom=$request->query->get('prenom');
$email=$request->query->get('email');
$entreprise=$request->query->get('entreprise');
$telephone=$request->query->get('telephone');
$message=$request->query->get('message');
$userId=$request->query->get('userId');
$user = $this->getDoctrine()->getRepository('AppBundle:User')->findOneBy(array('id' => $userId));
if($user){
if($user->getAppellationLibelle()){
$appellation = $user->getAppellationLibelle();
}else{
$appellation = "Aucun" ;
}
if($user->getFirstName()){
$firstname = $user->getFirstName();
}else{
$firstname = "ND" ;
}
if($user->getLastname()){
$lastname = $user->getLastname();
}else{
$lastname = "ND" ;
}
}
$page=$request->query->get('page');
if(isset($_SERVER['HTTP_REFERER'])) {
$previous = $_SERVER['HTTP_REFERER']." / ".$_SERVER['REQUEST_URI'];
}
$mj = new Client($this->getParameter('mailjet_public'), $this->getParameter('mailjet_private'));
// $link = $this->generateUrl('company_answer_show', array('id' => $existAnswer->getId()), UrlGeneratorInterface::ABSOLUTE_URL);
$contactMail = "contact@talentstube.com";
if ($this->container->get( 'kernel' )->getEnvironment() == "dev") {
$contactMail = "contact@talentstube.com";
}
$body = [
'FromEmail' => "noreply@talentstube.io",
'FromName' => "Talents Tube",
'Subject' => "Un recruteur a contacté un candidat ",
'MJ-TemplateID' =>2934089 ,
'MJ-TemplateLanguage' => true,
'Recipients' => [
[
'Email' => $contactMail,
'Vars' => [
'prenomRecruteur' => $prenom,
'nomRecruteur' => $nom,
'entrepriseRecruteur' => $entreprise,
'emailRecruteur' => $email,
'telephoneRecruteur' => $telephone,
'prenomCandidat' => $firstname,
'nomCandidat' => $lastname,
'posteCandidat' => $appellation,
]
]
]
];
$response = $mj->post(Resources::$Email, ['body' => $body]);
$body2 = [
'FromEmail' => "noreply@talentstube.io",
'FromName' => "Talents Tube",
'Subject' => "Vous avez reçu un nouveau message",
'MJ-TemplateID' =>2932086 ,
'MJ-TemplateLanguage' => true,
'Recipients' => [
[
'Email' => $user->getEmail(),
'Vars' => [
'prenomRecruteur' => $prenom,
'nomRecruteur' => $nom,
'entrepriseRecruteur' => $entreprise,
'emailRecruteur' => $email,
'messageRecruteur' => $message,
'telephoneRecruteur' => $telephone,
'prenomCandidat' => $user->getFirstName(),
'nomCandidat' => $user->getLastname(),
]
]
]
];
$mj2 = new Client($this->getParameter('mailjet_public'), $this->getParameter('mailjet_private'));
$response = $mj2->post(Resources::$Email, ['body' => $body2]);
return new JsonResponse(array('retour' => "true"));
}
/**
* @Rest\Get(path="/api/validerOffreMail", name="api_validerOffreMail")
* @Rest\View
@@ -399,10 +497,10 @@ class CompanyController extends FOSRestController
$mj = new Client($this->getParameter('mailjet_public'), $this->getParameter('mailjet_private'));
// $link = $this->generateUrl('company_answer_show', array('id' => $existAnswer->getId()), UrlGeneratorInterface::ABSOLUTE_URL);
$contactMail = "contact@talentstube.com";
if ($this->container->get( 'kernel' )->getEnvironment() == "dev") {
$contactMail = "contact@talentstube.com";
}
$contactMail = $user->getEmail();
// if ($this->container->get( 'kernel' )->getEnvironment() == "dev") {
// $contactMail = "contact@talentstube.com";
// }
$body = [
'FromEmail' => "noreply@talentstube.io",
'FromName' => "Talents Tube",
@@ -397,6 +397,85 @@ class TalentController extends Controller
return $res;
}
/**
* @Route("/talent2/{alias}/", name="talent_show2")
* @ParamConverter("company", options={"mapping": {"alias": "alias"}})
*/
public function talent2ShowAction(Request $request, Company $talent)
{
setlocale(LC_ALL, 'fr_FR.utf-8');
$user = $talent->getUsers();
$subject = "Demande de contact";
$form = $this->createForm(ContactTalentType::class, array("subject" => false));
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$userCompany = $this->getUser();
$message = $form['message']->getData();
$htmlView = $this->renderView('email/contact_default.html.twig', array(
'type' => 'html',
'message' => $message,
'user' => $user{0},
));
$plainView = $this->renderView('email/contact_default.html.twig', array(
'type' => 'plain',
'message' => $message,
'user' => $user{0},
));
$email = \Swift_Message::newInstance()
->setSubject('Une entreprise vous a contacter sur Talents Tube')
->setFrom($userCompany->getEmail())
->setTo($user{0}->getEmail())
->setBody($htmlView, 'text/html')
->addPart($plainView, 'text/plain');
$this->get('mailer')->send($email);
$this->addFlash(
'notice',
$this->get('translator')->trans('talent.mail.contact.send')
);
$em = $this->getDoctrine()->getManager();
$messageObj = new message($subject, $message, $userCompany, $user{0}, 'CONTACT_TALENT');
$em->persist($messageObj);
$em->flush();
$em->close();
return $this->redirectToRoute('talent_show', ['alias' => $talent->getAlias()]);
}
$mustLogin = true;
if ($this->getUser() && $this->getUser()->hasRole('ROLE_TALENT')) {
$mustLogin = false;
if ($this->getUser() && ($this->getUser()->getCompany()->getId() == $talent->getId())) {
$showRecommendation = false;
}
}
$showRecommendation = true;
if ($this->getUser() && !$this->getUser()->hasRole('ROLE_TALENT')) {
$showRecommendation = false;
}
$em = $this->getDoctrine()->getManager();
$recommendations = $em->getRepository('AppBundle:Recommendation')->findBy(
array('isEnabled'=>true, 'status'=> 'SENDED', 'user'=> $talent->getMainUser()),
array('uTime' => 'DESC')
);
/*Definition des urls de destination pour oauth login et register pour la recommandation vidéo*/
$destination = $this->generateUrl('recommandation_create', array('alias' => $talent->getAlias()));
$this->get('twig')->addGlobal('destination_login', $destination);
$session = $request->getSession();
$session->set('registration_destination', $destination);
$res = $this->render('talent/talent_show2.html.twig', [
'talent' => $talent,
'user' => $user{0},
'form' => $form->createView(),
'mustLogin' => $mustLogin,
'showRecommendation' => $showRecommendation,
'urlRecommendation' => $destination,
'recommendations' => $recommendations
]);
$res->headers->setCookie(new Cookie('redirect_register', $destination));
return $res;
}
/***********************
* This route must stay at the end
***********************/
@@ -229,8 +229,7 @@ class Ad
* @var array
*
* @ORM\Column(name="extra", type="json_document", nullable=true, options={"jsonb":true})
*
* @Groups({"ad_detail", "ad_list", "answer_detail", "company_detail"})
* @Groups({"ad_detail", "ad_list", "answer_detail", "company_detail","answer_list"})
*
*/
private $extra;
@@ -240,7 +239,7 @@ class Ad
*
* @ORM\Column(name="location", type="json_document", nullable=true, options={"jsonb":true})
*
* @Groups({"ad_detail", "ad_list","answer_detail", "company_detail"})
* @Groups({"ad_detail", "ad_list","answer_detail", "company_detail","answer_list"})
*/
private $location;
@@ -109,7 +109,7 @@ class Answer
* @var string
*
* @ORM\Column(name="status_reponse", type="string", length=255, nullable=true, options={"default":"A_TRAITER"})
*
* @Groups({"answer_detail","answer_list"})
*/
private $statusReponse ='A_TRAITER';
@@ -11,8 +11,7 @@ trait ExtraJsonTrait
* @var array
*
* @ORM\Column(name="extra", type="json_document", nullable=true)
*
* @Groups({"ad_detail" , "company_detail", "company_list"})
* @Groups({"answer_detail","answer_list", "ad_detail" , "company_detail", "company_list"})
*/
private $extra;
@@ -0,0 +1,31 @@
<svg xmlns="http://www.w3.org/2000/svg" width="176.844" height="36.819" viewBox="0 0 176.844 36.819">
<g id="Logo" transform="translate(-63.141 -208.083)">
<g id="Groupe_7907" data-name="Groupe 7907" transform="translate(63.141 216.195)" style="isolation: isolate">
<g id="Groupe_7904" data-name="Groupe 7904" transform="translate(0 1.274)" style="isolation: isolate">
<path id="Tracé_369" data-name="Tracé 369" d="M64.764,258.549v-6.266h-.451a1.172,1.172,0,0,1,0-2.344h.451V247.91a1.363,1.363,0,0,1,2.727,0v2.028h2.141a1.173,1.173,0,1,1,0,2.344H67.492v5.837a1.3,1.3,0,0,0,1.465,1.488,6.447,6.447,0,0,0,.676-.067,1.15,1.15,0,0,1,1.15,1.128,1.173,1.173,0,0,1-.721,1.059,5.424,5.424,0,0,1-1.875.315C66.185,262.042,64.764,261.164,64.764,258.549Z" transform="translate(-63.141 -246.547)" fill="#fff"/>
</g>
<g id="Groupe_7905" data-name="Groupe 7905" transform="translate(9.996 4.49)" style="isolation: isolate">
<path id="Tracé_370" data-name="Tracé 370" d="M104.07,268.386v-.045c0-2.569,2.006-3.835,4.913-3.835a9.938,9.938,0,0,1,3.2.5v-.293c0-1.69-1.037-2.591-2.953-2.591a7.072,7.072,0,0,0-2.637.473,1.53,1.53,0,0,1-.426.068,1.135,1.135,0,0,1-1.15-1.127,1.193,1.193,0,0,1,.744-1.082,10.2,10.2,0,0,1,3.835-.7,5.333,5.333,0,0,1,3.945,1.329,4.942,4.942,0,0,1,1.284,3.674v5.858a1.3,1.3,0,0,1-1.33,1.307,1.232,1.232,0,0,1-1.329-1.15v-.451a4.837,4.837,0,0,1-3.876,1.735C106.055,272.061,104.07,270.775,104.07,268.386Zm8.159-.856v-.811a7.563,7.563,0,0,0-2.7-.473c-1.758,0-2.8.744-2.8,1.983v.045c0,1.15,1.014,1.8,2.321,1.8C110.854,270.076,112.229,269.04,112.229,267.53Z" transform="translate(-104.07 -259.736)" fill="#fff"/>
</g>
<g id="Groupe_7906" data-name="Groupe 7906" transform="translate(24.297 0)" style="isolation: isolate">
<path id="Tracé_371" data-name="Tracé 371" d="M162.626,242.651a1.342,1.342,0,0,1,1.352-1.352,1.363,1.363,0,0,1,1.375,1.352v13.975a1.363,1.363,0,1,1-2.727,0Z" transform="translate(-162.626 -241.299)" fill="#fff"/>
<path id="Tracé_372" data-name="Tracé 372" d="M191.8,271.805a5.938,5.938,0,0,1-6.108-6.175v-.045a5.906,5.906,0,0,1,5.815-6.2,5.629,5.629,0,0,1,5.657,5.86,1.278,1.278,0,0,1-1.284,1.307h-7.457a3.323,3.323,0,0,0,3.426,3.02,4.277,4.277,0,0,0,2.817-1.037,1.016,1.016,0,0,1,.7-.248,1.073,1.073,0,0,1,1.081,1.108,1.193,1.193,0,0,1-.36.834A6.11,6.11,0,0,1,191.8,271.805Zm2.7-7.055c-.181-1.758-1.217-3.132-3.02-3.132-1.668,0-2.84,1.284-3.088,3.132Z" transform="translate(-180.061 -254.969)" fill="#fff"/>
<path id="Tracé_373" data-name="Tracé 373" d="M244.11,260.875a1.347,1.347,0,0,1,1.352-1.375,1.364,1.364,0,0,1,1.375,1.375v.586a4.314,4.314,0,0,1,3.719-2.074c2.682,0,4.237,1.8,4.237,4.553V270.3a1.328,1.328,0,0,1-1.352,1.352,1.347,1.347,0,0,1-1.375-1.352v-5.522c0-1.848-.924-2.908-2.547-2.908a2.649,2.649,0,0,0-2.682,2.953V270.3a1.363,1.363,0,0,1-2.727,0Z" transform="translate(-224.21 -254.969)" fill="#fff"/>
<path id="Tracé_374" data-name="Tracé 374" d="M298.61,258.549v-6.266h-.451a1.172,1.172,0,0,1,0-2.344h.451V247.91a1.363,1.363,0,0,1,2.727,0v2.028h2.141a1.173,1.173,0,1,1,0,2.344h-2.141v5.837a1.3,1.3,0,0,0,1.465,1.488,6.447,6.447,0,0,0,.677-.067,1.15,1.15,0,0,1,1.15,1.128,1.173,1.173,0,0,1-.721,1.059,5.422,5.422,0,0,1-1.875.315C300.03,262.042,298.61,261.164,298.61,258.549Z" transform="translate(-264.174 -245.273)" fill="#fff"/>
<path id="Tracé_375" data-name="Tracé 375" d="M335.8,270.48a1.045,1.045,0,0,1-.518-.947,1.091,1.091,0,0,1,1.108-1.108,1.192,1.192,0,0,1,.586.158,6.282,6.282,0,0,0,3.426,1.15c1.172,0,1.848-.5,1.848-1.285V268.4c0-.924-1.262-1.239-2.66-1.668-1.758-.5-3.719-1.217-3.719-3.494V263.2c0-2.254,1.875-3.628,4.237-3.628a8.181,8.181,0,0,1,3.741.969,1.156,1.156,0,0,1,.654,1.037,1.1,1.1,0,0,1-1.127,1.108,1.071,1.071,0,0,1-.541-.135,6.489,6.489,0,0,0-2.8-.811c-1.059,0-1.668.5-1.668,1.172v.045c0,.879,1.285,1.24,2.682,1.691,1.736.54,3.7,1.329,3.7,3.471v.045c0,2.5-1.938,3.741-4.418,3.741A8.133,8.133,0,0,1,335.8,270.48Z" transform="translate(-293.118 -255.109)" fill="#fff"/>
<path id="Tracé_376" data-name="Tracé 376" d="M410.454,258.549v-6.266H410a1.172,1.172,0,0,1,0-2.344h.451V247.91a1.363,1.363,0,0,1,2.727,0v2.028h2.141a1.173,1.173,0,1,1,0,2.344h-2.141v5.837a1.3,1.3,0,0,0,1.465,1.488,6.463,6.463,0,0,0,.677-.067,1.15,1.15,0,0,1,1.15,1.128,1.173,1.173,0,0,1-.721,1.059,5.422,5.422,0,0,1-1.875.315C411.872,262.042,410.454,261.164,410.454,258.549Z" transform="translate(-348.703 -245.273)" fill="#fff"/>
<path id="Tracé_377" data-name="Tracé 377" d="M461.249,270.644a1.375,1.375,0,1,1-2.75,0v-.612a4.283,4.283,0,0,1-3.719,2.1c-2.682,0-4.237-1.8-4.237-4.575V261.22a1.363,1.363,0,1,1,2.727,0v5.522c0,1.848.925,2.885,2.547,2.885a2.629,2.629,0,0,0,2.682-2.93V261.22a1.363,1.363,0,0,1,1.375-1.375,1.38,1.38,0,0,1,1.374,1.375Z" transform="translate(-380.229 -255.319)" fill="#fff"/>
<path id="Tracé_378" data-name="Tracé 378" d="M508.312,242.651a1.329,1.329,0,0,1,1.353-1.352,1.347,1.347,0,0,1,1.374,1.352v5.294a4.764,4.764,0,0,1,4.057-2.232c2.8,0,5.522,2.209,5.522,6.175v.045c0,3.944-2.7,6.175-5.522,6.175a4.857,4.857,0,0,1-4.057-2.1v.608a1.363,1.363,0,1,1-2.727,0Zm9.534,9.288v-.045a3.523,3.523,0,0,0-3.4-3.809,3.588,3.588,0,0,0-3.471,3.809v.045a3.588,3.588,0,0,0,3.471,3.809,3.489,3.489,0,0,0,3.4-3.812Z" transform="translate(-423.888 -241.299)" fill="#fff"/>
<path id="Tracé_379" data-name="Tracé 379" d="M573.663,271.805a5.938,5.938,0,0,1-6.107-6.175v-.045a5.906,5.906,0,0,1,5.815-6.2,5.629,5.629,0,0,1,5.657,5.86,1.278,1.278,0,0,1-1.285,1.307h-7.46a3.323,3.323,0,0,0,3.426,3.02,4.278,4.278,0,0,0,2.817-1.037,1.015,1.015,0,0,1,.7-.248,1.073,1.073,0,0,1,1.082,1.108,1.193,1.193,0,0,1-.36.834,6.111,6.111,0,0,1-4.282,1.574Zm2.7-7.055c-.181-1.758-1.217-3.132-3.02-3.132-1.668,0-2.84,1.284-3.087,3.132Z" transform="translate(-468.664 -254.969)" fill="#fff"/>
</g>
</g>
<g id="Groupe_7908" data-name="Groupe 7908" transform="translate(208.921 208.083)">
<circle id="Ellipse_2" data-name="Ellipse 2" cx="4.548" cy="4.548" r="4.548" transform="translate(12.87 19.982)" fill="#fff"/>
<circle id="Ellipse_3" data-name="Ellipse 3" cx="4.548" cy="4.548" r="4.548" transform="translate(12.87 7.838)" fill="#fff"/>
<circle id="Ellipse_4" data-name="Ellipse 4" cx="5.467" cy="5.467" r="5.467" transform="translate(0 12.967)" fill="#fff"/>
<circle id="Ellipse_5" data-name="Ellipse 5" cx="5.467" cy="5.467" r="5.467" transform="translate(0 0)" fill="#fff"/>
<circle id="Ellipse_6" data-name="Ellipse 6" cx="5.467" cy="5.467" r="5.467" transform="translate(0 25.885)" fill="#fff"/>
<circle id="Ellipse_7" data-name="Ellipse 7" cx="3.774" cy="3.774" r="3.774" transform="translate(23.514 14.66)" fill="#fff"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 6.6 KiB

File diff suppressed because one or more lines are too long
@@ -0,0 +1,469 @@
.container {
max-width: 960px;
}
.section-spacing {
padding: 4.5em 0;
}
.p-2 {
padding: 0.8em;
}
.p-3 {
padding: 1em;
}
.p-4 {
padding: 2em;
}
.m-0 {
margin: 0 !important
}
.mt-0,
.my-0 {
margin-top: 0 !important
}
.mr-0,
.mx-0 {
margin-right: 0 !important
}
.mb-0,
.my-0 {
margin-bottom: 0 !important
}
.ml-0,
.mx-0 {
margin-left: 0 !important
}
.m-1 {
margin: .25rem !important
}
.mt-1,
.my-1 {
margin-top: .25rem !important
}
.mr-1,
.mx-1 {
margin-right: .25rem !important
}
.mb-1,
.my-1 {
margin-bottom: .25rem !important
}
.ml-1,
.mx-1 {
margin-left: .25rem !important
}
.m-2 {
margin: .5rem !important
}
.mt-2,
.my-2 {
margin-top: .5rem !important
}
.mr-2,
.mx-2 {
margin-right: .5rem !important
}
.mb-2,
.my-2 {
margin-bottom: .5rem !important
}
.ml-2,
.mx-2 {
margin-left: .5rem !important
}
.m-3 {
margin: 1rem !important
}
.mt-3,
.my-3 {
margin-top: 1rem !important
}
.mr-3,
.mx-3 {
margin-right: 1rem !important
}
.mb-3,
.my-3 {
margin-bottom: 1rem !important
}
.ml-3,
.mx-3 {
margin-left: 1rem !important
}
.m-4 {
margin: 1.5rem !important
}
.mt-4,
.my-4 {
margin-top: 1.5rem !important
}
.mr-4,
.mx-4 {
margin-right: 1.5rem !important
}
.mb-4,
.my-4 {
margin-bottom: 1.5rem !important
}
.ml-4,
.mx-4 {
margin-left: 1.5rem !important
}
.m-5 {
margin: 3rem !important
}
.mt-5,
.my-5 {
margin-top: 3rem !important
}
.mr-5,
.mx-5 {
margin-right: 3rem !important
}
.mb-5,
.my-5 {
margin-bottom: 3rem !important
}
.ml-5,
.mx-5 {
margin-left: 3rem !important
}
.p-0 {
padding: 0 !important
}
.pt-0,
.py-0 {
padding-top: 0 !important
}
.pr-0,
.px-0 {
padding-right: 0 !important
}
.pb-0,
.py-0 {
padding-bottom: 0 !important
}
.pl-0,
.px-0 {
padding-left: 0 !important
}
.p-1 {
padding: .25rem !important
}
.pt-1,
.py-1 {
padding-top: .25rem !important
}
.pr-1,
.px-1 {
padding-right: .25rem !important
}
.pb-1,
.py-1 {
padding-bottom: .25rem !important
}
.pl-1,
.px-1 {
padding-left: .25rem !important
}
.p-2 {
padding: .5rem !important
}
.pt-2,
.py-2 {
padding-top: .5rem !important
}
.pr-2,
.px-2 {
padding-right: .5rem !important
}
.pb-2,
.py-2 {
padding-bottom: .5rem !important
}
.pl-2,
.px-2 {
padding-left: .5rem !important
}
.p-3 {
padding: 1rem !important
}
.pt-3,
.py-3 {
padding-top: 1rem !important
}
.pr-3,
.px-3 {
padding-right: 1rem !important
}
.pb-3,
.py-3 {
padding-bottom: 1rem !important
}
.pl-3,
.px-3 {
padding-left: 1rem !important
}
.p-4 {
padding: 1.5rem !important
}
.pt-4,
.py-4 {
padding-top: 1.5rem !important
}
.pr-4,
.px-4 {
padding-right: 1.5rem !important
}
.pb-4,
.py-4 {
padding-bottom: 1.5rem !important
}
.pl-4,
.px-4 {
padding-left: 1.5rem !important
}
.p-5 {
padding: 3rem !important
}
.pt-5,
.py-5 {
padding-top: 3rem !important
}
.pr-5,
.px-5 {
padding-right: 3rem !important
}
.pb-5,
.py-5 {
padding-bottom: 3rem !important
}
.pl-5,
.px-5 {
padding-left: 3rem !important
}
.m-auto {
margin: auto !important
}
/* Header */
.site-header {
background-color: #1689FB;
-webkit-backdrop-filter: saturate(180%) blur(20px);
backdrop-filter: saturate(180%) blur(20px);
}
.site-header a {
color: #fff;
transition: ease-in-out color .15s;
}
.site-header a:hover {
color: #fff;
text-decoration: none;
}
.card {
position: relative;
display: -ms-flexbox;
display: flex;
-ms-flex-direction: column;
flex-direction: column;
min-width: 0;
word-wrap: break-word;
background-color: #fff;
background-clip: border-box;
border: 1px solid rgba(0, 0, 0, .125);
border-radius: .25rem
}
/* Dummy devices (replace them with your own or something else entirely!)
*/
.fond-clair {
background-color: #F3F9FF;
}
.product-device {
position: absolute;
right: 10%;
bottom: -30%;
width: 300px;
height: 540px;
background-color: #333;
border-radius: 21px;
-webkit-transform: rotate(30deg);
transform: rotate(30deg);
}
.product-device::before {
position: absolute;
top: 10%;
right: 10px;
bottom: 10%;
left: 10px;
content: "";
background-color: rgba(255, 255, 255, .1);
border-radius: 5px;
}
.product-device-2 {
top: -25%;
right: auto;
bottom: 0;
left: 5%;
background-color: #e5e5e5;
}
/*
* Extra utilities
*/
.flex-equal>* {
-ms-flex: 1;
flex: 1;
}
@media (min-width: 768px) {
.flex-md-equal>* {
-ms-flex: 1;
flex: 1;
}
}
.overflow-hidden {
overflow: hidden;
}
.logo-footer {
width: 100px;
}
.card-md-columns {
orphans: 1;
widows: 1
}
.card-md-columns .transition-3d-hover {
transition: all .2s ease-in-out
}
.transition-3d-hover:focus,
.transition-3d-hover:hover {
-webkit-transform: translateY(-3px);
transform: translateY(-3px)
}
.bg-soft-primary {
background-color: rgba(55, 125, 255, .1)
}
.bg-soft-secondary {
background-color: rgba(113, 134, 157, .1)
}
.bg-soft-info {
background-color: #25D89A;
}
@media (min-width:768px) {
.card-md-2-count {
-webkit-column-count: 2;
-moz-column-count: 2;
column-count: 2
}
}
.img-fluid {
max-width: 100%;
height: auto
}
.lien {
text-decoration: none;
}
.text-dark {
color: #1E2327 !important
}
a.text-dark:focus,
a.text-dark:hover {
color: #1E2327 !important
}
.text-indigo {
color: #1E2327 !important
}
a.text-indigo:focus,
a.text-indigo:hover {
color: #1E2327 !important
}