Compare commits

...

56 Commits

Author SHA1 Message Date
llaniau f5008ea3de US340 : Modif texte bouton ajout comp 2020-11-09 21:31:53 +01:00
llaniau fc3d9d71a7 US340 : corect bugs sur l'affichage du bouton save 2020-11-09 21:11:51 +01:00
llaniau a3212a5b17 US240 : Mise en page de l'ajout de compétences 2020-11-09 19:38:07 +01:00
llaniau 6760343163 US 340 : suite 2020-11-05 13:13:17 +01:00
llaniau 720e112d3c US340 : Suite (api pole emploi competence) 2020-11-04 15:03:02 +01:00
llaniau 383b129317 US 340 : Suite dev ajour competence Pole emploi 2020-11-03 13:42:45 +01:00
llaniau 886a931221 US340 : Mise en place api pole emploi 2020-11-02 23:13:25 +01:00
llaniau 8cfeb2906b Ajout du champ temps de travail 2020-10-28 17:03:32 +01:00
llaniau f2d8e569a2 Multipage ajax pour candidatures 2020-10-27 18:23:15 +01:00
llaniau d03c1615b1 Mise en place du multi page ajax 2020-10-26 18:19:13 +01:00
llaniau 36fdf82d18 Partage de candidature vue anonyme 2020-10-22 12:23:06 +02:00
llaniau 3bdc692f5d partage de candidat vue anonyme 2020-10-20 18:32:58 +02:00
llaniau 1e81d2835d Mise en place du partage de condidat 2020-10-20 17:32:58 +02:00
llaniau c76645669d Possibilité de faire du Télétravail? 2020-10-20 11:03:09 +02:00
llaniau 5f29e076e6 Nofollow pour pre prod 2020-10-20 09:17:24 +02:00
llaniau c48ec26bc4 Mise en place teletravail 2020-10-20 09:13:59 +02:00
llaniau 18d07463ab Suppression balise meta pour MEP et analytics 2020-10-15 15:12:29 +02:00
llaniau 9f58cf7f58 Correction mineure graphique 2020-10-15 14:45:27 +02:00
llaniau 40688feb88 correction suite a modif de pole emploi 2020-10-14 21:47:08 +02:00
llaniau 2275c6aadd Correction bug suite recette du 14_10 2020-10-14 17:36:33 +02:00
llaniau 6e4f718fe0 Cas du doublon d'utilisateur 2020-10-13 17:24:29 +02:00
llaniau b19eb227b5 Mise en place API pole emploi 2020-10-12 18:28:16 +02:00
llaniau f35dcbbeba US 439,
US466 modif terme,
US462 num assistance,
US461 crisp
US 464 copyright
2020-10-07 16:11:41 +02:00
llaniau 6860dee286 Evoi de mail lors de creation multi util 2020-10-06 16:39:27 +02:00
llaniau a93d58e119 Bug push git 2020-10-05 23:58:07 +02:00
llaniau 6babd6976c Amélioration employmentType 2020-10-05 17:55:50 +02:00
llaniau 468f5baed6 Changement stat page accueil recruteur 2020-10-05 15:18:11 +02:00
llaniau 6a1c231fcb Ajout unpublished dans le groupe ad_detail 2020-10-05 14:05:01 +02:00
llaniau 6b25e5b5e7 Correction de fautes d'orthographe 2020-10-01 17:01:44 +02:00
llaniau bb231fbeb3 Ajout d'un commentaire dans Answerrepo 2020-09-29 11:02:19 +02:00
llaniau cae04bc8d7 Modification de libellés 2020-09-29 09:58:40 +02:00
llaniau 4fa83f1c51 Envoi de mail apres candidature 2020-09-24 17:10:16 +02:00
llaniau 15c9e8811d MEP 21 sept 2020-09-21 16:08:35 +02:00
llaniau be62f29fb9 version stabilisé pre prod avant mise en prod 2020-09-21 15:52:14 +02:00
llaniau 439362bda4 Recette avant mise en prod 2020-09-21 13:16:16 +02:00
llaniau 1866008c84 Redirection vers web app lors de message 2020-09-21 11:38:19 +02:00
llaniau 4e8d3b8a9d mediaController 2020-09-21 11:02:39 +02:00
llaniau b21946500a Correction bug offre d'emploi sur la crea 2020-09-21 10:49:10 +02:00
llaniau 8808da8af1 params pre prod 2020-09-21 08:46:15 +02:00
llaniau 6ba0c4744e param prod 2020-09-21 08:38:17 +02:00
llaniau f8a03f317b parameter pre prod erreur 2020-09-21 08:36:25 +02:00
llaniau 8de926b22f Modif param mail et resolution de bugs mineur 2020-09-19 11:46:29 +02:00
llaniau eb70757671 Suppression d'un user (correction d'un bug) 2020-09-17 16:35:50 +02:00
llaniau 0c82a72da5 oubli de mdp 2020-09-16 18:08:01 +02:00
llaniau 719c6ae0ee erreur 404 2020-09-15 17:43:41 +02:00
llaniau ba84cc4859 changement d'adresse mail de ref 2020-09-15 14:11:25 +02:00
llaniau 09716c5b69 page tarifs 2020-09-15 12:45:26 +02:00
llaniau 5d593cf46c Page tarifs plus changement lien contact 2020-09-15 12:42:53 +02:00
llaniau 676317050a Modif adblock maj de ads->jobs 2020-09-15 11:46:38 +02:00
llaniau 3d64f000e0 Ajout d(une video marque employeur 2020-09-14 18:25:21 +02:00
llaniau 28de33c053 Ménage dans les twig 2020-09-10 09:29:00 +02:00
llaniau 35b49ac496 Résolution bug 9/11 2020-09-09 17:09:10 +02:00
llaniau c2d8aa85ec Mise en place video marque employeur mode dashboard v2 2020-09-09 15:26:58 +02:00
llaniau 93c7394c8e Correction ano 8 sept 2020-09-08 17:37:35 +02:00
llaniau b57f5e9de2 Résolution de bugs suite a la recette de Corentin 2020-09-08 10:32:54 +02:00
llaniau 07531fb0de Organisation cliente 2020-09-07 16:00:41 +02:00
134 changed files with 8742 additions and 2107 deletions
@@ -1,6 +1,9 @@
{% extends "base.html.twig" %}
{% extends "basev2.html.twig" %}
{% block menu %}
{% endblock %}
{% block content %}
<main id="content">
<div class="container contentWrapper">
<div class="row">
<div class="col push-s3 s6">
@@ -8,8 +11,10 @@
</div>
</div>
</div>
</div>
{% endblock %}
{% block metarobot %}
<meta name="robots" content="noindex,nofollow">
<meta http-equiv="refresh" content="1;URL=/">
{% endblock %}
@@ -1,6 +1,7 @@
{% trans_default_domain 'FOSUserBundle' %}
<div class="fos_user_user_show">
Votre mot de passe a bien été modifié<br/>
<p>{{ 'profile.show.username'|trans }}: {{ user.username }}</p>
<p>{{ 'profile.show.email'|trans }}: {{ user.email }}</p>
</div>
@@ -1,7 +1,9 @@
{% extends "base.html.twig" %}
{% trans_default_domain 'FOSUserBundle' %}
{% block menu %}
{% endblock %}
{% block content %}
<div class="container contentWrapper">
<div class="row">
@@ -2,6 +2,9 @@
{% block title %}Talents Tube : Le 1er job board 100% vidéo{% endblock %}
{% trans_default_domain 'FOSUserBundle' %}
{% block menu %}
{% endblock %}
{% block content %}
<main id="content">
<div class="container space-2 ">
@@ -1,7 +1,9 @@
{% extends "basetemporaire.html.twig" %}
{% trans_default_domain 'FOSUserBundle' %}
{% block menu %}
{% endblock %}
{% block content %}
<div class="container contentWrapper">
@@ -43,18 +43,19 @@
{% endif %}
<div class="js-form-message mb-3">
<div class="input-field col s12">
{% set label = 'user.cgu.label'|trans({'%link_start%' : '<a href="'~path('service_cgu')~'">', '%link_end%' : '</a>'}, 'messages') | raw %}
{{ form_errors(form.cgu) }}
{{ form_widget(form.cgu) }}
{{ form_label(form.cgu) }}
{# {{ form_label(form.cgu) }} #}
<label>Je déclare avoir pris connaissance et accepté les termes et les <a target="_blank"
href="/politique-confidentialite">conditions générales dutilisation</a></label>
</div>
</div>
<div class="js-form-message mb-3">
{# <div class="js-form-message mb-3">
<div class="input-field col s12">
<a href="mentions-legales">Lire les conditions générales d'utilisations</a>
<a href="/cgu">Lire les conditions générales d'utilisations</a>
<br /><br />
</div>
</div>
</div> #}
<div class="js-form-message mb-3">
<div class="input-field col s12">
{{ form_rest(form) }}
@@ -1,7 +1,9 @@
{% trans_default_domain 'FOSUserBundle' %}
{% extends "basev2.html.twig" %}
{% block menu %}
{% endblock %}
{% block content %}
<main id="content">
<div class="container space-2 ">
@@ -1,5 +1,7 @@
{% extends "basev2.html.twig" %}
{% block menu %}
{% endblock %}
{% block content %}
<main id="content">
<div class="container space-2 ">
@@ -7,7 +7,9 @@ Mot de passe oublié TalentsTube
{% block description %}
Mot de passe oublié TalentsTube
{% endblock %}
{% block menu %}
{% endblock %}
{% block content %}
<main id="content">
<div class="container space-2 ">
@@ -1,17 +1,17 @@
{% extends 'basev2.html.twig' %}
{% block title %}Talents Tube - Solution de recrutement en vidéo{% endblock %}
{% block title %}Espace recruteur - Solution de recrutement en vidéo | Talents Tube{% endblock %}
{% block meta %}
<meta name="description" content="Vous souhaitez recruter en vidéo ? Talents Tube diffuse vos vidéos doffres demploi et marque employeur pour attirer les meilleurs talents en vidéo.">
<meta name="twitter:card" content="summary">
<meta name="twitter:site" content="@TalentsTube">
<meta name="twitter:title" content="Talents Tube - Solution de recrutement en vidéo">
<meta name="twitter:title" content="Espace recruteur - Solution de recrutement en vidéo | Talents Tube">
<meta name="twitter:description" content="Vous souhaitez recruter en vidéo ? Talents Tube diffuse vos vidéos doffres demploi et marque employeur pour attirer les meilleurs talents en vidéo.">
<meta name="twitter:image" content="{{ absolute_url(asset('img/mail/logo-talents-tube.png')) }}">
{#Open Graph data pour le partage sur les réseaux sociaux (ex Facebook..)#}
<meta property="og:title" content="Talents Tube - Solution de recrutement en vidéo" />
<meta property="og:title" content="Espace recruteur - Solution de recrutement en vidéo | Talents Tube" />
<meta property="og:type" content="article" />
<meta property="og:image" content="{{ absolute_url(asset('img/mail/logo-talents-tube.png')) }}" />
<meta property="og:description" content="Vous souhaitez recruter en vidéo ? Talents Tube diffuse vos vidéos doffres demploi et marque employeur pour attirer les meilleurs talents en vidéo." />
@@ -60,9 +60,10 @@
{{ form_widget(register_form.cgu) }}
{% block form_label %}
{% spaceless %}
<label for="fos_user_registration_form_cgu">
Je déclare avoir pris connaissance et accepté les termes et les <a target="_blank" href="{{ path("service_cgu") }}">conditions générales dutilisation</a>
</label>
<label for="fos_user_registration_form_cgu">
Je déclare avoir pris connaissance et accepté les termes et les <a target="_blank"
href="{{ path("service_cgu") }}">conditions générales dutilisation</a>
</label>
{% endspaceless %}
{% endblock %}
</div>
@@ -6,13 +6,13 @@
<meta name="twitter:card" content="summary">
<meta name="twitter:site" content="@TalentsTube">
<meta name="twitter:title" content="Talents Tube - Solution de recrutement en vidéo">
<meta name="twitter:title" content="Espace recruteur - Solution de recrutement en vidéo | Talents Tube">
<meta name="twitter:description"
content="Vous souhaitez recruter en vidéo ? Talents Tube diffuse vos vidéos doffres demploi et marque employeur pour attirer les meilleurs talents en vidéo.">
<meta name="twitter:image" content="{{ absolute_url(asset('img/mail/logo-talents-tube.png')) }}">
{#Open Graph data pour le partage sur les réseaux sociaux (ex Facebook..)#}
<meta property="og:title" content="Talents Tube - Solution de recrutement en vidéo" />
<meta property="og:title" content="Espace recruteur - Solution de recrutement en vidéo | Talents Tube" />
<meta property="og:type" content="article" />
<meta property="og:image" content="{{ absolute_url(asset('img/mail/logo-talents-tube.png')) }}" />
<meta property="og:description"
@@ -22,7 +22,9 @@
content="{{ url(app.request.attributes.get('_route'), app.request.attributes.get('_route_params')) }}" />
{% endblock %}
{% block menu %}
{% endblock %}
{% block content %}
<main id="content">
@@ -1,4 +1,4 @@
{% extends 'base.html.twig' %}
{% extends 'basetemporaire.html.twig' %}
{% block urlCanonical %}
#!
@@ -1,5 +1,6 @@
{% extends 'base.html.twig' %}
{% extends 'basev2.html.twig' %}
{% block content %}
<main id="content">
<div class="row">
<div class="col s12">
<h2 class="center-align m-t-100">Page introuvable</h2>
@@ -9,4 +10,5 @@
</p>
</div>
</div>
</main>
{% endblock %}
@@ -133,6 +133,14 @@
<source>company.menu.videotheque.label</source>
<target>Vidéothèque</target>
</trans-unit>
<trans-unit id="company.menu.candidature.label">
<source>company.menu.candidature.label</source>
<target>Candidatures</target>
</trans-unit>
<trans-unit id="company.menu.marque.label">
<source>company.menu.marque.label</source>
<target>Marque employeur</target>
</trans-unit>
<trans-unit id="company.menu.search.label">
<source>company.menu.search.label</source>
<target>Mes recherches</target>
@@ -518,7 +526,7 @@
<div style="margin:0 auto;max-width:600px;background:#FFFFFF;"><table class="" cellpadding="0" cellspacing="0" style="width:100%;font-size:0px;background:#FFFFFF;" align="center"><tbody><tr><td style="text-align:center;vertical-align:top;font-size:0;padding:0px;"><!--[if mso]>
<table border="0" cellpadding="0" cellspacing="0"><tr><td style="width:600px;">
<![endif]--><div style="vertical-align:top;display:inline-block;font-size:13px;text-align:left;width:100%;" class="mj-column-per-100" aria-labelledby="mj-column-per-100"><table width="100%"><tbody><tr><td style="font-size:0;padding:20px 35px 20px 35px;" align="left"><div class="mj-content" style="cursor:auto;color:#534F4F;font-family:Trebuchet,Helvetica,sans-serif;font-size:14px;line-height:22px;"><p>*Ce lien ne peut être utilisé quune seule fois pour valider votre compte.</p>
<p>Si vous n’êtes pas à lorigine de linscription sur Talents Tube, veuillez contacter le <a href="https://blog.talentstube.com/contact.html" style="color:#155EE4;text-decoration:none;">support Talents Tube</a>.</p>
<p>Si vous n’êtes pas à lorigine de linscription sur Talents Tube, veuillez contacter le <a href="https://blog.talentstube.com/contact" style="color:#155EE4;text-decoration:none;">support Talents Tube</a>.</p>
<p>Merci de votre compréhension.</p>
<p>Talents Tube</p></div></td></tr></tbody></table></div><!--[if mso]>
</td></tr></table>
@@ -545,7 +553,7 @@
<div style="margin:0 auto;max-width:600px;background:#FFFFFF;"><table class="" cellpadding="0" cellspacing="0" style="width:100%;font-size:0px;background:#FFFFFF;" align="center"><tbody><tr><td style="text-align:center;vertical-align:top;font-size:0;padding:0px;"><!--[if mso]>
<table border="0" cellpadding="0" cellspacing="0"><tr><td style="width:600px;">
<![endif]--><div style="vertical-align:top;display:inline-block;font-size:13px;text-align:left;width:100%;" class="mj-column-per-100" aria-labelledby="mj-column-per-100"><table width="100%"><tbody><tr><td style="font-size:0;padding:20px 35px 20px 35px;" align="left"><div class="mj-content" style="cursor:auto;color:#534F4F;font-family:Trebuchet,Helvetica,sans-serif;font-size:14px;line-height:22px;"><p>*Ce lien ne peut être utilisé quune seule fois pour valider votre compte.</p>
<p>Si vous n’êtes pas à lorigine de linscription sur Talents Tube, veuillez contacter le <a href="https://blog.talentstube.com/contact.html" style="color:#155EE4;text-decoration:none;">support Talents Tube</a>.</p>
<p>Si vous n’êtes pas à lorigine de linscription sur Talents Tube, veuillez contacter le <a href="https://blog.talentstube.com/contact" style="color:#155EE4;text-decoration:none;">support Talents Tube</a>.</p>
<p>Merci de votre compréhension.</p>
<p>Talents Tube</p></div></td></tr></tbody></table></div><!--[if mso]>
</td></tr></table>
@@ -29,6 +29,7 @@
{{ form_row(form.title) }}
{{ form_row(form.location) }}
{{ form_row(form.location_gmap) }}
{{ form_row(form.beneficiaire) }}
{{ form_row(form.description) }}
{{ form_row(form.publicTag) }}
@@ -0,0 +1,268 @@
{% 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="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>
<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>
{# <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>
<script type="text/javascript" src="https://cdn.datatables.net/buttons/1.6.4/js/buttons.html5.min.js"></script>
<script type="text/javascript" src="https://cdn.datatables.net/buttons/1.6.4/js/buttons.print.min.js"></script> #}
{% 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>
{% endblock %}
{% block content %}
<style type="text/css">
/* Hide default search box */
.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>
</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>
<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>
<th><input id='input4' type='text' class='form-control' placeholder='' style='font-family:Arial, FontAwesome; width:100%'/></th>
<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>
{# <table id="answer_list_table" class="table table-hover table-bordered">
<thead>
<tr>
<th class="col-xs-2">Date d'envoi</th>
<th>Utilisateur</th>
<th>Annonce / Entreprise</th>
<th>video</th>
<th>Status</th>
<th>action</th>
</tr>
</thead>
<tbody>
{% for answer in answers if answer.status != "DRAFT" %}
<tr>
<td data-order="{{ answer.sendTime|date('U') }}">{{ answer.sendTime|date('d/m/Y') }}</td>
<td>{{ answer.user.firstname }} {{ answer.user.lastname }}</td>
{% if answer.ad %}
<td>{{ answer.ad.company.brandname }} - {{ answer.ad.title }}</td>
{% else %}
<td>{{ answer.company.brandname }}</td>
{% endif %}
<td>
ID Candidature : {{ answer.id }}<br />
{% if answer.video.cdnUrl is defined %}
<iframe src="https://player.vimeo.com/video/{{ answer.video.cdnUrl|replace({ "/videos/": ""}) }}"
width="auto" height="auto" frameborder="0" webkitallowfullscreen mozallowfullscreen
allowfullscreen></iframe>
{% endif %}
</td>
<td class="status">{{ answer.status }}</td>
<td>
Actions :
<select class="changeStatus" name="changeStatus" data-id="{{ answer.id }}">
<option value="null">choisir</option>
<option value="SENDED">Envoyé</option>
<option value="DRAFT">Brouillon</option>
<option value="REFUSED">Refuser</option>
</select>
<br />
<a class="delete-answer" href='{{ path("admin_answer_delete",{'id':answer.id }) }}' data-toggle="tooltip" title="Supprimer">
Supprimer <i class="fa fa-trash"></i>
</a>
</td>
</tr>
{% endfor %}
</tbody>
</table> #}
</div>
</div>
{% endblock %}
{% block javascripts %}
<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%'/>" );
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'
},
"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"
},
});
// 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);
}
});
}
</script>
{% endblock %}
@@ -15,10 +15,12 @@
<link rel="stylesheet" href="{{ asset('admin/AdminLTE/dist/css/skins/skin-blue.min.css') }}">
<link rel="stylesheet" href="{{ asset('admin/AdminLTE/plugins/datatables/dataTables.bootstrap.css') }}">
<link rel="stylesheet" href="{{ asset('admin/AdminLTE/plugins/datatables/dataTables.bootstrap.css') }}">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/jquery-confirm/3.3.2/jquery-confirm.min.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/confirm/3.3.2/jquery-confirm.min.css">
<script type="text/javascript" defer="defer" src="https://extend.vimeocdn.com/ga/64189815.js"></script>
<link href="https://gitcdn.github.io/bootstrap-toggle/2.2.2/css/bootstrap-toggle.min.css" rel="stylesheet">
{% block js %}
{% endblock %}
{% block css %}
{% endblock %}
@@ -1,5 +1,5 @@
<!DOCTYPE html>
<html lang="en">
<html lang="fr">
<head>
<meta http-equiv="content-type" content="text/html;charset=UTF-8" />
@@ -27,42 +27,7 @@
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" />
</head>
<body class="fixed-header dashboard menu-pin menu-behind">
{{ 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>
</div>
<!-- END PAGE CONTENT WRAPPER -->
</div>
<!-- END PAGE CONTAINER -->
{% block javascripts %}
<script src="https://maps.googleapis.com/maps/api/js?key=AIzaSyDYV8IJGtIoWLfXJQQvIuDQ88n2aEuRgpg&libraries=places">
</script>
{% javascripts
'@vendors'
'@global'
'@company'
output='assetic/main.dash.company.js' filter='?uglifyjs2' %}
<script src="{{ asset_url }}"></script>
{% endjavascripts %}
{% endblock %}
<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>
<!-- BEGIN VENDOR JS -->
<script src="{{ asset('dashboard/plugins/pace/pace.min.js') }}" type="text/javascript"></script>
<!-- A polyfill for browsers that don't support ligatures: remove liga.js if not needed-->
@@ -95,6 +60,7 @@
</script>
<script src="{{ asset('dashboard/plugins/skycons/skycons.js') }}" type="text/javascript"></script>
<script src="{{ asset('dashboard/plugins/quill/quill.min.js') }}" type="text/javascript"></script>
<script src="https://cdn.jsdelivr.net/gh/xcash/bootstrap-autocomplete@v2.3.7/dist/latest/bootstrap-autocomplete.min.js"></script>
<!-- END VENDOR JS -->
<!-- BEGIN CORE TEMPLATE JS -->
<!-- BEGIN CORE TEMPLATE JS -->
@@ -107,8 +73,65 @@
<!-- END CORE TEMPLATE JS -->
<!-- BEGIN PAGE LEVEL JS -->
<script src="{{ asset('dashboard/js/dashboard.js') }}" type="text/javascript"></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-2020 Talents Tube
</p>
<p class="small no-margin pull-right sm-pull-reset">
Besoin d'aide ? 02 30 05 06 31
</p>
<div class="clearfix"></div>
</div>
</div>
<!-- END COPYRIGHT -->
</div>
<!-- END PAGE CONTENT WRAPPER -->
</div>
<!-- END PAGE CONTAINER -->
{% block javascripts %}
<script src="https://maps.googleapis.com/maps/api/js?key=AIzaSyDYV8IJGtIoWLfXJQQvIuDQ88n2aEuRgpg&libraries=places">
</script>
{% javascripts
'@vendors'
'@global'
'@company'
output='assetic/main.dash.company.js' filter='?uglifyjs2' %}
<script src="{{ asset_url }}"></script>
{% endjavascripts %}
{% endblock %}
{% block javascriptsSecondaire %}
{% endblock %}
</body>
</html>
@@ -1,7 +1,7 @@
<!-- BEGIN SIDEBPANEL-->
<nav class="page-sidebar" data-pages="sidebar">
<!-- BEGIN SIDEBAR MENU TOP TRAY CONTENT-->
<div class="sidebar-overlay-slide from-top" id="appMenu">
{# <div class="sidebar-overlay-slide from-top" id="appMenu">
<div class="row">
<div class="col-xs-6 no-padding">
<a href="#" class="p-l-40"><img src="{{ asset('dashboard/img/demo/social_app.svg') }}" alt="socail">
@@ -22,14 +22,14 @@
</a>
</div>
</div>
</div>
</div> #}
<!-- END SIDEBAR MENU TOP TRAY CONTENT-->
<!-- BEGIN SIDEBAR MENU HEADER-->
<div class="sidebar-header">
<img src="{{ asset('dashboard/img/logo_white.png') }}" alt="logo" class="brand"
{# <img src="{{ asset('dashboard/img/logo_white.png') }}" alt="logo" class="brand"
data-src="{{ asset('dashboard/img/logo_white.png') }}"
data-src-retina="{{ asset('dashboard/img/logo_white_2x.png') }}" width="78" height="22">
<div class="sidebar-header-controls">
data-src-retina="{{ asset('dashboard/img/logo_white_2x.png') }}" width="78" height="22"> #}
{# <div class="sidebar-header-controls">
<button aria-label="Toggle Drawer" type="button"
class="btn btn-icon-link invert sidebar-slide-toggle m-l-20 m-r-10" data-pages-toggle="#appMenu">
<i class="pg-icon">chevron_down</i>
@@ -39,7 +39,7 @@
data-toggle-pin="sidebar">
<i class="pg-icon"></i>
</button>
</div>
</div> #}
</div>
<!-- END SIDEBAR MENU HEADER-->
<!-- START SIDEBAR MENU -->
@@ -75,9 +75,18 @@
</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">
<span class="icon-thumbnail">
<span class="material-icons">
group
</span>
</span>
@@ -131,6 +140,25 @@
<span class="icon-thumbnail"><i class="pg-icon">mail</i></span>
</li>
{% if is_granted('ROLE_PREVIOUS_ADMIN') %}
<li class="">
<a href="{{ path('admin_dashboard', {'_switch_user': '_exit'}) }}">
<span class="principal">Se déconnecter</span>
</a>
<span class="icon-thumbnail">
<i class="pg-icon m-20">exit</i>
</span>
</li>
<li class="">
<small>
(Connecté en tant que {{ app.user.firstname }} {{ app.user.lastname }})
</small>
</li>
{% endif %}
</ul>
<div class="clearfix"></div>
@@ -0,0 +1,63 @@
<!DOCTYPE html>
<html>
<head>
<!-- Google Tag Manager -->
<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
})(window,document,'script','dataLayer','GTM-P4G65WJ');</script>
<!-- End Google Tag Manager -->
<script type="text/javascript" defer="defer" src="https://extend.vimeocdn.com/ga/64189815.js"></script>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>{% block title %}Talents Tube : Le 1er job board 100% vidéo{% endblock %}</title>
<link rel="icon" type="image/x-icon" href="{{ asset('favicon.ico') }}"/>
<meta name="robots" content="noindex,nofollow">
<meta name="description" content="{% block description %}
Talents Tube est la première plateforme réservée aux offres d'emploi et aux CV vidéos. Découvrez un nouvelle méthode de recrutement !
{% endblock %}">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
{% block ogtc %}{% endblock %}
{# Canonical #}
<link rel="canonical"
href="{% block urlCanonical %}{{ url(app.request.attributes.get('_route'), app.request.attributes.get('_route_params')) }}"{% endblock %}>
{# CSS #}
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
<link href="https://fonts.googleapis.com/css?family=Raleway:100,100i,200,200i,300,300i,400,400i,500,500i,600,600i,700,700i,800,800i,900,900i|Varela+Round" rel="stylesheet">
<link rel="stylesheet" href="{{ asset('css/styles.css') }}">
{% block stylesheets %}
{% endblock %}
</head>
<body id="dashboard">
<!-- Google Tag Manager (noscript) -->
<noscript>
<iframe src="https://www.googletagmanager.com/ns.html?id=GTM-P4G65WJ"
height="0" width="0" style="display:none;visibility:hidden">
</iframe>
</noscript>
<!-- End Google Tag Manager (noscript) -->
{#{% include 'default/alert.html.twig' %}#}
{% include 'default/user_switch.html.twig' %}
{% include 'default/headertemporaire.html.twig' %}
{% block content %}
{% endblock %}
{% block javascripts %}
{% javascripts
'@vendors'
'@global'
output='assetic/main.base.dash.js' filter='?uglifyjs2' %}
<script src="{{ asset_url }}"></script>
<script src="https://maps.googleapis.com/maps/api/js?key=AIzaSyDYV8IJGtIoWLfXJQQvIuDQ88n2aEuRgpg&libraries=places"></script>
{% endjavascripts %}
{% endblock %}
</body>
</html>
@@ -1,6 +1,15 @@
<!DOCTYPE html>
<html lang="fr">
<head>
<!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-98246968-7"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'UA-98246968-7');
</script>
<!-- Title -->
<title>{% block title %}{% endblock %}</title>
@@ -25,7 +34,7 @@
<!-- CSS Space Template -->
<link rel="stylesheet" href="{{ asset('v2/css/theme.css') }}">
<script type="text/javascript"> window.$crisp=[];window.CRISP_WEBSITE_ID="78ec5756-1cd5-4f3f-b0db-cb408c8171da";(function(){ d=document;s=d.createElement("script"); s.src="https://client.crisp.chat/l.js"; s.async=1;d.getElementsByTagName("head")[0].appendChild(s);})(); </script>
<script type="text/javascript"> window.$crisp=[];window.CRISP_WEBSITE_ID="08e9d301-ba14-4d69-8b1a-53685114c5af";(function(){ d=document;s=d.createElement("script"); s.src="https://client.crisp.chat/l.js"; s.async=1;d.getElementsByTagName("head")[0].appendChild(s);})(); </script>
</head>
<body>
<!-- Google Tag Manager (noscript) -->
@@ -36,7 +45,9 @@
<!-- End Google Tag Manager (noscript) -->
{#{% include 'default/alert.html.twig' %}#}
{# {% include 'defaultv2/user_switch.html.twig' %}#}
{% block menu %}
{% include 'defaultv2/header.html.twig' %}
{% endblock %}
{#{% include 'defaultv2/props_settings.html.twig' %} #}
{% block content %}
{% endblock %}
@@ -45,5 +56,6 @@
{% endblock %}
{# {% include 'defaultv2/footer.html.twig' %} #}
{{ include('FairlaneCookieConsentBundle::cookie-info.html.twig') }}
</body>
</html>
@@ -28,9 +28,85 @@
'tab' : 2
} %}
{% endif %} #}
<!-- Modal 1 -->
<div class="modal fade bd-example-modal-lg" id="partageModal" tabindex="-1" role="dialog"
aria-labelledby="partageModalLabel" aria-hidden="false">
<div class="modal-dialog modal-lg" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="partageModalLabel">Vous souhaitez partager les candidatures sélectionnées
dans lespace visiteurs ?</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>
<p>Pour transmettre les informations aux personnes de votre choix, nous vous invitons à copier-coller le
texte présent dans lencadré ci-dessous dans votre messagerie mail.</p>
<label class="h6 small d-block text-uppercase" for="exampleFormControlTextarea1">texte a copier</label>
<textarea class="form-control" id="codeShare" rows="11">Bonjour,
Dans le cadre du recrutement pour le poste de {{ ad.title }}, nous avons reçu plusieurs candidatures en vidéo.
Parmi ces différentes candidatures, nous souhaitons vous partager notre sélection.
Pour visionner les candidatures vidéo, cliquez sur le lien ci-dessous, puis saisissez le mot de passe indiqué.
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.
</p>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">Fermer</button>
</div>
</div>
</div>
</div>
<!-- Modal 2 -->
<div class="modal fade bd-example-modal-lg" id="decocheModal" tabindex="-1" role="dialog"
aria-labelledby="decocheModalLabel" aria-hidden="false">
<div class="modal-dialog modal-lg" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="decocheModalLabel">Cette candidature est actuellement partagée</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>
<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>
</div>
</div>
</div>
</div>
{#
<a href="#" data-toggle="tooltip" title="Some tooltip text!">Hover over me</a>
<!-- Generated markup by the plugin -->
<div class="tooltip bs-tooltip-top" role="tooltip">
<div class="arrow"></div>
<div class="tooltip-inner">
Some tooltip text!
</div>
</div> #}
<div class="row bg-bordered p-20">
<!-- START CONTAINER FLUID -->
<div class=" container-fluid container-fixed-lg bg-white">
@@ -38,6 +114,21 @@
<div class="card card-transparent">
<div class="card-header ">
<div class="card-title">Candidatures de l'offre {{ ad.title }}
<br /><br />
<button type="button" class="btn btn-primary" disabled data-toggle="modal"
data-target="#partageModal" id="partageCandidats">
<a href="#" data-toggle="tooltip"
title="Cochez une ou plusieurs candidatures avant de pouvoir les partager.">Partager les
candidatures</a>
</button>
<div class="tooltip bs-tooltip-top" role="tooltip">
<div class="arrow"></div>
<div class="tooltip-inner">
</div>
</div>
</div>
</div>
<div class="card-body">
@@ -48,7 +139,7 @@
<!-- NOTE * : Inline Style Width For Table Cell is Required as it may differ from user to user
Comman Practice Followed
-->
<th></th>
<th>{{ 'profile.talent.lastname'|trans }} {{ 'profile.talent.firstname'|trans }}</th>
<th>{{ 'global.datereception.label'|trans }}</th>
<th>{{ 'ad.company.list.status'|trans }}</th>
@@ -59,33 +150,41 @@
{% for answer in answers %}
<tr>
<td >
<a href="{{ path('company_answer_show',{'id':answer.id }) }}">{{ answer.user.lastname }}
{{ answer.user.firstname }}</a>
<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 >
<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>
{% if answer.firstMessage %}
<td>{{ answer.firstMessage.status|trans }}</td>
{% else %}
{% if answer.isViewed %}
{% if answer.isViewed.status == "DRAFT" %}
<td>{{ 'VIEWED'|trans }}</td>
{% endif %}
{% else %}
<td>{{ 'NEW'|trans }}</td>
{% endif %}
{% if answer.isViewed %}
{% if answer.isViewed.status == "DRAFT" %}
<td>{{ 'VIEWED'|trans }}</td>
{% endif %}
{% else %}
<td>{{ 'NEW'|trans }}</td>
{% endif %}
{% endif %}
<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 }}">
<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 %}
@@ -95,11 +194,13 @@
</a>
{% endfor %}
</td>
</tr>
{% endfor %}
{% if answers|length == 0 %}
<tr><th colspan="4" class="text-center">Aucune candidature pour le moment</th></tr>
<tr>
<th colspan="4" class="text-center">Aucune candidature pour le moment</th>
</tr>
{% endif %}
@@ -116,4 +217,95 @@
<div id="note-modal"></div>
{% endblock %}
{% block javascriptsEnd %}
<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.
allCheckboxes.each(function () {
var isChecked = $(this).prop('checked');
if (isChecked == true) {
auMoinUneCheckboxCoche = true
}
});
if (auMoinUneCheckboxCoche == true) {
console.log("au moins un checkbox est coché");
$("#partageCandidats").attr("disabled", false);
} else {
console.log("aucuncheckbox n'est coché");
$("#partageCandidats").attr("disabled", true);
}
}
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);
verifierIsChecked(checkboxId);
}
function verifierIsChecked(id) {
var auMoinUneCheckboxCoche = false;
parcourirAllCheckbox();
if($("#answer_" + id).prop('checked')==false){
console.log("cette checkbox était cochée avant");
$('#decocheModal').modal('show');
$("#caseRecocher").val(id);
}
//recuperer la valeur de la case coché
// Appel Ajax pour modifier l'answer qui a l'id :id
// Si la case est decocher mettre le champ is_checked à false
// Sinon mettre à true
$.ajax({
//L'URL de la requête
url: "/anwser/share/" + id,
//url: '{{ path("anwser_share", {"id":'+id+'}) }}',
//La méthode d'envoi (type de requête)
method: "GET",
data: 'isShare=' + $("#answer_" + id).prop('checked'),
//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) {
let data = JSON.stringify(response);
//$("div#res").append(data);
console.log(data);
const obj = JSON.parse(data);
console.log(obj.code);
var texteMail = $("#codeShare").val();
$("#codeShare").val(texteMail.replace('######', obj.code));
})
//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 () {
parcourirAllCheckbox();
console.log("ready");
});
</script>
{% endblock %}
@@ -0,0 +1,229 @@
<!DOCTYPE html>
<html lang="fr">
<head>
<!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-98246968-7"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'UA-98246968-7');
</script>
<!-- Title -->
<title>{% block title %}{% endblock %}</title>
<!-- Required Meta Tags Always Come First -->
<meta charset="utf-8">
<meta name="robots" content="noindex,nofollow">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
{% block meta %}
{% endblock %}
<!-- Google Fonts -->
<link href="//fonts.googleapis.com/css?family=Roboto:300,400,500,700" rel="stylesheet">
<!-- CSS Implementing Plugins -->
<link rel="stylesheet" href="{{ asset('v2/vendor/font-awesome/css/all.min.css') }}">
<link rel="stylesheet" href="{{ asset('v2/vendor/hs-megamenu/src/hs.megamenu.css') }}">
<link rel="stylesheet" href="{{ asset('v2/vendor/malihu-custom-scrollbar-plugin/jquery.mCustomScrollbar.css') }}">
<link rel="stylesheet" href="{{ asset('v2/vendor/custombox/dist/custombox.min.css') }}">
<link rel="stylesheet" href="{{ asset('v2/vendor/animate.css/animate.min.css') }}">
<link rel="stylesheet" href="{{ asset('v2/vendor/slick-carousel/slick/slick.css') }}">
<link rel="stylesheet" href="{{ asset('v2/vendor/cubeportfolio/css/cubeportfolio.min.css') }}">
<link rel="stylesheet" href="{{ asset('v2/vendor/fancybox/jquery.fancybox.css') }}">
<!-- CSS Space Template -->
<link rel="stylesheet" href="{{ asset('v2/css/theme.css') }}">
<script type="text/javascript"> window.$crisp=[];window.CRISP_WEBSITE_ID="08e9d301-ba14-4d69-8b1a-53685114c5af";(function(){ d=document;s=d.createElement("script"); s.src="https://client.crisp.chat/l.js"; s.async=1;d.getElementsByTagName("head")[0].appendChild(s);})(); </script>
</head>
<body>
{% block content %}
<main id="content">
<!-- Hero Section -->
<div class="gradient-half-primary-v1">
<div class="bg-img-hero" style="background-image: url('http://localhost/v2/img/partage/candidature-offre-emploi-video.jpg');">
<div class="container space-2 space-2-top--lg space-3-bottom--lg">
<div class=" text-center mx-auto">
<!-- Title -->
<div class="mb-9">
<h3 class="display-4 font-size-36--md-down text-white">Découvrez en vidéo les candidatures sélectionnées pour le poste de <br/><b>{{titreAnnonce}}</b></h3>
</div>
<!-- End Title -->
</div>
</div>
</div>
</div>
<!-- End Hero Section -->
<!-- Cubeportfolio -->
<div class="container u-cubeportfolio space-2 space-3--lg">
<!-- Filter -->
{# <ul id="filterControls" class="list-inline cbp-l-filters-alignCenter mb-5">
<li class="list-inline-item cbp-filter-item cbp-filter-item-active u-cubeportfolio__item" data-filter="*">All</li>
<li class="list-inline-item cbp-filter-item u-cubeportfolio__item" data-filter=".branding">Branding</li>
<li class="list-inline-item cbp-filter-item u-cubeportfolio__item" data-filter=".abstract">Abstract</li>
<li class="list-inline-item cbp-filter-item u-cubeportfolio__item" data-filter=".graphic">Graphic</li>
<li class="list-inline-item cbp-filter-item u-cubeportfolio__item" data-filter=".illustration">Illustration</li>
</ul> #}
<!-- End Filter -->
{% if answers|length == 0 %}
<div class="text-center">
<h1>Aucune candidature pour le moment</h1>
</div>
{% endif %}
<!-- Content -->
<div class="cbp mb-9"
data-controls="#filterControls"
data-animation="quicksand"
data-caption-animation="zoom"
data-x-gap="30"
data-y-gap="30"
data-load-more-selector="#cubeLoadMore"
data-load-more-action="click"
data-load-items-amount="2"
data-media-queries='[
{"width": 1500, "cols": 3},
{"width": 1100, "cols": 3},
{"width": 800, "cols": 3},
{"width": 580, "cols": 2},
{"width": 300, "cols": 1}
]'>
{% for answer in answers %}
<!-- Item -->
<div class="cbp-item branding">
<div class="cbp-caption">
<iframe src="https://player.vimeo.com/video/{{ answer.video.cdnUrl|replace({ "/videos/": ""}) }}"
width="100%" height="100%" frameborder="0" webkitallowfullscreen mozallowfullscreen
allowfullscreen></iframe>
</div>
<div class="p-4 text-center">
<h2 class="h5 mb-0">{{ answer.user.firstname }} {{ answer.user.lastname|slice(0, 1)|capitalize }}.</h2>
{# <p class="small mb-0">by Tiberiu Neamu</p> #}
</div>
</div>
<!-- End Item -->
{% endfor %}
</div>
<!-- End Content -->
<!-- Load More Button -->
<div id="cubeLoadMore" class="text-center">
{# <a href="../../assets/ajax/portfolio-grid-1/load-more.html" class="cbp-l-loadMore-link btn btn-dark btn-wide" rel="nofollow">
<span class="cbp-l-loadMore-defaultText">Load More</span>
<span class="cbp-l-loadMore-loadingText">Loading...</span>
<span class="cbp-l-loadMore-noMoreLoading">No more works</span>
</a> #}
</div>
<!-- End Load More Button -->
</div>
<!-- End Cubeportfolio -->
</main>
{% endblock %}
{% block javascriptsEnd %}
<!-- JS Global Compulsory -->
<script src="{{ asset('v2/vendor/jquery/dist/jquery.min.js') }}"></script>
<script src="{{ asset('v2/vendor/jquery-migrate/dist/jquery-migrate.min.js') }}"></script>
<script src="{{ asset('v2/vendor/popper.js/dist/umd/popper.min.js') }}"></script>
<script src="{{ asset('v2/vendor/bootstrap/bootstrap.min.js') }}"></script>
<!-- JS Implementing Plugins -->
<script src="{{ asset('v2/vendor/hs-megamenu/src/hs.megamenu.js') }}"></script>
<script src="{{ asset('v2/vendor/jquery-validation/dist/jquery.validate.min.js') }}"></script>
<script src="{{ asset('v2/vendor/malihu-custom-scrollbar-plugin/jquery.mCustomScrollbar.concat.min.js') }}"></script>
<script src="{{ asset('v2/vendor/custombox/dist/custombox.min.js') }}"></script>
<script src="{{ asset('v2/vendor/custombox/dist/custombox.legacy.min.js') }}"></script>
<script src="{{ asset('v2/vendor/cubeportfolio/js/jquery.cubeportfolio.min.js') }}"></script>
<!-- JS Space -->
<script src="{{ asset('v2/js/hs.core.js') }}"></script>
<script src="{{ asset('v2/js/components/hs.header.js') }}"></script>
<script src="{{ asset('v2/js/components/hs.unfold.js') }}"></script>
<script src="{{ asset('v2/js/components/hs.validation.js') }}"></script>
<script src="{{ asset('v2/js/helpers/hs.focus-state.js') }}"></script>
<script src="{{ asset('v2/js/components/hs.malihu-scrollbar.js') }}"></script>
<script src="{{ asset('v2/js/components/hs.modal-window.js') }}"></script>
<script src="{{ asset('v2/js/components/hs.show-animation.js') }}"></script>
<script src="{{ asset('v2/js/components/hs.cubeportfolio.js') }}"></script>
<script src="{{ asset('v2/js/components/hs.go-to.js') }}"></script>
<!-- JS Plugins Init. -->
<script>
// initialization of google map
{# function initMap() {
$.HSCore.components.HSGMap.init('.js-g-map');
} #}
$(document).on('ready', function () {
// initialization of header
$.HSCore.components.HSHeader.init($('#header'));
// initialization of unfold component
$.HSCore.components.HSUnfold.init($('[data-unfold-target]'), {
afterOpen: function () {
if (!$('body').hasClass('IE11')) {
$(this).find('input[type="search"]').focus();
}
}
});
// initialization of form validation
$.HSCore.components.HSValidation.init('.js-validate', {
rules: {
confirmPassword: {
equalTo: '#password'
}
}
});
// initialization of forms
$.HSCore.helpers.HSFocusState.init();
// initialization of malihu scrollbar
$.HSCore.components.HSMalihuScrollBar.init($('.js-scrollbar'));
// initialization of autonomous popups
$.HSCore.components.HSModalWindow.init('[data-modal-target]', '.js-signup-modal', {
autonomous: true
});
// initialization of show animations
$.HSCore.components.HSShowAnimation.init('.js-animation-link');
// initialization of cubeportfolio
$.HSCore.components.HSCubeportfolio.init('.cbp');
// initialization of go to
$.HSCore.components.HSGoTo.init('.js-go-to');
});
</script>
{% endblock %}
</body>
</html>
@@ -0,0 +1,284 @@
<!DOCTYPE html>
<html lang="fr">
<head>
<!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-98246968-7"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag() {
dataLayer.push(arguments);
}
gtag('js', new Date());
gtag('config', 'UA-98246968-7');
</script>
<!-- Title -->
<title>{% block title %}{% endblock %}</title>
<!-- Required Meta Tags Always Come First -->
<meta charset="utf-8">
<meta name="robots" content="noindex,nofollow">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
{% block meta %}
{% endblock %}
<!-- Google Fonts -->
<link href="//fonts.googleapis.com/css?family=Roboto:300,400,500,700" rel="stylesheet">
<!-- CSS Implementing Plugins -->
<link rel="stylesheet" href="{{ asset('v2/vendor/font-awesome/css/all.min.css') }}">
<link rel="stylesheet" href="{{ asset('v2/vendor/hs-megamenu/src/hs.megamenu.css') }}">
<link rel="stylesheet" href="{{ asset('v2/vendor/malihu-custom-scrollbar-plugin/jquery.mCustomScrollbar.css') }}">
<link rel="stylesheet" href="{{ asset('v2/vendor/custombox/dist/custombox.min.css') }}">
<link rel="stylesheet" href="{{ asset('v2/vendor/animate.css/animate.min.css') }}">
<link rel="stylesheet" href="{{ asset('v2/vendor/slick-carousel/slick/slick.css') }}">
<link rel="stylesheet" href="{{ asset('v2/vendor/cubeportfolio/css/cubeportfolio.min.css') }}">
<link rel="stylesheet" href="{{ asset('v2/vendor/fancybox/jquery.fancybox.css') }}">
<link class="main-stylesheet" href="{{ asset('dashboard/css/style.css') }}" rel="stylesheet" type="text/css" />
<!-- CSS Space Template -->
<link rel="stylesheet" href="{{ asset('v2/css/theme.css') }}">
<script type="text/javascript">
window.$crisp = [];
window.CRISP_WEBSITE_ID = "08e9d301-ba14-4d69-8b1a-53685114c5af";
(function () {
d = document;
s = d.createElement("script");
s.src = "https://client.crisp.chat/l.js";
s.async = 1;
d.getElementsByTagName("head")[0].appendChild(s);
})();
</script>
</head>
<body>
{% block content %}
<!-- ========== HEADER ========== -->
<header id="header" class="u-header u-header--abs-top">
<div class="u-header__section bg-transparent border-0">
<div id="logoAndNav" class="container-fluid">
<!-- Nav -->
<nav class="navbar navbar-expand justify-content-between u-header__navbar py-3">
<!-- Logo -->
<div class="col-4 col-sm-6">
<a class="navbar-brand u-header__navbar-brand" href="../home/index.html" aria-label="Space">
<img class="u-header__navbar-brand-default" src={{ asset('/v2/svg/logos/talents-tube-logo.svg') }} alt="Talents Tube">
<img class="u-header__navbar-brand-mobile" src={{ asset('/v2/svg/logos/talents-tube-logo.svg') }} alt="Talents Tube">
</a>
</div>
<!-- End Logo -->
<!-- End Button -->
</nav>
<!-- End Nav -->
</div>
</div>
</header>
<!-- ========== END HEADER ========== -->
<main id="content">
<!-- Hero Section -->
<div class="bg-img-hero"
style="background-image: url(/v2/img/partage/partage-candidature-video.jpg);">
<div class="d-sm-flex align-items-sm-center height-100vh--sm">
<div class="container text-center space-3-top space-2-bottom space-3-bottom--lg">
<div class="w-lg-60 text-center mx-lg-auto fondBlanc">
<form class="js-validate form-signin p-5">
<!-- Logo -->
<div class="text-center">
</div>
<!-- End Logo -->
<!-- Title -->
<div class="text-center">
<h1 class="h3 mb-0">Voir les candidatures</h1>
<p>Pour visionner la ou les candidatures, veuillez saisir le mot de passe qui vous a été communiqué.
</p>
</div>
<!-- End Title -->
<!-- Input -->
<div class="js-form-message mb-3">
<div class="js-focus-state input-group form">
<div class="input-group-prepend form__prepend">
<span class="input-group-text form__text">
<i class="fa fa-lock form__text-inner"></i>
</span>
</div>
<input type="hidden" id="adId" name="adId" value="{{adId}}">
<input type="password" class="form-control form__input" id="mdp" name="mdp" required placeholder="Saisissez votre mot de passe"
aria-label="mdp" data-msg="Saisissez votre mot de passe" data-error-class="u-has-error"
data-success-class="u-has-success">
</div>
<div>
{% if error %}
<br/><span class="text-danger">Le mot de passe est incorrect</span>
{% endif %}
</div>
</div>
<!-- End Input -->
<!-- Input -->
<div class="js-form-message mb-3">
</div>
<!-- End Input -->
<div class="row mb-3">
</div>
<div class="mb-3">
<a href="#" onClick="verifierMdp()">
<button type="button" class="btn btn-success">Valider</button>
</a>
</div>
</form>
</div>
<!-- End Countdown -->
</div>
</div>
</div>
</div>
<!-- End Hero Section -->
</main>
{% endblock %}
{% block javascriptsEnd %}
<!-- JS Global Compulsory -->
<script src="{{ asset('v2/vendor/jquery/dist/jquery.min.js') }}"></script>
<script src="{{ asset('v2/vendor/jquery-migrate/dist/jquery-migrate.min.js') }}"></script>
<script src="{{ asset('v2/vendor/popper.js/dist/umd/popper.min.js') }}"></script>
<script src="{{ asset('v2/vendor/bootstrap/bootstrap.min.js') }}"></script>
<!-- JS Implementing Plugins -->
<script src="{{ asset('v2/vendor/hs-megamenu/src/hs.megamenu.js') }}"></script>
<script src="{{ asset('v2/vendor/jquery-validation/dist/jquery.validate.min.js') }}"></script>
<script src="{{ asset('v2/vendor/malihu-custom-scrollbar-plugin/jquery.mCustomScrollbar.concat.min.js') }}"></script>
<script src="{{ asset('v2/vendor/custombox/dist/custombox.min.js') }}"></script>
<script src="{{ asset('v2/vendor/custombox/dist/custombox.legacy.min.js') }}"></script>
<script src="{{ asset('v2/vendor/cubeportfolio/js/jquery.cubeportfolio.min.js') }}"></script>
<!-- JS Space -->
<script src="{{ asset('v2/js/hs.core.js') }}"></script>
<script src="{{ asset('v2/js/components/hs.header.js') }}"></script>
<script src="{{ asset('v2/js/components/hs.unfold.js') }}"></script>
<script src="{{ asset('v2/js/components/hs.validation.js') }}"></script>
<script src="{{ asset('v2/js/helpers/hs.focus-state.js') }}"></script>
<script src="{{ asset('v2/js/components/hs.malihu-scrollbar.js') }}"></script>
<script src="{{ asset('v2/js/components/hs.modal-window.js') }}"></script>
<script src="{{ asset('v2/js/components/hs.show-animation.js') }}"></script>
<script src="{{ asset('v2/js/components/hs.cubeportfolio.js') }}"></script>
<script src="{{ asset('v2/js/components/hs.go-to.js') }}"></script>
<!-- JS Plugins Init. -->
<script>
// initialization of google map
{
function initMap() {
$.HSCore.components.HSGMap.init('.js-g-map');
}
}
$(document).on('ready', function () {
// initialization of header
$.HSCore.components.HSHeader.init($('#header'));
// initialization of unfold component
$.HSCore.components.HSUnfold.init($('[data-unfold-target]'), {
afterOpen: function () {
if (!$('body').hasClass('IE11')) {
$(this).find('input[type="search"]').focus();
}
}
});
// initialization of form validation
$.HSCore.components.HSValidation.init('.js-validate', {
rules: {
confirmPassword: {
equalTo: '#password'
}
}
});
// initialization of forms
$.HSCore.helpers.HSFocusState.init();
// initialization of malihu scrollbar
$.HSCore.components.HSMalihuScrollBar.init($('.js-scrollbar'));
// initialization of autonomous popups
$.HSCore.components.HSModalWindow.init('[data-modal-target]', '.js-signup-modal', {
autonomous: true
});
// initialization of show animations
$.HSCore.components.HSShowAnimation.init('.js-animation-link');
// initialization of cubeportfolio
$.HSCore.components.HSCubeportfolio.init('.cbp');
// initialization of go to
$.HSCore.components.HSGoTo.init('.js-go-to');
});
</script>
<script type="text/javascript">
function verifierMdp(){
$.ajax({
//L'URL de la requête
url: '{{ path("connectionpartage") }}',
//url: 'http://localhost/app_dev.php/connectionpartage',
//La méthode d'envoi (type de requête)
method: "GET",
data: 'adId=' + $("#adId").val()+"&mdp="+$("#mdp").val(),
//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) {
//let data = JSON.stringify(response)JSON.stringify(response);
//$("div#res").append(data);=
var retour =JSON.stringify(response);
console.log(response);
var url = '{{ path("anwser_share_show", {"id": "id"}) }}';
url = url.replace("id", $("#adId").val());
window.location.replace(url);
})
//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) {
//alert(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");
});
}
</script>
{% endblock %}
</body>
</html>
@@ -1,6 +1,27 @@
{# {% extends 'company/base_dashboard_company.html.twig' %} #}
{% extends 'admin/base_dashboard.html.twig' %}
{% block javascriptSupl %}
<style>
.saisie thead tr th,
.saisie tbody tr td,
.saisie tbody tr td *:not(.dropdown-default) .saisie tr td {
overflow: visible;
}
.modalCompetences {
height: 600px;
}
</style>
<script src="https://cdnjs.cloudflare.com/ajax/libs/corejs-typeahead/1.3.1/bloodhound.min.js" type="text/javascript">
</script>
<script src="{{ asset('dashboard/plugins/typeahead/typeahead.bundle.js') }}" type="text/javascript"></script>
{% endblock %}
{% block dashContent %}
<!-- START JUMBOTRON -->
<div class="jumbotron" data-pages="parallax">
@@ -10,23 +31,87 @@
<ol class="breadcrumb">
<li class="breadcrumb-item"><a href="/">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 1 -->
<div class="modal fade bd-example-modal-lg" id="competencesModal" tabindex="-1" role="dialog"
aria-labelledby="competencesModalLabel" aria-hidden="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 remplacer le métier <span class="metierAncienPopup">{aucun}</span> par <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>
<p>
Les compétences que vous aviez précédemment sélectionnées en lien avec le métier <span class="metierAncienPopup">{aucun}</span> seront remplacées par de nouvelles compétences, correspondant au métier <span class="metierPopup">.
</p>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">Annuler</button>
<button type="button" class="btn btn-secondary" data-dismiss="modal"
onclick="chargerCompetences();">Remplacer</button>
</div>
</div>
</div>
</div>
<!-- Modal 2 -->
<div class="modal fade modalCompetences" id="ajoutCompetencesModal" tabindex="-1" role="dialog"
aria-labelledby="ajoutCompetencesModalLabel" aria-hidden="false">
<div class="modal-dialog modal-lg" role="document">
<div class="modal-content">
<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">
<div class="scrollable">
<div class="demo-card-scrollable">
<div id="competencesAdPopup"></div>
</div>
</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>
</div>
</div>
</div>
</div>
<!-- FIN MODALS-->
<!-- START CONTAINER FLUID -->
<div class=" container-fluid container-fixed-lg">
<div id="rootwizard" class="m-t-50">
{% if type is defined and type == 'update' %}
{% include 'company/ad_stepsV2.html.twig' with {'tab':1, 'type':'update'} %}
{% include 'company/ad_stepsV2.html.twig' with {'tab':1, 'type':'update'} %}
{% else %}
{% include 'company/ad_stepsV2.html.twig' with {'tab':1} %}
{% include 'company/ad_stepsV2.html.twig' with {'tab':1} %}
{% endif %}
<div class="tab-content">
{{ form_start(form, {'attr': {'class': ''}}) }}
@@ -35,85 +120,186 @@
<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</h2>
<p>Discover goods you'll love from brands that inspire. The easiest way to open your own
online store. Discover amazing stuff or open your own store for free!</p>
<p class="small hint-text">Below is a sample page for your cart , Created using pages design
UI Elementes</p>
<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>
</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 ">
{% if form_errors(form) %}
<span class="red-text text-darken-2">{{ form_errors(form) }}</span>
{% endif %}
</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.reference) }}
{{ form_row(form.title) }}
</td>
</tr>
<tr>
<td class="col-lg-12 col-md-12 col-sm-12 ">
{{ form_row(form.title) }}
</td>
<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.beneficiaire) }}
</td>
{{ 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.location_gmap) }}
{{ form_row(form.location) }}
</td>
{{ form_row(form.description) }}
</td>
</tr>
<tr>
<td class="col-lg-12 col-md-12 col-sm-12">
{{ form_row(form.description) }}
</td>
{{ 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.contract_type) }}
</td>
{{ 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>
<table>
<tr class='bg-contrast-lower'>
<td class="col-lg-12 col-md-12 col-sm-12 bg-contrast-lower">
<h3 class="no-margin p-b-5">Compétences recherchées</h3>
<br />
Recherchez le métier de rattachement le plus proche de lintitulé de poste
que vous avez saisi.
</button>
</td>
</tr>
<tr class='bg-contrast-lower'>
<td class="col-lg-12 col-md-12 col-sm-12 bg-contrast-lower">
<table class='saisie'>
<tr class='saisie'>
<td class='saisie'>
<label for="saisie" class="required">Métier de
rattachement</label><br />
<input class="typeahead form-control sample-typehead tt-input"
id="saisie" type="text" placeholder="Saisir un métier"
autocomplete="off" spellcheck="false" dir="auto"
style="position: relative; vertical-align: top; background-color: transparent;">
<br />
<input type="hidden" name="id_appellation_temporaire"
id="id_appellation_temporaire">
<input type="hidden" name="metier_temporaire"
id="metier_temporaire">
<input type="hidden" name="competences_origine"
id="competences_origine">
<br />Le métier de rattachement sert uniquement à vous proposer des
compétences
et ne sera pas affiché sur votre offre demploi.
</td>
</tr>
</table>
</td>
</tr>
</table>
<table class="table table-condensed ">
<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 class="text-center" id="competencesButtonAd">
<button type="button" class="btn btn-primary" data-toggle="modal"
data-target="#ajoutCompetencesModal" id="ajoutCompetences">
Ajouter des compétences
</button>
<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>
<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.status) }}
</td>
{{ form_row(form.publicTag) }}
{{ form_row(form.competences) }}
</td>
</tr>
<tr>
<td class="col-lg-12 col-md-12 col-sm-12">
{{ form_row(form.publicTag) }}
</td>
&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">
<span>{% if type is defined and type == 'update' %}Sauvegarde et étape suivante {% else %}Je crée mon annonce{% endif %}</span>
<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>
{# <button class="btn btn-default" type="submit">Je crée mon annonce!</button> #}
</button>
<br />&nbsp;
{# <button class="btn btn-default" type="submit">Je crée mon annonce!</button> #}
</td>
</tr>
</table>
</div>
</div>
</div>
@@ -123,65 +309,18 @@
<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="tab-pane slide-left padding-20 sm-no-padding disabled" id="tab3">
<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">
<h2>We Secured Your Line</h2>
<p>Below is a sample page for your cart , Created using pages design UI Elementes</p>
<p class="small hint-text">Below is a sample page for your cart , Created using pages design
UI Elementes</p>
<table class="table table-condensed">
<tr>
<td class=" col-md-9">
<span class="m-l-10 font-montserrat fs-11 all-caps">Webarch UI Framework</span>
<span class="m-l-10 ">Dashboard UI Pack</span>
</td>
<td class=" col-md-3 text-right">
<span>Qty 1</span>
</td>
</tr>
<tr>
<td class=" col-md-9">
<span class="m-l-10 font-montserrat fs-11 all-caps">Pages UI Framework</span>
<span class="m-l-10 ">Next Gen UI Pack</span>
</td>
<td class=" col-md-3 text-right">
<span>Qty 1</span>
</td>
</tr>
<tr>
<td colspan="2" class=" col-md-3 text-right">
<h4 class="text-primary no-margin font-montserrat">$27</h4>
</td>
</tr>
</table>
<p class="small">Invoice are issued on the date of despatch. Payment terms: Pre-orders:
within 10 days of invoice date with 4% discount, from the 11th to the 30th day net.
Re-orders: non-reduced stock items are payable net after 20 days. </p>
<p class="small">By pressing Pay Now You will Agree to the Payment <a href="#">Terms &amp;
Conditions</a></p>
</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">
@@ -224,10 +363,10 @@
</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>
@@ -236,4 +375,324 @@
</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_temps_type").val() == "PART_TIME") {
//$("#ligneNbHeure").show();
$("#ad_nombre_heure").prop("disabled", false);
} else {
//$("#ligneNbHeure").hide().prop('required',false) ;;
$("#ad_nombre_heure").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);
} else {
//$("#ligneDureeContrat").hide().prop('required',false) ;
$("#ad_duree_contrat").prop("disabled", true);
}
}
$("#ad_temps_type").change(function () {
afficherTempsType();
});
$("#ad_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
function genererJson() {
var competences = "";
//competences = [];
var nbCompetencesSelect = 0;
//on parcourt toutes les checkbox cochées
$(":checkbox:checked").map(function () {
//on recuperer l'input car l'id du champ est formaté comme suit competence_ ou competencepopup_
var input = this.id.split('_');
// on ne ored=nd que les input de la page pricnipale (pas ceux de la popup)
if (input[0] == "competence") {
var retour = this.value.split('_');
//var competence = [retour[0], parseInt(retour[1])];
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(",", " ");
//On limite a 10 compétences, au dela, on les enregistre pas dans le champ ad_competences
if(nbCompetencesSelect<11){
competences += chaine + ",";
nbCompetencesSelect++;
}
$("#nbCompetencesText").html(nbCompetencesSelect+" compétences sélectionnées");
$("#ajouterCompetenceButtonMdal").html("Ajouter (+"+nbCompetencesSelect+")");
$("#nbCompetences").val(nbCompetencesSelect);
//return competence;
}
}).get();
// on renseigne le champ ad_competences
$("#ad_competences").val(competences);
//Gestion des erreurs si aucune compétence
if(nbCompetencesSelect==0){
$("#nbCompetencesText").html("");
$("#competencesAdMessage").html(
"Vous devez sélectionner au minimum une compétence "
);
$("#ajouterCompetenceButtonMdal").show();
$("#saveAdButton").prop("disabled", true);
}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. "
);
$("#competencesAdMessagePopup").html(
"Vous avez atteint le nombre maximum de compétences. "
);
if(nbCompetencesSelect>10){
$("#ajouterCompetenceButtonMdal").hide();
}
}else{
//cas standards, on reinitialise les champs a vide
$("#competencesAdMessage").html(
" "
);
$("#saveAdButton").prop("disabled", false);
$("#ajouterCompetenceButtonMdal").show();
}
console.log("valeur saiisie");
if($("#saisie").val() =="" || !$("#saisie").val() ){
$("#competencesAdMessage").html(
"Veuillez choisir un métier de rattachement pour votre annonce. "
);
}
}
$(document).ready(function () {
afficherTempsType();
afficherDureeContrat();
$("#saveAdButton").prop("disabled", true);
//ad_appellationId
//ad_appellationLibelle
//ad_competences
// renseignement des champs temporaires (champ caché)
$("#id_appellation_temporaire").val($("#ad_appellationId").val());
$("#metier_temporaire").val($("#ad_appellationLibelle").val());
// renseignement du champ visible (init du métier)
$("#saisie").val($("#ad_appellationLibelle").val());
$("#competences_origine").val($("#ad_competences").val());
if ($("#ad_competences").val() !='null' ){
$("#saveAdButton").prop("disabled", false);
}
//charger les compétences en fonction du métier d'origine
chargerCompetences("init");
//cocher les cases par rapport aux compétences d'origine
});
</script>
<script>
$(document)
.ready(function () {
// Construction du champ typeahead d'auto compléetion de métier
$("#competencesButtonAd").hide();
var metiers = new Bloodhound({
datumTokenizer: Bloodhound.tokenizers.whitespace,
queryTokenizer: Bloodhound.tokenizers.whitespace,
remote: {
// Ajax qui appelle getAppellionsMetier (API TT qui appelle APi pole emploi)
url: '/app_dev.php/api/getAppelationsLibelle',
wildcar: '%QUERY',
filter: function (metiers) {
return $.map(metiers, function (metier) {
//console.log(metier);
return {
metier_id: metier.code,
metier_libelle: metier.libelle
}
})
},
prepare: function (query, settings) {
//ing%20agro
//query = query.replace(" ", "%20");
settings.url += '?q=' + query;
return settings;
}
},
});
metiers.initialize();
// Initializing the typeahead
$('#saisie').typeahead({
hint: true,
highlight: true
}, {
name: 'metiers',
source: metiers.ttAdapter(),
display: 'metier_libelle',
limit: 10,
templates: {
suggestion: function (data) {
//comment sont formaté les suggestion de l'auto completion
$(".tt-dataset-metiers").show();
var chaine = data.metier_libelle.replace("'", "\\'");
return '<div><a href="#" onclick="chargerDonneesTemp(' + data.metier_id + ',\'' +
chaine +
'\')" data-toggle="modal" data-target="#competencesModal" id="competences">' + data.metier_libelle +
'</a></div>'
},
footer: function (query) {
//return '<div class="text-center">Plus de résultats :' + query.query + '</div>';
},
empty: function (context) {
// cas ou l'on ne trpouve rien
$("#competencesAdMessage").html(
" Aucun résultat ne correspond à votre recherche. <br/>Saisissez un autre mot clé pour trouver votre métier de rattachement."
);
return '<div class="text-center">Aucun résultat</div>';
}
}
});
});
//methode qui charge métier temporaire (en attente validation de la popup)
//En effet, on demande a l'utilsiateur s'il est sur. C'est pour ca qu'on a a ces champs temporaires
function chargerDonneesTemp(codeRome, libelleMetier) {
$("#id_appellation_temporaire").val(codeRome);
console.log(codeRome);
$("#metier_temporaire").val(libelleMetier);
$(".metierPopup").text(libelleMetier);
console.log(libelleMetier);
}
//Charger les compétences, code Rome, d'un métier
//appel de l'api TT getDetailAppelaltion qui appelle une autre Api Pole emploi
function chargerCompetences(type) {
$.ajax({
//L'URL de la requête
url: "/app_dev.php/api/getDetailAppelation",
//url: '{{ path("anwser_share", {"id":'+id+'}) }}',
//La méthode d'envoi (type de requête)
method: "GET",
data: 'q=' + $("#id_appellation_temporaire").val(),
//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) {
let data = JSON.stringify(response);
const obj = JSON.parse(data);
//chargement du code ROme
$("#ad_codeRome").val(obj.metier.code);
//Passage du l'id appelation et de son libelle temporaire
$("#ad_appellationId").val($("#id_appellation_temporaire").val());
$("#ad_appellationLibelle").val($("#metier_temporaire").val());
$('.metierAncienPopup').text($("#metier_temporaire").val());
//Init des champs de compétences
$("#competencesAd").text("");
$("#competencesAdPopup").text("");
$("#competencesAdMessage").html("");
//parcours de l'objet json renvoyé par l'api
obj.competencesDeBase.forEach(function (object) {
// Pour chaque compétences, on crée
//1 checkbox dans la page principal. iL est affiché par défaut si c'est une compétence clé. les compéetences clés sonr cochés
// 1 checkbox dans la popup d'ajout de competences. Par defaut, seul les compétences clé sont cochés
var hidden = "";
var 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>");
$("#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();
}
});
$("#competencesButtonAd").show();
//lors de l'init, on affiche et coche les compétences récupérer en base. On désaffiche et decoche celle qui n'y sont plus
// Pareil pour la popup sauf qu'elles sont toutes affichées
if (type == "init") {
const obj = JSON.parse($("#ad_competences").val());
console.log(obj);
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();
}
}
}
//on génere le json qui va remplir le champ ad_competences
genererJson();
})
//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) {
$("#competencesAd").text("");
$("#competencesAdPopup").text("");
if ($("#saisie").val() != "") {
// si il y a un pb avec l'api pole emploi, on affiche ce message
$("#competencesAdMessage").html(
"Une erreur est survenue dans la recherche du métier de rattachement. <a href='#' onclick='chargerCompetences();'><i class='fa fa-refresh fa-spin fa-fw'></i>Cliquez ici pour relancer la recherche</a> "
);
}
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 qui permet de synchroniser les compétences de la page et celles de la popup
// ca va dans les deux sens.
function genererCompetences(cb) {
console.log("Clicked, new value = " + cb.checked);
console.log("Clicked, target = " + cb.id);
var id = cb.id.split('_');
id = id[1];
if($("#nbCompetences").val()<10){
$("#competence_" + id).prop("checked", cb.checked);
$("#competencepopup_" + id).prop("checked", cb.checked);
if (cb.checked) {
console.log("reaffichage div #competence_ad_" + id);
$("#competence_ad_" + id).show();
} else {
console.log("hidden de div #competence_ad_" + id);
$("#competence_ad_" + id).hide();
}
}else{
$("#competence_" + id).prop("checked", false);
$("#competencepopup_" + id).prop("checked", false);
}
// on génere le json a chaque fois
genererJson();
}
</script>
{% endblock %}
@@ -1,6 +1,23 @@
{# {% extends 'company/base_dashboard_company.html.twig' %} #}
{% extends 'admin/base_dashboard.html.twig' %}
{% block javascriptSupl %}
<style>
.saisie thead tr th,
.saisie tbody tr td,
.saisie tbody tr td *:not(.dropdown-default) .saisie tr td {
overflow: visible;
}
.modalCompetences{
height:600px;
}
</style>
<script src="https://cdnjs.cloudflare.com/ajax/libs/corejs-typeahead/1.3.1/bloodhound.min.js" type="text/javascript">
</script>
<script src="{{ asset('dashboard/plugins/typeahead/typeahead.bundle.js') }}" type="text/javascript"></script>
{% endblock %}
{% block dashContent %}
<!-- START JUMBOTRON -->
<div class="jumbotron" data-pages="parallax">
@@ -18,6 +35,66 @@
</div>
</div>
<!-- END JUMBOTRON -->
<!-- MODALS-->
<!-- Modal 1 -->
<div class="modal fade bd-example-modal-lg" id="competencesModal" tabindex="-1" role="dialog"
aria-labelledby="competencesModalLabel" aria-hidden="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 remplacer le métier <span class="metierAncienPopup">{aucun}</span> par <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>
<p>
Les compétences que vous aviez précédemment sélectionnées en lien avec le métier <span class="metierAncienPopup">{aucun}</span> seront remplacées par de nouvelles compétences, correspondant au métier <span class="metierPopup">.
</p>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">Annuler</button>
<button type="button" class="btn btn-secondary" data-dismiss="modal"
onclick="chargerCompetences();">Remplacer</button>
</div>
</div>
</div>
</div>
<!-- Modal 2 -->
<div class="modal fade modalCompetences" id="ajoutCompetencesModal" tabindex="-1" role="dialog"
aria-labelledby="ajoutCompetencesModalLabel" aria-hidden="false">
<div class="modal-dialog modal-lg" role="document">
<div class="modal-content">
<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">
<div class="scrollable">
<div class="demo-card-scrollable">
<div id="competencesAdPopup"></div>
</div>
</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>
</div>
</div>
</div>
</div>
<!-- FIN MODALS-->
<!-- START CONTAINER FLUID -->
<div class=" container-fluid container-fixed-lg">
<div id="rootwizard" class="m-t-50">
@@ -29,31 +106,35 @@
<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</h2>
<p>Discover goods you'll love from brands that inspire. The easiest way to open your own
online store. Discover amazing stuff or open your own store for free!</p>
<p class="small hint-text">Below is a sample page for your cart , Created using pages design
UI Elementes</p>
<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>
</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">
<tr>
{% if form_errors(form) %}<tr>
<td class="col-lg-12 col-md-12 col-sm-12 ">
{% if form_errors(form) %}
<span class="red-text text-darken-2">{{ form_errors(form) }}</span>
{% endif %}
</td>
</tr>
{% endif %}
{% if form.reference is defined%}
<tr>
<td class="col-lg-12 col-md-12 col-sm-12 ">
{% if form.reference is defined%}
{{ form_row(form.reference) }}
{% endif %}
</td>
</tr>
{% endif %}
<tr>
<td class="col-lg-12 col-md-12 col-sm-12 ">
{% if form.title is defined%}
@@ -64,8 +145,12 @@
<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) }}
@@ -82,21 +167,112 @@
{{ 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.publicTag) }}
</td>
{{ 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>
<table>
<tr class='bg-contrast-lower'>
<td class="col-lg-12 col-md-12 col-sm-12 bg-contrast-lower">
<h3 class="no-margin p-b-5">Compétences recherchées</h3>
<br />
Recherchez le métier de rattachement le plus proche de lintitulé de poste
que vous avez saisi.
</button>
</td>
</tr>
<tr class='bg-contrast-lower'>
<td class="col-lg-12 col-md-12 col-sm-12 bg-contrast-lower">
<table class='saisie'>
<tr class='saisie'>
<td class='saisie'>
<label for="saisie" class="required">Métier de
rattachement</label><br />
<input class="typeahead form-control sample-typehead tt-input"
id="saisie" type="text" placeholder="Saisir un métier"
autocomplete="off" spellcheck="false" dir="auto"
style="position: relative; vertical-align: top; background-color: transparent;">
<br />
<input type="hidden" name="id_appellation_temporaire"
id="id_appellation_temporaire">
<input type="hidden" name="metier_temporaire"
id="metier_temporaire">
<input type="hidden" name="competences_origine"
id="competences_origine">
<br />Le métier de rattachement sert uniquement à vous proposer des
compétences
et ne sera pas affiché sur votre offre demploi.
</td>
</tr>
</table>
</td>
</tr>
</table>
<table class="table table-condensed ">
<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 un minimum une compétence</div><br />
<div class="text-center" id="competencesButtonAd">
<button type="button" class="btn btn-primary" data-toggle="modal"
data-target="#ajoutCompetencesModal" id="ajoutCompetences">
Ajouter des compétences
</button>
<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>
<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;
</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"
<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">
@@ -129,54 +305,7 @@
</div>
</div>
</div>
<div class="tab-pane slide-left padding-20 sm-no-padding disabled" id="tab3">
<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">
<h2>We Secured Your Line</h2>
<p>Below is a sample page for your cart , Created using pages design UI Elementes</p>
<p class="small hint-text">Below is a sample page for your cart , Created using pages design
UI Elementes</p>
<table class="table table-condensed">
<tr>
<td class=" col-md-9">
<span class="m-l-10 font-montserrat fs-11 all-caps">Webarch UI Framework</span>
<span class="m-l-10 ">Dashboard UI Pack</span>
</td>
<td class=" col-md-3 text-right">
<span>Qty 1</span>
</td>
</tr>
<tr>
<td class=" col-md-9">
<span class="m-l-10 font-montserrat fs-11 all-caps">Pages UI Framework</span>
<span class="m-l-10 ">Next Gen UI Pack</span>
</td>
<td class=" col-md-3 text-right">
<span>Qty 1</span>
</td>
</tr>
<tr>
<td colspan="2" class=" col-md-3 text-right">
<h4 class="text-primary no-margin font-montserrat">$27</h4>
</td>
</tr>
</table>
<p class="small">Invoice are issued on the date of despatch. Payment terms: Pre-orders:
within 10 days of invoice date with 4% discount, from the 11th to the 30th day net.
Re-orders: non-reduced stock items are payable net after 20 days. </p>
<p class="small">By pressing Pay Now You will Agree to the Payment <a href="#">Terms &amp;
Conditions</a></p>
</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">
@@ -232,4 +361,318 @@
</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);
}
}
//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);
}
}
$( "#ad_soft_temps_type" ).change(function() {
afficherTempsType();
});
$( "#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
function genererJson() {
var competences = "";
//competences = [];
var nbCompetencesSelect = 0;
//on parcourt toutes les checkbox cochées
$(":checkbox:checked").map(function () {
//on recuperer l'input car l'id du champ est formaté comme suit competence_ ou competencepopup_
var input = this.id.split('_');
// on ne ored=nd que les input de la page pricnipale (pas ceux de la popup)
if (input[0] == "competence") {
var retour = this.value.split('_');
//var competence = [retour[0], parseInt(retour[1])];
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(",", " ");
//On limite a 10 compétences, au dela, on les enregistre pas dans le champ ad_competences
if(nbCompetencesSelect<11){
competences += chaine + ",";
nbCompetencesSelect++;
}
$("#nbCompetencesText").html(nbCompetencesSelect+" compétences sélectionnées");
$("#ajouterCompetenceButtonMdal").html("Ajouter (+"+nbCompetencesSelect+")");
$("#nbCompetences").val(nbCompetencesSelect);
//return competence;
}
}).get();
// on renseigne le champ ad_competences
$("#ad_soft_competences").val(competences);
//Gestion des erreurs si aucune compétence
if(nbCompetencesSelect==0){
$("#nbCompetencesText").html("");
$("#competencesAdMessage").html(
"Vous devez sélectionner au minimum une compétence. "
);
$("#ajouterCompetenceButtonMdal").show();
$("#saveAdButton").prop("disabled", true);
}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. "
);
$("#competencesAdMessagePopup").html(
"Vous avez atteint le nombre maximum de compétences. "
);
if(nbCompetencesSelect>10){
$("#ajouterCompetenceButtonMdal").hide();
}
}else{
//cas standards, on reinitialise les champs a vide
$("#saveAdButton").prop("disabled", false);
$("#competencesAdMessage").html(
" "
);
$("#ajouterCompetenceButtonMdal").show();
}
if($("#saisie").val() =="" || !$("#saisie").val() ){
$("#competencesAdMessage").html(
"Veuillez choisir un métier de rattachement pour votre annonce. "
);
}
}
$(document).ready(function () {
afficherTempsType();
afficherDureeContrat();
//ad_appellationId
//ad_appellationLibelle
//ad_competences
// renseignement des champs temporaires (champ caché)
$("#id_appellation_temporaire").val($("#ad_soft_appellationId").val());
$("#metier_temporaire").val($("#ad_soft_appellationLibelle").val());
// renseignement du champ visible (init du métier)
$("#saisie").val($("#ad_soft_appellationLibelle").val());
$("#competences_origine").val($("#ad_soft_competences").val());
//charger les compétences en fonction du métier d'origine
chargerCompetences("init");
//cocher les cases par rapport aux compétences d'origine
});
</script>
<script>
$(document)
.ready(function () {
// Construction du champ typeahead d'auto compléetion de métier
$("#competencesButtonAd").hide();
console.log("metiers!!");
var metiers = new Bloodhound({
datumTokenizer: Bloodhound.tokenizers.whitespace,
queryTokenizer: Bloodhound.tokenizers.whitespace,
remote: {
// Ajax qui appelle getAppellionsMetier (API TT qui appelle APi pole emploi)
url: '/app_dev.php/api/getAppelationsLibelle',
wildcar: '%QUERY',
filter: function (metiers) {
console.log("metiers2");
return $.map(metiers, function (metier) {
//console.log(metier);
return {
metier_id: metier.code,
metier_libelle: metier.libelle
}
})
},
prepare: function (query, settings) {
//ing%20agro
//query = query.replace(" ", "%20");
settings.url += '?q=' + query;
return settings;
}
},
});
metiers.initialize();
// Initializing the typeahead
$('#saisie').typeahead({
hint: true,
highlight: true
}, {
name: 'metiers',
source: metiers.ttAdapter(),
display: 'metier_libelle',
limit: 10,
templates: {
suggestion: function (data) {
//comment sont formaté les suggestion de l'auto completion
$(".tt-dataset-metiers").show();
var chaine = data.metier_libelle.replace("'", " ");
return '<div><a href="#" onclick="chargerDonneesTemp(' + data.metier_id + ',\'' +
chaine +
'\')" data-toggle="modal" data-target="#competencesModal" id="competences">' + data.metier_libelle +
'</a></div>'
},
footer: function (query) {
//return '<div class="text-center">Plus de résultats :' + query.query + '</div>';
},
empty: function (context) {
// cas ou l'on ne trpouve rien
$("#competencesAdMessage").html(
" Aucun résultat ne correspond à votre recherche. <br/>Saisissez un autre mot clé pour trouver votre métier de rattachement."
);
return '<div class="text-center">Aucun résultat</div>';
}
}
});
});
//methode qui charge métier temporaire (en attente validation de la popup)
//En effet, on demande a l'utilsiateur s'il est sur. C'est pour ca qu'on a a ces champs temporaires
function chargerDonneesTemp(codeRome, libelleMetier) {
$("#id_appellation_temporaire").val(codeRome);
console.log(codeRome);
$("#metier_temporaire").val(libelleMetier);
$(".metierPopup").text(libelleMetier);
console.log(libelleMetier);
}
function chargerCompetences(type) {
$.ajax({
//L'URL de la requête
url: "/app_dev.php/api/getDetailAppelation",
//url: '{{ path("anwser_share", {"id":'+id+'}) }}',
//La méthode d'envoi (type de requête)
method: "GET",
data: 'q=' + $("#id_appellation_temporaire").val(),
//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) {
let data = JSON.stringify(response);
//$("div#res").append(data);
//console.log(data);
const obj = JSON.parse(data);
//console.log("code ROME");
//console.log(obj.metier.code);
//Passage du l'id appelation et de son libelle temporaire
$("#ad_soft_codeRome").val(obj.metier.code);
$("#ad_soft_appellationId").val($("#id_appellation_temporaire").val());
$("#ad_soft_appellationLibelle").val($("#metier_temporaire").val());
//console.log("competences de base");
//console.log(obj.competencesDeBase);
//Init des champs de compétences
$("#competencesAd").text("");
$("#competencesAdPopup").text("");
$("#competencesAdMessage").html("");
obj.competencesDeBase.forEach(function (object) {
//console.log("Compétence de base");
//console.log(object.code);
//console.log(object.libelle);
//console.log(object.competenceCle);
var hidden = "";
var 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>");
$("#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();
}
});
$("#competencesButtonAd").show();
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();
}
}
}
//on génere le json qui va remplir le champ ad_soft_competences
genererJson();
})
//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) {
$("#competencesAd").text("");
$("#competencesAdPopup").text("");
if ($("#saisie").val() != "") {
// si il y a un pb avec l'api pole emploi, on affiche ce message
$("#competencesAdMessage").html(
"Une erreur est survenue dans la recherche du métier de rattachement. <a href='#' onclick='chargerCompetences();'><i class='fa fa-refresh fa-spin fa-fw'></i>Cliquez ici pour relancer la recherche</a> "
);
}
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 qui permet de synchroniser les compétences de la page et celles de la popup
// ca va dans les deux sens.
function genererCompetences(cb) {
console.log("Clicked, new value = " + cb.checked);
console.log("Clicked, target = " + cb.id);
var id = cb.id.split('_');
id = id[1];
if($("#nbCompetences").val()<10){
$("#competence_" + id).prop("checked", cb.checked);
$("#competencepopup_" + id).prop("checked", cb.checked);
if (cb.checked) {
console.log("reaffichage div #competence_ad_" + id);
$("#competence_ad_" + id).show();
} else {
console.log("hidden de div #competence_ad_" + id);
$("#competence_ad_" + id).hide();
}
}else{
$("#competence_" + id).prop("checked", false);
$("#competencepopup_" + id).prop("checked", false);
}
// on génere le json a chaque fois
genererJson();
}
</script>
{% endblock %}
@@ -1,8 +1,8 @@
{% extends 'company/base_dashboard_company.html.twig' %}
{% extends 'company/base_dashboard_company_V2.html.twig' %}
{% block dashContent %}
<div class="row bg-bordered p-0">
{% include 'company/ad_steps.html.twig' with {'tab':3} %}
{# {% include 'company/ad_steps.html.twig' with {'tab':3} %} #}
<div class="p-20">
<form>
<p>
@@ -38,6 +38,7 @@
<div class="card card-transparent">
<div class="card-header ">
<div class="card-title">Offres d'emploi
</div>
</div>
<div class="card-body">
@@ -86,8 +87,7 @@
</td>
<td class="v-align-middle">
{% if ad.getStatus() == "DECLINED" %}
<div class="tooltipped" data-position="top" data-delay="50"
data-tooltip="{{ ad.moderationText }}">
<div class="">
<span class="">{{ ad.getStatus()|trans }}</span>
<i class="c-pointer fa fa-info-circle color-red" aria-hidden="true"></i>
</div>
@@ -98,16 +98,13 @@
<td class="v-align-middle">
{% if ad.getStatus() == "DRAFT" or ad.getStatus() == "DECLINED" %}
{#Edit#}
<a class="tooltipped td-none" data-position="top" data-delay="0"
data-tooltip="{{ 'ad.company.edit.label'|trans }}"
href="{{ path('company_ad_edit', { 'id': ad.id }) }}" style="margin-right: 10px">
<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="tooltipped td-none" data-position="top" data-delay="0"
data-tooltip="{{ 'ad.company.edit.label'|trans }}"
href="{{ path('company_ad_soft_edit', { 'id': ad.id }) }}"
<a class=" td-none" href="{{ path('company_ad_soft_edit', { 'id': ad.id }) }}"
style="margin-right: 10px">
<i class="pg-icon">pen</i>
</a>
@@ -115,9 +112,7 @@
{% if ad.getStatus() == "DRAFT" or ad.getStatus() == "DECLINED" %}
{#Video#}
<a class="tooltipped td-none" data-position="top" data-delay="0"
data-tooltip="{{ 'ad.company.video.edit.label'|trans }}"
href="{{ path('create_media', { 'id': ad.id }) }}">
<a class="tooltipped td-none" href="{{ path('create_media', { 'id': ad.id }) }}">
<i class="material-icons">
videocam
</i>
@@ -158,7 +153,9 @@
</tr>
{% endfor %}
{% if ads|length == 0 %}
<tr><th colspan="5" class="text-center">Aucune offre pour le moment</th></tr>
<tr>
<th colspan="5" class="text-center">Aucune offre pour le moment</th>
</tr>
{% endif %}
@@ -169,4 +166,9 @@
</div>
<!-- END card -->
</div>
<!-- END CONTAINER FLUID -->
<script type="text/javascript">
<!-- END CONTAINER FLUID
-->
</script>
@@ -18,7 +18,7 @@
<!-- START BREADCRUMB -->
<ol class="breadcrumb">
<li class="breadcrumb-item"><a href="#">Accueil</a></li>
<li class="breadcrumb-item ">Candidatures</li>
<li class="breadcrumb-item ">Candidatures!</li>
<li class="breadcrumb-item active"><a
href="{{ path('company_ad_answer_list',{'id':answer.ad.id}) }}">{{ answer.ad.title }}</a>
</li>
@@ -11,16 +11,20 @@
'tab' : 2
} %}
{% endif %} #}
<!-- 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">
<!-- START BREADCRUMB -->
<ol class="breadcrumb">
<li class="breadcrumb-item"><a href="#">Accueil</a></li>
<li class="breadcrumb-item ">Candidatures</li>
<li class="breadcrumb-item active"><a
href="{{ path('company_ad_answer_list',{'id':answer.ad.id}) }}">{{ answer.ad.title }}</a>
<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 }}
</a>
</li>
<li class="breadcrumb-item active"><a href="#"> candidat {{ answer.user.firstname }}
{{ answer.user.lastname }}</a>
</li>
</ol>
@@ -30,193 +34,203 @@
</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 class="tab-content">
<!-- ========== bloc candidature ========== -->
{% include 'company/answer_show_candidature.html.twig' %}
<!-- ========== bloc message video ========== -->
<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>
{% include 'company/answer_show_message_video.html.twig' %}
{# <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 ========== -->
<!-- ========== bloc message texte ========== -->
{% include 'company/answer_show_candidature.html.twig' %}
{% include 'company/answer_show_message_texte.html.twig' %}
<!-- ========== bloc message video ========== -->
<!-- ========== bloc commentaire ========== -->
{% include 'company/answer_show_message_video.html.twig' %}
{# {% include 'company/answer_show_comment.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>
</div>
{% endblock %}
{% block javascripts %}
{{ parent() }}
<script type="text/javascript">
var urlDropzone = '{{ path("upload_media_message", {"id": message.getId()}) }}';
var urlDelete = '{{ path("delete_media_message", {"id": message.getId() }) }}'
var idObject = null;
var typeObject = "answer";
var videoExist = false;
</script>
<script src="{{ asset('/js/dropzone.js') }}"></script>
<script src="{{ asset('/js/vendors/video.min.js') }}"></script>
<script src="{{ asset('/js/vendors/RecordRTC.js') }}"></script>
<script src="{{ asset('/js/vendors/videojs.record.js') }}"></script>
<script src="{{ asset('/js/vendors/jquery.browser.min.js') }}"></script>
<script src="{{ asset('/js/vendors/readmore.min.js') }}"></script>
<script src="{{ asset('/js/answer.js') }}"></script>
<script type="text/javascript">
$(".card-action").click(function () {
var idVideo = $(this).data("id");
var titleVideo = $(this).data("title");
var imgVideo = $(this).data("img");
var urlVideo = $(this).data("url");
var elem = $(this);
form['contact_talent_video'] = 1;
$.ajax({
type: 'POST',
url: '{{ path("link_media_message", {"id": message.getId()}) }}',
data: "idVideo=" + idVideo,
dataType: 'html',
success: function (response) {
$(".card-action").removeClass('active');
elem.addClass('active');
Materialize.toast('Vidéo bien associé à la réponse', 4000);
if ($("#submit").hasClass('disabled')) {
$("#submit").removeClass('disabled');
$("#submit").addClass('pulse');
}
},
error: function (response, xhr, ajaxOptions, thrownError) {
Materialize.toast('Erreur lors de l\'association de la vidéo!', 4000);
{% endblock %}
{% block javascripts %}
{{ parent() }}
<script type="text/javascript">
var urlDropzone = '{{ path("upload_media_message", {"id": message.getId()}) }}';
var urlDelete = '{{ path("delete_media_message", {"id": message.getId() }) }}'
var idObject = null;
var typeObject = "answer";
var videoExist = false;
</script>
<script src="{{ asset('/js/dropzone.js') }}"></script>
<script src="{{ asset('/js/vendors/video.min.js') }}"></script>
<script src="{{ asset('/js/vendors/RecordRTC.js') }}"></script>
<script src="{{ asset('/js/vendors/videojs.record.js') }}"></script>
<script src="{{ asset('/js/vendors/jquery.browser.min.js') }}"></script>
<script src="{{ asset('/js/vendors/readmore.min.js') }}"></script>
<script src="{{ asset('/js/answer.js') }}"></script>
<script src="{{ asset('/js/demo.js') }}"></script>
<script src="{{ asset('/js/scripts.js') }}"></script>
<script type="text/javascript">
$(".card-action").click(function () {
var idVideo = $(this).data("id");
var titleVideo = $(this).data("title");
var imgVideo = $(this).data("img");
var urlVideo = $(this).data("url");
var elem = $(this);
form['contact_talent_video'] = 1;
$.ajax({
type: 'POST',
url: '{{ path("link_media_message", {"id": message.getId()}) }}',
data: "idVideo=" + idVideo,
dataType: 'html',
success: function (response) {
$(".card-action").removeClass('active');
elem.addClass('active');
Materialize.toast('Vidéo bien associé à la réponse', 4000);
if ($("#submit").hasClass('disabled')) {
$("#submit").removeClass('disabled');
$("#submit").addClass('pulse');
}
});
});
$('.bnt-choice-message').on('click', function () {
var type = $(this).data('value');
$('.bnt-choice-message').removeClass('btn-active');
$('.bnt-choice-video').removeClass('active');
$(this).addClass('btn-active');
$(".panel-hide").removeClass('active');
$(".panel-hide").stop().fadeOut();
$('.blockanswer').stop().fadeOut('normal', function () {
$('.blockanswer-' + type).stop().fadeIn();
if (type == 'video') {
$('.bnt-choice-video:first').click();
}
});
});
$('.blockanswer-video').css('display', 'none');
$('.bnt-choice-video').on('click', function (e) {
e.preventDefault();
var type = $(this).data('value');
$('.bnt-choice-video').removeClass('active');
$(this).addClass('active');
$(".panel-hide").removeClass('active');
$('#blockanswer-video-' + type).addClass('active');
$(".panel-hide").not(".active").stop().fadeOut('normal', function () {
$('#blockanswer-video-' + type).stop().fadeIn('fast');
if (type == "webcam") {
$('#blockanswer-video-upload').stop().fadeIn('fast');
}
$('#validFormVideo').stop().fadeIn('fast');
});
});
$('.link-history-more').on('click', function (e) {
e.preventDefault();
$('.history-hidden').fadeIn();
$(this).fadeOut();
});
document.getElementsByName("contact_talent[message]")[0].addEventListener('change', verifySubmitButton);
$('#contact_talent_status').on('change', verifySubmitButton);
var form = [];
form['contact_talent_message'] = 0;
form['contact_talent_video'] = 0;
form['contact_talent_status_video'] = 0;
form['contact_talent_status'] = 0;
function verifySubmitButton() {
if (this.value && this.value != 0) {
form[this.id] = 1;
} else {
form[this.id] = 0;
},
error: function (response, xhr, ajaxOptions, thrownError) {
Materialize.toast('Erreur lors de l\'association de la vidéo!', 4000);
}
if (form['contact_talent_message'] + form['contact_talent_status'] >= 2) {
$('.blockanswer-message .btn').removeClass('disabled');
} else {
$('.blockanswer-message .btn').addClass('disabled');
});
});
$('.bnt-choice-message').on('click', function () {
var type = $(this).data('value');
$('.bnt-choice-message').removeClass('btn-active');
$('.bnt-choice-video').removeClass('active');
$(this).addClass('btn-active');
$(".panel-hide").removeClass('active');
$(".panel-hide").stop().fadeOut();
$('.blockanswer').stop().fadeOut('normal', function () {
$('.blockanswer-' + type).stop().fadeIn();
if (type == 'video') {
$('.bnt-choice-video:first').click();
}
});
});
$('.blockanswer-video').css('display', 'none');
$('.bnt-choice-video').on('click', function (e) {
e.preventDefault();
var type = $(this).data('value');
$('.bnt-choice-video').removeClass('active');
$(this).addClass('active');
$(".panel-hide").removeClass('active');
$('#blockanswer-video-' + type).addClass('active');
$(".panel-hide").not(".active").stop().fadeOut('normal', function () {
$('#blockanswer-video-' + type).stop().fadeIn('fast');
if (type == "webcam") {
$('#blockanswer-video-upload').stop().fadeIn('fast');
}
$('#validFormVideo').stop().fadeIn('fast');
});
});
$('.link-history-more').on('click', function (e) {
e.preventDefault();
$('.history-hidden').fadeIn();
$(this).fadeOut();
});
document.getElementsByName("contact_talent[message]")[0].addEventListener('change', verifySubmitButton);
$('#contact_talent_status').on('change', verifySubmitButton);
var form = [];
form['contact_talent_message'] = 0;
form['contact_talent_video'] = 0;
form['contact_talent_status_video'] = 0;
form['contact_talent_status'] = 0;
function verifySubmitButton() {
if (this.value && this.value != 0) {
form[this.id] = 1;
} else {
form[this.id] = 0;
}
if (form['contact_talent_message'] + form['contact_talent_status'] >= 2) {
$('.blockanswer-message .btn').removeClass('disabled');
} else {
$('.blockanswer-message .btn').addClass('disabled');
}
}
$('#contact_talent_status_video').on('change', verifyVideoSubmitButton);
function verifyVideoSubmitButton() {
if (this.value && this.value != 0) {
form[this.id] = 1;
} else {
form[this.id] = 0;
}
if (form['contact_talent_video'] + form['contact_talent_status_video'] >= 2) {
$('#validFormVideo .btn').removeClass('disabled');
} else {
$('#validFormVideo .btn').addClass('disabled');
}
}
$('.message-answer').readmore({
speed: 75,
lessLink: '<a href="#" class="link-message-more">Fermer</a>',
moreLink: '<a href="#" class="link-message-more">{% trans %}label.link.readmore{% endtrans %}</a>',
blockProcessed: function (element, collapsable) {
console.log(element);
console.log(collapsable);
if (collapsable == false) {
$('.message-answer').readmore('destroy');
}
}
$('#contact_talent_status_video').on('change', verifyVideoSubmitButton);
function verifyVideoSubmitButton() {
if (this.value && this.value != 0) {
form[this.id] = 1;
} else {
form[this.id] = 0;
}
if (form['contact_talent_video'] + form['contact_talent_status_video'] >= 2) {
$('#validFormVideo .btn').removeClass('disabled');
} else {
$('#validFormVideo .btn').addClass('disabled');
}
}
$('.message-answer').readmore({
speed: 75,
lessLink: '<a href="#" class="link-message-more">Fermer</a>',
moreLink: '<a href="#" class="link-message-more">{% trans %}label.link.readmore{% endtrans %}</a>',
blockProcessed: function (element, collapsable) {
console.log(element);
console.log(collapsable);
if (collapsable == false) {
$('.message-answer').readmore('destroy');
}
}
});
});
function changerActive(tabActive) {
//$("#comment").removeClass("active");
$("#candidature").removeClass("active");
$("#messagerieVideo").removeClass("active");
$("#messagerie").removeClass("active");
//$("#commentLien").removeClass("active");
$("#candidatureLien").removeClass("active");
$("#messagerieVideoLien").removeClass("active");
$("#messagerieLien").removeClass("active");
$("#" + tabActive).addClass("active");
$("#" + tabActive + "Lien").addClass("active");
function changerActive(tabActive) {
//$("#comment").removeClass("active");
$("#candidature").removeClass("active");
$("#messagerieVideo").removeClass("active");
$("#messagerie").removeClass("active");
//$("#commentLien").removeClass("active");
$("#candidatureLien").removeClass("active");
$("#messagerieVideoLien").removeClass("active");
$("#messagerieLien").removeClass("active");
$("#" + tabActive).addClass("active");
$("#" + tabActive + "Lien").addClass("active");
}
</script>
{% endblock %}
}
</script>
{% endblock %}
@@ -1,5 +1,5 @@
<div class="tab-pane active" id="candidature">
<div class="row m-md-0">
<div class="row ">
<div class="col-xl-7 col-lg-6 bg-white">
<!-- START card -->
<div class="full-height">
@@ -11,7 +11,7 @@
</div>
<!-- END card -->
</div>
<div class="col-xl-5 col-lg-6 col-top">
<div class="col-xl-5 col-lg-6 col-top fondBlanc">
<!-- START card -->
<div class="card card-transparent">
<div class="card-header ">
@@ -39,6 +39,13 @@
<p class="small hint-text m-t-5">{{ answer.user.firstname }}
{{ answer.user.lastname }}
</p>
<p class="small hint-text m-t-5">
{% if answer.user.company %}
{% if answer.user.company.cv %}
<a href="/uploads/cv/{{ answer.user.company.cv }}" target="_blank"><button aria-label="" type="button" class="btn btn-outline-primary">Télécharger le cv</button></a>
{% endif %}
{% endif %}
</p>
</div>
</div>
</div>
@@ -46,7 +53,7 @@
<!-- END card -->
</div>
</div>
<div class="row column-seperation">
<div class="row column-seperation fondBlanc">
<div class="col-lg-6">
<h3>
@@ -57,20 +64,20 @@
<p class="pull-right">
<a href="#" onClick="changerActive('messagerie')" data-toggle="tab" role="tab"
data-target="#messagerie">
<button aria-label="" type="button" class="btn btn-default btn-cons">Réponse en message
<button aria-label="" type="button" class="btn btn-primary btn-cons">Réponse en message
texte</button>
</a>
<a href="#" onClick="changerActive('messagerieVideo')" data-toggle="tab" role="tab"
data-target="#messagerieVideo">
<button aria-label="" type="button" class="btn btn-default btn-cons">Réponse en vidéo</button>
<button aria-label="" type="button" class="btn btn-primary btn-cons">Réponse en vidéo</button>
</a>
</p>
</div>
</div>
<div class="row">
<div class="row fondBlanc">
<h4 class="no-margin-top bordered">{% trans %}label.answer.history.title{% endtrans %}</h4>
</div>
<div class="row">
<div class="row fondBlanc">
<div class="card-body">
<div class="table-responsive">
@@ -82,8 +89,8 @@
-->
<th style="width:15%">Objet</th>
<th style="width:15%">Message</th>
<th style="width:70%">Envoyé le</th>
<th style="width:15%">Envoyé le</th>
<th style="width:70%">Message</th>
</tr>
</thead>
<tbody>
@@ -116,11 +123,15 @@
</tr>
{% endfor %}
{% if answer.messages|length == 0 %}
<tr><th colspan="3" class="text-center">Aucun message pour le moment</th></tr>
{% endif %}
{% endif %}
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
@@ -1,8 +1,8 @@
<div class="tab-pane " id="messagerie">
<div class="row">
<div class="row fondBlanc">
<!-- START ITEM -->
<div class="col-lg-4">
<div class="col-lg-4 fondBlanc">
<div class="card card-default bg-success">
<div class="card-header separator">
<div class="card-title">Réponse par mail
@@ -10,12 +10,12 @@
</div>
<div class="card-body">
<h3>
<span class="semi-bold">Répondre par </span> message</h3>
<p>When it comes to digital design, the lines between functionality, aesthetics, and
psychology are inseparably blurred. Without the constraints of the physical world,
theres no natural form to fall back on, and every bit of constraint and affordance
must be introduced intentionally. Good design makes a product useful. A product is
bought to be used.</p>
<span class="semi-bold">Envoyez un message à </span> {{ answer.user.firstname }} {{ answer.user.lastname }}</h3>
<p>
Vous avez également la possibilité d'envoyer une réponse en vidéo. Je souhaite répondre <b><a href="#" onClick="changerActive('messagerieVideo')" data-toggle="tab" role="tab"
data-target="#messagerieVideo">en vidéo</a></b>.
</p>
</div>
</div>
</div>
@@ -113,7 +113,7 @@
</div>
<div class="col-md-1">
<button type="submit" aria-label="" class="btn btn-complete btn-lg pull-right btn-icon-left"><i
<button type="submit" aria-label="" class="btn btn-primary btn-lg pull-right btn-icon-left"><i
class="pg-icon">send</i>Envoyer</button>
</div>
</div>
@@ -1,8 +1,8 @@
<div class="tab-pane " id="messagerieVideo">
<div class="row">
<div class="tab-pane fondBlanc" id="messagerieVideo">
<div class="row fondBlanc">
<!-- START ITEM -->
<div class="col-lg-4">
<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
@@ -10,12 +10,9 @@
</div>
<div class="card-body">
<h3>
<span class="semi-bold">Répondre avec la </span> vidéo</h3>
<p>When it comes to digital design, the lines between functionality, aesthetics, and
psychology are inseparably blurred. Without the constraints of the physical world,
theres no natural form to fall back on, and every bit of constraint and affordance
must be introduced intentionally. Good design makes a product useful. A product is
bought to be used.</p>
<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>
@@ -0,0 +1,29 @@
{% extends 'base_dashboard_temporaire.html.twig' %}
{% block content %}
<div class="fluid-container bg-grey-3 dashboardWrapper dashboardCompanyWrapper">
<div class="container">
<div class="row flexcontainer">
{% include "company/menutemporaire.html.twig" ignore missing %}
<div class="col s12 m12 l8 xl9 col-padding-left" id="page-content">
{% block dashContent %}
Dashboard Company
{% endblock %}
</div>
</div>
</div>
</div>
{% endblock %}
{% block javascripts %}
<script src="https://maps.googleapis.com/maps/api/js?key=AIzaSyDYV8IJGtIoWLfXJQQvIuDQ88n2aEuRgpg&libraries=places"></script>
{% javascripts
'@vendors'
'@global'
'@company'
output='assetic/main.dash.company.js' filter='?uglifyjs2' %}
<script src="{{ asset_url }}"></script>
{% endjavascripts %}
{% endblock %}
@@ -1,4 +1,4 @@
{% extends 'base.html.twig' %}
{% extends 'basetemporaire.html.twig' %}
{% block title %}Offres d'emploi et recrutement {{ company.brandName }} | TalentsTube{% endblock %}
@@ -71,11 +71,12 @@
<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</h2>
<p>Discover goods you'll love from brands that inspire. The easiest way to open your own
online store. Discover amazing stuff or open your own store for free!</p>
<p class="small hint-text">Below is a sample page for your cart , Created using pages design
UI Elementes</p>
<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">
@@ -90,11 +91,13 @@
<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">
<h2>Your Information is safe with us!</h2>
<p>We respect your privacy and protect it with strong encryption, plus strict policies .
Two-step verification, which we encourage all our customers to use.</p>
<p class="small hint-text">Below is a sample page for your cart , Created using pages design
UI Elementes</p>
<h2>J'importe une vidéo</h2>
<p>Importez votre vidéo de recrutement et publiez votre annonce.
Vous ne possédez pas encore de vidéo ?
Talents Tube peut vous accompagner dans la réalisation de votre
vidéo d'offre d'emploi. <a href="https://blog.talentstube.com/contact" target="_blank">Contactez-nous</a></p>
{# <p class="small hint-text">Below is a sample page for your cart , Created using pages design
UI Elementes</p> #}
{# <ul id="tabs-video" class="tabs">
<li class="tab col s4"><a class="active" href="#tab-video-new">Ajouter une nouvelle vidéo</a>
</li>
@@ -46,11 +46,7 @@
<i class="fa fa-search"></i>
{{ 'company.menu.users.label'|trans }}</a></li>
<li>
<a href="{{ path('company_media') }}">
<i class="fa fa-play"></i>
{{ 'company.menu.videotheque.label'|trans }}</a>
</li>
<li>
<a href="{{ path('company_my_account') }}">
<i class="fa fa-cog"></i>
@@ -0,0 +1,96 @@
<div class="col s12 m12 l4 xl3" id="sidebar">
<div class="inside-m">
<div class="profil center-align">
{% set company = app.user.company %}
<div class="profil-picture logo-picture">
{% if company.logo %}
<img class="responsive-img" src="{{ company.webPath | imagine_filter('profile_thumb') }}"
alt="{{ app.user.firstname }} {{ app.user.lastname }}"/>
<a href="#modalProfilePicture">
<i class="fa fa-pencil" aria-hidden="true"></i>
</a>
{% else %}
<div class="circle-letters square-letters font-2">{{ company.brandname|first|upper }}</div>
<a href="#modalProfilePicture">
<i class="fa fa-pencil" aria-hidden="true"></i>
</a>
{% endif %}
</div>
<p class="profil-name ">{{ app.user.firstname }} {{ app.user.lastname|first|upper }}</p>
{% if company.addresses %}
<p class="profil-city">{{ company.addresses.billing.city }}
- {{ company.addresses.billing.country|country }}</p>
{% endif %}
{# <p class="profil-job"><a
href="{{ path("company_show",{"alias":company.alias}) }}">{{ company.brandname }}</a></p> #}
<p class="profil-job"><a
href="https://www.talentstube.com/Entreprise/{{company.alias}}" target="_blank">{{ company.brandname }}</a></p>
</div>
<div class="profil-nav">
<ul class="font-2">
<li>
<a href="{{ path('company_dashboard') }}">
<i class="fa fa-bar-chart"></i>
{{ 'company.menu.dashboard.label'|trans }}
</a>
</li>
<li>
<a href="{{ path('company_profile') }}">
<i class="fa fa-user"></i>
{{ 'company.menu.profile.label'|trans }}</a>
</li>
<li>
<a href="{{ path('company_marque') }}">
<i class="fa fa-share"></i>
{{ 'company.menu.marque.label'|trans }}</a>
</li>
<li>
<a href="{{ path('company_ad') }}">
<i class="fa fa-search"></i>
{{ 'company.menu.ads.label'|trans }}</a></li>
<li>
<a href="{{ path('users') }}">
<i class="fa fa-search"></i>
{{ 'company.menu.users.label'|trans }}</a></li>
<li>
<a href="{{ path('company_answer_list') }}">
<i class="fa fa-user"></i>
{{ 'company.menu.candidature.label'|trans }}</a>
</li>
<li>
<a href="{{ path('company_my_account') }}">
<i class="fa fa-cog"></i>
{{ 'company.menu.account.label'|trans }}</a>
</li>
<li>
<a href="mailto:contact@talentstube.com">
<i class="fa fa-comment"></i>
{{ 'company.menu.account.contact'|trans }}</a>
</li>
<li>
<a class="chip center-align" href="{{ path('fos_user_security_logout') }}">Déconnexion <i class="fa fa-sign-out" aria-hidden="true"></i></a>
</li>
</ul>
</div>
</div>
</div>
<div id="modalProfilePicture" class="modal">
<div class="modal-content">
<h4>Edition du logo de votre entreprise</h4>
<div class="row">
{{ render(controller(
'AppBundle:Media:profileLogo'
)) }}
</div>
</div>
<div class="modal-footer">
<a href="#!" class="modal-action modal-close waves-effect waves-green btn-flat">Fermer</a>
</div>
</div>
@@ -33,55 +33,56 @@
<div class=" container-fluid container-fixed-lg bg-white">
<!-- START card -->
<div class="row">
<div class="col-lg-6">
<div class="col-lg-12s">
<div class="card card-transparent">
{{ form_start(form, { 'action': path('company_my_account'), 'attr': { 'class': 'fos_user_profile_edit' } }) }}
<div class="card-body">
{% if form_errors(form) %}
<span class="red-text text-darken-2">{{ form_errors(form) }}</span>
{% endif %}
<div class="row">
<div class="col-md-6">
<div class="form-group form-group-default required">
<div class="card-body">
{% if form_errors(form) %}
<span class="red-text text-darken-2">{{ form_errors(form) }}</span>
{% endif %}
{{ form_row(form.firstname) }}
<div class="row">
<div class="col-md-6">
<div class="form-group form-group-default required">
{{ form_row(form.firstname) }}
</div>
</div>
<div class="col-md-6">
<div class="form-group form-group-default">
{{ form_row(form.lastname) }}
</div>
</div>
</div>
<div class="col-md-6">
<div class="form-group form-group-default">
{# <div class="row">
<div class="col-md-12">
{{ form_row(form.lastname) }}
<div class="form-group ">
{{ form_row(form.gender) }}
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-md-12">
<div class="form-group ">
<br /> #}
<div style="text-align: right;">
<button class="btn btn-default" type="submit">Sauvegarde</button>
{{ form_row(form.gender) }}
</div>
</div>
</div>
<br />
<div style="text-align: right;">
<button class="btn btn-default" type="submit">Sauvegarde</button>
</div>
{{ form_end(form) }}
</div>
{{ form_end(form) }}
</div>
<!-- END card -->
</div>
<!-- END card -->
<div class="col-lg-6">
<div class="card card-transparent">
</div>
<div class="col-lg-12">
{# <div class="card card-transparent">
{{ form_start(formPw) }}
<div class="card-body">
{% if form_errors(formPw) %}
@@ -99,7 +100,17 @@
</div>
</div>
</div>
{{ form_end(formPw) }}
{{ form_end(formPw) }} #}
<div class="card card-transparent">
<div class="card-body">
<div class="row">
<div class="col-md-12">
<a href="/resetting/request" target="_blank">Réinitialisation de mot de passe</a>
</div>
</div>
</div>
</div>
</div>
<!-- END card -->
@@ -9,7 +9,7 @@
<!-- START BREADCRUMB -->
<ol class="breadcrumb">
<li class="breadcrumb-item"><a href="#">Accueil</a></li>
<li class="breadcrumb-item active">Utilisateurss</li>
<li class="breadcrumb-item active">Utilisateurs</li>
</ol>
<!-- END BREADCRUMB -->
<div class="row">
@@ -46,7 +46,10 @@
</div>
<div class="card-body">
{% if form_errors(form) %}
<span class="red-text text-darken-2">{{ form_errors(form) }}</span>
<span class="red-text text-darken-2">{{ form_errors(form) }}{{ error }}</span>
{% endif %}
{% if error%}
<span class="red-text text-darken-2"><b>{{ error }}</b><br/>&nbsp;</span>
{% endif %}
{{ form_start(form) }}
<div class="row">
@@ -72,7 +75,7 @@
</div>
</div>
<div class="row">
{# <div class="row">
<div class="col-md-12">
<div class="form-group ">
@@ -80,7 +83,7 @@
{{ form_row(form.gender) }}
</div>
</div>
</div>
</div> #}
{% if form.password is defined%}
<div class="row">
<div class="col-md-12">
@@ -28,9 +28,12 @@
{% if company.presentationVideo is defined %}
{% if company.presentationVideo.thumbnails.0.sizes is defined %}
<a href="{{ path('company_show',{'alias': company.alias }) }}" title="{{ company.brandName }}">
{% if company.presentationVideo.thumbnails.0.sizes.4.link is defined %}
<img src="{{ company.presentationVideo.thumbnails.0.sizes.4.link }}"
alt="{{ company.brandName }}"/>
<span class="playerbtn"></span>
{% endif %}
</a>
{% endif %}
{% endif %}
@@ -20,7 +20,7 @@
<a class="white-text" href="{{ path('territory_list') }}" title="Listes des territoires">Nos territoires</a>
</li>
<li>
<a class="white-text" href="https://blog.talentstube.com/contact.html" title="Talents Tube ">Contact</a>
<a class="white-text" href="https://blog.talentstube.com/contact" title="Talents Tube ">Contact</a>
</li>
</ul>
</div>
@@ -0,0 +1,395 @@
<!DOCTYPE html>
<html lang="fr">
<head>
<link
href="{{ asset('dashboard/plugins/bootstrap/css/bootstrap.min.css') }}"
rel="stylesheet"
type="text/css"/>
<script
src="{{ asset('dashboard/plugins/jquery/jquery-3.5.1.min.js') }}"
type="text/javascript"></script>
<script
src="https://cdnjs.cloudflare.com/ajax/libs/corejs-typeahead/1.3.1/bloodhound.min.js"
type="text/javascript"></script>
<script
src="{{ asset('dashboard/plugins/typeahead/typeahead.bundle.js') }}"
type="text/javascript"></script>
<script>
$(document)
.ready(function () {
// Constructing the suggestion engine
console.log("metiers!!!");
var metiers = new Bloodhound({
datumTokenizer: Bloodhound.tokenizers.whitespace,
queryTokenizer: Bloodhound.tokenizers.whitespace,
remote: {
url: 'http://localhost/app_dev.php/api/getAppelationsLibelle',
wildcar: '%QUERY',
filter: function (metiers) {
console.log("metiers2");
return $.map(metiers, function (metier) {
console.log(metier);
return {metier_id: metier.code, metier_libelle: metier.libelle}
})
},
prepare: function (query, settings) {
//ing%20agro
//query = query.replace(" ", "%20");
settings.url += '?q=' + query;
return settings;
}
},
});
metiers.initialize();
// Initializing the typeahead
$('.typeahead').typeahead({
hint: true,
highlight: true
}, {
name: 'metiers',
source: metiers.ttAdapter(),
display: 'metier_libelle',
limit: 10,
templates: {
suggestion: function (data) {
return '<div><strong>' + data.metier_id + '</strong> ' + data.metier_libelle + '</div>'
},
footer: function (query) {
//return '<div class="text-center">Plus de résultats :' + query.query + '</div>';
},
empty: function (context) {
// console.log(1) // put here your code when result not found
return '<div class="text-center">Aucun résultat</div>';
}
}
});
});
</script>
<style>
.bs-example {
font-family: sans-serif;
position: relative;
margin: 100px;
}
.tt-hint,
.tt-query,
.typeahead {
border: 2px solid #CCCCCC;
border-radius: 8px;
font-size: 22px;
/* Set input font size */
height: 30px;
line-height: 30px;
outline: medium none;
padding: 8px 12px;
width: 396px;
}
.typeahead {
background-color: #FFFFFF;
}
.typeahead:focus {
border: 2px solid #0097CF;
}
.tt-query {
box-shadow: 0 1px 1px rgba(0, 0, 0, 0.075) inset;
}
.tt-hint {
color: #999999;
}
.tt-menu {
background-color: #FFFFFF;
border: 1px solid rgba(0, 0, 0, 0.2);
border-radius: 8px;
box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
margin-top: 12px;
padding: 8px 0;
width: 422px;
}
.tt-suggestion {
font-size: 22px;
/* Set suggestion dropdown font size */
padding: 3px 20px;
}
.tt-suggestion:hover {
cursor: pointer;
background-color: #0097CF;
color: #FFFFFF;
}
.tt-suggestion p {
margin: 0;
}
.tt-suggestions {
min-height: 300px;
max-height: 600px;
overflow-y: auto;
}
</style>
<style type="text/css">
/* Copyright 2014-present Evernote Corporation. All rights reserved. */
@keyframes caretBlink {
from {
opacity: 1.0;
}
to {
opacity: 0.0;
}
}
@keyframes rotateSpinner {
from {
transform: rotate(0deg);
}
to {
transform: rotate(360deg);
}
}
#text-tool-caret {
animation-name: caretBlink;
animation-iteration-count: infinite;
animation-timing-function: cubic-bezier(1.0, 0, 0, 1.0);
animation-duration: 1s;
}
#en-markup-loading-spinner {
position: absolute;
top: calc(50% - 16px);
left: calc(50% - 16px);
width: 32px;
height: 32px;
}
#en-markup-loading-spinner img {
position: relative;
top: 0;
left: 0;
animation-name: rotateSpinner;
animation-duration: 0.6s;
animation-iteration-count: infinite;
animation-timing-function: linear;
}
</style>
<style type="text/css">
/* Copyright 2014-present Evernote Corporation. All rights reserved. */
.skitchToastBoxContainer {
position: absolute;
width: 100%;
text-align: center;
top: 30px;
-webkit-user-select: none;
-moz-user-select: none;
pointer-events: none;
}
.skitchToastBox {
width: 200px;
height: 16px;
padding: 12px;
background-color: rgba(47, 55, 61, 0.95);
border-radius: 4px;
color: white;
cursor: default;
font-size: 10pt;
text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.32);
font-family: 'Soleil', Helvetica, Arial, sans-serif;
border: 2px rgba(255, 255, 255, 0.38) solid;
}
.lang-zh-cn .skitchToastBox {
font-family: '微软雅黑', 'Microsoft YaHei', SimSun, '&#x30E1;&#x30A4;&#x30EA;&#x30AA;', Meiryo, 'MS PGothic', 'Soleil', Helvetica, Arial, sans-serif;
}
.lang-ja-jp .skitchToastBox {
font-family: '&#x30E1;&#x30A4;&#x30EA;&#x30AA;', Meiryo, 'MS PGothic', '微软雅黑', 'Microsoft YaHei', SimSun, 'Soleil', Helvetica, Arial, sans-serif;
}
.skitchToast {
padding-left: 20px;
padding-right: 20px;
display: inline-block;
height: 10px;
color: #f1f5f8;
text-align: center;
}
.skitchVisible {
/* Don't remove this class it's a hack used by the Evernote Clipper */
}
</style>
<style type="text/css">
/* Copyright 2019-present Evernote Corporation. All rights reserved. */
#en-markup-disabled {
position: fixed;
z-index: 9999;
width: 100%;
height: 100%;
top: 0;
left: 0;
cursor: default;
-webkit-user-select: none;
}
#en-markup-alert-container {
position: absolute;
z-index: 9999;
width: 450px;
left: calc(50% - 225px);
top: calc(50% - 85px);
background-color: white;
box-shadow: 0 2px 7px 1px rgba(0, 0, 0, 0.35);
-webkit-user-select: none;
}
#en-markup-alert-container .cell-2 {
position: relative;
float: left;
width: 345px;
margin-top: 29px;
margin-bottom: 20px;
}
#en-markup-alert-container .cell-2 .cell-2-title {
margin-bottom: 5px;
padding-right: 30px;
font-size: 12pt;
font-family: Tahoma, Arial;
}
#en-markup-alert-container .cell-2 .cell-2-message {
padding-right: 30px;
font-size: 9.5pt;
font-family: Tahoma, Arial;
}
#en-markup-alert-container .cell-3 {
position: relative;
width: 450px;
height: 60px;
float: left;
background-color: rgb(240, 240, 240);
}
#en-markup-alert-container .cell-3 button {
position: absolute;
top: 12px;
right: 15px;
width: 110px;
height: 36px;
}
#en-markup-alert-container .cell-3 button.alt-button {
position: absolute;
top: 12px;
right: 140px;
width: 110px;
height: 36px;
}
</style>
<style>
[touch-action="none"] {
-ms-touch-action: none;
touch-action: none;
}
[touch-action="auto"] {
-ms-touch-action: auto;
touch-action: auto;
}
[touch-action~="pan-x"] {
-ms-touch-action: pan-x;
touch-action: pan-x;
}
[touch-action~="pan-y"] {
-ms-touch-action: pan-y;
touch-action: pan-y;
}
[touch-action~="pan-up"] {
-ms-touch-action: pan-up;
touch-action: pan-up;
}
[touch-action~="pan-down"] {
-ms-touch-action: pan-down;
touch-action: pan-down;
}
[touch-action~="pan-left"] {
-ms-touch-action: pan-left;
touch-action: pan-left;
}
[touch-action~="pan-right"] {
-ms-touch-action: pan-right;
touch-action: pan-right;
}
</style>
</head>
<body class="fixed-header dashboard menu-pin menu-behind">
{# {{ include('default/user_switch.html.twig') }} #}
<!-- START PAGE-CONTAINER -->
<div class="page-container ">
<!-- START PAGE CONTENT WRAPPER -->
<div class="page-content-wrapper ">
<div class="content ">
{% block dashContent %}
<h2>choisir un métier</h2>
<span
class="twitter-typeahead"
style="position: relative; display: inline-block;"><input
type="text"
class="typeahead tt-query tt-hint"
autocomplete="off"
spellcheck="false"
readonly=""
tabindex="-1"
dir="ltr"
style="position: absolute; top: 0px; left: 0px; border-color: transparent; box-shadow: none; opacity: 1; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(255, 255, 255);"><input
type="text"
id="saisie"
class="typeahead tt-query tt-input"
autocomplete="off"
spellcheck="false"
dir="auto"
style="position: relative; vertical-align: top; background-color: transparent;">
<pre aria-hidden="true"
style="position: absolute; visibility: hidden; white-space: pre; font-family: Arial; font-size: 22px; font-style: normal; font-variant: normal; font-weight: 400; word-spacing: 0px; letter-spacing: 0px; text-indent: 0px; text-rendering: auto; text-transform: none;"></pre>
<div
class="tt-menu"
style="position: absolute; top: 100%; left: 0px; z-index: 100; display: none;">
<div class="tt-dataset tt-dataset-cars"></div>
</div>
</span>
{% endblock %}
</div>
</div>
</div>
</body>
</html>
@@ -11,8 +11,8 @@
<div class="media">
<div class="media-body px-4">
<h2 class="statChiffre">1500+</h2>
<p class="statTexte">Talents connectés</p>
<h2 class="statChiffre">10000+</h2>
<p class="statTexte">Visiteurs par mois</p>
</div>
</div>
</div>
@@ -24,7 +24,7 @@
<div class="card-body p-4">
<div class="media">
<div class="media-body px-4">
<h2 class="statChiffre">900+</h2>
<h2 class="statChiffre">1050+</h2>
<p class="statTexte">Vues par vidéo</p>
</div>
</div>
@@ -38,7 +38,7 @@
<div class="media">
<div class="media-body px-4">
<h2 class="statChiffre">350</h2>
<h2 class="statChiffre">550+</h2>
<p class="statTexte">Candidatures vidéo</p>
</div>
</div>
@@ -19,7 +19,7 @@
<!-- Title -->
<header class="text-center mb-5">
<h2 class="h4 mb-0">Connexion</h2>
<p>Connecter vous pour gérer votre compte</p>
<p>Connectez-vous pour gérer votre compte</p>
</header>
@@ -35,7 +35,7 @@
aria-label="Email" data-msg="Please enter a valid email address." data-error-class="u-has-error"
data-success-class="u-has-success"> #}
<input type="text" id="username" name="_username" value="{{ last_username }}" required="required" class="form-control"/>
<input type="text" id="username" name="_username" value="{{ last_username }}" required="required" class="form-control" placeholder="Saisissez votre adresse email"/>
</div>
</div>
<!-- End Input -->
@@ -51,7 +51,7 @@
{# <input type="password" class="form-control form__input" name="password" required placeholder="Password"
aria-label="Password" data-msg="Your password is invalid. Please try again."
data-error-class="u-has-error" data-success-class="u-has-success"> #}
<input type="password" id="password" name="_password" required="required" class="form-control" />
<input type="password" id="password" name="_password" required="required" class="form-control" placeholder="Saisissez votre mot de passe" />
</div>
</div>
<!-- End Input -->
@@ -69,16 +69,15 @@
</div>
<div class="col-6 text-right">
<a class="js-animation-link float-right" href="resetting/request" data-target="#forgotPassword"
data-link-group="idForm" data-animation-in="fadeIn">Mot de passe oublié?</a>
<a href="resetting/request" target="_blank">Mot de passe oublié?</a>
</div>
</div>
<div class="mb-3">
<input type="hidden" name="_target_path" value="redirect_dashboard" />
<input type="hidden" name="_target_path" value="redirect_dashboard" />
<input type="submit" id="_submit" name="_submit" class="btn btn-block btn-primary"/>
<input type="submit" id="_submit" name="_submit" class="btn btn-block btn-primary" value="Se connecter"/>
</div>
<div class="text-center mb-3">
@@ -51,7 +51,7 @@
<p class="text-white-70 mb-4">Guillaume Lesdos, Co-fondateur et Président</p>
<a class="js-fancybox text-white" href="javascript:;"
data-src="https://www.youtube.com/watch?v=CZDfD2ugXtg&t" data-speed="700"
data-src="https://www.youtube.com/watch?v=Em3niStNutA" data-speed="700"
data-animate-in="zoomIn" data-animate-out="zoomOut" data-caption="Témoignage">
Voir le témoignage
<i class="u-icon u-icon--sm u-icon--white-soft rounded-circle ml-2">
@@ -9,7 +9,14 @@
<div class="list-group list-group-flush list-group-transparent">
<!-- Links -->
<ul class="list-unstyled">
<li><a class="list-group-item list-group-item-action" href="/">Espace recruteurs</a></li>
<li><a class="list-group-item list-group-item-action" href="/">Accueil</a></li>
<li>
<a class="list-group-item list-group-item-action" href="#signupModal" role="button"
data-modal-target="#signupModal"
data-overlay-color="#151b26">
Espace recruteurs
</a>
</li>
<li><a class="list-group-item list-group-item-action"href="https://www.talentstube.com/" target="_blank">Jobs</a></li>
{# <li><a class="list-group-item list-group-item-action" href="#" target="_blank">CV Vidéothèque (En cours)</a></li> #}
</ul>
@@ -25,10 +32,11 @@
<div class="list-group list-group-flush list-group-transparent">
<!-- Links -->
<ul class="list-unstyled">
<li><a class="list-group-item list-group-item-action" href="mentions-legales">Mentions légales</a></li>
<li><a class="list-group-item list-group-item-action" href="cgu">CGU</a></li>
<li><a class="list-group-item list-group-item-action" href="politique-confidentialite">Politique de confidentialité</a></li>
<li><a class="list-group-item list-group-item-action" href="https://blog.talentstube.com/contact.html
<li><a class="list-group-item list-group-item-action" href="{{ path('mentions-legales') }}" target="_blank">Mentions légales</a></li>
<li><a class="list-group-item list-group-item-action" href="{{ path('cgu') }}" target="_blank">CGU</a></li>
<li><a class="list-group-item list-group-item-action" href="{{ path('politique-confidentialite') }}" target="_blank">Politique de confidentialité</a></li>
<li><a class="list-group-item list-group-item-action" href="{{ path('abonnement') }}" >Tarifs</a></li>
<li><a class="list-group-item list-group-item-action" href="https://blog.talentstube.com/contact" target="_blank"
">Contact</a></li>
</ul>
<!-- End Links -->
@@ -71,7 +79,7 @@
<div class="col-lg-4 order-lg-1 d-flex align-items-start flex-column">
<!-- Logo -->
<a class="d-inline-block mb-5" href="index.html" aria-label="Space">
<a class="d-inline-block mb-5" href="/" aria-label="Space">
<img src="{{ asset('v2/svg/logos/talentstube-logo-mobile.svg') }}" alt="Logo" style="width: 40px; max-width: 100%;">
</a>
<!-- End Logo -->
@@ -1,17 +1,17 @@
{% extends 'basev2.html.twig' %}
{% block title %}Talents Tube - Solution de recrutement en vidéo{% endblock %}
{% block title %}Espace recruteur - Solution de recrutement en vidéo | Talents Tube{% endblock %}
{% block meta %}
<meta name="description" content="Vous souhaitez recruter en vidéo ? Talents Tube diffuse vos vidéos doffres demploi et marque employeur pour attirer les meilleurs talents en vidéo.">
<meta name="twitter:card" content="summary">
<meta name="twitter:site" content="@TalentsTube">
<meta name="twitter:title" content="Talents Tube - Solution de recrutement en vidéo">
<meta name="twitter:title" content="Espace recruteur - Solution de recrutement en vidéo | Talents Tube">
<meta name="twitter:description" content="Vous souhaitez recruter en vidéo ? Talents Tube diffuse vos vidéos doffres demploi et marque employeur pour attirer les meilleurs talents en vidéo.">
<meta name="twitter:image" content="{{ absolute_url(asset('img/mail/logo-talents-tube.png')) }}">
{#Open Graph data pour le partage sur les réseaux sociaux (ex Facebook..)#}
<meta property="og:title" content="Talents Tube - Solution de recrutement en vidéo" />
<meta property="og:title" content="Espace recruteur - Solution de recrutement en vidéo | Talents Tube" />
<meta property="og:type" content="article" />
<meta property="og:image" content="{{ absolute_url(asset('img/mail/logo-talents-tube.png')) }}" />
<meta property="og:description" content="Vous souhaitez recruter en vidéo ? Talents Tube diffuse vos vidéos doffres demploi et marque employeur pour attirer les meilleurs talents en vidéo." />
@@ -1,61 +0,0 @@
{% for a in ads if a.isPrivate != true %}
<div class="col s12">
<div class="card z-depth-3">
<div class="card-image">
{% if a.video %}
{% if a.video.thumbnails.0.sizes is defined %}
<a href="{{ path('ad_show',{'alias': a.alias }) }}" title="{{ a.title }}">
<img src="{{ a.video.thumbnails.0.sizes.4.link }}" alt="{{ a.company.brandName }}"/>
<span class="playerbtn"></span>
</a>
{% endif %}
{% endif %}
{% if a.isPromoted %}
<div class="isPromoted"><img src="{{asset('/img/offre-pourvue-droite.png')}}" alt="promoted"></div>
{% endif %}
</div>
<div class="card-content-wrapper">
<div class="card-content card-content-company">
<div class="row company-infos row-noMargin">
<div class="col-infos">
<p class="item-list-name color-blue1">
<a href="{{ path('company_show',{'alias': a.company.alias }) }}" title="{{ a.company.brandName }}">
{{ a.company.brandName }}
</a>
</p>
{% if a.location is iterable %}
{% if a.location.gmap_address %}
<p class="item-list-city">{{ a.location.gmap_address.address_components.0.long_name }}</p>
{% endif %}
{% endif %}
</div>
<div class="col-logo">
{% if a.company.webPath %}
<img class="responsive-img" src="{{ a.company.webPath | imagine_filter('profile_thumb') }}"/>
{% endif %}
</div>
</div>
</div>
<div class="card-content card-content-ad">
<a class="link-job left-align truncate" href="{{ path('ad_show',{'alias': a.alias }) }}" title="{{ a.title }}">{{ a.title }}</a>
</div>
<div class="card-action">
<a class="btn-tags" href="#">Les mots clés<i class="fa fa-chevron-up right" aria-hidden="true"></i></a>
<span class="clearfix"></span>
<div class="keywords">
{% if a.publicTag %}
{% for tag in a.publicTag %}
<div class="chip">
<a href="{{ path('ad_search_result',{'tag':tag }) }}">{{ tag }}</a>
</div>
{% endfor %}
{% endif %}
</div>
</div>
</div>
<div class="borderList"></div>
</div>
</div>
{% endfor %}
@@ -1,69 +0,0 @@
{% for a in ads if a.isPrivate != true %}
<div id="adRow" class="row item-list-bis z-depth-2 row-noMargin">
<div class="col s12 m4 col-noPadding ad-picture">
<a href="{{ path('ad_show',{'alias': a.alias }) }}" title="{{ a.title }}" class="item-list-media">
{% if a.video %}
{% if a.video.thumbnails.0.sizes is defined %}
<img class="thumbnail_list" src="{{ a.video.thumbnails.0.sizes.4.link }}"
alt="{{ a.company.brandName }}"/>
{% endif %}
<span class="playerbtn"></span>
{% endif %}
</a>
{% if a.isPromoted %}
<div class="isPromoted">
OFFRE POURVUE
</div>
{% endif %}
</div>
<div class="col s12 m8 col-noPadding">
<div class="row row-infos row-noMargin">
<div class="col s4 m4 l5 company-infos col-noPadding">
<h2 class="no-margin-top">
<a href="{{ path('ad_show',{'alias': a.alias }) }}"
title="{{ a.title }}" class="hover-blue1">{{ a.title }}</a>
</h2>
{% if a.extra.contract_type is defined %}
<span>{{ a.extra.contract_type }}</span>
{% endif %}
</div>
<div class="col s4 m3 l3 col-noPadding col-logo">
{% if (a.company.logo is defined) and (a.company.webPath is not null) %}
<a href="{{ path('company_show',{'alias':a.company.alias}) }}">
<img src="{{ a.company.webPath | imagine_filter('profile_thumb') }}"/>
</a>
{% endif %}
</div>
<div class="hide-on-small-only col s4 m5 l4 col-noPadding company-infos m-l-30">
<p class="item-list-website">
<a href="{{ path('company_show',{'alias': a.company.alias }) }}" class="hover-blue2">
{{ a.company.brandName }}
</a>
<br/>
{% if a.location is iterable %}
<span>{{ a.location.gmap_address.address_components.0.long_name }}</span>
{% endif %}
</p>
</div>
</div>
<div class="row row-tags row-noMargin">
<div class="col s11 col-noPadding" style="position:relative;">
<div class="frame" id="basic">
<ul class="slidee">{% for tag in a.publicTag %}
<li class="chip">
<a href="{{ path('ad_search_result',{'tag':tag }) }}" class="hover-blue2">{{ tag }}</a>
</li>{% endfor %}</ul>
</div>
<div class="controls center">
<a class="prev"><i class="fa fa-arrow-circle-left" aria-hidden="true"></i></a>
<a class="next"><i class="fa fa-arrow-circle-right" aria-hidden="true"></i></a>
</div>
</div>
</div>
</div>
<div class="borderList"></div>
<div class="clearfix"></div>
</div>
{% endfor %}
@@ -1,80 +0,0 @@
{% extends 'base.html.twig' %}
{% block title %}Découvrez toutes les offres d'emploi en vidéo sur Talents Tube{% endblock %}
{% block description %}Découvrez toutes les offres d'emploi en vidéo dans votre région sur Talents Tube. Postulez rapidement en vidéo et trouvez votre futur job !{% endblock %}
{% block ogtc %}
{#Twitter Card data pour les données enrichies sur Twitter#}
<meta name="twitter:card" content="summary">
<meta name="twitter:site" content="@TalentsTube">
<meta name="twitter:title" content="Découvrez toutes les offres d'emploi en vidéo sur Talents Tube">
<meta name="twitter:description" content="Découvrez toutes les offres d'emploi en vidéo dans votre région sur Talents Tube. Postulez rapidement en vidéo et trouvez votre futur job !">
<meta name="twitter:image" content="{{ absolute_url(asset('img/mail/logo-talents-tube.png')) }}">
{#Open Graph data pour le partage sur les réseaux sociaux (ex Facebook..)#}
<meta property="og:title" content="Découvrez toutes les offres d'emploi en vidéo sur Talents Tube" />
<meta property="og:type" content="article" />
<meta property="og:image" content="{{ absolute_url(asset('img/mail/logo-talents-tube.png')) }}" />
<meta property="og:description" content="Découvrez toutes les offres d'emploi en vidéo dans votre région sur Talents Tube. Postulez rapidement en vidéo et trouvez votre futur job !" />
<meta property="og:site_name" content="Talents Tube" />
<meta property="og:url" content="{{ url(app.request.attributes.get('_route'), app.request.attributes.get('_route_params')) }}" />
{% endblock %}
{% block content %}
{{ render(controller('AppBundle:Ad:adSearchRender',{'type': 'lite' })) }}
<div class="fluid-container bg-grey-3 contentPage">
<div id="searchResultWrapper" class="container">
<div class="row">
<div class="col s12 center-align">
<h1 class="alttitle">Les offres demploi en vidéo</h1>
</div>
</div>
<div class="row m-b-0 p-b-30">
<div class="col s12 m12">
<div id="header-resultats">
{% if isPromotedAds %}
<div><span class="color-blue2">{{ ads|length }}</span> offres d'emploi pourvues</div>
<div><span><a href="{{ path('ad_search_result') }}">Voir les offres d'emploi en cours</a></span></div>
{% else %}
<div><span class="color-blue2">{{ ads|length }}</span> offres d'emploi en cours</div>
<div><span><a href="{{ path('ad_search_result', {'promoted': true }) }}">Voir les offres d'emploi pourvues</a></span></div>
{% endif %}
</div>
<div id="liste-resultats">
{% if ads|length > 0 and noResults == false %}
{% include 'default/ad_listing.html.twig' with {'ads':ads} %}
{% else %}
<h2 class="center-align">Il n'y a pas de résultats directs à votre recherche</h2>
<h4 class="center-align">Mais vous pourriez être intéressé(e) par</h4>
<br/>
{% include 'default/ad_listing.html.twig' with {'ads':ads} %}
{% endif %}
</div>
</div>
</div>
</div>
</div>
{% endblock %}
{% block javascripts %}
{{ parent() }}
<script src="https://maps.googleapis.com/maps/api/js?key=AIzaSyDYV8IJGtIoWLfXJQQvIuDQ88n2aEuRgpg&libraries=places"></script>
<script type="text/javascript">
$(document).ready(function () {
var input = /** @type {!HTMLInputElement} */(document.getElementById('ad_search_location_gmap'));
var autocomplete = new google.maps.places.Autocomplete(input);
autocomplete.addListener('place_changed', onPlaceChanged);
function onPlaceChanged() {
var place = autocomplete.getPlace();
var gmap_address = {'gmap_address': place}
if (place.geometry) {
$("#ad_search_location").val(JSON.stringify(gmap_address));
}
}
});
</script>
{% endblock %}
@@ -1,218 +0,0 @@
{% extends 'base.html.twig' %}
{% block title %}{{ ad.htmlTitle|raw }}{% endblock %}
{% block description %}{{ ad.htmlDescription|raw }}{% endblock %}
{% block ogtc %}
{#Twitter Card data pour les données enrichies sur Twitter#}
<meta name="twitter:card" content="summary">
<meta name="twitter:site" content="@TalentsTube">
<meta name="twitter:title" content="{{ ad.htmlTitle|raw }}">
<meta name="twitter:description" content="{{ ad.htmlDescription|raw }}">
<meta name="twitter:image"
content="{% if ad.video %}{% if ad.video.thumbnails.0.sizes is defined %}{{ ad.video.thumbnails.0.sizes.4.link }}{% endif %}{% endif %}
">
{#Open Graph data pour le partage sur les réseaux sociaux (ex Facebook..)#}
<meta property="og:title" content="{{ ad.htmlTitle|raw }}"/>
<meta property="og:type" content="article"/>
<meta property="og:url" content="{{ app.request.uri }}"/>
<meta property="og:image"
content="{% if ad.video %}{% if ad.video.thumbnails.0.sizes is defined %}{{ ad.video.thumbnails.0.sizes.4.link }}{% endif %}{% endif %}"/>
<meta property="og:description" content="{{ ad.htmlDescription|raw }}"/>
<meta property="og:site_name" content="Talents Tube"/>
{% endblock %}
{% block content %}
{% include 'default/flash_message.html.twig' %}
<div class="fluid-container bg-grey-3 button-plus">
<div id="ad_show" class="container contentWrapper contentPage">
<div class="row">
<div class="col s12 m12 l4 xl3 hide-on-med-and-down" id="sidebar">
{% include 'default/ad_sidebar.html.twig' with {'ad': ad, 'showBrand': true} %}
</div>
<div class="col s12 m12 l8 xl9">
{% if ad.video and ad.status != "CLOSED" %}
<div class="row m-b-0" id="adVideo">
{#{% if ad.id == 38 %}
<img class="responsive-img" src="{{asset('/img/GROUPE-ROCHER-TT.jpg')}}">
{% else %}#}
<div class="embed-responsive embed-responsive-16by9">
<div class="col s12">
<iframe src="https://player.vimeo.com/video/{{ ad.video.cdnUrl|replace({ "/videos/": ""}) }}?texttrack=fr"
width="100%" height="640" frameborder="0" webkitallowfullscreen mozallowfullscreen
allowfullscreen></iframe>
</div>
</div>
{#{% endif %}#}
{% if ad.isPromoted %}
<div class="isPromoted">
OFFRE POURVUE
</div>
{% endif %}
{% if ad.id == 53 %}
<div class="isPromoted">
Traitement des candidatures vidéos
</div>
{% endif %}
</div>
{% endif %}
<div class="row bg-bordered">
<div class="row row-title-ad">
<div class="col s6 col-title-ad">
<h1>{%- spaceless -%}{{ ad.title}}{%- endspaceless -%}</h1>
</div>
<div class="col s6 col-type-ad">
<h2>
{% if ad.extra.contract_type is defined %}
<i class="fa fa-suitcase" aria-hidden="true"></i>&nbsp;{{ ad.extra.contract_type }}
{% endif %}
{% if ad.location is iterable %}
{% if ad.location.gmap_address %}
<i class="fa fa-map-marker" aria-hidden="true"></i>&nbsp;{{ ad.location.gmap_address.address_components.0.long_name }}
{% endif %}
{% endif %}
</h2>
</div>
</div>
<div class="col s12">
{% for tag in ad.publicTag %}
<p class="chip"><a href="{{ path('ad_search_result',{'tag':tag }) }}" class="hover-blue2">{{ tag }}</a></p>
{% endfor %}
<div class="item-detail-description">
<h3 class="blue-text">Détails de l'offre d'emploi</h3>
<p>{{ ad.description|nl2br }}</p>
</div>
<h3 class="blue-text">Informations complémentaires</h3>
<p class="item-detail-reference">Référence : <span>{{ ad.reference }}</span></p>
<p class="item-detail-date">Publié le : <span>{{ ad.publishedAt|date('d/m/Y') }}</span></p>
</div>
<div class="col s12 center-align">
{% if ad.status == "CLOSED" %}
<div class="card-panel orange lighten-1 whiteColor">
{{ 'Offre cloturée'|trans }}
</div>
{% else %}
{% if is_granted('ROLE_TALENT') and alreadyAnswered == TRUE %}
<div class="card-panel green lighten-1 whiteColor">
{{ 'ad.talent.isAnswer.label'|trans }}
</div>
{% elseif not is_granted('ROLE_COMPANY') %}
{% if not ad.isPromoted %}
{% if ad.id != 53 %}
<p class="item-detail-reply">
<a title="postuler-bottom" href="{{ path('talent_answer_create',{'id': ad.getId()}) }}"
class="btn btn-default">
Postuler
</a>
</p>
{% endif %}
{% endif %}
{% endif %}
{% endif %}
</div>
</div>
{% if ad.isPromoted %}
<div class="row bg-bordered row-promoted">
<div class="col s12 center-align">
<h3>Vous souhaitez rejoindre <span class="color-blue1">{{ ad.company.brandname }}</span> ?</h3>
<a href="{{ path('talent_spontaneous_application_create',{'id': ad.company.getId()}) }}"
class="btn btn-default">
Candidature spontanée
</a>
</div>
</div>
{% endif %}
<div class="col s12 hide-on-large-only m-b-50">
{% include 'default/ad_sidebar.html.twig' with {'ad': ad, 'showBrand': true} %}
</div>
</div>
<div class="row">
{% if companyAds|length > 0 %}
<div class="col s12">
<h2>Autres offres demploi pour {{ ad.company.brandname }}</h2>
<div id="liste-resultats">
{% include 'default/ad_listing.html.twig' with {'ads':companyAds} %}
</div>
</div>
{% endif %}
</div>
</div>
</div>
</div>
{% if ad.territories|length %}
{% include 'ad/carrousel_territory.html.twig' with {'territories': ad.territories } %}
{% elseif ad.company.territories|length %}
{% include 'ad/carrousel_territory.html.twig' with {'territories': ad.company.territories } %}
{% endif %}
{% set popup_answer_send = app.session.flashbag.get('popup_answer_send') %}
{% set popup_answer_already_send = app.session.flashbag.get('popup_answer_already_send') %}
{% if popup_answer_send is not empty %}
{% if popup_answer_send[0] == true %}
<div id="modal-answer" class="modal">
<div class="modal-content">
<div class="row">
<div class="col s12">
<div class="col-content p-30">
{% if popup_answer_already_send is not empty and popup_answer_already_send[0] == true %}
<h3 class="color-blue1 center-align">Candidature pour {{ ad.company.brandname }} !</h3>
<div class="col offset-s2 s8 center-align">
<p>Vous avez déjà répondu à cette annonce.</p>
<a href="{{ path('talent_dashboard') }}" class="btn btn-default m-t-20">Accéder à mon profil</a>
<br /><br />
<a class="text modal-action modal-close">Fermer</a>
</div>
{% else %}
<h3 class="color-blue1 center-align">Votre candidature a bien été envoyée à {{ ad.company.brandname }} !</h3>
<div class="col offset-s2 s8 center-align">
<div class="embed-responsive embed-responsive-16by9">
<div class="col s12">
<iframe src="https://player.vimeo.com/video/249822507"
width="100%" height="640" frameborder="0"></iframe>
</div>
</div>
<a href="{{ path('talent_dashboard') }}" class="btn btn-default m-t-20">Accéder à mon profil</a>
<br /><br />
<a class="text modal-action modal-close">Fermer</a>
</div>
{% endif %}
</div>
</div>
</div>
</div>
</div>
{% endif %}
{% endif %}
{% endblock %}
{% block javascripts %}
{{ parent() }}
<script src="https://maps.googleapis.com/maps/api/js?key=AIzaSyDYV8IJGtIoWLfXJQQvIuDQ88n2aEuRgpg&libraries=places"></script>
<script type="text/javascript">
$(document).ready(function(){
//asking for push
EdeclicLib = window.EdeclicLib || {};
EdeclicLib.delayedAsk();
//
$('.tooltipped').tooltip();
$.get( "{{ path('ad_ajaxRecStat',{'id': ad.id }) }}", function( data ) {});
if ($('#modal-answer').length > 0) {
$('#modal-answer').modal({
dismissible: false,
ready: function(modal, trigger) {}
});
$('#modal-answer').modal('open');
}
});
</script>
{% endblock %}
{% block stylesheets %}
<script type="application/ld+json">
{{- ad.structuredData|raw -}}
</script>
<script type="text/javascript" src="//s7.addthis.com/js/300/addthis_widget.js#pubid=ra-5a095d2dd3cf90df"></script>
{% endblock %}
@@ -1,75 +0,0 @@
<div class="profil-company center-align">
{% set company = ad.company %}
<a href="{{ path('company_show',{'alias': ad.company.alias }) }}" title="{{ ad.company.brandName }}" class="profil-picture logo-picture">
{% if company.logo %}
<img class="responsive-img" src="{{ company.webPath | imagine_filter('profile_thumb') }}"
alt="{{ company.brandname }}"/>
{% else %}
<div class="circle-letters square-letters font-2">{{ company.brandname|first|upper }}</div>
{% endif %}
</a>
{% if showBrand is defined %}
{% if company.presentationVideo %}
<div class="brandImage">
<a href="{{ path('company_show',{'alias': ad.company.alias }) }}" title="{{ ad.company.brandName }}">
<img class="" src="{{ company.presentationVideo.thumbnails.0.sizes.4.link }}">
<span class="filter"></span>
<span class="playerbtn"></span>
</a>
</div>
{% endif %}
{% endif %}
<a href="{{ path('company_show',{'alias': ad.company.alias }) }}" title="{{ ad.company.brandName }}" class="btn btn-default btn-small-grey">
Découvrir l'employeur
</a>
<p class="profil-name">
<a href="{{ path('company_show',{'alias': company.alias }) }}" title="{{ company.brandName }}">
<b>{{ company.brandname }}</b>
</a>
</p>
{% if company.addresses.billing is defined %}
<p class="profil-city">{{ company.addresses.billing.city }}
- {{ company.addresses.billing.country|country }}</p>
{% endif %}
</div>
{#<div class="col s12 profil-links">
{% if company.website %}
<a target="_blank" href="{{ company.website }}" class="td-none">
<span class="fa-stack fa-lg">
<i class="fa fa-circle fa-stack-2x z-depth-2"></i>
<i class="fa fa-link fa-stack-1x fa-inverse"></i>
</span>
</a>
{% endif %}
</div>#}
<div class="col s12 center-align">
<div class="divider"></div>
<br />
{% if ad.status == "CLOSED" %}
<div class="card-panel orange lighten-1 whiteColor">
{{ 'Offre cloturée'|trans }}
</div>
{% else %}
{% if is_granted('ROLE_TALENT') and alreadyAnswered == TRUE %}
<div class="card-panel green lighten-1 whiteColor">
{{ 'ad.talent.isAnswer.label'|trans }}
</div>
{% elseif not is_granted('ROLE_COMPANY') %}
{% if not ad.isPromoted %}
{% if ad.id != 53 %}
<p class="item-detail-reply">
<a title="postuler-side" href="{{ path('talent_answer_create',{'id': ad.getId()}) }}"
class="btn btn-default">
Postuler
</a>
</p>
{% endif %}
{% else %}
<div class="item-detail-ispromoted">
Offre pourvue
</div>
{% endif %}
{% endif %}
{% endif %}
</div>
@@ -1,7 +0,0 @@
{% for type, flash_messages in app.session.flashBag.all %}
{% for flash_message in flash_messages %}
<div class="flash-{{ type }}">
{{ flash_message }}
</div>
{% endfor %}
{% endfor %}
@@ -1,31 +0,0 @@
{% if not app.user or is_granted('ROLE_TALENT_TMP')%}
<div class="header-link header-link-signin right-align">
{% if app.request.get('_route') == "fos_user_security_login" %}
{% set href = "" %}
{% else %}
{% set href = "#modal_login" %}
{% endif %}
<a class="btn button-round-small" href="{{ href }}">
<i class="fa fa-power-off" aria-hidden="true"></i>
<span>Connexion</span>
</a>
</div>
{% else %}
<div class="header-link header-link-signin right-align">
{% if is_granted('ROLE_TALENT') %}
{% set pathDash = path('talent_dashboard') %}
{% elseif is_granted('ROLE_COMPANY') %}
{% set pathDash = path('company_dashboard') %}
{% elseif is_granted('ROLE_TERRITORY') %}
{% set pathDash = path('territory_dashboard') %}
{% elseif is_granted('ROLE_ADMIN') %}
{% set pathDash = path('admin_dashboard') %}
{% else %}
{% set pathDash = path('talent_dashboard') %}
{% endif %}
<a class="btn button-round-small" href="{{ pathDash }}">
<i class="material-icons">perm_identity</i>
<span>Mon compte</span>
</a>
</div>
{% endif %}
@@ -12,7 +12,7 @@ La candidature en vidéo ou vidéo de motivation savère être un outil perfo
En plus des savoirs et savoir-faire, la candidature vidéo met en lumière le savoir-être et le savoir devenir des candidats. Vous pouvez cerner la personnalité du candidat et son projet professionnel en quelques instants.
</p>
<a class="btn btn-sm btn-primary btn-wide" href="#">Voir la plateforme</a>
<a class="btn btn-sm btn-primary btn-wide" href="https://www.talentstube.com">Voir la plateforme</a>
</div>
</div>
@@ -4,7 +4,7 @@
<div class="card-deck d-block d-lg-flex">
<div class="card card-frame mb-5">
<!-- Listing -->
<a class="card-body p-4" href="#">
<a class="card-body p-4" href="#atouts">
<div class="media">
<img class="max-width-9 mb-2" src="{{ asset('v2/svg/components/multi-support.svg') }}" alt="Les candidats consultent et postulent aux offres demploi vidéo depuis leur smartphone, tablette ou ordinateur.">
<div class="media-body px-4">
@@ -8,7 +8,7 @@
</div>
</div>
<div class=" text-center space-3-bottom">
<a class="btn btn-sm btn-contact" href="https://blog.talentstube.com/contact.html" target="_blank" role="button" >
<a class="btn btn-sm btn-contact" href="https://blog.talentstube.com/contact" target="_blank" role="button" >
<i class="fa fa-user-circle mr-1"></i>
Contactez nous
</a>
@@ -1,60 +0,0 @@
{% for company in companies if company.isPrivate != true %}
<div class="col s12">
<div class="card z-depth-3 card-company">
<div class="card-content card-content-company">
<div class="row row-noMargin">
<div class="col s4 col-logo">
{% if company.logo is not null %}
<img class="responsive-img" src="{{ company.webPath | imagine_filter('profile_thumb') }}"/>
{% endif %}
</div>
<div class="col s8 col-infos">
<p class="item-list-name color-blue1">
<a href="{{ path('company_show',{'alias': company.alias }) }}"
title="{{ company.brandName }}">
{{ company.brandName }}
</a>
</p>
{% if company.addresses %}
<span class="truncate">{{ company.addresses.billing.city }}</span>
{% endif %}
</div>
</div>
</div>
<div class="card-image">
{% if company.presentationVideo is defined %}
{% if company.presentationVideo.thumbnails.0.sizes is defined %}
<a href="{{ path('company_show',{'alias': company.alias }) }}" title="{{ company.brandName }}">
<img src="{{ company.presentationVideo.thumbnails.0.sizes.4.link }}"
alt="{{ company.brandName }}"/>
<span class="playerbtn"></span>
</a>
{% endif %}
{% endif %}
</div>
<div class="card-content-wrapper">
<div class="card-content">
<div class="row">
<div class="col s12 card-infos-company">
<div class="chip center-align">
<a class="td-none color-grey3" href="{{ path('company_show',{'alias': company.alias, '_fragment':'offers' }) }}">
{% set nbAds = company.getPublishedAds|length %}
{% if nbAds > 1 %}
<strong>{{company.getPublishedAds|length}} offres d'emploi en cours</strong>
{% else %}
<strong>{{company.getPublishedAds|length}} offre d'emploi en cours</strong>
{% endif %}
</a>
</div>
</div>
</div>
</div>
</div>
<div class="borderList"></div>
</div>
</div>
{% endfor %}
@@ -1,48 +0,0 @@
{% extends 'base.html.twig' %}
{% block title %}Les entreprises qui recrutent en vidéo | TalentsTube{% endblock %}
{% block description %}Découvrez les entreprises qui recrutent en vidéo, elles dévoilent leurs marques employeur et leurs offres d'emploi en vidéo. Postulez rapidement à l'offre qui vous convient.{% endblock %}
{% block ogtc %}
{#Twitter Card data pour les données enrichies sur Twitter#}
<meta name="twitter:card" content="summary">
<meta name="twitter:site" content="@TalentsTube">
<meta name="twitter:title" content="Les entreprises qui recrutent en vidéo | TalentsTube">
<meta name="twitter:description"
content="Découvrez les entreprises qui recrutent en vidéo, elles dévoilent leurs marques employeur et leurs offres d'emploi en vidéo. Postulez rapidement à l'offre qui vous convient.">
<meta name="twitter:image" content="{{ absolute_url(asset('img/mail/logo-talents-tube.png')) }}">
{#Open Graph data pour le partage sur les réseaux sociaux (ex Facebook..)#}
<meta property="og:title" content="Les entreprises qui recrutent en vidéo | TalentsTube"/>
<meta property="og:type" content="article"/>
<meta property="og:image" content="{{ absolute_url(asset('img/mail/logo-talents-tube.png')) }}"/>
<meta property="og:description"
content="Découvrez les entreprises qui recrutent en vidéo, elles dévoilent leurs marques employeur et leurs offres d'emploi en vidéo. Postulez rapidement à l'offre qui vous convient."/>
<meta property="og:site_name" content="Talents Tube"/>
<meta property="og:url"
content="{{ url(app.request.attributes.get('_route'), app.request.attributes.get('_route_params')) }}"/>
{% endblock %}
{% block content %}
{{ render(controller('AppBundle:Ad:adSearchRender',{'type': 'lite' })) }}
<div class="fluid-container bg-grey-3 contentPage">
<div id="searchResultWrapper" class="container">
<div class="row">
<div class="col s12 center-align">
<h1 class="alttitle">Les entreprises de talents</h1>
</div>
</div>
<div class="row m-b-0 p-b-30">
<div class="col s12 m12">
<div id="liste-resultats">
{% include 'default/company_listing.html.twig' with {'companies':companies} %}
</div>
</div>
</div>
</div>
</div>
{% endblock %}
@@ -1,81 +0,0 @@
{% for c in companies if c.isPrivate != true %}
{% if (c.presentationVideo is not null or c.getPublishedAds|length > 0 ) %}
<div class="row item-list-bis z-depth-2 row-noMargin">
<div class="col s12 m2 ad-picture col-logo-lg">
<a href="{{ path('company_show',{'alias': c.alias }) }}"
title="{{ c.brandname }}">
{% if c.logo is not null %}
<img src="{{ c.webPath | imagine_filter('profile_thumb') }}"/>
{% endif %}
</a>
</div>
<div class="col s12 m6 col-noPadding">
<div class="row row-infos row-noMargin">
<div class="col s4 m5 l4 col-noPadding company-infos m-l-30">
<div class="item-list-website">
<h2>
<a href="{{ path('company_show',{'alias': c.alias }) }}"
class="hover-blue2">
<b>{{ c.brandName }}</b>
</a>
</h2>
<br/>
{{ c.init }}
{% if c.city != null %}
{{ c.city }}
{% endif %}
</div>
</div>
</div>
<div class="row row-tags row-noMargin">
<div class="col s11 col-noPadding" style="position:relative;">
<div class="chip center-align">
{% set nbAds = c.getPublishedAds|length %}
{% set fragment = "" %}
{% if nbAds > 0 %}
{% set fragment = "offers" %}
{% endif %}
<a class="td-none color-grey3"
href="{{ path('company_show',{'alias': c.alias, '_fragment': fragment }) }}">
{% set nbAds = c.getPublishedAds|length %}
{% if nbAds > 1 %}
<strong>{{ c.getPublishedAds|length }} offres d'emploi en
cours</strong>
{% elseif nbAds == 1 %}
<strong>{{ c.getPublishedAds|length }} offre d'emploi en
cours</strong>
{% else %}
<strong>candidature spontanée</strong>
{% endif %}
</a>
</div>
</div>
</div>
</div>
<div class="col s12 m4 col-noPadding ad-picture">
<a href="{{ path('company_show',{'alias': c.alias }) }}"
title="{{ c.brandname }}"
class="item-list-media">
{% if c.presentationVideo %}
{% if c.presentationVideo.thumbnails.0.sizes is defined %}
<img class="thumbnail_list"
src="{{ c.presentationVideo.thumbnails.0.sizes.4.link }}"
alt="{{ c.brandName }}"/>
{% endif %}
<span class="playerbtn"></span>
{% else %}
<img class="thumbnail_list"
src="{{ asset('/img/default_picture_company.svg') }}"
alt="{{ c.brandName }}"/>
{% endif %}
</a>
</div>
<div class="borderList"></div>
<div class="clearfix"></div>
</div>
{% endif %}
{% endfor %}
@@ -1,15 +0,0 @@
{% if destination_login is defined %}
{% set destination = destination_login %}
{% else %}
{% set destination = path('redirect_dashboard') %}
{% endif %}
<a class="btn btn-default btn-facebook z-depth-2" href="{{ url("hwi_oauth_service_redirect", {service: "facebook"}) }}?_destination={{ destination }}">Connexion avec Facebook</a>
{# <a class="btn btn-default btn-linkedin z-depth-2" href="{{ url("hwi_oauth_service_redirect", {service: "linkedin"}) }}?_destination={{ destination }}">Connexion avec Linkedin</a> #}
<div class="row">
<div class="col s12">
<div class="separator-with-label">
<hr>
<label><span>ou</span></label>
</div>
</div>
</div>
@@ -1,11 +0,0 @@
<script type="text/javascript">
document.addEventListener("DOMContentLoaded", function(event) {
{% for flashMessage in app.session.flashbag.get('notice') %}
var message = "{{ flashMessage }}";
{% endfor %}
if(typeof(message) !== "undefined"){
var $toastContent = $('<span>'+message+'</span>');
Materialize.toast($toastContent, 5000);
}
});
</script>
@@ -20,7 +20,7 @@
<a class="white-text" href="{{ path('territory_list') }}" title="Listes des territoires">Nos territoires</a>
</li>
<li>
<a class="white-text" href="https://blog.talentstube.com/contact.html" title="Talents Tube ">Contact</a>
<a class="white-text" href="https://blog.talentstube.com/contact" title="Talents Tube ">Contact</a>
</li>
</ul>
</div>
@@ -28,13 +28,13 @@
<h5 class="white-text">Informations</h5>
<ul>
<li>
<a class="white-text" href="{{ path('service_legals') }}">Mentions légales</a>
<a class="white-text" href="{{ path('service_legals') }}" target="_blank">Mentions légales</a>
</li>
<li>
<a class="white-text" href="{{ path('service_cgu') }}">Conditions générales d'utilisation</a>
<a class="white-text" href="{{ path('service_cgu') }}" target="_blank">Conditions générales d'utilisation</a>
</li>
<li>
<a class="white-text" href="{{ path('page_Confidentialite') }}">Politique de confidentialité et protection des données</a>
<a class="white-text" href="{{ path('page_Confidentialite') }}" target="_blank">Politique de confidentialité et protection des données</a>
</li>
</ul>
</div>
@@ -1,7 +1,9 @@
{% extends 'basev2.html.twig' %}
{% block title %}Talents Tube : Conditions générales dutilisation - {% endblock %}
{% block menu %}
{% endblock %}
{% block content %}
<main id="content">
<!-- Terms Section -->
@@ -473,7 +475,7 @@
<div id="2.0" class="space-2">
<div class="mb-3">
<span class="d-block text-secondary font-weight-medium">2.0</span>
<h3>Using our servicesChamp d'application</h3>
<h3>Champ d'application</h3>
</div>
<p>Les présentes Conditions Générales d'Utilisation et de Vente ont pour objet de définir les modalités et les
@@ -1,7 +1,9 @@
{% extends 'basev2.html.twig' %}
{% block title %}Talentts tube : Politique de confidentialité et protection des données{% endblock %}
{% block title %}Talents tube : Politique de confidentialité et protection des données{% endblock %}
{% block menu %}
{% endblock %}
{% block content %}
<main id="content">
<!-- Privacy Section -->
@@ -19,7 +21,7 @@
<p>Nous vous invitons à lire avec attention le présent document. Pour toute question concernant ce document
et, dune manière générale, sur la collecte et le traitement de vos informations personnelles par la société
talentstube.com, nhésitez pas à nous contacter via le formulaire présent sur la page contact :
https://blog.talentstube.com/contact.html
<a href="https://blog.talentstube.com/contact" target="_blank">https://blog.talentstube.com/contact</a>
</p>
<div class="mb-3">
<h2 class="h4">Données personnelles</h2>
@@ -134,7 +136,7 @@
<p>Vous pouvez demander une limitation du traitement des données collectées. Lexercice de ces droits peut
exercer ce droit auprès de TALENTS TUBE en adressant une requête soit par voie postale à l'adresse suivante
: 3 Rue Louis de Broglie, Village By CA 56000 Vannes, soit par courrier électronique via le formulaire
présent sur la page Contact https://blog.talentstube.com/contact.html. Cette requête devra être accompagnée
présent sur la page Contact <a href="https://blog.talentstube.com/contact" target="_blank"> https://blog.talentstube.com/contact</a>. Cette requête devra être accompagnée
d'une pièce d'identité revêtant la signature de l'Utilisateur et devra préciser l'adresse et le moyen par
lesquelles une réponse pourra être envoyée.</p>.
@@ -1,7 +1,9 @@
{% extends 'basev2.html.twig' %}
{% block title %}Mentions légales - Talents Tube{% endblock %}
{% block menu %}
{% endblock %}
{% block content %}
<main id="content">
<!-- Privacy Section -->
@@ -93,7 +93,7 @@
<!-- Button -->
<li class="nav-item u-header__nav-item-btn">
<a class="btn btn-sm btn-contact" href="https://blog.talentstube.com/contact.html" target="_blank" role="button">
<a class="btn btn-sm btn-contact" href="https://blog.talentstube.com/contact" target="_blank" role="button">
{# <i class="fa fa-user-circle mr-1"></i> #}
Contactez-nous
</a>
@@ -6,7 +6,7 @@
<h2 class="text-white text-center"> Envie de dévoiler votre marque employeur en vidéo ? </h2>
</div>
<a class="btn btn-sm btn-contact" href="https://blog.talentstube.com/contact.html"
<a class="btn btn-sm btn-contact" href="https://blog.talentstube.com/contact"
data-overlay-color="#151b26">
Contactez-nous
@@ -15,7 +15,7 @@ et qui vous permet de présenter en quelques minutes et en toute
authenticité votre équipe, vos valeurs, votre environnement de
travail et le quotidien de vos métiers.
</p>
<a class="btn btn-sm btn-primary btn-wide" href="https://www.talentstube.com/offres-emploi" target="_blank">Voir la plateforme</a>
<a class="btn btn-sm btn-primary btn-wide" href="https://www.talentstube.com/Offres" target="_blank">Voir la plateforme</a>
</div>
</div>
@@ -15,7 +15,7 @@
collaborateurs sont fiers de présenter leur métier.
</p>
<a class="btn btn-sm btn-primary btn-wide" href="https://www.talentstube.com/offres-emploi"
<a class="btn btn-sm btn-primary btn-wide" href="https://www.talentstube.com/Offres"
target="_blank">Voir la plateforme</a>
</div>
@@ -1,20 +0,0 @@
{% extends 'base.html.twig' %}
{% block metarobot %}
{% if robot is defined and robot == 0 %}
<meta name="robots" content="noindex,nofollow">
{% else %}
<meta name="robots" content="index,follow">
{% endif %}
{% endblock %}
{% block title %}{{ page.title }}{% endblock %}
{% block description %}{{ page.description }}{% endblock %}
{% block content %}
{{ page.content|raw }}
{% if isTestimony is defined %}
{% include 'testimony/testimony_list.html.twig' %}
{% endif %}
{% endblock %}
@@ -1,9 +0,0 @@
<div class="bg-grey-3" style="height:1px;padding-top:150px;padding-bottom:10px;"></div>
<div class="triggerSearch"></div>
<div class="fluid-container bg-grey-3 searchBarWrapper">
<div id="homeSearch" class="searchBar container" style="top:0;">
{% include 'form/search_form.html.twig' with {'searchform': searchform } %}
</div>
</div>
@@ -1,31 +0,0 @@
{% for talent in talents %}
{% if talent.users[0] is defined %}
{% set user = talent.users[0] %}
<div class="item">
<a href="{{ path('talent_show',{'alias': talent.alias }) }}"
title="{{ user.firstname }} {{ user.lastname }}">
{% if user.socialPicture is not null and user.photo is null %}
<img class="circle z-depth-3" src="{{ user.socialPicture }}" alt="{{ user.firstname }} {{ user.lastname }}"/>
{% elseif user.photo %}
<img class="circle z-depth-3" src="{{ user.webPath | imagine_filter('profile_square') }}" alt="{{ user.firstname }} {{ user.lastname }}"/>
{% else %}
<div class="circle-letters font-2">{{ user.firstname|first|upper }}{{ user.lastname|first|upper }}</div>
{% endif %}
</a>
<p class="item-list-job item-list-name center-align">
<a href="{{ path('talent_show',{'alias': talent.alias }) }}"
title="{{ user.firstname }} {{ user.lastname }}">
{{ user.firstname }} {{ user.lastname }}
</a>
</p>
{#{% if talent.publicTag %}
{% for keyword in talent.publicTag %}
{% if keyword != "" %}
<div class="chip">{{ keyword }}</div>
{% endif %}
{% endfor %}
{% endif %}#}
</div>
{% endif %}
{% endfor %}
@@ -0,0 +1,364 @@
{% extends 'basev2.html.twig' %}
{% block title %}Tarifs - Talents Tube{% endblock %}
{% block meta %}
<meta name="description" content="Attirez les meilleurs candidats avec des offres demploi en vidéo. Présentez le poste recherché, les missions, les locaux et les collaborateurs de votre entreprise.">
<meta name="twitter:card" content="summary">
<meta name="twitter:site" content="@TalentsTube">
<meta name="twitter:title" content="Offres demploi - Recrutez des candidats en vidéo - Talents Tube">
<meta name="twitter:description" content="Attirez les meilleurs candidats avec des offres demploi en vidéo. Présentez le poste recherché, les missions, les locaux et les collaborateurs de votre entreprise.">
<meta name="twitter:image" content="{{ absolute_url(asset('img/mail/logo-talents-tube.png')) }}">
{#Open Graph data pour le partage sur les réseaux sociaux (ex Facebook..)#}
<meta property="og:title" content="Offres demploi - Recrutez des candidats en vidéo - Talents Tube" />
<meta property="og:type" content="article" />
<meta property="og:image" content="{{ absolute_url(asset('img/mail/logo-talents-tube.png')) }}" />
<meta property="og:description" content="Attirez les meilleurs candidats avec des offres demploi en vidéo. Présentez le poste recherché, les missions, les locaux et les collaborateurs de votre entreprise." />
<meta property="og:site_name" content="Talents Tube" />
<meta property="og:url" content="{{ url(app.request.attributes.get('_route'), app.request.attributes.get('_route_params')) }}" />
{% endblock %}
{% block content %}
<main id="content">
<!-- Hero Section -->
<div class="gradient-half-primary-v1">
<div class="bg-img-hero" style="background-image: url(../../assets/img/bg/bg2.png);">
<div class="container space-2 space-4-top--lg space-3-bottom--lg">
<div class="w-md-80 w-lg-60 text-center mx-auto">
<!-- Title -->
<div class="mb-9">
<h1 class="display-4 text-white">Abonnement</h1>
<p class="lead text-white">Choisissez l'offre qui vous correspond pour diffuser vos vidéos de recrutement</p>
</div>
<!-- End Title -->
</div>
</div>
</div>
</div>
<!-- End Hero Section -->
<!-- Pricing Section -->
<div class="container">
<div class="bg-gray-100 shadow-lg rounded mt-n9">
<!-- Individual -->
<div id="pricingIndividual" data-target-group="idPricing">
<div class="js-slick-carousel u-slick u-slick--gutters"
data-slides-show="3"
data-slides-scroll="1"
data-pagi-classes="d-lg-none text-center u-slick__pagination mt-7 mb-0"
data-responsive='[{
"breakpoint": 1200,
"settings": {
"slidesToShow": 3
}
}, {
"breakpoint": 992,
"settings": {
"slidesToShow": 2
}
}, {
"breakpoint": 768,
"settings": {
"slidesToShow": 1
}
}, {
"breakpoint": 554,
"settings": {
"slidesToShow": 1
}
}]'>
<div class="js-slide">
<!-- Pricing -->
<div class="card border-0">
<!-- Header -->
<header class="card-header text-center p-5">
<h4 class="h4">Jusqu'à 3 vidéos</h4>
<span class="d-block">
<span class="display-4 text-dark">
99€
</span>
<span class="d-block text-secondary font-size-14">par mois HT</span>
</span>
</header>
<!-- End Header -->
<!-- Content -->
<div class="card-body p-5">
<ul class="list-unstyled mb-4">
<li class="font-size-14 py-2">- Création page entreprise</li>
<li class="font-size-14 py-2">- Accès espace recruteur</li>
<li class="font-size-14 py-2">- Mise en ligne de 1 à 3 vidéos
offre demploi et Marque employeur</li>
<li class="font-size-14 py-2">- Réception des candidatures en vidéo</li>
<li class="font-size-14 py-2">- Gestion des candidatures</li>
<li class="font-size-14 py-2">- Échanges vidéos avec les candidats</li>
<li class="font-size-14 py-2">- Suivi Statistiques</li>
</ul>
</div>
<!-- End Content -->
</div>
<!-- End Pricing -->
</div>
<div class="js-slide">
<!-- Pricing -->
<div class="card border-0">
<!-- Header -->
<header class="card-header text-center p-5">
<h4 class="h4">De 4 à 9 vidéos</h4>
<span class="d-block">
<span class="display-4 text-dark">
199€
</span>
<span class="d-block text-secondary font-size-14">par mois HT</span>
</span>
</header>
<!-- End Header -->
<!-- Content -->
<div class="card-body p-5">
<ul class="list-unstyled mb-4">
<li class="font-size-14 py-2">- Création page entreprise</li>
<li class="font-size-14 py-2">- Accès espace recruteur</li>
<li class="font-size-14 py-2">- Mise en ligne de 4 à 9 vidéos
offre demploi et Marque employeur</li>
<li class="font-size-14 py-2">- Réception des candidatures en vidéo</li>
<li class="font-size-14 py-2">- Gestion des candidatures</li>
<li class="font-size-14 py-2">- Échanges vidéos avec les candidats</li>
<li class="font-size-14 py-2">- Suivi Statistiques</li>
</ul>
</div>
<!-- End Content -->
</div>
<!-- End Pricing -->
</div>
<div class="js-slide">
<!-- Pricing -->
<div class="card border-0">
<!-- Header -->
<header class="card-header text-center p-5">
<h4 class="h4">Plus de 10 vidéos</h4>
<span class="d-block">
<span class="display-4 text-dark">
Sur devis
</span>
<span class="d-block text-secondary font-size-14">&nbsp;</span>
</span>
</header>
<!-- End Header -->
<!-- Content -->
<div class="card-body p-5">
<ul class="list-unstyled mb-4">
<li class="font-size-14 py-2">- Création page entreprise</li>
<li class="font-size-14 py-2">- Accès espace recruteur</li>
<li class="font-size-14 py-2">- Mise en ligne de 10 vidéos
offre demploi et Marque employeur</li>
<li class="font-size-14 py-2">- Réception des candidatures en vidéo</li>
<li class="font-size-14 py-2">- Gestion des candidatures</li>
<li class="font-size-14 py-2">- Échanges vidéos avec les candidats</li>
<li class="font-size-14 py-2">- Suivi Statistiques</li>
</ul>
</div>
<!-- End Content -->
</div>
<!-- End Pricing -->
</div>
</div>
</div>
<!-- End Individual -->
</div>
</div>
<!-- End Pricing Section -->
<!-- Divider -->
<div class="container space-2-bottom">
<hr class="my-0">
</div>
<!-- End Divider -->
<!-- FAQ Section -->
<div class="container space-2-bottom">
<!-- Title -->
<div class="w-md-80 w-lg-60 text-center mx-md-auto mb-9">
<h3 class="h4">Vous souhaitez en savoir plus sur notre solution?</h3>
</div>
<!-- End Title -->
<div class="w-md-80 w-lg-60 text-center mx-md-auto mb-9">
<a href="https://blog.talentstube.com/contact" target="_blank"><button type="button" class="btn btn-block btn-primary" >Contactez-nous</button></a>
</div>
</div>
<!-- End FAQ Section -->
<!-- Divider -->
<div class="w-50 w-lg-35 mx-auto">
<hr class="my-0">
</div>
<!-- End Divider -->
</main>
<!-- ========== END MAIN CONTENT ========== -->
{% include 'defaultv2/accueil/footer.html.twig' %}
<!-- Begin Panel Login -->
{% include 'defaultv2/accueil/blocLogin.html.twig'
with {
'csrf_token': csrf_token,
'error' : error
} %}
<!-- End Panel Login -->
<!-- Go to Top -->
<a class="js-go-to u-go-to" href="javascript:;" data-position='{"bottom": 30, "right": 100 }' data-type="fixed"
data-offset-top="400" data-compensation="#header" data-show-effect="slideInUp" data-hide-effect="slideOutDown">
<i class="fa fa-arrow-up u-go-to__inner"></i>
</a>
<!-- End Go to Top -->
<!-- JS Global Compulsory -->
<script src="{{ asset('v2/vendor/jquery/dist/jquery.min.js') }}"></script>
<script src="{{ asset('v2/vendor/jquery-migrate/dist/jquery-migrate.min.js') }}"></script>
<script src="{{ asset('v2/vendor/popper.js/dist/umd/popper.min.js') }}"></script>
<script src="{{ asset('v2/vendor/bootstrap/bootstrap.min.js') }}"></script>
<!-- JS Implementing Plugins -->
<script src="{{ asset('v2/vendor/hs-megamenu/src/hs.megamenu.js') }}"></script>
<script src="{{ asset('v2/vendor/jquery-validation/dist/jquery.validate.min.js') }}"></script>
<script src="{{ asset('v2/vendor/malihu-custom-scrollbar-plugin/jquery.mCustomScrollbar.concat.min.js') }}"></script>
<script src="{{ asset('v2/vendor/custombox/dist/custombox.min.js') }}"></script>
<script src="{{ asset('v2/vendor/custombox/dist/custombox.legacy.min.js') }}"></script>
<script src="{{ asset('v2/vendor/typed.js/lib/typed.min.js') }}"></script>
<script src="{{ asset('v2/vendor/slick-carousel/slick/slick.js') }}"></script>
<script src="{{ asset('v2/vendor/cubeportfolio/js/jquery.cubeportfolio.min.js') }}"></script>
<script src="{{ asset('v2/vendor/fancybox/jquery.fancybox.min.js') }}"></script>
<!-- JS Space -->
<script src="{{ asset('v2/js/hs.core.js') }}"></script>
<script src="{{ asset('v2/js/components/hs.header.js') }}"></script>
<script src="{{ asset('v2/js/components/hs.unfold.js') }}"></script>
<script src="{{ asset('v2/js/components/hs.validation.js') }}"></script>
<script src="{{ asset('v2/js/helpers/hs.focus-state.js') }}"></script>
<script src="{{ asset('v2/js/components/hs.malihu-scrollbar.js') }}"></script>
<script src="{{ asset('v2/js/components/hs.fancybox.js') }}"></script>
<script src="{{ asset('v2/js/components/hs.modal-window.js') }}"></script>
<script src="{{ asset('v2/js/components/hs.show-animation.js') }}"></script>
<script src="{{ asset('v2/js/components/hs.slick-carousel.js') }}"></script>
<script src="{{ asset('v2/js/components/hs.cubeportfolio.js') }}"></script>
<script src="{{ asset('v2/js/components/hs.g-map.js') }}"></script>
<script src="{{ asset('v2/js/components/hs.go-to.js') }}"></script>
<script src="{{ asset('v2/js/components/hs.video-player.js') }}"></script>
<!-- JS Plugins Init. -->
<script>
// initialization of google map
{# function initMap() {
$.HSCore.components.HSGMap.init('.js-g-map');
} #}
$(window).on('load', function () {
// initialization of HSMegaMenu component
$('.js-mega-menu').HSMegaMenu({
event: 'hover',
pageContainer: $('.container'),
breakpoint: 767,
hideTimeOut: 0
});
});
$(document).on('ready', function () {
// initialization of header
$.HSCore.components.HSHeader.init($('#header'));
// initialization of fancybox
$.HSCore.components.HSFancyBox.init('.js-fancybox');
// initialization of unfold component
$.HSCore.components.HSUnfold.init($('[data-unfold-target]'), {
afterOpen: function () {
if (!$('body').hasClass('IE11')) {
$(this).find('input[type="search"]').focus();
}
}
});
// initialization of form validation
$.HSCore.components.HSValidation.init('.js-validate', {
rules: {
confirmPassword: {
equalTo: '#password'
}
}
});
// initialization of forms
$.HSCore.helpers.HSFocusState.init();
// initialization of malihu scrollbar
$.HSCore.components.HSMalihuScrollBar.init($('.js-scrollbar'));
// initialization of autonomous popups
$.HSCore.components.HSModalWindow.init('[data-modal-target]', '.js-signup-modal', {
autonomous: true
});
// initialization of show animations
$.HSCore.components.HSShowAnimation.init('.js-animation-link');
// initialization of slick carousel
$.HSCore.components.HSSlickCarousel.init('.js-slick-carousel');
// initialization of video player
$.HSCore.components.HSVideoPlayer.init('.js-inline-video-player');
// initialization of text animation (typing)
$('.u-text-animation.u-text-animation').html("");
// initialization of text animation (typing)
var typed = new Typed(".u-text-animation.u-text-animation--typing", {
strings: ["Attirez des talents", "Valorisez vos collaborateurs", "Dévoilez vos métiers "],
typeSpeed: 60,
loop: true,
backSpeed: 25,
backDelay: 3000
});
// initialization of cubeportfolio
$.HSCore.components.HSCubeportfolio.init('.cbp');
// initialization of go to
$.HSCore.components.HSGoTo.init('.js-go-to');
});
$(document).ready(function () {
$(window).scroll(function () { // check if scroll event happened
if ($(document).scrollTop() > 50) { // check if user scrolled more than 50 from top of the browser window
$("#logoAndNav").css("background-color","#000"); // if yes, then change the color of class "navbar-fixed-top" to white (#f8f8f8)
$("#sidebarNavToggler").css("color","#fff");
} else {
$("#logoAndNav").css("background-color", "transparent"); // if not, change it back to transparent
$("#sidebarNavToggler").css("color", "#000");
}
});
});
</script>
{% endblock %}
{% block javascripts %}
{{ parent() }}
<script src="https://player.vimeo.com/api/player.js"></script>
{% endblock %}
@@ -1,26 +0,0 @@
{% for vid in videos %}
<div class="col s3">
<div class="card z-depth-1 card-video">
{#<div class="card-title-video">#}
{#<div class="row row-noMargin">#}
{#<div class="col s12 col-infos">#}
{#<div class="truncate">#}
{#{{ vid.title }}#}
{#</div>#}
{#</div>#}
{#</div>#}
{#</div>#}
<div class="card-image">
<iframe src="https://player.vimeo.com{{ vid.getCdnUrl()|replace({ "videos": "video"}) }}"
width="100%" height="auto" frameborder="0" webkitallowfullscreen
mozallowfullscreen allowfullscreen></iframe>
</div>
<a class="card-button addExistingVideo tooltipped" data-position="top"
data-tooltip="Choisir cette vidéo" href="#" data-title="{{ vid.getTitle() }}"
data-id="{{ vid.getId() }}">
{#<div class="w-100">Sélectionner</div>#}
<div class="w-100 truncate"><i class="fa fa-angle-double-right" aria-hidden="true"></i> {{ vid.title }}</div>
</a>
</div>
</div>
{% endfor %}
@@ -65,7 +65,7 @@
<table border="0" cellpadding="0" cellspacing="0" width="600" align="center" style="width:600px;"><tr><td>
<![endif]--><div style="margin:0 auto;max-width:600px;background:#F2F2F2;"><table class="" cellpadding="0" cellspacing="0" style="width:100%;font-size:0px;background:#F2F2F2;" align="center"><tbody><tr><td style="text-align:center;vertical-align:top;font-size:0;padding:22px 0;"><!--[if mso]>
<table border="0" cellpadding="0" cellspacing="0"><tr><td style="width:600px;">
<![endif]--><div style="vertical-align:top;display:inline-block;font-size:13px;text-align:left;width:100%;" class="mj-column-per-100" aria-labelledby="mj-column-per-100"><table width="100%"><tbody><tr><td style="font-size:0;padding:0px;" align="center"><table cellpadding="0" cellspacing="0" style="border-collapse:collapse;border-spacing:0px;" align="center"><tbody><tr><td><a href="http://www.talentstube.com/"><img alt="Talents Tube" src="{{ absolute_url(asset('img/mail/logo-talents-tube.png')) }}" style="border:none;display:block;outline:none;text-decoration:none;width:100%;max-width:150px;height:auto;" width="150" height="auto"></a></td></tr></tbody></table></td></tr></tbody></table></div><!--[if mso]>
<![endif]--><div style="vertical-align:top;display:inline-block;font-size:13px;text-align:left;width:100%;" class="mj-column-per-100" aria-labelledby="mj-column-per-100"><table width="100%"><tbody><tr><td style="font-size:0;padding:0px;" align="center"><table cellpadding="0" cellspacing="0" style="border-collapse:collapse;border-spacing:0px;" align="center"><tbody><tr><td><a href="http://www.talentstube.com/"><img alt="Talents Tube" src="https://recruteur.talentstube.com/img/mail/logo-talents-tube.png" style="border:none;display:block;outline:none;text-decoration:none;width:100%;max-width:150px;height:auto;" width="150" height="auto"></a></td></tr></tbody></table></td></tr></tbody></table></div><!--[if mso]>
</td></tr></table>
<![endif]--></td></tr></tbody></table></div><!--[if mso]>
</td></tr></table>
@@ -88,9 +88,9 @@
<table border="0" cellpadding="0" cellspacing="0"><tr><td style="width:600px;">
<![endif]--><div style="vertical-align:top;display:inline-block;font-size:13px;text-align:left;width:100%;" class="mj-column-per-100" aria-labelledby="mj-column-per-100"><table width="100%"><tbody><tr><td style="font-size:0;padding:0px 35px 0px 35px;" align="center"><div class="mj-content" style="cursor:auto;color:#534F4F;font-family:Raleway;font-size:14px;line-height:22px;"><p>Suivez-nous&nbsp;!</p>
<p>
<a style="margin:10px 20px 22px 20px;" href="https://www.facebook.com/TalentsTuber/"><img src="{{ absolute_url(asset('img/mail/facebook.png')) }}" alt="Facebook"></a>
<a style="margin:10px 20px 22px 20px;" href="https://twitter.com/TalentsTuber"><img src="{{ absolute_url(asset('img/mail/twitter.png')) }}" alt="Twitter"></a>
<a style="margin:10px 20px 22px 20px;" href="https://www.linkedin.com/company/talentstube"><img src="{{ absolute_url(asset('img/mail/linkedin.png')) }}" alt="LinkedIn"></a>
<a style="margin:10px 20px 22px 20px;" href="https://www.facebook.com/TalentsTuber/"><img src="https://recruteur.talentstube.com/img/mail/facebook.png" alt="Facebook"></a>
<a style="margin:10px 20px 22px 20px;" href="https://twitter.com/TalentsTuber"><img src="https://recruteur.talentstube.com/img/mail/twitter.png" alt="Twitter"></a>
<a style="margin:10px 20px 22px 20px;" href="https://www.linkedin.com/company/talentstube"><img src="https://recruteur.talentstube.com/img/mail/linkedin.png" alt="LinkedIn"></a>
</p></div></td></tr></tbody></table></div><!--[if mso]>
</td></tr></table>
<![endif]--></td></tr></tbody></table></div><!--[if mso]>
@@ -101,7 +101,7 @@
<![endif]--><div style="margin:0 auto;max-width:600px;background:#F2F2F2;"><table class="" cellpadding="0" cellspacing="0" style="width:100%;font-size:0px;background:#F2F2F2;" align="center"><tbody><tr><td style="text-align:center;vertical-align:top;font-size:0;padding:0px;"><!--[if mso]>
<table border="0" cellpadding="0" cellspacing="0"><tr><td style="width:600px;">
<![endif]--><div style="vertical-align:top;display:inline-block;font-size:13px;text-align:left;width:100%;" class="mj-column-per-100" aria-labelledby="mj-column-per-100"><table width="100%"><tbody><tr><td style="font-size:0;padding:20px 35px 20px 35px;" align="center"><div class="mj-content" style="cursor:auto;color:#7E7878;font-family:Raleway;font-size:14px;line-height:22px;"><p style="font-weight:bold;">Talents Tube</p>
<p>Place Albert Einstein 6 Le Prisme CP60 PIBS 6 CS 72001 - 56038 VANNES</p>
<p>Village By CA - 3 rue Louis de Broglie - PIBS - 56000 VANNES</p>
<p><a style="text-decoration:none;color:#7E7878;font-weight:bold;" href="mailto:contact@talentstube.com">contact@talentstube.com</a></p></div></td></tr></tbody></table></div><!--[if mso]>
</td></tr></table>
<![endif]--></td></tr></tbody></table></div><!--[if mso]>
@@ -12,40 +12,44 @@
<br />
Bonjour {{ user.firstname }} {{ user.lastname }},<br /><br />
<strong>Vous avez reçu une réponse vidéo de lentreprise {{ message.sender.company.brandname }}.</strong><br />
Découvez la réponse vidéo en cliquant sur le bouton ci-dessous.
Découvrez la réponse vidéo en cliquant sur le bouton ci-dessous.
<br/>
<br/>
<div style="text-align:center;">
{% if answer.ad.alias is null %}
<a class="btn btn-default" href="{{ absolute_url(path('talent_ad_detail',{'alias': aliasCompany,'id': answer.id })) }}">Visionner la réponse</a>
{# <a class="btn btn-default" href="{{ absolute_url(path('talent_ad_detail',{'alias': aliasCompany,'id': answer.id })) }}">Visionner la réponse</a> #}
<a class="btn btn-default" href="https://www.talentstube.com">Consulter la réponse</a>
{% else %}
<a class="btn btn-default" href="{{ absolute_url(path('talent_ad_detail',{'alias': answer.ad.alias,'id': answer.id })) }}">Visionner la réponse</a>
{# <a class="btn btn-default" href="{{ absolute_url(path('talent_ad_detail',{'alias': answer.ad.alias,'id': answer.id })) }}">Visionner la réponse</a> #}
<a class="btn btn-default" href="https://www.talentstube.com">Consulter la réponse</a>
{% endif %}
</div>
{% else %}
<br />
Bonjour {{ user.firstname }} {{ user.lastname }},<br /><br />
<strong>Vous avez reçu une réponse de lentreprise {{ message.sender.company.brandname }}.</strong><br />
Découvez la réponse en cliquant sur le bouton ci-dessous.
Découvrez la réponse en cliquant sur le bouton ci-dessous.
<br/>
<br/>
<div style="text-align:center;">
{% if answer.ad.alias is null %}
<a class="btn btn-default" href="{{ absolute_url(path('talent_ad_detail',{'alias': aliasCompany,'id': answer.id })) }}">Consulter la réponse</a>
{# <a class="btn btn-default" href="{{ absolute_url(path('talent_ad_detail',{'alias': aliasCompany,'id': answer.id })) }}">Consulter la réponse</a> #}
<a class="btn btn-default" href="https://www.talentstube.com">Consulter la réponse</a>
{% else %}
<a class="btn btn-default" href="{{ absolute_url(path('talent_ad_detail',{'alias': answer.ad.alias,'id': answer.id })) }}">Consulter la réponse</a>
{# <a class="btn btn-default" href="{{ absolute_url(path('talent_ad_detail',{'alias': answer.ad.alias,'id': answer.id })) }}">Consulter la réponse</a> #}
<a class="btn btn-default" href="https://www.talentstube.com">Consulter la réponse</a>
{% endif %}
</div>
{% endif %}
<br>
<strong>Vous souhaitez contacter lentreprise ?</strong><br /><br />
{# <strong>Vous souhaitez contacter lentreprise ?</strong><br /><br />
Cliquez sur le bouton ci-dessous pour envoyer un email à la personne en charge du recrutement.
<br/>
<br/>
<div style="text-align:center;">
<a class="btn-default btn-white" href="mailto:{{ message.sender.email }}">Répondre à {{ message.sender.firstname }} {{ message.sender.lastname }}</a>
</div>
<br />
<br /> #}
<br />
L’équipe Talents Tube
{% elseif type == 'plain' %}
@@ -6,7 +6,7 @@
Nous avons reçu une demande de changement de mot de passe pour votre compte Talents Tube.
Si vous n'avez pas fait cette demande, veuillez ignorez cet e-mail.
Si vous n'avez pas fait cette demande, veuillez ignorer cet e-mail.
Dans le cas contraire, veuillez cliquer sur le lien ci-dessous pour changer votre mot de passe :
{{ confirmationUrl }}
@@ -6,7 +6,7 @@
<p>
Nous avons reçu une demande de changement de mot de passe pour votre compte Talents Tube.<br />
Si vous n'avez pas fait cette demande, veuillez ignorez cet e-mail.<br />
Si vous n'avez pas fait cette demande, veuillez ignorer cet e-mail.<br />
Dans le cas contraire, veuillez cliquer sur le lien ci-dessous pour changer votre mot de passe :<br /><br />
<a href="{{ confirmationUrl }}">Réinitialiser mon mot de passe</a>
<br /><br />
@@ -0,0 +1,250 @@
{% if is_granted('ROLE_COMPANY') %}
{% set extendTemplate='company/base_dashboard_company.html.twig' %}
{% elseif is_granted('ROLE_TERRITORY') %}
{% set extendTemplate='territory/base_dashboard_territory.html.twig' %}
{% else %}
{% set extendTemplate='talent/base_dashboard_talent.html.twig' %}
{% endif %}
{% extends extendTemplate %}
{% block dashContent %}
<div class=" container-fluid container-fixed-lg bg-white">
<div class="card card-transparent">
<div class="card-header ">
<div class="card-title">Vidéo de présentation
</div>
</div>
{% if app.user.company.presentationVideo %}
{% set media = app.user.company.presentationVideo %}
{% endif %}
<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.company.presentationVideo %}
<strong><span data-id="{{ media.id }}"
class="titleVideo">{{ media.title }}</span></strong>
{% 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"><i class="fa fa-ban"
aria-hidden="true"></i></a>
<a class="btn btn-default btn-video-premier right btn-orange">
{% if app.user.company.presentationVideo %}
Modifier ma vidéo de présentation
{% else %}
Ajouter une vidéo de présentation
{% endif %}
</a>
<div class="clearfix"></div>
</p>
</div>
</div>
</div>
</div>
<div class=" container-fluid container-fixed-lg bg-white">
<div class="card card-transparent">
{% if medias|length > 0 or is_granted('ROLE_COMPANY') or is_granted('ROLE_TERRITORY')%}
<div class="col s12 col-actions">
<button aria-label="" type="button" class="btn btn-primary">Ajouter une vidéo</button>
<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 %}
<div class="row">
{# {% 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 %}
{% 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>
</div>
</div>
{% endif %}
{% endfor %} #}
</div>
</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> #}
<!-- MODAL STICK UP -->
<div class="modal fade stick-up" id="myModal" tabindex="-1" role="dialog" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header clearfix text-left">
<button aria-label="" type="button" class="close" data-dismiss="modal" aria-hidden="true"><i class="pg-icon">close</i>
</button>
<h5>Payment <span class="semi-bold">Information</span></h5>
<p>We need payment information inorder to process your order</p>
</div>
<div class="modal-body">
<form role="form">
<div class="form-group-attached">
<div class="row">
<div class="col-md-12">
<div class="form-group form-group-default">
<label>Company Name</label>
<input type="email" class="form-control">
</div>
</div>
</div>
<div class="row">
<div class="col-md-8">
<div class="form-group form-group-default">
<label>Card Number</label>
<input type="text" class="form-control">
</div>
</div>
<div class="col-md-4">
<div class="form-group form-group-default">
<label>Card Holder</label>
<input type="text" class="form-control">
</div>
</div>
</div>
</div>
</form>
<div class="row">
<div class="col-md-8">
<div class="p-t-20 clearfix p-l-10 p-r-10">
<div class="pull-left">
<p class="bold font-montserrat text-uppercase">TOTAL</p>
</div>
<div class="pull-right">
<p class="bold font-montserrat text-uppercase">$20.00</p>
</div>
</div>
</div>
<div class="col-md-4 m-t-10 sm-m-t-10">
<button aria-label="" type="button" class="btn btn-primary btn-block m-t-5">Pay Now</button>
</div>
</div>
</div>
</div>
<!-- /.modal-content -->
</div>
<!-- /.modal-dialog -->
</div>
<!-- END MODAL STICK UP -->
{% 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>
{% endblock %}
@@ -1,5 +1,5 @@
{% if is_granted('ROLE_COMPANY') %}
{% set extendTemplate='company/base_dashboard_company.html.twig' %}
{% set extendTemplate='company/base_dashboard_company_V2.html.twig' %}
{% elseif is_granted('ROLE_TERRITORY') %}
{% set extendTemplate='territory/base_dashboard_territory.html.twig' %}
{% else %}
@@ -11,6 +11,7 @@
{% 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/>
@@ -24,6 +25,13 @@
{% 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 %}
@@ -32,26 +40,27 @@
width="100%" height="550" frameborder="0" webkitallowfullscreen
mozallowfullscreen allowfullscreen></iframe>
</div>
{% else %}
{# {% else %}
<div class="no-presentation-video">
<strong>
Vous ne disposez pas de vidéo de présentation !
</strong><br/>
Cliquez sur le bouton ci-dessous pour la sélectionner dans votre bibliothèque.
</div>
</div> #}
{% endif %}
</div>
<div class="card-content">
<p>
{% if app.user.getCompany().hasCompanyVideo() != true and is_granted('ROLE_COMPANY') %}
{# {% 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 %}
{% else %} #}
{% if app.user.company.presentationVideo %}
<strong><span data-id="{{ media.id }}"
class="titleVideo">{{ media.title }}</span></strong>
<div><strong><span data-id="{{ media.id }}"
class="titleVideo">{{ media.title }}</span></strong></div>
{% else %}
{% set label_title_video = "" %}
{% if is_granted('ROLE_COMPANY') %}
@@ -62,30 +71,45 @@
<strong>{{ label_title_video }}</strong>
{% endif %}
<a class="btn btn-cancel-premier red tooltipped btn-round right" href="#!"
data-position="top" data-tooltip="Annuler"><i class="fa fa-ban"
aria-hidden="true"></i></a>
data-position="top" data-tooltip="Annuler">Annuler</a>
<a class="btn btn-default btn-video-premier right btn-orange">
{% if app.user.company.presentationVideo %}
Modifier ma vidéo de présentation
Remplacer ma vidéo marque employeur
{% else %}
Ajouter une vidéo de présentation
Choisir une vidéo marque employeur
{% endif %}
</a>
<div class="clearfix"></div>
{% endif %}
</p>
<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>
data-tooltip="Supprimer des vidéos"><i class="fa fa-trash" aria-hidden="true"></i></a>
</div>
{% endif %}
{% for media in medias %}
{% set classVideo = "" %}
@@ -95,6 +119,7 @@
{% 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">
@@ -152,6 +177,7 @@
{% endif %}
{% endfor %}
</div>
</div>
{% set video = null %}
<div id="addVideo" class="modal modal-fixed-footer">
<div class="modal-content">
@@ -12,25 +12,25 @@
<div class="row">
<div class="col s12">
{#<a class="waves-effect waves-light btn btn-default modal-trigger left m-r-10" href="#addVideo">Créer une vidéo</a>#}
{% if medias|length > 0 %}
{# {% if medias|length > 0 %} #}
<a class="waves-effect waves-light btn btn-default modal-trigger left" href="#addVideo">Ajouter une vidéo</a>
<a class="btn btn-delete-video btn-round tooltipped red right" href="#!" data-position="top"
data-tooltip="Supprimer des vidéos"><i class="fa fa-trash" aria-hidden="true"></i>
</a>
{% endif %}
{# {% endif %} #}
</div>
</div>
{% if medias|length == 0 %}
<div class="col s12 col-actions center-align" id="no-video-talents">
{# <div class="col s12 col-actions center-align" id="no-video-talents">
<br/><br/>
<strong class="color-grey3">Vous ne possédez pas encore de CV vidéo!</strong><br/>
<span class="color-grey2">Cliquez sur le bouton pour ajouter votre première vidéo.</span>
<br/><br/>
<a class="waves-effect waves-light btn btn-default modal-trigger" href="#addVideo">Ajouter une
vidéo</a>
</div>
</div> #}
{% else %}
{% if app.user.company.presentationVideo %}
{% set media = app.user.company.presentationVideo %}
@@ -239,7 +239,7 @@
<h2>Vous souhaitez partager votre profil à d'autres entreprises?</h2>
<h3>Copiez et ajoutez l'adresse ci-dessous lors de vos candidatures</h3>
<input id="linkToCopy" type="text" value="https://www.talentstube.com{{ path("talent_show", {"alias": app.user.company.alias }) }}">
<input id="linkToCopy" type="text" value="https://recruteur.talentstube.com{{ path("talent_show", {"alias": app.user.company.alias }) }}">
<a class="btn btn-default btn-round" id="copyLink">Copier</a><br />
<a class="modal-action modal-close">Fermer</a>
</div>
@@ -102,7 +102,7 @@
dès aujourdhui !
</p>
<br /><br />
<a class="btn btn-default" title="contactez nous" href="https://blog.talentstube.com/contact.html">Contactez nous dès aujourdhui !</a>
<a class="btn btn-default" title="contactez nous" href="https://blog.talentstube.com/contact">Contactez nous dès aujourdhui !</a>
<br />
</div>
</div>
@@ -168,7 +168,7 @@
<div class="card-title"><h4>Réalisation vidéo</h4></div>
<div class="price blue-text">Sur devis</div>
<div class="center-align">
<a href="https://blog.talentstube.com/contact.html" class="btn btn-default">Demander un devis</a>
<a href="https://blog.talentstube.com/contact" class="btn btn-default">Demander un devis</a>
</div>
<div class="divider"></div>
<p>Nos équipes vous aident à <strong>écrire le scénario RH et/ou Marque Employeur</strong>.</p>
@@ -91,7 +91,7 @@
!
</div>
<div class="col s12 center-align m-t-50 m-b-50">
<a class="btn btn-default" title="contactez nous" href="https://blog.talentstube.com/contact.html">Demander un devis</a>
<a class="btn btn-default" title="contactez nous" href="https://blog.talentstube.com/contact">Demander un devis</a>
<br />
</div>
</div>
@@ -102,7 +102,7 @@
</div>
<div class="row center-align m-t-100">
<p>
<a href="https://blog.talentstube.com/contact.html" class="btn btn-default">Nous contacter</a>
<a href="https://blog.talentstube.com/contact" class="btn btn-default">Nous contacter</a>
</p>
</div>
</div>
@@ -117,7 +117,7 @@
</div>
<div class="row center-align m-t-50">
<p>
<a href="https://blog.talentstube.com/contact.html" class="btn btn-default white">Demander un devis</a>
<a href="https://blog.talentstube.com/contact" class="btn btn-default white">Demander un devis</a>
</p>
</div>
</div>
@@ -134,7 +134,7 @@
</div>
<div class="row center-align m-t-50 m-b-50">
<p>
<a class="btn btn-default" title="contactez nous" href="https://blog.talentstube.com/contact.html">Demander votre vidéo marque employeur</a>
<a class="btn btn-default" title="contactez nous" href="https://blog.talentstube.com/contact">Demander votre vidéo marque employeur</a>
</p>
</div>
</div>
@@ -121,7 +121,7 @@
</div>
<div class="row center-align">
<p>
<a class="btn btn-default" title="contactez nous" href="https://blog.talentstube.com/contact.html">Contactez nous dès aujourdhui !</a>
<a class="btn btn-default" title="contactez nous" href="https://blog.talentstube.com/contact">Contactez nous dès aujourdhui !</a>
</p>
</div>
</div>
@@ -192,7 +192,7 @@
<div class="row center-align">
<p>
<br />
<a href="https://blog.talentstube.com/contact.html" class="btn btn-default">Demander une vidéo offre emploi</a>
<a href="https://blog.talentstube.com/contact" class="btn btn-default">Demander une vidéo offre emploi</a>
</p>
</div>
</div>
@@ -90,7 +90,7 @@
</div>
<div class="row center-align m-t-100">
<p>
<a href="https://blog.talentstube.com/contact.html" class="btn btn-default">Demander une vidéo territoire</a>
<a href="https://blog.talentstube.com/contact" class="btn btn-default">Demander une vidéo territoire</a>
</p>
</div>
</div>
@@ -247,9 +247,9 @@
<div class="col s6">
{{ form_row(formProfile.birthday) }}
</div>
<div class="col s6">
{# <div class="col s6">
{{ form_row(formProfile.gender) }}
</div>
</div> #}
<div class="col s12">
{{ form_row(formProfile.company.address) }}
{{ form_row(formProfile.company.addressComp) }}
@@ -6,7 +6,28 @@
{% block description %}Découvrez le CV vidéo de
{{ user.firstname }}. Trouvez le prochain talent de votre équipe sur Talents Tube.{% endblock %}
{% block ogtc %}
{#Twitter Card data pour les données enrichies sur Twitter#}
<meta name="twitter:card" content="summary">
<meta name="twitter:site" content="@TalentsTube">
<meta name="twitter:title" content="Découvrez le CV vidéo de
{{ user.firstname }} sur Talents Tube">
<meta name="twitter:description" content="Découvrez le CV vidéo de
{{ user.firstname }}. Trouvez le prochain talent de votre équipe sur Talents Tube.">
<meta name="twitter:image" content="{{ absolute_url(asset('img/mail/logo-talents-tube.png')) }}">
{#Open Graph data pour le partage sur les réseaux sociaux (ex Facebook..)#}
<meta property="og:title" content="Découvrez le CV vidéo de
{{ user.firstname }} sur Talents Tube" />
<meta property="og:type" content="article" />
<meta property="og:image" content="{{ absolute_url(asset('img/mail/logo-talents-tube.png')) }}" />
<meta property="og:description" content="Découvrez le CV vidéo de
{{ user.firstname }}. Trouvez le prochain talent de votre équipe sur Talents Tube." />
<meta property="og:site_name" content="Talents Tube" />
<meta property="og:url" content="{{ url(app.request.attributes.get('_route'), app.request.attributes.get('_route_params')) }}" />
{% endblock %}
{% block content %}
{% include 'default/flash_message.html.twig' %}
@@ -201,8 +222,8 @@
<h4 class="no-margin-top">
Contacter le talent
</h4>
Ex <p>
péditeur :
<p>
Expéditeur :
{{ app.user.firstname }}
{{ app.user.lastname }}
</p>
@@ -35,8 +35,8 @@ monolog:
# type: chromephp
# level: info
swiftmailer:
delivery_addresses: ['%delivery_addresses%']
# swiftmailer:
# delivery_addresses: ['%delivery_addresses%']
# Twig Configuration
twig:
View File
@@ -3,8 +3,8 @@ parameters:
onurb_yuml.extension: jpg
mailer_transport: smtp
mailer_host: mail.gandi.net
mailer_user: noreply@talentstube.com
mailer_password: zfYwOGBHweCQ8OI9ghF6lUyo
mailer_user: noreply@talentstube.io
mailer_password: eaV76D3AEhRbLxNVwfuz9
secret: 416157a2389cec970df2a46fa8ffd361b76516d1
database_host: tt-website.postgres.dev
database_port: '5432'
@@ -25,7 +25,7 @@ parameters:
media_photo_dir: '%kernel.root_dir%/../web/uploads/photos/'
elastic_host: tt-website.elasticsearch.dev
elastic_port: 9200
delivery_addresses: thomas.berrod@e-declic.com
delivery_addresses: l.laniau@talentstube.com
push_params:
push_notification_file_path: '%kernel.root_dir%/../web/push/'
push_network_config:
@@ -1,15 +1,17 @@
parameters:
mailer_transport: smtp
mailer_host: mail.gandi.net
mailer_user: noreply@talentstube.com
mailer_password: zfYwOGBHweCQ8OI9ghF6lUyo
# mailer_user: noreply@talentstube.io
# mailer_password: zfYwOGBHweCQ8OI9ghF6lUyo
mailer_user: noreply@talentstube.io
mailer_password: eaV76D3AEhRbLxNVwfuz9
secret: 416157a2389cec970df2a46fa8ffd361b76516d1
database_host: 'tt-website.postgres.preprod'
database_port: '5432'
database_name: database
database_user: user
database_password: 7C|Uk2B[.>"6{QO{
#database_password: b|RN:iR<g,TNMqM6
#database_password: 7C|Uk2B[.>"6{QO{
database_password: b|RN:iR<g,TNMqM6
#Mongo
mongodb_server: "mongodb://tt-website.mongo.preprod:27017"
#Prestashop
@@ -28,7 +30,7 @@ parameters:
elastic_host: tt-website.elasticsearch.preprod
elastic_port: 9200
delivery_addresses: thomas.berrod@e-declic.com
delivery_addresses: l.laniau@talentstube.com
push_params:
push_notification_file_path: '%kernel.root_dir%/../web/push/'
push_network_config:
@@ -1,8 +1,10 @@
parameters:
mailer_transport: smtp
mailer_host: mail.gandi.net
mailer_user: noreply@talentstube.com
mailer_password: zfYwOGBHweCQ8OI9ghF6lUyo
#mailer_user: noreply@talentstube.com
#mailer_password: zfYwOGBHweCQ8OI9ghF6lUyo
mailer_user: noreply@talentstube.io
mailer_password: eaV76D3AEhRbLxNVwfuz9
secret: 416157a2389cec970df2a46fa8ffd361b76516d1
database_host: 'tt-website.postgres.prod'
database_port: '5432'
@@ -27,15 +29,15 @@ parameters:
elastic_host: tt-website.elasticsearch.prod
elastic_port: 9200
delivery_addresses: thomas.berrod@e-declic.com
delivery_addresses: l.laniau@talentstube.com
push_params:
push_notification_file_path: '%kernel.root_dir%/../web/push/'
push_network_config:
public_key: '%push_params.public_key%'
private_key: g2Yimi3AK1ppvRqwikPyTTWcEEsTdRPxoBJ2Vi9bOWw
service_mail_subject: 'mailto:looping@talentstube.com'
ttl: 300
urgency: high
topic: Emploi
push_notification_file_path: '%kernel.root_dir%/../web/push/'
push_network_config:
public_key: '%push_params.public_key%'
private_key: g2Yimi3AK1ppvRqwikPyTTWcEEsTdRPxoBJ2Vi9bOWw
service_mail_subject: 'mailto:looping@talentstube.com'
ttl: 300
urgency: high
topic: Emploi
push_params.public_key: BG2lV673DvB67dzEwX9GKfds3sXaEdtZo2oWO1cO2xUdTJAFZ_rV_UrP1nHQz-F8LJNO9HxG0kmQRIb54JL1ZCA
@@ -28,6 +28,65 @@ class AdController extends Controller
/***********************
* Ad - Company
***********************/
/**
* @Route("/partage/show/{id}", name="anwser_share_show")
*/
public function answerShowAction(Request $request, Ad $ad)
{
$session = $request->getSession();
$ad_authorisation = $session->get('ad_authorisation');
if($ad_authorisation == $ad->getId()){
$user = $this->getUser();
$em = $this->getDoctrine()->getManager();
$answers = $em->getRepository('AppBundle:Answer')->getAnswerByAdsShare( $ad->getId());
return $this->render('company/ad_answers.html.twig', array(
'answers' => $answers,
'titreAnnonce' => $ad->getTitle(),
));
}else{
return $this->redirectToRoute('anwser_share_show_connect', array(
'id' => $ad->getId(),
'error' => true
));
}
}
/**
* @Route("/partage/{id}", name="anwser_share_show_connect")
*/
public function answersConnectShowAction(Request $request, Ad $ad)
{
$error= $request->query->get('error');
return $this->render('company/ad_answers_connect.html.twig', array(
'adId' => $ad->getId(),
'error' => $error,
));
}
/**
* @Route("/connectionpartage", name="connectionpartage")
*/
public function answersConnectAction(Request $request)
{
$adId= $request->query->get('adId');
$mdp= $request->query->get('mdp');
$session = $request->getSession();
//verifier si le mot de passe est valide pour l'annonce
$em = $this->getDoctrine()->getManager();
$retour = $em->getRepository('AppBundle:Ad')->findBy(array('id' => $adId, 'code'=>$mdp));
if(count($retour)>0){
$session->set('ad_authorisation', $adId);
return new JsonResponse(array('retour' => "true"));
}else{
$session->set('ad_authorisation', null);
//TODO redirection vers page de connexion avec message d'erreur
//return $this->redirectToRoute('anwser_share_show');
return new JsonResponse(array('retour' => "false"));
}
}
/**
* @Route("/entreprise/me/espace-oe/annonce", name="company_ad")
@@ -55,9 +114,21 @@ class AdController extends Controller
$form = $this->createForm(AdType::class, $ad);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$type_contract = $form['contract_type']->getData();
$arrayExtra = $ad->getExtra();
$type_contract = $form['contract_type']->getData();
$arrayExtra['contract_type'] = $type_contract;
//LLAN Ajout de la notion de temps partiel, plein temps (5 oct 2020)
$temps_type = $form['temps_type']->getData();
$arrayExtra['temps_type'] = $temps_type;
//LLAN US 380 :mise en place du nb de mois de contrat (CDD)
$duree_contrat = $form['duree_contrat']->getData();
$arrayExtra['duree_contrat'] = $duree_contrat;
//LLAN US 329 :mise en place du nb d'heure
$nombre_heure = $form['nombre_heure']->getData();
$arrayExtra['nombre_heure'] = $nombre_heure;
//LLAN US 295 :mise en place du télétravail
$teletravail = $form['teletravail']->getData();
$arrayExtra['teletravail'] = $teletravail;
$ad->setExtra($arrayExtra);
$adManager = $this->get('app.ad_manager');
$adManager->updateAd($ad);
@@ -90,7 +161,7 @@ class AdController extends Controller
/**
* @Route("/entreprise/me/espace-oe/annonce/{id}/editer", name="company_ad_edit")
* @Security("(ad.getStatus() == 'DRAFT' or ad.getStatus() == 'DECLINED') and ad.getCompany() == user.getCompany()")
* @Security("(ad.getStatus() == 'DRAFT' or ad.getStatus() == 'DECLINED' or ad.getStatus() == 'TO_PUBLISH') and ad.getCompany() == user.getCompany()")
*/
public function companyEditAdAction(Request $request, Ad $ad)
{
@@ -105,9 +176,45 @@ class AdController extends Controller
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$type_contract = $form['contract_type']->getData();
$temps_type = $form['temps_type']->getData();
$teletravail = $form['teletravail']->getData();
$arrayExtra = $ad->getExtra();
$arrayExtra['contract_type'] = $type_contract;
$arrayExtra['temps_type'] = $temps_type;
$arrayExtra['teletravail'] = $teletravail;
//LLAN US 380 :mise en place du nb de mois de contrat (CDD)
$duree_contrat = $form['duree_contrat']->getData();
$arrayExtra['duree_contrat'] = $duree_contrat;
//LLAN US 329 :mise en place du nb d'heure
$nombre_heure = $form['nombre_heure']->getData();
$arrayExtra['nombre_heure'] = $nombre_heure;
$ad->setExtra($arrayExtra);
//US 340
$competences = $form['competences']->getData();
$competencesList = explode(",", $competences);
//dump($competencesList);
//$competencesJson = "{";
$array = Array ();
for ($i = 0; $i < count($competencesList)-1; $i++) {
//dump($i);
//$competence = split("_", $competencesList);
//dump($competencesList[$i]);
list($competenceLibelle, $competenceId) =
explode("_", $competencesList[$i]);
if($competenceLibelle && $competenceId){
$array[] = Array (
intval($competenceId) => $competenceLibelle);
}
}
$ad->setCompetences(
$array
);
$adManager = $this->get('app.ad_manager');
$adManager->updateAd($ad);
return $this->redirectToRoute('create_media', array('id' => $ad->getId()));
@@ -128,8 +235,46 @@ class AdController extends Controller
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$type_contract = $form['contract_type']->getData();
$temps_type = $form['temps_type']->getData();
$teletravail = $form['teletravail']->getData();
//LLAN US 380 :mise en place du nb de mois de contrat (CDD)
$duree_contrat = $form['duree_contrat']->getData();
//LLAN US 329 :mise en place du nb d'heure
$nombre_heure = $form['nombre_heure']->getData();
//US 340
$competences = $form['competences']->getData();
$competencesList = explode(",", $competences);
//dump($competencesList);
//$competencesJson = "{";
$array = Array ();
for ($i = 0; $i < count($competencesList)-1; $i++) {
//dump($i);
//$competence = split("_", $competencesList);
//dump($competencesList[$i]);
list($competenceLibelle, $competenceId) =
explode("_", $competencesList[$i]);
if($competenceLibelle && $competenceId){
$array[] = Array (
intval($competenceId) => $competenceLibelle);
}
}
$ad->setCompetences(
$array
);
$arrayExtra = $ad->getExtra();
$arrayExtra['contract_type'] = $type_contract;
$arrayExtra['temps_type'] = $temps_type;
$arrayExtra['teletravail'] = $teletravail;
$arrayExtra['duree_contrat'] = $duree_contrat;
$arrayExtra['nombre_heure'] = $nombre_heure;
$ad->setExtra($arrayExtra);
$adManager = $this->get('app.ad_manager');
$adManager->updateAd($ad);
@@ -209,7 +354,7 @@ class AdController extends Controller
$em->flush();
$em->clear();
return $this->redirectToRoute('company_ad_validation', array('id' => $ad->getId()));
return $this->redirectToRoute('company_ad', array('id' => $ad->getId()));
}
return $this->render('company/ad_edit_date.html.twig', [
@@ -9,10 +9,13 @@ use AppBundle\Form\Admin\ModerationDeclineType;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Security;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\JsonResponse;
class AnswerController extends Controller
class AnswerController extends AbstractController
{
/***********************
@@ -24,14 +27,224 @@ class AnswerController extends Controller
*/
public function adminAnswerModerationListAction()
{
$em = $this->getDoctrine()->getManager();
$answers = $em->getRepository('AppBundle:Answer')->findAll();
// Passage en multipage ajax
// $em = $this->getDoctrine()->getManager();
// $answers = $em->getRepository('AppBundle:Answer')->findAll();
return $this->render('admin/answer_list_moderation.html.twig', array(
'answers' => $answers,
return $this->render('admin/answer_list_moderation_v2.html.twig', array(
));
}
/**
* @Route("/admin/moderation/anwser/list/test", name="admin_anwser_moderation_list_test")
*/
public function adminAnswerModerationListTestAction(Request $request)
{
// $em = $this->getDoctrine()->getManager();
// $answers = $em->getRepository('AppBundle:Answer')->findAll();
return $this->render('admin/answer_list_moderation_v2.html.twig', array(
// 'answers' => $answers,
));
}
//
/**
* @Route("/admin/alimenterCandidatures", name="alimenterCandidatures")
*/
public function listDatatablesAction(Request $request)
{
// Set up required variables
$this->entityManager = $this->getDoctrine()->getManager();
$this->repository = $this->entityManager->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 or whatever is needed";
// Get results from the Repository
$results = $this->repository->getRequiredDTData($start, $length, $orders, $search, $columns, $otherConditions = null);
// 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 'ad_id':
{
$name = $answer->getId();
// Do this kind of treatments if you suspect that the string is not JS compatible
$name = htmlentities(str_replace(array("\r\n", "\n", "\r"), ' ', $name));
// // View permission ?
// if ($this->get('security.authorization_checker')->isGranted('view_town', $town))
// {
// // Get the ID
// $id = $answer->getId();
// // Construct the route
// $url = $this->generateUrl('playground_town_view', array('id' => $id));
// // Construct the html code to send back to datatables
// $responseTemp = "<a href='".$url."' target='_self'>".$ref."</a>";
// }
// else
// {
$responseTemp = $name;
//}
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
$responseTemp = $answer->getUser()->getLastname();
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
$responseTemp = $answer->getUser()->getFirstname();
break;
}
case 'entreprise':
{
// 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->getCompany()){
$responseTemp = $answer->getCompany()->getBrandName()." / ";
if($answer->getAd()){
$responseTemp .= $answer->getAd()->getTitle();
}
}else{
$responseTemp = "ND";
}
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 'video':
{
$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 'status':
{
$responseTemp = "<span id='status_".$answer->getId()."'> ".$answer->getstatus()."</span> ";
break;
}
case 'actions':
{
$responseTemp = "Actions :<select class='changeStatus' onChange='changerStatut(this.value, ".$answer->getId().")' name='changeStatus' data-id=".$answer->getId()."><option value='null'>choisir</option><option value='SENDED'>Envoyé</option><option value='DRAFT'>Brouillon</option><option value='REFUSED'>Refuser</option></select>";
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("/admin/config/answer/{id}/status/{status}", name="admin_answer_status")
*/

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