Compare commits

...

53 Commits

Author SHA1 Message Date
llaniau 078a62e588 test laurent pour corentin 2021-03-17 13:12:30 +01:00
llaniau 73e709c6c9 Batch + envoi mail apres offre 2021-03-16 22:28:40 +01:00
llaniau ec71b87747 candidatures d'une offre 2021-03-15 19:45:07 +01:00
llaniau a5636bf2b5 Bug candidatures (sF v1 et web app) 2021-03-10 14:12:46 +01:00
llaniau c0e25f5d10 Bug liste candidatures dashboar tt et entreprise 2021-03-10 12:59:38 +01:00
llaniau fc860c32ad Bug presta 2021-03-10 12:23:37 +01:00
llaniau 69522b4836 Bug prestashop 2021-03-10 12:21:25 +01:00
llaniau 1aea17557e MEP V2.7.5 2021-03-10 11:33:09 +01:00
llaniau ab74dae813 MEP V2.7.5 2021-03-10 11:32:30 +01:00
llaniau c46f0c29a3 V2.7.5 2021-03-10 10:29:39 +01:00
llaniau 5b1d296817 Amélioration candidatures dashboard entre 2021-03-10 10:27:50 +01:00
llaniau 564ac42b40 Landing pages 2021-03-09 12:25:29 +01:00
llaniau 3dc5d247f4 landing page 2021-03-08 19:43:01 +01:00
llaniau c0e94bcf7a marque employeur, bug d'affichage 2021-02-24 17:16:54 +01:00
llaniau d9bb152863 Inscription - tel 2021-02-24 15:40:29 +01:00
llaniau 1e52338d37 V2.7.3 2021-02-24 14:06:51 +01:00
llaniau b701d07741 candidatures - retour de recette 2021-02-24 14:04:50 +01:00
llaniau bcd93dee2c Candidature - bugs recette 2021-02-23 18:52:31 +01:00
llaniau 7a54bbe673 Probleme de chemin pre prod 2021-02-23 16:37:48 +01:00
llaniau 47043ac6bc statut Answer 2021-02-23 16:06:20 +01:00
llaniau f094ee739e Candidature - note 2021-02-23 15:56:01 +01:00
llaniau bad5ad0d1c Candidature V1 2021-02-23 14:44:48 +01:00
llaniau 8701a4beb9 retour de recette et marque employeur 2021-02-22 18:01:50 +01:00
llaniau 9444700ab5 Param pre prod 2021-02-16 17:19:59 +01:00
llaniau 050ccb0ae1 Marque employeur 2021-02-16 17:14:27 +01:00
llaniau d40dc7add2 Parcours entreprise etape 2 2021-02-15 18:15:22 +01:00
llaniau 8fc9d69d80 Parcours entreprise 2021-02-11 20:56:44 +01:00
llaniau e8eb1c9692 MEP V2.6.2 2021-02-10 16:29:13 +01:00
llaniau d4b2b78553 Version V2.6.2 2021-02-10 15:16:40 +01:00
llaniau c0c1735e9d Landing Page offre emploi originale 2021-02-10 15:02:34 +01:00
llaniau b6d6a3f177 landing page 1 2021-02-09 00:43:18 +01:00
llaniau 4f185984f9 geoloc 2021-02-08 09:49:10 +01:00
llaniau 26e781c230 Optimisation referencement 2021-02-01 22:38:30 +01:00
llaniau b68e1c6050 Changement de template mailjet pour prod 2021-01-26 10:56:03 +01:00
llaniau ee98a19150 pacth mailjet 2021-01-26 10:19:34 +01:00
llaniau 0e512cb8a2 mailjet patch 2021-01-26 10:08:49 +01:00
llaniau 24a5ac8cbf nom du recruteur 2021-01-26 10:05:31 +01:00
llaniau 6920e8faa0 Patch prod V2.5.4.1 mailjet 2021-01-26 09:55:01 +01:00
llaniau 5aa8079b0a Lien vers annonce Dashboard TT 2021-01-25 18:01:30 +01:00
llaniau cc83f88458 Status sended 2021-01-25 17:57:07 +01:00
llaniau 4edfdfd187 Patch post MEP 2021-01-25 17:27:32 +01:00
llaniau 605834be03 sitemap 2021-01-24 12:40:28 +01:00
llaniau dca7bf9efe tri par statut candaidature dash tt 2021-01-23 21:03:19 +01:00
llaniau 99434105e3 Bug spammer 2021-01-23 20:33:39 +01:00
llaniau d018b73fc8 Stocker adid au moment de inscription 2021-01-22 17:10:32 +01:00
llaniau 10975021c3 Lien vers cv papier Dashboard TT 2021-01-22 10:05:21 +01:00
llaniau 2af32f2835 MEP V2.5.4 2021-01-21 14:46:35 +01:00
llaniau 2c41f2aa02 Video orpheline 2021-01-21 13:44:12 +01:00
llaniau ef50bfddff version V2.5.4 2021-01-20 18:17:29 +01:00
llaniau 029d86649a site map 2021-01-20 18:15:00 +01:00
llaniau 24becf66c3 version 2.5.2 2021-01-20 10:21:32 +01:00
llaniau 43d0852075 stat modif nouveau candidat 2021-01-20 09:00:22 +01:00
llaniau 81c548bd00 Statistiques 2021-01-19 16:10:39 +01:00
111 changed files with 8305 additions and 1923 deletions
@@ -196,11 +196,11 @@
</trans-unit>
<trans-unit id="profile.company.brandname">
<source>profile.company.brandname</source>
<target>Nom commercial</target>
<target>Nom de votre entreprise</target>
</trans-unit>
<trans-unit id="profile.company.businessname">
<source>profile.company.businessname</source>
<target>Raison social</target>
<target>Raison sociale</target>
</trans-unit>
<trans-unit id="profile.company.siren">
<source>profile.company.siren</source>
@@ -301,7 +301,11 @@
</trans-unit>
<trans-unit id="ad.company.list.title">
<source>ad.company.list.title</source>
<target>Intitulé de l'annonce</target>
<target>Intitulé de l'offre</target>
</trans-unit>
<trans-unit id="ad.company.list.location">
<source>ad.company.list.location</source>
<target>Localisation</target>
</trans-unit>
<trans-unit id="ad.company.list.answers">
<source>ad.company.list.answers</source>
@@ -315,6 +319,10 @@
<source>ad.company.list.actions</source>
<target>Actions</target>
</trans-unit>
<trans-unit id="ad.company.list.statut">
<source>ad.company.list.statut</source>
<target>Statut</target>
</trans-unit>
<trans-unit id="ad.company.list.status">
<source>ad.company.list.status</source>
<target>Statut</target>
@@ -367,6 +375,10 @@
<source>profile.talent.firstname</source>
<target>Prénom</target>
</trans-unit>
<trans-unit id="profile.talent.video">
<source>profile.talent.video</source>
<target>Vidéo</target>
</trans-unit>
<trans-unit id="profile.talent.lastname">
<source>profile.talent.lastname</source>
<target>Nom</target>
@@ -31,7 +31,6 @@
{{ form_row(form.location_gmap) }}
{{ form_row(form.beneficiaire) }}
{{ form_row(form.description) }}
{{ form_row(form.publicTag) }}
</div>
</div>
@@ -1,30 +1,35 @@
{% extends 'admin/base_admin.html.twig' %}
{% block js %}
{# <link rel="stylesheet" href="//cdn.datatables.net/1.10.16/css/jquery.dataTables.min.css">
{# <link rel="stylesheet" href="//cdn.datatables.net/1.10.16/css/jquery.dataTables.min.css">
<link rel="stylesheet" href="https://cdn.datatables.net/buttons/1.4.1/css/buttons.dataTables.min.css"> #}
<link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/1.10.22/css/jquery.dataTables.min.css">
<link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/buttons/1.6.4/css/buttons.dataTables.min.css">
{# <script type="text/javascript" language="javascript" src="https://code.jquery.com/jquery-3.5.1.js"></script>
<link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/1.10.22/css/jquery.dataTables.min.css">
<link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/buttons/1.6.4/css/buttons.dataTables.min.css">
{# <script type="text/javascript" language="javascript" src="https://code.jquery.com/jquery-3.5.1.js"></script>
<script type="text/javascript" language="javascript" src="https://cdn.datatables.net/1.10.22/js/jquery.dataTables.min.js"></script>
<script type="text/javascript" language="javascript" src="https://cdn.datatables.net/buttons/1.6.4/js/dataTables.buttons.min.js"></script>
<script type="text/javascript" language="javascript" src="https://cdn.datatables.net/buttons/1.6.4/js/buttons.flash.min.js"></script> #}
<script type="text/javascript" src="https://code.jquery.com/jquery-3.5.1.js"></script>
<script type="text/javascript" src="https://cdn.datatables.net/1.10.22/js/jquery.dataTables.min.js"></script>
<script type="text/javascript" src="https://cdn.datatables.net/buttons/1.6.4/js/dataTables.buttons.min.js"></script>
<script type="text/javascript" language="javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jszip/3.1.3/jszip.min.js"></script>
<script type="text/javascript" language="javascript" src="https://cdnjs.cloudflare.com/ajax/libs/pdfmake/0.1.53/pdfmake.min.js"></script>
<script type="text/javascript" language="javascript" src="https://cdnjs.cloudflare.com/ajax/libs/pdfmake/0.1.53/vfs_fonts.js"></script>
<script type="text/javascript" language="javascript" src="https://cdn.datatables.net/buttons/1.6.4/js/buttons.html5.min.js"></script>
<script type="text/javascript" src="https://code.jquery.com/jquery-3.5.1.js"></script>
<script type="text/javascript" src="https://cdn.datatables.net/1.10.22/js/jquery.dataTables.min.js"></script>
<script type="text/javascript" src="https://cdn.datatables.net/buttons/1.6.4/js/dataTables.buttons.min.js"></script>
<script type="text/javascript" language="javascript"
src="https://cdnjs.cloudflare.com/ajax/libs/jszip/3.1.3/jszip.min.js"></script>
<script type="text/javascript" language="javascript"
src="https://cdnjs.cloudflare.com/ajax/libs/pdfmake/0.1.53/pdfmake.min.js"></script>
<script type="text/javascript" language="javascript"
src="https://cdnjs.cloudflare.com/ajax/libs/pdfmake/0.1.53/vfs_fonts.js"></script>
<script type="text/javascript" language="javascript"
src="https://cdn.datatables.net/buttons/1.6.4/js/buttons.html5.min.js"></script>
<script type="text/javascript" language="javascript" src="https://cdn.datatables.net/buttons/1.6.4/js/buttons.print.min.js"></script>
<script type="text/javascript" language="javascript"
src="https://cdn.datatables.net/buttons/1.6.4/js/buttons.print.min.js"></script>
{# <script type="text/javascript" src="https://cdn.datatables.net/buttons/1.6.4/js/buttons.flash.min.js"></script>
{# <script type="text/javascript" src="https://cdn.datatables.net/buttons/1.6.4/js/buttons.flash.min.js"></script>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jszip/3.1.3/jszip.min.js"></script>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/pdfmake/0.1.53/pdfmake.min.js"></script>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/pdfmake/0.1.53/vfs_fonts.js"></script>
@@ -35,13 +40,13 @@
{% endblock %}
{% block contentHeader %}
<h1>
Liste des Candidatures
</h1>
<ol class="breadcrumb">
<li><a href="{{ path('admin_dashboard') }}"><i class="fa fa-dashboard"></i> Dashboard</a></li>
<li class="active">Annonces</li>
</ol>
<h1>
Liste des Candidatures
</h1>
<ol class="breadcrumb">
<li><a href="{{ path('admin_dashboard') }}"><i class="fa fa-dashboard"></i> Dashboard</a></li>
<li class="active">Annonces</li>
</ol>
{% endblock %}
{% block content %}
@@ -50,46 +55,54 @@
.dataTables_filter {
display: none;
}
</style>
<div class="box box-primary">
<div class="box-body">
<table width="100%" class="table " style="background-color: #3c8dbc">
<thead>
<tr>
<th colspan="5" class="text-center">RECHERCHE</th>
</tr>
<div class="box box-primary">
<div class="box-body">
<table width="100%" class="table " style="background-color: #3c8dbc">
<thead>
<tr>
<th colspan="5" class="text-center">RECHERCHE</th>
</thead>
<tr>
<th width="4%"><input id='input1' type='text' class='form-control' placeholder='par id' style='font-family:Arial, FontAwesome; width:100%'/></th>
<th width="11%"><input id='input3' type='text' class='form-control' placeholder='par nom' style='font-family:Arial, FontAwesome; width:100%'/></th>
<th width="11%"><input id='input4' type='text' class='form-control' placeholder='par prénom' style='font-family:Arial, FontAwesome; width:100%'/></th>
<th width="25%"><input id='input5' type='text' class='form-control' placeholder='par entreprise / offre' style='font-family:Arial, FontAwesome; width:100%'/></th>
<th width="15%"><input id='input7' type='text' class='form-control' placeholder='par statut' style='font-family:Arial, FontAwesome; width:100%'/></th>
</tr>
</table>
<br/>
<table id="towns_dt_table" width="100%" class="table table-hover table-bordered">
{# Add a tfoot which will actually be used to place the individual search boxes #}
<tfoot>
<tr>
<th width="4%">id</th>
<th width="6%">Date d'envoi</th>
<th width="11%">Nom</th>
<th width="11%">Prénom</th>
<th width="25%">Annonce / entreprise</th>
<th width="28%">Vidéo</th>
<th width="15%">Statut</th>
<th width="10%">Actions</th>
</tr>
{# <tr>
</tr>
</thead>
<tr>
<th width="4%"><input id='input1' type='text' class='form-control' placeholder='par id'
style='font-family:Arial, FontAwesome; width:100%' /></th>
<th width="11%"><input id='input3' type='text' class='form-control' placeholder='par nom'
style='font-family:Arial, FontAwesome; width:100%' /></th>
<th width="11%"><input id='input4' type='text' class='form-control' placeholder='par prénom'
style='font-family:Arial, FontAwesome; width:100%' /></th>
<th width="25%"><input id='input5' type='text' class='form-control' placeholder='par entreprise / offre'
style='font-family:Arial, FontAwesome; width:100%' /></th>
<th width="15%">
<select id='input7'>
<option value="sended">Tous les statuts</option>
<option value="sended">Envoyé</option>
<option value="draft">Brouillon</option>
</select>
</th>
</tr>
</table>
<br />
<table id="towns_dt_table" width="100%" class="table table-hover table-bordered">
{# Add a tfoot which will actually be used to place the individual search boxes #}
<tfoot>
<tr>
<th width="4%">id</th>
<th width="6%">Date d'envoi</th>
<th width="11%">Nom</th>
<th width="11%">Prénom</th>
<th width="25%">Annonce / entreprise</th>
<th width="28%">Vidéo</th>
<th width="15%">Statut</th>
<th width="10%">Actions</th>
</tr>
{# <tr>
<th><input id='input1' type='text' class='form-control' placeholder='' style='font-family:Arial, FontAwesome; width:100%'/></th>
<th></th>
<th><input id='input3' type='text' class='form-control' placeholder='' style='font-family:Arial, FontAwesome; width:100%'/></th>
@@ -97,25 +110,25 @@
<th></th>
<th><input id='input5' type='text' class='form-control' placeholder='' style='font-family:Arial, FontAwesome; width:100%'/></th>
</tr> #}
</tfoot>
<thead>
<tr>
<th>Id</th>
<th>Date d'envoi</th>
<th>Nom</th>
<th>Prénom</th>
<th>Annonce / entreprise</th>
<th>Vidéo</th>
<th>Statut</th>
<th>Actions</th>
</tr>
</thead>
<tbody></tbody>
</table>
</tfoot>
<thead>
<tr>
<th>Id</th>
<th>Date d'envoi</th>
<th>Nom</th>
<th>Prénom</th>
<th>Annonce / entreprise</th>
<th>Vidéo</th>
<th>Statut</th>
<th>Actions</th>
</tr>
</thead>
<tbody></tbody>
</table>
{# <table id="answer_list_table" class="table table-hover table-bordered">
{# <table id="answer_list_table" class="table table-hover table-bordered">
<thead>
<tr>
<th class="col-xs-2">Date d'envoi</th>
@@ -164,118 +177,152 @@
{% endfor %}
</tbody>
</table> #}
</div>
</div>
</div>
</div>
{% endblock %}
{% block javascripts %}
<script>
$(document).ready(function(){
<script>
$(document).ready(function () {
// Add a text input to each footer cell
var pos = 1;
$('#towns_dt_table tfoot th').each( function () {
var title = $(this).text();
//$(this).html( "<input id='input" + pos + "' type='text' class='form-control' placeholder='' style='font-family:Arial, FontAwesome; width:100%'/>" );
// Add a text input to each footer cell
pos ++;
});
var table = $('#towns_dt_table').DataTable({
buttons: [
'copy', 'csv', 'excel', 'pdf', 'print'
],
"columnDefs": [
{ "name": "ad_id", "targets": 0 , "searchable": true, "orderable": true},
{ "name": "date_envoi", "targets": 1 , "searchable": true, "orderable": true},
{ "name": "nom", "targets": 2 , "searchable": true, "orderable": true},
{ "name": "prenom", "targets": 3 , "searchable": true, "orderable": true},
{ "name": "entreprise", "targets": 4, "searchable": true, "orderable": true },
{ "name": "video", "targets": 5 },
{ "name": "status", "targets": 6 , "searchable": true, "orderable": true},
{ "name": "actions", "targets": 7 },
],
"processing": true,
"serverSide": true,
"ajax": {
"url": '{{ path('alimenterCandidatures') }}',
"type": 'POST'
var table = $('#towns_dt_table').DataTable({
buttons: [
'copy', 'csv', 'excel', 'pdf', 'print'
],
"columnDefs": [{
"name": "ad_id",
"targets": 0,
"searchable": true,
"orderable": true
},
"paging" : true,
"info" : true,
"searching": true,
"bFilter":true,
"responsive": true,
"pageLength": 10,
"order": [[0, 'desc']],
"language": {
"url": "http://cdn.datatables.net/plug-ins/1.10.11/i18n/French.json"
{
"name": "date_envoi",
"targets": 1,
"searchable": true,
"orderable": true
},
});
{
"name": "nom",
"targets": 2,
"searchable": true,
"orderable": true
},
{
"name": "prenom",
"targets": 3,
"searchable": true,
"orderable": true
},
{
"name": "entreprise",
"targets": 4,
"searchable": true,
"orderable": true
},
{
"name": "video",
"targets": 5
},
{
"name": "status",
"targets": 6,
"searchable": true,
"orderable": true
},
{
"name": "actions",
"targets": 7
},
],
"processing": true,
"serverSide": true,
// Apply the search
pos = 1;
table.columns().every( function () {
var that = this;
$("#input"+pos).on( 'keyup change', function () {
if ( that.search() !== this.value )
{
that
.search( this.value )
.draw();
}
});
pos++;
});
$('#towns_dt_table_filter').hide();
"ajax": {
"url": '{{ path('alimenterCandidatures') }}',
"type": 'POST'
},
"paging": true,
"info": true,
"searching": true,
"bFilter": true,
"responsive": true,
"pageLength": 10,
"order": [
[0, 'desc']
],
"language": {
"url": "http://cdn.datatables.net/plug-ins/1.10.11/i18n/French.json"
},
});
function changerStatut(value, id){
var idAnswer = id;
var route = '/app_dev.php/admin/config/answer/' + idAnswer + '/status/' + value;
var select = $(this);
$.ajax({
type: "POST",
url: route,
dataType: "json",
success: function (msg) {
console.log("ok");
$("#status_"+id).text(value);
}
});
}
function verifierDelete(id){
console.log(id);
var r = confirm("Êtes vous sûr de supprimer cette candidature ?\nSupprimer cette candidature supprimera le média associé\n");
if (r == true) {
txt = "You pressed OK!";
location.href = "/app_dev.php/admin/config/answer/"+id+"/delete";
return true;
} else {
txt = "You pressed Cancel!";
// Apply the search
pos = 1;
table.columns().every(function () {
var that = this;
$("#input" + pos).on('keyup change', function () {
if (that.search() !== this.value) {
that
.search(this.value)
.draw();
}
});
pos++;
});
$('#towns_dt_table_filter').hide();
});
function changerStatut(value, id) {
var idAnswer = id;
var route = '/app_dev.php/admin/config/answer/' + idAnswer + '/status/' + value;
var select = $(this);
$.ajax({
type: "POST",
url: route,
dataType: "json",
success: function (msg) {
console.log("ok");
$("#status_" + id).text(value);
}
console.log(txt);
});
}
function verifierDelete(id) {
console.log(id);
var r = confirm(
"Êtes vous sûr de supprimer cette candidature ?\nSupprimer cette candidature supprimera le média associé\n"
);
if (r == true) {
txt = "You pressed OK!";
location.href = "/app_dev.php/admin/config/answer/" + id + "/delete";
return true;
} else {
txt = "You pressed Cancel!";
}
</script>
console.log(txt);
}
</script>
{% endblock %}
@@ -24,7 +24,7 @@
{% block css %}
{% endblock %}
<!--[if lt IE 9]>
<!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
<![endif]-->
@@ -62,7 +62,7 @@
<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
©2017-2021 Talents Tube
</p>
<p class="small no-margin pull-right sm-pull-reset">
Besoin d'aide ? 02 30 05 06 31
@@ -0,0 +1,104 @@
<!DOCTYPE html>
<html lang="fr">
<head>
<meta http-equiv="content-type" content="text/html;charset=UTF-8" />
<meta charset="utf-8" />
<title>Pages - Admin Dashboard UI Kit - Dashboard</title>
<meta name="viewport"
content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no, shrink-to-fit=no" />
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-touch-fullscreen" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="default">
<meta content="Meet pages - The simplest and fastest way to build web UI for your dashboard or app."
name="description" />
<meta content="Ace" name="author" />
<link href="{{ asset('dashboard/plugins/pace/pace-theme-flash.css') }}" rel="stylesheet" type="text/css" />
<link href="{{ asset('dashboard/plugins/bootstrap/css/bootstrap.min.css') }}" rel="stylesheet" type="text/css" />
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
<link href="{{ asset('dashboard/plugins/jquery-scrollbar/jquery.scrollbar.css') }}" rel="stylesheet" type="text/css"
media="screen" />
<link href="{{ asset('dashboard/plugins/select2/css/select2.min.css') }}" rel="stylesheet" type="text/css"
media="screen" />
<link href="{{ asset('dashboard/plugins/nvd3/nv.d3.min.css') }}" rel="stylesheet" type="text/css" media="screen" />
<link href="{{ asset('dashboard/plugins/mapplic/css/mapplic.css') }}" rel="stylesheet" type="text/css" />
<link href="{{ asset('dashboard/plugins/rickshaw/rickshaw.min.css') }}" rel="stylesheet" type="text/css" />
<link class="main-stylesheet" href="{{ asset('dashboard/pages/css/themes/corporate.css') }}" rel="stylesheet"
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>
<!-- END PAGE LEVEL JS -->
<script src="{{ asset('dashboard/plugins/jquery/jquery-3.2.1.min.js') }}" type="text/javascript"></script>
{# <script type="text/javascript" src="http://code.jquery.com/jquery-3.2.1.min.js"></script> #}
{% block javascriptSupl %}
{% endblock %}
<!-- END PAGE LEVEL JS -->
</head>
<body class="fixed-header dashboard menu-pin menu-behind">
{# {{ include('default/user_switch.html.twig') }} #}
{{ include('admin/navigation_gauche.html.twig')}} }}
<!-- START PAGE-CONTAINER -->
<div class="page-container ">
{{ include('admin/base_dashboard_header.html.twig') }}
<!-- START PAGE CONTENT WRAPPER -->
<div class="page-content-wrapper ">
<div class="content ">
{% 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-2021 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 %}
{% endblock %}
<!-- END PAGE LEVEL JS -->
<!-- END CORE TEMPLATE JS -->
<!-- BEGIN PAGE LEVEL JS -->
{% block javascriptsSecondaire %}
{% endblock %}
{% block javascriptsEnd %}
{% endblock %}
</body>
</html>
@@ -1,8 +1,7 @@
<!-- START HEADER -->
<div class="header ">
<!-- START MOBILE SIDEBAR TOGGLE -->
<a href="#" class="btn-link toggle-sidebar d-lg-none pg-icon btn-icon-link" data-toggle="sidebar">
menu</a>
<!-- END MOBILE SIDEBAR TOGGLE -->
<div class="">
<div class="brand inline m-l-10">
@@ -25,9 +24,7 @@
</div>
</div>
<!-- END User Info-->
<a href="#" class="header-icon m-l-5 sm-no-margin d-inline-block" data-toggle="quickview" data-toggle-element="#quickview">
<i class="pg-icon btn-icon-link">menu_add</i>
</a>
</div>
</div>
<!-- END HEADER -->
@@ -0,0 +1,34 @@
{% extends 'admin/base_admin.html.twig' %}
{% block contentHeader %}
<h1>
Pages
<small>Liste</small>
</h1>
<ol class="breadcrumb">
<li><a href="{{ path('admin_dashboard') }}"><i class="fa fa-dashboard"></i> Dashboard</a></li>
<li class="active">Batch candidatures</li>
</ol>
{% endblock %}
{% block content %}
<div class="box box-primary">
<div class="box-body">
<a href="{{ path('admin_batch_candidature_init') }}">
<button type="button" class="btn btn-lg btn-primary btn-cons btn-animated from-left" id="saveAdButton">
<span>Lancer le batch</span>
</button>
</a>
<b>A NE LANCER QU'UNE FOIS</b>
</div>
</div>
{% endblock %}
{% block javascripts %}
{% endblock %}
@@ -0,0 +1,34 @@
{% extends 'admin/base_admin.html.twig' %}
{% block contentHeader %}
<h1>
Pages
<small>Liste</small>
</h1>
<ol class="breadcrumb">
<li><a href="{{ path('admin_dashboard') }}"><i class="fa fa-dashboard"></i> Dashboard</a></li>
<li class="active">Batch sur les messages</li>
</ol>
{% endblock %}
{% block content %}
<div class="box box-primary">
<div class="box-body">
<a href="{{ path('admin_batch_message_comment') }}">
<button type="button" class="btn btn-lg btn-primary btn-cons btn-animated from-left" id="saveAdButton">
<span>Lancer le batch</span>
</button>
</a>
<b>A NE LANCER QU'UNE FOIS</b>
</div>
</div>
{% endblock %}
{% block javascripts %}
{% endblock %}
@@ -22,7 +22,8 @@
<th>ID</th>
<th>Titre</th>
<th>Utilisateur</th>
<th>Status</th>
<th>Annonce?</th>
<th>Date de réponse</th>
<th>action</th>
</tr>
</thead>
@@ -30,11 +31,21 @@
<tbody>
{% for m in medias %}
<tr>
<td>{{ m.id }}</td>
<td>{{ m.title }}</td>
<td>{{ m.creator.firstname }} {{ m.creator.lastname }}</td>
<td>{{ m.mediaid }}</td>
<td><a href="{{ chemin }}{{ m.original_url }}" target="_blank">{{ m.title }}</a></td>
<td>{{ m.firstname }} {{ m.lastname }} - ({{ m.email }}) </td>
<td>
<span class="label pull-right bg-orange">{{ m.status }}</span>
{% if m.answerid %}
{% if m.adtitle %}
({{ m.adtitle }})
{% else %}
({{ m.ctitle }})
{% endif %}
{% else %}
<b>Vidéo orpheline</b>
{% endif %}</td>
<td>
<span class="label pull-right bg-orange">{{ m.sendtime }}</span>
</td>
<td>
<a href="{{ path('admin_video_moderation',{'id':m.id}) }}">
@@ -67,9 +78,11 @@
{"targets": 0, "searchable": true, "orderable": true},
{"targets": 1, "searchable": true, "orderable": true},
{"targets": 2, "searchable": true, "orderable": true},
{"targets": 3, "searchable": true, "orderable": true, "className": "text-center"},
{"targets": 4, "searchable": false, "orderable": false, "className": "text-center"},
]
{"targets": 3, "searchable": true, "orderable": true},
{"targets": 4, "searchable": true, "orderable": true, "className": "text-center"},
{"targets": 5, "searchable": false, "orderable": false, "className": "text-center"},
],
"order": [[ 0, "desc" ]]
});
});
</script>
@@ -57,52 +57,25 @@
</span>
</span>
</li>
<li>
<a href="javascript:;"><span class="principal">Entreprise</span>
<span class=" arrow"></span></a>
<span class="icon-thumbnail">
<span class="material-icons">
business
</span>
</span>
<ul class="sub-menu">
<li class="">
<a href="{{ path('company_profile') }}">Profil de l'Entreprise</a>
<li class=" ">
<a href="{{ path('company_profile') }}">Profil de l'Entreprise</a>
<span class="icon-thumbnail">
<span class="material-icons">
store_mall_directory
</span>
</span>
</li>
<li class="">
<a href="{{ path('company_marque') }}">Vidéo marque employeur</a>
<span class="icon-thumbnail">
<span class="material-icons">
store_mall_directory
</span>
</span>
</li>
<li class="">
<a href="{{ path('users') }}">Utilisateurs</a>
<span class="icon-thumbnail">
<span class="material-icons">
group
</span>
</span>
</li>
{# <li class="">
<a href="{{ path('users') }}">Informations juridiques</a>
<span class="icon-thumbnail">
<span class="material-icons">
gavel
</span>
</span>
</li> #}
</ul>
</li>
<li class="">
<a href="{{ path('company_marque') }}">Marque employeur</a>
<span class="icon-thumbnail">
<span class="material-icons">
videocam
</span>
</span>
</li>
<li class="">
<a href="{{ path('company_ad') }}">
<span class="">Offres d'emploi</span>
@@ -123,9 +96,17 @@
</span>
</span>
</li>
<li class=" ">
<a href="{{ path('users') }}">Utilisateurs</a>
<span class="icon-thumbnail">
<span class="material-icons">
group
</span>
</span>
</li>
<li class="">
<a href="{{ path('company_my_account') }}">
<span class="">Mes paramètres</span>
<span class="">Paramètres</span>
</a>
<span class="icon-thumbnail">
<span class="material-icons">
@@ -133,12 +114,7 @@
</span>
</span>
</li>
<li class="">
<a href="mailto:contact@talentstube.com">
<span class="principal">Contacter Talents Tube</span>
</a>
<span class="icon-thumbnail"><i class="pg-icon">mail</i></span>
</li>
{% if is_granted('ROLE_PREVIOUS_ADMIN') %}
@@ -157,7 +133,19 @@
</small>
</li>
{% endif %}
{% else %}
<li class="">
<a href="/logout">
<span class="principal">Se déconnecter</span>
</a>
<span class="icon-thumbnail">
<span class="material-icons">
logout
</span>
</span>
</li>
{% endif %}
</ul>
@@ -73,6 +73,18 @@
<i class="fa fa-file-text-o" aria-hidden="true"></i><span>Pages</span>
</a>
</li>
<li class="treeview">
<a href="#"><i class="fa fa-file-video-o"></i> <span>Batchs</span>
<span class="pull-right-container">
<i class="fa fa-angle-left pull-right"></i>
</span>
</a>
<ul class="treeview-menu">
<li><a href="{{ path('admin_batch_message') }}">Basculer les anciens messages</a></li>
<li><a href="{{ path('admin_batch_candidatures') }}">Statuts des anciennes candidatures</a></li>
</ul>
</li>
<li class="treeview">
<a href="#"><i class="fa fa-users" aria-hidden="true"></i> <span>Utilisateurs</span>
<span class="pull-right-container">
@@ -21,6 +21,9 @@
<th class="col-md-2">Date de création</th>
<th>Prénom - Nom</th>
<th>Email</th>
<th>Dernière connexion</th>
<th>Validé</th>
<th>Annonce?</th>
<th class="col-md-1">Vidéos</th>
<th class="col-md-1">A la une</th>
<th>Action</th>
@@ -29,12 +32,34 @@
<tbody>
{% for talent in t if talent.MainUser %}
{% set user = talent.users|first %}
{% set adId = talent.description|split(':') %}
<tr>
<td data-order="{{ talent.cTime|date('U') }}">{{ talent.cTime|date('d/m/Y') }}</td>
<td>
{{ user.firstname }} {{ user.lastname }}
{{ user.firstname }} / {{ user.lastname }} - {% if talent.extra["phoneTalent"] is defined %} (Tel : {{ talent.extra["phoneTalent"] }}) {% endif %}
</td>
<td><a href="mailto:{{ user.email }}">{{ user.email }}</a></td>
<td>
{% if user.enabled == 1 %}
{{ user.lastLogin|date('d-m-Y h:m') }}
{% endif %}</td>
<td>
{% if user.enabled == 1 %}
oui
{% else %}
non
{% endif %}
</td>
<td> {% if adId|length > 1 %}
{% if user.medias|length > 0 %}
{% else %}
{% if adId[1] and adId[1] !="" %}
<a href="https://www.talentstube.com/Offre/{{ adId[1]|replace({' ': ''}) }}-{{ adId[1] }}" target="_blank">Lien vers l'annonce avant inscription</a>
{% endif %}
{% endif %}
{% endif %}
</td>
<td>
{% if user.medias|length > 0 %}
{{ user.medias|length }}
@@ -90,9 +115,12 @@
{"targets": 0, "searchable": true, "orderable": true},
{"targets": 1, "searchable": true, "orderable": true},
{"targets": 2, "searchable": true, "orderable": true},
{"targets": 3, "searchable": true, "orderable": true, "className": "text-center"},
{"targets": 4, "searchable": true, "orderable": true, "className": "text-center"},
{"targets": 5, "searchable": false, "orderable": false, "className": "text-center"},
{"targets": 3, "searchable": true, "orderable": true},
{"targets": 4, "searchable": true, "orderable": true},
{"targets": 5, "searchable": true, "orderable": true},
{"targets": 6, "searchable": true, "orderable": true, "className": "text-center"},
{"targets": 7, "searchable": true, "orderable": true, "className": "text-center"},
{"targets": 8, "searchable": false, "orderable": false, "className": "text-center"},
],
"order": [[0, "desc"]]
});
@@ -1,9 +1,12 @@
{% extends 'base.html.twig' %}
{% extends 'basev2.html.twig' %}
{% block metarobot %}<meta name="robots" content="noindex,follow">{% endblock %}
{% block metarobot %}
<meta name="robots" content="noindex,follow">
<link rel="canonical" href="https://www.talentstube.com/Offres" />
{% endblock %}
{% block content %}
{% if typeObject == 'Ad' %}
{# {% if typeObject == 'Ad' %}
{% set subtitle = 'Candidature à l\'offre d\'emploi:' %}
{% set title = object.title %}
{% set route = "answer_create_ad_step2" %}
@@ -11,20 +14,20 @@
{% set subtitle = 'Candidature pour l\'entreprise :' %}
{% set title = object.brandName %}
{% set route = "answer_create_company_step2" %}
{% endif %}
{% endif %} #}
<div class="fluid-container bg-grey-3">
<div class="container contentWrapper contentPage">
<div class="row">
<div class="col s12">
{# <div class="col s12">
<div class="col-content center-align m-t-20">
<strong>{{ subtitle }}</strong>
<h3 class="color-blue1 m-0 m-t-10">{{ title }}</h3>
</div>
</div>
</div> #}
</div>
<div class="row">
<div class="col s12 m6 ">
{# <div class="col s12 m6 ">
<div class="col-content p-15 bg-blue-1 center-align whiteColor z-depth-2 choice-answer-item">
<img src="{{ asset('img/img_popupcv/webcam_cv_video.svg')}}">
<h3>J'enregistre mon CV vidéo !</h3>
@@ -40,13 +43,13 @@
<a href="{{ path(route,{'id': object.id, 'type': 'import'}) }}" class="btn btn btn-default">Importer mon CV vidéo</a><br /><br />
<a id="link-videotheque" href="{{ route_videotheque }}">Choisir une vidéo de ma vidéothèque</a>
</div>
</div>
</div> #}
</div>
</div>
</div>
</div>
{% endblock %}
{% block javascripts %}
{{ parent() }}
{# {{ parent() }}
<script type="text/javascript">
{% if mustLogin == true %}
$('#link-videotheque').on('click',function(event){
@@ -54,5 +57,5 @@
$('#modal_login').modal('open');
});
{% endif %}
</script>
</script> #}
{% endblock %}
@@ -0,0 +1,220 @@
<!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>
<link rel="preconnect" href="https://fonts.gstatic.com">
<link href="https://fonts.googleapis.com/css2?family=Roboto:wght@100;400;500;700;900&display=swap" rel="stylesheet">
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>{% block title %}{% endblock %}</title>
<link rel="shortcut icon" href="/landing/img/talentstubeIco.svg" type="image/x-icon">
<link rel="icon" href="/landing/img/favicon.ico" type="image/x-icon">
<link href="/landing/css/bootstrap.min.css" rel="stylesheet">
<link href="/landing/css/owl.carousel.css" rel="stylesheet">
<link href="/landing/css/main.css" rel="stylesheet">
<link href="/landing/css/fontawesome.min.css" rel="stylesheet">
<!-- Latest compiled and minified CSS -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css">
<!-- Optional theme -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap-theme.min.css">
<script src="/landing/js/modernizr.min.js"></script>
<!--Ajout pour le référencement-->
{# <link rel="canonical" href="" /> #}
{% block meta %}
<meta name="description"
content="Créez des vidéos doffres demploi originales avec Talents Tube. Réalisez vos vidéos rapidement avec un smartphone et recrutez">
<meta property="og:locale" content="fr_FR" />
<meta property="og:type" content="website" />
<meta property="og:title" content="Réalisez une offre demploi originale vous-même" />
<meta property="og:description"
content="Créez des vidéos doffres demploi originales avec Talents Tube. Réalisez vos vidéos rapidement avec un smartphone et recrutez" />
<meta property="og:url" content="https://recruteur.talentstube.com/offre-emploi-originale" />
<meta property="og:site_name" content="Talents Tube" />
<meta property="og:image"
content="https://recruteur.talentstube.com/landing/img/offre-emploi-originale-en-video.jpg" />
<meta name="twitter:card" content="summary_large_image" />
{% endblock %}
</head>
<body>
{% block modalCallToAction %}
<!-- Modal : Formulaire -->
<div class="modal fade" id="exampleModal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel"
aria-hidden="true">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
</div>
<div class="modal-body">
<div class="container-fluid">
<div class="row" id="demandeRdvContainer">
<div class="col-sm-12">
<h2>Demandez votre rendez-vous</h2>
<div class="row">
<div class="col-12 col-sm-12">
<div class="form-group">
<label for="exampleInputPrenom>">Prénom</label>
<input type="text" class="form-control" id="prenom" placeholder="Votre prénom">
</div>
</div>
</div>
<div class="row">
<div class="col-12 col-sm-12">
<div class="form-group">
<label for="exampleInputNom">Nom</label>
<input type="text" class="form-control" id="nom" placeholder="Votre nom">
</div>
</div>
</div>
<div class="row">
<div class="col-12 col-sm-12">
<div class="form-group">
<label for="exampleInputEmail1">E-mail</label>
<input type="email" class="form-control" id="email" placeholder="Votre email">
</div>
</div>
</div>
<div class="row">
<div class="col-12 col-sm-12">
<div class="form-group">
<label for="exampleInputPhone">Téléphone</label>
<input type="phone" class="form-control" id="telephone" placeholder="Votre téléphone">
</div>
<div class="form-group">
<p class="text-danger" id="erreur">Veuillez compléter l'ensemble des champs ci-dessus pour
demander un rendez-vous</p>
</div>
</div>
</div>
</div>
</div>
<div class="row" id="felicitationRdvContainer" class="text-center">
<div class="text-center">
<img src="/landing/img/demande-rendez-vous.svg">
<h2>Merci!</h2>
<p>Votre demande a bien été envoyée. Un conseiller vous contactera <strong>sous 48h</strong>.
En attendant, nous allons vous rediriger vers notre blog afin de vous faire découvrir tous nos
conseils pour un recrutement réussi.</p>
</div>
</div>
</div>
</div>
<div class="modal-footer">
<button class="bttn" onClick="demanderRdv();" id="boutonDemandeRdv">Demander un rendez-vous</button>
</div>
</div>
</div>
</div>
<!--Modal : Formulaire End -->
{% endblock %}
{% block main %}
{% endblock %}
<script src="/landing/js/jquery-2.1.3.min.js"></script>
<script src="/landing/js/bootstrap.min.js"></script>
<script src="/landing/js/waypoints.min.js"></script>
<!--Ordre important-->
<script src="/landing/js/waypoints-sticky.min.js"></script> <!-- Nécessaire header sticky -->
<script src="/landing/js/retina.min.js"></script> <!-- Nécessaire logo header (à voir pour l'enlever) -->
<script src="/landing/js/owl.carousel.min.js"></script> <!-- Nécessaire avec les avantages (+de 3 avantages) -->
<script src="/landing/js/jquery.ajaxchimp.min.js"></script> <!-- Nécessaire FAQ-->
<script src="/landing/js/jquery.validate.min.js"></script>
<script src="/landing/js/main.js"></script>
<!--<script src="js/jquery.animateNumber.min.js"></script>-->
<!--<script src="js/jquery.form.min.js"></script>-->
{% block javascripts %}
{% endblock %}
<script>
$("#erreur").hide();
$("#felicitationRdvContainer").hide();
function demanderRdv() {
if ($("#nom").val() == "" || $("#prenom").val() == "" || $("#email").val() == "" || $("#telephone").val() == "") {
$("#erreur").show();
} else {
$("#erreur").hide();
$("#boutonDemandeRdv").hide();
$("#felicitationRdvContainer").show();
$("#demandeRdvContainer").hide();
$.ajax({
//L'URL de la requête
url: "/app_dev.php/api/demanderRdv?nom=" + $("#nom").val() + "&prenom=" + $("#prenom").val() + "&email=" +
$("#email").val() + "&telephone=" + $("#telephone").val() + "&page=Demande rdv module vidéo",
method: "GET",
//La méthode d'envoi (type de requête)
//Le format de réponse attendu
dataType: "json",
})
//Ce code sera exécuté en cas de succès - La réponse du serveur est passée à done()
/*On peut par exemple convertir cette réponse en chaine JSON et insérer
* cette chaine dans un div id="res"*/
.done(function (response) {
console.log("Requête demande rdv done");
setTimeout(function () {
document.location.href = "https://blog.talentstube.com/articles-entreprise/";
}, 8000);
})
//Ce code sera exécuté en cas d'échec - L'erreur est passée à fail()
//On peut afficher les informations relatives à la requête et à l'erreur
.fail(function (error) {
console.log("Requête demande rdvfail");
console.log(error);
})
//Ce code sera exécuté que la requête soit un succès ou un échec
.always(function () {
console.log("Requête demande rdv effectuée");
});
}
}
function fermerVideo() {
var videoURL = $('#player').prop('src');
videoURL = videoURL.replace("&autoplay=1", "");
$('#player').prop('src', '');
$('#player').prop('src', videoURL);
}
$('#exampleModalCenter').on('hidden.bs.modal', function (e) {
console.log("exampleModalCenter11");
fermerVideo();
})
</script>
</body>
</html>
@@ -1,6 +1,29 @@
{# {% extends 'company/base_dashboard_company.html.twig' %} #}
{% extends 'admin/base_dashboard.html.twig' %}
{% extends 'admin/base_dashboard_candidatures.html.twig' %}
{% block javascriptSupl %}
<link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/1.10.22/css/jquery.dataTables.min.css">
<link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/buttons/1.6.4/css/buttons.dataTables.min.css">
{# <script type="text/javascript" language="javascript" src="https://code.jquery.com/jquery-3.5.1.js"></script>
<script type="text/javascript" language="javascript" src="https://cdn.datatables.net/1.10.22/js/jquery.dataTables.min.js"></script>
<script type="text/javascript" language="javascript" src="https://cdn.datatables.net/buttons/1.6.4/js/dataTables.buttons.min.js"></script>
<script type="text/javascript" language="javascript" src="https://cdn.datatables.net/buttons/1.6.4/js/buttons.flash.min.js"></script> #}
<script type="text/javascript" src="https://code.jquery.com/jquery-3.5.1.js"></script>
<script type="text/javascript" src="https://cdn.datatables.net/1.10.22/js/jquery.dataTables.min.js"></script>
<script type="text/javascript" src="https://cdn.datatables.net/buttons/1.6.4/js/dataTables.buttons.min.js"></script>
<script type="text/javascript" language="javascript"
src="https://cdnjs.cloudflare.com/ajax/libs/jszip/3.1.3/jszip.min.js"></script>
<script type="text/javascript" language="javascript"
src="https://cdnjs.cloudflare.com/ajax/libs/pdfmake/0.1.53/pdfmake.min.js"></script>
<script type="text/javascript" language="javascript"
src="https://cdnjs.cloudflare.com/ajax/libs/pdfmake/0.1.53/vfs_fonts.js"></script>
<script type="text/javascript" language="javascript"
src="https://cdn.datatables.net/buttons/1.6.4/js/buttons.html5.min.js"></script>
<script type="text/javascript" language="javascript"
src="https://cdn.datatables.net/buttons/1.6.4/js/buttons.print.min.js"></script>
{% endblock %}
{% block dashContent %}
<!-- START JUMBOTRON -->
@@ -55,8 +78,10 @@ Lien : https://recruteur.talentstube.com/partage/{{ ad.id }}
Mot de passe : ######
Au plaisir d’échanger avec vous,
</textarea>
<br/>
<p>* Les données collectées dans les candidatures vidéo sont strictement confidentielles et entrent dans le champ de la protection des données personnelles dun candidat. Les vidéos peuvent être partagées uniquement dans le cadre du processus de recrutement.
<br />
<p>* Les données collectées dans les candidatures vidéo sont strictement confidentielles et entrent dans
le champ de la protection des données personnelles dun candidat. Les vidéos peuvent être partagées
uniquement dans le cadre du processus de recrutement.
</p>
</div>
<div class="modal-footer">
@@ -82,12 +107,13 @@ Au plaisir d’échanger avec vous,
<h5>&nbsp;</h5>
<p>En cliquant sur confirmer, cette candidature ne sera plus accessible dans lespace visiteurs.</p>
</div>
<div class="modal-footer">
<input type="hidden" id="caseRecocher">
<button type="button" class="btn btn-secondary" data-dismiss="modal" onClick="annulerCheckbox()">Annuler</button>
<button type="button" class="btn btn-secondary" data-dismiss="modal">Confirmer</button>
<button type="button" class="btn btn-secondary" data-dismiss="modal"
onClick="annulerCheckbox()">Annuler</button>
<button type="button" class="btn btn-secondary" data-dismiss="modal">Confirmer</button>
</div>
</div>
</div>
@@ -103,8 +129,173 @@ Au plaisir d’échanger avec vous,
</div>
</div> #}
<div class="col-xl-12">
<div class="card card-borderless col-xl-12 col-sm-12 p-b-20">
<div class="row profil-candidature">
<div class="col-xl-6 col-md-12 p-t-10">
<h5>{{ ad.title }}</h5>
<h6>Publiée le {{ ad.publishedAt|date("d/m/Y") }}</h6>
</div>
<div class="col-xl-6 col-md-12 p-t-20 text-right">
<a href="#" class="" data-toggle="tooltip"
title="Cochez une ou plusieurs candidatures avant de pouvoir les partager.">
<button type="button" class="btn btn-primary m-b-10 btn-lg " disabled data-toggle="modal"
data-target="#partageModal" id="partageCandidats">
Partager les
candidatures
</button>
</a>
<!--<button type="button" aria-label="" class="btn btn-default btn-lg m-b-10">
<span class="material-icons fs-16 m-r-5">delete</span>
<span class="">Clôturer</span>
</button>-->
<a href="{{ path('company_ad_soft_edit', { 'id': ad.id }) }}">
<button type="button" aria-label="" class="btn btn-default btn-lg m-b-10">
<span class="material-icons fs-16 m-r-5">create</span>
<span class="">Éditer l'offre</span>
</button>
</a>
</div>
</div>
<style type="text/css">
/* Hide default search box */
.dataTables_filter {
display: none;
}
</style>
<div id="reponses" class="table-responsive m-t-20">
<table width="100%" class="table " style="">
<tr>
<th width="11%"><input id='input3' type='text' class='form-control' placeholder='Recherche par nom'
style='font-family:Arial, FontAwesome; width:100%' />
</th>
<div class="row bg-bordered p-20">
<th width="11%"><input id='input4' type='text' class='form-control'
placeholder='Recherche par prénom' style='font-family:Arial, FontAwesome; width:100%' />
</th>
<th width="25%">
<select id='input8' class='form-control'>
<option value="">Tous les statuts</option>
<option value="A_TRAITER">À traiter</option>
<option value="CONTACTE">Contacté</option>
<option value="ENTRETIEN">Entretien programmé</option>
<option value="REFUSE">Refusé</option>
<option value="EMBAUCHE">Embauché</option>
</select>
</th>
</tr>
</table>
<table id="candidatures_dt_table" width="100%" class="table table-hover ">
<thead>
<tr>
<th width="4%"></th>
<th width="4%">Vidéo</th>
<th width="6%">Nom</th>
<th width="6%">Prénom</th>
<th width="11%">Date de reception</th>
<th width="11%">Intitulé de l'offre</th>
<th width="21%">Localisation</th>
<th width="15%">Statut</th>
</tr>
</thead>
<tbody>
{% for answer in answers %}
<tr>
<td>
<input type="checkbox" id="answer_{{answer.id}}" name="answers" class="nav-trigger"
onChange="verifierIsChecked({{answer.id}})" {% if answer.isShared %} checked
{% endif %} />
<label for="nav-trigger" class="navicon-button x">
<div class="navicon"></div>
</label>
</td>
<td>
<a href="{{ path('company_answer_show',{'id':answer.id }) }}">
{% if answer.video.thumbnails.0 is defined %}
{% set img = answer.video.thumbnails.0.sizes.1.link %}
{% else %}
{% set img = " " %}
{% endif %}
<img src="{{ img }}">
</a>
</td>
<td>
<a href="{{ path('company_answer_show',{'id':answer.id }) }}">{{ answer.user.lastname }}
{{ answer.user.firstname }}</a>
</td>
<td>
{{ answer.sendTime()|date('d/m/Y') }}
</td>
<td>
{% if answer.user.getGeoloc %}
{% for adress in answer.user.getGeoloc %}
{{ adress["locality"] }}, {{ adress["postal_code"] }}
{% endfor %}
{% else %}
Non renseignée
{% endif %}
</td>
<td>
{% if answer.statusReponse =="EMBAUCHE" %}
<span class="label label-success">Embauché</span>
{% elseif answer.statusReponse =="REFUSE"%}
<span class="label label-important">Refusé</span>
{% elseif answer.statusReponse =="ENTRETIEN"%}
<span class="label label-warning">Entretien programmé</span>
{% elseif answer.statusReponse =="A_TRAITER"%}
<span class="label label-info">À traiter</span>
{% elseif answer.statusReponse =="CONTACTE"%}
<span class="label">Contacté</span>
{% else %}
<span class="label label-info">À traiter</span>
{% endif %}
</td>
<td class="v-align-middle">
<a title="{{ad.title}}" href="{{ path('company_answer_show',{'id':answer.id }) }}">
<i class="pg-icon">eye</i>
</a>
{# <a href="#" class="note-action c-pointer" data-func="add"
data-answer="{{ answer.id }}">
<i class="pg-icon">note</i>
</a> #}
{# {% for note in answer.notes %}
<a class="tooltipped note-action c-pointer" data-position="top" data-delay="50"
data-tooltip="{{ note.content }}" data-note="{{ note.id }}" data-func="edit">
<i class="pg-icon">comment</i>
</a>
{% endfor %} #}
</td>
</tr>
{% endfor %}
{% if answers|length == 0 %}
<tr>
<th colspan="7" class="text-center">Aucune candidature pour le moment</th>
</tr>
{% endif %}
</tbody>
</table>
</div>
</div>
</div>
{# <div class="row bg-bordered p-20">
@@ -213,7 +404,7 @@ Au plaisir d’échanger avec vous,
</div>
<!-- END CONTAINER FLUID -->
</div>
</div> #}
<div id="note-modal"></div>
@@ -223,23 +414,23 @@ Au plaisir d’échanger avec vous,
{% block javascriptsEnd %}
<!-- BEGIN VENDOR JS -->
<script src="{{ asset('dashboard/plugins/bootstrap/js/bootstrap.min.js') }}" type="text/javascript"></script>
<script src="{{ asset('dashboard/plugins/bootstrap/js/bootstrap.min.js') }}" type="text/javascript"></script>
<!-- END PAGE LEVEL JS -->
<!-- END PAGE LEVEL JS -->
<script type="text/javascript">
function parcourirAllCheckbox() {
var allCheckboxes = $("input[type=checkbox]");
var allCheckboxes = $("input[type=checkbox]");
var auMoinUneCheckboxCoche = false;
// Put all the unique name attributes in an array.
var checkboxCocheId= null;
var checkboxCocheId = null;
allCheckboxes.each(function () {
var isChecked = $(this).prop('checked');
if (isChecked == true) {
auMoinUneCheckboxCoche = true;
var tabId =$(this).prop('id').split("_");
var tabId = $(this).prop('id').split("_");
checkboxCocheId = tabId[1];
console.log(checkboxCocheId);
}
@@ -257,19 +448,19 @@ Au plaisir d’échanger avec vous,
}
function annulerCheckbox(){
function annulerCheckbox() {
//recuprer l'id de la checkbox
var checkboxId = $("#caseRecocher").val();
//$("#answer_" + checkboxId).prop(checked, true);
document.getElementById("answer_" + checkboxId).checked = true;
console.log("annuler action checkbox "+checkboxId);
console.log("annuler action checkbox " + checkboxId);
verifierIsChecked(checkboxId);
}
function verifierIsChecked(id) {
var auMoinUneCheckboxCoche = false;
parcourirAllCheckbox();
if($("#answer_" + id).prop('checked')==false){
if ($("#answer_" + id).prop('checked') == false) {
console.log("cette checkbox était cochée avant");
//$('#decocheModal').modal('open');
$('#decocheModal').modal('show');
@@ -300,7 +491,7 @@ Au plaisir d’échanger avec vous,
const obj = JSON.parse(data);
console.log(obj.code);
var texteMail = $("#codeShare").val();
$("#codeShare").val(texteMail.replace('######', obj.code));
$("#codeShare").val(texteMail.replace('######', obj.code));
})
//Ce code sera exécuté en cas d'échec - L'erreur est passée à fail()
@@ -330,11 +521,142 @@ Au plaisir d’échanger avec vous,
});
$('#partageModal').modal('hide');
$('#decocheModal').modal('hide');
}
);
$(window).load(function() {
});
$(window).load(function () {
$('#partageModal').modal('hide');
$('#decocheModal').modal('hide');
});
</script>
<script>
$(document).ready(function () {
// Add a text input to each footer cell
var pos = 1;
var table = $('#candidatures_dt_table').DataTable({
"columnDefs": [
{
"name": "partage",
"targets": 0,
"searchable": false,
"orderable": false
},
{
"name": "video",
"targets": 1,
"searchable": true,
"orderable": false
},
{
"name": "nom",
"targets": 2,
"type": 'html',
"searchable": true,
"orderable": true
},
{
"name": "prenom",
"targets": 3,
"type": 'html',
"searchable": true,
"orderable": true
},
{
"name": "dateReception",
"targets": 4,
"searchable": true,
"orderable": true
},
{
"name": "offre",
"targets": 5,
"searchable": true,
"orderable": false
},
{
"name": "localisation",
"targets": 6,
"searchable": true,
"orderable": false
},
{
"name": "statusReponse",
"targets": 7,
"searchable": true,
"orderable": false
},
],
"processing": true,
"serverSide": true,
"ajax": {
"url": "{{ path('alimenterCandidaturesAd',{'id':ad.id}) }}",
"type": 'POST',
},
"paging": true,
"info": true,
"searching": true,
"bFilter": true,
"responsive": true,
"pageLength": 100,
"order": [
[0, 'desc']
],
"language": {
"sProcessing": "En cours de chargement...",
"sSearch": "Rechercher&nbsp;:",
"sLengthMenu": "Afficher _MENU_ candidatures",
"sInfo": "Candidature de _START_ &agrave; _END_ sur _TOTAL_ candidatures",
"sInfoEmpty": "Candidature 0 &agrave; 0 sur 0 candidature",
"sInfoFiltered": "",
"sInfoPostFix": "",
"sLoadingRecords": "Chargement en cours...",
"sZeroRecords": "Aucune candidature ne correspond à votre recherche",
"sEmptyTable": "Aucune candidature disponible dans le tableau",
"oPaginate": {
"sFirst": "Premier",
"sPrevious": "Pr&eacute;c&eacute;dent",
"sNext": "Suivant",
"sLast": "Dernier"
},
"oAria": {
"sSortAscending": ": activer pour trier la colonne par ordre croissant",
"sSortDescending": ": activer pour trier la colonne par ordre d&eacute;croissant"
}
},
});
// Apply the search
pos = 1;
table.columns().every(function () {
var that = this;
$("#input" + pos).on('keyup change', function () {
console.log(this);
if (that.search() !== this.value) {
that
.search(this.value)
.draw();
}
});
pos++;
});
$('#candidatures_dt_table_filter').hide();
});
</script>
{% endblock %}
@@ -1,6 +1,5 @@
{# {% extends 'company/base_dashboard_company.html.twig' %} #}
{% extends 'admin/base_dashboard.html.twig' %}
{% block javascriptSupl %}
<style>
.saisie thead tr th,
@@ -10,9 +9,6 @@
}
.modalCompetences {
height: 600px;
}
@@ -49,16 +45,19 @@
<div class="modal-dialog modal-lg" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="competencesModalLabel">Souhaitez-vous sélectionner le métier <span class="metierPopup"></span>?</h5>
<h5 class="modal-title" id="competencesModalLabel">Souhaitez-vous sélectionner le métier <span
class="metierPopup"></span>?</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body">
<h5>&nbsp;</h5>
<h5>&nbsp;</h5>
<p>
Si vous aviez précédemment sélectionné des compétences en lien avec l'ancien métier de rattachement, celles-ci seront remplacées par les nouvelles compétences, correspondant au métier <span class="metierPopup"></span>.
Si vous aviez précédemment sélectionné des compétences en lien avec l'ancien métier de rattachement,
celles-ci seront remplacées par les nouvelles compétences, correspondant au métier <span
class="metierPopup"></span>.
</p>
</div>
<div class="modal-footer">
@@ -78,8 +77,9 @@
<div class="modal-content">
<div class="modal-header">
<h6 class="modal-title">Sélectionnez les compétences recherchées pour le poste à pourvoir </h6>
<h7 class="modal-title">Vous pouvez sélectionner jusqu’à 10 compétences à afficher dans votre offre demploi. </h7>
</div>
<h7 class="modal-title">Vous pouvez sélectionner jusqu’à 10 compétences à afficher dans votre offre
demploi. </h7>
</div>
<div class="modal-body">
{# <p>Etes vous sur de charger les compétences du métier <span id="metierPopup"></span></p> #}
@@ -87,18 +87,19 @@
<div class="card-body">
<div class="scrollable">
<div class="demo-card-scrollable">
<div id="competencesAdPopup"></div>
</div>
</div><br/>
</div><br />
<div id="competencesAdMessagePopup" class="text-danger"></div>
</div>
</div>
</div>
<div class="modal-footer">
<button type="button" id="ajouterCompetenceButtonMdal" class="btn btn-secondary" data-dismiss="modal" onclick="" >Ajouter ces compétences</button>
<button type="button" id="ajouterCompetenceButtonMdal" class="btn btn-secondary" data-dismiss="modal"
onclick="">Ajouter ces compétences</button>
</div>
</div>
</div>
@@ -107,7 +108,24 @@
<!-- START CONTAINER FLUID -->
<div class=" container-fluid container-fixed-lg">
<div id="rootwizard" class="m-t-50">
<div class="col-lg-8 bloc-header">
<div class="card card-default container">
<div class="card-body">
<div class="row" style="min-height:10rem;">
<div class="col-8">
<h4 class="header-title" style="font-size:2em;line-height:1.5em;">Création d'une offre d'emploi
vidéo</h4>
<p>Pour trouver le bon profil, renseignez et personnalisez votre annonce. <br>Plus votre annonce
est précise et attractive, plus les candidatures seront ciblées.</p>
</div>
<div class="col-4"
style="background-repeat: no-repeat; background-image: url('https://blog.talentstube.com/wp-content/uploads/2021/02/creer-offre-emploi-video.svg');background-size: contain;background-position: center;">
</div>
</div>
</div>
</div>
</div>
<div id="rootwizard" class="col-lg-8 m-t-50">
{% if type is defined and type == 'update' %}
{% include 'company/ad_stepsV2.html.twig' with {'tab':1, 'type':'update'} %}
{% else %}
@@ -119,89 +137,105 @@
<div class="tab-pane padding-20 sm-no-padding active slide-left" id="tab1">
<div class="row row-same-height">
<div class="col-md-5 b-r b-dashed b-grey sm-b-b">
<div class="padding-30 sm-padding-5 sm-m-t-15 m-t-50">
<i class="material-icons hint-text">info</i>
<h2>Etape 1 : Je crée une annonce</h2>
<p>Pour trouver le bon profil, renseignez et personnalisez votre annonce.
Plus votre annonce est précise et attractive, plus les candidatures seront ciblées.
Afin de créer votre annonce, renseignez lensemble des champs relatifs au poste proposé.
</p>
{# <p class="small hint-text">Below is a sample page for your cart , Created using pages design
UI Elementes</p> #}
<div class="col-md">
<h4>À propos du poste</h4>
<br>
{% if form.title is defined%}
<div class="form-group form-group-default required">
{# <label for="ad_title" class="required active">Intitulé du poste</label><input type="text"
id="ad_title" name="ad[title]" required="required" placeholder="Ex: Commercial (H/F)"
class="form-control"> #}
{{ form_row(form.title) }}
</div>
{% endif %}
{% if form.reference is defined%}
<div class="form-group form-group-default required">
{# <label for="ad_reference" class="required active">Référence de l'offre
d'emploi</label><input type="text" id="ad_reference" name="ad[reference]"
required="required" placeholder="Ex : BTH567" class="form-control"> #}
{{ form_row(form.reference) }}
</div>
{% endif %}
<div class="form-group form-group-default required" style="min-height:250px;">
{# <label for="ad_description" class="required active">Description du poste</label>
<textarea id="ad_description" name="ad[description]" required="required"
class="form-control"
placeholder="Décrivez le poste, les missions, le profil recherché..."></textarea> #}
{{ form_row(form.description) }}
</div>
<div class="form-group form-group-default required">
{# <label for="ad_location_gmap" class="required active">Localisation du poste</label><input
type="text" id="ad_location_gmap" name="ad[location_gmap]" required="required" value=""
class="form-control pac-target-input"
placeholder="Ex : 3 Rue Louis de Broglie, Vannes, France" autocomplete="off"> #}
{{ form_row(form.location_gmap) }}
{{ form_row(form.location) }}
</div>
{# <input type="hidden" id="ad_location" name="ad[location]" value="null"> #}
<br>
<h6>Organisation cliente (facultatif)</h6>
<div class="form-group form-group-default">
{# <label for="ad_beneficiaire" class="active">Nom de l'organisation</label>
<input type="text" id="ad_beneficiaire" name="ad[beneficiaire]" placeholder=""
class="form-control"> #}
{{ form_row(form.beneficiaire) }}
</div>
<p class="fs-12 bold">Vous souhaitez recruter pour l'un de vos clients ? Veuillez renseigner le
champ ci-dessus</p>
<br>
<h4>Critères de l'offre d'emploi</h4>
<br>
<div class="form-group form-group-default required">
{# <label for="ad_contract_type" class="required">Type de contrat:</label>
<select id="ad_contract_type" name="ad[contract_type]" class="form-control">
<option value="CDI">CDI</option>
<option value="CDD">CDD</option>
<option value="Apprentissage">Apprentissage</option>
<option value="professionnalisation">Contrat de professionnalisation</option>
<option value="Stage">Stage</option>
<option value="Indépendant">Indépendant</option>
<option value="Interim">Interim</option>
</select> #}
{{ form_row(form.contract_type) }}
</div>
<div class="form-group form-group-default disabled" id="ad_duree_contrat_div">
{# <label for="ad_duree_contrat" class="active">Durée du contrat en mois</label>
<input type="number" id="ad_duree_contrat" name="ad[duree_contrat]" value="0"
class="form-control" placeholder="Ex : 6" min="0" max="36" disabled=""> #}
{{ form_row(form.duree_contrat) }}
</div>
<div class="form-group form-group-default required">
{# <label for="ad_temps_type" class="required">Type d'emploi</label>
<select id="ad_temps_type" name="ad[temps_type]" class="form-control">
<option value="FULL_TIME">Temps plein </option>
<option value="PART_TIME">Temps partiel </option>
<option value="MIX_TIME">Temps plein ou temps partiel</option>
</select> #}
{{ form_row(form.temps_type) }}
</div>
<div class="form-group form-group-default disabled" id="ad_nombre_heure_div">
{# <label for="ad_nombre_heure" class="active">Temps de travail (Le nombre saisi correspond au
nombre d'heures/semaine.)</label>
<input type="number" id="ad_nombre_heure" name="ad[nombre_heure]" value="0"
class="form-control" placeholder="Ex : 20" min="0" max="35" disabled=""> #}
{{ form_row(form.nombre_heure) }}
</div>
<div class="form-group form-group-default required">
{# <label for="ad_teletravail" class="required">Possibilité de faire du Télétravail?</label>
<select id="ad_teletravail" name="ad[teletravail]" class="form-control">
<option value="tele_occasionel">Occasionnel </option>
<option value="tele_partiel">Partiel </option>
<option value="tele_total">Total</option>
<option value="tele_non">Non</option>
</select> #}
{{ form_row(form.teletravail) }}
</div>
</div>
<div class="col-md-7">
<div class="padding-30 sm-padding-5">
<table class="table table-condensed ">
{% if form_errors(form) %}
<tr>
<td class="col-lg-12 col-md-12 col-sm-12 ">
<span class="red-text text-darken-2">{{ form_errors(form) }}</span>
</td>
</tr>
{% endif %}
<tr>
<td class="col-lg-12 col-md-12 col-sm-12 ">
{{ form_row(form.reference) }}
</td>
</tr>
<tr>
<td class="col-lg-12 col-md-12 col-sm-12 ">
{{ form_row(form.title) }}
</td>
</tr>
<tr>
<td class="col-lg-12 col-md-12 col-sm-12">
{{ form_row(form.beneficiaire) }}
<br />
Vous souhaitez recruter pour l'un de vos clients, renseignez ce champ
</td>
</tr>
<tr>
<td class="col-lg-12 col-md-12 col-sm-12">
{{ form_row(form.location_gmap) }}
{{ form_row(form.location) }}
</td>
</tr>
<tr>
<td class="col-lg-12 col-md-12 col-sm-12">
{{ form_row(form.description) }}
</td>
</tr>
<tr>
<td class="col-lg-12 col-md-12 col-sm-12">
{{ form_row(form.contract_type) }}
</td>
</tr>
{# US 380 : Mise en place du temps de contrat (CDD) #}
<tr id="ligneDureeContrat">
<td class="col-lg-12 col-md-12 col-sm-12">
{{ form_row(form.duree_contrat) }}
</td>
</tr>
<tr>
<td class="col-lg-12 col-md-12 col-sm-12">
{{ form_row(form.temps_type) }}
</td>
</tr>
{# US 329 : Mise en place du temps de travail #}
<tr id='ligneNbHeure'>
<td class="col-lg-12 col-md-12 col-sm-12">
{{ form_row(form.nombre_heure) }}
</td>
</tr>
{# US 295 : Mise en place du télétravail #}
<tr>
<td class="col-lg-12 col-md-12 col-sm-12">
{{ form_row(form.teletravail) }}
</td>
</tr>
</table>
<br>
<h4 class="no-margin p-b-5">Compétences recherchées</h4>
<br>
<div class="col bg-contrast-lower">
<br>
<table>
<tr class='bg-contrast-lower'>
<td class="col-lg-12 col-md-12 col-sm-12 bg-contrast-lower">
@@ -246,15 +280,16 @@
<tr class='bg-contrast-lower'>
<td class="col-lg-12 col-md-12 col-sm-12 bg-contrast-lower">
<div id="competencesAd"></div><br />
<div id="competencesAdMessage" class="text-danger">Veuillez choisir un métier de rattachement pour votre annonce.</div><br />
<div id="loadingDiv" >Patientez...</div><br />
<div id="competencesAdMessage" class="text-danger">Veuillez choisir un métier de
rattachement pour votre annonce.</div><br />
<div id="loadingDiv">Patientez...</div><br />
<div class="text-center" id="competencesButtonAd">
<button type="button" class="btn btn-primary" data-toggle="modal"
<button type="button" class="btn btn-info btn-lg" data-toggle="modal"
data-target="#ajoutCompetencesModal" id="ajoutCompetences">
Ajouter des compétences
</button>
<input type="hidden" id ="nbCompetences">
<span id= "nbCompetencesText"></span>
<input type="hidden" id="nbCompetences">
<span id="nbCompetencesText"></span>
</div>
</td>
{{ form_row(form.appellationId) }}
@@ -262,120 +297,43 @@
{{ form_row(form.codeRome) }}
</tr>
<tr>
{# <tr>
<td class="col-lg-12 col-md-12 col-sm-12">
{{ form_row(form.status) }}
</td>
</tr>
<tr>
<td class="col-lg-12 col-md-12 col-sm-12">
{{ form_row(form.publicTag) }}
{{ form_row(form.competences) }}
</td>
</tr> #}
</tr>
<tr>
<td class="col-lg-12 col-md-12 col-sm-12">
&nbsp;
</td>
</tr>
<tr>
<td class="col-lg-12 col-md-12 col-sm-12 ">
<button aria-label="" type="submit"
class="btn btn-primary btn-cons btn-animated from-left pull-right"
type="button" id="saveAdButton">
<span>{% if type is defined and type == 'update' %}Sauvegarde et
étape
suivante {% else %}Je crée mon annonce{% endif %}</span>
<span class="hidden-block">
<i class="material-icons fs-16">videocam</i>
</span>
</button>
<br />&nbsp;
{# <button class="btn btn-default" type="submit">Je crée mon annonce!</button> #}
</td>
</tr>
</table>
</div>
<br>
<button aria-label="" type="submit"
class="btn btn-lg btn-primary btn-cons btn-animated from-left" id="saveAdButton"
disabled="">
<span>Suivant</span>
<span class="hidden-block">
<i class="material-icons tab-icon">videocam</i>
</span>
</button>
</div>
</div>
</div>
{{ form_end(form) }}
<div class="tab-pane slide-left padding-20 sm-no-padding disabled" id="tab2">
<div class="row row-same-height">
<div class="col-md-5 b-r b-dashed b-grey ">
<div class="padding-30 sm-padding-5 sm-m-t-15 m-t-50">
</div>
</div>
<div class="col-md-7">
<div class="padding-30 sm-padding-5">
</div>
</div>
</div>
</div>
<div class="padding-20 sm-padding-5 sm-m-b-20 sm-m-t-20 bg-white clearfix">
{# <ul class="pager wizard no-style">
<li class="next">
<button aria-label="" class="btn btn-primary btn-cons btn-animated from-left pull-right"
type="button">
<span>Je crée mon annonce</span>
<span class="hidden-block">
<i class="material-icons fs-16">local_shipping</i>
</span>
</button>
</li>
<li class="next finish hidden">
<button aria-label="" class="btn btn-primary btn-cons btn-animated from-left pull-right"
type="button">
<span>Finish</span>
<span class="hidden-block">
<i class="material-icons fs-16">settings</i>
</span>
</button>
</li>
<li class="previous first hidden">
<button aria-label="" class="btn btn-default btn-cons btn-animated from-left pull-right"
type="button">
<span>First</span>
<span class="hidden-block">
<i class="material-icons fs-16">settings</i>
</span>
</button>
</li>
<li class="previous">
<button aria-label="" class="btn btn-default btn-cons btn-animated from-left pull-right"
type="button">
<span>Previous</span>
<span class="hidden-block">
<i class="material-icons fs-14">settings</i>
</span>
</button>
</li>
</ul> #}
</div>
<div class="wizard-footer padding-20 bg-contrast-low">
<p class="small hint-text pull-left no-margin">
</p>
<div class="pull-right">
</div>
<div class="clearfix"></div>
</div>
</div>
</div>
</div>
</div>
<!-- END CONTAINER FLUID -->
{% endblock %}
@@ -387,9 +345,11 @@
if ($("#ad_temps_type").val() == "PART_TIME") {
//$("#ligneNbHeure").show();
$("#ad_nombre_heure").prop("disabled", false);
$("#ad_nombre_heure_div").removeClass("disabled");
} else {
//$("#ligneNbHeure").hide().prop('required',false) ;;
$("#ad_nombre_heure").prop("disabled", true);
$("#ad_nombre_heure_div").addClass("disabled");
}
}
@@ -399,9 +359,11 @@
if ($("#ad_contract_type").val() == "CDD") {
//$("#ligneDureeContrat").show();
$("#ad_duree_contrat").prop("disabled", false);
$("#ad_duree_contrat_div").removeClass("disabled");
} else {
//$("#ligneDureeContrat").hide().prop('required',false) ;
$("#ad_duree_contrat").prop("disabled", true);
$("#ad_duree_contrat_div").addClass("disabled");
}
}
@@ -432,62 +394,65 @@
console.log(this.value);
//competences.push(competence);
//on remplace la virgule par un esapce car sinon bug (les compétences sont séparés par une virgule)
var chaine = this.value.replace(",", " ");
var chaine = this.value.replace("'", " ");
chaine = chaine.replace(",", " ");
//On limite a 10 compétences, au dela, on les enregistre pas dans le champ ad_competences
if(nbCompetencesSelect<11){
if (nbCompetencesSelect < 11) {
competences += chaine + ",";
nbCompetencesSelect++;
}
$("#nbCompetencesText").html(nbCompetencesSelect+" compétences sélectionnées");
$("#ajouterCompetenceButtonMdal").html("Ajouter (+"+nbCompetencesSelect+")");
$("#nbCompetencesText").html(nbCompetencesSelect + " compétences sélectionnées");
$("#ajouterCompetenceButtonMdal").html("Ajouter (+" + nbCompetencesSelect + ")");
$("#nbCompetences").val(nbCompetencesSelect);
//return competence;
}
}).get();
console.log(competences);
// on renseigne le champ ad_competences
$("#ad_competences").val(competences);
//Gestion des erreurs si aucune compétence
if(nbCompetencesSelect==0){
if (nbCompetencesSelect == 0) {
$("#nbCompetencesText").html("");
$("#competencesAdMessage").html(
"Vous devez sélectionner au minimum une compétence "
"Vous devez sélectionner au minimum une compétence "
);
$("#competencesAdMessagePopup").html(
"Vous devez sélectionner au minimum une compétence "
"Vous devez sélectionner au minimum une compétence "
);
$("#ajouterCompetenceButtonMdal").html("Ajouter (+0)");
$("#ajouterCompetenceButtonMdal").hide();
$("#saveAdButton").prop("disabled", true);
}else if(nbCompetencesSelect>9){
} else if (nbCompetencesSelect > 9) {
//Gestion des erreurs si plusde 10 compétences
$("#saveAdButton").prop("disabled", false);
$("#competencesAdMessage").html(
"Vous avez atteint le nombre maximum de compétences. "
"Vous avez atteint le nombre maximum de compétences. "
);
$("#competencesAdMessagePopup").html(
"Vous avez atteint le nombre maximum de compétences. "
"Vous avez atteint le nombre maximum de compétences. "
);
if(nbCompetencesSelect>10){
if (nbCompetencesSelect > 10) {
$("#ajouterCompetenceButtonMdal").hide();
}
}else{
} else {
//cas standards, on reinitialise les champs a vide
$("#competencesAdMessage").html( " ");
$("#competencesAdMessage").html(" ");
$("#competencesAdMessagePopup").html(" ");
$("#saveAdButton").prop("disabled", false);
$("#ajouterCompetenceButtonMdal").show();
}
console.log("valeur saiisie");
if($("#saisie").val() =="" || !$("#saisie").val() ){
if ($("#saisie").val() == "" || !$("#saisie").val()) {
$("#competencesAdMessage").html(
"Veuillez choisir un métier de rattachement pour votre annonce. "
"Veuillez choisir un métier de rattachement pour votre annonce. "
);
}
}
$(document).ready(function () {
@@ -503,7 +468,7 @@
// renseignement du champ visible (init du métier)
$("#saisie").val($("#ad_appellationLibelle").val());
$("#competences_origine").val($("#ad_competences").val());
if ($("#ad_competences").val() !='null' ){
if ($("#ad_competences").val() != 'null') {
$("#saveAdButton").prop("disabled", false);
}
//charger les compétences en fonction du métier d'origine
@@ -557,10 +522,12 @@
suggestion: function (data) {
//comment sont formaté les suggestion de l'auto completion
$(".tt-dataset-metiers").show();
var chaine = data.metier_libelle.replace("'", "\\'");
var chaine = data.metier_libelle.replace("'", " ");
var chaine = chaine.replace("'", "&#44;");
return '<div onclick="chargerDonneesTemp(' + data.metier_id + ',\'' +
chaine +
'\')" data-toggle="modal" data-target="#competencesModal" id="competences"><a href="#" >' + data.metier_libelle +
'\')" data-toggle="modal" data-target="#competencesModal" id="competences"><a href="#" >' +
data.metier_libelle +
'</a></div>'
},
footer: function (query) {
@@ -631,14 +598,20 @@
checked = "checked";
}
var chaine = object.libelle.replace("'", " ");
var chaine = chaine.replace(",", " ");
$("#competencesAd").append("<div id='competence_ad_"+object.code+"' name='competences_ad[]'><input type='checkbox' "+checked+" onChange='genererCompetences(this);' id='competence_" + object
.code + "' value='" +chaine+"_"+ object.code + "'> " + object.libelle + "<br/></div>");
chaine = chaine.replace(",", " ");
chaine = chaine.replace('"', " ");
$("#competencesAd").append('<div id="competence_ad_' + object.code +
'" name="competences_ad[]"><input type="checkbox" ' + checked +
' onChange="genererCompetences(this);" id="competence_' + object
.code + '" value="' + chaine + "_" + object.code + '"> ' + object.libelle +
'<br/></div>');
$("#competencesAdPopup").append("<div id='competence_ad_popup_"+object.code+"'><input type='checkbox' "+checked+" onChange='genererCompetences(this);' id='competencepopup_" + object
.code + "' value='" + object.code + "'> " + object.libelle + "<br/></div>");
$("#competencesAdPopup").append('<div id="competence_ad_popup_' + object.code +
'"><input type="checkbox" ' + checked +
' onChange="genererCompetences(this);" id="competencepopup_' + object
.code + '" value="' + object.code + '"> ' + object.libelle + '<br/></div>');
if (object.competenceCle == false) {
$("#competence_ad_"+object.code).hide();
$("#competence_ad_" + object.code).hide();
}
});
@@ -653,18 +626,26 @@
var checked = "";
//On on ne coche pas ces competences clé (uniquement les compétences de base) sur le formulaire de base
//if (competence.competenceCle == true && type != "init") {
//checked = "checked";
//checked = "checked";
//}
var chaine = competence.libelle.replace("'", " ");
var chaine = chaine.replace(",", " ");
$("#competencesAd").append("<div id='competence_ad_"+competence.code+"' name='competences_ad[]'><input type='checkbox' "+checked+" onChange='genererCompetences(this);' id='competence_" + competence
.code + "' value='" +chaine+"_"+ competence.code + "'> " + competence.libelle + "<br/></div>");
chaine = chaine.replace(",", " ");
$("#competencesAd").append("<div id='competence_ad_" + competence.code +
"' name='competences_ad[]'><input type='checkbox' " + checked +
" onChange='genererCompetences(this);' id='competence_" +
competence
.code + "' value='" + chaine + "_" + competence.code + "'> " +
competence.libelle + "<br/></div>");
$("#competencesAdPopup").append("<div id='competence_ad_popup_"+competence.code+"'><input type='checkbox' "+checked+" onChange='genererCompetences(this);' id='competencepopup_" + competence
.code + "' value='" + competence.code + "'> " + competence.libelle + "<br/></div>");
$("#competencesAdPopup").append("<div id='competence_ad_popup_" + competence
.code + "'><input type='checkbox' " + checked +
" onChange='genererCompetences(this);' id='competencepopup_" +
competence
.code + "' value='" + competence.code + "'> " + competence.libelle +
"<br/></div>");
//On n'affiche pas ces competences (meme les competences clé) sur le formulaire de base
//if (competence.competenceCle == false) {
$("#competence_ad_"+competence.code).hide();
$("#competence_ad_" + competence.code).hide();
//}
});
});
@@ -700,10 +681,11 @@
$("#competencesAdMessage").html(
"Une erreur est survenue dans la recherche du métier de rattachement. <a href='#' onclick='chargerCompetences();'><br/><i class='fa fa-refresh fa-spin fa-fw'></i>Cliquez ici pour relancer la recherche</a> "
);
}
$('#loadingDiv').hide();
console.log("La requête s'est terminée en échec q= "+ $("#id_appellation_temporaire").val()+" Infos : " + JSON.stringify(error));
console.log("La requête s'est terminée en échec q= " + $("#id_appellation_temporaire").val() +
" Infos : " + JSON.stringify(error));
})
//Ce code sera exécuté que la requête soit un succès ou un échec
.always(function () {
@@ -717,7 +699,7 @@
console.log("Clicked, target = " + cb.id);
var id = cb.id.split('_');
id = id[1];
if($("#nbCompetences").val()<10){
if ($("#nbCompetences").val() < 10) {
$("#competence_" + id).prop("checked", cb.checked);
$("#competencepopup_" + id).prop("checked", cb.checked);
if (cb.checked) {
@@ -727,7 +709,7 @@
console.log("hidden de div #competence_ad_" + id);
$("#competence_ad_" + id).hide();
}
}else{
} else {
$("#competence_" + id).prop("checked", false);
$("#competence_ad_" + id).hide();
//$("#competence_" + id).hide();
@@ -9,8 +9,8 @@
}
.modalCompetences{
height:600px;
.modalCompetences {
height: 600px;
}
</style>
@@ -27,33 +27,59 @@
<ol class="breadcrumb">
<li class="breadcrumb-item"><a href="/entreprise/me/">Accueil</a></li>
<li class="breadcrumb-item"><a href="{{ path('company_ad') }}">Offres d'emploi</a></li>
</ol>
<!-- END BREADCRUMB -->
</div>
</div>
</div>
<!-- END JUMBOTRON -->
<!-- MODALS-->
<!-- Modal 0 -->
<div class="modal fade in bd-example-modal-lg" id="popupSubmitModal" tabindex="-1" role="dialog"
aria-labelledby="popupSubmitModalLabel" aria-hidden="false" data-show="false">
<div class="modal-dialog modal-lg" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="popupSubmitModalLabel">Votre offre demploi vidéo est en cours de validation par l'équipe Talents Tube</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body">
<p>Vous recevrez un e-mail lorsque votre offre demploi sera publiée sur la plateforme.</p>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal" onClick="submitFormAd()">Fermer</button>
</div>
</div>
</div>
</div>
<!-- Modal 1 -->
<div class="modal fade bd-example-modal-lg" id="competencesModal" tabindex="-1" role="dialog"
aria-labelledby="competencesModalLabel" aria-hidden="false" data-show="false">
<div class="modal-dialog modal-lg" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="competencesModalLabel">Souhaitez-vous sélectionner le métier <span class="metierPopup"></span>?</h5>
<h5 class="modal-title" id="competencesModalLabel">Souhaitez-vous sélectionner le métier <span
class="metierPopup"></span>?</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body">
<h5>&nbsp;</h5>
<h5>&nbsp;</h5>
<p>
Si vous aviez précédemment sélectionné des compétences en lien avec l'ancien métier de rattachement, celles-ci seront remplacées par les nouvelles compétences, correspondant au métier <span class="metierPopup"></span>.
Si vous aviez précédemment sélectionné des compétences en lien avec l'ancien métier de rattachement,
celles-ci seront remplacées par les nouvelles compétences, correspondant au métier <span
class="metierPopup"></span>.
</p>
</div>
<div class="modal-footer">
@@ -73,10 +99,11 @@
<div class="modal-content">
<div class="modal-header">
<h6 class="modal-title">Sélectionnez les compétences recherchées pour le poste à pourvoir </h6>
<h7 class="modal-title">Vous pouvez sélectionner jusqu’à 10 compétences à afficher dans votre offre demploi. </h7>
</div>
<h7 class="modal-title">Vous pouvez sélectionner jusqu’à 10 compétences à afficher dans votre offre
demploi. </h7>
</div>
<div class="modal-body">
{# <p>Etes vous sur de charger les compétences du métier <span id="metierPopup"></span></p> #}
<div class="card card-default">
<div class="card-body">
@@ -85,12 +112,13 @@
<div id="competencesAdPopup"></div>
</div>
</div>
<div id="competencesAdMessagePopup" class="text-danger"></div>
<div id="competencesAdMessagePopup" class="text-danger"></div>
</div>
</div>
</div>
<div class="modal-footer">
<button type="button" id="ajouterCompetenceButtonMdal" class="btn btn-secondary" data-dismiss="modal" onclick="" >Ajouter ces compétences</button>
<button type="button" id="ajouterCompetenceButtonMdal" class="btn btn-secondary" data-dismiss="modal"
onclick="">Ajouter ces compétences</button>
</div>
</div>
</div>
@@ -100,100 +128,135 @@
<!-- START CONTAINER FLUID -->
<div class=" container-fluid container-fixed-lg">
<div id="rootwizard" class="m-t-50">
<div class="col-lg-8 bloc-header">
<div class="card card-default container">
<div class="card-body">
<div class="row" style="min-height:10rem;">
<div class="col-8">
<h4 class="header-title" style="font-size:2em;line-height:1.5em;">Création d'une offre d'emploi
vidéo</h4>
<p>Pour trouver le bon profil, renseignez et personnalisez votre annonce. <br>Plus votre annonce
est précise et attractive, plus les candidatures seront ciblées.</p>
</div>
<div class="col-4"
style="background-repeat: no-repeat; background-image: url('https://blog.talentstube.com/wp-content/uploads/2021/02/creer-offre-emploi-video.svg');background-size: contain;background-position: center;">
</div>
</div>
</div>
</div>
</div>
<div id="rootwizard" class="col-lg-8 m-t-50">
{% if type is defined and type == 'update' %}
{% include 'company/ad_stepsV2.html.twig' with {'tab':1, 'type':'update'} %}
{% else %}
{% include 'company/ad_stepsV2.html.twig' with {'tab':1} %}
{% endif %}
<div class="tab-content">
{{ form_start(form, {'attr': {'class': ''}}) }}
<div class="tab-pane padding-20 sm-no-padding active slide-left" id="tab1">
<div class="row row-same-height">
<div class="col-md-5 b-r b-dashed b-grey sm-b-b">
<div class="padding-30 sm-padding-5 sm-m-t-15 m-t-50">
<i class="material-icons hint-text">shopping_cart</i>
<h2>Etape 1 : Je modifie une annonce</h2>
<p>Pour trouver le bon profil, renseignez et personnalisez votre annonce.
Plus votre annonce est précise et attractive, plus les candidatures seront ciblées.
Afin de créer votre annonce, renseignez lensemble des champs relatifs au poste proposé.</p>
{# <p class="small hint-text">Below is a sample page for your cart , Created using pages design
UI Elementes</p> #}
<div class="col-md">
<h4>À propos du poste</h4>
<br>
{% if form.title is defined%}
<div class="form-group form-group-default required">
{# <label for="ad_title" class="required active">Intitulé du poste</label><input type="text"
id="ad_title" name="ad[title]" required="required" placeholder="Ex: Commercial (H/F)"
class="form-control"> #}
{{ form_row(form.title) }}
</div>
</div>
<div class="col-md-7">
<div class="padding-30 sm-padding-5">
{{ form_start(form, {'attr': {'class': 'form-horizontal'}}) }}
<table class="table table-condensed form-horizontal">
{% if form_errors(form) %}<tr>
<td class="col-lg-12 col-md-12 col-sm-12 ">
<span class="red-text text-darken-2">{{ form_errors(form) }}</span>
</td>
</tr>
{% endif %}
{% if form.reference is defined%}
<tr>
<td class="col-lg-12 col-md-12 col-sm-12 ">
{{ form_row(form.reference) }}
</td>
</tr>
{% endif %}
<tr>
<td class="col-lg-12 col-md-12 col-sm-12 ">
{% if form.title is defined%}
{{ form_row(form.title) }}
{% endif %}
</td>
</tr>
<tr>
<td class="col-lg-12 col-md-12 col-sm-12">
{{ form_row(form.beneficiaire) }}
<br/>
Vous souhaitez recruter pour l'un de vos clients, renseignez ce champ
</td>
</tr>
<tr>
<td class="col-lg-12 col-md-12 col-sm-12">
{{ form_row(form.location_gmap) }}
{{ form_row(form.location) }}
</td>
</tr>
<tr>
<td class="col-lg-12 col-md-12 col-sm-12">
{{ form_row(form.description) }}
</td>
</tr>
<tr>
<td class="col-lg-12 col-md-12 col-sm-12">
{{ form_row(form.contract_type) }}
</td>
</tr>
{# US 380 : Mise en place du temps de contrat (CDD) #}
<tr id="ligneDureeContrat">
<td class="col-lg-12 col-md-12 col-sm-12">
{{ form_row(form.duree_contrat) }}
</td>
</tr>
<tr>
<td class="col-lg-12 col-md-12 col-sm-12">
{{ form_row(form.temps_type) }}
</td>
</tr>
{# US 329 : Mise en place du temps de travail #}
<tr id="ligneNbHeure">
<td class="col-lg-12 col-md-12 col-sm-12">
{{ form_row(form.nombre_heure) }}
</td>
</tr>
{# US 295 : Mise en place du télétravail #}
<tr>
<td class="col-lg-12 col-md-12 col-sm-12">
{{ form_row(form.teletravail) }}
</td>
</tr>
</table>
{% endif %}
{% if form.reference is defined%}
<div class="form-group form-group-default required">
{# <label for="ad_reference" class="required active">Référence de l'offre
d'emploi</label><input type="text" id="ad_reference" name="ad[reference]"
required="required" placeholder="Ex : BTH567" class="form-control"> #}
{{ form_row(form.reference) }}
</div>
{% endif %}
<div class="form-group form-group-default required" style="min-height:250px;">
{# <label for="ad_description" class="required active">Description du poste</label>
<textarea id="ad_description" name="ad[description]" required="required"
class="form-control"
placeholder="Décrivez le poste, les missions, le profil recherché..."></textarea> #}
{{ form_row(form.description) }}
</div>
<div class="form-group form-group-default required">
{# <label for="ad_location_gmap" class="required active">Localisation du poste</label><input
type="text" id="ad_location_gmap" name="ad[location_gmap]" required="required" value=""
class="form-control pac-target-input"
placeholder="Ex : 3 Rue Louis de Broglie, Vannes, France" autocomplete="off"> #}
{{ form_row(form.location_gmap) }}
{{ form_row(form.location) }}
</div>
{# <input type="hidden" id="ad_location" name="ad[location]" value="null"> #}
<br>
<h6>Organisation cliente (facultatif)</h6>
<div class="form-group form-group-default">
{# <label for="ad_beneficiaire" class="active">Nom de l'organisation</label>
<input type="text" id="ad_beneficiaire" name="ad[beneficiaire]" placeholder=""
class="form-control"> #}
{{ form_row(form.beneficiaire) }}
</div>
<p class="fs-12 bold">Vous souhaitez recruter pour l'un de vos clients ? Veuillez renseigner le
champ ci-dessus</p>
<br>
<h4>Critères de l'offre d'emploi</h4>
<br>
<div class="form-group form-group-default required">
{# <label for="ad_contract_type" class="required">Type de contrat:</label>
<select id="ad_contract_type" name="ad[contract_type]" class="form-control">
<option value="CDI">CDI</option>
<option value="CDD">CDD</option>
<option value="Apprentissage">Apprentissage</option>
<option value="professionnalisation">Contrat de professionnalisation</option>
<option value="Stage">Stage</option>
<option value="Indépendant">Indépendant</option>
<option value="Interim">Interim</option>
</select> #}
{{ form_row(form.contract_type) }}
</div>
<div class="form-group form-group-default disabled" id="ad_duree_contrat_div">
{# <label for="ad_duree_contrat" class="active">Durée du contrat en mois</label>
<input type="number" id="ad_duree_contrat" name="ad[duree_contrat]" value="0"
class="form-control" placeholder="Ex : 6" min="0" max="36" disabled=""> #}
{{ form_row(form.duree_contrat) }}
</div>
<div class="form-group form-group-default required">
{# <label for="ad_temps_type" class="required">Type d'emploi</label>
<select id="ad_temps_type" name="ad[temps_type]" class="form-control">
<option value="FULL_TIME">Temps plein </option>
<option value="PART_TIME">Temps partiel </option>
<option value="MIX_TIME">Temps plein ou temps partiel</option>
</select> #}
{{ form_row(form.temps_type) }}
</div>
<div class="form-group form-group-default disabled" id="ad_nombre_heure_div">
{# <label for="ad_nombre_heure" class="active">Temps de travail (Le nombre saisi correspond au
nombre d'heures/semaine.)</label>
<input type="number" id="ad_nombre_heure" name="ad[nombre_heure]" value="0"
class="form-control" placeholder="Ex : 20" min="0" max="35" disabled=""> #}
{{ form_row(form.nombre_heure) }}
</div>
<div class="form-group form-group-default required">
{# <label for="ad_teletravail" class="required">Possibilité de faire du Télétravail?</label>
<select id="ad_teletravail" name="ad[teletravail]" class="form-control">
<option value="tele_occasionel">Occasionnel </option>
<option value="tele_partiel">Partiel </option>
<option value="tele_total">Total</option>
<option value="tele_non">Non</option>
</select> #}
{{ form_row(form.teletravail) }}
{{ form_row(form.status) }}
</div>
<br>
<h4 class="no-margin p-b-5">Compétences recherchées</h4>
<br>
<div class="col bg-contrast-lower">
<br>
<table>
<tr class='bg-contrast-lower'>
<td class="col-lg-12 col-md-12 col-sm-12 bg-contrast-lower">
@@ -238,165 +301,105 @@ Afin de créer votre annonce, renseignez lensemble des champs relatifs au pos
<tr class='bg-contrast-lower'>
<td class="col-lg-12 col-md-12 col-sm-12 bg-contrast-lower">
<div id="competencesAd"></div><br />
<div id="competencesAdMessage" class="text-danger">Vous devez
sélectionner au minimum une compétence</div><br />
<div id="loadingDiv" >Patientez...</div><br />
<div id="competencesAdMessage" class="text-danger">Veuillez choisir un métier de
rattachement pour votre annonce.</div><br />
<div id="loadingDiv">Patientez...</div><br />
<div class="text-center" id="competencesButtonAd">
<button type="button" class="btn btn-primary" data-toggle="modal"
<button type="button" class="btn btn-info btn-lg" data-toggle="modal"
data-target="#ajoutCompetencesModal" id="ajoutCompetences">
Ajouter des compétences
</button>
<input type="hidden" id ="nbCompetences">
<span id= "nbCompetencesText"></span>
<input type="hidden" id="nbCompetences">
<span id="nbCompetencesText"></span>
</div>
</td>
{{ form_row(form.appellationId) }}
{{ form_row(form.appellationLibelle) }}
{{ form_row(form.codeRome) }}
</tr>
<tr>
{# <tr>
<td class="col-lg-12 col-md-12 col-sm-12">
{{ form_row(form.status) }}
</td>
</tr>
<tr>
<td class="col-lg-12 col-md-12 col-sm-12">
{{ form_row(form.publicTag) }}
{{ form_row(form.competences) }}
</td>
</tr>
<tr>
<td class="col-lg-12 col-md-12 col-sm-12">
&nbsp;
{{ form_row(form.status) }}
</td>
</tr>
<tr>
<td class="col-lg-12 col-md-12 col-sm-12 ">
<button aria-label="" type="submit" id="saveAdButton" class="btn btn-primary btn-cons btn-animated from-left pull-right"
type="button">
<span>Je crée mon annonce</span>
<span class="hidden-block">
<i class="material-icons fs-16">local_shipping</i>
</span>
</button>
{# <button class="btn btn-default" type="submit">Je crée mon annonce!</button> #}
</td>
</tr>
</tr> #}
</table>
{{ form_end(form) }}
</div>
<br>
<button type="button" class="btn btn-lg btn-primary btn-cons btn-animated from-left" data-toggle="modal"
data-target="#popupSubmitModal" id="saveAdButton">
<span>Suivant</span>
<span class="hidden-block">
<i class="material-icons tab-icon">videocam</i>
</span>
</button>
{# <button aria-label="" type="submit"
class="btn btn-lg btn-primary btn-cons btn-animated from-left" id="saveAdButton"
disabled="">
<span>Suivant</span>
<span class="hidden-block">
<i class="material-icons tab-icon">videocam</i>
</span>
</button> #}
</div>
</div>
</div>
<div class="tab-pane slide-left padding-20 sm-no-padding disabled" id="tab2">
<div class="row row-same-height">
<div class="col-md-5 b-r b-dashed b-grey ">
<div class="padding-30 sm-padding-5 sm-m-t-15 m-t-50">
</div>
</div>
<div class="col-md-7">
<div class="padding-30 sm-padding-5">
</div>
</div>
</div>
</div>
<div class="padding-20 sm-padding-5 sm-m-b-20 sm-m-t-20 bg-white clearfix">
{# <ul class="pager wizard no-style">
<li class="next">
<button aria-label="" class="btn btn-primary btn-cons btn-animated from-left pull-right"
type="button">
<span>Je crée mon annonce</span>
<span class="hidden-block">
<i class="material-icons fs-16">local_shipping</i>
</span>
</button>
</li>
<li class="next finish hidden">
<button aria-label="" class="btn btn-primary btn-cons btn-animated from-left pull-right"
type="button">
<span>Finish</span>
<span class="hidden-block">
<i class="material-icons fs-16">settings</i>
</span>
</button>
</li>
<li class="previous first hidden">
<button aria-label="" class="btn btn-default btn-cons btn-animated from-left pull-right"
type="button">
<span>First</span>
<span class="hidden-block">
<i class="material-icons fs-16">settings</i>
</span>
</button>
</li>
<li class="previous">
<button aria-label="" class="btn btn-default btn-cons btn-animated from-left pull-right"
type="button">
<span>Previous</span>
<span class="hidden-block">
<i class="material-icons fs-14">settings</i>
</span>
</button>
</li>
</ul> #}
</div>
<div class="wizard-footer padding-20 bg-contrast-low">
<p class="small hint-text pull-left no-margin">
</p>
<div class="pull-right">
</div>
<div class="clearfix"></div>
</div>
{{ form_end(form) }}
</div>
</div>
</div>
</div>
<!-- END CONTAINER FLUID -->
{% endblock %}
{% block javascriptsSecondaire %}
<script type="application/javascript">
//Methode permettant d'afficher le bloc nb d'heure si est en temps partiel
function afficherTempsType(){
if( $( "#ad_soft_temps_type" ).val()=="PART_TIME" ){
//$("#ligneNbHeure").show();
$("#ad_soft_nombre_heure").prop("disabled", false);
}else{
//$("#ligneNbHeure").hide();
$("#ad_soft_nombre_heure").prop("disabled", true);
}
<script type="application/javascript">
function afficherTempsType() {
if ($("#ad_temps_type").val() == "PART_TIME") {
//$("#ligneNbHeure").show();
$("#ad_nombre_heure").prop("disabled", false);
$("#ad_nombre_heure_div").removeClass("disabled");
} else {
//$("#ligneNbHeure").hide().prop('required',false) ;;
$("#ad_nombre_heure").prop("disabled", true);
$("#ad_nombre_heure_div").addClass("disabled");
}
//Methode permettant d'afficher le bloc durée de contrat si le contrat est un CDI
function afficherDureeContrat(){
if( $( "#ad_soft_contract_type" ).val()=="CDD" ){
//$("#ligneDureeContrat").show();
$("#ad_soft_duree_contrat").prop("disabled", false);
}else{
//$("#ligneDureeContrat").hide();
$("#ad_soft_duree_contrat").prop("disabled", true);
}
}
//Methode permettant d'afficher le bloc durée de contrat si le contrat est un CDI
function afficherDureeContrat() {
console.log("type de contrat =" + $("#ad_contract_type").val());
if ($("#ad_contract_type").val() == "CDD") {
//$("#ligneDureeContrat").show();
$("#ad_duree_contrat").prop("disabled", false);
$("#ad_duree_contrat_div").removeClass("disabled");
} else {
//$("#ligneDureeContrat").hide().prop('required',false) ;
$("#ad_duree_contrat").prop("disabled", true);
$("#ad_duree_contrat_div").addClass("disabled");
}
}
$( "#ad_soft_temps_type" ).change(function() {
afficherTempsType();
});
$("#ad_soft_temps_type").change(function () {
afficherTempsType();
});
$( "#ad_soft_contract_type" ).change(function() {
afficherDureeContrat();
});
$("#ad_soft_contract_type").change(function () {
afficherDureeContrat();
});
//methode qui permet de générer le json des competences.
// c'est le champ ad_competences qui sert à l'enregistrement en base
@@ -417,13 +420,13 @@ Afin de créer votre annonce, renseignez lensemble des champs relatifs au pos
//on remplace la virgule par un esapce car sinon bug (les compétences sont séparés par une virgule)
var chaine = this.value.replace(",", " ");
//On limite a 10 compétences, au dela, on les enregistre pas dans le champ ad_competences
if(nbCompetencesSelect<11){
if (nbCompetencesSelect < 11) {
competences += chaine + ",";
nbCompetencesSelect++;
}
$("#nbCompetencesText").html(nbCompetencesSelect+" compétences sélectionnées");
$("#ajouterCompetenceButtonMdal").html("Ajouter (+"+nbCompetencesSelect+")");
$("#nbCompetencesText").html(nbCompetencesSelect + " compétences sélectionnées");
$("#ajouterCompetenceButtonMdal").html("Ajouter (+" + nbCompetencesSelect + ")");
$("#nbCompetences").val(nbCompetencesSelect);
//return competence;
}
@@ -432,42 +435,42 @@ Afin de créer votre annonce, renseignez lensemble des champs relatifs au pos
// on renseigne le champ ad_competences
$("#ad_soft_competences").val(competences);
//Gestion des erreurs si aucune compétence
if(nbCompetencesSelect==0){
if (nbCompetencesSelect == 0) {
$("#nbCompetencesText").html("");
$("#competencesAdMessage").html(
"Vous devez sélectionner au minimum une compétence. "
"Vous devez sélectionner au minimum une compétence. "
);
$("#competencesAdMessagePopup").html(
"Vous devez sélectionner au minimum une compétence. "
"Vous devez sélectionner au minimum une compétence. "
);
$("#ajouterCompetenceButtonMdal").html("Ajouter (+0)");
$("#ajouterCompetenceButtonMdal").hide();
$("#saveAdButton").prop("disabled", true);
}else if(nbCompetencesSelect>9){
} else if (nbCompetencesSelect > 9) {
$("#saveAdButton").prop("disabled", false);
//Gestion des erreurs si plusde 10 compétences
$("#competencesAdMessage").html(
"Vous avez atteint le nombre maximum de compétences. "
"Vous avez atteint le nombre maximum de compétences. "
);
$("#competencesAdMessagePopup").html(
"Vous avez atteint le nombre maximum de compétences. "
"Vous avez atteint le nombre maximum de compétences. "
);
if(nbCompetencesSelect>10){
if (nbCompetencesSelect > 10) {
$("#ajouterCompetenceButtonMdal").hide();
}
}else{
} else {
//cas standards, on reinitialise les champs a vide
$("#saveAdButton").prop("disabled", false);
$("#competencesAdMessage").html( " ");
$("#competencesAdMessage").html(" ");
$("#competencesAdMessagePopup").html(" ");
$("#ajouterCompetenceButtonMdal").show();
}
if($("#saisie").val() =="" || !$("#saisie").val() ){
if ($("#saisie").val() == "" || !$("#saisie").val()) {
$("#competencesAdMessage").html(
"Veuillez choisir un métier de rattachement pour votre annonce. "
"Veuillez choisir un métier de rattachement pour votre annonce. "
);
}
}
$(document).ready(function () {
@@ -487,9 +490,9 @@ Afin de créer votre annonce, renseignez lensemble des champs relatifs au pos
//cocher les cases par rapport aux compétences d'origine
});
</script>
</script>
<script>
<script>
$(document)
.ready(function () {
// Construction du champ typeahead d'auto compléetion de métier
@@ -540,7 +543,8 @@ Afin de créer votre annonce, renseignez lensemble des champs relatifs au pos
var chaine = data.metier_libelle.replace("'", " ");
return '<div onclick="chargerDonneesTemp(' + data.metier_id + ',\'' +
chaine +
'\')" data-toggle="modal" data-target="#competencesModal" id="competences"><a href="#" >' + data.metier_libelle +
'\')" data-toggle="modal" data-target="#competencesModal" id="competences"><a href="#" >' +
data.metier_libelle +
'</a></div>'
},
footer: function (query) {
@@ -609,18 +613,23 @@ Afin de créer votre annonce, renseignez lensemble des champs relatifs au pos
//console.log(object.competenceCle);
var hidden = "";
var checked = "";
if (object.competenceCle == true && type!="init") {
checked = "checked";
if (object.competenceCle == true && type != "init") {
checked = "checked";
}
var chaine = object.libelle.replace("'", " ");
var chaine = chaine.replace(",", " ");
$("#competencesAd").append("<div id='competence_ad_"+object.code+"' name='competences_ad[]'><input type='checkbox' "+checked+" onChange='genererCompetences(this);' id='competence_" + object
.code + "' value='" +chaine+"_"+ object.code + "'> " + object.libelle + "<br/></div>");
$("#competencesAd").append("<div id='competence_ad_" + object.code +
"' name='competences_ad[]'><input type='checkbox' " + checked +
" onChange='genererCompetences(this);' id='competence_" + object
.code + "' value='" + chaine + "_" + object.code + "'> " + object.libelle +
"<br/></div>");
$("#competencesAdPopup").append("<div id='competence_ad_popup_"+object.code+"'><input type='checkbox' "+checked+" onChange='genererCompetences(this);' id='competencepopup_" + object
.code + "' value='" + object.code + "'> " + object.libelle + "<br/></div>");
$("#competencesAdPopup").append("<div id='competence_ad_popup_" + object.code +
"'><input type='checkbox' " + checked +
" onChange='genererCompetences(this);' id='competencepopup_" + object
.code + "' value='" + object.code + "'> " + object.libelle + "<br/></div>");
if (object.competenceCle == false) {
$("#competence_ad_"+object.code).hide();
$("#competence_ad_" + object.code).hide();
}
});
@@ -635,34 +644,42 @@ Afin de créer votre annonce, renseignez lensemble des champs relatifs au pos
var checked = "";
//On on ne coche pas ces competences clé (uniquement les compétences de base) sur le formulaire de base
//if (competence.competenceCle == true && type != "init") {
//checked = "checked";
//checked = "checked";
//}
var chaine = competence.libelle.replace("'", " ");
var chaine = chaine.replace(",", " ");
$("#competencesAd").append("<div id='competence_ad_"+competence.code+"' name='competences_ad[]'><input type='checkbox' "+checked+" onChange='genererCompetences(this);' id='competence_" + competence
.code + "' value='" +chaine+"_"+ competence.code + "'> " + competence.libelle + "<br/></div>");
$("#competencesAd").append("<div id='competence_ad_" + competence.code +
"' name='competences_ad[]'><input type='checkbox' " + checked +
" onChange='genererCompetences(this);' id='competence_" +
competence
.code + "' value='" + chaine + "_" + competence.code + "'> " +
competence.libelle + "<br/></div>");
$("#competencesAdPopup").append("<div id='competence_ad_popup_"+competence.code+"'><input type='checkbox' "+checked+" onChange='genererCompetences(this);' id='competencepopup_" + competence
.code + "' value='" + competence.code + "'> " + competence.libelle + "<br/></div>");
$("#competencesAdPopup").append("<div id='competence_ad_popup_" + competence
.code + "'><input type='checkbox' " + checked +
" onChange='genererCompetences(this);' id='competencepopup_" +
competence
.code + "' value='" + competence.code + "'> " + competence.libelle +
"<br/></div>");
//On n'affiche pas ces competences (meme les competences clé) sur le formulaire de base
//if (competence.competenceCle == false) {
$("#competence_ad_"+competence.code).hide();
$("#competence_ad_" + competence.code).hide();
//}
});
});
$("#competencesButtonAd").show();
if(type=="init"){
if (type == "init") {
const obj = JSON.parse($("#ad_soft_competences").val());
for (var key in obj) {
for (var key2 in obj[key]) {
//console.log(obj[key][key2]);
console.log(key2);
$("#competencepopup_"+key2).prop("checked", true);
$("#competence_"+key2).prop("checked", true);
$("#competence_ad_"+key2).show();
$("#competencepopup_" + key2).prop("checked", true);
$("#competence_" + key2).prop("checked", true);
$("#competence_ad_" + key2).show();
}
}
}
@@ -682,7 +699,7 @@ Afin de créer votre annonce, renseignez lensemble des champs relatifs au pos
"Une erreur est survenue dans la recherche du métier de rattachement. <a href='#' onclick='chargerCompetences();'><br/><i class='fa fa-refresh fa-spin fa-fw'></i>Cliquez ici pour relancer la recherche</a> "
);
}
$('#loadingDiv').hide();
$('#loadingDiv').hide();
console.log("La requête s'est terminée en échec. Infos : " + JSON.stringify(error));
})
@@ -699,7 +716,7 @@ Afin de créer votre annonce, renseignez lensemble des champs relatifs au pos
console.log("Clicked, target = " + cb.id);
var id = cb.id.split('_');
id = id[1];
if($("#nbCompetences").val()<10){
if ($("#nbCompetences").val() < 10) {
$("#competence_" + id).prop("checked", cb.checked);
$("#competencepopup_" + id).prop("checked", cb.checked);
if (cb.checked) {
@@ -709,13 +726,18 @@ Afin de créer votre annonce, renseignez lensemble des champs relatifs au pos
console.log("hidden de div #competence_ad_" + id);
$("#competence_ad_" + id).hide();
}
}else{
} else {
$("#competence_" + id).prop("checked", false);
$("#competence_ad_" + id).hide();
$("#competencepopup_" + id).prop("checked", false);
}
// on génere le json a chaque fois
genererJson();
// on génere le json a chaque fois
genererJson();
}
//function appelée lors de la confirmation de popup
function submitFormAd(){
$('form[name="ad_soft"]').submit();
}
</script>
{% endblock %}
@@ -8,164 +8,264 @@
<li class="breadcrumb-item active">Offres d'emploi</li>
</ol>
<!-- END BREADCRUMB -->
<div class="row">
<div class="col-xl-12 col-lg-12 ">
<!-- START card -->
<div class="card card-transparent">
<div class="card-header ">
</div>
<div class="card-body">
<a class="btn-square" target="_self" href="{{ path('company_ad_create') }}">
<button aria-label=""
class="btn btn-primary btn-cons">{{ 'ad.company.add.label'|trans }}</button>
</a>
</div>
</div>
<!-- END card -->
</div>
</div>
</div>
</div>
</div>
<!-- END JUMBOTRON -->
<!-- Début modifications Corentin -->
<div class="col-xl-12">
<div class="card card-borderless col-xl-12 col-sm-12 p-b-20">
<div class="row ">
<div class="col-xl-12 col-md-12 p-t-20 text-right">
<a class="btn-square" target="_self" href="{{ path('company_ad_create') }}">
<button type="button" aria-label="" class="btn btn-primary btn-lg m-b-10">
<span class="material-icons fs-16 m-r-5">movie</span>
<span class="">Créer une offre d'emploi vidéo</span>
</button>
</a>
</div>
</div>
<div id="reponses" class="table-responsive m-t-20">
<table class="table table-hover" id="basicTable">
<thead>
<tr>
<th colspan=4 class="colonne1 bold">Gestion des offres</th>
<th colspan=5 class="colonne2 bold">Gestion des candidatures</th>
</tr>
</thead>
<thead>
<tr>
<th class="colonne1" style="width:25%;">Intitulé du poste</th>
<th class="colonne1" style="width:15%;">Statut</th>
<th class="colonne1" style="width:10%;">Vues de l'offre</th>
<th class="colonne1" style="width:10%;">Actions</th>
<th class="colonne2" style="width:8%;">À traiter</th>
<th class="colonne2" style="width:8%;">Contacté</th>
<th class="colonne2" style="width:8%;">Refusé</th>
<th class="colonne2" style="width:8%;">Entretien programmé</th>
<th class="colonne2" style="width:8%;">Embauché</th>
</tr>
</thead>
<tbody>
{% for ad in ads %}
<tr>
<td>
<h6>
{% if ad.countAnswers > 0 %}
<a href="{{ path('company_ad_answer_list',{'id':ad.id}) }}">
{{ ad.title }}
</a>
{% else %}
{{ ad.title }}
{% endif %}
</h6>
<br>
<span>{{ ad.location.gmap_address.formatted_address }}</span><br>
<span>Date de création : {{ ad.publishedAt|date("d/m/Y") }}</span>
</td>
<td>
{% if ad.getStatus() == "DECLINED" %}
<span class="">{{ ad.getStatus()|trans }}</span>
{% elseif ad.getStatus() == "PUBLISHED" %}
<span class="label label-success">Publiée</span>
{% elseif ad.getStatus() == "CLOSED" %}
<span class="label label-important">Clôturée</span>
{% elseif ad.getStatus() == "DRAFT" %}
<span class="label ">Brouillon</span>
{% elseif ad.getStatus() == "TO_PUBLISH" %}
<span class="label label-warning">En attente de validation</span>
{% else %}
<span class="">{{ ad.getStatus()|trans }}</span>
{% endif %}
</td>
<td>
{% if arrayByAds is defined %}
{{ arrayByAds[ad.id]["count"] }}
{% endif %}
</td>
<td>
{% if ad.getStatus() == "DRAFT" or ad.getStatus() == "DECLINED" %}
{#Edit#}
<a class=" td-none" href="{{ path('company_ad_edit', { 'id': ad.id }) }}"
style="margin-right: 10px">
<i class="pg-icon">pen</i>
</a>
{% else %}
{#Soft Edit#}
<a class=" td-none" href="{{ path('company_ad_soft_edit', { 'id': ad.id }) }}"
style="margin-right: 10px">
<i class="pg-icon">pen</i>
</a>
{% endif %}
{% if ad.getStatus() == "DRAFT" or ad.getStatus() == "DECLINED" %}
{#Video#}
<a class="tooltipped td-none" href="{{ path('create_media', { 'id': ad.id }) }}">
<i class="material-icons">
videocam
</i>
</a>
{% endif %}
{% if ad.getStatus() == "PUBLISHED" %}
{#Extension#}
{# ENLEVE LE 01/09 #}
{# <a class="tooltipped td-none" data-position="top" data-delay="0"
data-tooltip="{{ 'ad.company.dates.extension.label'|trans }}"
href="{{ path('company_ad_extension', { 'id': ad.id }) }}"
style="margin-right: 10px">
<i class="pg-icon">calendar</i>
</a> #}
{#Force ending#}
{# <a class="tooltipped td-none" data-position="top" data-delay="0"
data-tooltip="{{ 'ad.company.closed.label'|trans }}"
href="{{ path('company_ad_closed', { 'id': ad.id }) }}" style="margin-right: 10px">
<i class="material-icons">
close
</i>
</a> #}
{% endif %}
{% if ad.getStatus() == "TO_PUBLISH" or ad.getStatus() == "VALIDATED" or ad.getStatus() == "CLOSED" or ad.getStatus() == "EXPIRED" %}
{#Edit Dates#}
{# <a class="tooltipped td-none" data-position="top" data-delay="0"
data-tooltip="{{ 'ad.company.dates.edit.label'|trans }}"
href="{{ path('company_ad_step3', { 'id': ad.id }) }}" style="margin-right: 10px">
<i class="material-icons">
close
</i>
</a> #}
{% endif %}
</td>
<td>
{% if ad.countAnswersParStatut.nbATraiter > 0 %}
<a href="{{ path('company_ad_answer_list',{'id':ad.id}) }}">
<i class="fa fa-eye"></i>&nbsp; {{ ad.countAnswersParStatut.nbATraiter }}
</a>
{% else %}
0
{% endif %}
</td>
<td>
{% if ad.countAnswersParStatut.nbContacte > 0 %}
<a href="{{ path('company_ad_answer_list',{'id':ad.id}) }}">
<i class="fa fa-eye"></i>&nbsp; {{ ad.countAnswersParStatut.nbContacte }}
</a>
{% else %}
0
{% endif %}
</td>
<td>
{% if ad.countAnswersParStatut.nbRefuse > 0 %}
<a href="{{ path('company_ad_answer_list',{'id':ad.id}) }}">
<i class="fa fa-eye"></i>&nbsp; {{ ad.countAnswersParStatut.nbRefuse }}
</a>
{% else %}
0
{% endif %}
</td>
<td>
{% if ad.countAnswersParStatut.nbEntretien > 0 %}
<a href="{{ path('company_ad_answer_list',{'id':ad.id}) }}">
<i class="fa fa-eye"></i>&nbsp; {{ ad.countAnswersParStatut.nbEntretien }}
</a>
{% else %}
0
{% endif %}
</td>
<td>
{% if ad.countAnswersParStatut.nbEmbauche > 0 %}
<a href="{{ path('company_ad_answer_list',{'id':ad.id}) }}">
<i class="fa fa-eye"></i>&nbsp; {{ ad.countAnswersParStatut.nbEmbauche }}
</a>
{% else %}
0
{% endif %}
</td>
</tr>
{% endfor %}
{# <tr>
<td>
<a href="https://pp.talentstube.com/entreprise/me/espace-oe/annonce/116/reponse">
<h6>Directeur de la communication (F/H)</h6>
</a><br>
<span>Nantes, 44000</span><br>
<span>Date de création : 22/03/2021</span>
</td>
<td>
<span class="label label-success">Publiée</span>
</td>
<td>578</td>
<td>
<a class=" td-none" href="https://pp.talentstube.com/entreprise/me/espace-oe/annonce/124/editer" style="margin-right: 10px">
<i class="pg-icon">pen</i>
</a>
</td>
<td><a href="https://pp.talentstube.com/entreprise/me/espace-oe/annonce/116/reponse">3</a></td>
<td><a href="https://pp.talentstube.com/entreprise/me/espace-oe/annonce/116/reponse">4</a></td>
<td><a href="https://pp.talentstube.com/entreprise/me/espace-oe/annonce/116/reponse">4</a></td>
<td><a href="https://pp.talentstube.com/entreprise/me/espace-oe/annonce/116/reponse">8</a></td>
<td><a href="https://pp.talentstube.com/entreprise/me/espace-oe/annonce/116/reponse">1</a></td>
</tr>
<tr>
<td>
<h6>Responsable RRH (F/H)</h6><br>
<span>Vannes, 56000</span><br>
<span>Date de création : 01/02/2021</span>
</td>
<td>
<span class="label label-warning">En attente de validation</span>
</td>
<td>0</td>
<td>
<a class=" td-none" href="https://pp.talentstube.com/entreprise/me/espace-oe/annonce/124/editer" style="margin-right: 10px">
<i class="pg-icon">pen</i>
</a>
</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
</tr>
<tr>
<td>
<a href="https://pp.talentstube.com/entreprise/me/espace-oe/annonce/116/reponse">
<h6>Alternant communication(F/H)</h6>
</a><br>
<span>Pontivy, 56000</span><br>
<span>Date de création : 15/01/2021</span>
</td>
<td>
<span class="label label-important">Clôturée</span>
</td>
<td>1459</td>
<td>
<a class=" td-none" href="https://pp.talentstube.com/entreprise/me/espace-oe/annonce/124/editer" style="margin-right: 10px">
<i class="pg-icon">pen</i>
</a>
</td>
<td>0</td>
<td>0</td>
<td><a href="https://pp.talentstube.com/entreprise/me/espace-oe/annonce/116/reponse">12</a></td>
<td>0</td>
<td><a href="https://pp.talentstube.com/entreprise/me/espace-oe/annonce/116/reponse">1</a></td>
</tr> #}
</tbody>
</table>
</div>
</div>
</div>
<!-- Fin modifications Corentin -->
<!-- START CONTAINER FLUID -->
<div class=" container-fluid container-fixed-lg bg-white">
<!-- START card -->
<div class="card card-transparent">
<div class="card-header ">
<div class="card-title">Offres d'emploi
</div>
</div>
<div class="card-body">
<div class="table-responsive">
<table class="table table-hover" id="basicTable">
<thead>
<tr>
<!-- NOTE * : Inline Style Width For Table Cell is Required as it may differ from user to user
Comman Practice Followed
-->
<th style="width:20%">{{ 'ad.company.list.title'|trans }}</th>
<th style="width:20%">{{ 'ad.company.list.answers'|trans }}</th>
<th style="width:20%">{{ 'ad.company.list.views'|trans }}</th>
<th style="width:20%">{{ 'ad.company.list.status'|trans }}</th>
<th style="width:20%">{{ 'ad.company.list.actions'|trans }}</th>
</tr>
</thead>
<tbody>
{% for ad in ads %}
<tr>
<td class="v-align-middle ">
{% if ad.countAnswers > 0 %}
<a href="{{ path('company_ad_answer_list',{'id':ad.id}) }}">
{{ ad.title }}
</a>
{% else %}
{{ ad.title }}
{% endif %}
</td>
<td class="v-align-middle">
{% if ad.countAnswers > 0 %}
<a href="{{ path('company_ad_answer_list',{'id':ad.id}) }}">
<i class="fa fa-eye"></i>&nbsp; {{ ad.countAnswers }}
</a>
{% else %}
0
{% endif %}
</td>
<td class="v-align-middle">
{% if arrayByAds is defined %}
{{ arrayByAds[ad.id]["count"] }}
{% endif %}
</td>
<td class="v-align-middle">
{% if ad.getStatus() == "DECLINED" %}
<div class="">
<span class="">{{ ad.getStatus()|trans }}</span>
<i class="c-pointer fa fa-info-circle color-red" aria-hidden="true"></i>
</div>
{% else %}
<span class="">{{ ad.getStatus()|trans }}</span>
{% endif %}
</td>
<td class="v-align-middle">
{% if ad.getStatus() == "DRAFT" or ad.getStatus() == "DECLINED" %}
{#Edit#}
<a class=" td-none" href="{{ path('company_ad_edit', { 'id': ad.id }) }}"
style="margin-right: 10px">
<i class="pg-icon">pen</i>
</a>
{% else %}
{#Soft Edit#}
<a class=" td-none" href="{{ path('company_ad_soft_edit', { 'id': ad.id }) }}"
style="margin-right: 10px">
<i class="pg-icon">pen</i>
</a>
{% endif %}
{% if ad.getStatus() == "DRAFT" or ad.getStatus() == "DECLINED" %}
{#Video#}
<a class="tooltipped td-none" href="{{ path('create_media', { 'id': ad.id }) }}">
<i class="material-icons">
videocam
</i>
</a>
{% endif %}
{% if ad.getStatus() == "PUBLISHED" %}
{#Extension#}
{# ENLEVE LE 01/09 #}
{# <a class="tooltipped td-none" data-position="top" data-delay="0"
data-tooltip="{{ 'ad.company.dates.extension.label'|trans }}"
href="{{ path('company_ad_extension', { 'id': ad.id }) }}"
style="margin-right: 10px">
<i class="pg-icon">calendar</i>
</a> #}
{#Force ending#}
{# <a class="tooltipped td-none" data-position="top" data-delay="0"
data-tooltip="{{ 'ad.company.closed.label'|trans }}"
href="{{ path('company_ad_closed', { 'id': ad.id }) }}" style="margin-right: 10px">
<i class="material-icons">
close
</i>
</a> #}
{% endif %}
{% if ad.getStatus() == "TO_PUBLISH" or ad.getStatus() == "VALIDATED" or ad.getStatus() == "CLOSED" or ad.getStatus() == "EXPIRED" %}
{#Edit Dates#}
{# <a class="tooltipped td-none" data-position="top" data-delay="0"
data-tooltip="{{ 'ad.company.dates.edit.label'|trans }}"
href="{{ path('company_ad_step3', { 'id': ad.id }) }}" style="margin-right: 10px">
<i class="material-icons">
close
</i>
</a> #}
{% endif %}
</td>
</tr>
{% endfor %}
{% if ads|length == 0 %}
<tr>
<th colspan="5" class="text-center">Aucune offre pour le moment</th>
</tr>
{% endif %}
</tbody>
</table>
</div>
</div>
</div>
<!-- END card -->
</div>
<script type="text/javascript">
<!-- END CONTAINER FLUID
-->
@@ -1,5 +1,29 @@
{# {% extends 'company/base_dashboard_company.html.twig' %} #}
{% extends 'admin/base_dashboard.html.twig' %}
{% extends 'admin/base_dashboard_candidatures.html.twig' %}
{% block javascriptSupl %}
<link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/1.10.22/css/jquery.dataTables.min.css">
<link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/buttons/1.6.4/css/buttons.dataTables.min.css">
{# <script type="text/javascript" language="javascript" src="https://code.jquery.com/jquery-3.5.1.js"></script>
<script type="text/javascript" language="javascript" src="https://cdn.datatables.net/1.10.22/js/jquery.dataTables.min.js"></script>
<script type="text/javascript" language="javascript" src="https://cdn.datatables.net/buttons/1.6.4/js/dataTables.buttons.min.js"></script>
<script type="text/javascript" language="javascript" src="https://cdn.datatables.net/buttons/1.6.4/js/buttons.flash.min.js"></script> #}
<script type="text/javascript" src="https://code.jquery.com/jquery-3.5.1.js"></script>
<script type="text/javascript" src="https://cdn.datatables.net/1.10.22/js/jquery.dataTables.min.js"></script>
<script type="text/javascript" src="https://cdn.datatables.net/buttons/1.6.4/js/dataTables.buttons.min.js"></script>
<script type="text/javascript" language="javascript"
src="https://cdnjs.cloudflare.com/ajax/libs/jszip/3.1.3/jszip.min.js"></script>
<script type="text/javascript" language="javascript"
src="https://cdnjs.cloudflare.com/ajax/libs/pdfmake/0.1.53/pdfmake.min.js"></script>
<script type="text/javascript" language="javascript"
src="https://cdnjs.cloudflare.com/ajax/libs/pdfmake/0.1.53/vfs_fonts.js"></script>
<script type="text/javascript" language="javascript"
src="https://cdn.datatables.net/buttons/1.6.4/js/buttons.html5.min.js"></script>
<script type="text/javascript" language="javascript"
src="https://cdn.datatables.net/buttons/1.6.4/js/buttons.print.min.js"></script>
{% endblock %}
{% block dashContent %}
@@ -22,7 +46,7 @@
<!-- START CONTAINER FLUID -->
<div class=" container-fluid container-fixed-lg bg-white">
{# <div class=" container-fluid container-fixed-lg bg-white">
<!-- START card -->
<div class="card card-transparent">
<div class="card-header ">
@@ -59,15 +83,7 @@
href="{{ path('company_answer_show',{'id':answer.id }) }}">
<i class="pg-icon">eye</i>
</a>
<a href="#" class="note-action c-pointer" data-func="add" data-answer="{{ answer.id }}">
<i class="pg-icon">note</i>
</a>
{% for note in answer.notes %}
<a class="tooltipped note-action c-pointer" data-position="top" data-delay="50"
data-tooltip="{{ note.content }}" data-note="{{ note.id }}" data-func="edit">
<i class="pg-icon">comment</i>
</a>
{% endfor %}
</td>
</tr>
{% endfor %}
@@ -80,62 +96,162 @@
</div>
</div>
<!-- END card -->
</div>
</div> #}
<!-- END CONTAINER FLUID -->
<style type="text/css">
/* Hide default search box */
.dataTables_filter {
display: none;
}
</style>
<!-- START CONTAINER FLUID -->
<div class=" container-fluid container-fixed-lg bg-white">
<!-- START card -->
<div class="card card-transparent">
<div class="card-header ">
<div class="card-title">Candidatures spontanées
<div class="card-title">Candidatures
</div>
</div>
<div class="card-body">
<div class="table-responsive" id="spontaneous">
<table class="table table-hover" id="basicTable">
<table width="100%" class="table " style="">
<tr>
<th width="11%"><input id='input2' type='text' class='form-control'
placeholder='Recherche par nom' style='font-family:Arial, FontAwesome; width:100%' />
</th>
<th width="11%"><input id='input3' type='text' class='form-control'
placeholder='Recherche par prénom' style='font-family:Arial, FontAwesome; width:100%' />
</th>
<th width="25%">
<select id='input5' class='form-control'>
<option value="">Toutes les offres</option>
<option value="spontaneous">Candidatures spontanées</option>
{% for offre in offres %}
<option value="{{offre.title}}">{{offre.title}}</option>
{% endfor %}
</select>
</th>
<th width="25%">
<select id='input7' class='form-control'>
<option value="">Tous les statuts</option>
<option value="A_TRAITER">À traiter</option>
<option value="CONTACTE">Contacté</option>
<option value="ENTRETIEN">Entretien programmé</option>
<option value="REFUSE">Refusé</option>
<option value="EMBAUCHE">Embauché</option>
</select>
</th>
</tr>
</table>
<br />
<table id="candidatures_dt_table" width="100%" class="table table-hover ">
{# Add a tfoot which will actually be used to place the individual search boxes #}
<thead>
<tr>
<th width="4%">Vidéo</th>
<th width="6%">Nom</th>
<th width="6%">Prénom</th>
<th width="11%">Date de reception</th>
<th width="11%">Intitulé de l'offre</th>
<th width="25%">Localisation</th>
<th width="15%">Statut</th>
</tr>
</thead>
<tbody></tbody>
</table>
{#
<table class="table table-hover " id="">
<thead>
<tr>
<!-- NOTE * : Inline Style Width For Table Cell is Required as it may differ from user to user
Comman Practice Followed
-->
<th style="width:33%">{{ 'profile.talent.lastname'|trans }}
<th style="width:15%">{{ 'profile.talent.video'|trans }}
</th>
<th style="width:15%">{{ 'profile.talent.lastname'|trans }}
{{ 'profile.talent.firstname'|trans }}</th>
<th style="width:33%">{{ 'global.datereception.label'|trans }}</th>
<th style="width:33%" class="center-align">{{ 'ad.company.list.actions'|trans }}</th>
<th style="width:15%">{{ 'global.datereception.label'|trans }}</th>
<th style="width:15%">{{ 'ad.company.list.title'|trans }}</th>
<th style="width:15%">{{ 'ad.company.list.location'|trans }}</th>
<th style="width:15%" class="center-align">{{ 'ad.company.list.statut'|trans }}</th>
</tr>
</thead>
<tbody>
{% for answer in spontaneous %}
<tr>
<td>
<a href="{{ path('company_answer_show',{'id':answer.id }) }}">
{% if answer.video.thumbnails.0 is defined %}
{% set img = answer.video.thumbnails.0.sizes.1.link %}
{% else %}
{% set img = " " %}
{% endif %}
<img src="{{ img }}">
</a>
</td>
<td>
<a href="{{ path('company_answer_show',{'id':answer.id }) }}">{{ answer.user.lastname }}
{{ answer.user.firstname }}</a>
</td>
<td>{{ answer.sendTime()|date('d/m/Y') }}</td>
<td class="center-align">
<a title="" href="{{ path('company_answer_show',{'id':answer.id }) }}">
<i class="pg-icon">eye</i>
</a>
<a href="#" class="note-action c-pointer" data-func="add" data-answer="{{ answer.id }}">
<i class="pg-icon">note</i>
</a>
{% for note in answer.notes %}
<a class="tooltipped note-action c-pointer" data-position="top" data-delay="50"
data-tooltip="{{ note.content }}" data-note="{{ note.id }}" data-func="edit">
<i class="pg-icon">comment</i>
</a>
<td>
{% if answer.ad %}
{{ answer.ad.title }}
{% else %}
Candidature spontanée
{% endif %}
</td>
<td>
{% if answer.user.getGeoloc %}
{% for adress in answer.user.getGeoloc %}
{{ adress["locality"] }}, {{ adress["postal_code"] }}
{% endfor %}
{% else %}
Non renseignée
{% endif %}
</td>
<td class="center-align">
{% if answer.statusReponse =="EMBAUCHE" %}
<span class="label label-success">Embauché</span>
{% elseif answer.statusReponse =="REFUSE"%}
<span class="label label-important">Refusé</span>
{% elseif answer.statusReponse =="ENTRETIEN"%}
<span class="label label-warning">Entretien programmé</span>
{% elseif answer.statusReponse =="A_TRAITER"%}
<span class="label label-info">À traiter</span>
{% elseif answer.statusReponse =="CONTACTE"%}
<span class="label">Contacté</span>
{% else %}
<span class="label label-info">À traiter</span>
{% endif %}
</td>
</tr>
{% endfor %}
{% if answers|length == 0 %}
<tr><th colspan="3" class="text-center">Aucune candidature pour le moment</th></tr>
{% if spontaneous|length == 0 %}
<tr>
<th colspan="5" class="text-center">Aucune candidature pour le moment</th>
</tr>
{% endif %}
</tbody>
</table>
</table> #}
</div>
</div>
</div>
@@ -145,4 +261,130 @@
<div id="note-modal"></div>
<script>
$(document).ready(function () {
// Add a text input to each footer cell
var pos = 1;
var table = $('#candidatures_dt_table').DataTable({
"columnDefs": [{
"name": "video",
"targets": 0,
"searchable": true,
"orderable": false
},
{
"name": "nom",
"targets": 1,
"type": 'html',
"searchable": true,
"orderable": true
},
{
"name": "prenom",
"targets": 2,
"type": 'html',
"searchable": true,
"orderable": true
},
{
"name": "dateReception",
"targets": 3,
"searchable": true,
"orderable": true
},
{
"name": "offre",
"targets": 4,
"searchable": true,
"orderable": false
},
{
"name": "localisation",
"targets": 5,
"searchable": true,
"orderable": false
},
{
"name": "statusReponse",
"targets": 6,
"searchable": true,
"orderable": false
},
],
"processing": true,
"serverSide": true,
"ajax": {
"url": "{{ path('alimenterCandidaturesCompany') }}",
"type": 'POST',
},
"paging": true,
"info": true,
"searching": true,
"bFilter": true,
"responsive": true,
"pageLength": 10,
"order": [
[0, 'desc']
],
"language": {
"sProcessing": "En cours de chargement...",
"sSearch": "Rechercher&nbsp;:",
"sLengthMenu": "Afficher _MENU_ candidatures",
"sInfo": "Candidature de _START_ &agrave; _END_ sur _TOTAL_ candidatures",
"sInfoEmpty": "Candidature 0 &agrave; 0 sur 0 candidature",
"sInfoFiltered": "",
"sInfoPostFix": "",
"sLoadingRecords": "Chargement en cours...",
"sZeroRecords": "Aucune candidature ne correspond à votre recherche",
"sEmptyTable": "Aucune candidature disponible dans le tableau",
"oPaginate": {
"sFirst": "Premier",
"sPrevious": "Pr&eacute;c&eacute;dent",
"sNext": "Suivant",
"sLast": "Dernier"
},
"oAria": {
"sSortAscending": ": activer pour trier la colonne par ordre croissant",
"sSortDescending": ": activer pour trier la colonne par ordre d&eacute;croissant"
}
},
});
// Apply the search
pos = 1;
table.columns().every(function () {
var that = this;
$("#input" + pos).on('keyup change', function () {
console.log(this);
if (that.search() !== this.value) {
that
.search(this.value)
.draw();
}
});
pos++;
});
$('#candidatures_dt_table_filter').hide();
});
</script>
{% endblock %}
@@ -19,9 +19,13 @@
<ol class="breadcrumb">
<li class="breadcrumb-item"><a href="/entreprise/me/">Accueil</a></li>
<li class="breadcrumb-item "><a href="{{ path('company_answer_list') }}">Candidatures</a></li>
<li class="breadcrumb-item"><a
href="{{ path('company_ad_answer_list',{'id':answer.ad.id}) }}">{{ answer.ad.title }}
<li class="breadcrumb-item">
{% if answer.ad%}
<a href="{{ path('company_ad_answer_list',{'id':answer.ad.id}) }}">{{ answer.ad.title }}
</a>
{% else %}
<a href="{{ path('company_answer_list') }}">Candidature spontanée</a>
{% endif %}
</li>
<li class="breadcrumb-item active"><a href="#"> candidat {{ answer.user.firstname }}
{{ answer.user.lastname }}</a>
@@ -34,50 +38,116 @@
</div>
</div>
<!-- END JUMBOTRON -->
<div class="col-lg-12">
<div class="card card-borderless">
<ul class="nav nav-tabs nav-tabs-simple" role="tablist" data-init-reponsive-tabs="dropdownfx">
<li class="nav-item">
<a class="active" data-toggle="tab" role="tab" data-target="#candidature" href="#"
id="candidatureLien">Candidature</a>
</li>
<li class="nav-item">
<a href="#" data-toggle="tab" role="tab" data-target="#messagerieVideo"
id="messagerieVideoLien">Messagerie vidéo</a>
</li>
<li class="nav-item">
<a href="#" data-toggle="tab" role="tab" data-target="#messagerie"
id="messagerieLien">Messagerie
texte</a>
</li>
{# <li class="nav-item">
<a href="#" data-toggle="tab" role="tab" data-target="#comment" id="commentLien">Commentaire</a>
</li> #}
</ul>
</div>
<div class="tab-content">
<!-- ========== bloc candidature ========== -->
{% include 'company/answer_show_candidature.html.twig' %}
<!-- ========== bloc message video ========== -->
{% include 'company/answer_show_message_video.html.twig' %}
<!-- ========== bloc message texte ========== -->
{% include 'company/answer_show_message_texte.html.twig' %}
<!-- ========== bloc commentaire ========== -->
{# {% include 'company/answer_show_comment.html.twig' %} #}
<div class="row">
<div class="col-xl-12">
<div class="card-body">
<div class="col-xl-10 col-sm-12">
{% if answer.ad%}
<h5> <a href="{{ path('company_ad_answer_list',{'id':answer.ad.id}) }}">{{ answer.ad.title }}</a></h5>
{% else %}
<h5><a href="{{ path('company_answer_list') }}">Candidature spontanée</a></h5>
{% endif %}
<h6>Candidature reçue le {{ answer.cTime|date('d/m/Y') }}</h6>
</div>
</div>
</div>
</div>
<div class="col-xl-12 ">
<div class="card card-borderless col-xl-12 col-sm-12">
<div class="row profil-candidature">
<div class="col-xl-8 col-md-12 p-t-10">
<h4 class="bold">{{ answer.user.firstname }} {{ answer.user.lastname }}</h4>
<p>
{% if answer.user.getGeoloc %}
{% for adress in answer.user.getGeoloc %}
<i class="material-icons fs-16 tab-icon icons-candidatures">home</i>
{{ adress["locality"] }}, {{ adress["postal_code"] }}
{% endfor %}
{% endif %}
</p>
{% if answer.user.company.extra["phoneTalent"] is defined %}
<i class="material-icons fs-16 tab-icon icons-candidatures">phone</i><span id="telBouton"
class="visible"><a href="#" onClick="afficherNumero()">Afficher le numéro de
téléphone</a></span>{% if answer.user.company.extra["phoneTalent"] is defined %} <span
id="telSpan" class="invisible">Tel : {{ answer.user.company.extra["phoneTalent"] }}<span>
{% endif %}
{% endif %}
</div>
<div class="col-xl-4 col-md-12 profil-candidature-action">
<div class="dropdown candidature-action">
<button class="btn btn-primary btn-lg dropdown-toggle" type="button" id="dropdownMenu2"
data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
<span id="libelleBouton">
{% if answer.statusReponse =='CONTACTE' %}
Contacté
{% elseif answer.statusReponse =='REFUSE' %}
Refusé
{% elseif answer.statusReponse =='EMBAUCHE' %}
Embauché
{% elseif answer.statusReponse =='ENTRETIEN' %}
Entretien programmé
{% elseif answer.statusReponse =='A_TRAITER' %}
À traiter
{% else %}
À traiter
{% endif %}
</span>
</button>
<div class="dropdown-menu" aria-labelledby="dropdownMenu2">
<button class="dropdown-item" type="button" onClick="changerStatutAnswer('A_TRAITER', 'A traiter')">A traiter</button>
<button class="dropdown-item" type="button"
onClick="changerStatutAnswer('CONTACTE', 'Contacté')">Contacté</button>
<button class="dropdown-item" type="button"
onClick="changerStatutAnswer('REFUSE', 'Refusé')">Refusé</button>
<button class="dropdown-item" type="button" onClick="changerStatutAnswer('ENTRETIEN', 'Entretien programmé')">Entretien programmé</button>
<button class="dropdown-item" type="button"
onClick="changerStatutAnswer('EMBAUCHE', 'Embauché')">Embauché</button>
</div>
</div>
<a href="#" data-toggle="tab" role="tab"
data-target="#messagerieVideo" onClick="switcherMenu()">
<button aria-label="" type="button" class="btn btn-lg btn-seconday btn-cons">Contacter le candidat</button></a>
</div>
</div>
<ul class="nav nav-tabs nav-tabs-simple d-none d-md-flex d-lg-flex d-xl-flex" role="tablist"
data-init-reponsive-tabs="dropdownfx">
<li class="nav-item">
<a class="active" data-toggle="tab" role="tab" data-target="#candidature"
href="#" id="candidatureLien">Candidature</a>
</li>
<li class="nav-item">
<a href="#" data-toggle="tab" role="tab"
data-target="#messagerieVideo" id="messagerieVideoLien">Messagerie</a>
</li>
</ul>
</div>
<div class="col-xl-12 bg-white details-candidature">
<div class="tab-content">
<!-- ========== bloc candidature ========== -->
{% include 'company/answer_show_candidature.html.twig' %}
<!-- ========== bloc message video ========== -->
{% include 'company/answer_show_message_video.html.twig' %}
<!-- ========== bloc message texte ========== -->
{# {% include 'company/answer_show_message_texte.html.twig' %} #}
<!-- ========== bloc commentaire ========== -->
{# {% include 'company/answer_show_comment.html.twig' %} #}
</div>
</div>
</div>
@@ -89,6 +159,11 @@
{% block javascripts %}
{{ parent() }}
<script type="text/javascript">
function switcherMenu(){
$("#messagerieVideoLien").addClass("active");
$("#candidatureLien").removeClass("active");
console.log("messagerie active");
}
var urlDropzone = '{{ path("upload_media_message", {"id": message.getId()}) }}';
var urlDelete = '{{ path("delete_media_message", {"id": message.getId() }) }}'
var idObject = null;
@@ -105,6 +180,46 @@
<script src="{{ asset('/js/demo.js') }}"></script>
<script src="{{ asset('/js/scripts.js') }}"></script>
<script type="text/javascript">
function changerStatutAnswer(item, valeurBouton) {
console.log(item);
console.log({{answer.id}});
$("#libelleBouton").text(valeurBouton);
$.ajax({
//L'URL de la requête
url: "/app_dev.php/anwser/updateStatus/{{answer.id}}",
//url: '{{ path("anwser_share", {"id":'+id+'}) }}',
//La méthode d'envoi (type de requête)
method: "GET",
data: 'status=' + item,
//Le format de réponse attendu
dataType: "json",
})
//Ce code sera exécuté en cas de succès - La réponse du serveur est passée à done()
/*On peut par exemple convertir cette réponse en chaine JSON et insérer
* cette chaine dans un div id="res"*/
.done(function (response) {
console.log("La requête s'est terminée avec succes. Infos : " + JSON.stringify(response));
})
//Ce code sera exécuté en cas d'échec - L'erreur est passée à fail()
//On peut afficher les informations relatives à la requête et à l'erreur
.fail(function (error) {
console.log("La requête s'est terminée en échec. Infos : " + JSON.stringify(error));
})
//Ce code sera exécuté que la requête soit un succès ou un échec
.always(function () {
console.log("Requête effectuée");
});
}
function afficherNumero() {
$("#telBouton").hide();
$("#telSpan").removeClass("invisible").addClass("visible");
}
$(".card-action").click(function () {
var idVideo = $(this).data("id");
var titleVideo = $(this).data("title");
@@ -1,4 +1,97 @@
<!-- ========== bloc candidature ========== -->
<div class="tab-pane active" id="candidature">
<div class="row ">
<div class="col-xl-7 col-lg-6">
<!-- START card -->
<div class="full-height">
<div class="card-body">
<h5><i class="material-icons fs-18 tab-icon icons-candidatures">videocam</i>Candidature vidéo</h5>
<iframe src="https://player.vimeo.com/video/{{ answer.video.cdnUrl|replace({ "/videos/": ""}) }}"
width="100%" height="300px" frameborder="0" webkitallowfullscreen mozallowfullscreen
allowfullscreen></iframe>
</div>
<div class="card-body row">
{% if answer.user.company.cv %}
<div class="col-8">
<h5><i class="material-icons fs-18 tab-icon icons-candidatures">text_snippet</i>Curriculum vitae
</h5>
</div>
<div class="col-4">
<a href="/uploads/cv/{{ answer.user.company.cv }}" target="_blank">
<button aria-label="" type="button" class="btn btn-lg btn-seconday btn-cons m-b-10">Télécharger
le CV</button>
</a>
</div>
{% if extension=="doc" or extension=="docx" %}
<iframe width="100%" height="600"
src="http://docs.google.com/gview?url=https://www.recruteur.talentstube.com/uploads/cv/{{ answer.user.company.cv }}"></iframe>
{% else %}
<iframe width="100%" height="600"
src="/uploads/cv/{{ answer.user.company.cv }}"></iframe>
{% endif %}
{% endif %}
<!--<iframe width="100%" height="600" src="http://docs.google.com/gview?url=http://qualite-en-recherche.cnrs.fr/IMG/doc/pr-m1-09-ressources_humaines-30-1.doc&embedded=true"></iframe>-->
</div>
</div>
<!-- END card -->
</div>
<div class="col-xl-5 col-lg-6">
<!-- START card -->
<div class="card-body">
{{ form_start(formNote) }}
<div class="form-group form-group-default required">
<h5><i class="material-icons fs-18 tab-icon icons-candidatures">comment</i>Commentaires</h5>
{# <textarea class="form-control" id="exampleFormControlTextarea1"
placeholder="Ce commentaire sera visible uniquement par vous et les autres utilisateurs de lespace recruteur."
rows="5"></textarea> #}
<label for="note_ajax_content" >Ajouter un commentaire</label>
{{ form_widget(formNote.content) }}
</div>
<button class="btn btn btn-lg btn-outline-primary" type="submit">Valider le commentaire</button>
{{ form_end(formNote) }}
{% for note in answer.notes|reverse %}
<div class="card card-body">
<h6 class="card-title">{{ note.author.firstname }} {{ note.author.lastname }}</h6>
<p class="card-text">{{ note.content }}</p>
</div>
{% endfor %}
</div>
<!-- === Début : Bloc aide - À garder pour la prochaine v2
<div class="card-body">
<div class="form-group">
<i class="material-icons fs-18 tab-icon icons-candidatures">help_center</i><label for="">
<h5>Besoin d'aide</h5>
</label>
</div>
<div class="lien-aide">
<a href="">Comment répondre aux candidats en vidéo ?</a>
</div>
<div class="lien-aide">
<a href="">Comment contacter un candidat ?</a>
</div>
</div>-->
<!-- === Début : Bloc aide - À garder pour la prochaine v2-->
</div>
<!-- END card -->
</div>
</div>
<!-- ========== bloc message texte + video ========== -->
{#
<div class="tab-pane active" id="">
<div class="row ">
<div class="col-xl-7 col-lg-6 bg-white">
<!-- START card -->
@@ -16,8 +109,9 @@
<div class="card card-transparent">
<div class="card-header ">
<div class="card-title">
{% if answer.ad%}
<a href="{{ path('company_ad_answer_list',{'id':answer.ad.id}) }}">{{ answer.ad.title }}</a>
{% endif %}
</div>
</div>
<div class="card-body">
@@ -40,11 +134,12 @@
{{ answer.user.lastname }}
</p>
<p class="small hint-text m-t-5">
{% if answer.user.company %}
{% 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écharger le cv</button></a>
<a href="/uploads/cv/{{ answer.user.company.cv }}" target="_blank"><button aria-label=""
type="button" class="btn btn-outline-primary">Télécharger le cv</button></a>
{% endif %}
{% endif %}
{% endif %}
</p>
</div>
</div>
@@ -87,7 +182,7 @@
<!-- NOTE * : Inline Style Width For Table Cell is Required as it may differ from user to user
Comman Practice Followed
-->
<th style="width:15%">Objet</th>
<th style="width:15%">Envoyé le</th>
<th style="width:70%">Message</th>
@@ -124,14 +219,16 @@
</tr>
{% endfor %}
{% if answer.messages|length == 0 %}
<tr><th colspan="3" class="text-center">Aucun message pour le moment</th></tr>
<tr>
<th colspan="3" class="text-center">Aucun message pour le moment</th>
</tr>
{% endif %}
{% endif %}
</tbody>
</table>
</div>
</div>
</div>
</div>
</div> #}
@@ -93,7 +93,7 @@
</div> #}
</div>
<div class="form-group form-group-default required">
{{ form_row(form.status) }}
{# {{ form_row(form.status) }} #}
</div>
<div class="form-group required">
{{ form_row(form.message) }}
@@ -1,62 +1,189 @@
<div class="tab-pane fondBlanc" id="messagerieVideo">
<div class="row fondBlanc">
<div class="tab-pane" id="messagerieVideo">
<div class="row">
<div class="col-xl-7 col-lg-6">
<div class="full-height">
<div class="card-body">
<h5><i
class="material-icons fs-18 tab-icon icons-candidatures">message</i>Envoyer
un message au candidat</h5>
{{ form_start(formVideo) }}
{{ form_widget(formVideo._token, { 'id': 'token_video' }) }}
<div class="form-group form-group-default">
<label class="active">De : </label>
<input name="to" data-role="tagsinput" disabled
class="form-control tagsinput" type="text"
value="{{ app.user.firstname }} {{ app.user.lastname }}" />
</div>
<!-- START ITEM -->
<div class="col-lg-4 fondBlanc">
<div class="card card-default bg-success">
<div class="card-header separator">
<div class="card-title">Réponse vidéo
</div>
</div>
<div class="card-body">
<h3>
<span class="semi-bold">Et si vous répondiez à </span> {{ answer.user.firstname }} {{ answer.user.lastname }} <b>en vidéo</b></h3>
<p>Découvrez <a href="https://blog.talentstube.com/articles-entreprise/comment-faire-une-video-avec-une-webcam/" target="_blank">nos conseils</a> pour réaliser une vidéo de réponse.</p>
</div>
</div>
</div>
<!-- END ITEM -->
<div class="form-group form-group-default required" style="min-height:250px;">
<label for="contact_talent_message" class="active">Message</label>
{# <textarea id="contact_talent_message"
name="contact_talent[message]" required="required"
class="form-control"
placeholder="Rédigez un message de réponse"></textarea> #}
{{ form_widget(formVideo.message) }}
</div>
<!--<h6>Et si vous répondiez à [Nom du candidat] en vidéo ?</h6>-->
<p class="m-l-10 bold">Vous pouvez joindre une vidéo de réponse</p>
<p class="m-l-10">Pour une meilleure expérience candidat, motivez les
raisons de votre choix en vidéo.</p>
{% include 'message/message_create_import.twig' %}
<div class="form-group m-t-20" ;>
<button type="submit" aria-label=""
class="btn btn-primary btn-lg disabled">Envoyer le
message</button>
</div>
<div class="m-t-30">
<div class="row fondBlanc">
<h5><i
class="material-icons fs-18 tab-icon icons-candidatures">inbox</i>Historique
des messages envoyés</h5>
</div>
<div class="row fondBlanc">
<div class="card-body">
<div class="table-responsive">
<table class="table table-hover" id="basicTable">
<thead>
<tr>
<!-- NOTE * : Inline Style Width For Table Cell is Required as it may differ from user to user
Comman Practice Followed
-->
<th style="width:20%">Envoyé le</th>
<th style="width:30%">Expéditeur</th>
<th style="width:50%">Message</th>
</tr>
{% if answer.messages %}
{% for message in answer.messages if message.status != "DRAFT" %}
{% set class = '' %}
{% if loop.index > 1 %}
{% set class = 'history-hidden' %}
{% endif %}
<tr>
<td class="v-align-middle">
{{ message.uTime|date('d-m-Y h:m') }}
</td>
<td class="v-align-middle ">
{% if message.sender.company.type =="COMPANY" %}
Recruteur
{% elseif message.sender.company.type =="TALENT" %}
Talent
{% endif %}
</td>
<td class="v-align-middle">
{% if message.video %}
<div
class="embed-responsive embed-responsive-16by9">
<iframe
src="https://player.vimeo.com/video/{{ message.video.cdnUrl|replace({ "/videos/": ""}) }}"
width="100%" height="300"
frameborder="0"
webkitallowfullscreen
mozallowfullscreen
allowfullscreen></iframe>
</div>
{% endif %}
{{ message.content|nl2br }}
</td>
</tr>
{% endfor %}
{% if answer.messages|length == 0 %}
<tr>
<th colspan="3" class="text-center">Aucun
message pour le moment</th>
</tr>
{% endif %}
{% endif %}
</thead>
<tbody>
</tbody>
</table>
</div>
</div>
</div>
</div>
<!-- END COMPOSE EMAIL -->
{{ form_end(formVideo) }}
</div>
</div>
</div>
</div>
</div>
<div class="tab-pane fondBlanc" id="">
<div class="row fondBlanc">
<!-- START ITEM -->
<div class="col-lg-4 fondBlanc">
<div class="card card-default bg-success">
<div class="card-header separator">
<div class="card-title">Réponse vidéo
</div>
</div>
<div class="card-body">
<h3>
<span class="semi-bold">Et si vous répondiez à </span> Celia Machin
Auriol <b>en vidéo</b>
</h3>
<p>Découvrez <a
href="https://blog.talentstube.com/articles-entreprise/comment-faire-une-video-avec-une-webcam/"
target="_blank">nos conseils</a> pour réaliser une vidéo de
réponse.</p>
</div>
</div>
</div>
<!-- END ITEM -->
<div class="col-md-12 col-lg-8 col-xlg-8 md-m-t-10">
<!-- START WIDGET widget_weatherWidget-->
<div class="widget-17 card no-border no-margin widget-loader-circle">
<div class="widget-16-header p-r-20 p-l-20 p-t-10 d-flex">
<span class="icon-thumbnail bg-contrast-low pull-left text-color pg-icon">M</span>
<div class="flex-1 full-width overflow-ellipsis">
<p class="hint-text all-caps font-montserrat small no-margin overflow-ellipsis ">
Contacter
</p>
<h6 class="no-margin overflow-ellipsis ">par vidéo</h6>
</div>
</div>
<div class="card-body">
{{ form_start(formVideo) }}
{{ form_widget(formVideo._token, { 'id': 'token_video' }) }}
<div class="col-md-12 col-lg-8 col-xlg-8 md-m-t-10">
<!-- START WIDGET widget_weatherWidget-->
<div class="widget-17 card no-border no-margin widget-loader-circle">
<div class="widget-16-header p-r-20 p-l-20 p-t-10 d-flex">
<span
class="icon-thumbnail bg-contrast-low pull-left text-color pg-icon">M</span>
<div class="flex-1 full-width overflow-ellipsis">
<p
class="hint-text all-caps font-montserrat small no-margin overflow-ellipsis ">
Contacter
</p>
<h6 class="no-margin overflow-ellipsis ">par vidéo</h6>
</div>
</div>
<div class="card-body">
{{ form_start(formVideo) }}
{{ form_widget(formVideo._token, { 'id': 'token_video' }) }}
{% include 'message/message_create_import.twig' %}
<br />
{{ form_widget(formVideo.status, { 'id': 'contact_talent_status_video' }) }}
{{ form_rest(formVideo) }}
<br />
<div class="bottom-form">
<button type="submit" class="btn btn-default disabled">Envoyer</button>
</div>
{% include 'message/message_create_import.twig' %}
<br />
{# {{ form_widget(formVideo.status, { 'id': 'contact_talent_status_video' }) }} #}
{{ form_rest(formVideo) }}
<br />
<div class="bottom-form">
<button type="submit" class="btn btn-default disabled">Envoyer</button>
</div>
{{ form_end(formVideo) }}
</div>
</div>
<!-- END WIDGET -->
</div>
{{ form_end(formVideo) }}
</div>
</div>
<!-- END WIDGET -->
</div>
</div>
</div>
</div>
</div>
@@ -1,4 +1,4 @@
{% extends 'base_dashboard_temporaire.html.twig' %}
{% extends 'admin/base_dashboard.html.twig' %}
{% block content %}
@@ -1,7 +1,31 @@
{# {% extends 'company/base_dashboard_company.html.twig' %} #}
{% extends 'admin/base_dashboard.html.twig' %}
{% block dashContent %}
<!-- MODALS-->
<!-- Modal 0 -->
<div class="modal fade in bd-example-modal-lg" id="popupSubmitModal" tabindex="-1" role="dialog"
aria-labelledby="popupSubmitModalLabel" aria-hidden="false" data-show="false">
<div class="modal-dialog modal-lg" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="popupSubmitModalLabel">Votre offre demploi vidéo est en cours de validation par l'équipe Talents Tube</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body">
<p>Vous recevrez un e-mail lorsque votre offre demploi sera publiée sur la plateforme.</p>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal" onClick="submitFormAd()">Fermer</button>
</div>
</div>
</div>
</div>
<div class="row bg-bordered p-0">
{# {% include 'company/ad_steps.html.twig' with {'tab':2} %} #}
@@ -62,40 +86,34 @@
</div>
<!-- END JUMBOTRON -->
<div class=" container-fluid container-fixed-lg">
<div id="rootwizard" class="m-t-50">
<div class="col-lg-8 bloc-header">
<div class="card card-default container">
<div class="card-body">
<div class="row" style="min-height:10rem;">
<div class="col-8">
<h4 class="header-title" style="font-size:2em;line-height:1.5em;">Création d'une offre d'emploi vidéo</h4>
<p>Pour trouver le bon profil, renseignez et personnalisez votre annonce. <br>Plus votre annonce est précise et attractive, plus les candidatures seront ciblées.</p>
</div>
<div class="col-4" style="background-repeat: no-repeat; background-image: url('https://blog.talentstube.com/wp-content/uploads/2021/02/creer-offre-emploi-video.svg');background-size: contain;background-position: center;">
</div>
</div>
</div>
</div>
</div>
<div id="rootwizard" class="col-lg-10 m-t-50">
{% include 'company/ad_stepsV2.html.twig' with {'tab':2} %}
<div class="tab-content">
<div class="tab-pane padding-20 sm-no-padding slide-left disabled" id="tab1">
<div class="row row-same-height">
<div class="col-md-5 b-r b-dashed b-grey sm-b-b">
<div class="padding-30 sm-padding-5 sm-m-t-15 m-t-50">
<i class="material-icons hint-text">shopping_cart</i>
<h2>Etape 1 : détail de l'annonce</h2>
<p>Pour trouver le bon profil, renseignez et personnalisez votre annonce.
Plus votre annonce est précise et attractive, plus les candidatures seront ciblées.
Afin de créer votre annonce, renseignez lensemble des champs relatifs au poste proposé.</p>
{# <p class="small hint-text">Below is a sample page for your cart , Created using pages design
UI Elementes</p> #}
</div>
</div>
<div class="col-md-7">
<div class="padding-30 sm-padding-5">
</div>
</div>
</div>
</div>
<div class="tab-pane slide-left padding-20 sm-no-padding active" id="tab2">
<div class="row row-same-height">
<div class="col-md-6 b-r b-dashed b-grey ">
<div class="col-md-12 col-xl-6 ">
<div class="container-envoi-videos">
<div class="titre-bloc-envoi-videos">
<img src='https://www.talentstube.com/statique/images/capture.svg'class="image-envoi-video"/img>
<div class="texte-envoi-video">
<h4>Choix n°1</h4>
<h5>J<span class="underline">envoie</span> mes séquences vidéos à Talents Tube</h5>
<h5>J<span class="underline">envoie</span> mes séquences vidéo à Talents Tube</h5>
</div>
</div>
<div class="contenu-bloc-envoi-videos">
@@ -103,7 +121,7 @@ Afin de créer votre annonce, renseignez lensemble des champs relatifs au pos
{# {{ form_row(form.brochure) }}
{{ form_row(form.brochure1) }}
{{ form_row(form.brochure2) }} #}
<p>Envoyez les séquences vidéos et Talents Tube soccupe pour vous du montage complet de votre offre demploi sous <span class="underline">48h</span></p>
<p>Envoyez les séquences vidéo et Talents Tube soccupe pour vous du montage complet de votre offre demploi sous <span class="underline">48h</span></p>
<label for="etape-import-video">Vidéo 1 : Présentation de lentreprise</label>
{{ form_row(formFile.file1) }}
{# <input type="file" id="avatar" name="avatar" accept="image/png, image/jpeg"> #}
@@ -113,13 +131,14 @@ Afin de créer votre annonce, renseignez lensemble des champs relatifs au pos
<label for="etape-import-video">Vidéo 3 : Témoignage dun collaborateur</label>
{{ form_row(formFile.file3) }}
{# <input type="file" id="avatar" name="avatar" accept="image/png, image/jpeg"> #}
<button aria-label class="btn btn-primary" type="submit" onClick='$("#encours").show();'>Envoyer les séquences vidéos</button>
{# <button aria-label="" class="btn btn-info btn-lg btn-icon-right m-b-10" type="submit"><span class="">Envoyer les séquences vidéo</span><i class="pg-icon" onclick="$(&quot;#encours&quot;).show();">send</i></button> #}
<button aria-label class="btn btn-info btn-lg m-b-10" type="submit" onClick='$("#encours").show();'><span class="">Envoyer les séquences vidéo</span></button>
{{ form_end(formFile) }}
{% if message !="" %}
<div class="green center-align" style="border-radius:10px;padding:20px;color:#FFF;">{{ message }}</div>
{% else %}
<div class=" center-align" id="encours">Vos séquences vidéos sont en cours denvoi...
<div class=" center-align" id="encours">Vos séquences vidéo sont en cours denvoi...
Veuillez rester sur la page pendant le chargement qui peut durer plusieurs minutes.
</div>
@@ -134,7 +153,7 @@ Talents Tube peut vous accompagner dans la réalisation de votre
vidéo d'offre d'emploi. <a href="https://blog.talentstube.com/contact" target="_blank">Contactez-nous</a></p>
</div>-->
</div>
<div class="col-md-6">
<div class="col-md-12 col-xl-6">
<div class="padding sm-padding-5" id="tab-video-new">
<div class="container-envoi-videos">
<div class="titre-bloc-envoi-videos">
@@ -152,23 +171,26 @@ vidéo d'offre d'emploi. <a href="https://blog.talentstube.com/contact" target="
{{ form_row(form.brochure1) }}
{{ form_row(form.brochure2) }} #}
<br/>
<a href="{{ path('company_ad_edit',{"id": ad.getId()}) }}" class="btn btn-round btn-dark">
<button aria-label="" class="btn btn-primary btn-cons btn-animated from-left pull-right"
type="button">
<span>Retour au détail de l'annonce </span>
<span class="hidden-block">
<i class="material-icons fs-16">info</i>
</span>
</button>
</a>
<button aria-label="" id="submit" type="submit" class="btn btn-primary btn-cons btn-animated from-left pull-right hide"
type="button">
<span>Valider l'annonce</span>
<span class="hidden-block">
<i class="material-icons fs-16">save</i>
</span>
</button>
<div class="row">
<div class="col-6">
<a href="{{ path('company_ad_edit',{"id": ad.getId()}) }}" >
<button aria-label="" class="btn btn-default btn-lg m-b-10"
type="button">
<span>Retour </span>
</button>
</a>
</div>
<div class="col-6">
<button aria-label="" id="submit" data-toggle="modal"
data-target="#popupSubmitModal" type="" class="btn btn-primary btn-lg m-b-10 hide"
type="button">
<span>Publier l'offre</span>
</button>
</div>
</div>
{{ form_end(form) }}
</div>
</div>
@@ -253,10 +275,7 @@ vidéo d'offre d'emploi. <a href="https://blog.talentstube.com/contact" target="
</li>
</ul> #}
</div>
<div class="wizard-footer padding-20 bg-contrast-low">
<div class="clearfix"></div>
</div>
</div>
</div>
</div>
@@ -301,7 +320,11 @@ vidéo d'offre d'emploi. <a href="https://blog.talentstube.com/contact" target="
{% else %}
var videoExist = false;
{% endif %}
//function appelée lors de la confirmation de popup
function submitFormAd(){
$('#form_media').submit();
}
</script>
<script src="{{ asset('/js/dropzoneV2.js') }}"></script>
{% endblock %}
@@ -50,13 +50,339 @@
</div>
</div>
<script>
document.location.href="/entreprise/me/profil";
document.location.href = "/entreprise/me/profil";
</script>
{# {{ render("/entreprise/me/profil") }} #}
</div>
{% endif %}
{% include 'company/ad_table_listing.html.twig' with {'ads':ads} %}
<!-- START JUMBOTRON -->
<div class="jumbotron" data-pages="parallax">
<div class=" container-fluid container-fixed-lg sm-p-l-0 sm-p-r-0">
<div class="inner" style="transform: translateY(0px); opacity: 1;">
<!-- START BREADCRUMB -->
<ol class="breadcrumb">
<li class="breadcrumb-item"><a href="https://recruteur.talentstube.com/entreprise/me/">Accueil</a></li>
</ol>
<!-- END BREADCRUMB -->
</div>
</div>
</div>
<!-- END JUMBOTRON -->
<!--Boutons actions Tableau de bord -->
<div class=" container-fluid container-fixed-lg bloc-tdb">
<!-- START card -->
<div class="col-lg-12">
<div class="card card-default container">
<div class="row">
<div class="col-md">
<a href="{{path('company_ad_create')}}">
<button class="card-action" type="button">
<span class="material-icons">movie_creation</span>
<div class="row lien-fleche" style="justify-content: center; align-items: center">
<h6 class="col-10">Créer une offre demploi vidéo</h6>
<span class="material-icons col-2 fleche">arrow_right_alt</span>
</div>
</button>
</a>
</div>
<div class="col-md" type="button">
<a href="{{path('company_ad')}}">
<button class="card-action" style="" type="button">
<span class="material-icons" style="">work</span>
<div class="row lien-fleche" style="justify-content: center; align-items: center">
<h6 class="col-10">Gérer mes offres demploi</h6>
<span class="material-icons col-2 fleche">arrow_right_alt</span>
</div>
</button>
</a>
</div>
<div class="col-md" type="button">
<a href="{{path('company_answer_list')}}">
<button class="card-action" style="" type="button">
<span class="material-icons" style="">face</span>
<div class="row lien-fleche" style="justify-content: center; align-items: center">
<h6 class="col-10">Gérer mes candidatures</h6>
<span class="material-icons col-2 fleche">arrow_right_alt</span>
</div>
</button>
</a>
</div>
</div>
</div>
</div>
</div>
<!--Fin Boutons actions Tableau de bord -->
<!--Blocs statistiques Tableau de bord -->
<div class=" container-fluid container-fixed-lg bloc-tdb">
<!-- START card -->
<div class="col-lg-12">
<div class="card card-default container">
<div class="row">
<div class="col-lg text-card">
<div class="bloc-stats">
<span class="font-montserrat fs-11 all-caps">Nombre total de candidats</span>
<h3 class="bold no-margin p-b-5"><a class="bold no-margin p-b-5"
href="{{ path('company_answer_list') }}">{{nbAnswersSended}}</a></h3>
<span class="fs-12 ">Nouveaux candidats</span>
<h4 class="bold no-margin" class=""><a class="bold no-margin"
href="{{ path('company_answer_list') }}">+{{nbAnswersSended}}</a></h4>
</div>
</div>
<div class="col-lg text-card">
<div class="bloc-stats">
<span class="font-montserrat fs-11 all-caps">Visites de la page entreprise</span>
<h3 class="bold no-margin p-b-5">{{ records.totalRecordsCompany }}</h3>
<div class="row">
<div class="col-sm vertical-border" border-right: 1px solid white;>
<span class="fs-12">7 derniers jours</span>
<h4 class="bold no-margin">+{{ records7days.totalRecordsCompany }}</h4>
</div>
<div class="col-sm">
<span class="fs-12">30 derniers jours</span>
<h4 class="bold no-margin" style="opacity:0.75">+{{ records30days.totalRecordsCompany }}
</h4>
</div>
</div>
</div>
</div>
<div class="col-lg text-card">
<div class="bloc-stats">
<span class="font-montserrat fs-11 all-caps">Vues globales des offres demploi</span>
<h3 class="bold no-margin p-b-5">{{ records.totalRecords-records.totalRecordsCompany }}</h3>
<div class="row">
<div class="col-sm vertical-border">
<span class="fs-12">7 derniers jours</span>
<h4 class="bold no-margin">
+{{ records7days.totalRecords-records7days.totalRecordsCompany }}</h4>
</div>
<div class="col-sm">
<span class="fs-12">30 derniers jours</span>
<h4 class="bold no-margin" style="opacity:0.75">+{{ records30days.totalRecordsCompany }}
</h4>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<!--Fin Blocs statistiques Tableau de bord -->
<!-- START CONTAINER FLUID -->
<!-- START CONTAINER FLUID -->
{# <div class=" container-fluid container-fixed-lg bg-white">
<!-- START card -->
<div class="card card-transparent">
<div class="card-header ">
<div class="card-title">Statistiques</div>
</div>
<div class="row">
<div class="col-lg-12 col-xl-12 col-xlg-12">
<div class="col-md-12 m-b-10" style="display:flex;">
<!-- Nombre de candidatures vidéo - START WIDGET D3 widget_graphTileFlat-->
<div class="widget-8 card m-r-15 widget-loader-bar card-header card-background-1">
<div class="container-xs-height">
<!--full-height-->
<div class="">
<!--row-xs-height -->
<div class="col-xs-height col-top">
<div class="">
<!--card-header top-left top-right -->
<div class="card-title text-card">
<span class="font-montserrat fs-11 all-caps">Nombre total de
candidats</span>
</div>
</div>
</div>
</div>
<div class="row-xs-height">
<div class="col-xs-height col-top relative">
<div class="row full-height">
<div class="col-sm-12 text-card">
<h3 class="bold no-margin p-b-5 text-card"><a
class="bold no-margin p-b-5 text-card"
href="{{ path('company_answer_list') }}">{{nbAnswersSended}}</a>
</h3>
</div>
<div class="col-sm-8">
<div
class="p-l-0 full-height d-flex flex-column justify-content-between text-card">
<p class="small m-t-5 m-b-0">
<span class="fs-12 ">Nouveaux candidats</span>
</p>
<h4 class="bold no-margin"><a class="bold no-margin"
href="{{ path('company_answer_list') }}">+{{nbAnswersSended}}</a>
</h4>
</div>
</div>
<!--<div class="col-sm-5">
<div class="p-l-0 full-height d-flex flex-column justify-content-between text-card">
<p class="small m-t-5 m-b-0">
<span class="fs-12 ">30 derniers jours</span>
</p>
<h4 class="bold no-margin" style="opacity:0.75">+48</h4>
</div>
</div>-->
</div>
<!--<div class="widget-8-chart line-chart" data-line-color="white" data-points="true" data-point-color="warning" data-stroke-width="2">
</div>-->
</div>
</div>
</div>
</div>
<!-- END WIDGET -->
<!-- Nombre de visite page entreprise vidéo - START WIDGET D3 widget_graphTileFlat-->
<div class="widget-8 card m-r-15 widget-loader-bar card-header card-background-2">
<div class="container-xs-height">
<div class="">
<!--row-xs-height -->
<div class="col-xs-height col-top">
<div class="">
<!--card-header top-left top-right -->
<div class="card-title text-card">
<span class="font-montserrat fs-11 all-caps">Visites de la page
entreprise</span>
</div>
</div>
</div>
</div>
<div class="row-xs-height">
<div class="col-xs-height col-top relative">
<div class="row full-height">
<div class="col-sm-12 text-card">
<h3 class="bold no-margin p-b-5 text-card">{{ records.totalRecordsCompany }}
</h3>
</div>
<div class="col-sm-5 vertical-border">
<div
class="p-l-0 full-height d-flex flex-column justify-content-between text-card">
<p class="small m-t-5 m-b-0">
<span class="fs-12 ">7 derniers jours</span>
</p>
<h4 class="bold no-margin">+{{ records7days.totalRecordsCompany }}</h4>
</div>
</div>
<div class="col-sm-5">
<div
class="p-l-0 full-height d-flex flex-column justify-content-between text-card">
<p class="small m-t-5 m-b-0">
<span class="fs-12 ">30 derniers jours</span>
</p>
<h4 class="bold no-margin" style="opacity:0.75">
+{{ records30days.totalRecordsCompany }}</h4>
</div>
</div>
</div>
<!--<div class="widget-8-chart line-chart" data-line-color="white" data-points="true" data-point-color="warning" data-stroke-width="2">
</div>-->
</div>
</div>
</div>
</div>
<!-- END WIDGET -->
<!-- Nombre de visites global offres d'emploi --START WIDGET D3 widget_graphTileFlat-->
<div class="widget-8 card no-margin widget-loader-bar card-header card-background-3">
<div class="container-xs-height">
<div class="">
<!--row-xs-height -->
<div class="col-xs-height col-top">
<div class="">
<!--card-header top-left top-right -->
<div class="card-title text-card">
<span class="font-montserrat fs-11 all-caps">Vues globales des offres
demploi</span>
</div>
</div>
</div>
</div>
<div class="row-xs-height">
<div class="col-xs-height col-top relative">
<div class="row full-height">
<div class="col-sm-12 text-card">
<h3 class="bold no-margin p-b-5 text-card">
{{ records.totalRecords-records.totalRecordsCompany }}</h3>
</div>
<div class="col-sm-5 vertical-border">
<div
class="p-l-0 full-height d-flex flex-column justify-content-between text-card">
<p class="small m-t-5 m-b-0">
<span class="fs-12 ">7 derniers jours</span>
</p>
<h4 class="bold no-margin">
+{{ records7days.totalRecords-records7days.totalRecordsCompany }}
</h4>
</div>
</div>
<div class="col-sm-5">
<div
class="p-l-0 full-height d-flex flex-column justify-content-between text-card">
<p class="small m-t-5 m-b-0">
<span class="fs-12 ">30 derniers jours</span>
</p>
<h4 class="bold no-margin" style="opacity:0.75">
+{{ records30days.totalRecords-records30days.totalRecordsCompany }}
</h4>
</div>
</div>
</div>
<!--<div class="widget-8-chart line-chart" data-line-color="white" data-points="true" data-point-color="warning" data-stroke-width="2">
</div>-->
</div>
</div>
</div>
</div>
<!-- END WIDGET -->
</div>
</div>
</div>
</div>
<!--class="col-lg-8 sm-p-b-10 md-p-b-10"-->
</div> #}
<!-- END card -->
{% endblock %}
@@ -65,178 +391,192 @@
{# <script src="{{ asset('/js/vendors/Chart.bundle.min.js') }}"></script> #}
<script type="text/javascript">
var currentMonth = '{{ "now"|date("m") }}';
var arrayRecords;
{# var ctx, myChart, arrayCurrentsLabel, arrayCurrentsAdsValues, arrayCurrentsCompanyValues, donughtRecords; #}
var arrayRecords; {
#
var ctx, myChart, arrayCurrentsLabel, arrayCurrentsAdsValues, arrayCurrentsCompanyValues, donughtRecords;#
}
var sumVisitsAds = 0;
var sumCompanyValues = 0;
{# function loadChartData() {
setArrayValues();
myChart.update();
myDoughnutChart.update();
} #}
{# function getChartData(date1, date2) {
$.ajax({
type: "POST",
url: '{{ path("company_ajax_dashboard") }}',
data: 'date1=' + date1 + '&date2=' + date2,
dataType: "json",
success: function (data) {
arrayRecords = data.lineRecords;
donughtRecords = data.donughtRecords;
myDoughnutChart.data.datasets[0].data = donughtRecords;
loadChartData();
$('.fa-refresh').hide();
},
error: function (data) {
$('.fa-refresh').hide();
}
});
} #}
{# document.addEventListener("DOMContentLoaded", function (event) {
$('.fa-refresh').hide();
getChartData(0, 0);
configDatePicker = {
applyBtnClass: 'btn btn-default',
format: 'DD-MM-YYYY',
separator: ' au ',
endDate: new Date(),
maxDays: 365
}
$('#choiceMonth').dateRangePicker(configDatePicker).bind('datepicker-apply', function (event, obj) {
$('.fa-refresh').show();
var month1 = obj.date1.getMonth();
var day1 = obj.date1.getDate();
var year1 = obj.date1.getFullYear();
var month2 = obj.date2.getMonth();
var day2 = obj.date2.getDate();
var year2 = obj.date2.getFullYear();
var date1 = (month1 + 1) + "/" + day1 + "/" + year1 + " 00:00:01";
var date2 = (month2 + 1) + "/" + day2 + "/" + year2 + " 23:59:59";
getChartData(date1, date2);
});
$('.apply-btn').attr('value', 'Valider');
}); #}
{# function setArrayValues() {
arrayCurrentsLabel = [];
arrayCurrentsAdsValues = [];
arrayCurrentsCompanyValues = [];
arrayRecords['labels'].forEach(function (element, index) {
var date = element.split("-");
var dateAffiche = date[2] + "-" + date[1] + "-" + date[0];
arrayCurrentsLabel.push(dateAffiche);
arrayCurrentsAdsValues.push(arrayRecords['datasetsAd'][index]);
arrayCurrentsCompanyValues.push(arrayRecords['datasetsCompany'][index]);
});
myChart.data.labels = arrayCurrentsLabel;
myChart.data.datasets[0].data = arrayCurrentsAdsValues;
myChart.data.datasets[1].data = arrayCurrentsCompanyValues;
if (arrayCurrentsAdsValues.length > 0) {
sumVisitsAds = arrayCurrentsAdsValues.reduce(function (memo, val) {
let value = val || 0;
if (value != null) {
return memo + value;
}
});
} else {
sumVisitsAds = 0;
}
if (arrayCurrentsCompanyValues.length > 0) {
sumCompanyValues = arrayCurrentsCompanyValues.reduce(function (memo, val) {
let value = val || 0;
if (value != null) {
return memo + value;
}
});
} else {
sumCompanyValues = 0;
}
$('.countVisitsAds').html(sumVisitsAds);
$('.countVisitsCompany').html(sumCompanyValues);
{
#
function loadChartData() {
setArrayValues();
myChart.update();
myDoughnutChart.update();
}#
}
var dataLine = {
datasets: [{
label: "Nombre de visite d'annonce par jour",
fill: false,
fontColor: "rgba(39,139,231,1)",
backgroundColor: "rgba(39,139,231,1)",
borderColor: "rgba(39,139,231,1)"
}, {
label: "Nombre de visite de votre page entreprise",
fill: false,
fontColor: "#F9C339",
backgroundColor: "#F9C339",
borderColor: "#F9C339"
}]
};
{
#
function getChartData(date1, date2) {
$.ajax({
type: "POST",
url: '{{ path("company_ajax_dashboard") }}',
data: 'date1=' + date1 + '&date2=' + date2,
dataType: "json",
success: function (data) {
arrayRecords = data.lineRecords;
donughtRecords = data.donughtRecords;
myDoughnutChart.data.datasets[0].data = donughtRecords;
loadChartData();
$('.fa-refresh').hide();
},
error: function (data) {
$('.fa-refresh').hide();
}
});
}#
}
var ctx = document.getElementById("nb_visits");
var myChart = new Chart(ctx, {
type: 'line',
data: dataLine,
options: {
legend: {
display: false
},
scales: {
xAxes: [{
display: true,
scaleLabel: {
display: true,
labelString: 'Date'
}
}],
yAxes: [{
ticks: {
min: 0
},
scaleLabel: {
display: true,
labelString: 'Valeur'
}
}]
{
#
document.addEventListener("DOMContentLoaded", function (event) {
$('.fa-refresh').hide();
getChartData(0, 0);
configDatePicker = {
applyBtnClass: 'btn btn-default',
format: 'DD-MM-YYYY',
separator: ' au ',
endDate: new Date(),
maxDays: 365
}
}
});
$('#choiceMonth').dateRangePicker(configDatePicker).bind('datepicker-apply', function (event, obj) {
$('.fa-refresh').show();
var month1 = obj.date1.getMonth();
var day1 = obj.date1.getDate();
var year1 = obj.date1.getFullYear();
var month2 = obj.date2.getMonth();
var day2 = obj.date2.getDate();
var year2 = obj.date2.getFullYear();
var date1 = (month1 + 1) + "/" + day1 + "/" + year1 + " 00:00:01";
var date2 = (month2 + 1) + "/" + day2 + "/" + year2 + " 23:59:59";
getChartData(date1, date2);
});
$('.apply-btn').attr('value', 'Valider');
});#
}
var dataDonught = {
labels: [
"Visites de talents",
"Visites d'entreprises",
"Visites d'internautes non inscrit"
],
datasets: [{
data: donughtRecords,
backgroundColor: [
"#FF6384",
"#36A2EB",
"#FFCE56"
{
#
function setArrayValues() {
arrayCurrentsLabel = [];
arrayCurrentsAdsValues = [];
arrayCurrentsCompanyValues = [];
arrayRecords['labels'].forEach(function (element, index) {
var date = element.split("-");
var dateAffiche = date[2] + "-" + date[1] + "-" + date[0];
arrayCurrentsLabel.push(dateAffiche);
arrayCurrentsAdsValues.push(arrayRecords['datasetsAd'][index]);
arrayCurrentsCompanyValues.push(arrayRecords['datasetsCompany'][index]);
});
myChart.data.labels = arrayCurrentsLabel;
myChart.data.datasets[0].data = arrayCurrentsAdsValues;
myChart.data.datasets[1].data = arrayCurrentsCompanyValues;
if (arrayCurrentsAdsValues.length > 0) {
sumVisitsAds = arrayCurrentsAdsValues.reduce(function (memo, val) {
let value = val || 0;
if (value != null) {
return memo + value;
}
});
} else {
sumVisitsAds = 0;
}
if (arrayCurrentsCompanyValues.length > 0) {
sumCompanyValues = arrayCurrentsCompanyValues.reduce(function (memo, val) {
let value = val || 0;
if (value != null) {
return memo + value;
}
});
} else {
sumCompanyValues = 0;
}
$('.countVisitsAds').html(sumVisitsAds);
$('.countVisitsCompany').html(sumCompanyValues);
}
var dataLine = {
datasets: [{
label: "Nombre de visite d'annonce par jour",
fill: false,
fontColor: "rgba(39,139,231,1)",
backgroundColor: "rgba(39,139,231,1)",
borderColor: "rgba(39,139,231,1)"
}, {
label: "Nombre de visite de votre page entreprise",
fill: false,
fontColor: "#F9C339",
backgroundColor: "#F9C339",
borderColor: "#F9C339"
}]
};
var ctx = document.getElementById("nb_visits");
var myChart = new Chart(ctx, {
type: 'line',
data: dataLine,
options: {
legend: {
display: false
},
scales: {
xAxes: [{
display: true,
scaleLabel: {
display: true,
labelString: 'Date'
}
}],
yAxes: [{
ticks: {
min: 0
},
scaleLabel: {
display: true,
labelString: 'Valeur'
}
}]
}
}
});
var dataDonught = {
labels: [
"Visites de talents",
"Visites d'entreprises",
"Visites d'internautes non inscrit"
],
hoverBackgroundColor: [
"#FF6384",
"#36A2EB",
"#FFCE56"
]
}]
};
var ctxDonught = document.getElementById("donught_visits");
var myDoughnutChart = new Chart(ctxDonught, {
type: 'doughnut',
data: dataDonught,
options: {
legend: {
display: false,
},
animation: {
animateScale: true
datasets: [{
data: donughtRecords,
backgroundColor: [
"#FF6384",
"#36A2EB",
"#FFCE56"
],
hoverBackgroundColor: [
"#FF6384",
"#36A2EB",
"#FFCE56"
]
}]
};
var ctxDonught = document.getElementById("donught_visits");
var myDoughnutChart = new Chart(ctxDonught, {
type: 'doughnut',
data: dataDonught,
options: {
legend: {
display: false,
},
animation: {
animateScale: true
}
}
}
}); #}
});#
}
</script>
{% endblock %}
File diff suppressed because one or more lines are too long
@@ -0,0 +1,230 @@
{% extends "baseLanding.html.twig" %}
{% block title %}Valorisez votre métier d'aide à domicile et recrutez grâce à la vidéo{% endblock %}
{% block meta %}
<meta name="description"
content="Vous souhaitez améliorer l'attractivité de votre métier ? Avec le recrutement vidéo, valorisez sa richesse réelle et recrutez des aides à domicile en vidéo.">
<meta property="og:locale" content="fr_FR">
<meta property="og:type" content="website">
<meta property="og:title" content="Valorisez votre métier d'aide à domicile et recrutez grâce à la vidéo">
<meta property="og:description"
content="Vous souhaitez améliorer l'attractivité de votre métier ? Avec le recrutement vidéo, valorisez sa richesse réelle et recrutez des aides à domicile en vidéo.">
<meta property="og:url" content="https://recruteur.talentstube.com/recrutement-aide-a-domicile">
<meta property="og:site_name" content="Talents Tube">
<meta property="og:image"
content="https://recruteur.talentstube.com/landing/img/reussir-son-recrutement-aide-a-domicile-avec-la-video.jpg" />
<meta name="twitter:card" content="summary_large_image" />
{% endblock %}
{% block modalCallToAction %}
{{ parent() }}
{% endblock %}
{% block main %}
<main>
<!--Header : Menu et Vidéo en fond-->
<header class="hero-section-aide-domicile">
<!--HTML5 Video-->
<video autoplay loop muted id="bgvid" poster="">
<source src="/landing/video/recrutement-aide-a-domicile.mp4" type="video/mp4" alt="Recrutement d'aide à domicile">
<!--Prévoir une image fixe pour la version mobile : main.css : 102-->
</video>
<!--HTML5 Video end-->
<div class="overlay"></div>
<div class="container">
<div class="row">
<div class="col-md-12">
<div class="logo-header" style="display:inline-block;">
<img src="/landing/img/talentstube-logo-blanc.svg" data-at2x="/landing/img/talentstube-logo-blanc@2x.svg"
alt="Talents Tube" class="logo-talentstube" style="width:150px">
</div>
</div>
</div>
</div>
<!--nav-->
<nav class="navbar-default">
<!-- clas="navbar"-->
<div class="container">
<div class="logo-brand">
<img src="https://blog.talentstube.com/wp-content/uploads/2021/02/TalentsTube-logo-blanc.svg"
data-at2x="https://blog.talentstube.com/wp-content/uploads/2021/02/TalentsTube-logo-blanc.svg"
alt="Talents Tube, plateforme de recrutement en vidéo" class="logo-head">
</div>
<!--<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-navbar-collapse-1">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
</div>-->
<div class="collapse navbar-collapse" id="bs-navbar-collapse-1">
<div class="row">
<div class="logo-header" style="display:inline-block;">
<img src="https://blog.talentstube.com/wp-content/uploads/2021/02/talents-tube-logo-color.svg'"
data-at2x="https://blog.talentstube.com/wp-content/uploads/2021/02/talents-tube-logo-color.svg"
alt="Talents Tube" class="logo-nav">
</div>
<ul class="nav navbar-nav navbar-right">
<li>
<div class="mj-w-button mj-w-btn bttn" data-toggle="modal" data-target="#exampleModal">Demander un
rendez-vous</div>
</li>
</ul>
</div>
</div>
</div>
</nav>
<!--nav end-->
<div class="container">
<div class="row">
<div class="col-md-12">
<!--welcome-message-->
<div class="welcome-message">
<h1>Comment réussir son recrutement d'aide à domicile ?</h1>
<p>Vous recevez des candidatures qui ne répondent pas à votre besoin ?</p>
<p>Vous en avez assez de refuser des prises en charge, faute de salariés ?</p>
<p>Vous voulez recruter vos aides à domicile autrement ?</p><br>
<p>Choisissez Talents Tube, la plateforme pour l'emploi 100% vidéo !</p>
</div>
<!--welcome-message end-->
<div class=" video-header">
<button class="bttn" data-toggle="modal" data-target="#exampleModal">Demander un rendez-vous</button>
</div>
</div>
</div>
</div>
</header>
<!--Header end-->
<!--about 1-->
<section class="about section-spacing-little" style="margin-top:20px">
<div class="container">
<div class="row">
<div class="col-md-5 bloc-gauche-1"> <img src="/landing/img/secteur-aide-domicile-peine-a-recruter.jpg"
alt="Le secteur de l'aide à domicile peine à recruter" data-no-retina> </div>
<div class="col-md-7 bloc-droit-1" style="padding: 2em 4em;">
<h2>Les difficultés de recrutement d'aide à domicile freinent votre développement ?</h2>
<p>Vous n'êtes pas les seuls à chercher des solutions originales pour attirer et recruter de nouveaux
candidats, c'est un constat partagé : l'aide à domicile peine à recruter. <strong>Une structure sur cinq
doit refuser des prises en charge, faute de salariés</strong> !
Sous financée et avec des besoins en recrutement d'aide à domicile de plus en plus importants, votre
structure déplore <strong>des emplois qui ne trouvent pas de candidats</strong>. Pour cause, votre
<strong>métier méconnu, souvent dévalorisé</strong> ne séduit pas les candidats potentiels. Il existe un
décalage entre les préjugés et la réalité du métier.
<p><b>Mais comment recruter des aides à domicile ?</b></p>
<p>Pour attirer et réussir vos recrutements d'aide à domicile, <strong>vous devez communiquer, valoriser
votre métier</strong> : un métier varié, riche humainement et qui a du sens.</p>
<p>Et pour cela, quoi de mieux que <strong>la vidéo</strong> ?</p>
</div>
</div>
</div>
</section>
<!--about end-->
<!--about 2-->
<section class="about section-spacing-little">
<div class="container">
<div class="row">
<div class="col-md-7 bloc-droit-2" style="padding: 2em 4em;">
<h2>Publiez une offre d'emploi attractive pour réussir vos recrutements d'aide à domicile</h2>
<p>L'offre d'emploi vidéo est un projet fédérateur qui permet d'<strong>impliquer vos
collaborateurs</strong>. Ils sont <strong>fiers de pouvoir présenter le métier d'aide à
domicile</strong> et leur quotidien. Cette dynamique de recrutement <strong>participe à la valorisation
et à la reconnaissance</strong> de vos équipes.
<p><b>L'offre d'emploi vidéo pour attirer et recruter des aides à domicile</b> :</p>
<ul class="list-puces">
<li>Une occasion en or de <strong>montrer votre métier dans sa vérité</strong>, au dela des mots et des
descriptions convenues</li>
<li>Pas besoin dune super video pour donner du corps et du sens à votre futur candidat</li>
<li><strong>Montrez votre entreprise et votre équipe</strong>, affichez votre esprit dentreprise dans
une video dont votre équipe sera fière</li>
</ul>
</div>
<div class="col-md-5 bloc-gauche-2"> <img
src="/landing/img/reussir-son-recrutement-aide-a-domicile-avec-la-video.jpg"
alt="Réussir son recrutement d'aide à domicile avec la vidéo" data-no-retina> </div>
</div>
</div>
</section>
<!--about end-->
<!--about 3-->
<section class="about section-spacing-little">
<div class="container">
<div class="row">
<div class="col-md-5 bloc-gauche-1"> <img src="/landing/img/candidatures-aide-a-domicile-en-video.jpg"
alt="Candidatures d'aide à domicile en vidéo" data-no-retina> </div>
<div class="col-md-7 bloc-droit-1" style="padding: 2em 4em;">
<h2>Recevez des candidatures d'aide à domicile uniques et authentiques </h2>
<p>Les compétences techniques ne sont pas le seul critère de recrutement.
Pour exercer le métier d'aide à domicile, <strong>les compétences humaines sont primordiales</strong> afin
d'assurer le bien-être et la satisfaction des bénéficiaires.</p>
<p><b>Mais comment détecter ces compétences sur un CV papier ? Impossible !</b></p>
<p>Ce qui différencie les candidats c'est l'amour des gens, une recherche de sens dans l'emploi et l'envie
de s'épanouir dans l'aide de l'autre. Autant d'<strong>éléments qui ne peuvent être exprimés sur une
feuille de papier</strong>.
<p><strong>Grâce à la candidature vidéo</strong>, découvrez qui se cache derrière le CV papier. Au déla
des compétences, <strong>rencontrez des personnalités</strong> !</p>
</div>
</div>
</div>
</section>
<!--about end-->
<!--sponsor-->
<section class="sponsor section-spacing text-center">
<div class="container">
<header>
<h2>Ils ont recruté en vidéo, pourquoi pas vous ?</h2>
<h3>Ces entreprises des services à la personne, ont choisi Talents Tube pour recruter autrement !</h3>
</header>
<div class="row">
<div class="col-md-12">
<figure><img
src="https://recruteur.talentstube.com/media/cache/profile_thumb/uploads/img/58d59033851aa9d4d633cd895d794fcf.jpeg"
data-at2x="https://recruteur.talentstube.com/media/cache/profile_thumb/uploads/img/58d59033851aa9d4d633cd895d794fcf.jpeg"
alt="admr difficulté à recruter aide à domicile " width="100" height="32"></figure>
<figure><img
src="https://recruteur.talentstube.com/media/cache/profile_thumb/uploads/img/62206ab199713e2828e409f705b9ec9d.png"
data-at2x="https://recruteur.talentstube.com/media/cache/profile_thumb/uploads/img/62206ab199713e2828e409f705b9ec9d.png"
alt="onela difficultsé à recruter aide à domicile" width="100" height="100"></figure>
</div>
</div>
</div>
</section>
<!--sponsor end-->
<!--venue-->
<section class="venue section-spacing" id="venue_aideADomicile">
<div class="container">
<div class="row">
<div class="container text-center">
<div class="row">
<div class="col-md-12">
<!--goodbye-message-->
<div class="appel-action">
<h2>Demandez un RDV gratuitement</h2>
<p>Plus qu'une dernière étape avant de rendre le métier d'aide à domicile plus attractif.</p>
<p>Osez recruter autrement !</p>
<button class="bttn" data-toggle="modal" data-target="#exampleModal" style="margin-top:30px;">Demander
un rendez-vous</button>
</div>
<!--goodbye-message end-->
</div>
</div>
</div>
</div>
</div>
</section>
</main>
{% endblock %}
{% block javascripts %}
{% endblock %}
@@ -0,0 +1,242 @@
{% extends "baseLanding.html.twig" %}
{% block title %}Valorisez votre métier en tension et recrutez des candidats grâce à la vidéo{% endblock %}
{% block meta %}
<meta name="description" content="Votre métier est en tension ? Vous souhaitez améliorer son attractivité ? Avec le recrutement vidéo, valorisez votre métier et recevez des candidatures vidéo.">
<meta property="og:locale" content="fr_FR">
<meta property="og:type" content="website">
<meta property="og:title" content="Valorisez votre métier en tension et recrutez des candidats grâce à la vidéo">
<meta property="og:description" content="Votre métier est en tension ? Vous souhaitez améliorer son attractivité ? Avec le recrutement vidéo, valorisez votre métier et recevez des candidatures vidéo.">
<meta property="og:url" content="https://recruteur.talentstube.com/metier-en-tension">
<meta property="og:site_name" content="Talents Tube">
<meta property="og:image" content="https://recruteur.talentstube.com/landing/img/secteur-aide-domicile-peine-a-recruter.jpg">
<meta name="twitter:card" content="summary_large_image">
{% endblock %}
{% block modalCallToAction %}
{{ parent() }}
{% endblock %}
{% block main %}
<main>
<!--Header : Menu et Vidéo en fond-->
<header class="hero-section-metier-tension">
<!--HTML5 Video-->
<video autoplay loop muted id="bgvid" poster="">
<source src="/landing/video/metier-en-tension-montrez-vous.mp4" type="video/mp4"
alt="Métier en tension, montrez-vous !">
<!--Prévoir une image fixe pour la version mobile : main.css : 102-->
</video>
<!--HTML5 Video end-->
<div class="overlay"></div>
<div class="container">
<div class="row">
<div class="col-md-12">
<div class="logo-header" style="display:inline-block;">
<img src="/landing/img/talentstube-logo-blanc.svg" data-at2x="/landing/img/talentstube-logo-blanc@2x.svg"
alt="Talents Tube" class="logo-talentstube" style="width:150px">
</div>
</div>
</div>
</div>
<!--nav-->
<nav class="navbar-default">
<!-- clas="navbar"-->
<div class="container">
<div class="logo-brand">
<img src="https://blog.talentstube.com/wp-content/uploads/2021/02/TalentsTube-logo-blanc.svg"
data-at2x="https://blog.talentstube.com/wp-content/uploads/2021/02/TalentsTube-logo-blanc.svg"
alt="Talents Tube, plateforme de recrutement en vidéo" class="logo-head">
</div>
<!--<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-navbar-collapse-1">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
</div>-->
<div class="collapse navbar-collapse" id="bs-navbar-collapse-1">
<div class="row">
<div class="logo-header" style="display:inline-block;">
<img src="https://blog.talentstube.com/wp-content/uploads/2021/02/talents-tube-logo-color.svg'"
data-at2x="https://blog.talentstube.com/wp-content/uploads/2021/02/talents-tube-logo-color.svg"
alt="Talents Tube" class="logo-nav">
</div>
<ul class="nav navbar-nav navbar-right">
<li>
<div class="mj-w-button mj-w-btn bttn" data-toggle="modal" data-target="#exampleModal">Demander un
rendez-vous</div>
</li>
</ul>
</div>
</div>
</div>
</nav>
<!--nav end-->
<div class="container">
<div class="row">
<div class="col-md-12">
<!--welcome-message-->
<div class="welcome-message">
<h1>Métier en tension : Montrez-vous pour attirer et recruter de nouveaux collaborateurs !</h1>
<p>Votre métier est en tension et souffre d'un déficit d'image ?
Vous n'arrivez plus à recruter et cela freine le développement de votre activité ?</p>
<p>Et si Talents Tube avait la solution idéale pour réussir vos recrutements !</p>
</div>
<!--welcome-message end-->
<div class=" video-header">
<button class="bttn" data-toggle="modal" data-target="#exampleModal">Demander un rendez-vous</button>
</div>
</div>
</div>
</div>
</header>
<!--Header end-->
<!--about 1-->
<section class="about section-spacing-little" style="margin-top:20px">
<div class="container">
<div class="row">
<div class="col-md-5 bloc-gauche-1"> <img src="/landing/img/secteur-aide-domicile-peine-a-recruter.jpg"
alt="Les métiers en tension peinent à recruter" data-no-retina> </div>
<div class="col-md-7 bloc-droit-1" style="padding: 2em 4em;">
<h2>Votre métier est en tension et les difficultés de recrutement freinent votre développement ?</h2>
<p>Vous rencontrez des <strong>difficultés à recruter</strong> de nouveaux collaborateurs.
<strong>Votre métier est peu valorisé, méconnu et souffre d'un déficit d'image</strong>. Il
n'attire plus et encore moins les nouvelles générations. Et pourtant, votre métier a considérablement
évolué ces dernières années. L'image que les candidats s'en font n'est pas en adéquation avec la réalité.
Sachez que votre métier n'est pas le seul dans ce cas, plusieurs secteurs sont touchés par une pénurie de
candidats. </p>
<p><strong>Mais comment réussir à recruter ?</strong></p>
<p>Pour attirer et réussir vos recrutements sur un métier en tension, vous devez <strong>communiquer</strong>
!
Donnez la parole à vos collaborateurs pour <strong>dévoiler votre métier</strong> aux
candidats.
Et pour cela, <strong>quoi de mieux que la vidéo</strong> ?</p>
</div>
</div>
</div>
</section>
<!--about end-->
<!--about 2-->
<section class="about section-spacing-little">
<div class="container">
<div class="row">
<div class="col-md-7 bloc-droit-2" style="padding: 2em 4em;">
<h2>Publiez une offre d'emploi attractive pour faire connaître votre métier</h2>
<p>Votre offre d'emploi mérite un coup de jeune <strong>pour attirer de nouveaux
candidats</strong>. Grâce à l'<strong>offre d'emploi vidéo</strong>, vous allez mettre des
images sur votre métier afin de le faire connaître au public. Votre offre d'emploi sera mieux expliquée,
portée par des vrais visages de l'entreprise.</p>
<p>Faites vivre une <strong>expérience unique</strong> à vos candidats. Ils pourront ainsi
<strong>découvrir, bien au-delà des mots, votre métier</strong>, leur future équipe,
l'ambiance et l'environnement de travail que vous proposez. </p>
<p>Cette offre d'emploi plus attractive vous permettra de <strong>capter l'attention de
candidats que vous n'auriez pas réussi à atteindre autrement</strong>.</p>
</div>
<div class="col-md-5 bloc-gauche-2"> <img src="/landing/img/candidatures-metier-en-tension-en-video.jpg"
alt="Recruter sur un métier en tension grâce à la vidéo" data-no-retina> </div>
</div>
</div>
</section>
<!--about end-->
<!--about 3-->
<section class="about section-spacing-little">
<div class="container">
<div class="row">
<div class="col-md-5 bloc-gauche-1"> <img src="/landing/img/candidatures-aide-a-domicile-en-video.jpg"
alt="Candidatures métier en tension en vidéo" data-no-retina> </div>
<div class="col-md-7 bloc-droit-1" style="padding: 2em 4em;">
<h2>Recevez des candidatures que vous n'auriez pas eu autrement</h2>
<p>Parce que la <strong>personnalité des candidats est un élément primordial</strong> dans
vos recrutements, avec Talents Tube découvrez-les au-delà du CV papier. Grâce à la <strong>candidature
vidéo</strong>, les candidats s'adressent directement à vous et expriment
en toute authenticité, pourquoi ils souhaitent rejoindre VOTRE entreprise. Et parce que vous avez dévoilé
votre métier en vidéo, le candidat peut davantage se projeter dans votre entreprise. Il peut
<strong>exprimer bien plus que ce qu'il n'aurait pu présenter sur une simple feuille de
papier</strong>.</p>
<p><strong>Moins de CV, plus de talent grâce à la candidature vidéo</strong> :</p>
<ul class="list-puces">
<li>Gagnez du temps de pré-sélection et rencontrez uniquement les candidats réellement impliqués</li>
<li>Découvrez des candidats « pépite » qui ne seraient pas sortis du lot dans la pile des candidatures
papier</li>
</ul>
</div>
</div>
</div>
</section>
<!--about end-->
<!--sponsor-->
<section class="sponsor section-spacing text-center">
<div class="container">
<header>
<h2>Ils ont recruté en vidéo, pourquoi pas vous ?</h2>
<h3>Ces entreprises ont choisi Talents Tube pour recruter en vidéo ! </h3>
</header>
<div class="row">
<div class="col-md-12">
<figure><img
src="https://recruteur.talentstube.com/media/cache/profile_thumb/uploads/img/58d59033851aa9d4d633cd895d794fcf.jpeg"
alt="admr secteur aide à domicile en tension"
data-at2x="https://recruteur.talentstube.com/media/cache/profile_thumb/uploads/img/58d59033851aa9d4d633cd895d794fcf.jpeg"
width="100" height="32"></figure>
<figure><img
src="https://recruteur.talentstube.com//media/cache/profile_thumb/uploads/img/0dc350ae6a639b3671b7a262e51ad581.jpeg"
data-at2x="https://recruteur.talentstube.com//media/cache/profile_thumb/uploads/img/0dc350ae6a639b3671b7a262e51ad581.jpeg"
alt="tpc ouest secteur btp en tension" width="100" height="100"></figure>
<figure><img
src="https://recruteur.talentstube.com//media/cache/profile_thumb/uploads/img/7700369aae83d9b84ac0f42a0e63277f.jpeg"
data-at2x="https://recruteur.talentstube.com//media/cache/profile_thumb/uploads/img/7700369aae83d9b84ac0f42a0e63277f.jpeg"
alt="la centrale des ramoneurs, difficulté de recrutement" width="100" height="100"></figure>
<figure><img
src="https://recruteur.talentstube.com//media/cache/profile_thumb/uploads/img/60ac27698d9f443a1acc4fbdebd07a9e.png"
data-at2x="https://recruteur.talentstube.com//media/cache/profile_thumb/uploads/img/60ac27698d9f443a1acc4fbdebd07a9e.png"
alt="intermarché, métier en tension" width="100" height="100"></figure>
</div>
</div>
<!--<div class="row">
<div class="col-md-12">
<figure><img src="https://recruteur.talentstube.com//media/cache/profile_thumb/uploads/img/c99c8a1e7cd4b9bf249053774d72e0c9.jpeg" data-at2x="https://recruteur.talentstube.com//media/cache/profile_thumb/uploads/img/c99c8a1e7cd4b9bf249053774d72e0c9.jpeg" alt="sponsor"></figure>
<figure><img src="https://recruteur.talentstube.com//media/cache/profile_thumb/uploads/img/0dc350ae6a639b3671b7a262e51ad581.jpeg" data-at2x="https://recruteur.talentstube.com//media/cache/profile_thumb/uploads/img/0dc350ae6a639b3671b7a262e51ad581.jpeg" alt="sponsor"></figure>
<figure><img src="https://recruteur.talentstube.com//media/cache/profile_thumb/uploads/img/0a4c111bc35a4b2ab654ab8fce9f1d53.png" data-at2x="https://recruteur.talentstube.com//media/cache/profile_thumb/uploads/img/0a4c111bc35a4b2ab654ab8fce9f1d53.png" alt="sponsor"></figure>
<figure><img src="https://recruteur.talentstube.com//media/cache/profile_thumb/uploads/img/4f3dba583fea12c01a9c708772b1e0ac.jpeg" data-at2x="https://recruteur.talentstube.com//media/cache/profile_thumb/uploads/img/4f3dba583fea12c01a9c708772b1e0ac.jpeg" alt="sponsor"></figure>
</div>
</div>-->
</div>
</section>
<!--sponsor end-->
<!--venue-->
<section class="venue section-spacing" id="venue_metierTension">
<div class="container">
<div class="row">
<div class="container text-center">
<div class="row">
<div class="col-md-12">
<!--goodbye-message-->
<div class="appel-action">
<h2>Demandez un RDV gratuitement</h2>
<p>Plus quune dernière étape avant de rendre votre métier en tension plus attractif. </p>
<p>Osez recruter autrement !</p>
<button class="bttn" data-toggle="modal" data-target="#exampleModal" style="margin-top:30px;">Demander
un rendez-vous</button>
</div>
<!--goodbye-message end-->
</div>
</div>
</div>
</div>
</div>
</section>
</main>
{% endblock %}
{% block javascripts %}
{% endblock %}
@@ -0,0 +1,252 @@
{% extends "baseLanding.html.twig" %}
{% block title %}Réalisez une offre demploi originale vous-même{% endblock %}
{% block meta %}
<meta name="description" content="Créez des vidéos doffres demploi originales avec Talents Tube. Réalisez vos vidéos rapidement avec un smartphone et recrutez">
<meta property="og:locale" content="fr_FR" />
<meta property="og:type" content="website" />
<meta property="og:title" content="Réalisez une offre demploi originale vous-même" />
<meta property="og:description" content="Créez des vidéos doffres demploi originales avec Talents Tube. Réalisez vos vidéos rapidement avec un smartphone et recrutez" />
<meta property="og:url" content="https://recruteur.talentstube.com/offre-emploi-originale" />
<meta property="og:site_name" content="Talents Tube" />
<meta property="og:image" content="https://recruteur.talentstube.com/landing/img/offre-emploi-originale-en-video.jpg" />
<meta name="twitter:card" content="summary_large_image" />
{% endblock %}
{% block modalCallToAction %}
{{ parent() }}
{% endblock %}
{% block main %}
<!-- Modal : Vidéo -->
<div class="modal fade bd-example-modal-lg" id="exampleModalCenter" tabindex="-1" role="dialog"
aria-labelledby="myLargeModalLabel" aria-hidden="true">
<div class="modal-dialog modal-lg" role="document">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body">
<div class="container-video" style="position:relative;width:100%;height:0;padding-bottom:56.25%;">
<iframe src="https://www.youtube.com/embed/gOXg9e29dyc"
style="position: absolute;top: 0;left: 0;width: 100%;height: 100%;" frameborder="0"
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"
allowfullscreen id="player"></iframe>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal" onclick="fermerVideo()">Fermer</button>
</div>
</div>
</div>
</div>
<!--Modal : Vidéo End -->
<main>
<!--Header : Menu et Vidéo en fond-->
<header class="hero-section">
<!--HTML5 Video-->
<video autoplay loop muted id="bgvid" poster="">
<source src="/landing/video/modele-offre-emploi-originale.mp4" type="video/mp4"
alt="Modèle offre d'emploi originale">
<!--Prévoir une image fixe pour la version mobile : main.css : 102-->
</video>
<!--HTML5 Video end-->
<div class="overlay"></div>
<div class="container">
<div class="row">
<div class="col-md-12">
<div class="logo-header" style="display:inline-block;">
<img src="/landing/img/talentstube-logo-blanc.svg" data-at2x="/landing/img/talentstube-logo-blanc@2x.svg"
alt="Talents Tube" class="logo-talentstube" style="width:150px">
</div>
</div>
</div>
</div>
<!--nav-->
<nav class="navbar-default">
<!-- clas="navbar"-->
<div class="container">
<div class="logo-brand">
<img src="https://blog.talentstube.com/wp-content/uploads/2021/02/TalentsTube-logo-blanc.svg"
data-at2x="https://blog.talentstube.com/wp-content/uploads/2021/02/TalentsTube-logo-blanc.svg"
alt="Talents Tube, plateforme de recrutement en vidéo" class="logo-head">
</div>
<!--<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-navbar-collapse-1">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
</div>-->
<div class="collapse navbar-collapse" id="bs-navbar-collapse-1">
<div class="row">
<div class="logo-header" style="display:inline-block;">
<img src="https://blog.talentstube.com/wp-content/uploads/2021/02/talents-tube-logo-color.svg'"
data-at2x="https://blog.talentstube.com/wp-content/uploads/2021/02/talents-tube-logo-color.svg"
alt="Talents Tube" class="logo-nav">
</div>
<ul class="nav navbar-nav navbar-right">
<li>
<div class="mj-w-button mj-w-btn bttn" data-toggle="modal" data-target="#exampleModal">Demander un
rendez-vous</div>
</li>
</ul>
</div>
</div>
</div>
</nav>
<!--nav end-->
<div class="container">
<div class="row">
<div class="col-md-12">
<!--welcome-message-->
<div class="welcome-message">
<h1>Créez des vidéos doffres demploi avec votre smartphone</h1>
<p>Vous voulez recruter rapidement, efficacement, vous démarquer de la concurrence tout en restant
vous-même ? Votre recrutement, cest dans la poche avec Talents Tube !</p>
</div>
<!--welcome-message end-->
<div class="action-btn video-header">
<button class="bttn" data-toggle="modal" data-target="#exampleModal">Demander un rendez-vous</button>
<button class="bttn" data-toggle="modal" data-target=".bd-example-modal-lg">Voir la démo</button>
</div>
</div>
</div>
</div>
</header>
<!--Header end-->
<!--about 1-->
<section class="about section-spacing-little" style="margin-top:20px">
<div class="container">
<div class="row">
<div class="col-md-5 bloc-gauche-1"> <img src="/landing/img/realiser-offre-emploi-originale.jpg"
alt="Réaliser une offre d'emploi originale avec un smartphone" data-no-retina> </div>
<div class="col-md-7 bloc-droit-1" style="padding: 2em 4em;">
<h2>Votre offre demploi originale en vidéo</h2>
<p>Parce que <span class="texte-gras">votre recrutement mérite mieux que du texte</span>, lancez-vous dans
<span class="texte-gras">la vidéo de recrutement !</span></p>
<p>Vous êtes en quête de rapidité et defficacité dans votre processus de recrutement? Vous ne voulez pas
ressembler à vos concurrents?</p>
<p>Démarquez-vous avec des <span class="texte-gras">annonces de recrutement originales et
attractives.</span>En filmant vos collaborateurs, vos gestes métiers, vous offrez une <span
class="texte-gras">meilleure expérience candidat</span>, vous engagez et valorisez vos collaborateurs et
vous <span class="texte-gras">recrutez plus efficacement.</span></p>
</div>
</div>
</div>
</section>
<!--about end-->
<!--about 2-->
<section class="about section-spacing-little">
<div class="container">
<div class="row">
<div class="col-md-7 bloc-droit-2" style="padding: 2em 4em;">
<h2>Votre vidéo de recrutement originale avec un smartphone</h2>
<p>Vous vous dites que cest une super idée mais <span class="texte-gras">faire une vidéo cest trop
compliqué, trop cher et pas pour vous !</span></p>
<p>Sachez quaujourdhui, vous pouvez <span class="texte-gras">créer des vidéos facilement !</span></p>
<p>Vous possédez <span class="texte-gras">un smartphone avec une caméra</span> ultra performante qui vous
permet de créer du contenu vidéo tout le temps et partout, avec une qualité pro. Et tout ceci ne nécessite
aucun investissement supplémentaire.</p>
<p><span class="texte-gras">Le recrutement vidéo</span> est dans votre poche !</p>
</div>
<div class="col-md-5 bloc-gauche-2"> <img src="/landing/img/recruter-rapidement-offre-emploi-originale.jpg"
alt="Recruter rapidement avec une offre d'emploi vidéo originale" data-no-retina> </div>
</div>
</div>
</section>
<!--about end-->
<!--about 3-->
<section class="about section-spacing-little">
<div class="container">
<div class="row">
<div class="col-md-5 bloc-gauche-1"> <img src="/landing/img/etape-realisation-offre-emploi-originale.jpg"
alt="3 étapes pour réaliser une offre d'emploi originale" data-no-retina> </div>
<div class="col-md-7 bloc-droit-1" style="padding: 2em 4em;">
<h2>Un recrutement vidéo rapide en quelques étapes</h2>
<p>Avec Talents Tube, vous allez recruter de nouveaux profils en seulement 3 étapes :</p>
<ul class="list-puces">
<li>Rédigez votre scénario pour préparer le tournage de votre vidéo</li>
<li>Réalisez votre offre demploi vidéo avec un smartphone</li>
<li>Envoyez-nous vos séquences vidéo</li>
<li>Pour vous, nous réalisons le montage de votre vidéo</li>
<li>Et nous vous accompagnons dans votre recherche du candidat idéal</li>
</ul>
</div>
</div>
</div>
</section>
<!--about end-->
<!--sponsor-->
<section class="sponsor section-spacing text-center">
<div class="container">
<header>
<h2>Ils ont recruté en vidéo</h2>
<h3>Ces entreprises ont choisi Talents Tube pour recruter avec des offres d'emploi originales !</h3>
</header>
<div class="row">
<div class="col-md-12">
<figure><img
src="https://recruteur.talentstube.com/media/cache/profile_thumb/uploads/img/94c787c21c93a6b905eca6b739eedbf2.png"
data-at2x="https://recruteur.talentstube.com/media/cache/profile_thumb/uploads/img/94c787c21c93a6b905eca6b739eedbf2.png"
alt="actual-offre-emploi-orignale"></figure>
<figure><img
src="https://recruteur.talentstube.com/media/cache/profile_thumb/uploads/img/4f3dba583fea12c01a9c708772b1e0ac.jpeg"
data-at2x="https://recruteur.talentstube.com/media/cache/profile_thumb/uploads/img/4f3dba583fea12c01a9c708772b1e0ac.jpeg"
alt="aer-recyclage-offre-emploi-orignale"></figure>
<figure><img
src="https://recruteur.talentstube.com/media/cache/profile_thumb/uploads/img/154d998227e24b1e44e6e520ab2e09a2.png"
data-at2x="https://recruteur.talentstube.com/media/cache/profile_thumb/uploads/img/154d998227e24b1e44e6e520ab2e09a2.png"
alt="cdg-offre-emploi-orignale"></figure>
<figure><img
src="https://recruteur.talentstube.com/media/cache/profile_thumb/uploads/img/c076323088783c6aa0093563dcdd1f16.jpeg"
data-at2x="https://recruteur.talentstube.com/media/cache/profile_thumb/uploads/img/c076323088783c6aa0093563dcdd1f16.jpeg"
alt="temporis-offre-emploi-orignale"></figure>
</div>
</div>
<!--<div class="row">
<div class="col-md-12">
<figure><img src="https://recruteur.talentstube.com//media/cache/profile_thumb/uploads/img/c99c8a1e7cd4b9bf249053774d72e0c9.jpeg" data-at2x="https://recruteur.talentstube.com//media/cache/profile_thumb/uploads/img/c99c8a1e7cd4b9bf249053774d72e0c9.jpeg" alt="sponsor"></figure>
<figure><img src="https://recruteur.talentstube.com//media/cache/profile_thumb/uploads/img/0dc350ae6a639b3671b7a262e51ad581.jpeg" data-at2x="https://recruteur.talentstube.com//media/cache/profile_thumb/uploads/img/0dc350ae6a639b3671b7a262e51ad581.jpeg" alt="sponsor"></figure>
<figure><img src="https://recruteur.talentstube.com//media/cache/profile_thumb/uploads/img/0a4c111bc35a4b2ab654ab8fce9f1d53.png" data-at2x="https://recruteur.talentstube.com//media/cache/profile_thumb/uploads/img/0a4c111bc35a4b2ab654ab8fce9f1d53.png" alt="sponsor"></figure>
<figure><img src="https://recruteur.talentstube.com//media/cache/profile_thumb/uploads/img/4f3dba583fea12c01a9c708772b1e0ac.jpeg" data-at2x="https://recruteur.talentstube.com//media/cache/profile_thumb/uploads/img/4f3dba583fea12c01a9c708772b1e0ac.jpeg" alt="sponsor"></figure>
</div>
</div>-->
</div>
</section>
<!--sponsor end-->
<!--venue-->
<section class="venue section-spacing" id="venue">
<div class="container">
<div class="row">
<div class="container text-center">
<div class="row">
<div class="col-md-12">
<!--goodbye-message-->
<div class="appel-action">
<h2>Créez votre première offre demploi originale avec un smartphone</h2>
<p>Il ne vous reste plus qu'un clic pour recruter rapidement, efficacement et vous démarquer de la
concurrence...</p>
<p>Lancez-vous et demandez un rendez-vous dès maintenant !</p>
<button class="bttn" data-toggle="modal" data-target="#exampleModal" style="margin-top:30px;">Demander
un rendez-vous</button>
</div>
<!--goodbye-message end-->
</div>
</div>
</div>
</div>
</div>
</section>
</main>
{% endblock %}
{% block javascripts %}
{% endblock %}
@@ -1,7 +1,7 @@
{% block dropzone %}
<div id="dropzone-row" class="row">
<div class="col s12">
<div class="dropzone dz-clickable" id="my-awesome-dropzone">
<div class="dropzone dz-clickable text-center" id="my-awesome-dropzone">
<div id="template-container-dz">
<div id="template" class="file-row">
<div class="dz-preview">
@@ -1,221 +1,241 @@
{% if is_granted('ROLE_COMPANY') %}
{% set extendTemplate='company/base_dashboard_company_V2.html.twig' %}
{% set extendTemplate='company/base_dashboard_company_V2.html.twig' %}
{% elseif is_granted('ROLE_TERRITORY') %}
{% set extendTemplate='territory/base_dashboard_territory.html.twig' %}
{% set extendTemplate='territory/base_dashboard_territory.html.twig' %}
{% else %}
{% set extendTemplate='talent/base_dashboard_talent.html.twig' %}
{% set extendTemplate='talent/base_dashboard_talent.html.twig' %}
{% endif %}
{% extends extendTemplate %}
{% block dashContent %}
<div class="row">
<div class="col s12">
{% if medias|length == 0 and is_granted('ROLE_TALENT') %}
<div class="col s12 center-align">
<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="btn btn-default modal-trigger" href="#addVideo">Ajouter une
vidéo</a>
</div>
{% else %}
{% if app.user.company.presentationVideo %}
{% set media = app.user.company.presentationVideo %}
{% endif %}
<div class="video_premier card z-depth-3">
<div class="card-content">
<h4> Vous souhaitez booster vos recrutements ?</h4>
<p>Ajoutez une vidéo marque employeur pour présenter
votre entreprise et attirer de nouveaux talents.</p>
</div>
</div>
<div class="video_premier card z-depth-3">
<div class="card-image">
{% if app.user.company.presentationVideo %}
<div class="embed-responsive embed-responsive-16by9">
<iframe src="https://player.vimeo.com{{ media.getCdnUrl()|replace({ "videos": "video"}) }}"
width="100%" height="550" frameborder="0" webkitallowfullscreen
mozallowfullscreen allowfullscreen></iframe>
</div>
{# {% 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> #}
{% endif %}
</div>
<div class="card-content">
<p>
{# {% if app.user.getCompany().hasCompanyVideo() != true and is_granted('ROLE_COMPANY') %}
{% set storePath = path('company_process_cart_video_corporate') %}
{% set message = "Vous ne disposez pas de l'option présentation vidéo pour votre entreprise, il est nécessaire de vous procurer
l'option sur la boutique talents tube.<br /><br /><a class='btn btn-default' href='"~storePath~"'>boutique Talents Tube</a>" %}
{{ message|raw }}
{% else %} #}
{% if app.user.company.presentationVideo %}
<div><strong><span data-id="{{ media.id }}"
class="titleVideo">{{ media.title }}</span></strong></div>
{% else %}
{% set label_title_video = "" %}
{% if is_granted('ROLE_COMPANY') %}
{% set label_title_video = "Mon entreprise en vidéo" %}
{% elseif is_granted('ROLE_TALENT') %}
{% set label_title_video = "Mon CV Générique" %}
{% endif %}
<strong>{{ label_title_video }}</strong>
{% 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 %}
Choisir une vidéo marque employeur
{% endif %}
</a>
<div class="jumbotron" data-pages="parallax">
<div class=" container-fluid container-fixed-lg sm-p-l-0 sm-p-r-0">
<div class="inner">
<!-- START BREADCRUMB -->
<ol class="breadcrumb">
<li class="breadcrumb-item"><a href="/entreprise/me/">Accueil</a></li>
<li class="breadcrumb-item"><a href="#">Marque Employeur</a></li>
</ol>
<!-- END BREADCRUMB -->
<div class="clearfix"></div>
<div class="">
<strong>
Guide
</strong><br/>
Pour choisir votre vidéo marque employeur, cliquer sur le bouton remplacer et choisissez une vidéo dans la liste ci dessous </div>
{# {% endif %} #}
</div>
</div>
{% endif %}
</div>
</div>
<div class="divider"></div>
<br />
<div class="row">
<div class="col s12 center-align"><h4>Gestion de mes vidéos</h4>
</div>
</div>
<div class="row">
<div class="col s12">
{% if medias|length > 0 or is_granted('ROLE_COMPANY') or is_granted('ROLE_TERRITORY')%}
<div class="col s12 col-actions">
<a class="waves-effect waves-light btn btn-default modal-trigger" 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>
</div>
{% endif %}
{% for media in medias %}
{% set classVideo = "" %}
{% if app.user.company.presentationVideo %}
{% set idPresentationVideo = app.user.company.presentationVideo.id %}
{% else %}
{% set idPresentationVideo = false %}
{% endif %}
{% if idPresentationVideo != media.id %}
<div class="col s12 m6 l4 col-card">
<div class="card card-video-action z-depth-1">
<div class="card-image">
<div class="embed-responsive embed-responsive-16by9">
<iframe src="https://player.vimeo.com{{ media.getCdnUrl()|replace({ "videos": "video"}) }}"
width="100%" height="230px" frameborder="0" webkitallowfullscreen
mozallowfullscreen allowfullscreen></iframe>
</div>
<div class="card-fog choice-fog">
<div class="card-fog-container">
<a data-id="{{ media.getId() }}"
class="btn btn-default btn-default-video {{ classVideo }} tooltipped"
data-position="top"
data-tooltip="{{ 'global.video.defaultaction.label'|trans }}">
Choisir cette vidéo
</a>
</div>
</div>
{% set classFog ="" %}
{% set messageTooltipFog ="" %}
{% if media.getAds().toArray() %}
{% set classFog = "fogLight" %}
{% set messageTooltipFog ="Vidéo associée à une annonce" %}
{% endif %}
</div>
{% if media.getAnswers().toArray() %}
{% set classFog = "fogLight" %}
{% set messageTooltipFog ="Vidéo associée à une réponse" %}
{% endif %}
<div class="card-fog delete-fog {{ classFog }}">
<div class="card-fog-container">
{% if media.getAds().toArray() or media.getAnswers().toArray() %}
<div class="card-fog-message">
Vous ne pouvez pas supprimer cette vidéo.<br/>
<i data-position="top" data-tooltip="{{ messageTooltipFog }}"
class="fa fa-question-circle tooltipped" aria-hidden="true"></i>
</div>
{% else %}
<a class="btn btn-default halfway-fab waves-effect waves-light red delete_unattached_media tooltipped"
href="{{ path("delete_unattached_media",{"id" : media.getId()}) }}"
data-position="top" data-tooltip="{{ 'media.delete.video.label'|trans }}">Supprimer</a>
{% endif %}
</div>
</div>
</div>
<div class="card-content">
<p>
<strong><span data-id="{{ media.id }}" class="titleVideo truncate tooltipped"
data-position="top"
data-tooltip="{{ media.title }}">{{ media.title }}</span></strong>
</p>
</div>
{% set video = null %}
<div class=" container-fluid container-fixed-lg">
<div class="col-lg-8 bloc-header">
<div class="card card-default container">
<div class="card-body">
<div class="row" style="min-height:10rem;">
<div class="col-8">
<h4 class="header-title" style="font-size:2em;line-height:1.5em;">Vous souhaitez booster vos
recrutements ?</h4>
<p>Ajoutez une vidéo marque employeur pour présenter votre entreprise et attirer de nouveaux
talents.</p>
</div>
<div class="col-4"
style="background-repeat: no-repeat; background-image: url('https://blog.talentstube.com/wp-content/uploads/2021/02/marque-employeur-entreprise.svg');background-size: contain;background-position: center;">
</div>
</div>
{% endif %}
{% endfor %}
</div>
</div>
{% set video = null %}
<div id="addVideo" class="modal modal-fixed-footer">
<div class="modal-content">
<div class="row">
{{ form_start(form, {'attr': { 'id': 'form_media' } }) }}
<div class="input-field col s8">
{{ form_rest(form) }}
</div>
<div class="col s4 right-align">
<button id="submit" class="btn btn-default disabled" type="submit">Enregistrer</button>
{% set messageTooltiped = "Votre vidéo ne doit pas dépasser les 500Mo.\n
Les formats de vidéo acceptés sont les suivants : .mp4, .mov, .qt, .mkv, .avi, .m4v, .webm." %}
<i class="fa fa-question-circle tooltipped" data-position="top" data-delay="50"
data-tooltip="{{ messageTooltiped }}" aria-hidden="true"></i>
</div>
{{ form_end(form) }}
<div class="col s12">
{% include 'media/dropzone.html.twig' with {'deleting': 'false'} %}
</div>
</div>
</div>
<div class="modal-footer">
<a href="#!" class="modal-action modal-close btn btn-default btn-round">Fermer</a>
</div>
<div class="col-lg-8">
<div id="addVideo">
<div class="card col p-t-20 p-b-15">
<div class="row m-b-20">
<div class="col">
<div class="col">
<h4>Importer une vidéo Marque Employeur</h4>
</div>
</div>
</div>
<div class="row ">
<div class="col ">
{% include 'media/dropzone.html.twig' with {'deleting': 'false'} %}
</div>
</div>
<div class="row">
<div class="col m-t-20">
{{ form_start(form, {'attr': { 'id': 'form_media' } }) }}
<div class="input-field col">
<div>
{{ form_rest(form) }}
</div>
</div>
<div class="col m-t-20">
<button id="submit" class="btn btn-lg btn-primary disabled" type="submit">Définir comme
vidéo marque employeur</button>
{% set messageTooltiped = "Votre vidéo ne doit pas dépasser les 500Mo.\n
Les formats de vidéo acceptés sont les suivants : .mp4, .mov, .qt, .mkv, .avi, .m4v, .webm." %}
<i class="fa fa-question-circle tooltipped" data-position="top" data-delay="50"
data-tooltip="{{ messageTooltiped }}" aria-hidden="true"></i>
</div>
{{ form_end(form) }}
</div>
</div>
{% if app.user.company.presentationVideo %}
{% set media = app.user.company.presentationVideo %}
<div class="col video_premier z-depth-3 m-t-30 m-b-30">
<div class="card-image">
<div class="embed-responsive embed-responsive-16by9">
{% if app.user.company.presentationVideo %}
<div><strong><span data-id="{{ media.id }}"
class="titleVideo">{{ media.title }}</span></strong>
</div>
{% else %}
{% set label_title_video = "" %}
{% if is_granted('ROLE_COMPANY') %}
{% set label_title_video = "Mon entreprise en vidéo" %}
{% elseif is_granted('ROLE_TALENT') %}
{% set label_title_video = "Mon CV Générique" %}
{% endif %}
<strong>{{ label_title_video }}</strong>
{% endif %}
{% set media = app.user.company.presentationVideo %}
<iframe src="https://player.vimeo.com{{ media.getCdnUrl()|replace({ "videos": "video"}) }}"
width="100%" height="550" frameborder="0" webkitallowfullscreen mozallowfullscreen
allowfullscreen></iframe>
</div>
</div>
</div>
{% endif %}
</div>
</div>
</div>
<div class="col-lg-8">
<div class="card card-default card-body">
<div class="card-body">
<h4>Gestion de mes vidéos</h4>
{% set iteration = 0 %}
{% set nbMedias = medias|length%}
{% for media in medias %}
{% set classVideo = "" %}
{% if app.user.company.presentationVideo %}
{% set idPresentationVideo = app.user.company.presentationVideo.id %}
{% else %}
{% set idPresentationVideo = false %}
{% endif %}
{% if idPresentationVideo != media.id %}
{# {% if iteration is divisible by(2) or iteration==0%}
<div class="row p-t-10 p-b-10">
{% endif %} #}
<div class="col">
<div class="card-image">
<div class="embed-responsive embed-responsive-16by9">
<iframe
src="https://player.vimeo.com{{ media.getCdnUrl()|replace({ "videos": "video"}) }}"
width="100%" height="230px" frameborder="0" webkitallowfullscreen mozallowfullscreen
allowfullscreen></iframe>
</div>
<div class="row m-t-10 m-b-10">
<div class="col card-fog choice-fog">
<div class="card-fog-container">
<a data-id="{{ media.getId() }}"
class="btn btn-default btn-default-video tooltipped"
data-position="top"
data-tooltip="{{ 'global.video.defaultaction.label'|trans }}">
Choisir cette vidéo
</a>
</div>
</div>
{% set classFog ="" %}
{% set messageTooltipFog ="" %}
{% if media.getAds().toArray() %}
{% set classFog = "fogLight" %}
{% set messageTooltipFog ="Vidéo associée à une annonce" %}
{% endif %}
{% if media.getAnswers().toArray() %}
{% set classFog = "fogLight" %}
{% set messageTooltipFog ="Vidéo associée à une réponse" %}
{% endif %}
<div class="card-fog delete-fog ">
<div class="card-fog-container">
{% if media.getAds().toArray() or media.getAnswers().toArray() %}
{# <div class="card-fog-message">
Vous ne pouvez pas supprimer cette vidéo.<br />
<i data-position="top" data-tooltip="{{ messageTooltipFog }}"
class="fa fa-question-circle tooltipped" aria-hidden="true"></i>
</div> #}
{% else %}
<a class="btn btn-default halfway-fab waves-effect waves-light red delete_unattached_media tooltipped"
href="{{ path("delete_unattached_media",{"id" : media.getId()}) }}"
target="_blank">Supprimer</a>
{% endif %}
</div>
</div>
{# <div class="card-content">
<p>
<strong><span data-id="{{ media.id }}" class="titleVideo truncate tooltipped"
data-position="top" data-tooltip="{{ media.title }}">{{ media.title }}</span></strong>
</p>
</div> #}
</div>
</div>
</div>
{# cas d'un nombre impair de video #}
{# {% if nbMedias == iteration+1 and iteration is divisible by(2)%}
<div class="col">
<div class="card-image">
<div class="embed-responsive embed-responsive-16by9">
</div>
<div class="row m-t-10 m-b-10">
</div>
</div>
</div>
{% endif %} #}
{# fermeture de div pour aller à la ligne quand le nombre de video est un multiple de deux et par défaut au début iteration==0 #}
{# {% if iteration+1 is divisible by(2) or nbMedias==1%}
</div>
{% endif %}
{% set iteration = iteration+1 %} #}
{% else %}
{# {% set nbMedias = nbMedias-1%} #}
{% endif %}
{% endfor %}
</div>
</div>
</div>
</div>
{% endblock %}
{% block javascripts %}
{{ parent() }}
<script type="text/javascript">
var urlDropzone = '{{ path("upload_media_default", {"id": app.user.id }) }}';
var urlDelete = '';
var idObject = null;
var typeObject = null;
var videoExist = false;
var mediaDefaultUrl = '{{ path("media_default") }}';
var idUser = '{{ app.user.id }}';
var mediaEditTitleUrl = "{{ path('media_edit_title', {'id': 'id_video'})|escape('js') }}";
</script>
<script src="{{ asset('/js/mediaListing.js') }}"></script>
<script src="{{ asset('/js/dropzone.js') }}"></script>
{{ parent() }}
<script type="text/javascript">
var urlDropzone = '{{ path("upload_media_default", {"id": app.user.id }) }}';
var urlDelete = '';
var idObject = null;
var typeObject = null;
var videoExist = false;
var mediaDefaultUrl = '{{ path("media_default") }}';
var idUser = '{{ app.user.id }}';
var mediaEditTitleUrl = "{{ path('media_edit_title', {'id': 'id_video'})|escape('js') }}";
</script>
<script src="{{ asset('/js/mediaListing.js') }}"></script>
<script src="{{ asset('/js/dropzone.js') }}"></script>
{% endblock %}
@@ -3,22 +3,18 @@
<div class="errors"></div>
</div>
</div>
<div id="profile_picture_upload">
{{ form_start(form, { 'action': path('profile_logo'), 'attr': { 'class': 'fos_user_profile_edit' } }) }}
<div class="col s6">
<label for="profile_logo_file" class="btn btn-default custom-file-upload">
<i class="fa fa-cloud-upload"></i> Importer une photo
</label>
{{ form_widget(form.file) }}
{{ form_rest(form) }}
</div>
<div class="col s6" style="text-align: center;">
<div id="preview_profile_picture">
<img src="" class="resize-image responsive-img">
</div>
<button class="hide btn btn-default btn-save-profile-picture" type="submit">
<i class="fa fa-floppy-o" aria-hidden="true"></i> Sauvegarder
</button>
</div>
{{ form_end(form) }}
{{ form_start(formLogo, { 'action': path('profile_logo'), 'attr': { 'class': 'fos_user_profile_edit' } }) }}
<div class="input-group">
{# {{ form_widget(formLogo.file) }} #}
{# {{ form_rest(formLogo) }} #}
<button aria-label="" type="button" class="btn btn-outline-primary btn-lg m-r-10" onclick="profile_logo_file.click()">Choisir votre logo</button>
<button class="btn btn-primary btn-lg" type="submit" id="inputGroupFileAddon04">Valider le logo</button>
</div>
{{ form_end(formLogo) }}
</div>
+2 -2
View File
@@ -80,7 +80,7 @@ twig:
globals:
push_public_key: "%push_params.public_key%"
fairlane_cookie_consent: '@fairlane_cookie_consent.twig'
version: '2.5.1'
version: '2.8.1'
@@ -160,7 +160,7 @@ doctrine_mongodb:
liip_imagine :
resolvers :
default :
web_path : ~
web_path: ~
filter_sets :
cache : ~
profile_thumb :
@@ -59,6 +59,7 @@ security:
- { path: ^/register, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/resetting, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/admin/, roles: ROLE_ADMIN }
- { path: ^/admin/template, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/admin/moderation/, role: [ROLE_MODERATOR,ROLE_SUPER_ADMIN, ROLE_WEBMASTER] }
- { path: ^/admin/config/, role: [ROLE_WEBMASTER,ROLE_SUPER_ADMIN] }
- { path: ^/talent/me/, roles: ROLE_TALENT }
@@ -71,6 +72,7 @@ security:
- { path: ^/api/reset_password, roles: IS_AUTHENTICATED_ANONYMOUSLY, methods: [POST]}
- { path: ^/api/confirmAccount, roles: IS_AUTHENTICATED_ANONYMOUSLY, methods: [POST]}
- { path: ^/api/answers, roles: IS_AUTHENTICATED_FULLY, methods: [GET]}
- { path: ^/api/answers/updateStatus, roles: IS_AUTHENTICATED_FULLY, methods: [GET]}
- { path: ^/api/answer/[0-9]+/messages, roles: IS_AUTHENTICATED_FULLY, methods: [GET]}
- { path: ^/api, roles: IS_AUTHENTICATED_FULLY, methods: [POST, PUT, DELETE, PATCH] }
- { path: ^/api, roles: IS_AUTHENTICATED_ANONYMOUSLY, methods: [GET]}
@@ -85,4 +87,4 @@ security:
ROLE_ADMIN: ROLE_USER
ROLE_TALENT: ROLE_USER
ROLE_COMPANY: ROLE_USER
ROLE_TERRITORY: ROLE_USER
ROLE_TERRITORY: ROLE_USER
@@ -19,7 +19,12 @@ use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Session\Session;
use Symfony\Component\HttpFoundation\JsonResponse;
//MAILJET
use AppBundle\Entity\Mailjet;
// use AppBundle\Entity\Response;
use AppBundle\Entity\Resources;
use AppBundle\Entity\Config;
use AppBundle\Entity\Client;
class AdController extends Controller
{
@@ -305,6 +310,29 @@ class AdController extends Controller
$adManager = $this->get('app.ad_manager');
$adManager->updateAd($ad);
$this->addFlash('notice', 'Annonce enregistrée');
$mj = new Client($this->getParameter('mailjet_public'), $this->getParameter('mailjet_private'));
// $link = $this->generateUrl('company_answer_show', array('id' => $answer->getId()), UrlGeneratorInterface::ABSOLUTE_URL);
$body = [
'FromEmail' => "noreply@talentstube.io",
'FromName' => "Talents Tube",
'Subject' => "Creation/Modification Offre d'emploi ".$ad->getCompany()->getBrandName(),
'MJ-TemplateID' =>2612525 ,
'MJ-TemplateLanguage' => true,
'Recipients' => [
[
'Email' => 'dev@talentstube.com',
'Vars' => [
'entreprise' => $ad->getCompany()->getBrandName(),
'offre' => $ad->getTitle(),
]
]
]
];
$response = $mj->post(Resources::$Email, ['body' => $body]);
$response->success() && var_dump($response->getData());
return $this->redirectToRoute('company_ad');
}
return $this->render('company/ad_edit.html.twig', [
@@ -159,6 +159,16 @@ class AnswerController extends AbstractController
// But if that werent't the case, its value should have been tested
// before assigning it to $responseTemp
$responseTemp = $answer->getUser()->getFirstname();
if($answer->getUser()->getCompany()){
if($answer->getUser()->getCompany()->getCv()){
if ($this->container->get( 'kernel' )->getEnvironment() == "dev") {
$cheminCv = "../../../../../uploads/cv/";
}else{
$cheminCv = "../../../../uploads/cv/";
}
$responseTemp .= "<br> <a target='_blank' href='".$cheminCv.$answer->getUser()->getCompany()->getCv()."'>Lien vers le CV papier</a>";
}
}
break;
}
@@ -206,7 +216,12 @@ class AnswerController extends AbstractController
}
case 'status':
{
$responseTemp = "<span id='status_".$answer->getId()."'> ".$answer->getstatus()."</span> ";
if($answer->getstatus()=="SENDED"){
$status= "ENVOYE";
}else{
$status=$answer->getstatus();
}
$responseTemp = "<span id='status_".$answer->getId()."'> ".$status."</span> ";
break;
@@ -0,0 +1,93 @@
<?php
namespace AppBundle\Controller\Admin;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Request;
use AppBundle\Entity\Message;
use Symfony\Component\HttpFoundation\RedirectResponse;
use DateTime;
class BatchController extends Controller
{
/**
* @Route("/admin/config/batch/message", name="admin_batch_message")
*/
public function adminBatchMessageAction()
{
//recuperer les messages qui ont un comment
return $this->render('admin/batch_message.html.twig', [
]);
}
/**
* @Route("/admin/config/batch/message/comment", name="admin_batch_message_comment")
*/
public function adminBatchMessageCommentAction()
{
//recuperer les answers qui ont un comment
$em = $this->getDoctrine()->getManager();
$answers = $em->getRepository('AppBundle:Answer')->findAllComment();
//parcours des answers avec comment
foreach ($answers as $a) {
if($a->getAd()){
$message = new Message('Chat', $a->getComment(), $a->getUser(), $a->getAd()->getCreator(), 'Message du talent', $a);
$message->setUTime($a->getUTime());
$message->setCTime($a->getCTime());
$em->persist($message);
$em->flush();
}
}
return $this->render('admin/dashboard.html.twig', array());
}
/**
* @Route("/admin/config/batch/candidature", name="admin_batch_candidatures")
*/
public function adminBatchCandidaturesAction()
{
return $this->render('admin/batch_candidatures.html.twig', [
]);
}
/**
* @Route("/admin/config/batch/candidature/init", name="admin_batch_candidature_init")
*/
public function adminBatchcandidatureInitAction()
{
//recuperer les messages qui ont un comment
$em = $this->getDoctrine()->getManager();
$messages = $em->getRepository('AppBundle:Message')->getMessageAnswers();
//parcours des answers avec comment
foreach ($messages as $m) {
$answer = $m->getAnswer();
if(!$answer->getStatusReponse() ){
dump($answer);
$answer->setStatusReponse("CONTACTE");
$em->persist($answer);
$em->flush();
dump($answer);
}
}
return $this->render('admin/dashboard.html.twig', array());
}
}
@@ -24,10 +24,15 @@ class MediaController extends Controller
public function adminVideoModerationListAction()
{
$em = $this->getDoctrine()->getManager();
$medias = $em->getRepository('AppBundle:Media')->findByStatus('TO_MODERATE');
$medias = $em->getRepository('AppBundle:Media')->getMedias();
if ($this->container->get( 'kernel' )->getEnvironment() == "dev") {
$chemin="../../../../uploads/videos/";
}else{
$chemin="../../../uploads/videos/";
}
return $this->render('admin/media_list_moderation.html.twig', array(
'medias' => $medias,
'chemin' => $chemin,
));
}
@@ -24,6 +24,8 @@ class PageController extends Controller
]);
}
/**
* @Route("/admin/config/page/{id}/edit", name="admin_page_edit")
*/
@@ -63,4 +65,6 @@ class PageController extends Controller
return $this->redirectToRoute('admin_page_list');
}
}
@@ -4,6 +4,8 @@ namespace AppBundle\Controller;
use AppBundle\Entity\Ad;
use AppBundle\Entity\Answer;
use AppBundle\Entity\Note;
use AppBundle\Form\NoteAjaxType;
use AppBundle\Entity\Company;
use AppBundle\Entity\Message;
use AppBundle\Form\AnswerType;
@@ -48,6 +50,22 @@ class AnswerController extends Controller
return new JsonResponse(array('success' => "true", 'code' => $ad->getCode()));
}
/**
* @Route("/anwser/updateStatus/{id}", name="anwser_update_status")
*/
public function anwserUpdateStatusAction(Request $request, Answer $answer)
{
if ($answer) {
$em = $this->getDoctrine()->getManager();
$answer->setStatusReponse($request->query->get('status'));
$em->persist($answer);
$em->flush();
}
return new JsonResponse(array('success' => "true", 'code' => ""));
}
@@ -271,42 +289,37 @@ class AnswerController extends Controller
*/
public function talentCreateSpontaneaousAction(Request $request, Company $company)
{
$securityContext = $this->container->get('security.authorization_checker');
if (!$securityContext->isGranted('IS_AUTHENTICATED_FULLY')) {
$this->createAnonymousUser();
}
$em = $this->getDoctrine()->getManager();
$existAnswer = $em->getRepository('AppBundle:Answer')->findOneBy(array('user' => $this->getUser(), 'company' => $company));
if ($existAnswer) {
if ($existAnswer->getStatus() == "SENDED") {
$answer = new Answer($this->getUser(), null, 'DRAFT', $company);
$em->persist($answer);
$em->flush();
} else {
$answer = $existAnswer;
}
} else {
$answer = new Answer($this->getUser(), null, 'DRAFT', $company);
$em->persist($answer);
$em->flush();
}
$em->persist($answer);
$em->flush();
$user = $this->getUser();
$mustLogin = false;
if (!$user->hasRole('ROLE_TALENT')) {
$mustLogin = true;
}
$route_videotheque = $this->generateUrl("answer_create_company_step2", array('id' => $company->getId(), 'type' => 'videotheque'));
$this->get('twig')->addGlobal('destination_login', $route_videotheque);
// $securityContext = $this->container->get('security.authorization_checker');
// if (!$securityContext->isGranted('IS_AUTHENTICATED_FULLY')) {
// $this->createAnonymousUser();
// }
// $em = $this->getDoctrine()->getManager();
// $existAnswer = $em->getRepository('AppBundle:Answer')->findOneBy(array('user' => $this->getUser(), 'company' => $company));
// if ($existAnswer) {
// if ($existAnswer->getStatus() == "SENDED") {
// $answer = new Answer($this->getUser(), null, 'DRAFT', $company);
// $em->persist($answer);
// $em->flush();
// } else {
// $answer = $existAnswer;
// }
// } else {
// $answer = new Answer($this->getUser(), null, 'DRAFT', $company);
// $em->persist($answer);
// $em->flush();
// }
// $em->persist($answer);
// $em->flush();
// $user = $this->getUser();
// $mustLogin = false;
// if (!$user->hasRole('ROLE_TALENT')) {
// $mustLogin = true;
// }
// $route_videotheque = $this->generateUrl("answer_create_company_step2", array('id' => $company->getId(), 'type' => 'videotheque'));
// $this->get('twig')->addGlobal('destination_login', $route_videotheque);
return $this->render('answer/answer_create_step1.html.twig', array(
'typeObject' => 'Company',
'answer' => $answer,
'object' => $company,
'mustLogin' => $mustLogin,
'route_videotheque' => $route_videotheque,
));
return $this->render('answer/answer_create_step1.html.twig'
);
}
/**
@@ -386,11 +399,11 @@ class AnswerController extends Controller
if ($form->isSubmitted() && $form->isValid()) {
$mj = new Client($this->getParameter('mailjet_public'), $this->getParameter('mailjet_private'));
// $link = $this->generateUrl('company_answer_show', array('id' => $answer->getId()), UrlGeneratorInterface::ABSOLUTE_URL);
$contactMail = $user->getEmail();
$contactMail = $answer->getUser()->getEmail();
if ($this->container->get( 'kernel' )->getEnvironment() == "dev") {
$contactMail = "dev@talentstube.com";
}
if($message->getVideo() == null){
// if($message->getVideo() == null){
$body = [
'FromEmail' => "noreply@talentstube.io",
'FromName' => "Talents Tube",
@@ -407,37 +420,36 @@ class AnswerController extends Controller
]
]
];
}else{
$thumbnailsArray = $message->getVideo()->getThumbnails();
$img="";
if($thumbnailsArray){
if($thumbnailsArray[0]){
if($thumbnailsArray[0]['sizes']){
$img = $thumbnailsArray[0]['sizes'][4]['link'];
}
}
}
// }else{
// $thumbnailsArray = $message->getVideo()->getThumbnails();
// $img="";
// if($thumbnailsArray){
// if($thumbnailsArray[0]){
// if($thumbnailsArray[0]['sizes']){
// $img = $thumbnailsArray[0]['sizes'][4]['link'];
// }
// }
// }
$body = [
'FromEmail' => "noreply@talentstube.io",
'FromName' => "Talents tube",
'Subject' => "Découvrez la réponse de lentreprise pour votre candidature",
'MJ-TemplateID' =>2196010 ,
'MJ-TemplateLanguage' => true,
'Recipients' => [
[
'Email' => $contactMail,
'Vars' => [
'prenom' => $answer->getUser()->getFirstname(),
'entreprise' => $this->getUser()->getCompany()->getBrandName(),
'imgReponseEntreprise' => $img,
]
]
]
];
}
$response = $mj->post(Resources::$Email, ['body' => $body]);
$response->success() && var_dump($response->getData());
// $body = [
// 'FromEmail' => "noreply@talentstube.io",
// 'FromName' => "Talents tube",
// 'Subject' => "Découvrez la réponse de lentreprise pour votre candidature.",
// 'MJ-TemplateID' =>2196010 ,
// 'MJ-TemplateLanguage' => true,
// 'Recipients' => [
// [
// 'Email' => $contactMail,
// 'Vars' => [
// 'prenom' => $answer->getUser()->getFirstname(),
// 'entreprise' => $this->getUser()->getCompany()->getBrandName(),
// 'imgReponseEntreprise' => $img,
// ]
// ]
// ]
// ];
// }
@@ -475,20 +487,42 @@ class AnswerController extends Controller
$em = $this->getDoctrine()->getManager();
$message->setSubject('Candidature : ' . $title);
$message->setContent($messageText);
$message->setStatus($form['status']->getData());
$message->setAnswer($answer);
$message->setStatus('CONTACTED');
$em->persist($message);
$em->flush();
$response = $mj->post(Resources::$Email, ['body' => $body]);
$response->success() && var_dump($response->getData());
return $this->redirectToRoute('company_answer_show', ['id' => $answer->getId()]);
}
$formMessage = $form->createView();
$formVideo = $form;
$formVideo->remove('message');
//$formVideo->remove('message');
$note = new Note($user);
$formNote = $this->createForm(NoteAjaxType::class, $note);
$formNote->handleRequest($request);
if ($formNote->isSubmitted() && $formNote->isValid()) {
$answer->addNote($note);
$em->persist($answer);
$em->flush();
$referer = $request->headers->get('referer');
return $this->redirect($referer);
}
$extension="";
if($answer->getUser()->getCompany()->getCv()){
//$fichier = new SplFileInfo($answer->getUser()->getCompany()->getCv());
$fichier = explode(".", $answer->getUser()->getCompany()->getCv());
$extension=$fichier[1];
}
return $this->render('company/answer_show.html.twig', [
'answer' => $answer,
'extension' => $extension,
'form' => $formMessage,
'formVideo' => $formVideo->createView(),
'formNote' => $formNote->createView(),
'type' => $type,
'videos' => $videos,
'message' => $message
@@ -500,27 +534,283 @@ class AnswerController extends Controller
*/
public function companyListAnswerAction()
{
// $answers = $em->getRepository('AppBundle:Answer')->getAnswerByCompany($user->getCompany()->getId());
// $spontaneous = $em->getRepository('AppBundle:Answer')->findBy(
// array(
// 'company' => $user->getCompany()->getId(),
// 'status' => 'SENDED'
// ),
// array(
// 'cTime' => 'DESC'
// )
// );
$user = $this->getUser();
$em = $this->getDoctrine()->getManager();
$answers = $em->getRepository('AppBundle:Answer')->getAnswerByCompany($user->getCompany()->getId());
$spontaneous = $em->getRepository('AppBundle:Answer')->findBy(
array(
'company' => $user->getCompany()->getId(),
'status' => 'SENDED',
'ad' => null
),
array(
'uTime' => 'DESC'
)
);
$offres = $em->getRepository('AppBundle:Ad')->getAdByCompany($user->getCompany()->getId());
return $this->render('company/answer_list.html.twig', [
'answers' => $answers,
'spontaneous' => $spontaneous,
// 'answers' => $answers,
// 'spontaneous' => $spontaneous,
'offres' => $offres,
'type' => 'answer'
]);
}
/**
* @Route("/alimenterCandidaturesCompany", name="alimenterCandidaturesCompany")
*/
public function listDatatablesAction(Request $request)
{
$companyId = $this->getUser()->getCompany()->getId();
return $this->recupererCandidature($request, "company", $companyId);
}
/**
* @Route("/alimenterCandidaturesAd/{id}", name="alimenterCandidaturesAd")
*/
public function listDatatablesAdAction(Request $request, $id)
{
return $this->recupererCandidature($request, "ad", $id);
}
public function recupererCandidature($request, $type, $id){
// Set up required variables
$em = $this->getDoctrine()->getManager();
$this->repository = $em->getRepository('AppBundle:Answer');
//$this->translator = $this->get('translator');
// Get the parameters from DataTable Ajax Call
if ($request->getMethod() == 'POST')
{
$draw = intval($request->request->get('draw'));
$start = $request->request->get('start');
$length = $request->request->get('length');
$search = $request->request->get('search');
$orders = $request->request->get('order');
$columns = $request->request->get('columns');
}
else // If the request is not a POST one, die hard
die;
// Process Parameters
// Orders
foreach ($orders as $key => $order)
{
// Orders does not contain the name of the column, but its number,
// so add the name so we can handle it just like the $columns array
$orders[$key]['name'] = $columns[$order['column']]['name'];
}
// Further filtering can be done in the Repository by passing necessary arguments
$otherConditions = array("type" => $type, "id" => $id);
// Get results from the Repository
$results = $this->repository->getRequiredDTData($start, $length, $orders, $search, $columns, $otherConditions);
// Returned objects are of type Town
$objects = $results["results"];
// Get total number of objects
$total_objects_count = $this->repository->comptage();
// Get total number of results
$selected_objects_count = count($objects);
// Get total number of filtered data
$filtered_objects_count = $results["countResult"];
// Construct response
$response = '{
"draw": '.$draw.',
"recordsTotal": '.$total_objects_count.',
"recordsFiltered": '.$filtered_objects_count.',
"data": [';
$i = 0;
foreach ($objects as $key => $answer)
{
$response .= '["';
$j = 0;
$nbColumn = count($columns);
foreach ($columns as $key => $column)
{
// In all cases where something does not exist or went wrong, return -
$responseTemp = "-";
switch($column['name'])
{
case 'partage':
{
if($answer->getIsShared()){
$checked = "checked";
}else{
$checked = "";
}
$responseTemp ="<input type='checkbox' id='answer_".$answer->getId()."' name='answers' class='nav-trigger' onChange='verifierIsChecked(".$answer->getId().")' ".$checked." /><label for='nav-trigger' class='navicon-button x'><div class='navicon'></div></label>";
break;
}
case 'video':
{
if ($answer->getVideo()->getThumbnails()){
$img= $answer->getVideo()->getThumbnails()[0]['sizes'][1]['link'];
}else{
//$img= "https://blog.talentstube.com/wp-content/uploads/2021/01/default_picture_company.jpg";
$mediaManager = $this->get('media_manager');
$mediaManager->getThumbnails($answer);
$img= $answer->getVideo()->getThumbnails()[0]['sizes'][1]['link'];
}
$link = $this->generateUrl('company_answer_show', array('id' => $answer->getId()), UrlGeneratorInterface::ABSOLUTE_URL);
$responseTemp = " <a href='".$link."'><img src='".$img."' width='200px' height='150px'></a>";
break;
}
case 'nom':
{
// We know from the class definition that the postal code cannot be null
// But if that werent't the case, its value should have been tested
// before assigning it to $responseTemp
$link = $this->generateUrl('company_answer_show', array('id' => $answer->getId()), UrlGeneratorInterface::ABSOLUTE_URL);
$responseTemp = "<a href='".$link."'>".$answer->getUser()->getLastname()."</a>";
break;
}
case 'prenom':
{
// We know from the class definition that the postal code cannot be null
// But if that werent't the case, its value should have been tested
// before assigning it to $responseTemp
$link = $this->generateUrl('company_answer_show', array('id' => $answer->getId()), UrlGeneratorInterface::ABSOLUTE_URL);
$responseTemp = "<a href='".$link."'>".$answer->getUser()->getFirstname()."</a>";
break;
}
case 'dateReception':
{
// We know from the class definition that the postal code cannot be null
// But if that werent't the case, its value should have been tested
// before assigning it to $responseTemp
$responseTemp = $answer->getSendTime()->format('d/m/Y H:i:s');
break;
}
case 'offre':
{
// We know from the class definition that the postal code cannot be null
// But if that werent't the case, its value should have been tested
// before assigning it to $responseTemp
if($answer->getAd()){
$responseTemp = $answer->getAd()->getTitle();
}else{
$responseTemp = "Candidature spontanée";
}
break;
}
case 'date_envoi':
{
if($answer->getSendTime()){
$responseTemp = date_format($answer->getSendTime(), 'd-m-Y H:i:s');;
}else{
$responseTemp ="ND";
}
// This cannot happen if inner join is used
// However it can happen if left or right joins are used
break;
}
case 'ad_id':
{
$video = $answer->getVideo();
$responseTemp ="ND";
if($video){
$responseTemp = 'ID Candidature :'.$answer->getId().'<br />';
$videoRenommee = str_replace("/videos/", "", $video->getCdnUrl());
//TODO : revoir ca car une vue dans un controller ca n'est pas top!!!!!
$responseTemp .= "<iframe src='https://player.vimeo.com/video/".$videoRenommee."?embedparameter=value' width='auto' height='auto' frameborder='0' allowfullscreen></iframe>";
}
break;
}
case 'statusReponse':
{
// if($answer->getstatus()=="SENDED"){
// $status= "ENVOYE";
// }else{
// $status=$answer->getstatus();
// }
// $responseTemp = "<span id='status_".$answer->getId()."'> ".$status."</span> ";
if ($answer->getStatusReponse() =="EMBAUCHE" ){
$responseTemp = "<span class='label label-success'>Embauché</span> ";
}elseif ($answer->getStatusReponse() =="REFUSE" ){
$responseTemp = "<span class='label label-important'>Refusé</span> ";
}elseif ($answer->getStatusReponse() =="ENTRETIEN" ){
$responseTemp = "<span class='label label-warning'>Entretien programmé</span> ";
}elseif ($answer->getStatusReponse() =="A_TRAITER" ){
$responseTemp = "<span class='label label-info'>À traiter</span> ";
}elseif ($answer->getStatusReponse() =="CONTACTE" ){
$responseTemp = "<span class='label'>Contacté</span> ";
}else {
$responseTemp = "<span class='label label-info'>À traiter</span> ";
}
break;
}
case 'localisation':
{
if($answer->getUser()->getGeoloc()) {
foreach ($answer->getUser()->getGeoloc() as &$adress) {
$responseTemp =$adress["locality"] .", ". $adress["postal_code"];
}
}else {
$responseTemp ="Non renseignée";
}
break;
}
}
// Add the found data to the json
$response .= $responseTemp;
if(++$j !== $nbColumn)
$response .='","';
}
$response .= '"]';
// Not on the last item
if(++$i !== $selected_objects_count)
$response .= ',';
}
$response .= ']}';
// Send all this stuff back to DataTables
$returnResponse = new JsonResponse();
$returnResponse->setJson($response);
return $returnResponse;
}
/**
* @Route("/entreprise/me/espace-oe/candidature-spontanee/", name="company_spontaneous_list")
*/
@@ -173,34 +173,44 @@ class AnswerController extends FOSRestController
$mailManager = $this->get('app.mail_manager');
foreach ($usersCompany as $user){
$mj = new Client($this->getParameter('mailjet_public'), $this->getParameter('mailjet_private'));
$mj = new Client("355697fac93fca865660734b4fdffaeb", "ddecf75321ca89c09e561857b13534c8");
$link = $this->generateUrl('company_answer_show', array('id' => $answer->getId()), UrlGeneratorInterface::ABSOLUTE_URL);
$contactMail = $user->getEmail();
if ($this->container->get( 'kernel' )->getEnvironment() == "dev") {
$contactMail = "dev@talentstube.com";
}else{
// $complSubject="";
// if($user->getEmail()){
// $complSubject=$user->getEmail();
// }
if($answer->getUser()){
$body = [
'FromEmail' => "noreply@talentstube.io",
'FromName' => "Talents Tube",
// 'To' => $contactMail,
'Subject' => "Une nouvelle candidature reçue sur Talents Tube ",
'MJ-TemplateID' =>2297838 ,
'MJ-TemplateLanguage' => true,
'Recipients' => [
[
'Email' => $contactMail,
'Name' => $user->getLastname(),
'Vars' => [
'prenomRecruteur' => $user->getFirstname(),
'nomRecruteur' => $user->getLastname(),
'prenom' => $answer->getUser()->getFirstname(),
'nom' => $answer->getUser()->getLastname(),
'urlCandidature' => $link,
]
]
],
];
$response = $mj->post(Resources::$Email, ['body' => $body]);
$response->success() ;
}
}
$body = [
'FromEmail' => "noreply@talentstube.io",
'FromName' => "Talents Tube",
'Subject' => "Une nouvelle candidature reçue sur Talents Tube",
'MJ-TemplateID' =>2164146 ,
'MJ-TemplateLanguage' => true,
'Recipients' => [
[
'Email' => $contactMail,
'Vars' => [
'prenomRecruteur' => $user->getFirstname(),
'nomRecruteur' => $user->getLastname(),
'prenom' => $answer->getUser()->getFirstname(),
'nom' => $answer->getUser()->getLastname(),
'imgCandidature' => $img,
'urlCandidature' => $link,
]
]
]
];
$response = $mj->post(Resources::$Email, ['body' => $body]);
$response->success() && var_dump($response->getData());
// $mailManager->sendMail(
@@ -18,6 +18,12 @@ use JMS\Serializer\SerializationContext;
use Symfony\Component\HttpFoundation\JsonResponse;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Symfony\Component\HttpFoundation\Request;
//MAILJET
use AppBundle\Entity\Mailjet;
// use AppBundle\Entity\Response;
use AppBundle\Entity\Resources;
use AppBundle\Entity\Config;
use AppBundle\Entity\Client;
class CompanyController extends FOSRestController
{
@@ -111,7 +117,7 @@ class CompanyController extends FOSRestController
/**
* @Rest\Get(path="/api/getAppelationsMetier", name="api_getAppelationsMetier")
* @Rest\View
* Récupérer des appelations à partir d'un métier (code ROME)
* Récupérer des appelations pole emploi à partir d'un métier (code ROME)
*/
public function getAppelationsMetierAction(Request $request)
{
@@ -162,7 +168,7 @@ class CompanyController extends FOSRestController
/**
* @Rest\Get(path="/api/getAppelationsLibelle", name="api_getAppelationsLibelle")
* @Rest\View
* Récupérer des appelations à partir d'un libellé
* Récupérer des appelations pole emploi à partir d'un libellé
*/
public function getAppelationsLibelleAction(Request $request)
{
@@ -214,7 +220,7 @@ class CompanyController extends FOSRestController
/**
* @Rest\Get(path="/api/getDetailAppelation", name="api_getDetailAppelation")
* @Rest\View
* Récupérer le détail d'une appelation
* Récupérer le détail d'une appelation pole meploi
*/
public function getDetailAppelationAction(Request $request)
{
@@ -328,6 +334,57 @@ class CompanyController extends FOSRestController
return new JsonResponse($response, 200, [], true);
}
/**
* @Rest\Get(path="/api/demanderRdv", name="api_demanderRdv")
* @Rest\View
*/
public function demanderRdvAction(Request $request)
{
//APPEL de l'api Pole emploi pour recuperer Token
$nom=$request->query->get('nom');
$prenom=$request->query->get('prenom');
$email=$request->query->get('email');
$telephone=$request->query->get('telephone');
$page=$request->query->get('page');
if(isset($_SERVER['HTTP_REFERER'])) {
$previous = $_SERVER['HTTP_REFERER']." / ".$_SERVER['REQUEST_URI'];
}
$mj = new Client($this->getParameter('mailjet_public'), $this->getParameter('mailjet_private'));
// $link = $this->generateUrl('company_answer_show', array('id' => $existAnswer->getId()), UrlGeneratorInterface::ABSOLUTE_URL);
$contactMail = "contact@talentstube.com";
if ($this->container->get( 'kernel' )->getEnvironment() == "dev") {
$contactMail = "dev@talentstube.com";
}
$body = [
'FromEmail' => "noreply@talentstube.io",
'FromName' => "Talents Tube",
'Subject' => "Demande de rdv ",
'MJ-TemplateID' =>2383497 ,
'MJ-TemplateLanguage' => true,
'Recipients' => [
[
'Email' => $contactMail,
'Vars' => [
'prenom' => $prenom,
'nom' => $nom,
'email' => $email,
'telephone' => $telephone,
'page' => $page,
'precedent' => $previous
]
]
]
];
$response = $mj->post(Resources::$Email, ['body' => $body]);
return new JsonResponse(array('retour' => "true"));
}
/**
* @Rest\Get("/api/companies", name="api_company_list")
* @Rest\QueryParam(
@@ -68,8 +68,9 @@ class SecurityController extends FOSRestController
$email = htmlspecialchars($request->get('email'));
$password = htmlspecialchars($request->get('password'));
$adId = htmlspecialchars($request->get('adId'));
if (!isset($firstname) || !isset($lastname) || !isset($email) || !isset($password))
$phoneTalent = htmlspecialchars($request->get('phone'));
if (!isset($firstname) || !isset($lastname) || !isset($email) || !isset($password) )
$status = array('status' => "failure", 'message' => 'empty parameters');
else {
$userManager = $this->get('fos_user.user_manager');
@@ -89,7 +90,8 @@ class SecurityController extends FOSRestController
$user->setEnabled(false);
$user->setRoles(array('ROLE_TALENT'));
$tokengen = $this->get('fos_user.util.token_generator');
$user->setConfirmationToken($tokengen->generateToken());
@@ -100,11 +102,28 @@ class SecurityController extends FOSRestController
$alias = $slugService->slugify($user->getId() . "-" . $user->getFirstname() . "-" . $user->getLastname());
$company->setAlias($alias);
$company->setType("TALENT");
$company->setDescription("Annonce consultée : ".$adId);
$company->setWebsite("");
$company->setLinkedin("");
$company->setTwitter("");
$company->setTitleTalent("");
$extra['twitter']=" ";
$extra['linkedin']=" ";
$extra['phoneTalent']=$phoneTalent;
$extra['titleTalent']=" ";
$extra['situationTalent']=" ";
$extra['descriptionTalent']=" ";
$company->setExtra($extra);
$user->setCompany($company);
$userManager->updateUser($user);
}
// $userManager->updatePassword($user);//pas besoin car fait dans updateUser , vraiment bizarre....
$status = array('status' => "success", 'confirmationToken' => $user->getConfirmationToken(), 'email' => $user->getEmail(), 'firstname' => $user->getFirstname(), 'lastname' => $user->getLastname(), 'adId' => $adId);
$status = array('status' => "success", 'confirmationToken' => $user->getConfirmationToken(), 'email' => $user->getEmail(), 'firstname' => $user->getFirstname(), 'lastname' => $user->getLastname(), 'phone' => $company->getPhoneTalent(), 'adId' => $adId);
}
}
return new JsonResponse($status);
@@ -164,6 +183,21 @@ class SecurityController extends FOSRestController
$countryTalent = "";
}
$titleTalent = htmlspecialchars($request->get('currentJob'));
$geoloc = htmlspecialchars($request->get('geoloc'));
$street_number = htmlspecialchars($request->get('street_number'));
$route = htmlspecialchars($request->get('route'));
$locality = htmlspecialchars($request->get('locality'));
$administrative_area_level_2 = htmlspecialchars($request->get('administrative_area_level_2'));
$administrative_area_level_1 = htmlspecialchars($request->get('administrative_area_level_1'));
$country = htmlspecialchars($request->get('country'));
$postal_code = htmlspecialchars($request->get('postal_code'));
$formatted_address = str_replace('"', '', $request->get('formatted_address'));
$lat = stripslashes($request->get('lat'));
$lng = stripslashes($request->get('lng'));
//
$newLinkedin = htmlspecialchars($request->get('linkedin'));
$newTwitter = htmlspecialchars($request->get('twitter'));
$newWebsite = htmlspecialchars($request->get('website'));
@@ -180,6 +214,26 @@ class SecurityController extends FOSRestController
$talent->setLinkedin($newLinkedin);
$talent->setTwitter($newTwitter);
$talent->setTitleTalent($titleTalent);
$array = Array ();
// \"$formatted_address
if($formatted_address!=""){
$array[] = Array (
"street_number" => $street_number,
"route" => $route,
"administrative_area_level_2" => $administrative_area_level_2,
"administrative_area_level_1" => $administrative_area_level_1,
"country" => $country,
"locality" => $locality,
"postal_code" => $postal_code,
"formatted_address" => $formatted_address,
"lat" => stripslashes($lat),
"lng" => stripslashes($lng)
);
$usr->setGeoloc($array);
}
$talent->setPhoneTalent($phoneTalent);
//$talent->setPhoneTalent($phoneTalent);
$billing = array(
@@ -194,7 +248,7 @@ class SecurityController extends FOSRestController
$companyManager->updateTalent($usr);
$status = array('status' => "success");
$status = array('status' => "success!!!!!!!!!!!!!!!!!!");
}
} else {
$status = array('status' => "failure", 'message' => "Vous n'êtes pas connecté.");
@@ -6,6 +6,7 @@ use AppBundle\Entity\Company;
use AppBundle\Entity\User;
use AppBundle\Form\AdSearchType;
use AppBundle\Form\CompanyProfileType;
use AppBundle\Form\ProfileLogoType;
use AppBundle\Form\UserType;
use AppBundle\Form\UserTypeCreate;
use Edeclic\PrestashopBridgeBundle\Event\PrestashopBridgeEvents;
@@ -36,9 +37,27 @@ class CompanyController extends Controller
$stats = $this->get("app.stats_manager");
$em = $this->getDoctrine()->getManager();
$ads = $em->getRepository('AppBundle:Ad')->findBy(array('company' => $this->getUser()->getCompany()));
$arrayDate['dateBegin'] = new \DateTime('now -7 Day');
$arrayDate['dateEnd'] = new \DateTime('now');
$records7days = $stats->getCompanyDashboard($this->getUser()->getCompany()->getId(), $arrayDate);
//dump($records7days);
$arrayDate['dateBegin'] = new \DateTime('now -30 Day');
$records30days = $stats->getCompanyDashboard($this->getUser()->getCompany()->getId(), $arrayDate);
//dump($records30days);
$records = $stats->getCompanyDashboard($this->getUser()->getCompany()->getId(), null);
//dump($records);
$answersSended = $em->getRepository('AppBundle:Answer')->getAnswerByCompanyStatus($this->getUser()->getCompany()->getId(), 'SENDED');
$answersDraft = $em->getRepository('AppBundle:Answer')->getAnswerByCompanyStatus($this->getUser()->getCompany()->getId(), 'DRAFT');
$nbAnswersSended =count($answersSended);
$nbAnswersDraft =count($answersDraft);
return $this->render('company/dashboard.html.twig', [
'ads' => $ads,
'records7days' => $records7days,
'records30days' => $records30days,
'records' => $records,
'nbAnswersSended' => $nbAnswersSended,
'nbAnswersDraft' => $nbAnswersDraft,
'arrayByAds' => $records['arrayByAds'],
]);
}
@@ -83,15 +102,38 @@ class CompanyController extends Controller
if ($form->isSubmitted() && $form->isValid()) {
$companyManager = $this->get('app.company_manager');
$companyManager->updateCompany($company);
$event = new UserEvent($user);
$this->get('event_dispatcher')->dispatch(PrestashopBridgeEvents::USER_PROFIL_EDIT_SUCCESS, $event);
//$event = new UserEvent($user);
//$this->get('event_dispatcher')->dispatch(PrestashopBridgeEvents::USER_PROFIL_EDIT_SUCCESS, $event);
$this->addFlash(
'notice',
$this->get('translator')->trans('company.profile.save.title')
);
return $this->redirectToRoute('company_dashboard');
}
$formMedia = $this->createForm(ProfileLogoType::class, $company);
$formMedia->handleRequest($request);
if ($formMedia->isSubmitted() && $formMedia->isValid()) {
$companyManager = $this->get('app.company_manager');
$companyManager->updateLogo($company);
$this->addFlash(
'notice',
$this->get('translator')->trans('Le logo de votre entreprise a bien été modifié')
);
return $this->redirect($this->generateUrl('company_profile'));
}
return $this->render('company/profile.html.twig', [
'company'=>$company,
'form' => $form->createView(),
'formMedia' => $formMedia->createView(),
]);
}
@@ -401,6 +401,42 @@ class DefaultController extends Controller
//return $this->render('page_static/video_territoire.html.twig');
return $this->render('page_static/accompagnement_video_territoire.html.twig');
}
/**
* @Route("/offre-emploi-originale", name="offre_emploi_originale")
*/
public function landingAction()
{
$previous="";
if(isset($_SERVER['HTTP_REFERER'])) {
$previous = $_SERVER['HTTP_REFERER']." / ".$_SERVER['REQUEST_URI'];
}
return $this->render('landing/offreEmploiOriginal.html.twig', [
'previous' => $previous,
]);
}
/**
* @Route("/metier-en-tension", name="metier_en_tension")
*/
public function metierTensionAction()
{
return $this->render('landing/metierTension.html.twig', [
]);
}
/**
* @Route("/recrutement-aide-a-domicile", name="recrutement_aide_a_domicile")
*/
public function aideADomicileAction()
{
return $this->render('landing/aideADomicile.html.twig', [
]);
}
/**
* @param Request $request
*
@@ -35,8 +35,9 @@ class MediaController extends Controller
*/
public function companyMediaAction(Request $request)
{
$event = new UserEvent($this->getUser());
$this->get('event_dispatcher')->dispatch(PrestashopBridgeEvents::USER_PROD_UPDATE, $event);
//$event = new UserEvent($this->getUser());
$company = $this->getUser()->getCompany();
//$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);
@@ -48,8 +49,10 @@ class MediaController extends Controller
$media->setTitle($title);
$em->persist($media);
$em->flush();
return $this->redirectToRoute('company_ad');
$company->setPresentationVideo($media);
$em->persist($company);
$em->flush();
return $this->redirectToRoute('company_marque');
}
return $this->render('media/media_list.html.twig', array(
@@ -63,8 +66,8 @@ class MediaController extends Controller
*/
public function territoryMediaAction(Request $request)
{
$event = new UserEvent($this->getUser());
$this->get('event_dispatcher')->dispatch(PrestashopBridgeEvents::USER_PROD_UPDATE, $event);
//$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);
@@ -111,9 +114,9 @@ class MediaController extends Controller
]);
}
public function convertKekab($string){
$search = array('À', 'Á', 'Â', 'Ã', 'Ä', 'Å', 'Ç', 'È', 'É', 'Ê', 'Ë', 'Ì', 'Í', 'Î', 'Ï', 'Ò', 'Ó', 'Ô', 'Õ', 'Ö', 'Ù', 'Ú', 'Û', 'Ü', 'Ý', 'à', 'á', 'â', 'ã', 'ä', 'å', 'ç', 'è', 'é', 'ê', 'ë', 'ì', 'í', 'î', 'ï', 'ð', 'ò', 'ó', 'ô', 'õ', 'ö', 'ù', 'ú', 'û', 'ü', 'ý', 'ÿ');
$search = array('À', 'Á', 'Â', 'Ã', 'Ä', 'Å', 'Ç', 'È', 'É', 'Ê', 'Ë', 'Ì', 'Í', 'Î', 'Ï', 'Ò', 'Ó', 'Ô', 'Õ', 'Ö', 'Ù', 'Ú', 'Û', 'Ü', 'Ý', 'à', 'á', 'â', 'ã', 'ä', 'å', 'ç', 'è', 'é', 'ê', 'ë', 'ì', 'í', 'î', 'ï', 'ð', 'ò', 'ó', 'ô', 'õ', 'ö', 'ù', 'ú', 'û', 'ü', 'ý', 'ÿ', "/", "'");
//Préférez str_replace à strtr car strtr travaille directement sur les octets, ce qui pose problème en UTF-8
$replace = array('A', 'A', 'A', 'A', 'A', 'A', 'C', 'E', 'E', 'E', 'E', 'I', 'I', 'I', 'I', 'O', 'O', 'O', 'O', 'O', 'U', 'U', 'U', 'U', 'Y', 'a', 'a', 'a', 'a', 'a', 'a', 'c', 'e', 'e', 'e', 'e', 'i', 'i', 'i', 'i', 'o', 'o', 'o', 'o', 'o', 'o', 'u', 'u', 'u', 'u', 'y', 'y');
$replace = array('A', 'A', 'A', 'A', 'A', 'A', 'C', 'E', 'E', 'E', 'E', 'I', 'I', 'I', 'I', 'O', 'O', 'O', 'O', 'O', 'U', 'U', 'U', 'U', 'Y', 'a', 'a', 'a', 'a', 'a', 'a', 'c', 'e', 'e', 'e', 'e', 'i', 'i', 'i', 'i', 'o', 'o', 'o', 'o', 'o', 'o', 'u', 'u', 'u', 'u', 'y', 'y', "", "");
$string = str_replace($search, $replace, $string);
$string = strtolower (str_replace(" ", "-", $string));
@@ -152,10 +155,37 @@ class MediaController extends Controller
$numberOfMonth = 6;
$unpublishedDate = new \DateTime('now');
$unpublishedDate = $unpublishedDate->add(new \DateInterval('P' . $numberOfMonth . 'M'));
$ad->setStatus("TO_PUBLISH");
// ENVOI DE MAIL a l'equipe TT pour prevenir d'une modif d'annonce
$ad->setUnpublishedAt($unpublishedDate);
$em->persist($ad);
$em->flush();
$mj = new Client($this->getParameter('mailjet_public'), $this->getParameter('mailjet_private'));
// $link = $this->generateUrl('company_answer_show', array('id' => $answer->getId()), UrlGeneratorInterface::ABSOLUTE_URL);
$body = [
'FromEmail' => "noreply@talentstube.io",
'FromName' => "Talents Tube",
'Subject' => "Creation/Modification Offre d'emploi ".$ad->getCompany()->getBrandName(),
'MJ-TemplateID' =>2612525 ,
'MJ-TemplateLanguage' => true,
'Recipients' => [
[
'Email' => 'dev@talentstube.com',
'Vars' => [
'entreprise' => $ad->getCompany()->getBrandName(),
'offre' => $ad->getTitle(),
]
]
]
];
$response = $mj->post(Resources::$Email, ['body' => $body]);
$response->success() && var_dump($response->getData());
return $this->redirectToRoute('company_ad');
}
@@ -324,7 +354,7 @@ class MediaController extends Controller
];
$response = $mj->post(Resources::$Email, ['body' => $body]);
$response->success() && var_dump($response->getData());
$message="Talents Tube a bien reçu vos séquences vidéos. Nous vous recontacterons par email pour finaliser la publication de votre annonce.";
$message="Talents Tube a bien reçu vos séquences vidéo. Nous vous recontacterons par email pour finaliser la publication de votre annonce.";
}
return $this->render('company/createMedia.html.twig', array(
@@ -529,10 +559,10 @@ class MediaController extends Controller
'notice',
$this->get('translator')->trans('Le logo de votre entreprise a bien été modifié')
);
return $this->redirect($this->generateUrl('company_dashboard'));
return $this->redirect($this->generateUrl('company_profile'));
}
return $this->render('profile/form_logo.html.twig', [
'form' => $form->createView(),
'formLogo' => $form->createView(),
]);
}
@@ -558,6 +558,35 @@ class Ad
return $i;
}
public function countAnswersParStatut()
{
$answers = $this->answers;
$nbATraiter = 0;
$nbContacte = 0;
$nbEntretien = 0;
$nbRefuse = 0;
$nbEmbauche = 0;
foreach ($answers as $a) {
if ($a->getStatusReponse() == "A_TRAITER" AND $a->getStatus() =="SENDED" ) {
$nbATraiter++;
}
else if ($a->getStatusReponse() == "CONTACTE" AND $a->getStatus() =="SENDED") {
$nbContacte++;
}
else if ($a->getStatusReponse() == "ENTRETIEN" AND $a->getStatus() =="SENDED") {
$nbEntretien++;
}
else if ($a->getStatusReponse() == "REFUSE" AND $a->getStatus() =="SENDED") {
$nbRefuse++;
}
else if ($a->getStatusReponse() == "EMBAUCHE" AND $a->getStatus() =="SENDED"){
$nbEmbauche++;
}
}
return array("nbATraiter"=> $nbATraiter, "nbContacte"=>$nbContacte, "nbEntretien" =>$nbEntretien, "nbRefuse" => $nbRefuse, "nbEmbauche"=>$nbEmbauche);
//return $nbATraiter;
}
/**
* @return string
*
@@ -105,6 +105,14 @@ class Answer
*/
private $vote;
/**
* @var string
*
* @ORM\Column(name="status_reponse", type="string", length=255, nullable=true, options={"default":"A_TRAITER"})
*
*/
private $statusReponse ='A_TRAITER';
/**
* @var string
*
@@ -259,6 +267,54 @@ class Answer
return $this->vote;
}
/**
* Set status.
*
* @param int|null $status
*
* @return Answer
*/
public function setStatus($status = null)
{
$this->status = $status;
return $this;
}
/**
* Get status.
*
* @return int|null
*/
public function getStatus()
{
return $this->status;
}
/**
* Set statusReponse.
*
* @param string|null $statusReponse
*
* @return Answer
*/
public function setStatusReponse($statusReponse = null)
{
$this->statusReponse = $statusReponse;
return $this;
}
/**
* Get status.
*
* @return string|null
*/
public function getStatusReponse()
{
return $this->statusReponse;
}
/**
* Set ad.
*
@@ -80,6 +80,16 @@ class User extends BaseUser
*/
private $status;
/**
* @var array
*
* @ORM\Column(name="geoloc", type="json_document", nullable=true, options={"jsonb":true})
* @Groups({"ad_detail", "ad_list", "answer_detail", "company_detail"})
*/
private $geoloc;
private $geolocLocality;
/**
* @ORM\ManyToOne(targetEntity="AppBundle\Entity\Company", inversedBy="users", cascade={"persist"})
*/
@@ -407,6 +417,8 @@ class User extends BaseUser
$linkedin="";
$twitter="";
if($this->getCompany()->getExtra()){
//19/01 j'ai eneleve le initExtra de ExtraJsonTrait
$this->getCompany()->initExtra();
if(array_key_exists("phoneTalent", $this->getCompany()->getExtra())){
if($this->getCompany()->getExtra()["phoneTalent"]){
$phone= $this->getCompany()->getExtra()["phoneTalent"];
@@ -449,6 +461,7 @@ class User extends BaseUser
"country" => $country,
"type" => $type,
"currentJob" => $this->getCompany()->getExtra()["titleTalent"],
"geoloc" => $this->getGeoloc(),
"website" => $this->getCompany()->getWebsite(),
);
return $card;
@@ -615,6 +628,44 @@ class User extends BaseUser
return $this->status;
}
/**
* Set Geoloc.
*
* @param json_document|null $geoloc
*
* @return User
*/
public function setGeoloc($geoloc = null)
{
$this->geoloc = $geoloc;
return $this;
}
/**
* Get geoloc.
*
* @return json_document|null
*/
public function getGeoloc()
{
//19/01 : modif pour size et siren cote Symfony. Effet sur la web app?
//$this->initExtra();
return $this->geoloc;
}
/**
* Get geolocLocality.
*
* @return json_document|null
*/
public function getGeolocLocality()
{
$this->geolocLocality=$this->geoloc;
return $this->geolocLocality;
}
/**
* Set facebookId.
*
@@ -82,15 +82,15 @@ class AdSoftType extends AbstractType
'label' => 'Description du poste',
'attr' => array(
'class' => 'materialize-textarea',
'placeholder' => 'Décrire votre annonce',
'class' => 'form-control'
'placeholder' => 'Décrire le poste, les missions, le profil recherché...',
'class' => 'form-control',
'style' => 'min-height:250px;'
)
))
->add('beneficiaire', TextType::class, array(
'label' => 'Organisation cliente (facultatif)',
'label' => "Nom de l'organisation",
'required' => false,
'attr' => array(
'placeholder' => 'Indiquer une organisation',
'class' => 'form-control'
)
))
@@ -110,6 +110,7 @@ class AdSoftType extends AbstractType
'attr' => array(
'class' => 'form-control',
//'data-init-plugin' => 'cs-select'
)
))
->add('duree_contrat', IntegerType::class, array(
@@ -190,25 +191,13 @@ class AdSoftType extends AbstractType
)
))
->add('status', ChoiceType::class, array(
->add('status', HiddenType::class, array(
'label' =>'Statut',
'choices' => array(
'Brouillon' => 'DRAFT',
'A publier (Validation par Talents Tube)' => 'TO_PUBLISH',
),
'attr' => array(
'class' => 'form-control',
'value' => 'TO_PUBLISH',
)
))
->add('publicTag', TextType::class, array(
'label' => 'profile.company.tags',
'data' => $publicTags,
'attr' => array(
'class' => 'tag label label-info'
)
)
)
->add('competences', HiddenType::class, array(
'mapped' => false,
'label' => 'competences',
@@ -70,23 +70,23 @@ class AdType extends AbstractType
$builder
->add('reference', TextType::class, array(
'label' => 'Référence de l\'annonce',
'required' => true,
'attr' => array(
'placeholder' => 'Indiquer une référence',
'placeholder' => 'Ex : OFFRE_521',
'class' => 'form-control'
)
))
->add('title', TextType::class, array(
'label' => 'Intitulé du poste',
'attr' => array(
'placeholder' => 'Indiquer un titre',
'placeholder' => 'Ex : Commercial (H/F)',
'class' => 'form-control'
)
))
->add('beneficiaire', TextType::class, array(
'label' => 'Organisation cliente (facultatif) ',
'label' => "Nom de l'organisation",
'required' => false,
'attr' => array(
'placeholder' => 'Indiquer une organisation',
'class' => 'form-control'
)
))
@@ -106,13 +106,14 @@ class AdType extends AbstractType
'label' => 'Description du poste',
'attr' => array(
'class' => 'materialize-textarea',
'placeholder' => 'Décrire votre annonce',
'class' => 'form-control'
'placeholder' => 'Décrire le poste, les missions, le profil recherché...',
'class' => 'form-control',
'style' => 'min-height:250px;'
)
))
->add('contract_type', ChoiceType::class, array(
'mapped' => false,
'label' => 'Type de contrat:',
'label' => 'Type de contrat',
'data' => $contract_type,
'choices' => array(
'CDI' => 'CDI',
@@ -206,27 +207,6 @@ class AdType extends AbstractType
//'data-init-plugin' => 'cs-select'
)
))
->add('publicTag', TextType::class, array(
'label' => 'profile.company.tags',
'data' => $publicTags,
'attr' => array(
'value' => $publicTags,
'class' => 'tag label label-info',
'data-role'=>"tagsinput"
)
))
->add('status', ChoiceType::class, array(
'label' =>'Statut',
'choices' => array(
'Brouillon' => 'DRAFT',
'A publier (Validation par Talents Tube)' => 'TO_PUBLISH',
),
'attr' => array(
'class' => 'form-control',
)
))
->add('competences', HiddenType::class, array(
'mapped' => false,
'label' =>'Compétences',
@@ -75,13 +75,13 @@ class AdType extends AbstractType
'class' => 'form-control'
)
))
->add('publicTag', TextType::class, array(
'label' => 'Tags de l\'annonce (séparés par une virgules)',
'data' => $publicTags,
'attr' => array(
'class' => 'form-control'
)
))
// ->add('publicTag', TextType::class, array(
// 'label' => 'Tags de l\'annonce (séparés par une virgules)',
// 'data' => $publicTags,
// 'attr' => array(
// 'class' => 'form-control'
// )
// ))
->add('status', ChoiceType::class, array(
'label' =>'Statut',
'choices' => array(
@@ -45,7 +45,8 @@ class CompanyProfileType extends AbstractType
->add('description', TextareaType::class, array(
'label' => 'profile.company.description',
'attr' => array(
'class' => 'form-control'
'class' => 'form-control',
'style'=>"min-height:250px;"
)
))
->add('website', UrlType::class, array(
@@ -117,15 +118,15 @@ class CompanyProfileType extends AbstractType
)
));
//Tags field
$builder
->add('tagsComma', TextType::class, array(
'label' => 'profile.company.tags',
'attr' => array(
'data-role'=>"materialtags",
'placeholder' => 'Insérez une virgule ou appuyez sur ENTRÉE pour séparer vos mots-clés.',
'class' => 'form-control'
)
));
// $builder
// ->add('tagsComma', TextType::class, array(
// 'label' => 'profile.company.tags',
// 'attr' => array(
// 'data-role'=>"materialtags",
// 'placeholder' => 'Insérez une virgule ou appuyez sur ENTRÉE pour séparer vos mots-clés.',
// 'class' => 'form-control'
// )
// ));
// File fields
/*$builder
->add('file', FileType::class, array(
@@ -16,28 +16,29 @@ class ContactTalentType extends AbstractType
'label' => false,
'required' => true,
'attr' => array(
'placeholder' => 'Rédigez un message de réponse',
'class' => 'form-control'
'placeholder' => 'Rédigez un message de réponse.',
'class' => 'form-control',
'style'=>"min-height:250px;"
)
));
if(!isset($options['data']['subject']) || ($options['data']['subject'] == true)){
$arraySubjects = array(
'Choisir un statut' => null,
'POSITIVE' => 'POSITIVE',
'INFOS' => 'INFOS',
'CONTACTED.RDV' => 'CONTACTED.RDV',
'NEGATIVE' => 'NEGATIVE'
);
$builder
->add('status', ChoiceType::class, array(
'label' => false,
'required' => true,
'choices' => $arraySubjects,
'attr' => array(
'id' => 'test',
'class' => 'form-control'
)
));
}
// if(!isset($options['data']['subject']) || ($options['data']['subject'] == true)){
// $arraySubjects = array(
// 'Choisir un statut' => null,
// 'POSITIVE' => 'POSITIVE',
// 'INFOS' => 'INFOS',
// 'CONTACTED.RDV' => 'CONTACTED.RDV',
// 'NEGATIVE' => 'NEGATIVE'
// );
// $builder
// ->add('status', ChoiceType::class, array(
// 'label' => false,
// 'required' => true,
// 'choices' => $arraySubjects,
// 'attr' => array(
// 'id' => 'test',
// 'class' => 'form-control'
// )
// ));
// }
}
}
@@ -3,7 +3,7 @@ namespace AppBundle\Form;
use AppBundle\Entity\Note;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\Form\Extension\Core\Type\TextareaType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
@@ -11,10 +11,18 @@ class NoteAjaxType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
//
$builder
->add('content', TextType::class, array(
->add('content', TextareaType::class, array(
'label' => 'Note',
'required' => true,
'attr' => array(
'class' => 'form-control',
'rows' =>"5",
'style' =>"min-height:4em;",
'placeholder' => 'Ce commentaire sera visible uniquement par vous et les autres utilisateurs de lespace recruteur.',
)
));
}
@@ -15,6 +15,7 @@ namespace AppBundle\Form;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\Form\Extension\Core\Type\FileType;
use Symfony\Component\Validator\Constraints\File;
class ProfileLogoType extends AbstractType
{
@@ -22,11 +23,24 @@ class ProfileLogoType extends AbstractType
{
$builder
->add('file', FileType::class, array(
'label' => 'Logo de votre entreprise',
'label' => ' ',
'required' => false,
'attr' => array(
'class' => 'file-path validate'
)
'accept' => "image/x-png,image/jpeg",
'style' => 'display: none;',
),
'constraints' => [
new File([
'maxSize' => '5120k',
'mimeTypes' => [
'image/jpg',
'image/jpeg',
'image/png',
],
'mimeTypesMessage' => 'Votre fichier doit être un fichier image',
])
],
));
}
}
@@ -62,6 +62,19 @@ class AdRepository extends AbstractRepository
->andWhere('a.id = '.$adId);
return $qb
->getQuery()
->getResult();
}
public function getAdByCompany($companyId){
$qb = $this
->createQueryBuilder('a')
->select('a')
->leftjoin('a.company', 'comp')
->where('comp.id = '.$companyId);
return $qb
->getQuery()
->getResult();
@@ -113,6 +113,26 @@ class AnswerRepository extends AbstractRepository
->getResult();
}
public function getAnswerByCompanyStatus($id, $status)
{
$qb = $this
->createQueryBuilder('a')
->select('a')
->where('a.ad IN (
SELECT p.id
FROM AppBundle:Ad p
WHERE p.company = :id
)')
->setParameter(':id', $id)
->andWhere('a.status = :status')
->setParameter(':status', $status)
->orderBy('a.uTime','DESC');
return $qb
->getQuery()
->getResult();
}
public function getAnswerByAdsShare( $adId)
{
@@ -170,31 +190,39 @@ class AnswerRepository extends AbstractRepository
->join('a.user', 'user')
->leftjoin('a.ad', 'ad')
->leftjoin('a.video', 'video')
->leftjoin('a.company', 'company');
->leftjoin('a.company', 'c')
->leftjoin('ad.company', 'company');
$countQuery
->join('a.user', 'user')
->leftjoin('a.ad', 'ad')
->leftjoin('a.video', 'video')
->leftjoin('a.company', 'company');
->leftjoin('a.company', 'c')
->leftjoin('ad.company', 'company');
// $countQuery
// ->join('town.department', 'department')
// ->join('department.region', 'region');
// Other conditions than the ones sent by the Ajax call ?
if ($otherConditions === null)
if ($otherConditions )
{
// No
// However, add a "always true" condition to keep an uniform treatment in all cases
$query->where("1=1");
$countQuery->where("1=1");
}
else
{
// Add condition
$query->where($otherConditions);
$countQuery->where($otherConditions);
if($otherConditions["type"]=="company"){
$query->where("(company.id=".$otherConditions["id"]." OR c.id=".$otherConditions["id"].")");
$countQuery->where("(company.id=".$otherConditions["id"]." OR c.id=".$otherConditions["id"].")");
}elseif($otherConditions["type"]=="ad"){
$query->where("(ad.id=".$otherConditions["id"].")");
$countQuery->where("(ad.id=".$otherConditions["id"].")");
}
$query->andWhere("a.status='SENDED'");
$countQuery->andWhere("a.status='SENDED'");
}else{
}
// Fields Search
foreach ($columns as $key => $column)
{
@@ -211,25 +239,54 @@ class AnswerRepository extends AbstractRepository
{
// $searchQuery = 'town.name LIKE \'%'.$searchItem.'%\'';
$searchQuery = 'lower(user.lastname) LIKE \'%'.$searchItem.'%\'';
$searchQuery = 'lower(user.lastname) LIKE lower(\'%'.$searchItem.'%\')';
break;
}
case 'nomPrenom':
{
// $searchQuery = 'town.name LIKE \'%'.$searchItem.'%\'';
$searchQuery = 'lower(user.lastname) LIKE lower(\'%'.$searchItem.'%\') or lower(user.firstname) LIKE lower(\'%'.$searchItem.'%\')';
break;
}
case 'offre':
{
// $searchQuery = 'town.name LIKE \'%'.$searchItem.'%\'';
if($searchItem=="spontaneous"){
$searchQuery = 'lower(ad.title) is null';
}else{
$searchQuery = 'lower(ad.title) LIKE lower(\'%'.$searchItem.'%\')';
}
break;
}
case 'status':
{
// $searchQuery = 'town.postalCode LIKE \'%'.$searchItem.'%\'';
$searchQuery = 'lower(a.status) LIKE \'%'.$searchItem.'%\'';
$searchQuery = 'lower(a.status) LIKE lower(\'%'.$searchItem.'%\')';
break;
}
case 'statusReponse':
{
// $searchQuery = 'town.postalCode LIKE \'%'.$searchItem.'%\'';
$searchQuery = 'lower(a.statusReponse) LIKE lower(\'%'.$searchItem.'%\')';
if($searchItem=="A_TRAITER"){
$searchQuery .= ' or a.statusReponse is null';
}
break;
}
case 'prenom':
{
// $searchQuery = 'department.name LIKE \'%'.$searchItem.'%\'';
$searchQuery = 'lower(user.firstname) LIKE \'%'.$searchItem.'%\'';
$searchQuery = 'lower(user.firstname) LIKE lower(\'%'.$searchItem.'%\')';
break;
}
case 'entreprise':
{
// $searchQuery = 'department.name LIKE \'%'.$searchItem.'%\'';
$searchQuery = 'lower(company.brandName) LIKE \'%'.$searchItem.'%\' or lower(ad.title) LIKE \'%'.$searchItem.'%\'';
$searchQuery = 'lower(company.brandName) LIKE lower(\'%'.$searchItem.'%\') or lower(ad.title) LIKE lower(\'%'.$searchItem.'%\')';
break;
}
case 'ad_id':
@@ -318,4 +375,34 @@ class AnswerRepository extends AbstractRepository
"countResult" => $countResult
);
}
public function getMedias()
{
$qb = $this
->createQueryBuilder('a')
->select(['a','video'])
->leftJoin('a.video', 'video')
->andWhere('video.status = :status')
->setParameter(':status', "TO_MODERATE")
->orderBy('video.id', 'DESC');
$medias = $qb->getQuery()->getResult();
return $medias;
}
public function findAllComment()
{
$qb = $this
->createQueryBuilder('a')
->select(['a'])
->where('a.comment IS NOT NULL');
$answers = $qb->getQuery()->getResult();
return $answers;
}
}
@@ -2,12 +2,45 @@
namespace AppBundle\Repository;
use Doctrine\ORM\EntityRepository;
/**
* MediaRepository
*
* This class was generated by the Doctrine ORM. Add your own custom
* repository methods below.
*/
class MediaRepository extends \Doctrine\ORM\EntityRepository
class MediaRepository extends AbstractRepository
{
public function getMedias()
{
$qb = $this
->createQueryBuilder('m')
->andWhere('m.status = :status')
->setParameter(':status', "TO_MODERATE")
->orderBy('m.id', 'DESC');
$medias = $qb->getQuery()->getResult();
$rawSql = "SELECT m.id as mediaid, m.title as title, m.original_url as original_url , u.* , a.id as answerId, a.send_time as sendtime, ad.title as adTitle, c.brand_name as cTitle
FROM media AS m
JOIN fos_user AS u ON (u.id=m.creator_id)
LEFT JOIN answer AS a ON (a.video_id=m.id)
LEFT JOIN ad AS ad ON (ad.id=a.ad_id)
LEFT JOIN company AS c ON (c.id=a.company_id)
WHERE m.status='TO_MODERATE'
ORDER by m.id DESC";
$stmt = $this->getEntityManager()->getConnection()->prepare($rawSql);
$stmt->execute([]);
return $stmt->fetchAll();
//return $medias;
}
}
@@ -25,6 +25,23 @@ class MessageRepository extends \Doctrine\ORM\EntityRepository
->getQuery()
->getResult();
}
public function getMessageAnswers()
{
$qb = $this
->createQueryBuilder('m')
->select('m', 'a')
->join('m.answer', 'a')
->where('m.status <> :status')
->andWhere('a.statusReponse is null')
->andWhere('a.comment is null')
->setParameter(':status', 'DRAFT')
;
return $qb
->getQuery()
->getResult();
}
}
// add status = SENDED;
@@ -77,8 +77,12 @@ class CompanyManager
);
}
$company->setExtra(null);
$this->em->persist($company);
$this->em->flush();
$company->setExtra($extra);
$company->upload();
//$company->uploadCv();
}
$this->em->persist($company);
@@ -64,6 +64,7 @@ class MediaManager
} else {
return null;
}
// TODO : THUNBNAIL A OPTIMISER
if ($video) {
$arrayThumb = $video->getThumbnails();
if ($force == true || empty($arrayThumb[0])) {
@@ -84,11 +85,12 @@ class MediaManager
*/
public function delete($entity)
{
if ($this->env != "dev") {
$video = $entity;
if (unlink($this->mediaVideoDir . $video->getOriginalUrl())) {
$response = $this->vimeo->request($video->getCdnUrl(), [], 'DELETE');
if ($this->env != "dev") {
$response = $this->vimeo->request($video->getCdnUrl(), [], 'DELETE');
}
$this->em->remove($video);
$this->em->flush();
@@ -96,9 +98,7 @@ class MediaManager
} else {
return array('success' => "false");
}
} else {
return array('success' => "true");
}
}
/**
@@ -75,6 +75,7 @@ class StatsManager
}
$date = $record->getCtime();
if(!$date) $date=date('Y-m-d');
$stringDate = $date->format('Y-m-d');
$arrayRecords['company'][$stringDate][$idCompany] = 0;
if (!isset($arrayRecords['ad'][$stringDate][$ad->getId()])) {
@@ -176,6 +177,7 @@ class StatsManager
public function getCompanyDashboard($idCompany, $dateArray)
{
$arrByAd = array();
$stringDate =null;
$arrDatasetsAd = array();
$arrDatasetsCompany = array();
$arrayRecords = array();
@@ -66,8 +66,8 @@ trait ExtraJsonTrait
*/
public function getExtra()
{
$this->initExtra();
//19/01 : modif pour size et siren cote Symfony. Effet sur la web app?
//$this->initExtra();
return $this->extra;
}
@@ -1,5 +1,5 @@
liip_imagine_filter_runtime:
path: /media/cache/resolve/{filter}/rc/{hash}/{path}
path: /media/cache/{filter}/rc/{hash}/{path}
defaults:
_controller: '%liip_imagine.controller.filter_runtime_action%'
methods:
@@ -9,7 +9,7 @@ liip_imagine_filter_runtime:
path: .+
liip_imagine_filter:
path: /media/cache/resolve/{filter}/{path}
path: /media/cache/{filter}/{path}
defaults:
_controller: '%liip_imagine.controller.filter_action%'
methods:
@@ -3,23 +3,25 @@
* Override Pages default styles or create your own styles here
*/
.jumbotron h1.large-demo-text{
.jumbotron h1.large-demo-text {
font-size: 150px;
}
.icon-text-search{
.icon-text-search {
font-size: 42px;
width: 150%;
}
.green{
background-color: green;
.green {
background-color: #21c87a;
}
.fondBlanc{
.fondBlanc {
background-color: #fff;
}
.circle-letters {
margin: 0 auto;
width: 170px;
@@ -29,71 +31,240 @@
color: #fff;
line-height: 170px;
text-align: center;
background: #155ee4;
background: #155ee4;
}
.font-2 {
font-family: "Varela Round", sans-serif; }
font-family: "Varela Round", sans-serif;
}
.container-envoi-videos{
width:100%;
height:auto;
border:1px solid #1689FB;
border-radius:5px;
margin-bottom:30px;
}
.titre-bloc-envoi-videos{
background-color:#1689FB;
padding:15px;
}
.image-envoi-video{
display:inline-block;
width:60px;
height:60px;
vertical-align: baseline;
margin-right:20px;
}
.texte-envoi-video{
display:inline-block;
}
.container-envoi-videos h4,.container-envoi-videos h5 {
.container-envoi-videos {
width: 100%;
height: auto;
border: 1px solid #1689FB;
border-radius: 5px;
margin-bottom: 30px;
}
.titre-bloc-envoi-videos {
background-color: #1689FB;
padding: 15px;
}
.image-envoi-video {
display: inline-block;
width: 60px;
height: 60px;
vertical-align: baseline;
margin-right: 20px;
}
.texte-envoi-video {
display: inline-block;
}
.container-envoi-videos h4,
.container-envoi-videos h5 {
color: #fff;
}
.container-envoi-videos h4 {
font-size: 1.250em;
}
.container-envoi-videos h5 {
font-size: 1em;
}
.contenu-bloc-envoi-videos {
padding: 15px;
}
.contenu-bloc-envoi-videos p,
.contenu-bloc-envoi-videos label {
color: #000;
font-weight: bold;
font-size: 1em;
margin: 10px 0;
}
.contenu-bloc-envoi-videos button {
display: block;
margin: 20px 0;
}
.contenu-bloc-envoi-videos input {
display: block;
}
.underline {
text-decoration: underline;
}
/* .text-card h3, .text-card span, .text-card h4{
color:#fff;
}
.container-envoi-videos h4{
font-size:1.250em;
.card-background-1{
background-color:#25D89A !important;
border-radius:3px !important;
padding:20px;
min-height:180px;
}
.container-envoi-videos h5{
font-size:1em;
.card-background-2{
background-color:#1689fb !important;
border-radius:3px !important;
padding:20px;
min-height:180px;
}
.contenu-bloc-envoi-videos{
padding:15px;
.card-background-3{
background-color:#FF5A5F !important;
border-radius:3px !important;
padding:20px;
min-height:180px;
}
.contenu-bloc-envoi-videos p, .contenu-bloc-envoi-videos label{
color:#000;
font-weight: bold;
font-size:1em;
margin:10px 0;
}
.contenu-bloc-envoi-videos button{
display:block;
margin :20px 0;
}
.contenu-bloc-envoi-videos input{
display:block;
}
.underline{
text-decoration : underline;
}
.vertical-border{
border-right: 1px solid white;
} */
/********************************************
Statistiques
Nombre total de candidatures /
*******************************************/
.text-card {
margin-top: 10px;
}
.text-card a {
color: #1689fb;
}
.vertical-border {
border-right: 1px solid #e8e8e9;
}
.bloc-stats {
background-color: white;
padding: 1.2em;
border-radius: 5px;
}
/********************************************
Boutons d'action : Tableau de bord
Créer une offre d'emploi vidéo / Gérer mes offres d'emploi / Gérer mes candidatures
*******************************************/
.bloc-tdb .container {
background-color: transparent;
margin-top: 3em
}
.card-action {
margin-top: 10px;
border: none;
height: 8em;
padding: 1.2em;
width: 100%;
background-color: #1689fb;
text-align: left;
border-radius: 20px;
cursor: pointer;
box-shadow: 0px 2px 5px rgb(30 35 39 / 5%);
transition: background-color 0.3s;
transition: box-shadow 0.5s;
color: #fff !important;
}
.card-action a {
color: #fff !important;
}
.card-action:hover {
background: #2c94fb;
}
.card-action span {
color: #fff
}
.card-action a {
color: #fff;
}
.card-action:hover {
box-shadow: 0px 6px 16px rgb(30 35 39 / 15%);
}
.lien-fleche {
align-items: center;
justify-content: center
}
.fleche {
padding-left: 0;
text-align: right;
}
.fleche-stats {
color: #1689fb;
text-align: right;
}
/******** Pages de liste de candidatures liées à une offre d'emploi ********/
#reponses td{vertical-align:middle;}
/****************
Détails d'une candidature
*****************/
.profil-candidature{
min-height:150px;
}
.profil-candidature-action{
padding-top:45px;
}
.candidature-action{
margin-bottom:15px;
}
.details-candidature {
padding-top:1em;
padding-bottom:1em;
}
.icons-candidatures{
vertical-align: middle;margin-right:10px;
}
.bloc-commentaire{
margin-bottom:20px;
}
.dropzone{
border:2px dashed rgba(33, 33, 33, 0.14);
border-radius:5px;
padding:20px;
}
/********************************************
Liste d'offres d'emploi
*******************************************/
tr .colonne1{
background-color:#F3F3F4;
}
tr .colonne2{
background-color:#E9E9EA;
}
+1 -1
View File
@@ -38,7 +38,7 @@ if ($("#dropzone-row").length) {
// location.reload();
// } else {
if (response.success == 200) {
$('#preview_video').html('<div class="green center-align" style="border-radius:10px;padding:20px;color:#FFF;">Votre vidéo a été bien enregistrée.</div>')
$('#preview_video').html('<div class="green center-align" style="border-radius:10px;padding:20px;color:#FFF;">Votre vidéo est enregistrée.</div>')
//CAS VIDEO NON ATTACHEE
if ($("#form_media").length) {
$("#form_media .id_media").attr('value', response.mediaId);
+22 -21
View File
@@ -1,32 +1,33 @@
var titleConfirmationDelete = "Comfirmation de suppression";
var titleConfirmationDelete = "Confirmation de suppression";
var texteConfirmationDelete = "Souhaitez-vous supprimer cette vidéo ?";
$(".delete_unattached_media").click(function(event){
event.preventDefault();
parentDiv = $(this).closest('.col');
var url = $(this).attr('href');
$.confirm({
title: titleConfirmationDelete,
content: texteConfirmationDelete,
type: 'red',
boxWidth: '30%',
useBootstrap: false,
buttons: {
confirm: {
text: 'Confirmer',
action: function () {
$.get(url,
function(response){
console.log(response);
}, "json");
parentDiv.fadeOut();
}
if (window.confirm(texteConfirmationDelete)) {
$.ajax({
url : url,
success : function(code_html, statut){ // success est toujours en place, bien sûr !
console.log("SUPPRESSION EFFECTUE");
location.reload();
},
cancel: {
text: 'Annuler',
error : function(resultat, statut, erreur){
console.log("SUPPRESSION KO")
}
}
});
});
}
return false;
});
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,153 @@
/*
* Core Owl Carousel CSS File
* v1.3.3
*/
/* clearfix */
.owl-carousel .owl-wrapper:after {
content: ".";
display: block;
clear: both;
visibility: hidden;
line-height: 0;
height: 0;
}
/* display none until init */
.owl-carousel{
display: none;
position: relative;
width: 100%;
-ms-touch-action: pan-y;
}
.owl-carousel .owl-wrapper{
display: none;
position: relative;
-webkit-transform: translate3d(0px, 0px, 0px);
}
.owl-carousel .owl-wrapper-outer{
overflow: hidden;
position: relative;
width: 100%;
}
.owl-carousel .owl-wrapper-outer.autoHeight{
-webkit-transition: height 500ms ease-in-out;
-moz-transition: height 500ms ease-in-out;
-ms-transition: height 500ms ease-in-out;
-o-transition: height 500ms ease-in-out;
transition: height 500ms ease-in-out;
}
.owl-carousel .owl-item{
float: left;
}
.owl-controls .owl-page,
.owl-controls .owl-buttons div{
cursor: pointer;
}
.owl-controls {
-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
}
/* mouse grab icon */
.grabbing {
cursor:url(../img/grabbing.png) 8 8, move;
}
/* fix */
.owl-carousel .owl-wrapper,
.owl-carousel .owl-item{
-webkit-backface-visibility: hidden;
-moz-backface-visibility: hidden;
-ms-backface-visibility: hidden;
-webkit-transform: translate3d(0,0,0);
-moz-transform: translate3d(0,0,0);
-ms-transform: translate3d(0,0,0);
}
/*
* Owl Carousel Owl Demo Theme
* v1.3.3
*/
.owl-theme .owl-controls{
margin-top: 10px;
text-align: center;
}
/* Styling Next and Prev buttons */
.owl-theme .owl-controls .owl-buttons div{
color: #FFF;
display: inline-block;
zoom: 1;
*display: inline;/*IE7 life-saver */
margin: 5px;
padding: 3px 10px;
font-size: 12px;
-webkit-border-radius: 30px;
-moz-border-radius: 30px;
border-radius: 30px;
background: #869791;
filter: Alpha(Opacity=50);/*IE7 fix*/
opacity: 0.5;
}
/* Clickable class fix problem with hover on touch devices */
/* Use it for non-touch hover action */
.owl-theme .owl-controls.clickable .owl-buttons div:hover{
filter: Alpha(Opacity=100);/*IE7 fix*/
opacity: 1;
text-decoration: none;
}
/* Styling Pagination*/
.owl-theme .owl-controls .owl-page{
display: inline-block;
zoom: 1;
*display: inline;/*IE7 life-saver */
}
.owl-theme .owl-controls .owl-page span{
display: block;
width: 12px;
height: 12px;
margin: 5px 7px;
filter: Alpha(Opacity=50);/*IE7 fix*/
opacity: 0.5;
-webkit-border-radius: 20px;
-moz-border-radius: 20px;
border-radius: 20px;
background: #FF5A5F;
}
.owl-theme .owl-controls .owl-page.active span,
.owl-theme .owl-controls.clickable .owl-page:hover span{
filter: Alpha(Opacity=100);/*IE7 fix*/
opacity: 1;
}
/* If PaginationNumbers is true */
.owl-theme .owl-controls .owl-page span.owl-numbers{
height: auto;
width: auto;
color: #FFF;
padding: 2px 10px;
font-size: 12px;
-webkit-border-radius: 30px;
-moz-border-radius: 30px;
border-radius: 30px;
}
.screenshot-slider .item{
margin: 3px;
}
.screenshot-slider .item img{
display: block;
width: 100%;
height: auto;
}
@@ -0,0 +1,23 @@
<svg id="TalentsTube_logo-blanc" xmlns="http://www.w3.org/2000/svg" width="127.874" height="28.875" viewBox="0 0 127.874 28.875">
<g id="Groupe_7850" data-name="Groupe 7850" transform="translate(0 7.042)">
<path id="Tracé_210" data-name="Tracé 210" d="M137.664,221v-4.5h-.33a.834.834,0,1,1,0-1.668h.33v-1.459a.982.982,0,0,1,1.963,0v1.459h1.546a.834.834,0,1,1,0,1.668h-1.546v4.187a.925.925,0,0,0,1.06,1.06,4.521,4.521,0,0,0,.486-.052.83.83,0,0,1,.834.817.866.866,0,0,1-.521.764,4.073,4.073,0,0,1-1.338.226C138.672,223.519,137.664,222.894,137.664,221Z" transform="translate(-136.5 -211.479)" fill="#fff"/>
<path id="Tracé_211" data-name="Tracé 211" d="M177.7,231.9v-.035c0-1.842,1.442-2.745,3.527-2.745a7.16,7.16,0,0,1,2.293.347v-.208c0-1.216-.747-1.859-2.12-1.859a4.786,4.786,0,0,0-1.894.347,1.07,1.07,0,0,1-.313.052.819.819,0,0,1-.834-.817.879.879,0,0,1,.539-.782,7.234,7.234,0,0,1,2.745-.5,3.833,3.833,0,0,1,2.832.956,3.572,3.572,0,0,1,.921,2.641v4.2a.928.928,0,0,1-.956.938.879.879,0,0,1-.956-.834v-.33a3.494,3.494,0,0,1-2.78,1.251A2.7,2.7,0,0,1,177.7,231.9Zm5.872-.625v-.591a5.5,5.5,0,0,0-1.946-.347c-1.268,0-2.015.539-2.015,1.425v.035c0,.834.73,1.3,1.668,1.3C182.582,233.119,183.572,232.372,183.572,231.277Z" transform="translate(-170.542 -222.468)" fill="#fff"/>
<path id="Tracé_212" data-name="Tracé 212" d="M236.8,208.073a.96.96,0,0,1,.973-.973.975.975,0,0,1,.99.973v10.042a.982.982,0,0,1-1.963,0Z" transform="translate(-219.374 -207.1)" fill="#fff"/>
<path id="Tracé_213" data-name="Tracé 213" d="M264.4,234.313a4.262,4.262,0,0,1-4.4-4.43v-.035a4.238,4.238,0,0,1,4.17-4.448,4.043,4.043,0,0,1,4.066,4.2.909.909,0,0,1-.921.938h-5.351a2.391,2.391,0,0,0,2.467,2.172,3.02,3.02,0,0,0,2.015-.747.686.686,0,0,1,.5-.174.783.783,0,0,1,.782.8.851.851,0,0,1-.261.591A4.35,4.35,0,0,1,264.4,234.313Zm1.946-5.073a2.215,2.215,0,0,0-2.172-2.259,2.327,2.327,0,0,0-2.224,2.259Z" transform="translate(-238.543 -222.221)" fill="#fff"/>
<path id="Tracé_214" data-name="Tracé 214" d="M319,226.377a.965.965,0,0,1,.973-.99.979.979,0,0,1,.99.99v.417a3.091,3.091,0,0,1,2.676-1.494c1.929,0,3.04,1.3,3.04,3.266v4.569a.95.95,0,0,1-.973.973.965.965,0,0,1-.99-.973v-3.961c0-1.32-.66-2.085-1.824-2.085a1.908,1.908,0,0,0-1.928,2.12v3.927a.982.982,0,0,1-1.963,0Z" transform="translate(-287.292 -222.138)" fill="#fff"/>
<path id="Tracé_215" data-name="Tracé 215" d="M373.564,221v-4.5h-.33a.834.834,0,0,1,0-1.668h.33v-1.459a.982.982,0,0,1,1.963,0v1.459h1.546a.834.834,0,1,1,0,1.668h-1.546v4.187a.925.925,0,0,0,1.06,1.06,4.522,4.522,0,0,0,.486-.052.83.83,0,0,1,.834.817.866.866,0,0,1-.521.764,4.073,4.073,0,0,1-1.338.226A2.181,2.181,0,0,1,373.564,221Z" transform="translate(-331.415 -211.479)" fill="#fff"/>
<path id="Tracé_216" data-name="Tracé 216" d="M411.465,233.336a.748.748,0,0,1-.365-.678.8.8,0,0,1,.8-.8.787.787,0,0,1,.417.122,4.51,4.51,0,0,0,2.467.834c.834,0,1.32-.348,1.32-.921v-.052c0-.66-.9-.886-1.911-1.2-1.268-.347-2.676-.869-2.676-2.5v-.035c0-1.616,1.338-2.606,3.04-2.606a5.969,5.969,0,0,1,2.693.695.814.814,0,0,1,.469.747.8.8,0,0,1-.817.8.7.7,0,0,1-.382-.1,4.8,4.8,0,0,0-2.015-.591c-.764,0-1.2.347-1.2.834v.035c0,.625.921.886,1.929,1.216,1.251.382,2.658.956,2.658,2.484v.035c0,1.79-1.39,2.693-3.179,2.693A5.719,5.719,0,0,1,411.465,233.336Z" transform="translate(-363.391 -222.303)" fill="#fff"/>
<path id="Tracé_217" data-name="Tracé 217" d="M486.464,221v-4.5h-.33a.834.834,0,0,1,0-1.668h.33v-1.459a.982.982,0,0,1,1.963,0v1.459h1.546a.834.834,0,1,1,0,1.668h-1.546v4.187a.925.925,0,0,0,1.06,1.06,4.521,4.521,0,0,0,.486-.052.83.83,0,0,1,.834.817.866.866,0,0,1-.521.764,4.074,4.074,0,0,1-1.338.226A2.181,2.181,0,0,1,486.464,221Z" transform="translate(-424.699 -211.479)" fill="#fff"/>
<path id="Tracé_218" data-name="Tracé 218" d="M535.1,233.549a.99.99,0,0,1-1.981,0v-.434a3.067,3.067,0,0,1-2.676,1.512c-1.929,0-3.04-1.3-3.04-3.284V226.79a.982.982,0,1,1,1.963,0v3.961c0,1.32.66,2.068,1.824,2.068a1.893,1.893,0,0,0,1.929-2.1V226.79a.979.979,0,0,1,.99-.99.99.99,0,0,1,.99.99Z" transform="translate(-459.485 -222.551)" fill="#fff"/>
<path id="Tracé_219" data-name="Tracé 219" d="M585.8,208.073a.95.95,0,0,1,.973-.973.965.965,0,0,1,.99.973v3.8a3.432,3.432,0,0,1,2.919-1.6c2.015,0,3.961,1.581,3.961,4.43v.035a4.086,4.086,0,0,1-3.961,4.43,3.5,3.5,0,0,1-2.919-1.512v.434a.982.982,0,0,1-1.963,0Zm6.845,6.654v-.035a2.522,2.522,0,0,0-2.45-2.728,2.569,2.569,0,0,0-2.484,2.728v.035a2.569,2.569,0,0,0,2.484,2.728A2.492,2.492,0,0,0,592.645,214.727Z" transform="translate(-507.738 -207.1)" fill="#fff"/>
<path id="Tracé_220" data-name="Tracé 220" d="M649.9,234.313a4.262,4.262,0,0,1-4.4-4.43v-.035a4.238,4.238,0,0,1,4.17-4.448,4.043,4.043,0,0,1,4.065,4.2.909.909,0,0,1-.921.938h-5.351a2.391,2.391,0,0,0,2.467,2.172,3.02,3.02,0,0,0,2.015-.747.685.685,0,0,1,.5-.174.783.783,0,0,1,.782.8.851.851,0,0,1-.261.591A4.38,4.38,0,0,1,649.9,234.313Zm1.946-5.073a2.215,2.215,0,0,0-2.172-2.259,2.327,2.327,0,0,0-2.224,2.259Z" transform="translate(-557.066 -222.221)" fill="#fff"/>
</g>
<g id="Groupe_7851" data-name="Groupe 7851" transform="translate(103.478 0)">
<circle id="Ellipse_105" data-name="Ellipse 105" cx="3.266" cy="3.266" r="3.266" transform="matrix(0.384, -0.924, 0.924, 0.384, 9.466, 20.582)" fill="#fff"/>
<circle id="Ellipse_106" data-name="Ellipse 106" cx="3.266" cy="3.266" r="3.266" transform="matrix(0.384, -0.924, 0.924, 0.384, 9.471, 11.874)" fill="#fff"/>
<circle id="Ellipse_107" data-name="Ellipse 107" cx="3.927" cy="3.927" r="3.927" transform="matrix(0.384, -0.924, 0.924, 0.384, 0.009, 16.56)" fill="#fff"/>
<circle id="Ellipse_108" data-name="Ellipse 108" cx="3.927" cy="3.927" r="3.927" transform="matrix(0.384, -0.924, 0.924, 0.384, 0.002, 7.252)" fill="#fff"/>
<circle id="Ellipse_109" data-name="Ellipse 109" cx="3.927" cy="3.927" r="3.927" transform="matrix(0.384, -0.924, 0.924, 0.384, 0, 25.862)" fill="#fff"/>
<circle id="Ellipse_110" data-name="Ellipse 110" cx="2.728" cy="2.728" r="2.728" transform="matrix(0.384, -0.924, 0.924, 0.384, 17.264, 15.911)" fill="#fff"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 5.9 KiB

@@ -0,0 +1,23 @@
<svg id="TalentsTube_logo-blanc" xmlns="http://www.w3.org/2000/svg" width="127.874" height="28.875" viewBox="0 0 127.874 28.875">
<g id="Groupe_7850" data-name="Groupe 7850" transform="translate(0 7.042)">
<path id="Tracé_210" data-name="Tracé 210" d="M137.664,221v-4.5h-.33a.834.834,0,1,1,0-1.668h.33v-1.459a.982.982,0,0,1,1.963,0v1.459h1.546a.834.834,0,1,1,0,1.668h-1.546v4.187a.925.925,0,0,0,1.06,1.06,4.521,4.521,0,0,0,.486-.052.83.83,0,0,1,.834.817.866.866,0,0,1-.521.764,4.073,4.073,0,0,1-1.338.226C138.672,223.519,137.664,222.894,137.664,221Z" transform="translate(-136.5 -211.479)" fill="#fff"/>
<path id="Tracé_211" data-name="Tracé 211" d="M177.7,231.9v-.035c0-1.842,1.442-2.745,3.527-2.745a7.16,7.16,0,0,1,2.293.347v-.208c0-1.216-.747-1.859-2.12-1.859a4.786,4.786,0,0,0-1.894.347,1.07,1.07,0,0,1-.313.052.819.819,0,0,1-.834-.817.879.879,0,0,1,.539-.782,7.234,7.234,0,0,1,2.745-.5,3.833,3.833,0,0,1,2.832.956,3.572,3.572,0,0,1,.921,2.641v4.2a.928.928,0,0,1-.956.938.879.879,0,0,1-.956-.834v-.33a3.494,3.494,0,0,1-2.78,1.251A2.7,2.7,0,0,1,177.7,231.9Zm5.872-.625v-.591a5.5,5.5,0,0,0-1.946-.347c-1.268,0-2.015.539-2.015,1.425v.035c0,.834.73,1.3,1.668,1.3C182.582,233.119,183.572,232.372,183.572,231.277Z" transform="translate(-170.542 -222.468)" fill="#fff"/>
<path id="Tracé_212" data-name="Tracé 212" d="M236.8,208.073a.96.96,0,0,1,.973-.973.975.975,0,0,1,.99.973v10.042a.982.982,0,0,1-1.963,0Z" transform="translate(-219.374 -207.1)" fill="#fff"/>
<path id="Tracé_213" data-name="Tracé 213" d="M264.4,234.313a4.262,4.262,0,0,1-4.4-4.43v-.035a4.238,4.238,0,0,1,4.17-4.448,4.043,4.043,0,0,1,4.066,4.2.909.909,0,0,1-.921.938h-5.351a2.391,2.391,0,0,0,2.467,2.172,3.02,3.02,0,0,0,2.015-.747.686.686,0,0,1,.5-.174.783.783,0,0,1,.782.8.851.851,0,0,1-.261.591A4.35,4.35,0,0,1,264.4,234.313Zm1.946-5.073a2.215,2.215,0,0,0-2.172-2.259,2.327,2.327,0,0,0-2.224,2.259Z" transform="translate(-238.543 -222.221)" fill="#fff"/>
<path id="Tracé_214" data-name="Tracé 214" d="M319,226.377a.965.965,0,0,1,.973-.99.979.979,0,0,1,.99.99v.417a3.091,3.091,0,0,1,2.676-1.494c1.929,0,3.04,1.3,3.04,3.266v4.569a.95.95,0,0,1-.973.973.965.965,0,0,1-.99-.973v-3.961c0-1.32-.66-2.085-1.824-2.085a1.908,1.908,0,0,0-1.928,2.12v3.927a.982.982,0,0,1-1.963,0Z" transform="translate(-287.292 -222.138)" fill="#fff"/>
<path id="Tracé_215" data-name="Tracé 215" d="M373.564,221v-4.5h-.33a.834.834,0,0,1,0-1.668h.33v-1.459a.982.982,0,0,1,1.963,0v1.459h1.546a.834.834,0,1,1,0,1.668h-1.546v4.187a.925.925,0,0,0,1.06,1.06,4.522,4.522,0,0,0,.486-.052.83.83,0,0,1,.834.817.866.866,0,0,1-.521.764,4.073,4.073,0,0,1-1.338.226A2.181,2.181,0,0,1,373.564,221Z" transform="translate(-331.415 -211.479)" fill="#fff"/>
<path id="Tracé_216" data-name="Tracé 216" d="M411.465,233.336a.748.748,0,0,1-.365-.678.8.8,0,0,1,.8-.8.787.787,0,0,1,.417.122,4.51,4.51,0,0,0,2.467.834c.834,0,1.32-.348,1.32-.921v-.052c0-.66-.9-.886-1.911-1.2-1.268-.347-2.676-.869-2.676-2.5v-.035c0-1.616,1.338-2.606,3.04-2.606a5.969,5.969,0,0,1,2.693.695.814.814,0,0,1,.469.747.8.8,0,0,1-.817.8.7.7,0,0,1-.382-.1,4.8,4.8,0,0,0-2.015-.591c-.764,0-1.2.347-1.2.834v.035c0,.625.921.886,1.929,1.216,1.251.382,2.658.956,2.658,2.484v.035c0,1.79-1.39,2.693-3.179,2.693A5.719,5.719,0,0,1,411.465,233.336Z" transform="translate(-363.391 -222.303)" fill="#fff"/>
<path id="Tracé_217" data-name="Tracé 217" d="M486.464,221v-4.5h-.33a.834.834,0,0,1,0-1.668h.33v-1.459a.982.982,0,0,1,1.963,0v1.459h1.546a.834.834,0,1,1,0,1.668h-1.546v4.187a.925.925,0,0,0,1.06,1.06,4.521,4.521,0,0,0,.486-.052.83.83,0,0,1,.834.817.866.866,0,0,1-.521.764,4.074,4.074,0,0,1-1.338.226A2.181,2.181,0,0,1,486.464,221Z" transform="translate(-424.699 -211.479)" fill="#fff"/>
<path id="Tracé_218" data-name="Tracé 218" d="M535.1,233.549a.99.99,0,0,1-1.981,0v-.434a3.067,3.067,0,0,1-2.676,1.512c-1.929,0-3.04-1.3-3.04-3.284V226.79a.982.982,0,1,1,1.963,0v3.961c0,1.32.66,2.068,1.824,2.068a1.893,1.893,0,0,0,1.929-2.1V226.79a.979.979,0,0,1,.99-.99.99.99,0,0,1,.99.99Z" transform="translate(-459.485 -222.551)" fill="#fff"/>
<path id="Tracé_219" data-name="Tracé 219" d="M585.8,208.073a.95.95,0,0,1,.973-.973.965.965,0,0,1,.99.973v3.8a3.432,3.432,0,0,1,2.919-1.6c2.015,0,3.961,1.581,3.961,4.43v.035a4.086,4.086,0,0,1-3.961,4.43,3.5,3.5,0,0,1-2.919-1.512v.434a.982.982,0,0,1-1.963,0Zm6.845,6.654v-.035a2.522,2.522,0,0,0-2.45-2.728,2.569,2.569,0,0,0-2.484,2.728v.035a2.569,2.569,0,0,0,2.484,2.728A2.492,2.492,0,0,0,592.645,214.727Z" transform="translate(-507.738 -207.1)" fill="#fff"/>
<path id="Tracé_220" data-name="Tracé 220" d="M649.9,234.313a4.262,4.262,0,0,1-4.4-4.43v-.035a4.238,4.238,0,0,1,4.17-4.448,4.043,4.043,0,0,1,4.065,4.2.909.909,0,0,1-.921.938h-5.351a2.391,2.391,0,0,0,2.467,2.172,3.02,3.02,0,0,0,2.015-.747.685.685,0,0,1,.5-.174.783.783,0,0,1,.782.8.851.851,0,0,1-.261.591A4.38,4.38,0,0,1,649.9,234.313Zm1.946-5.073a2.215,2.215,0,0,0-2.172-2.259,2.327,2.327,0,0,0-2.224,2.259Z" transform="translate(-557.066 -222.221)" fill="#fff"/>
</g>
<g id="Groupe_7851" data-name="Groupe 7851" transform="translate(103.478 0)">
<circle id="Ellipse_105" data-name="Ellipse 105" cx="3.266" cy="3.266" r="3.266" transform="matrix(0.384, -0.924, 0.924, 0.384, 9.466, 20.582)" fill="#fff"/>
<circle id="Ellipse_106" data-name="Ellipse 106" cx="3.266" cy="3.266" r="3.266" transform="matrix(0.384, -0.924, 0.924, 0.384, 9.471, 11.874)" fill="#fff"/>
<circle id="Ellipse_107" data-name="Ellipse 107" cx="3.927" cy="3.927" r="3.927" transform="matrix(0.384, -0.924, 0.924, 0.384, 0.009, 16.56)" fill="#fff"/>
<circle id="Ellipse_108" data-name="Ellipse 108" cx="3.927" cy="3.927" r="3.927" transform="matrix(0.384, -0.924, 0.924, 0.384, 0.002, 7.252)" fill="#fff"/>
<circle id="Ellipse_109" data-name="Ellipse 109" cx="3.927" cy="3.927" r="3.927" transform="matrix(0.384, -0.924, 0.924, 0.384, 0, 25.862)" fill="#fff"/>
<circle id="Ellipse_110" data-name="Ellipse 110" cx="2.728" cy="2.728" r="2.728" transform="matrix(0.384, -0.924, 0.924, 0.384, 17.264, 15.911)" fill="#fff"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 5.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

@@ -0,0 +1,10 @@
<svg xmlns="http://www.w3.org/2000/svg" width="100" height="100" viewBox="0 0 100 100">
<g id="Groupe_8222" data-name="Groupe 8222" transform="translate(-905 -178)">
<g id="Groupe_8166" data-name="Groupe 8166" transform="translate(-23 -21.541)">
<circle id="Ellipse_130" data-name="Ellipse 130" cx="50" cy="50" r="50" transform="translate(928 199.541)" fill="#1689fb"/>
<g id="_001-like" data-name="001-like" transform="translate(948.325 227.541)">
<path id="Tracé_429" data-name="Tracé 429" d="M52.8,33.254a6.076,6.076,0,0,0,1.422-4.061,6.239,6.239,0,0,0-1.33-3.519,5.467,5.467,0,0,0-1.3-6.291C49.963,17.9,47.2,17.235,43.376,17.42a32.1,32.1,0,0,0-5.033.644h-.01c-.511.092-1.054.2-1.606.327-.041-.655.072-2.281,1.279-5.943,1.432-4.357,1.35-7.692-.266-9.922A6.5,6.5,0,0,0,32.533,0a2.569,2.569,0,0,0-1.974.9c-1.135,1.32-1,3.754-.859,4.879-1.35,3.621-5.135,12.5-8.336,14.965a1.1,1.1,0,0,0-.164.143,10.988,10.988,0,0,0-2,3.007,4.221,4.221,0,0,0-2.025-.511H10.93a4.258,4.258,0,0,0-4.255,4.255V44.26a4.258,4.258,0,0,0,4.255,4.255h6.24a4.246,4.246,0,0,0,2.455-.777l2.4.286a102.986,102.986,0,0,0,13.635.747c1.217.092,2.363.143,3.427.143a22.95,22.95,0,0,0,4.756-.43c3.13-.665,5.268-1.995,6.352-3.948a6.261,6.261,0,0,0,.7-3.918,6.524,6.524,0,0,0,2.322-5.309A6.91,6.91,0,0,0,52.8,33.254ZM10.93,45.753A1.5,1.5,0,0,1,9.437,44.26V27.628a1.5,1.5,0,0,1,1.493-1.493h6.24a1.5,1.5,0,0,1,1.493,1.493V44.25a1.5,1.5,0,0,1-1.493,1.493H10.93Zm39.248-13.7a1.375,1.375,0,0,0-.184,1.667,4.256,4.256,0,0,1,.471,1.708,4.093,4.093,0,0,1-1.923,3.539,1.394,1.394,0,0,0-.471,1.575,3.612,3.612,0,0,1-.276,2.639c-.685,1.227-2.209,2.107-4.521,2.6a26.947,26.947,0,0,1-7.457.225h-.143a100.965,100.965,0,0,1-13.3-.726h-.01l-1.033-.123a4.334,4.334,0,0,0,.092-.9V27.628a4.327,4.327,0,0,0-.194-1.268,8.549,8.549,0,0,1,1.9-3.508C27.726,19.21,32.216,6.925,32.41,6.393a1.3,1.3,0,0,0,.061-.685A6.392,6.392,0,0,1,32.6,2.741a3.67,3.67,0,0,1,2.885,1.381c1.043,1.442,1,4.02-.123,7.436-1.718,5.206-1.862,7.948-.5,9.155a2.229,2.229,0,0,0,2.23.4c.624-.143,1.217-.266,1.78-.358l.133-.031c3.14-.685,8.766-1.1,10.72.675a2.943,2.943,0,0,1,.348,3.733,1.368,1.368,0,0,0,.245,1.78A3.875,3.875,0,0,1,51.456,29.3,3.8,3.8,0,0,1,50.178,32.057Z" transform="translate(-1 -4)" fill="#fff"/>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 641 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 85 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

@@ -0,0 +1,34 @@
<svg id="TalentsTube_logo-color" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="127.039" height="26.461" viewBox="0 0 127.039 26.461">
<defs>
<linearGradient id="linear-gradient" x1="1.583" y1="24.72" x2="5.134" y2="24.72" gradientUnits="objectBoundingBox">
<stop offset="0" stop-color="#155ee4"/>
<stop offset="1" stop-color="#1689fb"/>
</linearGradient>
<linearGradient id="linear-gradient-2" x1="1.583" y1="24.46" x2="5.134" y2="24.46" xlink:href="#linear-gradient"/>
<linearGradient id="linear-gradient-3" x1="2.496" y1="20.539" x2="5.45" y2="20.539" xlink:href="#linear-gradient"/>
<linearGradient id="linear-gradient-4" x1="2.496" y1="20.308" x2="5.45" y2="20.308" xlink:href="#linear-gradient"/>
<linearGradient id="linear-gradient-5" x1="2.496" y1="20.771" x2="5.45" y2="20.771" xlink:href="#linear-gradient"/>
<linearGradient id="linear-gradient-6" x1="0.498" y1="29.345" x2="4.749" y2="29.345" xlink:href="#linear-gradient"/>
</defs>
<g id="Groupe_7848" data-name="Groupe 7848" transform="translate(0 5.838)">
<path id="Tracé_199" data-name="Tracé 199" d="M136.964,221v-4.5h-.33a.834.834,0,0,1,0-1.668h.33v-1.459a.982.982,0,0,1,1.963,0v1.459h1.546a.834.834,0,1,1,0,1.668h-1.546v4.187a.925.925,0,0,0,1.06,1.06,4.521,4.521,0,0,0,.486-.052.83.83,0,0,1,.834.817.866.866,0,0,1-.521.764,4.073,4.073,0,0,1-1.338.226A2.181,2.181,0,0,1,136.964,221Z" transform="translate(-135.8 -211.479)"/>
<path id="Tracé_200" data-name="Tracé 200" d="M177.1,231.9v-.035c0-1.842,1.442-2.745,3.527-2.745a7.16,7.16,0,0,1,2.293.347v-.208c0-1.216-.747-1.859-2.12-1.859a4.786,4.786,0,0,0-1.894.347,1.07,1.07,0,0,1-.313.052.819.819,0,0,1-.834-.817.879.879,0,0,1,.539-.782,7.234,7.234,0,0,1,2.745-.5,3.833,3.833,0,0,1,2.832.956,3.572,3.572,0,0,1,.921,2.641v4.2a.928.928,0,0,1-.956.938.879.879,0,0,1-.956-.834v-.33a3.494,3.494,0,0,1-2.78,1.251A2.7,2.7,0,0,1,177.1,231.9Zm5.855-.625v-.591a5.5,5.5,0,0,0-1.946-.347c-1.268,0-2.015.539-2.015,1.425v.035c0,.834.73,1.3,1.668,1.3C181.965,233.119,182.955,232.372,182.955,231.277Z" transform="translate(-169.924 -222.468)"/>
<path id="Tracé_201" data-name="Tracé 201" d="M236.1,208.073a.96.96,0,0,1,.973-.973.975.975,0,0,1,.99.973v10.042a.982.982,0,0,1-1.963,0Z" transform="translate(-218.674 -207.1)"/>
<path id="Tracé_202" data-name="Tracé 202" d="M263.878,234.313a4.248,4.248,0,0,1-4.378-4.43v-.035a4.238,4.238,0,0,1,4.17-4.448,4.043,4.043,0,0,1,4.066,4.2.909.909,0,0,1-.921.938h-5.351a2.391,2.391,0,0,0,2.467,2.172,3.021,3.021,0,0,0,2.015-.747.685.685,0,0,1,.5-.174.783.783,0,0,1,.782.8.851.851,0,0,1-.261.591A4.488,4.488,0,0,1,263.878,234.313Zm1.946-5.073a2.215,2.215,0,0,0-2.172-2.259,2.327,2.327,0,0,0-2.224,2.259Z" transform="translate(-238.008 -222.221)"/>
<path id="Tracé_203" data-name="Tracé 203" d="M318.4,226.377a.965.965,0,0,1,.973-.99.979.979,0,0,1,.99.99v.417a3.091,3.091,0,0,1,2.676-1.494c1.929,0,3.04,1.3,3.04,3.266v4.569a.95.95,0,0,1-.973.973.965.965,0,0,1-.99-.973v-3.961c0-1.32-.66-2.085-1.824-2.085a1.908,1.908,0,0,0-1.929,2.12v3.927a.982.982,0,0,1-1.963,0Z" transform="translate(-286.675 -222.138)"/>
<path id="Tracé_204" data-name="Tracé 204" d="M372.964,221v-4.5h-.33a.834.834,0,1,1,0-1.668h.33v-1.459a.982.982,0,0,1,1.963,0v1.459h1.546a.834.834,0,1,1,0,1.668h-1.546v4.187a.925.925,0,0,0,1.06,1.06,4.52,4.52,0,0,0,.486-.052.83.83,0,0,1,.834.817.866.866,0,0,1-.521.764,4.073,4.073,0,0,1-1.338.226A2.181,2.181,0,0,1,372.964,221Z" transform="translate(-330.797 -211.479)"/>
<path id="Tracé_205" data-name="Tracé 205" d="M410.865,233.336a.748.748,0,0,1-.365-.678.8.8,0,0,1,.8-.8.787.787,0,0,1,.417.122,4.51,4.51,0,0,0,2.467.834c.834,0,1.32-.348,1.32-.921v-.052c0-.66-.9-.886-1.911-1.2-1.268-.347-2.676-.869-2.676-2.5v-.035c0-1.616,1.338-2.606,3.04-2.606a5.969,5.969,0,0,1,2.693.695.814.814,0,0,1,.469.747.791.791,0,0,1-.817.8.7.7,0,0,1-.382-.1,4.8,4.8,0,0,0-2.015-.591c-.764,0-1.2.347-1.2.834v.035c0,.625.921.886,1.929,1.216,1.251.382,2.658.956,2.658,2.484v.035c0,1.79-1.39,2.693-3.179,2.693A5.72,5.72,0,0,1,410.865,233.336Z" transform="translate(-362.773 -222.303)"/>
<path id="Tracé_206" data-name="Tracé 206" d="M485.864,221v-4.5h-.33a.834.834,0,1,1,0-1.668h.33v-1.459a.982.982,0,0,1,1.963,0v1.459h1.546a.834.834,0,1,1,0,1.668h-1.546v4.187a.925.925,0,0,0,1.06,1.06,4.521,4.521,0,0,0,.486-.052.83.83,0,0,1,.834.817.866.866,0,0,1-.521.764,4.073,4.073,0,0,1-1.338.226A2.181,2.181,0,0,1,485.864,221Z" transform="translate(-424.082 -211.479)"/>
<path id="Tracé_207" data-name="Tracé 207" d="M534.5,233.549a.991.991,0,0,1-1.981,0v-.434a3.067,3.067,0,0,1-2.676,1.512c-1.929,0-3.04-1.3-3.04-3.284V226.79a.982.982,0,1,1,1.963,0v3.961c0,1.32.66,2.068,1.824,2.068a1.893,1.893,0,0,0,1.928-2.1V226.79a.979.979,0,0,1,.99-.99.99.99,0,0,1,.99.99Z" transform="translate(-458.867 -222.551)"/>
<path id="Tracé_208" data-name="Tracé 208" d="M585.1,208.073a.95.95,0,0,1,.973-.973.965.965,0,0,1,.99.973v3.8a3.432,3.432,0,0,1,2.919-1.6c2.015,0,3.961,1.581,3.961,4.43v.035a4.086,4.086,0,0,1-3.961,4.43,3.5,3.5,0,0,1-2.919-1.512v.434a.982.982,0,0,1-1.963,0Zm6.845,6.654v-.035a2.522,2.522,0,0,0-2.45-2.728,2.569,2.569,0,0,0-2.485,2.728v.035a2.569,2.569,0,0,0,2.485,2.728A2.483,2.483,0,0,0,591.945,214.727Z" transform="translate(-507.038 -207.1)"/>
<path id="Tracé_209" data-name="Tracé 209" d="M649.378,234.313a4.248,4.248,0,0,1-4.378-4.43v-.035a4.238,4.238,0,0,1,4.17-4.448,4.043,4.043,0,0,1,4.065,4.2.909.909,0,0,1-.921.938h-5.351a2.391,2.391,0,0,0,2.467,2.172,3.02,3.02,0,0,0,2.015-.747.685.685,0,0,1,.5-.174.783.783,0,0,1,.782.8.852.852,0,0,1-.261.591A4.488,4.488,0,0,1,649.378,234.313Zm1.946-5.073a2.215,2.215,0,0,0-2.172-2.259,2.327,2.327,0,0,0-2.224,2.259Z" transform="translate(-556.531 -222.221)"/>
</g>
<g id="Groupe_7849" data-name="Groupe 7849" transform="translate(104.696 0)">
<circle id="Ellipse_99" data-name="Ellipse 99" cx="3.266" cy="3.266" r="3.266" transform="translate(9.26 14.351)" fill="url(#linear-gradient)"/>
<circle id="Ellipse_100" data-name="Ellipse 100" cx="3.266" cy="3.266" r="3.266" transform="translate(9.26 5.647)" fill="url(#linear-gradient-2)"/>
<circle id="Ellipse_101" data-name="Ellipse 101" cx="3.927" cy="3.927" r="3.927" transform="translate(0 9.313)" fill="url(#linear-gradient-3)"/>
<circle id="Ellipse_102" data-name="Ellipse 102" cx="3.927" cy="3.927" r="3.927" fill="url(#linear-gradient-4)"/>
<circle id="Ellipse_103" data-name="Ellipse 103" cx="3.927" cy="3.927" r="3.927" transform="translate(0 18.608)" fill="url(#linear-gradient-5)"/>
<circle id="Ellipse_104" data-name="Ellipse 104" cx="2.728" cy="2.728" r="2.728" transform="translate(16.888 10.511)" fill="url(#linear-gradient-6)"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 6.6 KiB

@@ -0,0 +1,34 @@
<svg id="TalentsTube_logo-color" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="127.039" height="26.461" viewBox="0 0 127.039 26.461">
<defs>
<linearGradient id="linear-gradient" x1="1.583" y1="24.72" x2="5.134" y2="24.72" gradientUnits="objectBoundingBox">
<stop offset="0" stop-color="#155ee4"/>
<stop offset="1" stop-color="#1689fb"/>
</linearGradient>
<linearGradient id="linear-gradient-2" x1="1.583" y1="24.46" x2="5.134" y2="24.46" xlink:href="#linear-gradient"/>
<linearGradient id="linear-gradient-3" x1="2.496" y1="20.539" x2="5.45" y2="20.539" xlink:href="#linear-gradient"/>
<linearGradient id="linear-gradient-4" x1="2.496" y1="20.308" x2="5.45" y2="20.308" xlink:href="#linear-gradient"/>
<linearGradient id="linear-gradient-5" x1="2.496" y1="20.771" x2="5.45" y2="20.771" xlink:href="#linear-gradient"/>
<linearGradient id="linear-gradient-6" x1="0.498" y1="29.345" x2="4.749" y2="29.345" xlink:href="#linear-gradient"/>
</defs>
<g id="Groupe_7848" data-name="Groupe 7848" transform="translate(0 5.838)">
<path id="Tracé_199" data-name="Tracé 199" d="M136.964,221v-4.5h-.33a.834.834,0,0,1,0-1.668h.33v-1.459a.982.982,0,0,1,1.963,0v1.459h1.546a.834.834,0,1,1,0,1.668h-1.546v4.187a.925.925,0,0,0,1.06,1.06,4.521,4.521,0,0,0,.486-.052.83.83,0,0,1,.834.817.866.866,0,0,1-.521.764,4.073,4.073,0,0,1-1.338.226A2.181,2.181,0,0,1,136.964,221Z" transform="translate(-135.8 -211.479)"/>
<path id="Tracé_200" data-name="Tracé 200" d="M177.1,231.9v-.035c0-1.842,1.442-2.745,3.527-2.745a7.16,7.16,0,0,1,2.293.347v-.208c0-1.216-.747-1.859-2.12-1.859a4.786,4.786,0,0,0-1.894.347,1.07,1.07,0,0,1-.313.052.819.819,0,0,1-.834-.817.879.879,0,0,1,.539-.782,7.234,7.234,0,0,1,2.745-.5,3.833,3.833,0,0,1,2.832.956,3.572,3.572,0,0,1,.921,2.641v4.2a.928.928,0,0,1-.956.938.879.879,0,0,1-.956-.834v-.33a3.494,3.494,0,0,1-2.78,1.251A2.7,2.7,0,0,1,177.1,231.9Zm5.855-.625v-.591a5.5,5.5,0,0,0-1.946-.347c-1.268,0-2.015.539-2.015,1.425v.035c0,.834.73,1.3,1.668,1.3C181.965,233.119,182.955,232.372,182.955,231.277Z" transform="translate(-169.924 -222.468)"/>
<path id="Tracé_201" data-name="Tracé 201" d="M236.1,208.073a.96.96,0,0,1,.973-.973.975.975,0,0,1,.99.973v10.042a.982.982,0,0,1-1.963,0Z" transform="translate(-218.674 -207.1)"/>
<path id="Tracé_202" data-name="Tracé 202" d="M263.878,234.313a4.248,4.248,0,0,1-4.378-4.43v-.035a4.238,4.238,0,0,1,4.17-4.448,4.043,4.043,0,0,1,4.066,4.2.909.909,0,0,1-.921.938h-5.351a2.391,2.391,0,0,0,2.467,2.172,3.021,3.021,0,0,0,2.015-.747.685.685,0,0,1,.5-.174.783.783,0,0,1,.782.8.851.851,0,0,1-.261.591A4.488,4.488,0,0,1,263.878,234.313Zm1.946-5.073a2.215,2.215,0,0,0-2.172-2.259,2.327,2.327,0,0,0-2.224,2.259Z" transform="translate(-238.008 -222.221)"/>
<path id="Tracé_203" data-name="Tracé 203" d="M318.4,226.377a.965.965,0,0,1,.973-.99.979.979,0,0,1,.99.99v.417a3.091,3.091,0,0,1,2.676-1.494c1.929,0,3.04,1.3,3.04,3.266v4.569a.95.95,0,0,1-.973.973.965.965,0,0,1-.99-.973v-3.961c0-1.32-.66-2.085-1.824-2.085a1.908,1.908,0,0,0-1.929,2.12v3.927a.982.982,0,0,1-1.963,0Z" transform="translate(-286.675 -222.138)"/>
<path id="Tracé_204" data-name="Tracé 204" d="M372.964,221v-4.5h-.33a.834.834,0,1,1,0-1.668h.33v-1.459a.982.982,0,0,1,1.963,0v1.459h1.546a.834.834,0,1,1,0,1.668h-1.546v4.187a.925.925,0,0,0,1.06,1.06,4.52,4.52,0,0,0,.486-.052.83.83,0,0,1,.834.817.866.866,0,0,1-.521.764,4.073,4.073,0,0,1-1.338.226A2.181,2.181,0,0,1,372.964,221Z" transform="translate(-330.797 -211.479)"/>
<path id="Tracé_205" data-name="Tracé 205" d="M410.865,233.336a.748.748,0,0,1-.365-.678.8.8,0,0,1,.8-.8.787.787,0,0,1,.417.122,4.51,4.51,0,0,0,2.467.834c.834,0,1.32-.348,1.32-.921v-.052c0-.66-.9-.886-1.911-1.2-1.268-.347-2.676-.869-2.676-2.5v-.035c0-1.616,1.338-2.606,3.04-2.606a5.969,5.969,0,0,1,2.693.695.814.814,0,0,1,.469.747.791.791,0,0,1-.817.8.7.7,0,0,1-.382-.1,4.8,4.8,0,0,0-2.015-.591c-.764,0-1.2.347-1.2.834v.035c0,.625.921.886,1.929,1.216,1.251.382,2.658.956,2.658,2.484v.035c0,1.79-1.39,2.693-3.179,2.693A5.72,5.72,0,0,1,410.865,233.336Z" transform="translate(-362.773 -222.303)"/>
<path id="Tracé_206" data-name="Tracé 206" d="M485.864,221v-4.5h-.33a.834.834,0,1,1,0-1.668h.33v-1.459a.982.982,0,0,1,1.963,0v1.459h1.546a.834.834,0,1,1,0,1.668h-1.546v4.187a.925.925,0,0,0,1.06,1.06,4.521,4.521,0,0,0,.486-.052.83.83,0,0,1,.834.817.866.866,0,0,1-.521.764,4.073,4.073,0,0,1-1.338.226A2.181,2.181,0,0,1,485.864,221Z" transform="translate(-424.082 -211.479)"/>
<path id="Tracé_207" data-name="Tracé 207" d="M534.5,233.549a.991.991,0,0,1-1.981,0v-.434a3.067,3.067,0,0,1-2.676,1.512c-1.929,0-3.04-1.3-3.04-3.284V226.79a.982.982,0,1,1,1.963,0v3.961c0,1.32.66,2.068,1.824,2.068a1.893,1.893,0,0,0,1.928-2.1V226.79a.979.979,0,0,1,.99-.99.99.99,0,0,1,.99.99Z" transform="translate(-458.867 -222.551)"/>
<path id="Tracé_208" data-name="Tracé 208" d="M585.1,208.073a.95.95,0,0,1,.973-.973.965.965,0,0,1,.99.973v3.8a3.432,3.432,0,0,1,2.919-1.6c2.015,0,3.961,1.581,3.961,4.43v.035a4.086,4.086,0,0,1-3.961,4.43,3.5,3.5,0,0,1-2.919-1.512v.434a.982.982,0,0,1-1.963,0Zm6.845,6.654v-.035a2.522,2.522,0,0,0-2.45-2.728,2.569,2.569,0,0,0-2.485,2.728v.035a2.569,2.569,0,0,0,2.485,2.728A2.483,2.483,0,0,0,591.945,214.727Z" transform="translate(-507.038 -207.1)"/>
<path id="Tracé_209" data-name="Tracé 209" d="M649.378,234.313a4.248,4.248,0,0,1-4.378-4.43v-.035a4.238,4.238,0,0,1,4.17-4.448,4.043,4.043,0,0,1,4.065,4.2.909.909,0,0,1-.921.938h-5.351a2.391,2.391,0,0,0,2.467,2.172,3.02,3.02,0,0,0,2.015-.747.685.685,0,0,1,.5-.174.783.783,0,0,1,.782.8.852.852,0,0,1-.261.591A4.488,4.488,0,0,1,649.378,234.313Zm1.946-5.073a2.215,2.215,0,0,0-2.172-2.259,2.327,2.327,0,0,0-2.224,2.259Z" transform="translate(-556.531 -222.221)"/>
</g>
<g id="Groupe_7849" data-name="Groupe 7849" transform="translate(104.696 0)">
<circle id="Ellipse_99" data-name="Ellipse 99" cx="3.266" cy="3.266" r="3.266" transform="translate(9.26 14.351)" fill="url(#linear-gradient)"/>
<circle id="Ellipse_100" data-name="Ellipse 100" cx="3.266" cy="3.266" r="3.266" transform="translate(9.26 5.647)" fill="url(#linear-gradient-2)"/>
<circle id="Ellipse_101" data-name="Ellipse 101" cx="3.927" cy="3.927" r="3.927" transform="translate(0 9.313)" fill="url(#linear-gradient-3)"/>
<circle id="Ellipse_102" data-name="Ellipse 102" cx="3.927" cy="3.927" r="3.927" fill="url(#linear-gradient-4)"/>
<circle id="Ellipse_103" data-name="Ellipse 103" cx="3.927" cy="3.927" r="3.927" transform="translate(0 18.608)" fill="url(#linear-gradient-5)"/>
<circle id="Ellipse_104" data-name="Ellipse 104" cx="2.728" cy="2.728" r="2.728" transform="translate(16.888 10.511)" fill="url(#linear-gradient-6)"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 6.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

@@ -0,0 +1,23 @@
<svg id="TalentsTube_logo-blanc" xmlns="http://www.w3.org/2000/svg" width="127.874" height="28.875" viewBox="0 0 127.874 28.875">
<g id="Groupe_7850" data-name="Groupe 7850" transform="translate(0 7.042)">
<path id="Tracé_210" data-name="Tracé 210" d="M137.664,221v-4.5h-.33a.834.834,0,1,1,0-1.668h.33v-1.459a.982.982,0,0,1,1.963,0v1.459h1.546a.834.834,0,1,1,0,1.668h-1.546v4.187a.925.925,0,0,0,1.06,1.06,4.521,4.521,0,0,0,.486-.052.83.83,0,0,1,.834.817.866.866,0,0,1-.521.764,4.073,4.073,0,0,1-1.338.226C138.672,223.519,137.664,222.894,137.664,221Z" transform="translate(-136.5 -211.479)" fill="#fff"/>
<path id="Tracé_211" data-name="Tracé 211" d="M177.7,231.9v-.035c0-1.842,1.442-2.745,3.527-2.745a7.16,7.16,0,0,1,2.293.347v-.208c0-1.216-.747-1.859-2.12-1.859a4.786,4.786,0,0,0-1.894.347,1.07,1.07,0,0,1-.313.052.819.819,0,0,1-.834-.817.879.879,0,0,1,.539-.782,7.234,7.234,0,0,1,2.745-.5,3.833,3.833,0,0,1,2.832.956,3.572,3.572,0,0,1,.921,2.641v4.2a.928.928,0,0,1-.956.938.879.879,0,0,1-.956-.834v-.33a3.494,3.494,0,0,1-2.78,1.251A2.7,2.7,0,0,1,177.7,231.9Zm5.872-.625v-.591a5.5,5.5,0,0,0-1.946-.347c-1.268,0-2.015.539-2.015,1.425v.035c0,.834.73,1.3,1.668,1.3C182.582,233.119,183.572,232.372,183.572,231.277Z" transform="translate(-170.542 -222.468)" fill="#fff"/>
<path id="Tracé_212" data-name="Tracé 212" d="M236.8,208.073a.96.96,0,0,1,.973-.973.975.975,0,0,1,.99.973v10.042a.982.982,0,0,1-1.963,0Z" transform="translate(-219.374 -207.1)" fill="#fff"/>
<path id="Tracé_213" data-name="Tracé 213" d="M264.4,234.313a4.262,4.262,0,0,1-4.4-4.43v-.035a4.238,4.238,0,0,1,4.17-4.448,4.043,4.043,0,0,1,4.066,4.2.909.909,0,0,1-.921.938h-5.351a2.391,2.391,0,0,0,2.467,2.172,3.02,3.02,0,0,0,2.015-.747.686.686,0,0,1,.5-.174.783.783,0,0,1,.782.8.851.851,0,0,1-.261.591A4.35,4.35,0,0,1,264.4,234.313Zm1.946-5.073a2.215,2.215,0,0,0-2.172-2.259,2.327,2.327,0,0,0-2.224,2.259Z" transform="translate(-238.543 -222.221)" fill="#fff"/>
<path id="Tracé_214" data-name="Tracé 214" d="M319,226.377a.965.965,0,0,1,.973-.99.979.979,0,0,1,.99.99v.417a3.091,3.091,0,0,1,2.676-1.494c1.929,0,3.04,1.3,3.04,3.266v4.569a.95.95,0,0,1-.973.973.965.965,0,0,1-.99-.973v-3.961c0-1.32-.66-2.085-1.824-2.085a1.908,1.908,0,0,0-1.928,2.12v3.927a.982.982,0,0,1-1.963,0Z" transform="translate(-287.292 -222.138)" fill="#fff"/>
<path id="Tracé_215" data-name="Tracé 215" d="M373.564,221v-4.5h-.33a.834.834,0,0,1,0-1.668h.33v-1.459a.982.982,0,0,1,1.963,0v1.459h1.546a.834.834,0,1,1,0,1.668h-1.546v4.187a.925.925,0,0,0,1.06,1.06,4.522,4.522,0,0,0,.486-.052.83.83,0,0,1,.834.817.866.866,0,0,1-.521.764,4.073,4.073,0,0,1-1.338.226A2.181,2.181,0,0,1,373.564,221Z" transform="translate(-331.415 -211.479)" fill="#fff"/>
<path id="Tracé_216" data-name="Tracé 216" d="M411.465,233.336a.748.748,0,0,1-.365-.678.8.8,0,0,1,.8-.8.787.787,0,0,1,.417.122,4.51,4.51,0,0,0,2.467.834c.834,0,1.32-.348,1.32-.921v-.052c0-.66-.9-.886-1.911-1.2-1.268-.347-2.676-.869-2.676-2.5v-.035c0-1.616,1.338-2.606,3.04-2.606a5.969,5.969,0,0,1,2.693.695.814.814,0,0,1,.469.747.8.8,0,0,1-.817.8.7.7,0,0,1-.382-.1,4.8,4.8,0,0,0-2.015-.591c-.764,0-1.2.347-1.2.834v.035c0,.625.921.886,1.929,1.216,1.251.382,2.658.956,2.658,2.484v.035c0,1.79-1.39,2.693-3.179,2.693A5.719,5.719,0,0,1,411.465,233.336Z" transform="translate(-363.391 -222.303)" fill="#fff"/>
<path id="Tracé_217" data-name="Tracé 217" d="M486.464,221v-4.5h-.33a.834.834,0,0,1,0-1.668h.33v-1.459a.982.982,0,0,1,1.963,0v1.459h1.546a.834.834,0,1,1,0,1.668h-1.546v4.187a.925.925,0,0,0,1.06,1.06,4.521,4.521,0,0,0,.486-.052.83.83,0,0,1,.834.817.866.866,0,0,1-.521.764,4.074,4.074,0,0,1-1.338.226A2.181,2.181,0,0,1,486.464,221Z" transform="translate(-424.699 -211.479)" fill="#fff"/>
<path id="Tracé_218" data-name="Tracé 218" d="M535.1,233.549a.99.99,0,0,1-1.981,0v-.434a3.067,3.067,0,0,1-2.676,1.512c-1.929,0-3.04-1.3-3.04-3.284V226.79a.982.982,0,1,1,1.963,0v3.961c0,1.32.66,2.068,1.824,2.068a1.893,1.893,0,0,0,1.929-2.1V226.79a.979.979,0,0,1,.99-.99.99.99,0,0,1,.99.99Z" transform="translate(-459.485 -222.551)" fill="#fff"/>
<path id="Tracé_219" data-name="Tracé 219" d="M585.8,208.073a.95.95,0,0,1,.973-.973.965.965,0,0,1,.99.973v3.8a3.432,3.432,0,0,1,2.919-1.6c2.015,0,3.961,1.581,3.961,4.43v.035a4.086,4.086,0,0,1-3.961,4.43,3.5,3.5,0,0,1-2.919-1.512v.434a.982.982,0,0,1-1.963,0Zm6.845,6.654v-.035a2.522,2.522,0,0,0-2.45-2.728,2.569,2.569,0,0,0-2.484,2.728v.035a2.569,2.569,0,0,0,2.484,2.728A2.492,2.492,0,0,0,592.645,214.727Z" transform="translate(-507.738 -207.1)" fill="#fff"/>
<path id="Tracé_220" data-name="Tracé 220" d="M649.9,234.313a4.262,4.262,0,0,1-4.4-4.43v-.035a4.238,4.238,0,0,1,4.17-4.448,4.043,4.043,0,0,1,4.065,4.2.909.909,0,0,1-.921.938h-5.351a2.391,2.391,0,0,0,2.467,2.172,3.02,3.02,0,0,0,2.015-.747.685.685,0,0,1,.5-.174.783.783,0,0,1,.782.8.851.851,0,0,1-.261.591A4.38,4.38,0,0,1,649.9,234.313Zm1.946-5.073a2.215,2.215,0,0,0-2.172-2.259,2.327,2.327,0,0,0-2.224,2.259Z" transform="translate(-557.066 -222.221)" fill="#fff"/>
</g>
<g id="Groupe_7851" data-name="Groupe 7851" transform="translate(103.478 0)">
<circle id="Ellipse_105" data-name="Ellipse 105" cx="3.266" cy="3.266" r="3.266" transform="matrix(0.384, -0.924, 0.924, 0.384, 9.466, 20.582)" fill="#fff"/>
<circle id="Ellipse_106" data-name="Ellipse 106" cx="3.266" cy="3.266" r="3.266" transform="matrix(0.384, -0.924, 0.924, 0.384, 9.471, 11.874)" fill="#fff"/>
<circle id="Ellipse_107" data-name="Ellipse 107" cx="3.927" cy="3.927" r="3.927" transform="matrix(0.384, -0.924, 0.924, 0.384, 0.009, 16.56)" fill="#fff"/>
<circle id="Ellipse_108" data-name="Ellipse 108" cx="3.927" cy="3.927" r="3.927" transform="matrix(0.384, -0.924, 0.924, 0.384, 0.002, 7.252)" fill="#fff"/>
<circle id="Ellipse_109" data-name="Ellipse 109" cx="3.927" cy="3.927" r="3.927" transform="matrix(0.384, -0.924, 0.924, 0.384, 0, 25.862)" fill="#fff"/>
<circle id="Ellipse_110" data-name="Ellipse 110" cx="2.728" cy="2.728" r="2.728" transform="matrix(0.384, -0.924, 0.924, 0.384, 17.264, 15.911)" fill="#fff"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 5.9 KiB

@@ -0,0 +1,23 @@
<svg id="TalentsTube_logo-blanc" xmlns="http://www.w3.org/2000/svg" width="127.874" height="28.875" viewBox="0 0 127.874 28.875">
<g id="Groupe_7850" data-name="Groupe 7850" transform="translate(0 7.042)">
<path id="Tracé_210" data-name="Tracé 210" d="M137.664,221v-4.5h-.33a.834.834,0,1,1,0-1.668h.33v-1.459a.982.982,0,0,1,1.963,0v1.459h1.546a.834.834,0,1,1,0,1.668h-1.546v4.187a.925.925,0,0,0,1.06,1.06,4.521,4.521,0,0,0,.486-.052.83.83,0,0,1,.834.817.866.866,0,0,1-.521.764,4.073,4.073,0,0,1-1.338.226C138.672,223.519,137.664,222.894,137.664,221Z" transform="translate(-136.5 -211.479)" fill="#fff"/>
<path id="Tracé_211" data-name="Tracé 211" d="M177.7,231.9v-.035c0-1.842,1.442-2.745,3.527-2.745a7.16,7.16,0,0,1,2.293.347v-.208c0-1.216-.747-1.859-2.12-1.859a4.786,4.786,0,0,0-1.894.347,1.07,1.07,0,0,1-.313.052.819.819,0,0,1-.834-.817.879.879,0,0,1,.539-.782,7.234,7.234,0,0,1,2.745-.5,3.833,3.833,0,0,1,2.832.956,3.572,3.572,0,0,1,.921,2.641v4.2a.928.928,0,0,1-.956.938.879.879,0,0,1-.956-.834v-.33a3.494,3.494,0,0,1-2.78,1.251A2.7,2.7,0,0,1,177.7,231.9Zm5.872-.625v-.591a5.5,5.5,0,0,0-1.946-.347c-1.268,0-2.015.539-2.015,1.425v.035c0,.834.73,1.3,1.668,1.3C182.582,233.119,183.572,232.372,183.572,231.277Z" transform="translate(-170.542 -222.468)" fill="#fff"/>
<path id="Tracé_212" data-name="Tracé 212" d="M236.8,208.073a.96.96,0,0,1,.973-.973.975.975,0,0,1,.99.973v10.042a.982.982,0,0,1-1.963,0Z" transform="translate(-219.374 -207.1)" fill="#fff"/>
<path id="Tracé_213" data-name="Tracé 213" d="M264.4,234.313a4.262,4.262,0,0,1-4.4-4.43v-.035a4.238,4.238,0,0,1,4.17-4.448,4.043,4.043,0,0,1,4.066,4.2.909.909,0,0,1-.921.938h-5.351a2.391,2.391,0,0,0,2.467,2.172,3.02,3.02,0,0,0,2.015-.747.686.686,0,0,1,.5-.174.783.783,0,0,1,.782.8.851.851,0,0,1-.261.591A4.35,4.35,0,0,1,264.4,234.313Zm1.946-5.073a2.215,2.215,0,0,0-2.172-2.259,2.327,2.327,0,0,0-2.224,2.259Z" transform="translate(-238.543 -222.221)" fill="#fff"/>
<path id="Tracé_214" data-name="Tracé 214" d="M319,226.377a.965.965,0,0,1,.973-.99.979.979,0,0,1,.99.99v.417a3.091,3.091,0,0,1,2.676-1.494c1.929,0,3.04,1.3,3.04,3.266v4.569a.95.95,0,0,1-.973.973.965.965,0,0,1-.99-.973v-3.961c0-1.32-.66-2.085-1.824-2.085a1.908,1.908,0,0,0-1.928,2.12v3.927a.982.982,0,0,1-1.963,0Z" transform="translate(-287.292 -222.138)" fill="#fff"/>
<path id="Tracé_215" data-name="Tracé 215" d="M373.564,221v-4.5h-.33a.834.834,0,0,1,0-1.668h.33v-1.459a.982.982,0,0,1,1.963,0v1.459h1.546a.834.834,0,1,1,0,1.668h-1.546v4.187a.925.925,0,0,0,1.06,1.06,4.522,4.522,0,0,0,.486-.052.83.83,0,0,1,.834.817.866.866,0,0,1-.521.764,4.073,4.073,0,0,1-1.338.226A2.181,2.181,0,0,1,373.564,221Z" transform="translate(-331.415 -211.479)" fill="#fff"/>
<path id="Tracé_216" data-name="Tracé 216" d="M411.465,233.336a.748.748,0,0,1-.365-.678.8.8,0,0,1,.8-.8.787.787,0,0,1,.417.122,4.51,4.51,0,0,0,2.467.834c.834,0,1.32-.348,1.32-.921v-.052c0-.66-.9-.886-1.911-1.2-1.268-.347-2.676-.869-2.676-2.5v-.035c0-1.616,1.338-2.606,3.04-2.606a5.969,5.969,0,0,1,2.693.695.814.814,0,0,1,.469.747.8.8,0,0,1-.817.8.7.7,0,0,1-.382-.1,4.8,4.8,0,0,0-2.015-.591c-.764,0-1.2.347-1.2.834v.035c0,.625.921.886,1.929,1.216,1.251.382,2.658.956,2.658,2.484v.035c0,1.79-1.39,2.693-3.179,2.693A5.719,5.719,0,0,1,411.465,233.336Z" transform="translate(-363.391 -222.303)" fill="#fff"/>
<path id="Tracé_217" data-name="Tracé 217" d="M486.464,221v-4.5h-.33a.834.834,0,0,1,0-1.668h.33v-1.459a.982.982,0,0,1,1.963,0v1.459h1.546a.834.834,0,1,1,0,1.668h-1.546v4.187a.925.925,0,0,0,1.06,1.06,4.521,4.521,0,0,0,.486-.052.83.83,0,0,1,.834.817.866.866,0,0,1-.521.764,4.074,4.074,0,0,1-1.338.226A2.181,2.181,0,0,1,486.464,221Z" transform="translate(-424.699 -211.479)" fill="#fff"/>
<path id="Tracé_218" data-name="Tracé 218" d="M535.1,233.549a.99.99,0,0,1-1.981,0v-.434a3.067,3.067,0,0,1-2.676,1.512c-1.929,0-3.04-1.3-3.04-3.284V226.79a.982.982,0,1,1,1.963,0v3.961c0,1.32.66,2.068,1.824,2.068a1.893,1.893,0,0,0,1.929-2.1V226.79a.979.979,0,0,1,.99-.99.99.99,0,0,1,.99.99Z" transform="translate(-459.485 -222.551)" fill="#fff"/>
<path id="Tracé_219" data-name="Tracé 219" d="M585.8,208.073a.95.95,0,0,1,.973-.973.965.965,0,0,1,.99.973v3.8a3.432,3.432,0,0,1,2.919-1.6c2.015,0,3.961,1.581,3.961,4.43v.035a4.086,4.086,0,0,1-3.961,4.43,3.5,3.5,0,0,1-2.919-1.512v.434a.982.982,0,0,1-1.963,0Zm6.845,6.654v-.035a2.522,2.522,0,0,0-2.45-2.728,2.569,2.569,0,0,0-2.484,2.728v.035a2.569,2.569,0,0,0,2.484,2.728A2.492,2.492,0,0,0,592.645,214.727Z" transform="translate(-507.738 -207.1)" fill="#fff"/>
<path id="Tracé_220" data-name="Tracé 220" d="M649.9,234.313a4.262,4.262,0,0,1-4.4-4.43v-.035a4.238,4.238,0,0,1,4.17-4.448,4.043,4.043,0,0,1,4.065,4.2.909.909,0,0,1-.921.938h-5.351a2.391,2.391,0,0,0,2.467,2.172,3.02,3.02,0,0,0,2.015-.747.685.685,0,0,1,.5-.174.783.783,0,0,1,.782.8.851.851,0,0,1-.261.591A4.38,4.38,0,0,1,649.9,234.313Zm1.946-5.073a2.215,2.215,0,0,0-2.172-2.259,2.327,2.327,0,0,0-2.224,2.259Z" transform="translate(-557.066 -222.221)" fill="#fff"/>
</g>
<g id="Groupe_7851" data-name="Groupe 7851" transform="translate(103.478 0)">
<circle id="Ellipse_105" data-name="Ellipse 105" cx="3.266" cy="3.266" r="3.266" transform="matrix(0.384, -0.924, 0.924, 0.384, 9.466, 20.582)" fill="#fff"/>
<circle id="Ellipse_106" data-name="Ellipse 106" cx="3.266" cy="3.266" r="3.266" transform="matrix(0.384, -0.924, 0.924, 0.384, 9.471, 11.874)" fill="#fff"/>
<circle id="Ellipse_107" data-name="Ellipse 107" cx="3.927" cy="3.927" r="3.927" transform="matrix(0.384, -0.924, 0.924, 0.384, 0.009, 16.56)" fill="#fff"/>
<circle id="Ellipse_108" data-name="Ellipse 108" cx="3.927" cy="3.927" r="3.927" transform="matrix(0.384, -0.924, 0.924, 0.384, 0.002, 7.252)" fill="#fff"/>
<circle id="Ellipse_109" data-name="Ellipse 109" cx="3.927" cy="3.927" r="3.927" transform="matrix(0.384, -0.924, 0.924, 0.384, 0, 25.862)" fill="#fff"/>
<circle id="Ellipse_110" data-name="Ellipse 110" cx="2.728" cy="2.728" r="2.728" transform="matrix(0.384, -0.924, 0.924, 0.384, 17.264, 15.911)" fill="#fff"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 5.9 KiB

@@ -0,0 +1,16 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 25.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 277 328" style="enable-background:new 0 0 277 328;" xml:space="preserve">
<style type="text/css">
.st0{fill:#1689FB;}
</style>
<g id="Groupe_7859" transform="translate(-4.489 -11.849)">
<circle id="Ellipse_105" class="st0" cx="159.8" cy="229.9" r="40.6"/>
<circle id="Ellipse_106" class="st0" cx="159.8" cy="122.4" r="40.6"/>
<circle id="Ellipse_107" class="st0" cx="53.8" cy="175.9" r="48.8"/>
<circle id="Ellipse_108" class="st0" cx="53.7" cy="61" r="48.8"/>
<circle id="Ellipse_109" class="st0" cx="53.7" cy="290.7" r="48.8"/>
<circle id="Ellipse_110" class="st0" cx="247.4" cy="175.9" r="33.9"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 895 B

File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
(function($){"use strict";$.ajaxChimp={responses:{"We have sent you a confirmation email":0,"Please enter a value":1,"An email address must contain a single @":2,"The domain portion of the email address is invalid (the portion after the @: )":3,"The username portion of the email address is invalid (the portion before the @: )":4,"This email address looks fake or invalid. Please enter a real email address":5},translations:{en:null},init:function(selector,options){$(selector).ajaxChimp(options)}};$.fn.ajaxChimp=function(options){$(this).each(function(i,elem){var form=$(elem);var email=form.find("input[type=email]");var label=form.find("label[for="+email.attr("id")+"]");var settings=$.extend({url:form.attr("action"),language:"en"},options);var url=settings.url.replace("/post?","/post-json?").concat("&c=?");form.attr("novalidate","true");email.attr("name","EMAIL");form.submit(function(){var msg;function successCallback(resp){if(resp.result==="success"){msg="We have sent you a confirmation email";label.removeClass("error").addClass("valid");email.removeClass("error").addClass("valid")}else{email.removeClass("valid").addClass("error");label.removeClass("valid").addClass("error");var index=-1;try{var parts=resp.msg.split(" - ",2);if(parts[1]===undefined){msg=resp.msg}else{var i=parseInt(parts[0],10);if(i.toString()===parts[0]){index=parts[0];msg=parts[1]}else{index=-1;msg=resp.msg}}}catch(e){index=-1;msg=resp.msg}}if(settings.language!=="en"&&$.ajaxChimp.responses[msg]!==undefined&&$.ajaxChimp.translations&&$.ajaxChimp.translations[settings.language]&&$.ajaxChimp.translations[settings.language][$.ajaxChimp.responses[msg]]){msg=$.ajaxChimp.translations[settings.language][$.ajaxChimp.responses[msg]]}label.html(msg);label.show(2e3);if(settings.callback){settings.callback(resp)}}var data={};var dataArray=form.serializeArray();$.each(dataArray,function(index,item){data[item.name]=item.value});$.ajax({url:url,data:data,success:successCallback,dataType:"jsonp",error:function(resp,text){console.log("mailchimp ajax submit error: "+text)}});var submitMsg="Submitting...";if(settings.language!=="en"&&$.ajaxChimp.translations&&$.ajaxChimp.translations[settings.language]&&$.ajaxChimp.translations[settings.language]["submit"]){submitMsg=$.ajaxChimp.translations[settings.language]["submit"]}label.html(submitMsg).show(2e3);return false})});return this}})(jQuery);
@@ -0,0 +1,8 @@
/*
jQuery animateNumber plugin v0.0.10
(c) 2013, Alexandr Borisov.
https://github.com/aishek/jquery-animateNumber
*/
(function(d){var p=function(b){return b.split("").reverse().join("")},l={numberStep:function(b,a){var e=Math.floor(b);d(a.elem).text(e)}},h=function(b){var a=b.elem;a.nodeType&&a.parentNode&&(a=a._animateNumberSetter,a||(a=l.numberStep),a(b.now,b))};d.Tween&&d.Tween.propHooks?d.Tween.propHooks.number={set:h}:d.fx.step.number=h;d.animateNumber={numberStepFactories:{append:function(b){return function(a,e){var k=Math.floor(a);d(e.elem).prop("number",a).text(k+b)}},separator:function(b,a){b=b||" ";a=
a||3;return function(e,k){var c=Math.floor(e).toString(),s=d(k.elem);if(c.length>a){for(var f=c,g=a,l=f.split("").reverse(),c=[],m,q,n,r=0,h=Math.ceil(f.length/g);r<h;r++){m="";for(n=0;n<g;n++){q=r*g+n;if(q===f.length)break;m+=l[q]}c.push(m)}f=c.length-1;g=p(c[f]);c[f]=p(parseInt(g,10).toString());c=c.join(b);c=p(c)}s.prop("number",e).text(c)}}}};d.fn.animateNumber=function(){for(var b=arguments[0],a=d.extend({},l,b),e=d(this),k=[a],c=1,h=arguments.length;c<h;c++)k.push(arguments[c]);if(b.numberStep){var f=
this.each(function(){this._animateNumberSetter=b.numberStep}),g=a.complete;a.complete=function(){f.each(function(){delete this._animateNumberSetter});g&&g.apply(this,arguments)}}return e.animate.apply(e,k)}})(jQuery);
File diff suppressed because one or more lines are too long

Some files were not shown because too many files have changed in this diff Show More