Compare commits

...

32 Commits

Author SHA1 Message Date
llaniau 40688feb88 correction suite a modif de pole emploi 2020-10-14 21:47:08 +02:00
llaniau 2275c6aadd Correction bug suite recette du 14_10 2020-10-14 17:36:33 +02:00
llaniau 6e4f718fe0 Cas du doublon d'utilisateur 2020-10-13 17:24:29 +02:00
llaniau b19eb227b5 Mise en place API pole emploi 2020-10-12 18:28:16 +02:00
llaniau f35dcbbeba US 439,
US466 modif terme,
US462 num assistance,
US461 crisp
US 464 copyright
2020-10-07 16:11:41 +02:00
llaniau 6860dee286 Evoi de mail lors de creation multi util 2020-10-06 16:39:27 +02:00
llaniau a93d58e119 Bug push git 2020-10-05 23:58:07 +02:00
llaniau 6babd6976c Amélioration employmentType 2020-10-05 17:55:50 +02:00
llaniau 468f5baed6 Changement stat page accueil recruteur 2020-10-05 15:18:11 +02:00
llaniau 6a1c231fcb Ajout unpublished dans le groupe ad_detail 2020-10-05 14:05:01 +02:00
llaniau 6b25e5b5e7 Correction de fautes d'orthographe 2020-10-01 17:01:44 +02:00
llaniau bb231fbeb3 Ajout d'un commentaire dans Answerrepo 2020-09-29 11:02:19 +02:00
llaniau cae04bc8d7 Modification de libellés 2020-09-29 09:58:40 +02:00
llaniau 4fa83f1c51 Envoi de mail apres candidature 2020-09-24 17:10:16 +02:00
llaniau 15c9e8811d MEP 21 sept 2020-09-21 16:08:35 +02:00
llaniau be62f29fb9 version stabilisé pre prod avant mise en prod 2020-09-21 15:52:14 +02:00
llaniau 439362bda4 Recette avant mise en prod 2020-09-21 13:16:16 +02:00
llaniau 1866008c84 Redirection vers web app lors de message 2020-09-21 11:38:19 +02:00
llaniau 4e8d3b8a9d mediaController 2020-09-21 11:02:39 +02:00
llaniau b21946500a Correction bug offre d'emploi sur la crea 2020-09-21 10:49:10 +02:00
llaniau 8808da8af1 params pre prod 2020-09-21 08:46:15 +02:00
llaniau 6ba0c4744e param prod 2020-09-21 08:38:17 +02:00
llaniau f8a03f317b parameter pre prod erreur 2020-09-21 08:36:25 +02:00
llaniau 8de926b22f Modif param mail et resolution de bugs mineur 2020-09-19 11:46:29 +02:00
llaniau eb70757671 Suppression d'un user (correction d'un bug) 2020-09-17 16:35:50 +02:00
llaniau 0c82a72da5 oubli de mdp 2020-09-16 18:08:01 +02:00
llaniau 719c6ae0ee erreur 404 2020-09-15 17:43:41 +02:00
llaniau ba84cc4859 changement d'adresse mail de ref 2020-09-15 14:11:25 +02:00
llaniau 09716c5b69 page tarifs 2020-09-15 12:45:26 +02:00
llaniau 5d593cf46c Page tarifs plus changement lien contact 2020-09-15 12:42:53 +02:00
llaniau 676317050a Modif adblock maj de ads->jobs 2020-09-15 11:46:38 +02:00
llaniau 3d64f000e0 Ajout d(une video marque employeur 2020-09-14 18:25:21 +02:00
80 changed files with 1475 additions and 293 deletions
@@ -1,6 +1,9 @@
{% extends "base.html.twig" %}
{% extends "basev2.html.twig" %}
{% block menu %}
{% endblock %}
{% block content %}
<main id="content">
<div class="container contentWrapper">
<div class="row">
<div class="col push-s3 s6">
@@ -8,8 +11,10 @@
</div>
</div>
</div>
</div>
{% endblock %}
{% block metarobot %}
<meta name="robots" content="noindex,nofollow">
<meta http-equiv="refresh" content="1;URL=/">
{% endblock %}
@@ -1,6 +1,7 @@
{% trans_default_domain 'FOSUserBundle' %}
<div class="fos_user_user_show">
Votre mot de passe a bien été modifié<br/>
<p>{{ 'profile.show.username'|trans }}: {{ user.username }}</p>
<p>{{ 'profile.show.email'|trans }}: {{ user.email }}</p>
</div>
@@ -1,7 +1,9 @@
{% extends "base.html.twig" %}
{% trans_default_domain 'FOSUserBundle' %}
{% block menu %}
{% endblock %}
{% block content %}
<div class="container contentWrapper">
<div class="row">
@@ -2,6 +2,9 @@
{% block title %}Talents Tube : Le 1er job board 100% vidéo{% endblock %}
{% trans_default_domain 'FOSUserBundle' %}
{% block menu %}
{% endblock %}
{% block content %}
<main id="content">
<div class="container space-2 ">
@@ -1,7 +1,9 @@
{% extends "basetemporaire.html.twig" %}
{% trans_default_domain 'FOSUserBundle' %}
{% block menu %}
{% endblock %}
{% block content %}
<div class="container contentWrapper">
@@ -51,7 +51,7 @@
</div>
<div class="js-form-message mb-3">
<div class="input-field col s12">
<a href="/mentions-legales">Lire les conditions générales d'utilisations</a>
<a href="/cgu">Lire les conditions générales d'utilisations</a>
<br /><br />
</div>
</div>
@@ -22,7 +22,9 @@
content="{{ url(app.request.attributes.get('_route'), app.request.attributes.get('_route_params')) }}" />
{% endblock %}
{% block menu %}
{% endblock %}
{% block content %}
<main id="content">
@@ -1,4 +1,4 @@
{% extends 'base.html.twig' %}
{% extends 'basetemporaire.html.twig' %}
{% block urlCanonical %}
#!
@@ -1,5 +1,6 @@
{% extends 'base.html.twig' %}
{% extends 'basev2.html.twig' %}
{% block content %}
<main id="content">
<div class="row">
<div class="col s12">
<h2 class="center-align m-t-100">Page introuvable</h2>
@@ -9,4 +10,5 @@
</p>
</div>
</div>
</main>
{% endblock %}
@@ -526,7 +526,7 @@
<div style="margin:0 auto;max-width:600px;background:#FFFFFF;"><table class="" cellpadding="0" cellspacing="0" style="width:100%;font-size:0px;background:#FFFFFF;" align="center"><tbody><tr><td style="text-align:center;vertical-align:top;font-size:0;padding:0px;"><!--[if mso]>
<table border="0" cellpadding="0" cellspacing="0"><tr><td style="width:600px;">
<![endif]--><div style="vertical-align:top;display:inline-block;font-size:13px;text-align:left;width:100%;" class="mj-column-per-100" aria-labelledby="mj-column-per-100"><table width="100%"><tbody><tr><td style="font-size:0;padding:20px 35px 20px 35px;" align="left"><div class="mj-content" style="cursor:auto;color:#534F4F;font-family:Trebuchet,Helvetica,sans-serif;font-size:14px;line-height:22px;"><p>*Ce lien ne peut être utilisé quune seule fois pour valider votre compte.</p>
<p>Si vous n’êtes pas à lorigine de linscription sur Talents Tube, veuillez contacter le <a href="https://blog.talentstube.com/contact.html" style="color:#155EE4;text-decoration:none;">support Talents Tube</a>.</p>
<p>Si vous n’êtes pas à lorigine de linscription sur Talents Tube, veuillez contacter le <a href="https://blog.talentstube.com/contact" style="color:#155EE4;text-decoration:none;">support Talents Tube</a>.</p>
<p>Merci de votre compréhension.</p>
<p>Talents Tube</p></div></td></tr></tbody></table></div><!--[if mso]>
</td></tr></table>
@@ -553,7 +553,7 @@
<div style="margin:0 auto;max-width:600px;background:#FFFFFF;"><table class="" cellpadding="0" cellspacing="0" style="width:100%;font-size:0px;background:#FFFFFF;" align="center"><tbody><tr><td style="text-align:center;vertical-align:top;font-size:0;padding:0px;"><!--[if mso]>
<table border="0" cellpadding="0" cellspacing="0"><tr><td style="width:600px;">
<![endif]--><div style="vertical-align:top;display:inline-block;font-size:13px;text-align:left;width:100%;" class="mj-column-per-100" aria-labelledby="mj-column-per-100"><table width="100%"><tbody><tr><td style="font-size:0;padding:20px 35px 20px 35px;" align="left"><div class="mj-content" style="cursor:auto;color:#534F4F;font-family:Trebuchet,Helvetica,sans-serif;font-size:14px;line-height:22px;"><p>*Ce lien ne peut être utilisé quune seule fois pour valider votre compte.</p>
<p>Si vous n’êtes pas à lorigine de linscription sur Talents Tube, veuillez contacter le <a href="https://blog.talentstube.com/contact.html" style="color:#155EE4;text-decoration:none;">support Talents Tube</a>.</p>
<p>Si vous n’êtes pas à lorigine de linscription sur Talents Tube, veuillez contacter le <a href="https://blog.talentstube.com/contact" style="color:#155EE4;text-decoration:none;">support Talents Tube</a>.</p>
<p>Merci de votre compréhension.</p>
<p>Talents Tube</p></div></td></tr></tbody></table></div><!--[if mso]>
</td></tr></table>
@@ -27,10 +27,12 @@
type="text/css" />
<!-- Please remove the file below for production: Contains demo classes -->
<link class="main-stylesheet" href="{{ asset('dashboard/css/style.css') }}" rel="stylesheet" type="text/css" />
<script type="text/javascript">window.$crisp=[];window.CRISP_WEBSITE_ID="08e9d301-ba14-4d69-8b1a-53685114c5af";(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 class="fixed-header dashboard menu-pin menu-behind">
{{ include('admin/navigation_gauche.html.twig') }}
{# {{ include('default/user_switch.html.twig') }} #}
{{ include('admin/navigation_gauche.html.twig')}} }}
<!-- START PAGE-CONTAINER -->
@@ -42,14 +44,29 @@
{% block dashContent %}
Dashboard Company
{% endblock %}
</div>
<!-- START COPYRIGHT -->
<!-- START CONTAINER FLUID -->
<!-- START CONTAINER FLUID -->
<div class=" container-fluid container-fixed-lg footer">
<div class="copyright sm-text-center">
<p class="small-text no-margin pull-left sm-pull-reset">
©2017-2020 Talents Tube
</p>
<p class="small no-margin pull-right sm-pull-reset">
Besoin d'aide ? 02 30 05 06 31
</p>
<div class="clearfix"></div>
</div>
</div>
<!-- END COPYRIGHT -->
</div>
<!-- END PAGE CONTENT WRAPPER -->
</div>
<!-- END PAGE CONTAINER -->
{% block javascripts %}
<script src="https://maps.googleapis.com/maps/api/js?key=AIzaSyDYV8IJGtIoWLfXJQQvIuDQ88n2aEuRgpg&libraries=places">
@@ -1,7 +1,7 @@
<!-- BEGIN SIDEBPANEL-->
<nav class="page-sidebar" data-pages="sidebar">
<!-- BEGIN SIDEBAR MENU TOP TRAY CONTENT-->
<div class="sidebar-overlay-slide from-top" id="appMenu">
{# <div class="sidebar-overlay-slide from-top" id="appMenu">
<div class="row">
<div class="col-xs-6 no-padding">
<a href="#" class="p-l-40"><img src="{{ asset('dashboard/img/demo/social_app.svg') }}" alt="socail">
@@ -22,14 +22,14 @@
</a>
</div>
</div>
</div>
</div> #}
<!-- END SIDEBAR MENU TOP TRAY CONTENT-->
<!-- BEGIN SIDEBAR MENU HEADER-->
<div class="sidebar-header">
<img src="{{ asset('dashboard/img/logo_white.png') }}" alt="logo" class="brand"
{# <img src="{{ asset('dashboard/img/logo_white.png') }}" alt="logo" class="brand"
data-src="{{ asset('dashboard/img/logo_white.png') }}"
data-src-retina="{{ asset('dashboard/img/logo_white_2x.png') }}" width="78" height="22">
<div class="sidebar-header-controls">
data-src-retina="{{ asset('dashboard/img/logo_white_2x.png') }}" width="78" height="22"> #}
{# <div class="sidebar-header-controls">
<button aria-label="Toggle Drawer" type="button"
class="btn btn-icon-link invert sidebar-slide-toggle m-l-20 m-r-10" data-pages-toggle="#appMenu">
<i class="pg-icon">chevron_down</i>
@@ -39,7 +39,7 @@
data-toggle-pin="sidebar">
<i class="pg-icon"></i>
</button>
</div>
</div> #}
</div>
<!-- END SIDEBAR MENU HEADER-->
<!-- START SIDEBAR MENU -->
@@ -85,7 +85,8 @@
</li>
<li class="">
<a href="{{ path('users') }}">Utilisateurs</a>
<span class="icon-thumbnail"><span class="material-icons">
<span class="icon-thumbnail">
<span class="material-icons">
group
</span>
</span>
@@ -139,6 +140,25 @@
<span class="icon-thumbnail"><i class="pg-icon">mail</i></span>
</li>
{% if is_granted('ROLE_PREVIOUS_ADMIN') %}
<li class="">
<a href="{{ path('admin_dashboard', {'_switch_user': '_exit'}) }}">
<span class="principal">Se déconnecter</span>
</a>
<span class="icon-thumbnail">
<i class="pg-icon m-20">exit</i>
</span>
</li>
<li class="">
<small>
(Connecté en tant que {{ app.user.firstname }} {{ app.user.lastname }})
</small>
</li>
{% endif %}
</ul>
<div class="clearfix"></div>
@@ -1,6 +1,15 @@
<!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> #}
<!-- Title -->
<title>{% block title %}{% endblock %}</title>
@@ -25,7 +34,7 @@
<!-- CSS Space Template -->
<link rel="stylesheet" href="{{ asset('v2/css/theme.css') }}">
<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>
<script type="text/javascript"> window.$crisp=[];window.CRISP_WEBSITE_ID="08e9d301-ba14-4d69-8b1a-53685114c5af";(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>
<!-- Google Tag Manager (noscript) -->
@@ -47,5 +56,6 @@
{% endblock %}
{# {% include 'defaultv2/footer.html.twig' %} #}
{{ include('FairlaneCookieConsentBundle::cookie-info.html.twig') }}
</body>
</html>
@@ -90,6 +90,11 @@ Afin de créer votre annonce, renseignez lensemble des champs relatifs au pos
{{ form_row(form.contract_type) }}
</td>
</tr>
<tr>
<td class="col-lg-12 col-md-12 col-sm-12">
{{ form_row(form.temps_type) }}
</td>
</tr>
<tr>
<td class="col-lg-12 col-md-12 col-sm-12">
{{ form_row(form.status) }}
@@ -90,6 +90,11 @@ Afin de créer votre annonce, renseignez lensemble des champs relatifs au pos
{{ form_row(form.contract_type) }}
</td>
</tr>
<tr>
<td class="col-lg-12 col-md-12 col-sm-12">
{{ form_row(form.temps_type) }}
</td>
</tr>
<tr>
<td class="col-lg-12 col-md-12 col-sm-12">
{{ form_row(form.publicTag) }}
@@ -1,8 +1,8 @@
{% extends 'company/base_dashboard_company.html.twig' %}
{% extends 'company/base_dashboard_company_V2.html.twig' %}
{% block dashContent %}
<div class="row bg-bordered p-0">
{% include 'company/ad_steps.html.twig' with {'tab':3} %}
{# {% include 'company/ad_steps.html.twig' with {'tab':3} %} #}
<div class="p-20">
<form>
<p>
@@ -39,6 +39,13 @@
<p class="small hint-text m-t-5">{{ answer.user.firstname }}
{{ answer.user.lastname }}
</p>
<p class="small hint-text m-t-5">
{% if answer.user.company %}
{% if answer.user.company.cv %}
<a href="/uploads/cv/{{ answer.user.company.cv }}" target="_blank"><button aria-label="" type="button" class="btn btn-outline-primary">Télécharge le cv</button></a>
{% endif %}
{% endif %}
</p>
</div>
</div>
</div>
@@ -82,8 +89,8 @@
-->
<th style="width:15%">Objet</th>
<th style="width:15%">Message</th>
<th style="width:70%">Envoyé le</th>
<th style="width:15%">Envoyé le</th>
<th style="width:70%">Message</th>
</tr>
</thead>
<tbody>
@@ -1,4 +1,4 @@
{% extends 'base.html.twig' %}
{% extends 'basetemporaire.html.twig' %}
{% block title %}Offres d'emploi et recrutement {{ company.brandName }} | TalentsTube{% endblock %}
@@ -95,7 +95,7 @@ Afin de créer votre annonce, renseignez lensemble des champs relatifs au pos
<p>Importez votre vidéo de recrutement et publiez votre annonce.
Vous ne possédez pas encore de vidéo ?
Talents Tube peut vous accompagner dans la réalisation de votre
vidéo d'offre d'emploi. <a href="https://blog.talentstube.com/contact.html" target="_blank">Contactez-nous</a></p>
vidéo d'offre d'emploi. <a href="https://blog.talentstube.com/contact" target="_blank">Contactez-nous</a></p>
{# <p class="small hint-text">Below is a sample page for your cart , Created using pages design
UI Elementes</p> #}
{# <ul id="tabs-video" class="tabs">
@@ -46,11 +46,7 @@
<i class="fa fa-search"></i>
{{ 'company.menu.users.label'|trans }}</a></li>
<li>
<a href="{{ path('company_media') }}">
<i class="fa fa-play"></i>
{{ 'company.menu.videotheque.label'|trans }}</a>
</li>
<li>
<a href="{{ path('company_my_account') }}">
<i class="fa fa-cog"></i>
@@ -21,8 +21,10 @@
<p class="profil-city">{{ company.addresses.billing.city }}
- {{ company.addresses.billing.country|country }}</p>
{% endif %}
{# <p class="profil-job"><a
href="{{ path("company_show",{"alias":company.alias}) }}">{{ company.brandname }}</a></p> #}
<p class="profil-job"><a
href="{{ path("company_show",{"alias":company.alias}) }}">{{ company.brandname }}</a></p>
href="https://www.talentstube.com/Entreprise/{{company.alias}}" target="_blank">{{ company.brandname }}</a></p>
</div>
<div class="profil-nav">
<ul class="font-2">
@@ -33,55 +33,56 @@
<div class=" container-fluid container-fixed-lg bg-white">
<!-- START card -->
<div class="row">
<div class="col-lg-6">
<div class="col-lg-12s">
<div class="card card-transparent">
{{ form_start(form, { 'action': path('company_my_account'), 'attr': { 'class': 'fos_user_profile_edit' } }) }}
<div class="card-body">
{% if form_errors(form) %}
<span class="red-text text-darken-2">{{ form_errors(form) }}</span>
{% endif %}
<div class="row">
<div class="col-md-6">
<div class="form-group form-group-default required">
<div class="card-body">
{% if form_errors(form) %}
<span class="red-text text-darken-2">{{ form_errors(form) }}</span>
{% endif %}
{{ form_row(form.firstname) }}
<div class="row">
<div class="col-md-6">
<div class="form-group form-group-default required">
{{ form_row(form.firstname) }}
</div>
</div>
<div class="col-md-6">
<div class="form-group form-group-default">
{{ form_row(form.lastname) }}
</div>
</div>
</div>
<div class="col-md-6">
<div class="form-group form-group-default">
{# <div class="row">
<div class="col-md-12">
{{ form_row(form.lastname) }}
<div class="form-group ">
{{ form_row(form.gender) }}
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-md-12">
<div class="form-group ">
<br /> #}
<div style="text-align: right;">
<button class="btn btn-default" type="submit">Sauvegarde</button>
{{ form_row(form.gender) }}
</div>
</div>
</div>
<br />
<div style="text-align: right;">
<button class="btn btn-default" type="submit">Sauvegarde</button>
</div>
{{ form_end(form) }}
</div>
{{ form_end(form) }}
</div>
<!-- END card -->
</div>
<!-- END card -->
<div class="col-lg-6">
<div class="card card-transparent">
</div>
<div class="col-lg-12">
{# <div class="card card-transparent">
{{ form_start(formPw) }}
<div class="card-body">
{% if form_errors(formPw) %}
@@ -99,7 +100,17 @@
</div>
</div>
</div>
{{ form_end(formPw) }}
{{ form_end(formPw) }} #}
<div class="card card-transparent">
<div class="card-body">
<div class="row">
<div class="col-md-12">
<a href="/resetting/request" target="_blank">Réinitialisation de mot de passe</a>
</div>
</div>
</div>
</div>
</div>
<!-- END card -->
@@ -9,7 +9,7 @@
<!-- START BREADCRUMB -->
<ol class="breadcrumb">
<li class="breadcrumb-item"><a href="#">Accueil</a></li>
<li class="breadcrumb-item active">Utilisateurss</li>
<li class="breadcrumb-item active">Utilisateurs</li>
</ol>
<!-- END BREADCRUMB -->
<div class="row">
@@ -46,7 +46,10 @@
</div>
<div class="card-body">
{% if form_errors(form) %}
<span class="red-text text-darken-2">{{ form_errors(form) }}</span>
<span class="red-text text-darken-2">{{ form_errors(form) }}{{ error }}</span>
{% endif %}
{% if error%}
<span class="red-text text-darken-2"><b>{{ error }}</b><br/>&nbsp;</span>
{% endif %}
{{ form_start(form) }}
<div class="row">
@@ -72,7 +75,7 @@
</div>
</div>
<div class="row">
{# <div class="row">
<div class="col-md-12">
<div class="form-group ">
@@ -80,7 +83,7 @@
{{ form_row(form.gender) }}
</div>
</div>
</div>
</div> #}
{% if form.password is defined%}
<div class="row">
<div class="col-md-12">
@@ -28,9 +28,12 @@
{% if company.presentationVideo is defined %}
{% if company.presentationVideo.thumbnails.0.sizes is defined %}
<a href="{{ path('company_show',{'alias': company.alias }) }}" title="{{ company.brandName }}">
{% if company.presentationVideo.thumbnails.0.sizes.4.link is defined %}
<img src="{{ company.presentationVideo.thumbnails.0.sizes.4.link }}"
alt="{{ company.brandName }}"/>
<span class="playerbtn"></span>
{% endif %}
</a>
{% endif %}
{% endif %}
@@ -20,7 +20,7 @@
<a class="white-text" href="{{ path('territory_list') }}" title="Listes des territoires">Nos territoires</a>
</li>
<li>
<a class="white-text" href="https://blog.talentstube.com/contact.html" title="Talents Tube ">Contact</a>
<a class="white-text" href="https://blog.talentstube.com/contact" title="Talents Tube ">Contact</a>
</li>
</ul>
</div>
@@ -11,8 +11,8 @@
<div class="media">
<div class="media-body px-4">
<h2 class="statChiffre">1500+</h2>
<p class="statTexte">Talents connectés</p>
<h2 class="statChiffre">10000+</h2>
<p class="statTexte">Visiteurs par mois</p>
</div>
</div>
</div>
@@ -24,7 +24,7 @@
<div class="card-body p-4">
<div class="media">
<div class="media-body px-4">
<h2 class="statChiffre">900+</h2>
<h2 class="statChiffre">1050+</h2>
<p class="statTexte">Vues par vidéo</p>
</div>
</div>
@@ -38,7 +38,7 @@
<div class="media">
<div class="media-body px-4">
<h2 class="statChiffre">350</h2>
<h2 class="statChiffre">550+</h2>
<p class="statTexte">Candidatures vidéo</p>
</div>
</div>
@@ -19,7 +19,7 @@
<!-- Title -->
<header class="text-center mb-5">
<h2 class="h4 mb-0">Connexion</h2>
<p>Connecter vous pour gérer votre compte</p>
<p>Connectez-vous pour gérer votre compte</p>
</header>
@@ -35,7 +35,7 @@
aria-label="Email" data-msg="Please enter a valid email address." data-error-class="u-has-error"
data-success-class="u-has-success"> #}
<input type="text" id="username" name="_username" value="{{ last_username }}" required="required" class="form-control"/>
<input type="text" id="username" name="_username" value="{{ last_username }}" required="required" class="form-control" placeholder="Saisissez votre adresse email"/>
</div>
</div>
<!-- End Input -->
@@ -51,7 +51,7 @@
{# <input type="password" class="form-control form__input" name="password" required placeholder="Password"
aria-label="Password" data-msg="Your password is invalid. Please try again."
data-error-class="u-has-error" data-success-class="u-has-success"> #}
<input type="password" id="password" name="_password" required="required" class="form-control" />
<input type="password" id="password" name="_password" required="required" class="form-control" placeholder="Saisissez votre mot de passe" />
</div>
</div>
<!-- End Input -->
@@ -75,9 +75,9 @@
<div class="mb-3">
<input type="hidden" name="_target_path" value="redirect_dashboard" />
<input type="hidden" name="_target_path" value="redirect_dashboard" />
<input type="submit" id="_submit" name="_submit" class="btn btn-block btn-primary"/>
<input type="submit" id="_submit" name="_submit" class="btn btn-block btn-primary" value="Se connecter"/>
</div>
<div class="text-center mb-3">
@@ -25,10 +25,11 @@
<div class="list-group list-group-flush list-group-transparent">
<!-- Links -->
<ul class="list-unstyled">
<li><a class="list-group-item list-group-item-action" href="mentions-legales" target="_blank">Mentions légales</a></li>
<li><a class="list-group-item list-group-item-action" href="cgu" target="_blank">CGU</a></li>
<li><a class="list-group-item list-group-item-action" href="politique-confidentialite" target="_blank">Politique de confidentialité</a></li>
<li><a class="list-group-item list-group-item-action" href="https://blog.talentstube.com/contact.html target="_blank"
<li><a class="list-group-item list-group-item-action" href="{{ path('mentions-legales') }}" target="_blank">Mentions légales</a></li>
<li><a class="list-group-item list-group-item-action" href="{{ path('cgu') }}" target="_blank">CGU</a></li>
<li><a class="list-group-item list-group-item-action" href="{{ path('politique-confidentialite') }}" target="_blank">Politique de confidentialité</a></li>
<li><a class="list-group-item list-group-item-action" href="{{ path('abonnement') }}" >Tarifs</a></li>
<li><a class="list-group-item list-group-item-action" href="https://blog.talentstube.com/contact" target="_blank"
">Contact</a></li>
</ul>
<!-- End Links -->
@@ -71,7 +72,7 @@
<div class="col-lg-4 order-lg-1 d-flex align-items-start flex-column">
<!-- Logo -->
<a class="d-inline-block mb-5" href="index.html" aria-label="Space">
<a class="d-inline-block mb-5" href="/" aria-label="Space">
<img src="{{ asset('v2/svg/logos/talentstube-logo-mobile.svg') }}" alt="Logo" style="width: 40px; max-width: 100%;">
</a>
<!-- End Logo -->
@@ -12,7 +12,7 @@ La candidature en vidéo ou vidéo de motivation savère être un outil perfo
En plus des savoirs et savoir-faire, la candidature vidéo met en lumière le savoir-être et le savoir devenir des candidats. Vous pouvez cerner la personnalité du candidat et son projet professionnel en quelques instants.
</p>
<a class="btn btn-sm btn-primary btn-wide" href="#">Voir la plateforme</a>
<a class="btn btn-sm btn-primary btn-wide" href="https://www.talentstube.com">Voir la plateforme</a>
</div>
</div>
@@ -8,7 +8,7 @@
</div>
</div>
<div class=" text-center space-3-bottom">
<a class="btn btn-sm btn-contact" href="https://blog.talentstube.com/contact.html" target="_blank" role="button" >
<a class="btn btn-sm btn-contact" href="https://blog.talentstube.com/contact" target="_blank" role="button" >
<i class="fa fa-user-circle mr-1"></i>
Contactez nous
</a>
@@ -20,7 +20,7 @@
<a class="white-text" href="{{ path('territory_list') }}" title="Listes des territoires">Nos territoires</a>
</li>
<li>
<a class="white-text" href="https://blog.talentstube.com/contact.html" title="Talents Tube ">Contact</a>
<a class="white-text" href="https://blog.talentstube.com/contact" title="Talents Tube ">Contact</a>
</li>
</ul>
</div>
@@ -21,7 +21,7 @@
<p>Nous vous invitons à lire avec attention le présent document. Pour toute question concernant ce document
et, dune manière générale, sur la collecte et le traitement de vos informations personnelles par la société
talentstube.com, nhésitez pas à nous contacter via le formulaire présent sur la page contact :
<a href="https://blog.talentstube.com/contact.html" target="_blank">https://blog.talentstube.com/contact.html</a>
<a href="https://blog.talentstube.com/contact" target="_blank">https://blog.talentstube.com/contact</a>
</p>
<div class="mb-3">
<h2 class="h4">Données personnelles</h2>
@@ -136,7 +136,7 @@
<p>Vous pouvez demander une limitation du traitement des données collectées. Lexercice de ces droits peut
exercer ce droit auprès de TALENTS TUBE en adressant une requête soit par voie postale à l'adresse suivante
: 3 Rue Louis de Broglie, Village By CA 56000 Vannes, soit par courrier électronique via le formulaire
présent sur la page Contact <a href="https://blog.talentstube.com/contact.html" target="_blank"> https://blog.talentstube.com/contact.html</a>. Cette requête devra être accompagnée
présent sur la page Contact <a href="https://blog.talentstube.com/contact" target="_blank"> https://blog.talentstube.com/contact</a>. Cette requête devra être accompagnée
d'une pièce d'identité revêtant la signature de l'Utilisateur et devra préciser l'adresse et le moyen par
lesquelles une réponse pourra être envoyée.</p>.
@@ -93,7 +93,7 @@
<!-- Button -->
<li class="nav-item u-header__nav-item-btn">
<a class="btn btn-sm btn-contact" href="https://blog.talentstube.com/contact.html" target="_blank" role="button">
<a class="btn btn-sm btn-contact" href="https://blog.talentstube.com/contact" target="_blank" role="button">
{# <i class="fa fa-user-circle mr-1"></i> #}
Contactez-nous
</a>
@@ -6,7 +6,7 @@
<h2 class="text-white text-center"> Envie de dévoiler votre marque employeur en vidéo ? </h2>
</div>
<a class="btn btn-sm btn-contact" href="https://blog.talentstube.com/contact.html"
<a class="btn btn-sm btn-contact" href="https://blog.talentstube.com/contact"
data-overlay-color="#151b26">
Contactez-nous
@@ -0,0 +1,364 @@
{% extends 'basev2.html.twig' %}
{% block title %}Tarifs - Talents Tube{% endblock %}
{% block meta %}
<meta name="description" content="Attirez les meilleurs candidats avec des offres demploi en vidéo. Présentez le poste recherché, les missions, les locaux et les collaborateurs de votre entreprise.">
<meta name="twitter:card" content="summary">
<meta name="twitter:site" content="@TalentsTube">
<meta name="twitter:title" content="Offres demploi - Recrutez des candidats en vidéo - Talents Tube">
<meta name="twitter:description" content="Attirez les meilleurs candidats avec des offres demploi en vidéo. Présentez le poste recherché, les missions, les locaux et les collaborateurs de votre entreprise.">
<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="Offres demploi - Recrutez des candidats en vidéo - 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="Attirez les meilleurs candidats avec des offres demploi en vidéo. Présentez le poste recherché, les missions, les locaux et les collaborateurs de votre entreprise." />
<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 %}
<main id="content">
<!-- Hero Section -->
<div class="gradient-half-primary-v1">
<div class="bg-img-hero" style="background-image: url(../../assets/img/bg/bg2.png);">
<div class="container space-2 space-4-top--lg space-3-bottom--lg">
<div class="w-md-80 w-lg-60 text-center mx-auto">
<!-- Title -->
<div class="mb-9">
<h1 class="display-4 text-white">Abonnement</h1>
<p class="lead text-white">Choisissez l'offre qui vous correspond pour diffuser vos vidéos de recrutement</p>
</div>
<!-- End Title -->
</div>
</div>
</div>
</div>
<!-- End Hero Section -->
<!-- Pricing Section -->
<div class="container">
<div class="bg-gray-100 shadow-lg rounded mt-n9">
<!-- Individual -->
<div id="pricingIndividual" data-target-group="idPricing">
<div class="js-slick-carousel u-slick u-slick--gutters"
data-slides-show="3"
data-slides-scroll="1"
data-pagi-classes="d-lg-none text-center u-slick__pagination mt-7 mb-0"
data-responsive='[{
"breakpoint": 1200,
"settings": {
"slidesToShow": 3
}
}, {
"breakpoint": 992,
"settings": {
"slidesToShow": 2
}
}, {
"breakpoint": 768,
"settings": {
"slidesToShow": 1
}
}, {
"breakpoint": 554,
"settings": {
"slidesToShow": 1
}
}]'>
<div class="js-slide">
<!-- Pricing -->
<div class="card border-0">
<!-- Header -->
<header class="card-header text-center p-5">
<h4 class="h4">Jusqu'à 3 vidéos</h4>
<span class="d-block">
<span class="display-4 text-dark">
99€
</span>
<span class="d-block text-secondary font-size-14">par mois HT</span>
</span>
</header>
<!-- End Header -->
<!-- Content -->
<div class="card-body p-5">
<ul class="list-unstyled mb-4">
<li class="font-size-14 py-2">- Création page entreprise</li>
<li class="font-size-14 py-2">- Accès espace recruteur</li>
<li class="font-size-14 py-2">- Mise en ligne de 1 à 3 vidéos
offre demploi et Marque employeur</li>
<li class="font-size-14 py-2">- Réception des candidatures en vidéo</li>
<li class="font-size-14 py-2">- Gestion des candidatures</li>
<li class="font-size-14 py-2">- Échanges vidéos avec les candidats</li>
<li class="font-size-14 py-2">- Suivi Statistiques</li>
</ul>
</div>
<!-- End Content -->
</div>
<!-- End Pricing -->
</div>
<div class="js-slide">
<!-- Pricing -->
<div class="card border-0">
<!-- Header -->
<header class="card-header text-center p-5">
<h4 class="h4">De 4 à 9 vidéos</h4>
<span class="d-block">
<span class="display-4 text-dark">
199€
</span>
<span class="d-block text-secondary font-size-14">par mois HT</span>
</span>
</header>
<!-- End Header -->
<!-- Content -->
<div class="card-body p-5">
<ul class="list-unstyled mb-4">
<li class="font-size-14 py-2">- Création page entreprise</li>
<li class="font-size-14 py-2">- Accès espace recruteur</li>
<li class="font-size-14 py-2">- Mise en ligne de 4 à 9 vidéos
offre demploi et Marque employeur</li>
<li class="font-size-14 py-2">- Réception des candidatures en vidéo</li>
<li class="font-size-14 py-2">- Gestion des candidatures</li>
<li class="font-size-14 py-2">- Échanges vidéos avec les candidats</li>
<li class="font-size-14 py-2">- Suivi Statistiques</li>
</ul>
</div>
<!-- End Content -->
</div>
<!-- End Pricing -->
</div>
<div class="js-slide">
<!-- Pricing -->
<div class="card border-0">
<!-- Header -->
<header class="card-header text-center p-5">
<h4 class="h4">Plus de 10 vidéos</h4>
<span class="d-block">
<span class="display-4 text-dark">
Sur devis
</span>
<span class="d-block text-secondary font-size-14">&nbsp;</span>
</span>
</header>
<!-- End Header -->
<!-- Content -->
<div class="card-body p-5">
<ul class="list-unstyled mb-4">
<li class="font-size-14 py-2">- Création page entreprise</li>
<li class="font-size-14 py-2">- Accès espace recruteur</li>
<li class="font-size-14 py-2">- Mise en ligne de 10 vidéos
offre demploi et Marque employeur</li>
<li class="font-size-14 py-2">- Réception des candidatures en vidéo</li>
<li class="font-size-14 py-2">- Gestion des candidatures</li>
<li class="font-size-14 py-2">- Échanges vidéos avec les candidats</li>
<li class="font-size-14 py-2">- Suivi Statistiques</li>
</ul>
</div>
<!-- End Content -->
</div>
<!-- End Pricing -->
</div>
</div>
</div>
<!-- End Individual -->
</div>
</div>
<!-- End Pricing Section -->
<!-- Divider -->
<div class="container space-2-bottom">
<hr class="my-0">
</div>
<!-- End Divider -->
<!-- FAQ Section -->
<div class="container space-2-bottom">
<!-- Title -->
<div class="w-md-80 w-lg-60 text-center mx-md-auto mb-9">
<h3 class="h4">Vous souhaitez en savoir plus sur notre solution?</h3>
</div>
<!-- End Title -->
<div class="w-md-80 w-lg-60 text-center mx-md-auto mb-9">
<a href="https://blog.talentstube.com/contact" target="_blank"><button type="button" class="btn btn-block btn-primary" >Contactez-nous</button></a>
</div>
</div>
<!-- End FAQ Section -->
<!-- Divider -->
<div class="w-50 w-lg-35 mx-auto">
<hr class="my-0">
</div>
<!-- End Divider -->
</main>
<!-- ========== END MAIN CONTENT ========== -->
{% include 'defaultv2/accueil/footer.html.twig' %}
<!-- Begin Panel Login -->
{% include 'defaultv2/accueil/blocLogin.html.twig'
with {
'csrf_token': csrf_token,
'error' : error
} %}
<!-- End Panel Login -->
<!-- Go to Top -->
<a class="js-go-to u-go-to" href="javascript:;" data-position='{"bottom": 30, "right": 100 }' data-type="fixed"
data-offset-top="400" data-compensation="#header" data-show-effect="slideInUp" data-hide-effect="slideOutDown">
<i class="fa fa-arrow-up u-go-to__inner"></i>
</a>
<!-- End Go to Top -->
<!-- JS Global Compulsory -->
<script src="{{ asset('v2/vendor/jquery/dist/jquery.min.js') }}"></script>
<script src="{{ asset('v2/vendor/jquery-migrate/dist/jquery-migrate.min.js') }}"></script>
<script src="{{ asset('v2/vendor/popper.js/dist/umd/popper.min.js') }}"></script>
<script src="{{ asset('v2/vendor/bootstrap/bootstrap.min.js') }}"></script>
<!-- JS Implementing Plugins -->
<script src="{{ asset('v2/vendor/hs-megamenu/src/hs.megamenu.js') }}"></script>
<script src="{{ asset('v2/vendor/jquery-validation/dist/jquery.validate.min.js') }}"></script>
<script src="{{ asset('v2/vendor/malihu-custom-scrollbar-plugin/jquery.mCustomScrollbar.concat.min.js') }}"></script>
<script src="{{ asset('v2/vendor/custombox/dist/custombox.min.js') }}"></script>
<script src="{{ asset('v2/vendor/custombox/dist/custombox.legacy.min.js') }}"></script>
<script src="{{ asset('v2/vendor/typed.js/lib/typed.min.js') }}"></script>
<script src="{{ asset('v2/vendor/slick-carousel/slick/slick.js') }}"></script>
<script src="{{ asset('v2/vendor/cubeportfolio/js/jquery.cubeportfolio.min.js') }}"></script>
<script src="{{ asset('v2/vendor/fancybox/jquery.fancybox.min.js') }}"></script>
<!-- JS Space -->
<script src="{{ asset('v2/js/hs.core.js') }}"></script>
<script src="{{ asset('v2/js/components/hs.header.js') }}"></script>
<script src="{{ asset('v2/js/components/hs.unfold.js') }}"></script>
<script src="{{ asset('v2/js/components/hs.validation.js') }}"></script>
<script src="{{ asset('v2/js/helpers/hs.focus-state.js') }}"></script>
<script src="{{ asset('v2/js/components/hs.malihu-scrollbar.js') }}"></script>
<script src="{{ asset('v2/js/components/hs.fancybox.js') }}"></script>
<script src="{{ asset('v2/js/components/hs.modal-window.js') }}"></script>
<script src="{{ asset('v2/js/components/hs.show-animation.js') }}"></script>
<script src="{{ asset('v2/js/components/hs.slick-carousel.js') }}"></script>
<script src="{{ asset('v2/js/components/hs.cubeportfolio.js') }}"></script>
<script src="{{ asset('v2/js/components/hs.g-map.js') }}"></script>
<script src="{{ asset('v2/js/components/hs.go-to.js') }}"></script>
<script src="{{ asset('v2/js/components/hs.video-player.js') }}"></script>
<!-- JS Plugins Init. -->
<script>
// initialization of google map
{# function initMap() {
$.HSCore.components.HSGMap.init('.js-g-map');
} #}
$(window).on('load', function () {
// initialization of HSMegaMenu component
$('.js-mega-menu').HSMegaMenu({
event: 'hover',
pageContainer: $('.container'),
breakpoint: 767,
hideTimeOut: 0
});
});
$(document).on('ready', function () {
// initialization of header
$.HSCore.components.HSHeader.init($('#header'));
// initialization of fancybox
$.HSCore.components.HSFancyBox.init('.js-fancybox');
// initialization of unfold component
$.HSCore.components.HSUnfold.init($('[data-unfold-target]'), {
afterOpen: function () {
if (!$('body').hasClass('IE11')) {
$(this).find('input[type="search"]').focus();
}
}
});
// initialization of form validation
$.HSCore.components.HSValidation.init('.js-validate', {
rules: {
confirmPassword: {
equalTo: '#password'
}
}
});
// initialization of forms
$.HSCore.helpers.HSFocusState.init();
// initialization of malihu scrollbar
$.HSCore.components.HSMalihuScrollBar.init($('.js-scrollbar'));
// initialization of autonomous popups
$.HSCore.components.HSModalWindow.init('[data-modal-target]', '.js-signup-modal', {
autonomous: true
});
// initialization of show animations
$.HSCore.components.HSShowAnimation.init('.js-animation-link');
// initialization of slick carousel
$.HSCore.components.HSSlickCarousel.init('.js-slick-carousel');
// initialization of video player
$.HSCore.components.HSVideoPlayer.init('.js-inline-video-player');
// initialization of text animation (typing)
$('.u-text-animation.u-text-animation').html("");
// initialization of text animation (typing)
var typed = new Typed(".u-text-animation.u-text-animation--typing", {
strings: ["Attirez des talents", "Valorisez vos collaborateurs", "Dévoilez vos métiers "],
typeSpeed: 60,
loop: true,
backSpeed: 25,
backDelay: 3000
});
// initialization of cubeportfolio
$.HSCore.components.HSCubeportfolio.init('.cbp');
// initialization of go to
$.HSCore.components.HSGoTo.init('.js-go-to');
});
$(document).ready(function () {
$(window).scroll(function () { // check if scroll event happened
if ($(document).scrollTop() > 50) { // check if user scrolled more than 50 from top of the browser window
$("#logoAndNav").css("background-color","#000"); // if yes, then change the color of class "navbar-fixed-top" to white (#f8f8f8)
$("#sidebarNavToggler").css("color","#fff");
} else {
$("#logoAndNav").css("background-color", "transparent"); // if not, change it back to transparent
$("#sidebarNavToggler").css("color", "#000");
}
});
});
</script>
{% endblock %}
{% block javascripts %}
{{ parent() }}
<script src="https://player.vimeo.com/api/player.js"></script>
{% endblock %}
@@ -65,7 +65,7 @@
<table border="0" cellpadding="0" cellspacing="0" width="600" align="center" style="width:600px;"><tr><td>
<![endif]--><div style="margin:0 auto;max-width:600px;background:#F2F2F2;"><table class="" cellpadding="0" cellspacing="0" style="width:100%;font-size:0px;background:#F2F2F2;" align="center"><tbody><tr><td style="text-align:center;vertical-align:top;font-size:0;padding:22px 0;"><!--[if mso]>
<table border="0" cellpadding="0" cellspacing="0"><tr><td style="width:600px;">
<![endif]--><div style="vertical-align:top;display:inline-block;font-size:13px;text-align:left;width:100%;" class="mj-column-per-100" aria-labelledby="mj-column-per-100"><table width="100%"><tbody><tr><td style="font-size:0;padding:0px;" align="center"><table cellpadding="0" cellspacing="0" style="border-collapse:collapse;border-spacing:0px;" align="center"><tbody><tr><td><a href="http://www.talentstube.com/"><img alt="Talents Tube" src="{{ absolute_url(asset('img/mail/logo-talents-tube.png')) }}" style="border:none;display:block;outline:none;text-decoration:none;width:100%;max-width:150px;height:auto;" width="150" height="auto"></a></td></tr></tbody></table></td></tr></tbody></table></div><!--[if mso]>
<![endif]--><div style="vertical-align:top;display:inline-block;font-size:13px;text-align:left;width:100%;" class="mj-column-per-100" aria-labelledby="mj-column-per-100"><table width="100%"><tbody><tr><td style="font-size:0;padding:0px;" align="center"><table cellpadding="0" cellspacing="0" style="border-collapse:collapse;border-spacing:0px;" align="center"><tbody><tr><td><a href="http://www.talentstube.com/"><img alt="Talents Tube" src="https://recruteur.talentstube.com/img/mail/logo-talents-tube.png" style="border:none;display:block;outline:none;text-decoration:none;width:100%;max-width:150px;height:auto;" width="150" height="auto"></a></td></tr></tbody></table></td></tr></tbody></table></div><!--[if mso]>
</td></tr></table>
<![endif]--></td></tr></tbody></table></div><!--[if mso]>
</td></tr></table>
@@ -88,9 +88,9 @@
<table border="0" cellpadding="0" cellspacing="0"><tr><td style="width:600px;">
<![endif]--><div style="vertical-align:top;display:inline-block;font-size:13px;text-align:left;width:100%;" class="mj-column-per-100" aria-labelledby="mj-column-per-100"><table width="100%"><tbody><tr><td style="font-size:0;padding:0px 35px 0px 35px;" align="center"><div class="mj-content" style="cursor:auto;color:#534F4F;font-family:Raleway;font-size:14px;line-height:22px;"><p>Suivez-nous&nbsp;!</p>
<p>
<a style="margin:10px 20px 22px 20px;" href="https://www.facebook.com/TalentsTuber/"><img src="{{ absolute_url(asset('img/mail/facebook.png')) }}" alt="Facebook"></a>
<a style="margin:10px 20px 22px 20px;" href="https://twitter.com/TalentsTuber"><img src="{{ absolute_url(asset('img/mail/twitter.png')) }}" alt="Twitter"></a>
<a style="margin:10px 20px 22px 20px;" href="https://www.linkedin.com/company/talentstube"><img src="{{ absolute_url(asset('img/mail/linkedin.png')) }}" alt="LinkedIn"></a>
<a style="margin:10px 20px 22px 20px;" href="https://www.facebook.com/TalentsTuber/"><img src="https://recruteur.talentstube.com/img/mail/facebook.png" alt="Facebook"></a>
<a style="margin:10px 20px 22px 20px;" href="https://twitter.com/TalentsTuber"><img src="https://recruteur.talentstube.com/img/mail/twitter.png" alt="Twitter"></a>
<a style="margin:10px 20px 22px 20px;" href="https://www.linkedin.com/company/talentstube"><img src="https://recruteur.talentstube.com/img/mail/linkedin.png" alt="LinkedIn"></a>
</p></div></td></tr></tbody></table></div><!--[if mso]>
</td></tr></table>
<![endif]--></td></tr></tbody></table></div><!--[if mso]>
@@ -101,7 +101,7 @@
<![endif]--><div style="margin:0 auto;max-width:600px;background:#F2F2F2;"><table class="" cellpadding="0" cellspacing="0" style="width:100%;font-size:0px;background:#F2F2F2;" align="center"><tbody><tr><td style="text-align:center;vertical-align:top;font-size:0;padding:0px;"><!--[if mso]>
<table border="0" cellpadding="0" cellspacing="0"><tr><td style="width:600px;">
<![endif]--><div style="vertical-align:top;display:inline-block;font-size:13px;text-align:left;width:100%;" class="mj-column-per-100" aria-labelledby="mj-column-per-100"><table width="100%"><tbody><tr><td style="font-size:0;padding:20px 35px 20px 35px;" align="center"><div class="mj-content" style="cursor:auto;color:#7E7878;font-family:Raleway;font-size:14px;line-height:22px;"><p style="font-weight:bold;">Talents Tube</p>
<p>Place Albert Einstein 6 Le Prisme CP60 PIBS 6 CS 72001 - 56038 VANNES</p>
<p>Village By CA - 3 rue Louis de Broglie - PIBS - 56000 VANNES</p>
<p><a style="text-decoration:none;color:#7E7878;font-weight:bold;" href="mailto:contact@talentstube.com">contact@talentstube.com</a></p></div></td></tr></tbody></table></div><!--[if mso]>
</td></tr></table>
<![endif]--></td></tr></tbody></table></div><!--[if mso]>
@@ -12,40 +12,44 @@
<br />
Bonjour {{ user.firstname }} {{ user.lastname }},<br /><br />
<strong>Vous avez reçu une réponse vidéo de lentreprise {{ message.sender.company.brandname }}.</strong><br />
Découvez la réponse vidéo en cliquant sur le bouton ci-dessous.
Découvrez la réponse vidéo en cliquant sur le bouton ci-dessous.
<br/>
<br/>
<div style="text-align:center;">
{% if answer.ad.alias is null %}
<a class="btn btn-default" href="{{ absolute_url(path('talent_ad_detail',{'alias': aliasCompany,'id': answer.id })) }}">Visionner la réponse</a>
{# <a class="btn btn-default" href="{{ absolute_url(path('talent_ad_detail',{'alias': aliasCompany,'id': answer.id })) }}">Visionner la réponse</a> #}
<a class="btn btn-default" href="https://www.talentstube.com">Consulter la réponse</a>
{% else %}
<a class="btn btn-default" href="{{ absolute_url(path('talent_ad_detail',{'alias': answer.ad.alias,'id': answer.id })) }}">Visionner la réponse</a>
{# <a class="btn btn-default" href="{{ absolute_url(path('talent_ad_detail',{'alias': answer.ad.alias,'id': answer.id })) }}">Visionner la réponse</a> #}
<a class="btn btn-default" href="https://www.talentstube.com">Consulter la réponse</a>
{% endif %}
</div>
{% else %}
<br />
Bonjour {{ user.firstname }} {{ user.lastname }},<br /><br />
<strong>Vous avez reçu une réponse de lentreprise {{ message.sender.company.brandname }}.</strong><br />
Découvez la réponse en cliquant sur le bouton ci-dessous.
Découvrez la réponse en cliquant sur le bouton ci-dessous.
<br/>
<br/>
<div style="text-align:center;">
{% if answer.ad.alias is null %}
<a class="btn btn-default" href="{{ absolute_url(path('talent_ad_detail',{'alias': aliasCompany,'id': answer.id })) }}">Consulter la réponse</a>
{# <a class="btn btn-default" href="{{ absolute_url(path('talent_ad_detail',{'alias': aliasCompany,'id': answer.id })) }}">Consulter la réponse</a> #}
<a class="btn btn-default" href="https://www.talentstube.com">Consulter la réponse</a>
{% else %}
<a class="btn btn-default" href="{{ absolute_url(path('talent_ad_detail',{'alias': answer.ad.alias,'id': answer.id })) }}">Consulter la réponse</a>
{# <a class="btn btn-default" href="{{ absolute_url(path('talent_ad_detail',{'alias': answer.ad.alias,'id': answer.id })) }}">Consulter la réponse</a> #}
<a class="btn btn-default" href="https://www.talentstube.com">Consulter la réponse</a>
{% endif %}
</div>
{% endif %}
<br>
<strong>Vous souhaitez contacter lentreprise ?</strong><br /><br />
{# <strong>Vous souhaitez contacter lentreprise ?</strong><br /><br />
Cliquez sur le bouton ci-dessous pour envoyer un email à la personne en charge du recrutement.
<br/>
<br/>
<div style="text-align:center;">
<a class="btn-default btn-white" href="mailto:{{ message.sender.email }}">Répondre à {{ message.sender.firstname }} {{ message.sender.lastname }}</a>
</div>
<br />
<br /> #}
<br />
L’équipe Talents Tube
{% elseif type == 'plain' %}
@@ -6,7 +6,7 @@
Nous avons reçu une demande de changement de mot de passe pour votre compte Talents Tube.
Si vous n'avez pas fait cette demande, veuillez ignorez cet e-mail.
Si vous n'avez pas fait cette demande, veuillez ignorer cet e-mail.
Dans le cas contraire, veuillez cliquer sur le lien ci-dessous pour changer votre mot de passe :
{{ confirmationUrl }}
@@ -6,7 +6,7 @@
<p>
Nous avons reçu une demande de changement de mot de passe pour votre compte Talents Tube.<br />
Si vous n'avez pas fait cette demande, veuillez ignorez cet e-mail.<br />
Si vous n'avez pas fait cette demande, veuillez ignorer cet e-mail.<br />
Dans le cas contraire, veuillez cliquer sur le lien ci-dessous pour changer votre mot de passe :<br /><br />
<a href="{{ confirmationUrl }}">Réinitialiser mon mot de passe</a>
<br /><br />
@@ -40,13 +40,13 @@ votre entreprise et attirer de nouveaux talents.</p>
width="100%" height="550" frameborder="0" webkitallowfullscreen
mozallowfullscreen allowfullscreen></iframe>
</div>
{% else %}
{# {% else %}
<div class="no-presentation-video">
<strong>
Vous ne disposez pas de vidéo de présentation !
</strong><br/>
Cliquez sur le bouton ci-dessous pour la sélectionner dans votre bibliothèque.
</div>
</div> #}
{% endif %}
</div>
@@ -72,11 +72,12 @@ votre entreprise et attirer de nouveaux talents.</p>
{% endif %}
<a class="btn btn-cancel-premier red tooltipped btn-round right" href="#!"
data-position="top" data-tooltip="Annuler">Annuler</a>
<a class="btn btn-default btn-video-premier right btn-orange">
{% if app.user.company.presentationVideo %}
Remplacer ma vidéo marque employeur
{% else %}
Ajouter une vidéo marque employeur
Choisir une vidéo marque employeur
{% endif %}
</a>
@@ -87,9 +88,9 @@ votre entreprise et attirer de nouveaux talents.</p>
<strong>
Guide
</strong><br/>
Pour remplacer votre vidéo marque employeur, cliquer sur le bouton remplacer et choisissez une vidéo dans la liste ci dessous </div>
Pour choisir votre vidéo marque employeur, cliquer sur le bouton remplacer et choisissez une vidéo dans la liste ci dessous </div>
{# {% endif %} #}
</p>
</div>
</div>
{% endif %}
@@ -12,25 +12,25 @@
<div class="row">
<div class="col s12">
{#<a class="waves-effect waves-light btn btn-default modal-trigger left m-r-10" href="#addVideo">Créer une vidéo</a>#}
{% if medias|length > 0 %}
{# {% if medias|length > 0 %} #}
<a class="waves-effect waves-light btn btn-default modal-trigger left" href="#addVideo">Ajouter une vidéo</a>
<a class="btn btn-delete-video btn-round tooltipped red right" href="#!" data-position="top"
data-tooltip="Supprimer des vidéos"><i class="fa fa-trash" aria-hidden="true"></i>
</a>
{% endif %}
{# {% endif %} #}
</div>
</div>
{% if medias|length == 0 %}
<div class="col s12 col-actions center-align" id="no-video-talents">
{# <div class="col s12 col-actions center-align" id="no-video-talents">
<br/><br/>
<strong class="color-grey3">Vous ne possédez pas encore de CV vidéo!</strong><br/>
<span class="color-grey2">Cliquez sur le bouton pour ajouter votre première vidéo.</span>
<br/><br/>
<a class="waves-effect waves-light btn btn-default modal-trigger" href="#addVideo">Ajouter une
vidéo</a>
</div>
</div> #}
{% else %}
{% if app.user.company.presentationVideo %}
{% set media = app.user.company.presentationVideo %}
@@ -102,7 +102,7 @@
dès aujourdhui !
</p>
<br /><br />
<a class="btn btn-default" title="contactez nous" href="https://blog.talentstube.com/contact.html">Contactez nous dès aujourdhui !</a>
<a class="btn btn-default" title="contactez nous" href="https://blog.talentstube.com/contact">Contactez nous dès aujourdhui !</a>
<br />
</div>
</div>
@@ -168,7 +168,7 @@
<div class="card-title"><h4>Réalisation vidéo</h4></div>
<div class="price blue-text">Sur devis</div>
<div class="center-align">
<a href="https://blog.talentstube.com/contact.html" class="btn btn-default">Demander un devis</a>
<a href="https://blog.talentstube.com/contact" class="btn btn-default">Demander un devis</a>
</div>
<div class="divider"></div>
<p>Nos équipes vous aident à <strong>écrire le scénario RH et/ou Marque Employeur</strong>.</p>
@@ -91,7 +91,7 @@
!
</div>
<div class="col s12 center-align m-t-50 m-b-50">
<a class="btn btn-default" title="contactez nous" href="https://blog.talentstube.com/contact.html">Demander un devis</a>
<a class="btn btn-default" title="contactez nous" href="https://blog.talentstube.com/contact">Demander un devis</a>
<br />
</div>
</div>
@@ -102,7 +102,7 @@
</div>
<div class="row center-align m-t-100">
<p>
<a href="https://blog.talentstube.com/contact.html" class="btn btn-default">Nous contacter</a>
<a href="https://blog.talentstube.com/contact" class="btn btn-default">Nous contacter</a>
</p>
</div>
</div>
@@ -117,7 +117,7 @@
</div>
<div class="row center-align m-t-50">
<p>
<a href="https://blog.talentstube.com/contact.html" class="btn btn-default white">Demander un devis</a>
<a href="https://blog.talentstube.com/contact" class="btn btn-default white">Demander un devis</a>
</p>
</div>
</div>
@@ -134,7 +134,7 @@
</div>
<div class="row center-align m-t-50 m-b-50">
<p>
<a class="btn btn-default" title="contactez nous" href="https://blog.talentstube.com/contact.html">Demander votre vidéo marque employeur</a>
<a class="btn btn-default" title="contactez nous" href="https://blog.talentstube.com/contact">Demander votre vidéo marque employeur</a>
</p>
</div>
</div>
@@ -121,7 +121,7 @@
</div>
<div class="row center-align">
<p>
<a class="btn btn-default" title="contactez nous" href="https://blog.talentstube.com/contact.html">Contactez nous dès aujourdhui !</a>
<a class="btn btn-default" title="contactez nous" href="https://blog.talentstube.com/contact">Contactez nous dès aujourdhui !</a>
</p>
</div>
</div>
@@ -192,7 +192,7 @@
<div class="row center-align">
<p>
<br />
<a href="https://blog.talentstube.com/contact.html" class="btn btn-default">Demander une vidéo offre emploi</a>
<a href="https://blog.talentstube.com/contact" class="btn btn-default">Demander une vidéo offre emploi</a>
</p>
</div>
</div>
@@ -90,7 +90,7 @@
</div>
<div class="row center-align m-t-100">
<p>
<a href="https://blog.talentstube.com/contact.html" class="btn btn-default">Demander une vidéo territoire</a>
<a href="https://blog.talentstube.com/contact" class="btn btn-default">Demander une vidéo territoire</a>
</p>
</div>
</div>
@@ -247,9 +247,9 @@
<div class="col s6">
{{ form_row(formProfile.birthday) }}
</div>
<div class="col s6">
{# <div class="col s6">
{{ form_row(formProfile.gender) }}
</div>
</div> #}
<div class="col s12">
{{ form_row(formProfile.company.address) }}
{{ form_row(formProfile.company.addressComp) }}
@@ -222,8 +222,8 @@
<h4 class="no-margin-top">
Contacter le talent
</h4>
Ex <p>
péditeur :
<p>
Expéditeur :
{{ app.user.firstname }}
{{ app.user.lastname }}
</p>
@@ -35,8 +35,8 @@ monolog:
# type: chromephp
# level: info
swiftmailer:
delivery_addresses: ['%delivery_addresses%']
# swiftmailer:
# delivery_addresses: ['%delivery_addresses%']
# Twig Configuration
twig:
View File
@@ -3,8 +3,8 @@ parameters:
onurb_yuml.extension: jpg
mailer_transport: smtp
mailer_host: mail.gandi.net
mailer_user: noreply@talentstube.com
mailer_password: zfYwOGBHweCQ8OI9ghF6lUyo
mailer_user: noreply@talentstube.io
mailer_password: eaV76D3AEhRbLxNVwfuz9
secret: 416157a2389cec970df2a46fa8ffd361b76516d1
database_host: tt-website.postgres.dev
database_port: '5432'
@@ -25,7 +25,7 @@ parameters:
media_photo_dir: '%kernel.root_dir%/../web/uploads/photos/'
elastic_host: tt-website.elasticsearch.dev
elastic_port: 9200
delivery_addresses: thomas.berrod@e-declic.com
delivery_addresses: l.laniau@talentstube.com
push_params:
push_notification_file_path: '%kernel.root_dir%/../web/push/'
push_network_config:
@@ -1,15 +1,17 @@
parameters:
mailer_transport: smtp
mailer_host: mail.gandi.net
mailer_user: noreply@talentstube.com
mailer_password: zfYwOGBHweCQ8OI9ghF6lUyo
# mailer_user: noreply@talentstube.io
# mailer_password: zfYwOGBHweCQ8OI9ghF6lUyo
mailer_user: noreply@talentstube.io
mailer_password: eaV76D3AEhRbLxNVwfuz9
secret: 416157a2389cec970df2a46fa8ffd361b76516d1
database_host: 'tt-website.postgres.preprod'
database_port: '5432'
database_name: database
database_user: user
database_password: 7C|Uk2B[.>"6{QO{
#database_password: b|RN:iR<g,TNMqM6
#database_password: 7C|Uk2B[.>"6{QO{
database_password: b|RN:iR<g,TNMqM6
#Mongo
mongodb_server: "mongodb://tt-website.mongo.preprod:27017"
#Prestashop
@@ -28,7 +30,7 @@ parameters:
elastic_host: tt-website.elasticsearch.preprod
elastic_port: 9200
delivery_addresses: thomas.berrod@e-declic.com
delivery_addresses: l.laniau@talentstube.com
push_params:
push_notification_file_path: '%kernel.root_dir%/../web/push/'
push_network_config:
@@ -1,8 +1,10 @@
parameters:
mailer_transport: smtp
mailer_host: mail.gandi.net
mailer_user: noreply@talentstube.com
mailer_password: zfYwOGBHweCQ8OI9ghF6lUyo
#mailer_user: noreply@talentstube.com
#mailer_password: zfYwOGBHweCQ8OI9ghF6lUyo
mailer_user: noreply@talentstube.io
mailer_password: eaV76D3AEhRbLxNVwfuz9
secret: 416157a2389cec970df2a46fa8ffd361b76516d1
database_host: 'tt-website.postgres.prod'
database_port: '5432'
@@ -27,15 +29,15 @@ parameters:
elastic_host: tt-website.elasticsearch.prod
elastic_port: 9200
delivery_addresses: thomas.berrod@e-declic.com
delivery_addresses: l.laniau@talentstube.com
push_params:
push_notification_file_path: '%kernel.root_dir%/../web/push/'
push_network_config:
public_key: '%push_params.public_key%'
private_key: g2Yimi3AK1ppvRqwikPyTTWcEEsTdRPxoBJ2Vi9bOWw
service_mail_subject: 'mailto:looping@talentstube.com'
ttl: 300
urgency: high
topic: Emploi
push_notification_file_path: '%kernel.root_dir%/../web/push/'
push_network_config:
public_key: '%push_params.public_key%'
private_key: g2Yimi3AK1ppvRqwikPyTTWcEEsTdRPxoBJ2Vi9bOWw
service_mail_subject: 'mailto:looping@talentstube.com'
ttl: 300
urgency: high
topic: Emploi
push_params.public_key: BG2lV673DvB67dzEwX9GKfds3sXaEdtZo2oWO1cO2xUdTJAFZ_rV_UrP1nHQz-F8LJNO9HxG0kmQRIb54JL1ZCA
@@ -55,9 +55,12 @@ class AdController extends Controller
$form = $this->createForm(AdType::class, $ad);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$type_contract = $form['contract_type']->getData();
$arrayExtra = $ad->getExtra();
$type_contract = $form['contract_type']->getData();
$arrayExtra['contract_type'] = $type_contract;
//LLAN Ajout de la notion de temps partiel, plein temps (5 oct 2020)
$temps_type = $form['temps_type']->getData();
$arrayExtra['temps_type'] = $temps_type;
$ad->setExtra($arrayExtra);
$adManager = $this->get('app.ad_manager');
$adManager->updateAd($ad);
@@ -105,8 +108,10 @@ class AdController extends Controller
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$type_contract = $form['contract_type']->getData();
$temps_type = $form['temps_type']->getData();
$arrayExtra = $ad->getExtra();
$arrayExtra['contract_type'] = $type_contract;
$arrayExtra['temps_type'] = $temps_type;
$ad->setExtra($arrayExtra);
$adManager = $this->get('app.ad_manager');
$adManager->updateAd($ad);
@@ -128,8 +133,10 @@ class AdController extends Controller
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$type_contract = $form['contract_type']->getData();
$temps_type = $form['temps_type']->getData();
$arrayExtra = $ad->getExtra();
$arrayExtra['contract_type'] = $type_contract;
$arrayExtra['temps_type'] = $temps_type;
$ad->setExtra($arrayExtra);
$adManager = $this->get('app.ad_manager');
$adManager->updateAd($ad);
@@ -209,7 +216,7 @@ class AdController extends Controller
$em->flush();
$em->clear();
return $this->redirectToRoute('company_ad_validation', array('id' => $ad->getId()));
return $this->redirectToRoute('company_ad', array('id' => $ad->getId()));
}
return $this->render('company/ad_edit_date.html.twig', [
@@ -108,19 +108,19 @@ class UserController extends Controller
}
\assert(!\is_null($user));
$company = $user->getCompany();
if ($company) {
$company->setPresentationVideo(null);
$em->persist($company);
$em->flush();
}
// $company = $user->getCompany();
// if ($company) {
// $company->setPresentationVideo(null);
// $em->persist($company);
// $em->flush();
// }
$this->deleteRelation($user);
$em->remove($user);
$em->flush();
if ($company) {
$em->remove($company);
$em->flush();
}
// if ($company) {
// $em->remove($company);
// $em->flush();
// }
// if ($company) {
// $em->remove($company);
@@ -376,8 +376,8 @@ class AnswerController extends Controller
));
$email = \Swift_Message::newInstance()
->setSubject('Candidature : ' . $title)
->setFrom($this->getParameter('mailer_user'), $user->getEmail())
->setReplyTo($user->getEmail())
->setFrom($this->getParameter('mailer_user'))
->setReplyTo($this->getParameter('mailer_user'))
->setTo($answer->getUser()->getEmail())
->setBody($htmlView, 'text/html')
->addPart($plainView, 'text/plain');
@@ -416,7 +416,8 @@ class AnswerController extends Controller
$spontaneous = $em->getRepository('AppBundle:Answer')->findBy(
array(
'company' => $user->getCompany()->getId(),
'status' => 'SENDED'
'status' => 'SENDED',
'ad' => null
),
array(
'uTime' => 'DESC'
@@ -20,7 +20,7 @@ use Symfony\Component\HttpFoundation\JsonResponse;
class AdController extends FOSRestController
{
/**
* @Rest\Get(path="/api/ads/{id}", name="api_ad_show", requirements={"id"="\d+"})
* @Rest\Get(path="/api/jobs/{id}", name="api_ad_show", requirements={"id"="\d+"})
* @Rest\View
*
*/
@@ -34,7 +34,7 @@ class AdController extends FOSRestController
}
/**
* @Rest\Get("/api/ads", name="api_ad_list")
* @Rest\Get("/api/jobs", name="api_ad_list")
*
* @Rest\QueryParam(
* name="keyword",
@@ -101,7 +101,7 @@ class AdController extends FOSRestController
}
/**
* @Rest\Post("/api/ads", name="api_ad_create")
* @Rest\Post("/api/jobs", name="api_ad_create")
* @Rest\View(StatusCode = 201)
* @ParamConverter("ad", converter="fos_rest.request_body")
*/
@@ -105,9 +105,13 @@ class AnswerController extends FOSRestController
$existCompanyAnswer = null;
// Verify if users have already posted answers
if (isset($adId) && $adId != null) {
$existAdAnswer = $em->getRepository('AppBundle:Answer')->findOneBy(array('user' => $usr, 'ad' => $adId));
$dateJour = new \DateTime('NOW');
// $existAdAnswer = $em->getRepository('AppBundle:Answer')->findOneBy(array('user' => $usr, 'ad' => $adId));
$existAdAnswer = $em->getRepository('AppBundle:Answer')->findExistAdAnswer($usr, $adId);
} else {
$existCompanyAnswer = $em->getRepository('AppBundle:Answer')->findOneBy(array('user' => $usr, 'company' => $companyId));
// $existCompanyAnswer = $em->getRepository('AppBundle:Answer')->findOneBy(array('user' => $usr, 'company' => $companyId));
$existCompanyAnswer = $em->getRepository('AppBundle:Answer')->findExistEntrepriseAnswer($usr, $companyId);
}
if (!isset($mediaId) || !isset($companyId) || $mediaId == null || $companyId == null) {
@@ -115,11 +119,11 @@ class AnswerController extends FOSRestController
$status = 'failure';
throw new ResourceValidationException($message, $status);
} else if ($existAdAnswer) {
$message = 'Vous avez déja postulé pour cette offre';
$message = "Tu as déjà postulé aujourdhui !";
$status = 'failure';
throw new ResourceValidationException($message, $status);
} else if ($existCompanyAnswer) {
$message = 'Vous avez déja postulé pour cette entreprise.';
$message = "Tu as déjà postulé aujourdhui pour cette entreprise !";
$status = 'failure';
throw new ResourceValidationException($message, $status);
} else {
@@ -144,13 +148,45 @@ class AnswerController extends FOSRestController
$em->persist($answer);
$em->flush();
$userCompany = $company->getUsers();
$usersCompany = $company->getUsers();
$mediaManager = $this->get('media_manager');
$mediaManager->getThumbnails($answer);
$thumbnailsArray = $answer->getVideo()->getThumbnails();
$img = $thumbnailsArray[0]['sizes'][3]['link'];
$title = $company->getBrandName();
/*$message = new Message('Candidature', 'Video', $usr, $userCompany{
0}, 'CONTACT_TALENT', $answer);
$message->setVideo($video);
$em->persist($message);
$em->flush();*/
$mailManager = $this->get('app.mail_manager');
foreach ($usersCompany as $user){
$link = $this->generateUrl('company_answer_show', array('id' => $answer->getId()), UrlGeneratorInterface::ABSOLUTE_URL);
$mailManager->sendMail(
'Candidature TalentsTube ',
'<div style="margin:0 auto;max-width:600px;background:#FFFFFF;"><table class="" cellpadding="0" cellspacing="0" style="width:100%;font-size:0px;background:#FFFFFF;" align="center"><tbody><tr><td style="text-align:center;vertical-align:top;font-size:0;padding:0px;"><!--[if mso]>
<table border="0" cellpadding="0" cellspacing="0"><tr><td style="width:600px;">
<![endif]--><div style="vertical-align:top;display:inline-block;font-size:13px;text-align:left;width:100%;" class="mj-column-per-100" aria-labelledby="mj-column-per-100"><table width="100%"><tbody><tr><td style="font-size:0;padding:0px;" align="center"><table cellpadding="0" cellspacing="0" style="border-collapse:collapse;border-spacing:0px;" align="center"><tbody><tr><td><img alt="" src="' . $img . '" style="border:none;display:block;outline:none;text-decoration:none;width:100%;max-width:600px;height:auto;" width="600" height="auto"></td></tr></tbody></table></td></tr></tbody></table></div><!--[if mso]>
</td></tr></table>
<![endif]--></td></tr></tbody></table></div>
<div style="margin:0 auto;max-width:600px;background:#FFFFFF;"><table class="" cellpadding="0" cellspacing="0" style="width:100%;font-size:0px;background:#FFFFFF;" align="center"><tbody><tr><td style="text-align:center;vertical-align:top;font-size:0;padding:0px;"><!--[if mso]>
<table border="0" cellpadding="0" cellspacing="0"><tr><td style="width:600px;">
<![endif]--><div style="vertical-align:top;display:inline-block;font-size:13px;text-align:left;width:100%;" class="mj-column-per-100" aria-labelledby="mj-column-per-100"><table width="100%"><tbody><tr><td style="font-size:0;padding:20px 35px 20px 35px;" align="left"><div class="mj-content" style="cursor:auto;color:#534F4F;font-family:Trebuchet,Helvetica,sans-serif;font-size:14px;line-height:22px;"><p>Bonjour ' . $user->getLastname() . ' ' . $user->getFirstname() . ',</p>
<p>Le talent ' . $answer->getUser()->getFirstname() . ' ' . $answer->getUser()->getLastname() . ' a répondu à votre annonce ' . $title . '.</p></div></td></tr></tbody></table></div><!--[if mso]>
</td></tr></table>
<![endif]--></td></tr></tbody></table></div>
<div style="margin:0 auto;max-width:600px;background:#FFFFFF;"><table class="" cellpadding="0" cellspacing="0" style="width:100%;font-size:0px;background:#FFFFFF;" align="center"><tbody><tr><td style="text-align:center;vertical-align:top;font-size:0;padding:0px 0px 40px 0px;"><!--[if mso]>
<table border="0" cellpadding="0" cellspacing="0"><tr><td style="width:600px;">
<![endif]--><div style="vertical-align:top;display:inline-block;font-size:13px;text-align:left;width:100%;" class="mj-column-per-100" aria-labelledby="mj-column-per-100"><table width="100%"><tbody><tr><td style="font-size:0;padding:15px 30px;" align="center"><table cellpadding="0" cellspacing="0" style="border:none;border-radius:30px;" align="center"><tbody><tr><td style="background:#1689FB;border-radius:30px;color:#FFFFFF;cursor:auto;" align="center" valign="middle" bgcolor="#1689FB"><a class="mj-content" href="' . $link . '" style="display:inline-block;text-decoration:none;background:#1689FB;border:1px solid #1689FB;border-radius:30px;color:#FFFFFF;font-family:Trebuchet,Helvetica,sans-serif;font-size:14px;font-weight:normal;padding:15px 30px;" target="_blank">Découvrir le talent</a></td></tr></tbody></table></td></tr></tbody></table></div><!--[if mso]>
</td></tr></table>
<![endif]--></td></tr></tbody></table></div>',
$user,
'contact_default'
);
}
$status = array('status' => "success", "idAnswer" => $answer->getId()/*, "idMessage" => $message->getId()*/);
}
} else {
@@ -334,6 +370,49 @@ class AnswerController extends FOSRestController
$em->persist($message);
$em->flush();
$usersCompany = $existAnswer->getCompany()->getUsers();
$mediaManager = $this->get('media_manager');
$mediaManager->getThumbnails($existAnswer);
$thumbnailsArray = $existAnswer->getVideo()->getThumbnails();
$img = $thumbnailsArray[0]['sizes'][3]['link'];
$title = $existAnswer->getCompany()->getBrandName();
/*$message = new Message('Candidature', 'Video', $usr, $userCompany{
0}, 'CONTACT_TALENT', $answer);
$message->setVideo($video);
$em->persist($message);
$em->flush();*/
$mailManager = $this->get('app.mail_manager');
foreach ($usersCompany as $user){
$link = $this->generateUrl('company_answer_show', array('id' => $existAnswer->getId()), UrlGeneratorInterface::ABSOLUTE_URL);
$mailManager->sendMail(
'Message sur la plateforme Talents Tube ',
'<div style="margin:0 auto;max-width:600px;background:#FFFFFF;"><table class="" cellpadding="0" cellspacing="0" style="width:100%;font-size:0px;background:#FFFFFF;" align="center"><tbody><tr><td style="text-align:center;vertical-align:top;font-size:0;padding:0px;"><!--[if mso]>
<table border="0" cellpadding="0" cellspacing="0"><tr><td style="width:600px;">
<![endif]--><div style="vertical-align:top;display:inline-block;font-size:13px;text-align:left;width:100%;" class="mj-column-per-100" aria-labelledby="mj-column-per-100"><table width="100%"><tbody><tr><td style="font-size:0;padding:0px;" align="center"><table cellpadding="0" cellspacing="0" style="border-collapse:collapse;border-spacing:0px;" align="center"><tbody><tr><td><img alt="" src="' . $img . '" style="border:none;display:block;outline:none;text-decoration:none;width:100%;max-width:600px;height:auto;" width="600" height="auto"></td></tr></tbody></table></td></tr></tbody></table></div><!--[if mso]>
</td></tr></table>
<![endif]--></td></tr></tbody></table></div>
<div style="margin:0 auto;max-width:600px;background:#FFFFFF;"><table class="" cellpadding="0" cellspacing="0" style="width:100%;font-size:0px;background:#FFFFFF;" align="center"><tbody><tr><td style="text-align:center;vertical-align:top;font-size:0;padding:0px;"><!--[if mso]>
<table border="0" cellpadding="0" cellspacing="0"><tr><td style="width:600px;">
<![endif]--><div style="vertical-align:top;display:inline-block;font-size:13px;text-align:left;width:100%;" class="mj-column-per-100" aria-labelledby="mj-column-per-100"><table width="100%"><tbody><tr><td style="font-size:0;padding:20px 35px 20px 35px;" align="left"><div class="mj-content" style="cursor:auto;color:#534F4F;font-family:Trebuchet,Helvetica,sans-serif;font-size:14px;line-height:22px;"><p>Bonjour ' . $user->getLastname() . ' ' . $user->getFirstname() . ',</p>
<p>Le talent ' . $existAnswer->getUser()->getFirstname() . ' ' . $existAnswer->getUser()->getLastname() . ' a laissé un message à votre annonce ' . $title . '.</p></div></td></tr></tbody></table></div><!--[if mso]>
</td></tr></table>
<![endif]--></td></tr></tbody></table></div>
<div style="margin:0 auto;max-width:600px;background:#FFFFFF;"><table class="" cellpadding="0" cellspacing="0" style="width:100%;font-size:0px;background:#FFFFFF;" align="center"><tbody><tr><td style="text-align:center;vertical-align:top;font-size:0;padding:0px 0px 40px 0px;"><!--[if mso]>
<table border="0" cellpadding="0" cellspacing="0"><tr><td style="width:600px;">
<![endif]--><div style="vertical-align:top;display:inline-block;font-size:13px;text-align:left;width:100%;" class="mj-column-per-100" aria-labelledby="mj-column-per-100"><table width="100%"><tbody><tr><td style="font-size:0;padding:15px 30px;" align="center"><table cellpadding="0" cellspacing="0" style="border:none;border-radius:30px;" align="center"><tbody><tr><td style="background:#1689FB;border-radius:30px;color:#FFFFFF;cursor:auto;" align="center" valign="middle" bgcolor="#1689FB"><a class="mj-content" href="' . $link . '" style="display:inline-block;text-decoration:none;background:#1689FB;border:1px solid #1689FB;border-radius:30px;color:#FFFFFF;font-family:Trebuchet,Helvetica,sans-serif;font-size:14px;font-weight:normal;padding:15px 30px;" target="_blank">Lire le message</a></td></tr></tbody></table></td></tr></tbody></table></div><!--[if mso]>
</td></tr></table>
<![endif]--></td></tr></tbody></table></div>',
$user,
'contact_default'
);
}
$status = array('status' => "success");
return new JsonResponse($status);
}
@@ -365,4 +444,4 @@ class AnswerController extends FOSRestController
return new JsonResponse($data, 200, [], true);
}
}
}
@@ -17,6 +17,7 @@ use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
use JMS\Serializer\SerializationContext;
use Symfony\Component\HttpFoundation\JsonResponse;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Symfony\Component\HttpFoundation\Request;
class CompanyController extends FOSRestController
{
@@ -30,6 +31,285 @@ class CompanyController extends FOSRestController
$data = $this->get('jms_serializer')->serialize($company, 'json', SerializationContext::create()->setGroups(array('company_detail')));
return new JsonResponse($data, 200, [], true);
}
public function getToken(){
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => "https://entreprise.pole-emploi.fr/connexion/oauth2/access_token",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => "realm=/partenaire&grant_type=client_credentials&client_id=PAR_talentstube_35a96821a2f4a981a21a387dd590041617a42cb7755960fe7b6c68e617136b92&client_secret=de3dff58ab5adab6ab265753ed0f7d373ab764aea7c4b2b9de4a7744467503cc&scope=api_romev1 application_PAR_talentstube_35a96821a2f4a981a21a387dd590041617a42cb7755960fe7b6c68e617136b92 nomenclatureRome",
CURLOPT_HTTPHEADER => array(
"cache-control: no-cache",
"content-type: application/x-www-form-urlencoded"
),
));
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
$token = "";
if (!$err)
{
$obj = json_decode($response);
$token = $obj->access_token;
}
return $token;
}
/**
* @Rest\Get(path="/api/getCompetences", name="api_getCompetences")
* @Rest\View
* Récupérer des compétences à partir d'un libellé
*/
public function getCompetencesAction(Request $request)
{
//APPEL de l'api Pole emploi pour recuperer Token
$q=$request->query->get('q');
//echo "requete".$q;
$token = $this->getToken();
//$token = "9GUOIgLwcpSYDuk6lA2rMKzuPRo._SreJAZX2RoBuYBYH25Yhg_Lhgw";
$response =null;
if($q){
$curl = curl_init();
curl_setopt($curl, CURLOPT_HTTPHEADER, array(
'Content-Type: application/json',
'Accept : application/json',
'Authorization: Bearer ' . $token
));
curl_setopt_array($curl, array(
CURLOPT_URL => "https://api.emploi-store.fr/partenaire/rome/v1/competence?q=".$q,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
));
$response = curl_exec($curl);
$err = curl_error($curl);
if (!$err)
{
}
curl_close($curl);
}
// $arr = array('a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5);
// $data = json_encode($arr);
return new JsonResponse($response, 200, [], true);
}
/**
* @Rest\Get(path="/api/getAppelationsMetier", name="api_getAppelationsMetier")
* @Rest\View
* Récupérer des appelations à partir d'un métier (code ROME)
*/
public function getAppelationsMetierAction(Request $request)
{
//APPEL de l'api Pole emploi pour recuperer Token
$q=$request->query->get('q');
//echo "requete".$q;
$token = $this->getToken();
$response =null;
if($q){
$curl = curl_init();
curl_setopt($curl, CURLOPT_HTTPHEADER, array(
'Content-Type: application/json',
'Accept : application/json',
'Authorization: Bearer ' . $token
));
curl_setopt_array($curl, array(
CURLOPT_URL => "https://api.emploi-store.fr/partenaire/rome/v1/metier/".$q."/appellation",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
));
$response = curl_exec($curl);
$err = curl_error($curl);
if (!$err)
{
}
curl_close($curl);
}
return new JsonResponse($response, 200, [], true);
}
/**
* @Rest\Get(path="/api/getAppelationsLibelle", name="api_getAppelationsLibelle")
* @Rest\View
* Récupérer des appelations à partir d'un libellé
*/
public function getAppelationsLibelleAction(Request $request)
{
//APPEL de l'api Pole emploi pour recuperer Token
$q=$request->query->get('q');
//echo "requete".$q;
$token = $this->getToken();
$response =null;
if($q){
$curl = curl_init();
curl_setopt($curl, CURLOPT_HTTPHEADER, array(
'Content-Type: application/json',
'Accept : application/json',
'Authorization: Bearer ' . $token
));
curl_setopt_array($curl, array(
CURLOPT_URL => "https://api.emploi-store.fr/partenaire/rome/v1/appellation?q=".$q,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
));
$response = curl_exec($curl);
$err = curl_error($curl);
if (!$err)
{
}
curl_close($curl);
}
return new JsonResponse($response, 200, [], true);
}
/**
* @Rest\Get(path="/api/getDetailAppelation", name="api_getDetailAppelation")
* @Rest\View
* Récupérer le détail d'une appelation
*/
public function getDetailAppelationAction(Request $request)
{
//APPEL de l'api Pole emploi pour recuperer Token
$q=$request->query->get('q');
//echo "requete".$q;
$token = $this->getToken();
$response =null;
if($q){
$curl = curl_init();
curl_setopt($curl, CURLOPT_HTTPHEADER, array(
'Content-Type: application/json',
'Accept : application/json',
'Authorization: Bearer ' . $token
));
curl_setopt_array($curl, array(
CURLOPT_URL => "https://api.emploi-store.fr/partenaire/rome/v1/appellation/".$q,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
));
$response = curl_exec($curl);
$err = curl_error($curl);
if (!$err)
{
}
curl_close($curl);
}
return new JsonResponse($response, 200, [], true);
}
/**
* @Rest\Get(path="/api/getMetiers", name="api_getMetiers")
* @Rest\View
*/
public function getMetiersAction(Request $request)
{
//APPEL de l'api Pole emploi pour recuperer Token
$q=$request->query->get('q');
//echo "requete".$q;
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => "https://entreprise.pole-emploi.fr/connexion/oauth2/access_token",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => "realm=/partenaire&grant_type=client_credentials&client_id=PAR_talentstube_35a96821a2f4a981a21a387dd590041617a42cb7755960fe7b6c68e617136b92&client_secret=de3dff58ab5adab6ab265753ed0f7d373ab764aea7c4b2b9de4a7744467503cc&scope=api_romev1 application_PAR_talentstube_35a96821a2f4a981a21a387dd590041617a42cb7755960fe7b6c68e617136b92 nomenclatureRome",
CURLOPT_HTTPHEADER => array(
"cache-control: no-cache",
"content-type: application/x-www-form-urlencoded"
),
));
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
$token = "";
if (!$err)
{
$obj = json_decode($response);
$token = $obj->access_token;
// echo $token;
}
$response =null;
if($q){
$curl = curl_init();
curl_setopt($curl, CURLOPT_HTTPHEADER, array(
'Content-Type: application/json',
'Authorization: Bearer ' . $token
));
curl_setopt_array($curl, array(
CURLOPT_URL => "https://api.emploi-store.fr/partenaire/rome/v1/competence?q=".$q,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
));
$response = curl_exec($curl);
$err = curl_error($curl);
if (!$err)
{
}
curl_close($curl);
}
$arr = array('a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5);
$data = json_encode($arr);
return new JsonResponse($response, 200, [], true);
}
/**
* @Rest\Get("/api/companies", name="api_company_list")
@@ -16,6 +16,7 @@ use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Session\Session;
class CompanyController extends Controller
{
@@ -111,20 +112,20 @@ class CompanyController extends Controller
);
}
$formFactory = $this->container->get('fos_user.change_password.form.factory');
$formPw = $formFactory->createForm();
$formPw->setData($user);
$formPw->handleRequest($request);
if ($formPw->isSubmitted() && $formPw->isValid()) {
$userManager->updateUser($user);
$this->addFlash(
'notice',
$this->get('translator')->trans('company.account.save.title')
);
}
// $formFactory = $this->container->get('fos_user.change_password.form.factory');
// $formPw = $formFactory->createForm();
// $formPw->setData($user);
// $formPw->handleRequest($request);
// if ($formPw->isSubmitted() && $formPw->isValid()) {
// $userManager->updateUser($user);
// $this->addFlash(
// 'notice',
// $this->get('translator')->trans('company.account.save.title')
// );
// }
return $this->render('company/my_account.html.twig', [
'form' => $form->createView(),
'formPw' => $formPw->createView(),
// 'formPw' => $formPw->createView(),
]);
}
@@ -164,6 +165,7 @@ class CompanyController extends Controller
$userManager = $this->get('fos_user.user_manager');
$form = $this->createForm(UserTypeCreate::class, $user);
$form->handleRequest($request);
$error="";
if ($form->isSubmitted() && $form->isValid()) {
$user->setFirstname($form["firstname"]->getData());
@@ -173,12 +175,78 @@ class CompanyController extends Controller
$user->setCompany($company);
$user->setEnabled(true);
$user->setRoles(array('ROLE_COMPANY'));
$em = $this->getDoctrine()->getManager();
//TRY catche
try {
//verifier si un user n'existe pas avec le meme mail
$verifUser = $em->getRepository('AppBundle:User')->findBy(array('email' => $form["email"]->getData()));
if(!$verifUser){
$userManager->updateUser($user);
//US 422 : Envoi d'email
$session = new Session();
$session->getFlashBag()->add('popup_answer_already_send', false);
// $mailManager = $this->get('app.mail_manager');
// $mailManager->sendMail(
// 'Candidature TalentsTube ',
// '<div style="margin:0 auto;max-width:600px;background:#FFFFFF;"><table class="" cellpadding="0" cellspacing="0" style="width:100%;font-size:0px;background:#FFFFFF;" align="center"><tbody><tr><td style="text-align:center;vertical-align:top;font-size:0;padding:0px;"><!--[if mso]>
// <table border="0" cellpadding="0" cellspacing="0"><tr><td style="width:600px;">
// <![endif]--><div style="vertical-align:top;display:inline-block;font-size:13px;text-align:left;width:100%;" class="mj-column-per-100" aria-labelledby="mj-column-per-100"><table width="100%"><tbody><tr><td style="font-size:0;padding:0px;" align="center"><table cellpadding="0" cellspacing="0" style="border-collapse:collapse;border-spacing:0px;" align="center"><tbody><tr><td><img alt="" src="" style="border:none;display:block;outline:none;text-decoration:none;width:100%;max-width:600px;height:auto;" width="600" height="auto"></td></tr></tbody></table></td></tr></tbody></table></div><!--[if mso]>
// </td></tr></table>
// <![endif]--></td></tr></tbody></table></div>
$userManager->updateUser($user);
return $this->redirectToRoute('users');
// <div style="margin:0 auto;max-width:600px;background:#FFFFFF;"><table class="" cellpadding="0" cellspacing="0" style="width:100%;font-size:0px;background:#FFFFFF;" align="center"><tbody><tr><td style="text-align:center;vertical-align:top;font-size:0;padding:0px;"><!--[if mso]>
// <table border="0" cellpadding="0" cellspacing="0"><tr><td style="width:600px;">
// <![endif]--><div style="vertical-align:top;display:inline-block;font-size:13px;text-align:left;width:100%;" class="mj-column-per-100" aria-labelledby="mj-column-per-100"><table width="100%"><tbody><tr><td style="font-size:0;padding:20px 35px 20px 35px;" align="left"><div class="mj-content" style="cursor:auto;color:#534F4F;font-family:Trebuchet,Helvetica,sans-serif;font-size:14px;line-height:22px;"><p>Bonjour ,</p>
// <p>Le talent a répondu à votre annonce .</p></div></td></tr></tbody></table></div><!--[if mso]>
// </td></tr></table>
// <![endif]--></td></tr></tbody></table></div>
// <div style="margin:0 auto;max-width:600px;background:#FFFFFF;"><table class="" cellpadding="0" cellspacing="0" style="width:100%;font-size:0px;background:#FFFFFF;" align="center"><tbody><tr><td style="text-align:center;vertical-align:top;font-size:0;padding:0px 0px 40px 0px;"><!--[if mso]>
// <table border="0" cellpadding="0" cellspacing="0"><tr><td style="width:600px;">
// <![endif]--><div style="vertical-align:top;display:inline-block;font-size:13px;text-align:left;width:100%;" class="mj-column-per-100" aria-labelledby="mj-column-per-100"><table width="100%"><tbody><tr><td style="font-size:0;padding:15px 30px;" align="center"><table cellpadding="0" cellspacing="0" style="border:none;border-radius:30px;" align="center"><tbody><tr><td style="background:#1689FB;border-radius:30px;color:#FFFFFF;cursor:auto;" align="center" valign="middle" bgcolor="#1689FB"><a class="mj-content" href="" style="display:inline-block;text-decoration:none;background:#1689FB;border:1px solid #1689FB;border-radius:30px;color:#FFFFFF;font-family:Trebuchet,Helvetica,sans-serif;font-size:14px;font-weight:normal;padding:15px 30px;" target="_blank">Découvrir le talent</a></td></tr></tbody></table></td></tr></tbody></table></div><!--[if mso]>
// </td></tr></table>
// <![endif]--></td></tr></tbody></table></div>',
// $user,
// 'contact_default'
// );
$message=$company->getBrandName()." vous invite à rejoindre la plateforme de recrutement vidéo Talents Tube.<br/>
Votre identifiant : ".$user->getEmail()."<br/>
Votre mot de passe : ".$form["password"]->getData()."<br/>
(Vous pourrez réinitialiser votre mot de passe en cliquant <a href='https://recruteur.talentstube.com/resetting/request' target='_blank'>**ici**</a><br/>
<br/>
<a href='https://recruteur.talentstube.com' target='_blank'>[Rejoindre l'équipe]</a> <br/>";
$plainView = $this->renderView('email/contact_default.html.twig', array(
'message' => $message,
'type' => 'html'
));
$body ="";
$email = \Swift_Message::newInstance()
->setSubject("Rejoignez l'équipe ".$company->getBrandName()." sur Talents Tube." )
->setFrom($this->getParameter('mailer_user'))
->setReplyTo($this->getParameter('mailer_user'))
->setTo($user->getEmail())
->setBody($plainView, 'text/html')
// ->addPart($plainView, 'text/plain')
;
$retour = $this->get('mailer')->send($email);
//var_dump($mailManager);
return $this->redirectToRoute('users');
}else{
$error = "Un utilisateur existe déjà avec ce mail";
}
} catch (PDOException $pdoE) {
throw new PDOException("factoryCamps::update: ".$pdoE -> getMessage());
}
}
return $this->render('company/user_create.html.twig', array(
'form' => $form->createView(),
'error' => $error
));
}
@@ -308,4 +376,4 @@ class CompanyController extends Controller
'companyAds' => $companyAds,
]);
}
}
}
@@ -51,7 +51,8 @@ class DefaultController extends Controller
}
$form = $this->createForm(AdSearchType::class);
return $this->render(
'default/index.html.twig', [
'ads' => $ads,
@@ -110,6 +111,8 @@ class DefaultController extends Controller
$csrfToken = $params["csrfToken"];
$error = $params["error"];
$destination_login = "admin/dashboard";
//var_dump($mailManager);
return $this->render(
'defaultv2/accueil/index.html.twig', [
'last_username' => $usename,
@@ -252,6 +255,28 @@ class DefaultController extends Controller
);
}
/**
* @Route("/abonnement", name="abonnement")
*/
public function tarifsAction(Request $request)
{
$params = $this->getParams($request);
$usename = $params["lastUsername"];
$csrfToken = $params["csrfToken"];
$error = $params["error"];
$destination_login = "admin/dashboard";
return $this->render(
'defaultv2/tarifs/index.html.twig', [
'last_username' => $usename,
'csrf_token' => $csrfToken,
'error' => $error,
'destination_login' => $destination_login
]
);
}
/**
* @Route("/cgu", name="cgu")
*/
@@ -23,7 +23,7 @@ use Symfony\Component\HttpFoundation\Session\Session;
class MediaController extends Controller
{
/**
* @Route("/entreprise/me/videotheque", name="company_media")
* @Route("/entreprise/me/videotheque", name="company_marque")
*/
public function companyMediaAction(Request $request)
{
@@ -41,35 +41,7 @@ class MediaController extends Controller
$em->persist($media);
$em->flush();
return $this->redirectToRoute('company_media');
}
return $this->render('media/media_list.html.twig', array(
'form' => $form->createView(),
'medias' => $medias,
));
}
/**
* @Route("/entreprise/me/video-marque-employeur", name="company_marque")
*/
public function companyMarqueAction(Request $request)
{
$event = new UserEvent($this->getUser());
$this->get('event_dispatcher')->dispatch(PrestashopBridgeEvents::USER_PROD_UPDATE, $event);
$em = $this->getDoctrine()->getManager();
$medias = $em->getRepository('AppBundle:Media')->findBy(array('creator' => $this->getUser()));
$form = $this->createForm(MediaType::class);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$title = $form['title']->getData();
$idMedia = $form['media']->getData();
$media = $em->getRepository('AppBundle:Media')->findOneBy(array('id' => $idMedia, 'creator' => $this->getUser()));
$media->setTitle($title);
$em->persist($media);
$em->flush();
return $this->redirectToRoute('company_marque');
return $this->redirectToRoute('company_ad');
}
return $this->render('media/media_list.html.twig', array(
@@ -133,7 +105,7 @@ class MediaController extends Controller
/**
* @Route("/media/create/{id}", name="create_media")
* @Security("ad.getStatus() == 'DRAFT' or ad.getStatus() == 'TO_PUBLISH' or ad.getStatus() == 'DECLINED'")
* @Security("ad.getStatus() == 'DRAFT' or ad.getStatus() == 'DECLINED' or ad.getStatus() == 'TO_PUBLISH'")
*/
public function createMediaAction(Request $request, Ad $ad)
{
@@ -150,9 +122,6 @@ class MediaController extends Controller
->add('title', TextType::class, array(
'label' => 'Titre de la vidéo',
'required' => true,
'attr' => array(
'class' => 'form-control'
)
))
->getForm();
$form->handleRequest($request);
@@ -170,7 +139,6 @@ class MediaController extends Controller
$ad->setUnpublishedAt($unpublishedDate);
$em->persist($ad);
$em->flush();
//return $this->redirectToRoute('company_ad_step3', array('id' => $ad->getId()));
}
return $this->render('company/createMedia.html.twig', array(
@@ -210,13 +178,7 @@ class MediaController extends Controller
$mediaManager = $this->get('media_manager');
$message = $mediaManager->upload($ad, $uploadedFile, $ad->getCreator());
}
$em = $this->getDoctrine()->getManager();
$ad->setIsVerified(true);
$ad->setPrivate(false);
$ad->setPromoted(true);
$em->persist($ad);
dump($ad);
$em->flush();
return new JsonResponse($message);
}
@@ -321,7 +283,7 @@ class MediaController extends Controller
$user = $em->getRepository('AppBundle:User')->findOneBy(array('id' => $idUser));
$video = $em->getRepository('AppBundle:Media')->findOneBy(array('id' => $idVideo));
$company = $user->getCompany();
if ($user->hasRole('ROLE_TALENT') || $user->hasRole('ROLE_TERRITORY') || ($user->hasRole('ROLE_COMPANY') && $company->hasCompanyVideo())) {
if ($user->hasRole('ROLE_TALENT') || $user->hasRole('ROLE_TERRITORY') || ($user->hasRole('ROLE_COMPANY') )) {
$company->setPresentationVideo($video);
}
}
@@ -417,4 +379,4 @@ class MediaController extends Controller
return $res;
}
}
}
@@ -110,6 +110,38 @@ class Ad
*/
private $beneficiaire;
/**
* @var int
*
* @ORM\Column(name="appellationId", type="integer", nullable=true)
*
*/
private $appellationId;
/**
* @var string
*
* @ORM\Column(name="appellationLibelle", type="text", nullable=true)
*
*/
private $appellationLibelle;
/**
* @var string
*
* @ORM\Column(name="codeRome", type="text", nullable=true)
*
*/
private $codeRome;
/**
* @var array
*
* @ORM\Column(name="competences", type="json_document", nullable=true, options={"jsonb":true})
*
*/
private $competences;
/**
* @var \DateTime
*
@@ -117,12 +149,14 @@ class Ad
* @Groups({"ad_detail", "answer_detail"})
* @Assert\GreaterThanOrEqual("today", groups={"dates"})
*/
private $publishedAt;
/**
* @var \DateTime
*
* @ORM\Column(name="unpublished_at", type="datetime", nullable=true)
* @Groups({"ad_detail", "answer_detail"})
*/
private $unpublishedAt;
@@ -375,6 +409,24 @@ class Ad
return $contract_type;
}
/**
* @return array|null
*
* Search temps type in the extra field
*/
public function getTempstType()
{
$temps_type = null;
$extra = $this->extra;
if ($extra) {
if (array_key_exists('temps_type', $extra)) {
$temps_type = $extra['temps_type'];
}
}
return $temps_type;
}
/**
* @return array|null
*
@@ -646,6 +698,78 @@ class Ad
return $this->beneficiaire;
}
/**
* Set appellationId.
*
* @param int|null $appellationId
*
* @return Ad
*/
public function setAppellationId($appellationId = null)
{
$this->appellationId = $appellationId;
return $this;
}
/**
* Get appellationId.
*
* @return int|null
*/
public function getAppellationId()
{
return $this->appellationId;
}
/**
* Set appellationLibelle.
*
* @param string|null $appellationLibelle
*
* @return Ad
*/
public function setAppellationLibelle($appellationLibelle = null)
{
$this->appellationLibelle = $appellationLibelle;
return $this;
}
/**
* Get appellationLibelle.
*
* @return int|null
*/
public function getAppellationLibelle()
{
return $this->AppellationLibelle;
}
/**
* Set codeRome.
*
* @param string|null $codeRome
*
* @return Ad
*/
public function setCodeRome($codeRome = null)
{
$this->codeRome = $codeRome;
return $this;
}
/**
* Get codeRome.
*
* @return int|null
*/
public function getCodeRome()
{
return $this->codeRome;
}
/**
* Set publishedAt.
*
@@ -838,6 +962,31 @@ class Ad
return $this->extra;
}
/**
* Set competences.
*
* @param json_document|null $competences
*
* @return Ad
*/
public function setCompetences($competences = null)
{
$this->competences = $competences;
return $this;
}
/**
* Get competences.
*
* @return json_document|null
*/
public function getCompetences()
{
return $this->competences;
}
/**
* Set location.
*
@@ -178,6 +178,7 @@ class Company
/**
* @ORM\OneToMany(targetEntity="AppBundle\Entity\User", mappedBy="company", cascade={"persist"})
* @Groups({"company_detail", "company_list", "ad_detail"})
*/
private $users;
@@ -36,7 +36,7 @@ class User extends BaseUser
*
* @ORM\Column(name="firstname", type="string", length=255, nullable=true)
* @Expose
* @Groups({"answer_detail"})
* @Groups({"answer_detail", "company_detail", "ad_detail"})
*/
private $firstname;
@@ -45,7 +45,7 @@ class User extends BaseUser
*
* @ORM\Column(name="lastname", type="string", length=255, nullable=true)
* @Expose
* @Groups({"answer_detail"})
* @Groups({"answer_detail", "company_detail", "ad_detail"})
*/
private $lastname;
@@ -69,6 +69,7 @@ class User extends BaseUser
*
* @ORM\Column(name="gender", type="string", length=255, nullable=true)
* @Expose
* @Groups({"answer_detail", "company_detail"})
*/
private $gender;
@@ -29,9 +29,10 @@ class AdSearchType extends AbstractType
'CDI' => 'CDI',
'CDD' => 'CDD',
'Apprentissage' => 'Apprentissage',
'Professionnalisation' => 'Professionnalisation',
'Professionnalisation' => 'Contrat de professionnalisation',
'Stage' => 'Stage',
'Indépendant' => 'Indépendant'
'Indépendant' => 'Indépendant',
'Interim' => 'Interim'
)
))
->add('location_gmap', TextType::class, array(
@@ -20,10 +20,15 @@ class AdSoftType extends AbstractType
}
}
$contract_type = "";
$temps_type = "";
$extra = $options['data']->getExtra();
if ($extra != null) {
if(is_array($extra)){
$contract_type = $extra['contract_type'];
if (array_key_exists("temps_type",$extra)){
$temps_type = $extra['temps_type'];
}
}
}
@@ -40,7 +45,7 @@ class AdSoftType extends AbstractType
$builder
->add('location_gmap', TextType::class, array(
'mapped' => false,
'label' => 'Localisation de l\'annonce',
'label' => 'Localisation du poste',
'attr' => array(
'value' => $location_gmap,
'class' => 'form-control'
@@ -53,7 +58,7 @@ class AdSoftType extends AbstractType
)
))
->add('description', TextareaType::class, array(
'label' => 'Description de l\'annonce',
'label' => 'Description du poste',
'attr' => array(
'class' => 'materialize-textarea',
'placeholder' => 'Décrire votre annonce',
@@ -61,7 +66,7 @@ class AdSoftType extends AbstractType
)
))
->add('beneficiaire', TextType::class, array(
'label' => 'Organisation cliente ',
'label' => 'Organisation cliente (facultatif)',
'required' => false,
'attr' => array(
'placeholder' => 'Indiquer une organisation',
@@ -76,22 +81,37 @@ class AdSoftType extends AbstractType
'CDI' => 'CDI',
'CDD' => 'CDD',
'Apprentissage' => 'Apprentissage',
'Professionalisation' => 'Professionalisation',
'Contrat de professionnalisation' => 'professionnalisation',
'Stage' => 'Stage',
'Indépendant' => 'Indépendant'
'Indépendant' => 'Indépendant',
'Interim' => 'Interim'
),
'attr' => array(
'class' => 'form-control'
'class' => 'cs-select cs-skin-slide'
)
))
->add('temps_type', ChoiceType::class, array(
'mapped' => false,
'label' => 'Type d\'emploi',
'data' => $temps_type,
'choices' => array(
'Temps plein ' => 'FULL_TIME',
'Temps partiel ' => 'PART_TIME',
'Temps plein ou temps partiel' => 'MIX_TIME',
),
'attr' => array(
'class' => 'cs-select cs-skin-slide',
)
))
->add('status', ChoiceType::class, array(
'label' =>'Statut',
'choices' => array(
'Brouillon' => 'DRAFT',
'A publier' => 'TO_PUBLISH',
'A publier (Validation par Talents Tube)' => 'TO_PUBLISH',
),
'attr' => array(
'class' => 'form-control'
'class' => 'cs-select cs-skin-slide',
)
))
@@ -20,10 +20,12 @@ class AdType extends AbstractType
}
}
$contract_type = "";
$temps_type = "";
$extra = $options['data']->getExtra();
if ($extra != null) {
if(is_array($extra)){
$contract_type = $extra['contract_type'];
$temps_type = $extra['temps_type'];
}
}
@@ -46,14 +48,14 @@ class AdType extends AbstractType
)
))
->add('title', TextType::class, array(
'label' => 'Titre de l\'annonce',
'label' => 'Intitulé du poste',
'attr' => array(
'placeholder' => 'Indiquer un titre',
'class' => 'form-control'
)
))
->add('beneficiaire', TextType::class, array(
'label' => 'Organisation cliente ',
'label' => 'Organisation cliente (facultatif) ',
'required' => false,
'attr' => array(
'placeholder' => 'Indiquer une organisation',
@@ -62,7 +64,7 @@ class AdType extends AbstractType
))
->add('location_gmap', TextType::class, array(
'mapped' => false,
'label' => 'Localisation de l\'annonce',
'label' => 'Localisation du poste',
'attr' => array(
'value' => $location_gmap,
'class' => 'form-control'
@@ -72,7 +74,7 @@ class AdType extends AbstractType
'data' => $location,
))
->add('description', TextareaType::class, array(
'label' => 'Description de l\'annonce',
'label' => 'Description du poste',
'attr' => array(
'class' => 'materialize-textarea',
'placeholder' => 'Décrire votre annonce',
@@ -87,12 +89,28 @@ class AdType extends AbstractType
'CDI' => 'CDI',
'CDD' => 'CDD',
'Apprentissage' => 'Apprentissage',
'Professionalisation' => 'Professionalisation',
'Contrat de professionnalisation' => 'professionnalisation',
'Stage' => 'Stage',
'Indépendant' => 'Indépendant'
'Indépendant' => 'Indépendant',
'Interim' => 'Interim'
),
'attr' => array(
'class' => 'form-control'
'class' => 'cs-select cs-skin-slide',
)
))
->add('temps_type', ChoiceType::class, array(
'mapped' => false,
'label' => 'Type d\'emploi',
'data' => $temps_type,
'choices' => array(
'Temps plein ' => 'FULL_TIME',
'Temps partiel ' => 'PART_TIME',
'Temps plein ou temps partiel' => 'MIX_TIME',
),
'attr' => array(
'class' => 'cs-select cs-skin-slide',
)
))
->add('publicTag', TextType::class, array(
@@ -107,10 +125,10 @@ class AdType extends AbstractType
'label' =>'Statut',
'choices' => array(
'Brouillon' => 'DRAFT',
'A publier' => 'TO_PUBLISH',
'A publier (Validation par Talents Tube)' => 'TO_PUBLISH',
),
'attr' => array(
'class' => 'form-control'
'class' => 'cs-select cs-skin-slide',
)
));
@@ -39,7 +39,7 @@ class AdType extends AbstractType
)
))
->add('title', TextType::class, array(
'label' => 'Titre de l\'annonce',
'label' => 'Intitulé du poste',
'attr' => array(
'placeholder' => 'Indiquer un titre',
'class' => 'form-control'
@@ -47,7 +47,7 @@ class AdType extends AbstractType
))
->add('location_gmap', TextType::class, array(
'mapped' => false,
'label' => 'Localisation de l\'annonce',
'label' => 'Localisation du poste',
'attr' => array(
'value' => $location_gmap,
'class' => 'form-control'
@@ -60,7 +60,7 @@ class AdType extends AbstractType
)
))
->add('beneficiaire', TextType::class, array(
'label' => 'Organisation cliente ',
'label' => 'Organisation cliente (facultatif)',
'required' => false,
'attr' => array(
'placeholder' => 'Indiquer une organisation',
@@ -68,7 +68,7 @@ class AdType extends AbstractType
)
))
->add('description', TextareaType::class, array(
'label' => 'Description de l\'annonce',
'label' => 'Description du poste',
'attr' => array(
'placeholder' => 'Décrire votre annonce',
'class' => 'form-control'
@@ -85,7 +85,7 @@ class AdType extends AbstractType
'label' =>'Statut',
'choices' => array(
'Brouillon' => 'DRAFT',
'A publier' => 'TO_PUBLISH',
'A publier (Validation par Talents Tube)' => 'TO_PUBLISH',
'Validée' => 'VALIDATED',
'Publiée' => 'PUBLISHED',
'Fermée' => 'CLOSED',
@@ -48,15 +48,16 @@ class TalentProfileType extends AbstractType
'data-toggle'=>"datepicker"
)
))
->add('gender', ChoiceType::class, array(
'expanded' => true,
'multiple' => false,
'choices' => array(
'Femme' => 'female',
'Homme' => 'male',
),
'label' => 'Sexe'
));
// ->add('gender', ChoiceType::class, array(
// 'expanded' => true,
// 'multiple' => false,
// 'choices' => array(
// 'Femme' => 'female',
// 'Homme' => 'male',
// ),
// 'label' => 'Sexe'
// ))
;
$builder->add('company', TalentProfileAddressType::class);
}
@@ -46,18 +46,19 @@ class UserType extends AbstractType
'class' => 'calendar'
)
))*/
->add('gender', ChoiceType::class, array(
'expanded' => true,
'multiple' => false,
'choices' => array(
'Femme' => 'female',
'Homme' => 'male',
),
'label' => 'Sexe',
'attr' => array(
'class' => 'form-control'
)
));
// ->add('gender', ChoiceType::class, array(
// 'expanded' => true,
// 'multiple' => false,
// 'choices' => array(
// 'Femme' => 'female',
// 'Homme' => 'male',
// ),
// 'label' => 'Sexe',
// 'attr' => array(
// 'class' => 'form-control'
// )
// ))
;
}
public function configureOptions(OptionsResolver $resolver)
@@ -56,18 +56,19 @@ class UserTypeCreate extends AbstractType
)
))
->add('gender', ChoiceType::class, array(
'expanded' => true,
'multiple' => false,
'choices' => array(
'Femme' => 'female',
'Homme' => 'male',
),
'label' => 'Sexe',
'attr' => array(
'class' => 'form-control'
)
));
// ->add('gender', ChoiceType::class, array(
// 'expanded' => true,
// 'multiple' => false,
// 'choices' => array(
// 'Femme' => 'female',
// 'Homme' => 'male',
// ),
// 'label' => 'Sexe',
// 'attr' => array(
// 'class' => 'form-control'
// )
// ))
;
if($user && (!$user->getEmail() || $user->getEmail()=="") ){
$builder->add('password', null, array(
'label' => 'Mot de passe',
@@ -46,6 +46,53 @@ class AnswerRepository extends AbstractRepository
->getResult();
}
// Rechercher si le user a postulé dans l'heure a une annonce donnée
public function findExistAdAnswer($user, $addId)
{
$hier = date('Y-m-d H:i:s', time() - 3600 * 1);
$qb = $this
->createQueryBuilder('a')
->select(['a','ad'])
->where('a.user = :user')
->andWhere('ad.id = :id')
->andWhere('a.sendTime > :datecourant')
->setParameter('user', $user)
->setParameter('id', $addId)
->setParameter('datecourant', $hier)
// ->setParameter(':status', array('DRAFT','CONTACT_TALENT'))
->leftJoin('a.ad', 'ad')
// ->leftJoin('a.company', 'company')
;
return $qb
->getQuery()
->getResult();
}
// Rechercher si le user a postuler dans l'heure a une annonce d'une entreprise donnée
public function findExistEntrepriseAnswer($user, $entrepriseId)
{
$hier = date('Y-m-d', time() - 3600 * 1);
$qb = $this
->createQueryBuilder('a')
->select(['a','c'])
->where('a.user = :user')
->andWhere('c.id = :id')
->andWhere('a.sendTime > :datecourant')
->setParameter('user', $user)
->setParameter('id', $entrepriseId)
->setParameter('datecourant', $hier)
// ->setParameter(':status', array('DRAFT','CONTACT_TALENT'))
->leftJoin('a.company', 'c')
// ->leftJoin('a.company', 'company')
;
return $qb
->getQuery()
->getResult();
}
public function getAnswerByCompany($id)
{
$qb = $this
@@ -58,7 +58,7 @@ class MailManager
));
$email = \Swift_Message::newInstance()
->setSubject($subject)
->setFrom('noreply@talentstube.com')
->setFrom('noreply@talentstube.io')
->setTo($user->getEmail())
->setBody($htmlView, 'text/html')
->addPart($plainView, 'text/plain');
@@ -72,4 +72,41 @@ class MailManager
return $message;
}
/**
* @param $subject
* @param $message
* @param $user
* @param $templateName
* @return array
*/
public function sendMailSimple($subject, $message, $user, $templateName)
{
$htmlView = $this->twig->render('email/' . $templateName . '.html.twig', array(
'type' => 'html',
'message' => $message,
'user' => $user,
));
$plainView = $this->twig->render('email/' . $templateName . '_plain.html.twig', array(
'type' => 'plain',
'message' => $message,
'user' => $user,
));
$email = \Swift_Message::newInstance()
->setSubject($subject)
->setFrom('noreply@talentstube.io')
->setTo('c.leveque@talentstube.com')
->setBody($message, 'text/html')
;
if ($this->mailer->send($email)) {
// $spool = $this->mailer->getTransport()->getSpool();
// $spool->flushQueue($this->transport);
$message = array('success' => 200);
} else {
$message = array('success' => 500);
}
//var_dump($message);
return $message;
}
}
@@ -162,7 +162,7 @@ class MediaManager
$linkVimeo = $response['body']['link'];
}
//TODO : gerer le cas d'erreur
//COMENTER POUR TESTER LA PRE PROD
//COMENTER POUR TESTER LA PRE PROD
}
//SAVE MEDIA
@@ -15,6 +15,13 @@ use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use JMS\Serializer\Annotation\Type;
use JMS\Serializer\Annotation\ExclusionPolicy;
use JMS\Serializer\Annotation\Expose;
use Hateoas\Configuration\Annotation as Hateoas;
use JMS\Serializer\Annotation\Groups;
/**
* Storage agnostic user object.
*
@@ -41,6 +48,9 @@ abstract class User implements UserInterface, GroupableInterface
/**
* @var string
*
* @Expose
* @Groups({"answer_detail", "company_detail", "ad_detail"})
*/
protected $email;
+4 -1
View File
@@ -21215,14 +21215,17 @@ button:focus {
File for your custom SCSS style
------------------------------------*/
.statChiffre {
font-size: 4.5rem;
font-size: 4rem;
font-weight : 500;
color : #1E2327;
padding-left: 0px;
margin-left: -40px;
}
.statTexte {
font-size: 1.2rem;
font-weight: 200;
color: #1E2327;
margin-left: -40px;
}
/* Au niveau le plus haut du code */