Compare commits

...

67 Commits

Author SHA1 Message Date
llaniau bde583e14e Mise en place mentions, cgu et connexion V2 2020-07-22 08:34:05 +02:00
llaniau d803cb4bdd cgu v2.0.1 2020-07-20 18:14:30 +02:00
llaniau 1a987283b7 Mise en place api pour upload CV ds web app 2020-07-20 14:39:02 +02:00
llaniau d72095f615 SQL a passer en pre prod/prod4 2020-07-15 18:08:50 +02:00
llaniau 90be4bfea7 update bug company 2020-07-15 16:26:36 +02:00
llaniau de07e5f26c Mise à jour témoignage V2.0.1 2020-07-15 16:07:29 +02:00
llaniau 910f9645d8 Mise en place upload video presentation cote Symfony 2020-07-08 19:49:57 +02:00
llaniau 227fe09a94 Push de fin de journée du 07/07 : Mise en place connection plateforme V2 2020-07-07 17:14:00 +02:00
llaniau c660c11879 Commit de mise en place page offre d'emploi video V2 2020-07-06 17:04:18 +02:00
llaniau 8899a93ea5 mise a jour du menu du haut 2020-07-06 16:21:39 +02:00
llaniau 305bf4deb3 Mise en place candidature video Design V2 2020-07-06 16:12:06 +02:00
llaniau d564ca1b85 Modif template V2 2020-07-06 10:26:23 +02:00
llaniau b3135e62f5 modif Company 2020-06-30 14:52:15 +02:00
llaniau dc2872e178 modif entity company 2020-06-30 14:46:40 +02:00
llaniau cf057c9c63 V2.0.1 2020-06-29 17:15:02 +02:00
llaniau e5c46b2985 Mise en place bootstrap V2.0.1 2020-06-29 15:44:07 +02:00
Sébastien 47d571baae Fix : Button disabled 2020-02-12 09:26:05 +01:00
Sébastien f5f0c39dd7 Feat : Update style of answer page 2020-02-04 08:15:33 +01:00
Grégoire c83b71853b feat and fix : statut of answer last message / add no empty message / delete statut CHAT 2020-01-14 16:05:31 +01:00
Grégoire 8bc3165995 fix : ajaxRecStat on user null for google robot (3) 2020-01-03 11:13:20 +01:00
Grégoire dffcf66ce3 fix : ajaxRecStat on user null for google robot (2) 2020-01-03 11:09:31 +01:00
Grégoire 41c046392e fix : ajaxRecStat on user null for google robot 2020-01-03 10:59:25 +01:00
Grégoire e81e2dce9d fix : problem saving company user parameters
hide birthday field (date issue) /entreprise/me/mon_compte
2020-01-03 10:25:26 +01:00
Grégoire 3ffc3c8d3b fix : sendtime + message video + contact_talent 2020-01-02 15:29:55 +01:00
Grégoire e35cb0c461 fix : link mail answer spontaneous 2019-12-30 16:22:13 +01:00
Grégoire db084707bb fix : search bar v2 2019-12-30 13:20:11 +01:00
Grégoire 1a9fff778a fix : search bar 2019-12-30 12:27:11 +01:00
Sébastien 90a38edb29 Fix: Add new noreply email 2019-11-28 08:31:58 +01:00
Sébastien fc1b4a3e2a Feat: add popup when change company user email 2019-11-26 08:52:59 +01:00
Sebastien Glatz 94a946e36d Fix: little space fix 2019-11-22 16:12:09 +01:00
Sébastien f06cbe296f Fix: Banner color and padding 2019-11-21 15:56:48 +01:00
Sébastien e2a98aaed3 Feat: Edit form to add bootstrap style on input 2019-11-21 15:36:32 +01:00
Sébastien beee2c5635 Feat: Add field email on Company Edition 2019-11-21 14:33:42 +01:00
Grégoire bca29b9547 delete TalentController api 2019-11-05 14:07:50 +01:00
Grégoire 823a781d3a minor fix Push Notification 2019-11-05 11:24:34 +01:00
Grégoire 2a9e728354 correctif Menu 2019-10-28 17:03:46 +01:00
Grégoire 074c125f8c Redirect monCompte API 2019-10-28 14:36:14 +01:00
Grégoire 0b2898d170 Add twitter, linkedin … for getIdCard() 2019-10-15 09:57:37 +02:00
Grégoire 12525dbf16 Merge branch 'master' of https://git.e-declic.net/talents-tube/website 2019-10-14 16:43:13 +02:00
Grégoire 4a17adf687 add phone / linkedin / twitter … field for API form 2019-10-14 16:32:39 +02:00
Huaoe f4e412d792 Merge branch 'master' of https://git.e-declic.net/talents-tube/website 2019-10-11 15:48:44 +02:00
Grégoire 61786797c8 API : add getUserSubscriptionToPush (old : isUserSubscribedToPush) 2019-10-11 15:17:43 +02:00
Huaoe 57587a4a97 Merge branch 'master' of https://git.e-declic.net/talents-tube/website 2019-10-11 14:29:20 +02:00
Grégoire fd048d5a0e Merge branch 'master' of https://git.e-declic.net/talents-tube/website 2019-10-11 14:19:28 +02:00
Grégoire 229893dc95 API : add isUserSubscribedToPush 2019-10-11 14:19:02 +02:00
Grégoire 26c6e2103d API : ad visit record for companies and ads pages 2019-10-10 16:59:08 +02:00
Grégoire 8830b5ccde Set isPrivate true by default for companies 2019-10-10 16:57:50 +02:00
Huaoe 2bc2d87b8c UpdateUser fix request->request 2019-10-10 16:24:23 +02:00
Huaoe 278c558c9e Merge branch 'master' of https://git.e-declic.net/talents-tube/website 2019-10-10 14:49:02 +02:00
Huaoe 98545707b3 photo return 2019-10-09 17:01:58 +02:00
Sébastien 52d105efb4 Feat: add field phone and edit set extra 2019-10-09 11:31:53 +02:00
Sébastien 027c3fd2d1 Fix: presentationVideo syntax error 2019-10-09 11:27:52 +02:00
Grégoire 824ff9f1ec Change query / no selecting talent video in chat 2019-10-09 10:48:56 +02:00
Grégoire 606e29280b Fix bug draft message show app 2019-10-08 16:05:19 +02:00
Sébastien 3a29c647dd Fix: serialize tags for answer 2019-10-07 15:15:18 +02:00
Huaoe 57dd053693 Merge branch 'master' of https://git.e-declic.net/talents-tube/website 2019-10-07 09:51:42 +02:00
Huaoe e57173f835 upload profil picture 2019-10-07 09:51:35 +02:00
Sébastien 8f4ef35ddf Feat: Serialize publicTag for offer detail 2019-10-04 13:48:37 +02:00
Sébastien 346b788f83 Feat: Add titleTalent in extra to update from app 2019-10-04 13:48:08 +02:00
Sébastien edf35c74e8 Feat: Serialize territory type 2019-10-01 18:11:08 +02:00
Sébastien 75f2bbf6a7 Fix: php syntax error 2019-10-01 18:10:15 +02:00
Grégoire 0cbe670c90 change order for entreprises 2019-10-01 16:28:52 +02:00
Sébastien 2d595c1c3a Serialize territories for ad detail 2019-09-26 11:41:08 +02:00
Sébastien 98ebde7e72 Add linkedin twitter and website data for app 2019-09-26 11:40:36 +02:00
Huaoe d607962523 style.css generated 2019-09-16 16:20:09 +02:00
Huaoe b4ae35f4a6 yellow banner Off 2019-09-16 16:18:44 +02:00
Huaoe be37e97a19 fix PWA link 2019-09-16 15:50:53 +02:00
3139 changed files with 268005 additions and 10249 deletions
+5 -1
View File
@@ -11,4 +11,8 @@ volume/www/website/.idea
/volume/www/website/store/themes/talentstube-20170413/cache/*
/volume/www/website/store/img/tmp/*
volume/www/website/www/app/Resources/views/default/index.html.twig
TODO
volume/www/website/www/.vscode/settings.json
volume/www/website/www/app/config/jwt/private.pem
volume/www/website/www/app/config/jwt/public.pem
volume/www/website/www/web/sql/upload.pgsql
@@ -0,0 +1,29 @@
<?php declare(strict_types=1);
namespace Application\Migrations;
use Doctrine\DBAL\Schema\Schema;
use Doctrine\Migrations\AbstractMigration;
/**
* Auto-generated Migration: Please modify to your needs!
*/
final class Version20200715123752 extends AbstractMigration
{
public function up(Schema $schema) : void
{
// this up() migration is auto-generated, please modify it to your needs
$this->abortIf($this->connection->getDatabasePlatform()->getName() !== 'postgresql', 'Migration can only be executed safely on \'postgresql\'.');
$this->addSql('ALTER TABLE company ADD cv VARCHAR(255) DEFAULT NULL');
}
public function down(Schema $schema) : void
{
// this down() migration is auto-generated, please modify it to your needs
$this->abortIf($this->connection->getDatabasePlatform()->getName() !== 'postgresql', 'Migration can only be executed safely on \'postgresql\'.');
$this->addSql('CREATE SCHEMA public');
$this->addSql('ALTER TABLE company DROP cv');
}
}
@@ -0,0 +1,198 @@
<div>
{% if is_granted("IS_AUTHENTICATED_REMEMBERED") %}
{{ 'layout.logged_in_as'|trans({'%username%': app.user.username}, 'FOSUserBundle') }} |
<a href="{{ path('fos_user_security_logout') }}">
{{ 'layout.logout'|trans({}, 'FOSUserBundle') }}
</a>
{% else %}
<a href="{{ path('fos_user_security_login') }}">{{ 'layout.login'|trans({}, 'FOSUserBundle') }}</a>
{% endif %}
</div>
{% for type, messages in app.session.flashBag.all %}
{% for message in messages %}
<div class="{{ type }}">
{{ message|trans({}, 'FOSUserBundle') }}
</div>
{% endfor %}
{% endfor %}
{% block fos_user_content %}
<div>
{{ form_start(register_form, {'method': 'post', 'action': path('fos_user_registration_register'), 'attr': {'class': 'fos_user_registration_register'}})
}}
{{ form_errors(register_form) }}
<!-- Signup -->
<div id="signup" style="display: none; opacity: 0;" data-target-group="idForm">
<!-- Title -->
<header class="text-center mb-5">
<h2 class="h4 mb-0">Créer un compte entreprise</h2>
<p>Remplissez tous les champs.</p>
</header>
<!-- 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-user form__text-inner"></i>
</span>
</div>
{# {{ form_row(register_form.firstname, {'label': 'Prénom'}) }} #}
{{ form_widget(register_form.firstname, { 'attr': {'class': "form-control form__input",
'placeholder': 'Prénom' , 'aria-label':'Prénom', 'data-error-class' : 'u-has-error', 'data-success-class' : 'u-has-success', 'data-msg' : 'Entrez un prénom valide'} }) }}
{# <input type="email" class="form-control form__input" name="email" required placeholder="Email"
aria-label="Email" data-msg="Please enter a valid email address." data-error-class="u-has-error"
data-success-class="u-has-success"> #}
</div>
</div>
<!-- End Input -->
<!-- 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-user form__text-inner"></i>
</span>
</div>
{# {{ form_row(register_form.lastname, {'label': 'Nom'}) }} #}
{{ form_widget(register_form.lastname, { 'attr': {'class': "form-control form__input",
'placeholder': 'Nom' , 'aria-label':'Nom', 'data-error-class' : 'u-has-error', 'data-success-class' : 'u-has-success', 'data-msg' : 'Entrez un nom valide'} }) }}
{# <input type="email" class="form-control form__input" name="email" required placeholder="Email"
aria-label="Email" data-msg="Please enter a valid email address." data-error-class="u-has-error"
data-success-class="u-has-success"> #}
</div>
</div>
<!-- End Input -->
<!-- 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-envelope form__text-inner"></i>
</span>
</div>
{# {{ form_row(register_form.email, {'label': 'E-mail'}) }} #}
{{ form_widget(register_form.email, { 'attr': {'class': "form-control form__input",
'placeholder': 'Email' , 'aria-label':'Email', 'data-error-class' : 'u-has-error', 'data-success-class' : 'u-has-success', 'data-msg' : 'Entrez un email valide'} }) }}
{# <input type="email" class="form-control form__input" name="email" required placeholder="Email"
aria-label="Email" data-msg="Please enter a valid email address." data-error-class="u-has-error"
data-success-class="u-has-success"> #}
</div>
</div>
<!-- End Input -->
<!-- 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-star form__text-inner"></i>
</span>
</div>
{# {{ form_row(register_form.username, {'label': 'Username'}) }} #}
{{ form_widget(register_form.username, { 'attr': {'class': "form-control form__input",
'placeholder': 'Identifiant' , 'aria-label':'username', 'data-error-class' : 'u-has-error', 'data-success-class' : 'u-has-success', 'data-msg' : 'Entrez un email valide'} }) }}
{# <input type="email" class="form-control form__input" name="email" required placeholder="Email"
aria-label="Email" data-msg="Please enter a valid email address." data-error-class="u-has-error"
data-success-class="u-has-success"> #}
</div>
</div>
<!-- End Input -->
<!-- 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>
{# {{ form_row(register_form.plainPassword.first, {'label': 'Mot de passe'}) }} #}
{{ form_widget(register_form.plainPassword.first, { 'attr': {'class': "form-control form__input",
'placeholder': 'Mot de passe' , 'aria-label':'Mot de passe', 'data-error-class' : 'u-has-error', 'data-success-class' : 'u-has-success', 'data-msg' : 'Mot de passe invalide'} }) }}
</div>
</div>
<!-- End Input -->
<!-- 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-key form__text-inner"></i>
</span>
</div>
{# {{ form_row(register_form.plainPassword.second, {'label': 'Répéter le mot de passe'}) }} #}
{{ form_widget(register_form.plainPassword.second, { 'attr': {'class': "form-control form__input",
'placeholder': 'Répéter le mot de passe' , 'aria-label':'Répéter le mot de passe', 'data-error-class' : 'u-has-error', 'data-success-class' : 'u-has-success', 'data-msg' : 'Mot de passe invalide'} }) }}
</div>
</div>
{% if destination_login is defined %}
<input type="hidden" name="_target_path" value="{{ destination_login }}" />
{% endif %}
<!-- End Input -->
<div class="mb-3">
{% set label = 'user.cgu.label'|trans({'%link_start%' : '<a style="margin-bottom:25px;" target="_blank" href="'~path('service_cgu')~'">', '%link_end%' : '</a>'}, 'messages') | raw %}
{{ form_errors(register_form.cgu) }}
{{ 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>
{% endspaceless %}
{% endblock %}
</div>
<div class="mb-3">
{{ form_row(register_form._token) }}
token {{ csrf_token }}
{% if csrf_token %}
<input type="hidden" name="_csrf_token" ID="_csrf_token" value="{{ csrf_token }}" />
{% endif %}
<input type="hidden" name="_csrf_token" value="{{ csrf_token('authenticate') }}">
<input class="btn btn-default btn-round" type="submit" id="_submit_register" name="_submit_register"
value="Créer un compte!" />
<button type="submit" class="btn btn-block btn-primary">S'inscrire</button>
</div>
<div class="text-center mb-3">
<p class="text-muted">
Vous avez déjà un compte? {{ csrf_token }}!!
<a class="js-animation-link" href="javascript:;" data-target="#signin" data-link-group="idForm"
data-animation-in="fadeIn">Connexion Recruteur
</a>
</p>
</div>
<!-- Divider -->
<div class="text-center u-divider-wrapper my-3">
</div>
<div class="text-center mb-3">
<p class="text-muted">
<!-- End Divider -->
{% if destination_login is defined %}
<input type="hidden" name="_target_path" value="{{ destination_login }}" />
{% endif %}
</p>
</div>
</div>
<!-- End Signup -->
{{ form_rest(register_form) }}
{{ form_end(register_form) }}
</div>
{% endblock fos_user_content %}
+52 -2
View File
@@ -14,7 +14,28 @@
{% endblock %}
{% block content %}
{{ form_start(formUser, {'id': 'formUser'}) }}
<div class="row">
<div class="col-xs-8">
<div class="box box-primary">
<div class="box-header">
<h3 class="box-title">Compte utilisateur</h3>
</div>
<div class="box-body">
{{ form_errors(formUser) }}
{{ form_label(formUser.email, 'Email') }}
{{ form_widget(formUser.email, {'attr': {'class': 'form-control'}}) }}
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-xs-6">
<button class="btn btn-success edit-email-user" data-toggle="tooltip" type="submit">Enregistrer</button>
</div>
</div>
{{ form_end(formUser) }}
<br/>
{{ form_start(form) }}
<div class="row">
<div class="col-xs-8">
@@ -37,7 +58,6 @@
{{ form_row(form.website) }}
{{ form_row(form.tagsComma) }}
{{ form_row(form.file) }}
</div>
</div>
</div>
@@ -66,3 +86,33 @@
{{ form_end(form) }}
{% endblock %}
{% block javascripts %}
<script>
$(document).ready(function () {
$('[data-toggle="popover"]').popover();
$(".edit-email-user").confirm({
title: "Êtes vous sûr de modifier l'adresse mail de cet utilisateur ?",
content: "Si une erreur de saisie est présente, l'utilisateur ne pourra plus recevoir vos mails.",
type: 'ored',
boxWidth: '30%',
useBootstrap: false,
buttons: {
confirm: {
text: 'Confirmer',
action: function() {
$("[name='user_company']").submit();
return true;
}
},
cancel: {
text: 'Annuler'
}
}
});
});
</script>
{% endblock %}
@@ -24,7 +24,7 @@
<div class="col-content bg-arrow z-depth-2 p-20">
<div class="row">
<div class="col s12">
<h4 class="color-blue1 p-0"><span class="title-bubble">1</span> Enregistrez votre cv vidéo</h4>
<h4 class="color-blue1 p-0"><span class="title-bubble">1/3</span> Enregistrez votre cv vidéo</h4>
</div>
<div class="col m4 offset-m1 s12">
<video id="myCvVideo" class="video-js vjs-default-skin"></video>
@@ -60,7 +60,7 @@
<div class="col-content bg-arrow z-depth-2 p-20">
<div class="row">
<div class="col s12">
<h4 class="color-blue1 p-0"><span class="title-bubble">2</span> Importez votre CV Vidéo</h4>
<h4 class="color-blue1 p-0"><span class="title-bubble">2/3</span> Importez votre CV Vidéo</h4>
</div>
<div class="col s10 offset-s1 answer-dropzone">
{% include 'media/dropzone.html.twig' with {'deleting': true } %}
@@ -72,7 +72,7 @@
{{ form_row(form.status) }}
<div class="row">
<div class="col s12">
<h4 class="color-blue1 p-0"><span class="title-bubble">3</span> Ajoutez votre commentaire</h4>
<h4 class="color-blue1 p-0"><span class="title-bubble">3/3</span> Ajoutez votre commentaire</h4>
</div>
<div class="col s10 offset-s1">
<div class="row">
@@ -56,6 +56,7 @@ j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
'@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>
@@ -0,0 +1,43 @@
<!DOCTYPE html>
<html lang="fr">
<head>
<!-- Title -->
<title>Talents Tube : Le 1er job board 100% vidéo</title>
<!-- Required Meta Tags Always Come First -->
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<!-- 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="78ec5756-1cd5-4f3f-b0db-cb408c8171da";(function(){ d=document;s=d.createElement("script"); s.src="https://client.crisp.chat/l.js"; s.async=1;d.getElementsByTagName("head")[0].appendChild(s);})(); </script>
</head>
<body>
<!-- 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 'defaultv2/user_switch.html.twig' %}#}
{% include 'defaultv2/header.html.twig' %}
{#{% include 'defaultv2/props_settings.html.twig' %} #}
{% block content %}
{% endblock %}
{# {% include 'defaultv2/footer.html.twig' %} #}
{{ include('FairlaneCookieConsentBundle::cookie-info.html.twig') }}
</body>
</html>
@@ -86,7 +86,7 @@
<div id="newApp" class="container-fluid">
<div class="row">
<div class="col s12 m12">
<p>"Nouveau ! Trouvez un job plus facilement avec notre <a href="http://pp.app.talentstube.com">web application</a>.📲"</p>
<p>"Nouveau ! Trouvez un job plus facilement avec notre <a href="http://app.talentstube.com">web application</a>.📲"</p>
</div>
</div>
</div>
@@ -100,10 +100,10 @@
<a class="collapsible-header" title="Talents">Talents</a>
<div class="collapsible-body">
<ul>
<li><ahref="{{ path('ad_search_result') }}" title="Offres d'emploi vidéos">Offres d'emploi</a></li>
<li><ahref="{{ path('page_cvVideo') }}" title="Le Cv vidéo">Le CV vidéo</a></li>
<li><ahref="{{ path('page_reussirCVvideo') }}" title="Comment faire son CV Vidéo ?">Comment faire son CV Vidéo ?</a></li>
<li><ahref="{{ path('page_accompagnementTalent') }}" title="Accompagnement talent">Accompagnement</a></li>
<li><a href="{{ path('ad_search_result') }}" title="Offres d'emploi vidéos">Offres d'emploi</a></li>
<li><a href="{{ path('page_cvVideo') }}" title="Le Cv vidéo">Le CV vidéo</a></li>
<li><a href="{{ path('page_reussirCVvideo') }}" title="Comment faire son CV Vidéo ?">Comment faire son CV Vidéo ?</a></li>
<li><a href="{{ path('page_accompagnementTalent') }}" title="Accompagnement talent">Accompagnement</a></li>
</ul>
</div>
</li>
@@ -114,11 +114,11 @@
<a class="collapsible-header" title="Les entreprises de talents">Entreprises</a>
<div class="collapsible-body">
<ul>
<li><ahref="{{ path('company_list') }}" title="Listes entreprises">Listes entreprises</a></li>
<li><ahref="{{ path('page_OffreEmploi') }}" title="L'offre d'emploi en vidéo">L'offre d'emploi en vidéo</a></li>
<li><ahref="{{ path('page_reussirOffrevideo') }}" title="Comment faire une offre en vidéo">Comment faire une offre en vidéo</a></li>
<li><ahref="{{ path('page_MarqueEmployeur') }}" title="Vidéo Marque Employeur">Vidéo Marque Employeur</a></li>
<li><ahref="{{ path('page_accompagnementEntreprise') }}" title="Conseils & accompagnement">Conseils & accompagnement</a></li>
<li><a href="{{ path('company_list') }}" title="Listes entreprises">Listes entreprises</a></li>
<li><a href="{{ path('page_OffreEmploi') }}" title="L'offre d'emploi en vidéo">L'offre d'emploi en vidéo</a></li>
<li><a href="{{ path('page_reussirOffrevideo') }}" title="Comment faire une offre en vidéo">Comment faire une offre en vidéo</a></li>
<li><a href="{{ path('page_MarqueEmployeur') }}" title="Vidéo Marque Employeur">Vidéo Marque Employeur</a></li>
<li><a href="{{ path('page_accompagnementEntreprise') }}" title="Conseils & accompagnement">Conseils & accompagnement</a></li>
</ul>
</div>
</li>
@@ -126,9 +126,9 @@
<a class="collapsible-header" title="Les territoires">Territoires</a>
<div class="collapsible-body">
<ul>
<li><ahref="{{ path('territory_list') }}">Liste des territoires</a></li>
<li><ahref="{{ path('page_VideoTerritory') }}">La vidéo territoire</a></li>
<li><ahref="{{ path('page_AccompagnementTerritory') }}">Conseils et accompagnement</a></li>
<li><a href="{{ path('territory_list') }}">Liste des territoires</a></li>
<li><a href="{{ path('page_VideoTerritory') }}">La vidéo territoire</a></li>
<li><a href="{{ path('page_AccompagnementTerritory') }}">Conseils et accompagnement</a></li>
</ul>
</div>
</li>
@@ -0,0 +1,31 @@
<!-- Candidat DEBUT -->
<div class="space-1-bottom accueilFondNoir">
<div class="container space-2 ">
<div class="row justify-content-lg-end">
<div class="col-md-6 order-md-2 mb-5 mb-md-0">
<!-- Title -->
<div class="mb-4">
<h2 class="h3"> Recevez les candidatures en vidéo</h2>
<p> Depuis leur webcam, smartphone ou tablette, les candidats postulent aux vidéos de votre entreprise, en
toute confidentialité, grâce à notre outil denregistrement vidéo simple, rapide et gratuit.
Vous recevez des vidéos de motivation, cest-à-dire des candidatures qui répondent à votre vidéo de
recrutement. Le candidat expose son parcours en illustrant ses expériences. Il met en avant ses
motivations à vous rejoindre et les compétences quil peut apporter à votre entreprise.
<strong>Découvrez la personnalité du candidat et son projet professionnel en quelques instants.</strong>
</p>
<a class="btn btn-sm btn-primary btn-wide" href="candidatures-cv-video">En savoir plus</a>
</div>
</div>
<div class="col-md-6 order-md-1">
<div class="pr-lg-4">
<a href="candidatures-cv-video"><img class="img-fluid" src="{{ asset('v2/png/candidature-en-video.png') }}" alt="Candidature en vidéo"></a>
</div>
</div>
</div>
</div>
</div>
<!-- Candidat FIN -->
@@ -0,0 +1,40 @@
<!-- Ils nous font confiance DEBUT -->
<div class="container space-2 space-3--lg accueilFondBlanc">
<div class=" text-center mx-md-auto mb-12">
<!-- Title -->
<h2 class="h1"> Ils nous font confiance</h2>
<!-- Slick Carousel -->
<div class="js-slick-carousel u-slick" data-autoplay="true" data-speed="5000" data-infinite="true"
data-slides-show="5">
<div class="js-slide">
<img src="{{ asset('v2/logos/Albea-logo.png') }}" alt="Image Description">
</div>
<div class="js-slide">
<img src="{{ asset('v2/logos/Bouyer-leroux-logo.png') }}" alt="Image Description">
</div>
<div class="js-slide">
<img src="{{ asset('v2/logos/Eiffage-logo.png') }}" alt="Image Description">
</div>
<div class="js-slide">
<img src="{{ asset('v2/logos/groupe-mousset-logo.png') }}" alt="Image Description">
</div>
<div class="js-slide">
<img src="{{ asset('v2/logos/Groupe-rocher-logo.png') }}" alt="Image Description">
</div>
<div class="js-slide">
<img src="{{ asset('v2/logos/intermarche.png') }}" alt="Image Description">
</div>
<div class="js-slide">
<img src="{{ asset('v2/logos/Mazars-logo.png') }}" alt="Image Description">
</div>
<div class="js-slide">
<img src="{{ asset('v2/logos/Mma-logo.png') }}" alt="Image Description">
</div>
<div class="js-slide">
<img src="{{ asset('v2/logos/Square-habitat-logo.png') }}" alt="Image Description">
</div>
</div>
<!-- End Slick Carousel -->
</div>
</div>
<!-- Ils nous font confiance FIN -->
@@ -0,0 +1,87 @@
<!-- Degradé avec Stats Section -->
<div class="gradient-overlay-half-primary-v1">
<div class="bg-img-hero" style="background-image: url({{ asset('v2/img/bg/bg2.png')}} ">
<div class="container space-2 ">
<div class="container z-index-2 containerStat">
<div class=" shadow-lg rounded mt-n9">
<div class="card-deck d-block d-lg-flex">
<div class="card card-frame mb-4 mb-lg-0">
<!-- Listing -->
<div class="card-body p-4">
<div class="media">
<div class="media-body px-4">
<h2 class="statChiffre">1500+</h2>
<p class="statTexte">Talents connectés</p>
</div>
</div>
</div>
<!-- End Listing -->
</div>
<div class="card card-frame mb-4 mb-lg-0">
<!-- Listing -->
<div class="card-body p-4">
<div class="media">
<div class="media-body px-4">
<h2 class="statChiffre">900+</h2>
<p class="statTexte">Vues par vidéo</p>
</div>
</div>
</div>
<!-- End Listing -->
</div>
<div class="card card-frame mb-4 mb-lg-0">
<!-- Listing -->
<div class="card-body p-4">
<div class="media">
<div class="media-body px-4">
<h2 class="statChiffre">350</h2>
<p class="statTexte">Candidatures vidéo</p>
</div>
</div>
</div>
<!-- End Listing -->
</div>
</div>
</div>
</div>
</div>
<!-- Icon Blocks Section -->
<div class="container ">
<div class="row space-1">
<div class="col-md-4 mb-7 mb-md-0">
<!-- Icon Blocks -->
<div class="text-center px-lg-3">
<img src="{{ asset('v2/svg/components/Diffusion-offres-emploi-video-marque-employeur.svg') }}" alt="Logo">
<h3 class="h4 text-white">Diffusez vos offres d'emploi et marque employeur en <a href="#">vidéo</a></h3>
</div>
<!-- End Icon Blocks -->
</div>
<div class="col-md-4 mb-7 mb-md-0">
<!-- Icon Blocks -->
<div class="text-center px-lg-3">
<img src="{{ asset('v2/svg/components/candidature-en-video.svg') }}" alt="Logo">
<h3 class="h4 text-white">Recevez les candidatures en <a href="#">vidéo</a></h3>
</div>
<!-- End Icon Blocks -->
</div>
<div class="col-md-4">
<!-- Icon Blocks -->
<div class="text-center px-lg-3">
<img src="{{ asset('v2/svg/components/Gestion-des-candidatures-video.svg') }}" alt="Logo">
<h3 class="h4 text-white">Gérez vos candidatures en <a href="#">vidéo</a></h3>
</div>
<!-- End Icon Blocks -->
</div>
</div>
</div>
<!-- End Icon Blocks Section -->
</div>
</div>
<!-- Degradé avec Stats FIN-->
@@ -0,0 +1,32 @@
<!-- Marque employeur DEBUT -->
<div class="space-1-bottom accueilFondBlanc">
<div class="container space-2 ">
<div class="row align-items-lg-center">
<div class="col-md-6 order-md-2 mb-5 mb-md-0">
<!-- Title -->
<div class="mb-4">
<h2 class="h3"> Révélez votre Marque Employeur en vidéo</h2>
<p> Talents Tube offre une visibilité essentielle à votre marque employeur.
Grâce à la vidéo, votre entreprise replace lhumain au cœur du recrutement. Vous disposez dun levier
concret et efficace pour parfaire votre réputation. Développez lattractivité de votre entreprise pour
séduire de nouveaux talents.
<strong>Donnez vie à votre marque employeur en plaçant la vidéo au coeur de votre stratégie de
communication
et de votre gestion des ressources humaines.</strong>
</p>
<a class="btn btn-sm btn-primary btn-wide" href="marque-employeur-en-video">En savoir plus</a>
</div>
</div>
<div class="col-md-6 order-md-1">
<div class="pr-lg-4">
<a href="marque-employeur-en-video"><img class="img-fluid" src="{{ asset('v2/png/marque-employeur-en-video.png') }}" alt="Marque employeur vidéo"></a>
</div>
</div>
</div>
</div>
</div>
<!-- Marque employeur FIN -->
@@ -0,0 +1,147 @@
{% trans_default_domain 'FOSUserBundle' %}
<!-- Signup Modal Window -->
<div id="signupModal" class="js-signup-modal u-modal-window" style="width: 500px;">
<!-- Modal Close Button -->
<button class="btn btn-sm btn-icon btn-text-secondary u-modal-window__close" type="button"
onclick="Custombox.modal.close();">
<i class="fas fa-times"></i>
</button>
<!-- End Modal Close Button -->
<!-- Content -->
<div class="p-5 bg-white rounded">
<form action="{{ path("fos_user_security_check") }}" method="post">
{% if csrf_token %}
<input type="hidden" name="_csrf_token" value="{{ csrf_token }}" />
{% endif %}
<!-- Signin -->
<div id="signin" data-target-group="idForm">
<!-- Title -->
<header class="text-center mb-5">
<h2 class="h4 mb-0">Connexion</h2>
<p>Connecter vous pour gérer votre compte</p>
</header>
<!-- 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-user form__text-inner"></i>
</span>
</div>
{# <input type="email" class="form-control form__input" name="email" required placeholder="Email"
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" />
</div>
</div>
<!-- End Input -->
<!-- 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="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" />
</div>
</div>
<!-- End Input -->
<div class="row mb-3">
<div class="col-6">
<!-- Checkbox -->
<div class="custom-control custom-checkbox d-flex align-items-center text-muted">
<input type="checkbox" id="remember_me" name="_remember_me" value="on" />
<label class="custom-control-label" for="rememberMeCheckbox">
Se souvenir de moi
</label>
</div>
<!-- End Checkbox -->
</div>
<div class="col-6 text-right">
<a class="js-animation-link float-right" href="javascript:;" data-target="#forgotPassword"
data-link-group="idForm" data-animation-in="fadeIn">Mot de passe oublié?</a>
</div>
</div>
<div class="mb-3">
<input type="hidden" name="_target_path" value="redirect_dashboard" />
<input type="submit" id="_submit" name="_submit" class="btn btn-block btn-primary"/>
</div>
<div class="text-center mb-3">
<p class="text-muted">
Do not have an account?
<a class="js-animation-link" href="javascript:;" data-target="#signup" data-link-group="idForm"
data-animation-in="fadeIn">S'inscrire
</a>
</p>
</div>
</div>
</form>
{% if app.request.get('_route') != "fos_user_security_login" %}
{{ render(controller('AppBundle:SecurityModal:loginModalV2')) }}
{% endif %}
<!-- Forgot Password -->
<div id="forgotPassword" style="display: none; opacity: 0;" data-target-group="idForm">
<!-- Title -->
<header class="text-center mb-5">
<h2 class="h4 mb-0">Recover account</h2>
<p>Enter your email address and an email with instructions will be sent to you.</p>
</header>
<!-- 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-user form__text-inner"></i>
</span>
</div>
<input type="email" class="form-control form__input" name="email" required placeholder="Email"
aria-label="Email" data-msg="Please enter a valid email address." data-error-class="u-has-error"
data-success-class="u-has-success">
</div>
</div>
<!-- End Input -->
<div class="mb-3">
<button type="submit" class="btn btn-block btn-primary">Recover Account</button>
</div>
<div class="text-center mb-3">
<p class="text-muted">
Have an account?
<a class="js-animation-link" href="javascript:;" data-target="#signin" data-link-group="idForm"
data-animation-in="fadeIn">Contactez nous
</a>
</p>
</div>
<div class="text-center mb-3">
<p class="text-muted">
Have an account?
<a class="js-animation-link" href="javascript:;" data-target="#signin" data-link-group="idForm"
data-animation-in="fadeIn">Connexion Recruteur
</a>
</p>
</div>
</div>
<!-- End Forgot Password -->
</div>
<!-- End Content -->
</div>
<!-- End Signup Modal Window -->
<!-- ========== END SECONDARY CONTENTS ========== -->
@@ -0,0 +1,20 @@
<!-- Accueil Photo Haut Section -->
<div class="bg-img-hero-center" style="background-image: url({{ asset(urlImage)}} ">
<div class="container space-2 space-5-top--lg space-4-bottom--lg">
<div class="w-md-75">
<!-- Title -->
<div class="mb-7">
<span class="d-block text-white text-uppercase mb-2">Talents tube</span>
<h1 class="display-4 font-size-48--md-down text-white mb-4">
<strong class="u-text-animation u-text-animation--typing">{{textParDefaut}}</strong>
<br>{{textVideo}}
</h1>
</div>
<!-- End Title -->
</div>
</div>
</div>
<!-- End Accueil Photo Haut Section -->
@@ -0,0 +1,33 @@
<!-- Plateforme DEBUT -->
<div class=" accueilFondBleute">
<div class="container space-2 ">
<div class="row row justify-content-lg-end ">
<div class="col-md-6 ">
<!-- Title <div class="col-md-6 order-md-2 mb-5 mb-md-0">-->
<div class="mb-6">
<h2 class="h3"> Plateforme pour lemploi 100% vidéo</h2>
<p> Talents Tube met à votre disposition un outil de diffusion de vos vidéos doffres demploi & marque
employeur pour attirer les meilleurs talents en vidéo.
Notre plateforme rassemble lentreprise et les talents qui se présentent en vidéo pour un recrutement
réussi.
Si vous ne possédez pas de vidéos, nous pouvons vous accompagner dans la réalisation.
<strong>Diffusez vos vidéos de recrutement et augmentez votre visibilité.</strong>
</p>
<a class="btn btn-sm btn-primary btn-wide" href="{{ url_plateforme }}">Voir la plateforme</a>
</div>
</div>
<div class="col-md-6 align-right paddintRight">
<div class="mb-6">
<a href="{{ url_plateforme }}"><img class="img-fluid" src="{{ asset('v2/png/plateforme-de-recrutement-en-video.png') }}"
alt="Recrutement video"></a>
</div>
</div>
</div>
</div>
</div>
<!-- Plateforme FIN -->
@@ -0,0 +1,32 @@
<!-- Recrutez DEBUT -->
<div class="space1-bottom accueilFondBleute">
<div class="container space-2 ">
<div class="row justify-content-lg-end ">
<div class="col-md-6 ">
<!-- Title <div class="col-md-6 order-md-2 mb-5 mb-md-0">-->
<div class="mb-6">
<h2 class="h3"> Recrutez avec des offres demploi vidéo</h2>
<p> Talents Tube peut vous accompagner dans la réalisation de vidéos doffres demploi captivantes et à votre
image.
Loffre demploi en vidéo, média engageant, vous donne lopportunité de recruter les meilleurs talents. Le
principe est de donner une image moderne et innovante en présentant votre entreprise, votre équipe,
lenvironnement de travail et le poste à pourvoir en quelques minutes.
<strong>Faites place à linnovation pour capter lattention des candidats et recruter le talent quil vous
faut.</strong>
</p>
<a class="btn btn-sm btn-primary btn-wide" href="offre-emploi-video">En savoir plus</a>
</div>
</div>
<div class="col-md-6 order-md-1">
<div class="mb-6">
<a href="offre-emploi-video"><img class="img-fluid" src="{{ asset('v2/png/offres-emploi-en-video.png') }}" alt="Offres d'emploi en vidéo"></a>
</div>
</div>
</div>
</div>
</div>
<!-- Recrutez FIN -->
@@ -0,0 +1,214 @@
<!-- Témoignage DEBUT -->
<!-- Success stories -->
<div class="space-2-top space-1-bottom space-3-top--lg accueilFondNoir">
<div class="container">
<!-- Title -->
<div class="w-md-80 w-lg-60 mx-md-auto text-md-center mb-8">
<h6 class="text-uppercase text-gray-700 font-weight-medium letter-spacing-0_06 mb-3"> Ils ont choisi Talents Tube
pour recruter différemment.</h6>
<h2 class="text-lh-xs mb-0">Témoignages de nos clients</h2>
</div>
<!-- End Title -->
<!-- Stories -->
<div id="sliderSyncingNav2" class="js-slick-carousel u-slick u-slick--rounded mb-2" data-infinite="true"
data-arrows-classes="d-none d-md-inline-block u-slick__arrow-classic u-slick__arrow-centered--y rounded-circle shadow"
data-arrow-left-classes="fa fa-arrow-left u-slick__arrow-classic-inner bg-white text-dark left-0 ml-md-n9"
data-arrow-right-classes="fa fa-arrow-right u-slick__arrow-classic-inner bg-white text-dark right-0 mr-md-n9"
data-nav-for="#sliderSyncingThumb2">
<div class="js-slide bg-img-hero bg-img-hero-center gradient-overlay-half-black-v1"
style="background-image: url({{ asset('v2/temoignages/mgdis-temoignage-image.jpg') }});">
<div class="w-md-80 w-lg-50 text-white space-2 px-9">
<h3 class="h2 text-lh-SMGDIS</h3>
<p class="text-white-70 mb-4">Simona Vasile-Martin, Responsable Marketing</p>
<a class="js-fancybox text-white" href="javascript:;"
data-src="https://www.youtube.com/watch?v=E62HUkaPEkk&t?autoplay=1" 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">
<i class="u-icon__inner svg-icon svg-icon-xs text-white">
<svg width="24px" height="24px" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink">
<g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<rect x="0" y="0" width="24" height="24"></rect>
<path
d="M9.82866499,18.2771971 L16.5693679,12.3976203 C16.7774696,12.2161036 16.7990211,11.9002555 16.6175044,11.6921539 C16.6029128,11.6754252 16.5872233,11.6596867 16.5705402,11.6450431 L9.82983723,5.72838979 C9.62230202,5.54622572 9.30638833,5.56679309 9.12422426,5.7743283 C9.04415337,5.86555116 9,5.98278612 9,6.10416552 L9,17.9003957 C9,18.1765381 9.22385763,18.4003957 9.5,18.4003957 C9.62084305,18.4003957 9.73759731,18.3566309 9.82866499,18.2771971 Z"
fill="#000000"></path>
</g>
</svg>
</i>
</i>
</a>
</div>
</div>
<div class="js-slide bg-img-hero bg-img-hero-center gradient-overlay-half-black-v1"
style="background-image: url({{ asset('v2/temoignages/medaviz-temoignage-image.jpg') }});">
<div class="w-md-80 w-lg-50 text-white space-2 px-9">
<h3 class="h2 text-lh-xs mb-4">Medaviz</h3>
<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-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">
<i class="u-icon__inner svg-icon svg-icon-xs text-white">
<svg width="24px" height="24px" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink">
<g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<rect x="0" y="0" width="24" height="24"></rect>
<path
d="M9.82866499,18.2771971 L16.5693679,12.3976203 C16.7774696,12.2161036 16.7990211,11.9002555 16.6175044,11.6921539 C16.6029128,11.6754252 16.5872233,11.6596867 16.5705402,11.6450431 L9.82983723,5.72838979 C9.62230202,5.54622572 9.30638833,5.56679309 9.12422426,5.7743283 C9.04415337,5.86555116 9,5.98278612 9,6.10416552 L9,17.9003957 C9,18.1765381 9.22385763,18.4003957 9.5,18.4003957 C9.62084305,18.4003957 9.73759731,18.3566309 9.82866499,18.2771971 Z"
fill="#000000"></path>
</g>
</svg>
</i>
</i>
</a>
</div>
</div>
<div class="js-slide bg-img-hero bg-img-hero-center gradient-overlay-half-black-v1"
style="background-image: url({{ asset('v2/temoignages/thalazur-carnac1-temoignage-image.jpg') }});">
<div class="w-md-80 w-lg-50 text-white space-2 px-9">
<h3 class="h2 text-lh-xs mb-4">Thalazur Carnac</h3>
<p class="text-white-70 mb-4">Adeline Lautredou, Responsable Ressources Humaines</p>
<a class="js-fancybox text-white" href="javascript:;" data-src="https://www.youtube.com/watch?v=hWYae9V-YWM&t=8s?autoplay=1"
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">
<i class="u-icon__inner svg-icon svg-icon-xs text-white">
<svg width="24px" height="24px" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink">
<g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<rect x="0" y="0" width="24" height="24"></rect>
<path
d="M9.82866499,18.2771971 L16.5693679,12.3976203 C16.7774696,12.2161036 16.7990211,11.9002555 16.6175044,11.6921539 C16.6029128,11.6754252 16.5872233,11.6596867 16.5705402,11.6450431 L9.82983723,5.72838979 C9.62230202,5.54622572 9.30638833,5.56679309 9.12422426,5.7743283 C9.04415337,5.86555116 9,5.98278612 9,6.10416552 L9,17.9003957 C9,18.1765381 9.22385763,18.4003957 9.5,18.4003957 C9.62084305,18.4003957 9.73759731,18.3566309 9.82866499,18.2771971 Z"
fill="#000000"></path>
</g>
</svg>
</i>
</i>
</a>
</div>
</div>
<div class="js-slide bg-img-hero bg-img-hero-center gradient-overlay-half-black-v1"
style="background-image: url({{ asset('v2/temoignages/intermarche-temoignage-image.jpg') }});">
<div class="w-md-80 w-lg-50 text-white space-2 px-9">
<h3 class="h2 text-lh-xs mb-4">Intermarché LAI</h3>
<p class="text-white-70 mb-4">Ludovic Chamoin-Foucaut, Responsable Ressources Humaines</p>
<a class="js-fancybox text-white" href="javascript:;" data-src="https://youtu.be/lheAXL8U9cU?autoplay=1"
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">
<i class="u-icon__inner svg-icon svg-icon-xs text-white">
<svg width="24px" height="24px" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink">
<g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<rect x="0" y="0" width="24" height="24"></rect>
<path
d="M9.82866499,18.2771971 L16.5693679,12.3976203 C16.7774696,12.2161036 16.7990211,11.9002555 16.6175044,11.6921539 C16.6029128,11.6754252 16.5872233,11.6596867 16.5705402,11.6450431 L9.82983723,5.72838979 C9.62230202,5.54622572 9.30638833,5.56679309 9.12422426,5.7743283 C9.04415337,5.86555116 9,5.98278612 9,6.10416552 L9,17.9003957 C9,18.1765381 9.22385763,18.4003957 9.5,18.4003957 C9.62084305,18.4003957 9.73759731,18.3566309 9.82866499,18.2771971 Z"
fill="#000000"></path>
</g>
</svg>
</i>
</i>
</a>
</div>
</div>
</div>
<!-- End Stories -->
<!-- Stories.Authors -->
<div id="sliderSyncingThumb2"
class="js-slick-carousel u-slick u-slick--gutters-2 u-slick--video w-50 w-lg-30 mx-auto" data-infinite="true"
data-slides-show="3" data-is-thumbs="true" data-center-mode="true" data-nav-for="#sliderSyncingNav2">
<div class="js-slide rounded overflow-hidden">
<img class="img-fluid" src="{{ asset('v2/temoignages/mgdis-temoignage-vignette.jpg') }}"
alt="Image Description">
<i class="u-icon u-icon--sm u-icon--dark-soft rounded-circle u-slick--video__player">
<i class="u-icon__inner svg-icon svg-icon-xs text-white">
<svg width="24px" height="24px" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink">
<g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<rect x="0" y="0" width="24" height="24"></rect>
<path
d="M9.82866499,18.2771971 L16.5693679,12.3976203 C16.7774696,12.2161036 16.7990211,11.9002555 16.6175044,11.6921539 C16.6029128,11.6754252 16.5872233,11.6596867 16.5705402,11.6450431 L9.82983723,5.72838979 C9.62230202,5.54622572 9.30638833,5.56679309 9.12422426,5.7743283 C9.04415337,5.86555116 9,5.98278612 9,6.10416552 L9,17.9003957 C9,18.1765381 9.22385763,18.4003957 9.5,18.4003957 C9.62084305,18.4003957 9.73759731,18.3566309 9.82866499,18.2771971 Z"
fill="#000000"></path>
</g>
</svg>
</i>
</i>
</div>
<div class="js-slide rounded overflow-hidden">
<img class="img-fluid" src="{{ asset('v2/temoignages/medaviz-temoignage-vignette.jpg') }}"
alt="Image Description">
<i class="u-icon u-icon--sm u-icon--dark-soft rounded-circle u-slick--video__player">
<i class="u-icon__inner svg-icon svg-icon-xs text-white">
<svg width="24px" height="24px" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink">
<g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<rect x="0" y="0" width="24" height="24"></rect>
<path
d="M9.82866499,18.2771971 L16.5693679,12.3976203 C16.7774696,12.2161036 16.7990211,11.9002555 16.6175044,11.6921539 C16.6029128,11.6754252 16.5872233,11.6596867 16.5705402,11.6450431 L9.82983723,5.72838979 C9.62230202,5.54622572 9.30638833,5.56679309 9.12422426,5.7743283 C9.04415337,5.86555116 9,5.98278612 9,6.10416552 L9,17.9003957 C9,18.1765381 9.22385763,18.4003957 9.5,18.4003957 C9.62084305,18.4003957 9.73759731,18.3566309 9.82866499,18.2771971 Z"
fill="#000000"></path>
</g>
</svg>
</i>
</i>
</div>
<div class="js-slide rounded overflow-hidden">
<img class="img-fluid" src="{{ asset('v2/temoignages/thalazur-carnac-temoignage-vignette.jpg') }}"
alt="Image Description">
<i class="u-icon u-icon--sm u-icon--dark-soft rounded-circle u-slick--video__player">
<i class="u-icon__inner svg-icon svg-icon-xs text-white">
<svg width="24px" height="24px" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink">
<g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<rect x="0" y="0" width="24" height="24"></rect>
<path
d="M9.82866499,18.2771971 L16.5693679,12.3976203 C16.7774696,12.2161036 16.7990211,11.9002555 16.6175044,11.6921539 C16.6029128,11.6754252 16.5872233,11.6596867 16.5705402,11.6450431 L9.82983723,5.72838979 C9.62230202,5.54622572 9.30638833,5.56679309 9.12422426,5.7743283 C9.04415337,5.86555116 9,5.98278612 9,6.10416552 L9,17.9003957 C9,18.1765381 9.22385763,18.4003957 9.5,18.4003957 C9.62084305,18.4003957 9.73759731,18.3566309 9.82866499,18.2771971 Z"
fill="#000000"></path>
</g>
</svg>
</i>
</i>
</div>
<div class="js-slide rounded overflow-hidden">
<img class="img-fluid" src="{{ asset('v2/temoignages/intermarche-temoignage-vignette.jpg') }}"
alt="Image Description">
<i class="u-icon u-icon--sm u-icon--dark-soft rounded-circle u-slick--video__player">
<i class="u-icon__inner svg-icon svg-icon-xs text-white">
<svg width="24px" height="24px" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink">
<g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<rect x="0" y="0" width="24" height="24"></rect>
<path
d="M9.82866499,18.2771971 L16.5693679,12.3976203 C16.7774696,12.2161036 16.7990211,11.9002555 16.6175044,11.6921539 C16.6029128,11.6754252 16.5872233,11.6596867 16.5705402,11.6450431 L9.82983723,5.72838979 C9.62230202,5.54622572 9.30638833,5.56679309 9.12422426,5.7743283 C9.04415337,5.86555116 9,5.98278612 9,6.10416552 L9,17.9003957 C9,18.1765381 9.22385763,18.4003957 9.5,18.4003957 C9.62084305,18.4003957 9.73759731,18.3566309 9.82866499,18.2771971 Z"
fill="#000000"></path>
</g>
</svg>
</i>
</i>
</div>
</div>
<!-- End Stories.Authors -->
</div>
</div>
<!-- End Success stories -->
<!-- Témoignage FIN -->
@@ -0,0 +1,85 @@
<!-- ========== FOOTER ========== -->
<footer class="bg-dark">
<div class="container space-2">
<div class="row justify-content-md-between">
<div class="col-6 col-md-3 col-lg-2 order-lg-3 mb-7 mb-lg-0">
<h3 class="h6 text-white mb-3">Plateforme</h3>
<!-- List Group -->
<div class="list-group list-group-flush list-group-transparent">
<!-- Links -->
<ul class="list-unstyled">
<li><a class="nav-link u-header__sub-menu-nav-link px-0" href="/">Espace recruteurs</a></li>
<li><a class="nav-link u-header__sub-menu-nav-link px-0" href="https://app.talentstube.com" target="_blank">Jobs</a></li>
<li><a class="nav-link u-header__sub-menu-nav-link px-0" href="#" target="_blank">CV Vidéothèque (En cours)</a></li>
</ul>
<!-- End Links -->
</div>
<!-- End List Group -->
</div>
<div class="col-6 col-md-3 col-lg-2 order-lg-4 mb-7 mb-lg-0">
<h3 class="h6 text-white mb-3">Informations</h3>
<!-- List Group -->
<div class="list-group list-group-flush list-group-transparent">
<!-- Links -->
<ul class="list-unstyled">
<li><a class="nav-link u-header__sub-menu-nav-link px-0" href="mentions">Mentions légales</a></li>
<li><a class="nav-link u-header__sub-menu-nav-link px-0" href="cgu">CGU</a></li>
<li><a class="nav-link u-header__sub-menu-nav-link px-0" href="confidentialite">Politique de confidentialité</a></li>
<li><a class="nav-link u-header__sub-menu-nav-link px-0" href="contact">Contact</a></li>
</ul>
<!-- End Links -->
</div>
<!-- End List Group -->
</div>
<div class="col-6 col-md-3 col-lg-2 order-lg-5 mb-7 mb-lg-0">
<h3 class="h6 text-white mb-3">Réseaux sociaux</h3>
<!-- List -->
<div class="list-group list-group-flush list-group-transparent">
<a class="list-group-item list-group-item-action" href="https://www.facebook.com/TalentsTuber/" target="_blank">
<i class="fab fa-facebook-f min-width-3 text-center mr-2"></i>
Facebook
</a>
<a class="list-group-item list-group-item-action" href="https://www.linkedin.com/company/talentstube" target="_blank">
<i class="fab fa-linkedin min-width-3 text-center mr-2"></i>
Linkedin
</a>
<a class="list-group-item list-group-item-action" href="https://www.instagram.com/talents.tube/" target="_blank">
<i class="fab fa-instagram min-width-3 text-center mr-2"></i>
Instagram
</a>
<a class="list-group-item list-group-item-action" href="https://twitter.com/TalentsTuber" target="_blank">
<i class="fab fa-twitter min-width-3 text-center mr-2"></i>
Twitter
</a>
<a class="list-group-item list-group-item-action" href="https://www.youtube.com/channel/UCRNqiJCLAorO0aCzNQu-8ww" target="_blank">
<i class="fab fa-youtube min-width-3 text-center mr-2"></i>
Youtube
</a>
</div>
<!-- End List -->
</div>
<!-- End List Group -->
</div>
<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">
<img src="{{ asset('v2/svg/logos/talentstube-logo-mobile.svg') }}" alt="Logo" style="width: 40px; max-width: 100%;">
</a>
<!-- End Logo -->
<p class="small text-muted">Tous droits réservés. &copy; 2020 Talents Tube.</p>
</div>
</div>
</div>
</footer>
<!-- ========== END FOOTER ========== -->
@@ -0,0 +1,323 @@
{% extends 'basev2.html.twig' %}
{% block title %}Talents Tube : Le 1er job board 100% vidéo{% endblock %}
{% block content %}
<main id="content">
{% include 'defaultv2/accueil/blocPhoto.html.twig'
with {
'urlImage': 'v2/img/1920x800/recrutement-video.jpg',
'textParDefaut' : 'Recrutez les candidats',
'textVideo' : 'avec la vidéo'
} %}
{% include 'defaultv2/accueil/blocDegrade.html.twig' %}
{% include 'defaultv2/accueil/blocPlateforme.html.twig' %}
{% include 'defaultv2/accueil/blocCandidat.html.twig' %}
{% include 'defaultv2/accueil/blocRecrutez.html.twig' %}
{% include 'defaultv2/accueil/blocEmployeur.html.twig' %}
{% include 'defaultv2/accueil/blocTemoignages.html.twig' %}
{% include 'defaultv2/accueil/blocConfiance.html.twig' %}
</main>
<!-- ========== END MAIN CONTENT ========== -->
{% include 'defaultv2/accueil/footer.html.twig' %}
<!-- ========== SECONDARY CONTENTS ========== -->
<!-- Panel Sidebar Navigation -->
<aside id="sidebarContent" class="u-sidebar u-unfold--css-animation u-unfold--hidden"
aria-labelledby="sidebarNavToggler">
<div class="u-sidebar__scroller">
<div class="u-sidebar__container">
<div class="u-sidebar--panel__footer-offset">
<!-- Toggle Button -->
<div class="d-flex align-items-center border-bottom py-4 px-5">
<h4 class="h5 mb-0">Mon compte</h4>
<button type="button" class="close u-sidebar__close ml-auto" aria-controls="sidebarContent"
aria-haspopup="true" aria-expanded="false" data-unfold-event="click" data-unfold-hide-on-scroll="false"
data-unfold-target="#sidebarContent" data-unfold-type="css-animation" data-unfold-animation-in="fadeInRight"
data-unfold-animation-out="fadeOutRight" data-unfold-duration="500">
<span aria-hidden="true">&times;</span>
</button>
</div>
<!-- End Toggle Button -->
<!-- Content -->
<div class="js-scrollbar u-sidebar__body">
<div class="u-sidebar__content py-5">
<!-- Title -->
<div class="py-2 px-5">
<h4 class="text-uppercase text-muted font-size-13 mb-0">Mon menu</h4>
</div>
<!-- End Title -->
<!-- List -->
<ul class="list-unstyled font-size-14 mb-5">
<li>
<a class="media align-items-center u-sidebar--panel__link py-2 px-5" href="#">
<img class="max-width-4 mr-3" src="{{ asset('v2/svg/components/finance-dark-icon.svg') }}"
alt="Image Description">
<div class="media-body">
<span>Dashboard</span>
</div>
</a>
</li>
<li>
<a class="media align-items-center u-sidebar--panel__link py-2 px-5" href="#">
<img class="max-width-4 mr-3" src="{{ asset('v2/svg/components/touch-dark-icon.svg') }}"
alt="Image Description">
<div class="media-body">
<span>Activity</span>
</div>
</a>
</li>
<li>
<a class="media align-items-center u-sidebar--panel__link py-2 px-5" href="#">
<img class="max-width-4 mr-3" src="{{ asset('v2/svg/components/team-dark-icon.svg') }}"
alt="Image Description">
<div class="media-body">
<span>Team</span>
</div>
</a>
</li>
<li>
<a class="media align-items-center u-sidebar--panel__link py-2 px-5" href="#">
<img class="max-width-4 mr-3" src="{{ asset('v2/svg/components/email-dark-icon.svg') }}"
alt="Image Description">
<div class="media-body">
<span>Mailbox</span>
</div>
</a>
</li>
<li>
<a class="media align-items-center u-sidebar--panel__link py-2 px-5" href="#">
<img class="max-width-4 mr-3" src="{{ asset('v2/svg/components/projects-dark-icon.svg') }}"
alt="Image Description">
<div class="media-body">
<span>Projects</span>
</div>
</a>
</li>
</ul>
<!-- End List -->
<!-- Title -->
<div class="py-2 px-5">
<h4 class="text-uppercase text-muted font-size-13 mb-0">Sub level</h4>
</div>
<!-- End Title -->
<!-- List -->
<ul class="list-unstyled font-size-14 mb-0">
<li>
<a class="media align-items-center u-sidebar--panel__link py-2 px-5" href="#">
<img class="max-width-4 mr-3" src="{{ asset('v2/svg/components/calendar-dark-icon.svg') }}"
alt="Image Description">
<div class="media-body">
<span>Calendar</span>
</div>
</a>
</li>
<li>
<a class="media align-items-center u-sidebar--panel__link py-2 px-5" href="#">
<img class="max-width-4 mr-3" src="{{ asset('v2/svg/components/cog-dark-icon.svg') }}"
alt="Image Description">
<div class="media-body">
<span>Tools</span>
</div>
</a>
</li>
<li>
<a class="media align-items-center u-sidebar--panel__link py-2 px-5" href="#">
<img class="max-width-4 mr-3" src="{{ asset('v2/svg/components/archive-dark-icon.svg') }}"
alt="Image Description">
<div class="media-body">
<span>Archive</span>
</div>
</a>
</li>
</ul>
<!-- End List -->
</div>
</div>
<!-- End Content -->
</div>
<!-- Footer -->
<footer class="u-sidebar__footer u-sidebar__footer--panel py-4 px-5">
<!-- List -->
<ul class="list-inline font-size-14 mb-0">
<li class="list-inline-item">
<a class="u-sidebar--panel__link pr-2" href="../pages/privacy.html">Privacy</a>
</li>
<li class="list-inline-item">
<a class="u-sidebar--panel__link px-2" href="../pages/terms.html">Terms</a>
</li>
<li class="list-inline-item">
<a class="u-sidebar--panel__link pl-2" href="../pages/help.html">
<i class="fa fa-info-circle"></i>
</a>
</li>
</ul>
<!-- End List -->
</footer>
<!-- End Footer -->
</div>
</div>
</aside>
<!-- End Panel Sidebar Navigation -->
<!-- Begin Panel Login -->
{% include 'defaultv2/accueil/blocLogin.html.twig'
with {
'csrf_token': csrf_token,
'error' : error
} %}
<!-- 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>
<!-- 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');
$('.u-text-animation.u-text-animation').html("");
// initialization of text animation (typing)
var typed = new Typed(".u-text-animation.u-text-animation--typing", {
strings: ["Recrutez les candidats", "Boostez vos recrutements", "Valorisez vos collaborateurs"],
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 %}
@@ -0,0 +1,61 @@
{% 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 %}
@@ -0,0 +1,69 @@
{% 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 %}
@@ -0,0 +1,80 @@
{% 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 %}
@@ -0,0 +1,218 @@
{% 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 %}
@@ -0,0 +1,75 @@
<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>
@@ -0,0 +1,7 @@
{% for type, flash_messages in app.session.flashBag.all %}
{% for flash_message in flash_messages %}
<div class="flash-{{ type }}">
{{ flash_message }}
</div>
{% endfor %}
{% endfor %}
@@ -0,0 +1,31 @@
{% 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 %}
@@ -0,0 +1,43 @@
<!-- Plateforme DEBUT -->
<div class=" accueilFondBlanc">
<div class="container space-2 ">
<!-- Video Section -->
<div class="">
<div class="container space-2-bottom space-3-bottom--lg">
<div class=" text-center mx-auto">
<!-- Video Block -->
<div id="youTubeVideoPlayer" class="u-video-player mb-7">
<!-- Cover Image -->
<img class="img-fluid u-video-player__preview" src="{{ asset('v2/img/1920x800/tutoriel-video-de-motivation-cv-video.jpg')}} " alt="Image">
<!-- End Cover Image -->
<!-- Play Button -->
<a class="js-fancybox text-white u-video-player__btn u-video-player__centered" href="javascript:;" data-src="https://www.youtube.com/watch?v=CZDfD2ugXtg&t"
data-speed="700" data-animate-in="zoomIn" data-animate-out="zoomOut"
data-caption="Témoignage">
<span class="u-video-player__icon">
<i class="fa fa-play u-video-player__icon-inner"></i>
</span>
</a>
<!-- End Play Button -->
<!-- Video Iframe -->
<div class="embed-responsive embed-responsive-16by9">
</div>
<!-- End Video Iframe -->
</div>
<!-- End Video Block -->
<!-- Title -->
<h2 class="h3">Accompagnement candidats</h2>
<p>Suivez nos conseils pour postuler simplement aux offres demploi.</p>
<!-- End Title -->
</div>
</div>
</div>
<!-- End Video Section -->
</div>
</div>
<!-- Plateforme FIN -->
@@ -0,0 +1,28 @@
<!-- Recrutez DEBUT -->
<div class="space1-bottom accueilFondBleute">
<div class="container space-2 ">
<div class="row align-items-lg-center">
<div class="col-md-6 order-md-2 mb-5 mb-md-0">
<!-- Title <div class="col-md-6 order-md-2 mb-5 mb-md-0">-->
<div class="mb-6">
<h2 class="h3"> Découvrez les candidats autrement</h2>
<p> Ces dernières années, les recruteurs ont vu apparaître de nouvelles formes de candidatures inédites. Les candidats révolutionnent le recrutement en optant pour de nouvelles tendances : profil Linkedin, pitch Mail, profil vidéo ou encore CV vidéo. La vidéo a également pris une place importante dans notre société.
La candidature en vidéo ou vidéo de motivation savère être un outil performant qui répond parfaitement à vos attentes. Elle propose une approche plus humaine du recrutement et dévoile ce qui ne se voit pas sur le papier.
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>
</div>
</div>
<div class="col-md-6 order-md-1">
<div class="mb-6">
<img class="img-fluid" src="{{ asset('v2/png/offres-emploi-en-video.png') }}" alt="Image Description">
</div>
</div>
</div>
</div>
</div>
<!-- Recrutez FIN -->
@@ -0,0 +1,29 @@
<!-- Plateforme DEBUT -->
<div class=" accueilFondBleute">
<div class="container space-2 ">
<div class="row row justify-content-lg-end ">
<div class="col-md-6 ">
<!-- Title <div class="col-md-6 order-md-2 mb-5 mb-md-0">-->
<div class="mb-6">
<h2 class="h3"> Le CV classique : la fin dun modèle</h2>
<p> Dans un monde où les technologies, les compétences techniques ou hard skills évoluent très rapidement, le savoir-faire nest plus le principal critère de sélection des candidats.
Aujourdhui, votre entreprise recherche de plus en plus des compétences comportementales ou communément appelées “soft skills”. Il est difficile, voire impossible pour le candidat de communiquer ses qualités humaines à travers son CV.
Vous éprouvez des difficultés à détecter le talent quil vous faut ? Le CV papier ne vous suffit plus ? Vous souhaitez en savoir plus sur le candidat avant de faire votre choix ? Nous réinventons pour vous, la mise en relation pour lemploi.
</p>
<a class="btn btn-sm btn-primary btn-wide" href="#">Voir la plateforme</a>
</div>
</div>
<div class="col-md-6 align-right paddintRight">
<div class="mb-6">
<img class="img-fluid" src="{{ asset('v2/png/plateforme-de-recrutement-en-video.png') }}"
alt="Image Description">
</div>
</div>
</div>
</div>
</div>
<!-- Plateforme FIN -->
@@ -0,0 +1,89 @@
<!-- Recrutez DEBUT -->
<div class="space1-bottom accueilFondBleute">
<!-- Gallery -->
<div class="container space-1 space-2--sm space-3-bottom--lg">
<div class="row mb-7">
<!-- Gallery Heading -->
<div class="col-lg-5">
<h2 class="font-weight-normal">Exemple de<br class="d-none d-xl-inline-block"> vidéos de présentation</h2>
</div>
<!-- End Gallery Heading -->
<!-- Gallery Description -->
<div class="col-lg-5 ml-lg-auto text-muted">
Ils ont postulé aux offres d'emploi vidéo
</div>
<!-- End Gallery Description -->
</div>
<!-- Slick Carousel -->
<div class="js-slick-carousel js-slick-gallery u-slick u-slick--equal-height u-slick--blurex u-slick--center-mode-right u-slick--gutters-3"
data-infinite="true"
data-slides-show="4"
data-center-mode="true"
data-center-padding="150px"
data-arrows-classes="u-slick__arrow-classic u-slick__arrow-classic--lg u-slick__arrow-centered--y rounded-circle"
data-arrow-left-classes="fa fa-arrow-left u-slick__arrow-classic-inner bg-white opacity opacity-default--hover text-dark u-slick__arrow-classic-inner--left left-3 left-sm-7 opacity-0"
data-arrow-right-classes="fa fa-arrow-right u-slick__arrow-classic-inner bg-white opacity opacity-default--hover text-dark u-slick__arrow-classic-inner--right right-3 right-sm-7"
data-responsive='[{
"breakpoint": 992,
"settings": {
"slidesToShow": 3
}
}, {
"breakpoint": 768,
"settings": {
"slidesToShow": 2
}
}, {
"breakpoint": 300,
"settings": {
"slidesToShow": 1
}
}]'>
<div class="js-slide my-3 lift-lg shadow-2-sm-hover">
<a class="w-100 card bg-img-hero border-0 gradient-overlay-half-dark-v2-3 min-height-320 text-white rounded-pseudo p-4" href="#" style="background-image: url({{ asset('v2/img/candidatures/video-de-reponse-offre-emploi-1.jpg') }});">
<div class="mt-auto text-center">
<h5 class="font-weight-normal">Swimming Pool</h5>
</div>
</a>
</div>
<div class="js-slide my-3 lift-lg shadow-2-sm-hover">
<a class="w-100 card bg-img-hero border-0 gradient-overlay-half-dark-v2-3 min-height-320 text-white rounded-pseudo p-4" href="#" style="background-image: url({{ asset('v2/img/candidatures/video-de-reponse-offre-emploi-2.jpg') }});">
<div class="mt-auto text-center">
<h5 class="font-weight-normal">Restaurants</h5>
</div>
</a>
</div>
<div class="js-slide my-3 lift-lg shadow-2-sm-hover">
<a class="w-100 card bg-img-hero border-0 gradient-overlay-half-dark-v2-3 min-height-320 text-white rounded-pseudo p-4" href="#" style="background-image: url({{ asset('v2/img/candidatures/video-de-reponse-offre-emploi-3.jpg') }});">
<div class="mt-auto text-center">
<h5 class="font-weight-normal">Sunset</h5>
</div>
</a>
</div>
<div class="js-slide my-3 lift-lg shadow-2-sm-hover">
<a class="w-100 card bg-img-hero border-0 gradient-overlay-half-dark-v2-3 min-height-320 text-white rounded-pseudo p-4" href="#" style="background-image: url({{ asset('v2/img/candidatures/video-de-reponse-offre-emploi-4.jpg') }});">
<div class="mt-auto text-center">
<h5 class="font-weight-normal">Gym</h5>
</div>
</a>
</div>
<div class="js-slide my-3 lift-lg shadow-2-sm-hover">
<a class="w-100 card bg-img-hero border-0 gradient-overlay-half-dark-v2-3 min-height-320 text-white rounded-pseudo p-4" href="#" style="background-image: url({{ asset('v2/img/candidatures/video-de-reponse-offre-emploi-5.jpg') }});">
<div class="mt-auto text-center">
<h5 class="font-weight-normal">Spa/Massage</h5>
</div>
</a>
</div>
</div>
<!-- End Slick Carousel -->
</div>
<!-- End Gallery -->
</div>
<!-- Recrutez FIN -->
@@ -0,0 +1,21 @@
<!-- Degradé avec Stats Section -->
<div class="gradient-overlay-half-primary-v1">
<div class="container text-center space-2-top space-3-top--lg space-3-bottom">
<div class="w-md-80 w-lg-60 text-center mx-auto">
<!-- SVG Quote -->
<figure class="mx-auto mb-4" style="width: 50px;">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 8 8" style="enable-background:new 0 0 8 8;" xml:space="preserve">
<path fill="#e3e6f0" d="M3,1.3C2,1.7,1.2,2.7,1.2,3.6c0,0.2,0,0.4,0.1,0.5c0.2-0.2,0.5-0.3,0.9-0.3c0.8,0,1.5,0.6,1.5,1.5c0,0.9-0.7,1.5-1.5,1.5
C1.4,6.9,1,6.6,0.7,6.1C0.4,5.6,0.3,4.9,0.3,4.5c0-1.6,0.8-2.9,2.5-3.7L3,1.3z M7.1,1.3c-1,0.4-1.8,1.4-1.8,2.3
c0,0.2,0,0.4,0.1,0.5c0.2-0.2,0.5-0.3,0.9-0.3c0.8,0,1.5,0.6,1.5,1.5c0,0.9-0.7,1.5-1.5,1.5c-0.7,0-1.1-0.3-1.4-0.8
C4.4,5.6,4.4,4.9,4.4,4.5c0-1.6,0.8-2.9,2.5-3.7L7.1,1.3z"/>
</svg>
</figure>
<h2 class="text-white text-center">Fini le papier, faîtes place à la vidéo !</h2>
</div>
</div>
</div>
</div>
<!-- Degradé avec Stats FIN-->
@@ -0,0 +1,93 @@
<!-- Plateforme DEBUT -->
<div class=" accueilFondBlanc">
<div class="container space-2 ">
<div class="card-deck d-block d-lg-flex">
<div class="card card-frame mb-5">
<!-- Listing -->
<a class="card-body p-4" href="#">
<div class="media">
<img class="max-width-9 mb-2" src="{{ asset('v2/svg/components/consult-cyan-icon.svg') }}" alt="Image Description">
<div class="media-body px-4">
<h4 class="h6 text-dark mb-1">Multi-support</h4>
<p class="mb-0">Smartphone, tablette ou ordinateur.</p>
</div>
</div>
</a>
<!-- End Listing -->
</div>
<div class="card card-frame mb-5">
<!-- Listing -->
<a class="card-body p-4" href="#">
<div class="media">
<img class="max-width-9 mb-2" src="{{ asset('v2/svg/components/plan-brown-icon.svg') }}" alt="Image Description">
<div class="media-body px-4">
<h4 class="h6 text-dark mb-1">Outil denregistrement vidéo</h4>
<p>Simple, rapide, gratuit et confidentiel.</p>
</div>
</div>
</a>
<!-- End Listing -->
</div>
<div class="card card-frame mb-5">
<!-- Listing -->
<a class="card-body p-4" href="#">
<div class="media">
<img class="max-width-9 mb-2" src="{{ asset('v2/svg/components/create-blue-icon.svg') }}" alt="Image Description">
<div class="media-body px-4">
<h4 class="h6 text-dark mb-1">Candidature vidéo</h4>
<p>Réponse à vos offres demploi vidéo ou candidature spontanée.</p>
</div>
</div>
</a>
<!-- End Listing -->
</div>
</div>
<div class="card-deck d-block d-lg-flex">
<div class="card card-frame mb-5">
<!-- Listing -->
<a class="card-body p-4" href="#">
<div class="media">
<img class="max-width-9 mb-2" src="{{ asset('v2/svg/components/develop-purple-icon.svg') }}" alt="Image Description">
<div class="media-body px-4">
<h4 class="h6 text-dark mb-1">Tutoriel vidéo</h4>
<p>Pour la réalisation, les candidats disposent de vidéos conseils.</p>
</div>
</div>
</a>
<!-- End Listing -->
</div>
<div class="card card-frame mb-5">
<!-- Listing -->
<a class="card-body p-4" href="#">
<div class="media">
<img class="max-width-9 mb-2" src="{{ asset('v2/svg/components/rocket-red-icon.svg') }}" alt="Image Description">
<div class="media-body px-4">
<h4 class="h6 text-dark mb-1">Les plus de la vidéo de motivation</h4>
<p>Personnalité, motivation et projet professionnel.</p>
</div>
</div>
</a>
<!-- End Listing -->
</div>
<div class="card card-frame mb-5">
<!-- Listing -->
<a class="card-body p-4" href="#">
<div class="media">
<img class="max-width-9 mb-2" src="{{ asset('v2/svg/components/data-analysis-dark-icon.svg') }}" alt="Image Description">
<div class="media-body px-4">
<h4 class="h6 text-dark mb-1">Traitement des candidatures</h4>
<p>Réponses aux candidats depuis loutil : écrite ou en vidéo.</p>
</div>
</div>
</a>
<!-- End Listing -->
</div>
</div>
</div>
</div>
<!-- Plateforme FIN -->
@@ -0,0 +1,20 @@
<!-- Accueil Photo Haut Section -->
<div class="bg-img-hero-center" style="background-image: url({{ asset('v2/img/1920x800/recrutement-video.jpg')}} ">
<div class="container space-2 space-5-top--lg space-4-bottom--lg">
<div class="w-md-75">
<!-- Title -->
<div class="mb-7">
<span class="d-block text-white text-uppercase mb-2">Talents tube</span>
<h1 class="display-4 font-size-48--md-down text-white mb-4">
<strong class="u-text-animation u-text-animation--typing"></strong>
<br>avec la vidéo
</h1>
</div>
<!-- End Title -->
</div>
</div>
</div>
<!-- End Accueil Photo Haut Section -->
@@ -0,0 +1,27 @@
<!-- Degradé avec Stats Section -->
<div class="gradient-overlay-half-primary-v1">
<div class="container text-center space-2-top space-3-top--lg space-2-bottom">
<div class=" text-center ">
<!-- SVG Quote -->
<figure class="mx-auto mb-4" style="width: 50px;">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 8 8" style="enable-background:new 0 0 8 8;" xml:space="preserve">
<path fill="#e3e6f0" d="M3,1.3C2,1.7,1.2,2.7,1.2,3.6c0,0.2,0,0.4,0.1,0.5c0.2-0.2,0.5-0.3,0.9-0.3c0.8,0,1.5,0.6,1.5,1.5c0,0.9-0.7,1.5-1.5,1.5
C1.4,6.9,1,6.6,0.7,6.1C0.4,5.6,0.3,4.9,0.3,4.5c0-1.6,0.8-2.9,2.5-3.7L3,1.3z M7.1,1.3c-1,0.4-1.8,1.4-1.8,2.3
c0,0.2,0,0.4,0.1,0.5c0.2-0.2,0.5-0.3,0.9-0.3c0.8,0,1.5,0.6,1.5,1.5c0,0.9-0.7,1.5-1.5,1.5c-0.7,0-1.1-0.3-1.4-0.8
C4.4,5.6,4.4,4.9,4.4,4.5c0-1.6,0.8-2.9,2.5-3.7L7.1,1.3z"/>
</svg>
</figure>
<h2 class="text-white text-center"> De nombreuses entreprises utilisent notre solution de recrutement, alors pourquoi pas vous ?</h2>
</div>
</div>
<div class=" text-center space-3-bottom">
<a class="btn btn-sm btn-contact" href="#signupModal" role="button" data-modal-target="#signupModal" data-overlay-color="#151b26">
<i class="fa fa-user-circle mr-1"></i>
Contactez nous
</a>
</div>
</div>
</div>
<!-- Degradé avec Stats FIN-->
@@ -0,0 +1,183 @@
{% extends 'basev2.html.twig' %}
{% block title %}Talents Tube : Le 1er job board 100% vidéo{% endblock %}
{% block content %}
<main id="content">
{% include 'defaultv2/accueil/blocPhoto.html.twig'
with {
'urlImage': 'v2/img/1920x800/candidature-offre-emploi-video.jpg',
'textParDefaut' : 'Recevez des candidatures',
'textVideo' : 'avec la vidéo'
} %}
{% include 'defaultv2/candidatures/blocCvClassique.html.twig' %}
{% include 'defaultv2/candidatures/blocFinCv.html.twig' %}
{% include 'defaultv2/candidatures/blocCandidatureAutrement.html.twig' %}
{% include 'defaultv2/candidatures/blocGrille.html.twig' %}
{% include 'defaultv2/candidatures/blocExempleMotivation.html.twig' %}
{% include 'defaultv2/candidatures/blocAccompagnement.html.twig' %}
{% include 'defaultv2/candidatures/blocPourquoiPasVous.html.twig' %}
</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');
$('.u-text-animation.u-text-animation').html("");
// initialization of text animation (typing)
var typed = new Typed(".u-text-animation.u-text-animation--typing", {
strings: ["Recevez des candidatures "],
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 %}
@@ -0,0 +1,60 @@
{% 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 %}
@@ -0,0 +1,48 @@
{% 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 %}
@@ -0,0 +1,81 @@
{% 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 %}
@@ -0,0 +1,15 @@
{% 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>
@@ -0,0 +1,11 @@
<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>
@@ -0,0 +1,86 @@
<footer class="page-footer">
<div class="container">
<div class="row footer-info">
<div class="col xl2 l2 m6 s12 col-footer-logo">
<img src="{{ asset('/img/logo-mini-white.svg') }}" alt="Talents Tube 1er job board 100% vidéo">
</div>
<div class="col xl3 l3 m6 s6">
<h5 class="white-text">Talents Tube</h5>
<ul>
<li>
<a class="white-text" href="{{ path('homepage') }}">Accueil</a>
</li>
<li>
<a class="white-text" href="{{ path('ad_search_result') }}" title="Offres d'emploi vidéos">Nos offres d'emploi</a>
</li>
<li>
<a class="white-text" href="{{ path('company_list') }}" title="Listes entreprises">Nos entreprises</a>
</li>
<li>
<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>
</li>
</ul>
</div>
<div class="col xl4 l4 m6 s6">
<h5 class="white-text">Informations</h5>
<ul>
<li>
<a class="white-text" href="{{ path('service_legals') }}">Mentions légales</a>
</li>
<li>
<a class="white-text" href="{{ path('service_cgu') }}">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>
</li>
</ul>
</div>
<div class="col xl3 l3 m6 s12 left-align">
<h5 class="white-text">Suivez-nous !</h5>
<p class="footer-socials">
<a class="white-text td-none" href="https://www.facebook.com/TalentsTuber/" title="Facebook" target="_blank">
<i class="fa fa-facebook" aria-hidden="true"></i>
</a>
<a class="white-text td-none" href="https://twitter.com/TalentsTuber" title="Twitter" target="_blank">
<i class="fa fa-twitter" aria-hidden="true"></i>
</a>
<a class="white-text td-none" href="https://www.youtube.com/channel/UCRNqiJCLAorO0aCzNQu-8ww" title="Youtube" target="_blank">
<i class="fa fa-youtube" aria-hidden="true"></i>
</a>
<a class="white-text td-none" href="https://www.linkedin.com/company/talentstube" title="Linkedin" target="_blank">
<i class="fa fa-linkedin-square" aria-hidden="true"></i>
</a>
</p>
<h5 class="white-text">Contactez-nous !</h5>
<a class="white-text" href="mailto:&#098;&#111;&#110;&#106;&#111;&#117;&#114;&#064;&#116;&#097;&#108;&#101;&#110;&#116;&#115;&#116;&#117;&#098;&#101;&#046;&#099;&#111;&#109;">Par mail</a>
<p class="white-text">02 30 05 06 31</p>
<p class="footer-newsletter">
<a class="btn-large btn-round" href="#" title="Newsletter" data-token="ecea5416671e97e3abfa8195848a9140" onclick="mjOpenPopin(event, this)">
<i class="fa fa-envelope-open-o left" aria-hidden="true"></i>
Newsletter</a>
<data data-token="ecea5416671e97e3abfa8195848a9140" class="mj-w-data" data-apikey="2jWA" data-w-id="31E" data-lang="fr_FR" data-base="https://app.mailjet.com" data-width="640" data-height="420" data-statics="statics"></data>
</p>
</div>
</div>
<div class="row footer-more-links">
<div class="col s12 center-align">
<p class="text-center white-text">Entreprise soutenue par</p>
<a href="https://www.bretagne.bzh/"><img src="{{ asset('img/RB_monochrome_blanc.svg')}}" alt="Region Bretagne"></a><br>
</div>
<div class="col s12 center-align m-t-30">
<a class="text-center white-text" href="https://www.e-declic.com" target="_blank" title="Agence Web">&copy;&nbsp;2018 Talents Tube</a>
</div>
</div>
</div>
</footer>
{# Modal Login#}
{% if app.request.get('_route') != "fos_user_security_login" %}
<div id="modal_login" class="modal ">
<div class="modal-content">
{{ render(controller('AppBundle:SecurityModal:loginModal')) }}
</div>
</div>
{% endif %}
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,231 @@
{% extends 'basev2.html.twig' %}
{% block title %}Talents Tube : Le 1er job board 100% vidéo{% endblock %}
{% block content %}
<main id="content">
<!-- Privacy Section -->
<div class="bg-gray-100">
<div class="container space-2 space-4-top--lg space-3-bottom--lg">
<div class="w-lg-80 bg-white border rounded mx-lg-auto p-5 p-sm-7">
<!-- Hero -->
<div class="mb-9">
<h1>Mentions Légales</h1>
</div>
<!-- End Hero -->
<!-- Info Content -->
<div class="mb-7">
<div class="mb-3">
<h2 class="h4">Identité de l'éditeur du site</h2>
</div>
<p>Le site www.talentstube.com est édité par :</p>
<p>La société TALENTS TUBE, Société par Actions Simplifiée au capital de 305 000 euros,
Immatriculée au Registre du Commerce et des Sociétés de VANNES sous le numéro 824 366 926
Dont le siège social est situé CP60 PIBS 56038 VANNES Cedex, France
Numéro de TVA Intracommunautaire : FR 42 824366926</p>
<p>Représentée par Monsieur Franck DELALANDE, son Président.
Directeur de la publication : Franck DELALANDE.</p>
</div>
<!-- End Info Content -->
<!-- Info Content -->
<div class="mb-7">
<div class="mb-3">
<h3 class="h4">Contact</h3>
</div>
<p>Talents Tube est joignable :</p>
<p>- Par internet : via le **formulaire de contact** </p>
<p>- Par téléphone au 02 30 05 06 31, du lundi au vendredi de 9 h à 18 h;</p>
<p>- Par voie postale :</p>
<p>Talents Tube</p>
<p>3 Rue Louis de Broglie</p>
<p>Village By CA</p>
<p>56000 VANNES</p>
</div>
<!-- End Info Content -->
<!-- Info Content -->
<div class="mb-7">
<div class="mb-3">
<h3 class="h4">Hébergement</h3>
</div>
<p>e-declic</p>
<p>27 Rue du Danemark - Porte océane 2</p>
<p>Espace Terre et mer</p>
<p>56400 Auray</p>
<p>Tél. : +33.(0)297 290 060</p>
</div>
<!-- End Info Content -->
</div>
</div>
</div>
<!-- End Privacy Section -->
</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("");
var typed = new Typed(".u-text-animation.u-text-animation--typing", {
strings: [" Attirez des talents "],
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() }}
{% endblock %}
@@ -0,0 +1,149 @@
<!-- Skippy -->
<a id="skippy" class="sr-only sr-only-focusable u-skippy" href="#content">
<div class="container">
<span class="u-skiplink-text">Skip to main content</span>
</div>
</a>
<!-- End Skippy -->
<!-- ========== HEADER ========== -->
<header id="header" class="u-header u-header--modern u-header--bordered u-header--bg-transparent u-header--white-nav-links u-header--sticky-top-lg">
<div class="u-header__section">
<div id="logoAndNav" class="container-fluid">
<!-- Nav -->
<nav class="js-mega-menu navbar navbar-expand-lg u-header__navbar">
<!-- Logo -->
<div class="u-header__navbar-brand-wrapper">
<a class="navbar-brand u-header__navbar-brand" href="indexv2" aria-label="TT">
<img class="u-header__navbar-brand-default" src="{{ asset('v2/svg/logos/talents-tube-logo.svg') }}" alt="Logo">
<img class="u-header__navbar-brand-mobile" src="{{ asset('v2/svg/logos/talentstube-logo-mobile.svg') }}" alt="Logo">
<img class="u-header__navbar-brand-on-scroll" src="{{ asset('v2/svg/logos/talents-tube-logo.svg') }}" alt="Logo">
</a>
</div>
<!-- Responsive Toggle Button -->
<button type="button" class="navbar-toggler btn u-hamburger u-header__hamburger"
aria-label="Toggle navigation"
aria-expanded="false"
aria-controls="navBar"
data-toggle="collapse"
data-target="#navBar">
<span class="d-none d-sm-inline-block">Menu</span>
<span id="hamburgerTrigger" class="u-hamburger__box ml-3">
<span class="u-hamburger__inner"></span>
</span>
</button>
<!-- End Responsive Toggle Button -->
<!-- Navigation -->
<div id="navBar" class="collapse navbar-collapse u-header__navbar-collapse py-0">
<ul class="navbar-nav u-header__navbar-nav">
<!-- Home -->
<li class="nav-item u-header__nav-item"
data-event="hover"
data-animation-in="fadeInUp"
data-animation-out="fadeOut">
<a id="homeMegaMenu" class="nav-link u-header__nav-link" href="offre-emploi-video">
L'Offre d'emploi
</a>
</li>
<!-- End Home -->
<!-- Pages -->
<li class="nav-item u-header__nav-item">
<a id="PagesMegaMenu" class="nav-link u-header__nav-link" href="marque-employeur-en-video"
aria-haspopup="true"
aria-expanded="false">
La Marque employeur
</a>
</li>
<!-- End Pages -->
<!-- Works -->
<li class="nav-item u-header__nav-item"
data-event="hover"
data-animation-in="fadeInUp"
data-animation-out="fadeOut">
<a id="worksMegaMenu" class="nav-link u-header__nav-link" href="candidatures-cv-video">
La Candidature
</a>
</li>
<!-- End Works -->
<!-- Blog -->
<li class="nav-item u-header__nav-item"
data-event="hover"
data-animation-in="fadeInUp"
data-animation-out="fadeOut">
<a id="blogMegaMenu" class="nav-link u-header__nav-link" href="https://blog.talentstube.com/" target="_blank">
Blog
</a>
</li>
<!-- End Blog -->
<!-- Button -->
<li class="nav-item u-header__nav-item-btn">
<a class="btn btn-sm btn-contact" href="#signupModal" role="button"
data-modal-target="#signupModal"
data-overlay-color="#151b26">
<i class="fa fa-user-circle mr-1"></i>
Contactez nous
</a>
</li>
<!-- End Button -->
<!-- Button -->
<li class="nav-item u-header__nav-item-btn">
<a class="btn btn-sm btn-primary" href="#signupModal" role="button"
data-modal-target="#signupModal"
data-overlay-color="#151b26">
<i class="fa fa-user-circle mr-1"></i>
Connexion recruteurs
</a>
</li>
<!-- End Button -->
</ul>
</div>
<!-- End Navigation -->
<ul class="navbar-nav flex-row u-header__secondary-nav">
<!-- Account Signin -->
<li class="nav-item u-header__navbar-icon">
<!-- Account Sidebar Toggle Button -->
<a id="sidebarNavToggler" class="btn btn-xs btn-icon btn-text-dark" href="javascript:;" role="button"
aria-controls="sidebarContent"
aria-haspopup="true"
aria-expanded="false"
data-unfold-event="click"
data-unfold-hide-on-scroll="false"
data-unfold-target="#sidebarContent"
data-unfold-type="css-animation"
data-unfold-animation-in="fadeInRight"
data-unfold-animation-out="fadeOutRight"
data-unfold-duration="500">
<i class="fa fa-bars btn-icon__inner font-size-13"></i>
</a>
<!-- End Account Sidebar Toggle Button -->
</li>
<!-- End Account Signin -->
</ul>
</nav>
<!-- End Nav -->
</div>
</div>
</header>
<!-- ========== END HEADER ========== -->
@@ -0,0 +1,242 @@
{% extends 'base.html.twig' %}
{% block title %}Talents Tube : Le 1er job board 100% vidéo{% endblock %}
{% block content %}
<div id="wrapper" class="no-padding-top no-padding-bottom">
<div class="fluid-container">
<div class="row flexcontainer row-noMargin">
{# VIDEO #}
<div class="col l12 m12 s12 home-content col-noPadding">
<div id="homeTeaser" class="valign-wrapper">
<h1 class="white-text center-align">1ère plateforme pour lemploi
<span>100% vidéo</span></h1><br/>
<div class="link-home-head">
<a data-target="modal_concept" href="#!" class="btn btn-default btn-round btn-concept modal-trigger">
Le concept en vidéo &nbsp;&nbsp;&nbsp;
<img src="{{asset('img/bouton-play.png')}}"/>
</a>
</div>
<div class="header-video-inner">
<video loop="" preload="metadata" autoplay="" id="vid" muted="muted">
<source src="/img/home_video.mp4" type="video/mp4">
</video>
</div>
</div>
{# RECHERCHE #}
<div class="fluid-container bg-grey-3 homeSearchWrapper">
<div id="homeSearch" class="container">
{% include 'form/search_form.html.twig' with {
'searchform' : searchform
} %}
</div>
</div>
{# BLOC OFFRE EMPLOI CARDS #}
<div id="liste-jobs" class="fuild-container bg-grey-3 button-plus">
<div class="container">
<div class="row center-align">
<div class="col s12">
<h2 class="blue-text no-margin-top">Les offres d'emploi</h2>
<h3 class="subtitles-homepage">Postulez en CV vidéo ou vidéo de motivation</h3>
</div>
</div>
<div class="row">
<div class="col s12 col-noPadding">
<div class="owl-carousel owl-carousel-home">
{% if ads | length > 0 %}
{% include 'default/ad_card.html.twig' with {
'ads' : ads
} %}
{% endif %}
</div>
</div>
</div>
<div class="row center-align">
<div class="col s12">
<a href="{{ path('ad_search_result') }}" title="Découvrir toutes les offres d'emploi" class="btn btn-default btn-round btn-all-jobs">Voir les offres
</a>
</div>
</div>
</div>
</div>
{# COMPANY #}
<div id="liste-company" class="bg-white button-plus">
<div class="container">
<div class="row center-align">
<div class="col s12">
<h2 class="blue-text no-margin-top">Ils recrutent</h2>
<h3 class="subtitles-homepage">Ils méritent votre candidature spontanée, découvrez leur réalité, leur marque employeur.</h3>
</div>
</div>
<div class="row">
<div class="col s12 col-noPadding">
<div class="owl-carousel owl-carousel-home home-company-carousel">
{% if companies | length > 0 %}
{% include 'default/company_card.html.twig' with {
'companies' : companies
} %}
{% endif %}
</div>
</div>
</div>
<div class="row center-align">
<div class="col s12">
<a href="{{ path('company_list') }}" title="Toutes les entreprise" class="btn btn-default btn-round btn-all-talents">Voir les entreprises</a>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
{# TALENTS #}
<div id="liste-talents" class="bg-dark2 button-plus">
<div class="container">
<div class="row center-align">
<div class="col s12">
<h2 class="blue-text no-margin-top">Les talents à la une</h2>
</div>
<h3 class="subtitles-homepage">Découvrez leur CV vidéo et vidéo de motivation.</h3>
</div>
<div class="row">
<div class="owl-carousel owl-carousel-home home-talent-carousel">
{% if talents | length > 0 %}
{% include 'default/talent_card.html.twig' with {
'talents' : talents
} %}
{% endif %}
</div>
</div>
<div class="row center-align">
<h2>Rejoignez une communauté de plus de <strong>1000</strong> candidats</h2>
<div class="col s12 m-t-50">
<a href="#!" title="Créer Mon profil" class="btn btn-default btn-round btn-create-account">Créer mon profil</a>
</div>
</div>
</div>
</div>
{# TERRITOIRE #}
<div id="liste-territoires" class="bg-dark1 button-plus">
<div class="container">
<div class="row center-align">
<div class="col s12">
<h2 class="blue-text no-margin-top">Les territoires</h2>
<h3 class="subtitles-homepage">Venez vivre et travailler chez nous.</h3>
{% if territories %}
<div class="owl-carousel owl-carousel-home territory-carousel">
{% for t in territories if t.presentationVideo and t.isPrivate != true %}
<div class="item">
{% if t.presentationVideo.thumbnails.0. sizes is defined %}
<a href="{{ path('territory_show',{'alias': t.alias }) }}" title="{{ t.brandname }}">
<img src="{{ t.presentationVideo.thumbnails.0.sizes.4.link }}" alt="{{ t.brandName }}" class="overlay-hover"/>
<span class="playerbtn" style="margin-top: -55px;"></span>
</a>
{% endif %}
{% if t.extra.terType is defined %}
<div class="m-t-15 fs-12 text-100">{{ t.extra.terType|upper }}</div>
{% endif %}
<div class="m-t-5 hover-none">
<a href="{{ path('territory_show',{'alias': t.alias }) }}" class="color-white td-none">{{ t.brandName|upper }}</a>
</div>
</div>
{% endfor %}
</div>
<div class="m-t-30">
<a title="Voir les territoires" class="btn btn-default" href="{{ path('territory_list') }}">
<span>
Voir les territoires</span>
</a>
</div>
{% endif %}
</div>
</div>
</div>
</div>
{# BLOC contenu vidéo #}
<div class="fluid-container bg-grey-3">
<div class="container">
<div class="blocs-texte-video">
<div class="row center-align">
<div class="col s12">
<h2 class="blue-text no-margin-top no-margin-bottom">Les conseils de votre
<span>talentstubeuse</span></h2>
</div>
</div>
<div class="row flexcontainer row-bloc-video-1 row-noMargin">
<div class="col l6 m12 s12 col-noPadding">
<a href="#!" data-video="#video2" class="img_content embed-responsive embed-responsive-16by9" style="background:url(/img-cnt/cv_video.jpg);background-size:cover;">
<span class="playerbtn"></span>
</a>
<iframe style="display:block;" class="hide" id="video2" src="https://player.vimeo.com/video/286344340?title=0&byline=0&portrait=0" width="100%" height="344" frameborder="0" webkitallowfullscreen="webkitallowfullscreen" mozallowfullscreen="mozallowfullscreen" allowfullscreen="allowfullscreen"></iframe>
</div>
<div class="col l6 m12 s12 valign-wrapper">
<div class="inside-m valign">
<h2 class="no-margin-top">CV vidéo
</h2>
<p>Devenez acteur de vos talents, montrez qui vous êtes !</p>
</div>
</div>
<div class="clearfix"></div>
</div>
<div class="row flexcontainer row-bloc-video-2 row-noMargin">
<div class="col l6 m12 s12 valign-wrapper">
<div class="inside-m valign">
<h2 class="no-margin-top">
Marque Employeur et Offre d'emploi en vidéo
</h2>
<p>Développez votre Marque Employeur !</p>
</div>
</div>
<div class="col l6 m12 s12 col-noPadding">
<a href="#!" data-video="#video1" class="img_content embed-responsive embed-responsive-16by9" style="background:url(/img-cnt/offre_emploi.jpg);background-size:cover;">
<span class="playerbtn"></span>
</a>
<iframe style="display:block;" class="hide" id="video1" src="https://player.vimeo.com/video/215657499?title=0&byline=0&portrait=0" width="100%" height="344" frameborder="0" webkitallowfullscreen="webkitallowfullscreen" mozallowfullscreen="mozallowfullscreen" allowfullscreen="allowfullscreen"></iframe>
</div>
<div class="clearfix"></div>
</div>
<div class="row flexcontainer row-bloc-video-3 row-noMargin">
<div class="col l6 m12 s12 col-noPadding">
<a href="#!" data-video="#video3" class="img_content embed-responsive embed-responsive-16by9" style="background:url(https://i.vimeocdn.com/video/653721887_1024x573.jpg);background-size:cover;">
<span class="playerbtn"></span>
</a>
<iframe style="display:block;" class="hide" id="video3" src="https://player.vimeo.com/video/232618030" width="100%" height="344" frameborder="0" webkitallowfullscreen="webkitallowfullscreen" mozallowfullscreen="mozallowfullscreen" allowfullscreen="allowfullscreen"></iframe>
</div>
<div class="col l6 m12 s12 valign-wrapper">
<div class="inside-m valign">
<h2 class="no-margin-top">
Le territoire en vidéo
</h2>
<p>Développez votre Marque Territoire !</p>
</div>
</div>
<div class="clearfix"></div>
</div>
</div>
</div>
</div>
{% include 'testimony/testimony_list.html.twig' %}
</div>
<div id="modal_concept" class="modal modal-fixed-footer">
<div class="modal-content">
<div class="video-container">
<iframe id="iframe_concept" src="https://player.vimeo.com/video/215638758?title=0&byline=0&portrait=0" frameborder="0" webkitallowfullscreen="webkitallowfullscreen" mozallowfullscreen="mozallowfullscreen" allowfullscreen="allowfullscreen"></iframe>
</div>
</div>
<div class="modal-footer">
<a href="#!" class="modal-action modal-close btn btn-default button-round-small">Fermer</a>
</div>
</div>
{% endblock %}
{% block javascripts %}
{{ parent() }}
<script src="https://player.vimeo.com/api/player.js"></script>
<script src="https://maps.googleapis.com/maps/api/js?key=AIzaSyDYV8IJGtIoWLfXJQQvIuDQ88n2aEuRgpg&libraries=places"></script>
{% endblock %}
@@ -0,0 +1,45 @@
<!-- Plateforme DEBUT -->
<div class="space1-bottom accueilFondBleute">
<div class="container space-2 ">
<div class="row align-items-lg-center">
<!-- Icon Blocks Section -->
<div class="container space-2 space-3--lg">
<div class="row">
<div class="col-md-4 mb-7 mb-md-0">
<!-- Icon Blocks -->
<div class="text-center px-lg-3">
<img class="max-width-14 mb-2" src="{{ asset('v2/svg/components/trophy-purple-icon.svg') }}" alt="Image Description">
<h3 class="h4">Améliorez vos annonces</h3>
<p class="mb-0">La vidéo génère 34% de candidatures supplémentaires par rapport à une annonce demploi écrite.</p>
</div>
<!-- End Icon Blocks -->
</div>
<div class="col-md-4 mb-7 mb-md-0">
<!-- Icon Blocks -->
<div class="text-center px-lg-3">
<img class="max-width-14 mb-2" src="{{ asset('v2/svg/components/idea-primary-icon.svg') }}" alt="Image Description">
<h3 class="h4">Attirez les jeunes candidats</h3>
<p class="mb-0">La génération des millenials représentera 75% de la population active dici 2030.</p>
</div>
<!-- End Icon Blocks -->
</div>
<div class="col-md-4">
<!-- Icon Blocks -->
<div class="text-center px-lg-3">
<img class="max-width-14 mb-2" src="{{ asset('v2/svg/components/rocket-red-icon.svg') }}" alt="Image Description">
<h3 class="h4">Adoptez le Mobile First</h3>
<p class="mb-0">82% des candidats recherchent des offres demploi depuis leur smartphone.</p>
</div>
<!-- End Icon Blocks -->
</div>
</div>
</div>
<!-- End Icon Blocks Section -->
</div>
</div>
</div>
<!-- Plateforme FIN -->
@@ -0,0 +1,21 @@
<!-- Degradé avec Stats Section -->
<div class="gradient-overlay-half-primary-v1">
<div class="container text-center space-2-top space-3-top--lg space-3-bottom">
<div class="w-md-80 w-lg-60 text-center mx-auto">
<!-- SVG Quote -->
<figure class="mx-auto mb-4" style="width: 50px;">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 8 8" style="enable-background:new 0 0 8 8;" xml:space="preserve">
<path fill="#e3e6f0" d="M3,1.3C2,1.7,1.2,2.7,1.2,3.6c0,0.2,0,0.4,0.1,0.5c0.2-0.2,0.5-0.3,0.9-0.3c0.8,0,1.5,0.6,1.5,1.5c0,0.9-0.7,1.5-1.5,1.5
C1.4,6.9,1,6.6,0.7,6.1C0.4,5.6,0.3,4.9,0.3,4.5c0-1.6,0.8-2.9,2.5-3.7L3,1.3z M7.1,1.3c-1,0.4-1.8,1.4-1.8,2.3
c0,0.2,0,0.4,0.1,0.5c0.2-0.2,0.5-0.3,0.9-0.3c0.8,0,1.5,0.6,1.5,1.5c0,0.9-0.7,1.5-1.5,1.5c-0.7,0-1.1-0.3-1.4-0.8
C4.4,5.6,4.4,4.9,4.4,4.5c0-1.6,0.8-2.9,2.5-3.7L7.1,1.3z"/>
</svg>
</figure>
<h2 class="text-white text-center"> Ce sont ceux qui vivent le métier au quotidien qui en parlent le mieux !</h2>
</div>
</div>
</div>
</div>
<!-- Degradé avec Stats FIN-->
@@ -0,0 +1,81 @@
<!-- Plateforme DEBUT -->
<div class=" accueilFondBlanc">
<div class="container space-2 ">
<div class="row row justify-content-lg-end ">
<!-- Benefits -->
<div class="space-2 space-3-bottom--lg overflow-hidden">
<div class="container">
<div class="row no-gutters align-items-center">
<div class="col-lg-5 mb-5 mb-lg-0">
<h6 class="text-uppercase font-weight-medium letter-spacing-0_06 mb-3">Benefits</h6>
<h2 class="text-lh-xs mb-4">La démarche pour recruter</h2>
<p class="mb-5">Grâce au storytelling, vous racontez à vos employés potentiels, une histoire qui humanise votre entreprise.
Par linterview de vos collaborateurs, la visite de vos locaux, vous leur offrez une vue de lintérieur en toute cohérence avec la réalité de votre quotidien.</p>
<!-- Benefits List -->
<ul class="list-unstyled mb-7">
<li class="d-flex align-items-start mb-5">
<div class="mt-2">
<span class="u-icon u-icon--secondary u-icon--sm rounded-circle">
<span class="u-icon__inner">1</span>
</span>
</div>
<div class="ml-3">
<p class="mb-0">Tournage dans vos locaux</p>
</div>
</li>
<li class="d-flex align-items-start mb-5">
<div class="mt-2">
<span class="u-icon u-icon--secondary u-icon--sm rounded-circle">
<span class="u-icon__inner">2</span>
</span>
</div>
<div class="ml-3">
<p class="mb-0">Votre espace Talents Tube</p>
</div>
</li>
<li class="d-flex align-items-start mb-5">
<div class="mt-2">
<span class="u-icon u-icon--secondary u-icon--sm rounded-circle">
<span class="u-icon__inner">3</span>
</span>
</div>
<div class="ml-3">
<p class="mb-0">Vos candidatures en vidéo </p>
</div>
</li>
</ul>
<!-- End Benefits List -->
<!-- Logos -->
<ul class="list-inline">
<li class="list-inline-item mr-6"><img src="{{ asset('v2/img/clients/google.png') }}" alt="Image Description" width="94"></li>
<li class="list-inline-item mr-6"><img src="{{ asset('v2/img/clients/slack.png') }}" alt="Image Description" width="97"></li>
<li class="list-inline-item"><img src="{{ asset('v2/img/clients/spotify.png') }}" alt="Image Description" width="94"></li>
</ul>
<!-- End Logos -->
</div>
<div class="col-lg-6 offset-lg-1">
<div class="position-relative h-100 vw-lg-50">
<img class="img-fluid w-100 rounded rounded-lg-right-0" src="{{ asset('v2/img/demo/real-estate/benefits.jpg') }}" alt="Image Description">
</div>
</div>
</div>
</div>
</div>
<!-- End Benefits -->
</div>
</div>
</div>
<!-- Plateforme FIN -->
@@ -0,0 +1,58 @@
<!-- Plateforme DEBUT -->
<div class=" accueilFondBlanc">
<div class="container space-2 ">
<div class="row row justify-content-lg-end ">
<div class="col-md-6 ">
<!-- Title <div class="col-md-6 order-md-2 mb-5 mb-md-0">-->
<div class="mb-6">
<h2 class="h3"> Quest ce quune offre demploi vidéo ?</h2>
<p> Véritable outil dattractivité, vous vous distinguez auprès des
candidats en recherche de projets professionnels, mais aussi
auprès de toutes vos parties prenantes.
La vidéo doffre demploi est un outil qui plaît davantage aux talents
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="#">Voir la plateforme</a>
</div>
</div>
<div class="col-md-6 align-right paddintRight">
<div class="mb-6">
<!-- Video Block -->
<div id="youTubeVideoPlayer" class="u-video-player mb-7">
<!-- Cover Image -->
<img class="img-fluid u-video-player__preview" src="{{ asset('v2/png/plateforme-recrutement-offre-emploi-video.jpg') }}" alt="Image">
<!-- End Cover Image -->
<!-- Play Button -->
<a class="js-fancybox text-white u-video-player__btn u-video-player__centered" href="javascript:;" data-src="https://www.youtube.com/watch?v=CZDfD2ugXtg&t"
data-speed="700" data-animate-in="zoomIn" data-animate-out="zoomOut"
data-caption="Témoignage">
<span class="u-video-player__icon">
<i class="fa fa-play u-video-player__icon-inner"></i>
</span>
</a>
<!-- End Play Button -->
<!-- Video Iframe -->
<div class="embed-responsive embed-responsive-16by9">
</div>
<!-- End Video Iframe -->
</div>
<!-- End Video Block -->
</div>
</div>
</div>
</div>
</div>
<!-- Plateforme FIN -->
@@ -0,0 +1,55 @@
<!-- Plateforme DEBUT -->
<div class="space1-bottom accueilFondBleute">
<div class="container space-2 ">
<div class="row align-items-lg-center">
<div class="col-md-6 order-md-2 mb-5 mb-md-0">
<!-- Title <div class="col-md-6 order-md-2 mb-5 mb-md-0">-->
<div class="mb-6">
<h2 class="h3"> La vidéo doffre demploi améliore lefficacité de vos recrutements.</h2>
<p>À travers une présentation moderne, dynamique et originale de votre organisation, de votre équipe et du poste, vous vous distinguez des autres recruteurs.
Gagnez du temps pour la présélection des candidats et évitez les erreurs de recrutement. En étant plus précis dans votre offre, vous séduisez les meilleurs talents et seuls les candidats réellement intéressés postulent en vidéo. Replacez lhumain au cœur du recrutement !
Véritable levier dengagement, fédérateur pour vos équipes et outil de fidélisation, vos collaborateurs sont fiers de présenter de leur métier.
</p>
<a class="btn btn-sm btn-primary btn-wide" href="#">Voir la plateforme</a>
</div>
</div>
<div class="col-md-6 align-right paddintRight">
<div class="mb-6">
<!-- Video Block -->
<div id="youTubeVideoPlayer" class="u-video-player mb-7">
<!-- Cover Image -->
<img class="img-fluid u-video-player__preview" src="{{ asset('v2/png/temoignage-recrutement-offre-emploi-video.jpg') }}" alt="Image">
<!-- End Cover Image -->
<!-- Play Button -->
<a class="js-fancybox text-white u-video-player__btn u-video-player__centered" href="javascript:;" data-src="https://www.youtube.com/watch?v=CZDfD2ugXtg&t"
data-speed="700" data-animate-in="zoomIn" data-animate-out="zoomOut"
data-caption="Témoignage">
<span class="u-video-player__icon">
<i class="fa fa-play u-video-player__icon-inner"></i>
</span>
</a>
<!-- End Play Button -->
<!-- Video Iframe -->
<div class="embed-responsive embed-responsive-16by9">
</div>
<!-- End Video Iframe -->
</div>
<!-- End Video Block -->
</div>
</div>
</div>
</div>
</div>
<!-- Plateforme FIN -->
@@ -0,0 +1,183 @@
{% extends 'basev2.html.twig' %}
{% block title %}Talents Tube : Le 1er job board 100% vidéo{% endblock %}
{% block content %}
<main id="content">
{% include 'defaultv2/accueil/blocPhoto.html.twig'
with {
'urlImage': 'v2/img/1920x800/attirer-les-candidats-avec-une-offre-emploi-video.jpg',
'textParDefaut' : 'Attirez des talents',
'textVideo' : 'avec loffre demploi vidéo'
} %}
{% include 'defaultv2/offres/blocOffreVideo.html.twig' %}
{% include 'defaultv2/offres/blocPourquoiVideo.html.twig' %}
{% include 'defaultv2/offres/blocAvantages.html.twig' %}
{% include 'defaultv2/offres/blocCitation.html.twig' %}
{% include 'defaultv2/offres/blocDemarche.html.twig' %}
{% include 'defaultv2/candidatures/blocAccompagnement.html.twig' %}
{% include 'defaultv2/candidatures/blocPourquoiPasVous.html.twig' %}
</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("");
var typed = new Typed(".u-text-animation.u-text-animation--typing", {
strings: [" Attirez des talents "],
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 %}
@@ -0,0 +1,20 @@
{% 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 %}
@@ -0,0 +1,10 @@
<!-- props_settings.html.twig Parameters used in EdeclicPushAndNotificationClient.js -->
<div id="pushParams"
data-service-worker-url="{{ app.request.uriForPath('/Edeclic-service-worker.js') | replace({'/app_dev.php': ''}) }}"
data-analytics-helper-url="{{ app.request.uriForPath('js/analytics-helper.js') | replace({'/app_dev.php': ''}) }}"
data-delete-subscription-url="{{ url('delete-subscription') }}"
data-save-subscription-url="{{ url('save-subscription') }}"
data-push-public-key="{{ push_public_key }}"
>
</div>
@@ -0,0 +1,9 @@
<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>
@@ -0,0 +1,31 @@
{% 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,9 @@
{% if is_granted('ROLE_PREVIOUS_ADMIN') %}
<div class="fab tooltipped" data-position="left"
data-tooltip="Quitter (Connecté en tant que {{ app.user.firstname }} {{ app.user.lastname }})">
<a href="{{ path('admin_dashboard', {'_switch_user': '_exit'}) }}"
class="btn">
<i class="fa fa-sign-out" aria-hidden="true"></i>
</a>
</div>
{% endif %}
@@ -0,0 +1,26 @@
{% 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 %}
@@ -16,7 +16,11 @@
<br/>
<br/>
<div style="text-align:center;">
<a class="btn btn-default" href="{{ absolute_url(path('talent_ad_detail',{'alias': answer.ad.alias,'id': answer.id })) }}">Visionner la réponse vidéo</a>
{% 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>
{% 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>
{% endif %}
</div>
{% else %}
<br />
@@ -26,7 +30,11 @@
<br/>
<br/>
<div style="text-align:center;">
<a class="btn btn-default" href="{{ absolute_url(path('talent_ad_detail',{'alias': answer.ad.alias,'id': answer.id })) }}">Consulter la réponse</a>
{% 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>
{% 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>
{% endif %}
</div>
{% endif %}
<br>
@@ -18,11 +18,3 @@
</div>
{% endblock %}
{% block javascripts %}
<script src="https://maps.googleapis.com/maps/api/js?key=AIzaSyDYV8IJGtIoWLfXJQQvIuDQ88n2aEuRgpg&libraries=places"></script>
{% javascripts
'@talents'
output='assetic/main.dashboard.talent.js' filter='?uglifyjs2' %}
<script src="{{ asset_url }}"></script>
{% endjavascripts %}
{% endblock %}
+18 -1
View File
@@ -106,7 +106,7 @@ fos_user:
email:
template: email/password_resetting.email.twig
from_email:
address: noreply@talentstube.com
address: noreply@talentstube.io
sender_name: talentstube.com
service:
mailer: fos_user.mailer.twig_swift
@@ -250,6 +250,7 @@ fos_rest:
serialize_null: true
format_listener:
rules:
- { path: '^/api/talent', priorities: ['html'], fallback_format: 'html' }
- { path: '^/api/', priorities: ['json'], fallback_format: 'json' }
param_fetcher_listener: true
exception:
@@ -264,6 +265,22 @@ lexik_jwt_authentication:
public_key: '%kernel.root_dir%/../app/config/jwt/public.pem' # required for token verification
pass_phrase: 'talentstubeforever' # required for token creation, usage of an environment variable is recommended
token_ttl: 3600000
token_extractors:
# look for a token as Authorization Header
authorization_header:
enabled: true
prefix: Bearer
name: Authorization
# check token in a cookie
cookie:
enabled: false
name: BEARER
# check token in query string parameter
query_parameter:
enabled: true
name: bearer
nelmio_cors:
paths:
@@ -37,3 +37,9 @@ monolog:
swiftmailer:
delivery_addresses: ['%delivery_addresses%']
# Twig Configuration
twig:
globals:
url_plateforme : http://localhost:3000
@@ -13,3 +13,8 @@ monolog:
level: debug
console:
type: console
# Twig Configuration
twig:
globals:
url_plateforme : https://app.talentstube.com/
@@ -15,9 +15,9 @@ services:
class: AppBundle\Utils\Services\AfterLoginRedirection
arguments: ['@router']
#app.ad_searcher:
# class: AppBundle\Utils\Services\AdSearcher
# arguments: ['@fos_elastica.finder.ads.adfr']
app.ad_searcher:
class: AppBundle\Utils\Services\AdSearcher
arguments: ['@fos_elastica.finder.ads.adfr']
app.ad_tags_searcher:
class: AppBundle\Utils\Services\AdSearcher
+1
View File
@@ -1,4 +1,5 @@
{
"description": "Talents tube",
"name": "edeclic/tt",
"license": "proprietary",
"type": "project",
@@ -10,7 +10,7 @@ use Symfony\Component\Console\Input\InputOption;
class SendPushCommand extends ContainerAwareCommand
{
private const defaultEmail = 'thomas.berrod@e-declic.com';
private const defaultEmail = 'lognone.gregoire@hotmail.fr';
protected function configure()
@@ -309,8 +309,8 @@ class AdController extends Controller
} else {
$session->remove('contratSearch');
}
//$adSearcher = $this->get('app.ad_searcher');
$ads = array();//$adSearcher->process($data);
$adSearcher = $this->get('app.ad_searcher');
$ads = $adSearcher->process($data);
if(empty($ads)){
$ads = $this->getPublishedAds($promoted);
$noResults = true;
@@ -5,6 +5,7 @@ namespace AppBundle\Controller\Admin;
use AppBundle\Entity\Company;
use AppBundle\Entity\Product;
use AppBundle\Form\Admin\CompanyAdminType;
use AppBundle\Form\Admin\UserCompanyType;
use AppBundle\Form\TokenAddType;
use Edeclic\PrestashopBridgeBundle\Event\PrestashopBridgeEvents;
use Edeclic\PrestashopBridgeBundle\Event\UserEvent;
@@ -36,14 +37,26 @@ class CompanyController extends Controller
$user = $company->getUsers()->first();
$form = $this->createForm(CompanyAdminType::class, $company);
$form->handleRequest($request);
$formUser = $this->createForm(UserCompanyType::class, $user);
$formUser->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$companyManager = $this->get('app.company_manager');
$companyManager->updateCompany($company);
$event = new UserEvent($user);
$this->get('event_dispatcher')->dispatch(PrestashopBridgeEvents::USER_PROFIL_EDIT_SUCCESS, $event);
}
if ($formUser->isSubmitted() && $formUser->isValid()) {
$em = $this->getDoctrine()->getManager();
$em->persist($user);
$em->flush();
}
return $this->render('admin/company_edit.html.twig', array(
'form' => $form->createView(),
'formUser' => $formUser->createView(),
'company' => $company,
));
}
@@ -327,9 +327,11 @@ class AnswerController extends Controller
if ($answer->getAd() == null) {
$type = 'spontaneous';
$title = $answer->getCompany()->getBrandName();
$aliasCompany = $answer->getCompany()->getAlias();
} else {
$type = 'answer';
$title = $answer->getAd()->getTitle();
$aliasCompany = '';
}
$user = $this->getUser();
$form = $this->createForm(ContactTalentType::class);
@@ -365,6 +367,7 @@ class AnswerController extends Controller
'user' => $answer->getUser(),
'video' => $message->getVideo(),
'message' => $message,
'aliasCompany' => $aliasCompany
));
$plainView = $this->renderView('email/contact_talent_plain.html.twig', array(
@@ -116,4 +116,21 @@ class AdController extends FOSRestController
['Location' => $this->generateUrl('api_ad_show', ['id' => $ad->getId(), UrlGeneratorInterface::ABSOLUTE_URL])]
);
}
/**
* @Rest\Get("/api/adAjaxRecStat/{id}", name="adAjaxRecStat")
* @Rest\View(statusCode=200)
*/
public function adAjaxRecStatAction(Ad $ad)
{
$history = $this->get('edeclic.history.record');
if ($this->getUser()) {
$idUser = $this->getUser()->getId();
$history->recordIt($idUser, "r", get_class($ad), $ad->getId(), serialize($ad));
} else {
$history->recordIt("Anonymous", "r", get_class($ad), $ad->getId(), serialize($ad));
}
return new JsonResponse(array('code' => "ok"));
}
}
@@ -22,6 +22,7 @@ use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
use JMS\Serializer\SerializationContext;
use AppBundle\Exception\ResourceValidationException;
use AppBundle\Exception\UnknownUserException;
use \DateTime;
class AnswerController extends FOSRestController
{
@@ -33,7 +34,7 @@ class AnswerController extends FOSRestController
public function showAction(Answer $answer)
{
$usr = $this->getUser();
$userAnswer = $this->getDoctrine()->getRepository('AppBundle:Answer')->findOneBy(array('user' => $usr, 'id' => $answer->getId()));
$userAnswer = $this->getDoctrine()->getRepository('AppBundle:Answer')->findOneByWithCorrespondences($usr, $answer->getId());
if ($userAnswer) {
$data = $this->get('jms_serializer')->serialize($answer, 'json', SerializationContext::create()->setGroups(array('answer_detail')));
return new JsonResponse($data, 200, [], true);
@@ -136,21 +137,21 @@ class AnswerController extends FOSRestController
$ad = $em->getRepository('AppBundle:Ad')->find($adId);
$answer->setAd($ad);
}
$answer->setVideo($video)
->setCompany($company);
$answer ->setVideo($video)
->setCompany($company)
->setSendTime(new \DateTime());
$em->persist($answer);
$em->flush();
$userCompany = $company->getUsers();
$message = new Message('Candidature', 'Video', $usr, $userCompany{
/*$message = new Message('Candidature', 'Video', $usr, $userCompany{
0}, 'CONTACT_TALENT', $answer);
$message->setVideo($video);
$em->persist($message);
$em->flush();
$status = array('status' => "success", "idAnswer" => $answer->getId(), "idMessage" => $message->getId());
$em->flush();*/
$status = array('status' => "success", "idAnswer" => $answer->getId()/*, "idMessage" => $message->getId()*/);
}
} else {
$message = 'Vous n\'êtes pas connecté en tant qu\'utilisateur.';
@@ -204,6 +205,101 @@ class AnswerController extends FOSRestController
return new JsonResponse($status);
}
// valid request (from postman code ):
//POST /app_dev.php/api/media HTTP/1.1
// Host: localhost
// Content-Type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW
// Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJpYXQiOjE1NTg2MTM2NzYsImV4cCI6MTU1ODYxNzI3Niwicm9sZXMiOlsiUk9MRV9UQUxFTlQiLCJST0xFX1VTRVIiXSwidXNlcm5hbWUiOiJ0aG9tYXMuYmVycm9kQGUtZGVjbGljLmNvbSJ9.gREC7Haj2geQNn3WArAL4jhBcPI67YJuJOEYiTJ4VeJztM7TRKo8XplXXdDKRs-J_AsHIOmEYWb08AZIivNXw652Ge_9VhpvhS67xa2O30T-ZingVVofZ8Anjbgof32tVkwL2SzNd82rxw4DbFWgSE24h1tw2NO-EUnvLxD3eGUgPerdJ-g74zwJ4tv2kBI3_TaTR35x0HjPnxtihpT2FQHwR-kYQHtJb7rmR7XTloDBu-cZiiEkfgZekt2NyOvD58HcXy3hKZ09YvIFmwDnmVxOVvexVPPt8du-ozXqtt6IlXGslqTm_dX7eTNrg2uoKgliBV6AOYFFlylgIQU1-Wr6k_OCxDEscN3NkbTDVcQbE-xSE2wjFIO0Gilk-cpmW5Kx1VCtEtyscPRiYub6dXPBgObGdKGmTcYwlG3X03x9KO9oYmjVgIreZZg2WJTzwQOoU67QxhOYknPshBSm61-VaB9OwOGJG3M6FrhZR867-Rj64FEd0HWH9lMM5OO645hlDAe3lPCG6ffUBPBOjFWCGx8HPsv_PjOaMRf21UEFpVaTfAlHrKsUog5j8Qc5-OEz9vmmlog2KjWc67alEfJujnc0m3HV731IBirar5gaO360ebwUU6aSo6HSThOnwFrTxGiCd0Eqo5T5yW446HJBRhLFYiiJerJg6EbGlAM
// User-Agent: PostmanRuntime/7.13.0
// Accept: */*
// Cache-Control: no-cache
// Postman-Token: 49a92aa5-fa39-412c-bc23-9d6ae389fa1e,569d0fea-09ba-452f-9957-989fca193603
// Host: localhost
// accept-encoding: gzip, deflate
// content-length: 228
// Connection: keep-alive
// cache-control: no-cache
// Content-Disposition: form-data; name="upload"; filename="/C:/Users/Thomas/Pictures/Camera Roll/WIN_20180917_14_29_28_Pro.mp4
// ------WebKitFormBoundary7MA4YWxkTrZu0gW--
/**
* @Rest\Post("/api/mediaPres", name="api_media_pres_upload")
* @Rest\View(StatusCode = 201)
*
*/
public function uploadPresAction(Request $request)
{
$usr = $this->get('security.token_storage')->getToken()->getUser();
$usr->getUsername();
$file = $request->files->get('upload');
$status = array('status' => "success", "fileUploaded" => false);
//dump($file);
// If a file was uploaded
if (!is_null($file)) {
$mediaManager = $this->get('media_manager');
$message = $mediaManager->upload($usr, $file, $usr);
//dump($message);
// generate a random name for the file but keep the extension
// $filename = uniqid().".".$file->getClientOriginalExtension();
// $path = "/path/where/we/want-to-save-the-file";
// $file->move($path,$filename); // move the file to a path
$status = array('status' => "success", "fileUploaded" => true, "message" => $message);
}
return new JsonResponse($status);
}
// valid request (from postman code ):
//POST /app_dev.php/api/media HTTP/1.1
// Host: localhost
// Content-Type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW
// Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJpYXQiOjE1NTg2MTM2NzYsImV4cCI6MTU1ODYxNzI3Niwicm9sZXMiOlsiUk9MRV9UQUxFTlQiLCJST0xFX1VTRVIiXSwidXNlcm5hbWUiOiJ0aG9tYXMuYmVycm9kQGUtZGVjbGljLmNvbSJ9.gREC7Haj2geQNn3WArAL4jhBcPI67YJuJOEYiTJ4VeJztM7TRKo8XplXXdDKRs-J_AsHIOmEYWb08AZIivNXw652Ge_9VhpvhS67xa2O30T-ZingVVofZ8Anjbgof32tVkwL2SzNd82rxw4DbFWgSE24h1tw2NO-EUnvLxD3eGUgPerdJ-g74zwJ4tv2kBI3_TaTR35x0HjPnxtihpT2FQHwR-kYQHtJb7rmR7XTloDBu-cZiiEkfgZekt2NyOvD58HcXy3hKZ09YvIFmwDnmVxOVvexVPPt8du-ozXqtt6IlXGslqTm_dX7eTNrg2uoKgliBV6AOYFFlylgIQU1-Wr6k_OCxDEscN3NkbTDVcQbE-xSE2wjFIO0Gilk-cpmW5Kx1VCtEtyscPRiYub6dXPBgObGdKGmTcYwlG3X03x9KO9oYmjVgIreZZg2WJTzwQOoU67QxhOYknPshBSm61-VaB9OwOGJG3M6FrhZR867-Rj64FEd0HWH9lMM5OO645hlDAe3lPCG6ffUBPBOjFWCGx8HPsv_PjOaMRf21UEFpVaTfAlHrKsUog5j8Qc5-OEz9vmmlog2KjWc67alEfJujnc0m3HV731IBirar5gaO360ebwUU6aSo6HSThOnwFrTxGiCd0Eqo5T5yW446HJBRhLFYiiJerJg6EbGlAM
// User-Agent: PostmanRuntime/7.13.0
// Accept: */*
// Cache-Control: no-cache
// Postman-Token: 49a92aa5-fa39-412c-bc23-9d6ae389fa1e,569d0fea-09ba-452f-9957-989fca193603
// Host: localhost
// accept-encoding: gzip, deflate
// content-length: 228
// Connection: keep-alive
// cache-control: no-cache
// Content-Disposition: form-data; name="upload"; filename="/C:/Users/Thomas/Pictures/Camera Roll/WIN_20180917_14_29_28_Pro.mp4
// ------WebKitFormBoundary7MA4YWxkTrZu0gW--
/**
* @Rest\Post("/api/mediaCv", name="api_media_cv_upload")
* @Rest\View(StatusCode = 201)
*
*/
public function uploadCvAction(Request $request)
{
$usr = $this->get('security.token_storage')->getToken()->getUser();
$usr->getUsername();
$company = $usr->getCompany();
$file = $request->files->get('upload');
$status = array('status' => "success", "companyUpdated" => false);
//dump($file);
// If a file was uploaded
if (!is_null($file)) {
$companyManager = $this->get('app.company_manager');
$message = $companyManager->updateCv($company, $file);
//dump($message);
// generate a random name for the file but keep the extension
// $filename = uniqid().".".$file->getClientOriginalExtension();
// $path = "/path/where/we/want-to-save-the-file";
// $file->move($path,$filename); // move the file to a path
$status = array('status' => "success", "companyUpdated" => true, "message" => $message);
}
return new JsonResponse($status);
}
/**
* @Rest\Post("/api/answers/message", name="api_answer_message")
* @Rest\View(StatusCode = 201)
@@ -225,7 +321,7 @@ class AnswerController extends FOSRestController
throw new ResourceValidationException($message, $status);
}
if (!isset($messageText)) {
if (empty($messageText)) {
$message = 'Le message est vide.';
$status = 'failure';
throw new ResourceValidationException($message, $status);
@@ -234,7 +330,7 @@ class AnswerController extends FOSRestController
$answerReceipiant = $existAnswer->getAd() !== null ? $existAnswer->getAd()->getCreator()
: $existAnswer->getCompany()->getUsers(){ 0 };
$message = new message('Chat', $messageText, $this->getUser(), $answerReceipiant, 'CHAT', $existAnswer);
$message = new message('Chat', $messageText, $this->getUser(), $answerReceipiant, 'Message du talent', $existAnswer);
$em->persist($message);
$em->flush();
@@ -248,6 +344,7 @@ class AnswerController extends FOSRestController
*/
public function fetchMessageAction(Answer $answer)
{
$em = $this->getDoctrine()->getManager();
$usr = $this->get('security.token_storage')->getToken()->getUser();
if ($answer->getUser()->getId() !== $usr->getId()) {
@@ -256,7 +353,7 @@ class AnswerController extends FOSRestController
throw new ResourceValidationException($message, $status);
}
$messages = $answer->getMessages();
$messages = $em->getRepository('AppBundle:Message')->searchCorrespondences($answer);
//
$status = array('status' => "success", "messages" => $messages);
//
@@ -16,6 +16,7 @@ use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
use JMS\Serializer\SerializationContext;
use Symfony\Component\HttpFoundation\JsonResponse;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
class CompanyController extends FOSRestController
{
@@ -93,4 +94,23 @@ class CompanyController extends FOSRestController
Response::HTTP_CREATED,
['Location' => $this->generateUrl('api_company_show', ['id' => $company->getId(), UrlGeneratorInterface::ABSOLUTE_URL])]);
}
/**
* @Rest\Get(path="/api/companyAjaxRecStat/{id}", name="companyAjaxRecStat", requirements={"id"="\d+"})
* @Rest\View(statusCode=200)
*/
public function companyAjaxRecStatAction(Company $company)
{
$history = $this->get('edeclic.history.record');
if ($this->getUser() && $this->getUser()->getCompany() != null) {
if ($this->getUser()->getCompany()->getId() !== $company->getId()) {
$history->recordIt($this->getUser()->getId(), "r", get_class($company), $company->getId(), serialize($company));
}
} else {
$history->recordIt("Anonymous", "r", 'AppBundle\Entity\Company', $company->getId(), serialize($company));
}
return new JsonResponse(array('code' => "ok"));
}
}
@@ -0,0 +1,59 @@
<?php
namespace AppBundle\Controller\Api;
use AppBundle\Entity\User;
use FOS\RestBundle\Controller\Annotations as Rest;
use FOS\RestBundle\Controller\Annotations\Get;
use FOS\RestBundle\Controller\Annotations\Post;
use FOS\RestBundle\Controller\Annotations\View;
use FOS\RestBundle\Controller\FOSRestController;
use FOS\RestBundle\Request\ParamFetcherInterface;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\ParamConverter;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
use JMS\Serializer\SerializationContext;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpKernel\Exception\BadRequestHttpException;
use Symfony\Component\HttpFoundation\Request;
class PushController extends FOSRestController
{
/**
* @Rest\Get("/api/userSubscriptionToPush", name="getUserSubscriptionToPush")
* @Rest\View(statusCode=200)
*/
public function getUserSubscriptionToPush()
{
$user = $this->getUser();
$managerPush = $this->get('app.user_subscription_manager');
$isUserSubscribed = ($managerPush->findByUser($user))? true : false;
return new JsonResponse(array('isUserSubscribed' => $isUserSubscribed));
}
/**
* @Rest\Post("/api/userSubscriptionToPush", name="postUserSubscriptionToPush")
* @Rest\View(statusCode=200)
*/
public function saveSubscription(Request $request)
{
$user = $this->getUser();
$subscription = json_decode($request->getContent(), true);
if (JSON_ERROR_NONE !== json_last_error()) {
throw new BadRequestHttpException(json_last_error_msg());
}
if (!isset($subscription['endpoint'])) {
throw new BadRequestHttpException('Invalid subscription object.');
}
$manager = $this->container->get("app.user_subscription_manager");
$subscriptionHash = $manager->hash($subscription['endpoint']);
$userSubscription = $manager->getUserSubscription($user, $subscriptionHash)
or $userSubscription = $manager->factory($user, $subscriptionHash, $subscription);
$manager->save($userSubscription);
return new JsonResponse(array('success' => true),200);
}
}
@@ -15,6 +15,14 @@ use FOS\UserBundle\Model\UserInterface;
use AppBundle\Entity\Company;
use AppBundle\Exception\ResourceValidationException;
use Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken;
use AppBundle\Form\ContactTalentType;
use AppBundle\Form\MediaType;
use AppBundle\Form\TalentProfileType;
use AppBundle\Form\TalentType;
use AppBundle\Form\CareersType;
use AppBundle\Form\FormationsType;
use AppBundle\Form\LanguagesType;
use Symfony\Component\Security\Http\Event\InteractiveLoginEvent;
class SecurityController extends FOSRestController
{
@@ -107,24 +115,58 @@ class SecurityController extends FOSRestController
*/
public function UpdateUser(Request $request)
{
$userManager = $this->get('fos_user.user_manager');
$companyManager = $this->get('app.company_manager');
$usr = $this->getUser();
$talent = $usr->getCompany();
if ($usr !== null){
$newLastName = htmlspecialchars($request->request->get('lastname'));
$newFirstName = htmlspecialchars($request->request->get('firstname'));
$newLastName = htmlspecialchars($request->get('lastname'));
$newFirstName = htmlspecialchars($request->get('firstname'));
$phoneTalent = htmlspecialchars($request->get('phone'));
$titleTalent = htmlspecialchars($request->get('currentJob'));
$newLinkedin = htmlspecialchars($request->get('linkedin'));
$newTwitter = htmlspecialchars($request->get('twitter'));
$newWebsite = htmlspecialchars($request->get('website'));
if (!isset($newLastName) || !isset($newFirstName) || $newLastName == null || $newFirstName == null){
$message = 'Vous devez rentrer votre nom et votre prénom pour continuer';
throw new ResourceValidationException($message,'');
} else {
$file = $request->files->get('file');
$usr->setLastName($newLastName);
$usr->setFirstName($newFirstName);
$talent->setWebsite($newWebsite);
$talent->setLinkedin($newLinkedin);
$talent->setTwitter($newTwitter);
$talent->setTitleTalent($titleTalent);
$talent->setPhoneTalent($phoneTalent);
$companyManager->updateTalent($usr);
$status = array('status' => "success");
}
} else {
$status = array('status' => "failure", 'message' => "Vous n'êtes pas connecté.");
}
return new JsonResponse($status);
}
/**
* @Rest\post(path="/api/update_profile_picture", name="api_update_profile_picture")
* @Rest\View
*/
public function UpdateProfilPicture(Request $request)
{
$userManager = $this->get('fos_user.user_manager');
$usr = $this->getUser();
if ($usr !== null){
$file = $request->files->get('file');
$usr->setFile($file);
$usr->upload();
$userManager->updateUser($usr);
$status = array('status' => "success", 'file' => $usr->getFile(), 'id' => $usr->getId());
}
$status = array('status' => "success", 'file' => $usr->getPhoto());
} else {
$status = array('status' => "failure", 'message' => "Vous n'êtes pas connecté.");
}
@@ -520,4 +562,25 @@ class SecurityController extends FOSRestController
$data = json_decode($response);
return $data;
}
/**
* @Rest\Get(path="/api/talent", name="api_talent")
* @Rest\View
*/
public function goToMonCompte(Request $request)
{
$user = $this->getUser();
$token = new UsernamePasswordToken($user, null, 'main', $user->getRoles());
$this->get('security.token_storage')->setToken($token);
$this->get('session')->set('_security_main', serialize($token));
$event = new InteractiveLoginEvent($request, $token);
$this->get("event_dispatcher")->dispatch("security.interactive_login", $event);
$view = $this->redirectView($this->generateUrl('talent_dashboard'), 301);
return $this->handleView($view);
}
}
@@ -187,7 +187,13 @@ class CompanyController extends Controller
$history->recordIt("Anonymous", "r", 'AppBundle\Entity\Company', $company->getId(), serialize($company));
}
return new JsonResponse(array('code' => "ok"));
if(!$this->getUser() == null){
return new JsonResponse(array('code' => "ok", "user" => $this->getUser()->getUsername()));
} else{
return new JsonResponse(array('code' => "ok"));
}
}
/***********************
@@ -4,6 +4,9 @@ use AppBundle\Form\AdSearchType;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Security\Core\Exception\AuthenticationException;
use Symfony\Component\Security\Core\Security;
class DefaultController extends Controller
{
/**
@@ -17,7 +20,7 @@ class DefaultController extends Controller
$ads = $em->getRepository('AppBundle:Ad')->findBy(array("status" => "PUBLISHED", "isPromoted" => false), array('id' => 'DESC'));
}
$talents = $em->getRepository('AppBundle:Company')->findBy(array("type" => "TALENT", "emphasis" => true), array('emphasisOrder' => 'DESC'));
$companies = $em->getRepository('AppBundle:Company')->findBy(array("type" => "COMPANY", "emphasis" => true), array('emphasisOrder' => 'ASC'));
$companies = $em->getRepository('AppBundle:Company')->findBy(array("type" => "COMPANY", "emphasis" => true), array('emphasisOrder' => 'DESC'));
$territories = $em->getRepository('AppBundle:Company')->findBy(array("type" => "TERRITORY", "emphasis" => true), array('emphasisOrder' => 'ASC'));
$arrayTalents = array();
@@ -60,6 +63,195 @@ class DefaultController extends Controller
);
}
/**
* @Route("/indexv2", name="homepagev2")
*/
public function homepagev2Action(Request $request)
{
//$em = $this->getDoctrine()->getManager();
// $ads = $em->getRepository('AppBundle:Ad')->findBy(array("status" => "PUBLISHED", "emphasis" => true, "isPromoted" => false), array('emphasisOrder' => 'DESC'));
// if (!$ads) {
// $ads = $em->getRepository('AppBundle:Ad')->findBy(array("status" => "PUBLISHED", "isPromoted" => false), array('id' => 'DESC'));
// }
//$talents = $em->getRepository('AppBundle:Company')->findBy(array("type" => "TALENT", "emphasis" => true), array('emphasisOrder' => 'DESC'));
//$companies = $em->getRepository('AppBundle:Company')->findBy(array("type" => "COMPANY", "emphasis" => true), array('emphasisOrder' => 'DESC'));
//$territories = $em->getRepository('AppBundle:Company')->findBy(array("type" => "TERRITORY", "emphasis" => true), array('emphasisOrder' => 'ASC'));
// $arrayTalents = array();
// foreach ($talents as $talent) {
// if ($talent->getPresentationVideo()) {
// $arrayTalents[] = $talent;
// }
// }
// $arrayCompany = array();
// foreach ($companies as $company) {
// if ($company->getPresentationVideo()) {
// $arrayCompany[] = $company;
// }
// }
// $mediaManager = $this->get('media_manager');
// foreach ($ads as $ad) {
// $mediaManager->getThumbnails($ad);
// }
// foreach ($companies as $company) {
// $mediaManager->getThumbnails($company);
// }
// foreach ($territories as $t) {
// $mediaManager->getThumbnails($t);
// }
// $form = $this->createForm(AdSearchType::class);
$params = $this->getParams($request);
$usename = $params["lastUsername"];
$csrfToken = $params["csrfToken"];
$error = $params["error"];
$destination_login = "admin/dashboard";
return $this->render(
'defaultv2/accueil/index.html.twig', [
'last_username' => $usename,
'csrf_token' => $csrfToken,
'error' => $error,
'destination_login' => $destination_login
//'ads' => $ads,
//'companies' => $arrayCompany,
//'talents' => $arrayTalents,
//'territories' => $territories,
//'searchform' => $form->createView(),
]
);
}
/**
* @Route("/candidatures-cv-video", name="candidaturesVideo")
*/
public function candidaturesVideoAction(Request $request)
{
$params = $this->getParams($request);
$usename = $params["lastUsername"];
$csrfToken = $params["csrfToken"];
$error = $params["error"];
$destination_login = "admin/dashboard";
return $this->render(
'defaultv2/candidatures/index.html.twig', [
'last_username' => $usename,
'csrf_token' => $csrfToken,
'error' => $error,
'destination_login' => $destination_login
]
);
}
/**
* @Route("/offre-emploi-video", name="offresVideo")
*/
public function offresVideoAction(Request $request)
{
$params = $this->getParams($request);
$usename = $params["lastUsername"];
$csrfToken = $params["csrfToken"];
$error = $params["error"];
$destination_login = "admin/dashboard";
return $this->render(
'defaultv2/offres/index.html.twig', [
'last_username' => $usename,
'csrf_token' => $csrfToken,
'error' => $error,
'destination_login' => $destination_login
]
);
}
/**
* @Route("/marque-employeur-en-video", name="employeurVideo")
*/
public function employeurVideoAction(Request $request)
{
$params = $this->getParams($request);
$usename = $params["lastUsername"];
$csrfToken = $params["csrfToken"];
$error = $params["error"];
$destination_login = "admin/dashboard";
return $this->render(
'defaultv2/offres/index.html.twig', [
'last_username' => $usename,
'csrf_token' => $csrfToken,
'error' => $error,
'destination_login' => $destination_login
]
);
}
/**
* @Route("/mentions", name="mentions")
*/
public function mentionsAction(Request $request)
{
$params = $this->getParams($request);
$usename = $params["lastUsername"];
$csrfToken = $params["csrfToken"];
$error = $params["error"];
$destination_login = "admin/dashboard";
return $this->render(
'defaultv2/footer/mentions.html.twig', [
'last_username' => $usename,
'csrf_token' => $csrfToken,
'error' => $error,
'destination_login' => $destination_login
]
);
}
/**
* @Route("/cgu", name="cgu")
*/
public function cguAction(Request $request)
{
$params = $this->getParams($request);
$usename = $params["lastUsername"];
$csrfToken = $params["csrfToken"];
$error = $params["error"];
$destination_login = "admin/dashboard";
return $this->render(
'defaultv2/footer/cgu.html.twig', [
'last_username' => $usename,
'csrf_token' => $csrfToken,
'error' => $error,
'destination_login' => $destination_login
]
);
}
/**
* @Route("/confidentialite", name="confidentialite")
*/
public function confidentialiteAction(Request $request)
{
$params = $this->getParams($request);
$usename = $params["lastUsername"];
$csrfToken = $params["csrfToken"];
$error = $params["error"];
$destination_login = "admin/dashboard";
return $this->render(
'defaultv2/candidatures/index.html.twig', [
'last_username' => $usename,
'csrf_token' => $csrfToken,
'error' => $error,
'destination_login' => $destination_login
]
);
}
/**
* @Route("/redirect_dashboard", name="redirect_dashboard")
*/
@@ -67,17 +259,21 @@ class DefaultController extends Controller
{
$user = $this->getUser();
if ($user) {
if ($user->hasRole('ROLE_TALENT')) {
if ($user->hasRole('ROLE_SUPER_ADMIN')) {
return $this->redirectToRoute('admin_dashboard');
} elseif ($user->hasRole('ROLE_TALENT')) {
return $this->redirectToRoute('talent_dashboard');
} elseif ($user->hasRole('ROLE_COMPANY')) {
return $this->redirectToRoute('company_dashboard');
}
}
} else {
return $this->redirectToRoute('homepage');
}
return $this->redirectToRoute('homepage');
}
@@ -96,5 +292,36 @@ class DefaultController extends Controller
//return $this->render('page_static/video_territoire.html.twig');
return $this->render('page_static/accompagnement_video_territoire.html.twig');
}
/**
* @param Request $request
*
* @return Response
*/
private function getParams(Request $request){
$session = $request->getSession();
$authErrorKey = Security::AUTHENTICATION_ERROR;
$lastUsernameKey = Security::LAST_USERNAME;
if ($request->attributes->has($authErrorKey)) {
$error = $request->attributes->get($authErrorKey);
} elseif (null !== $session && $session->has($authErrorKey)) {
$error = $session->get($authErrorKey);
$session->remove($authErrorKey);
} else {
$error = null;
}
if (!$error instanceof AuthenticationException) {
$error = null;
}
$lastUsername = (null === $session) ? '' : $session->get($lastUsernameKey);
$csrfToken = $this->has('security.csrf.token_manager')
? $this->get('security.csrf.token_manager')->getToken('authenticate')->getValue()
: null;
$parametres = array();
$parametres["lastUsername"] = $lastUsername;
$parametres["csrfToken"] = $csrfToken;
$parametres["error"] = $error;
return $parametres;
}
}
@@ -49,6 +49,7 @@ class PushController extends Controller
return new JsonResponse(array('success' => true),200);
}
/**
* @Route("/push/delete-subscription/", name="delete-subscription")
*/
@@ -47,4 +47,43 @@ class SecurityModalController extends Controller
)
);
}
/**
* @param Request $request
*
* @return Response
*/
public function loginModalV2Action(Request $request)
{
$session = $request->getSession();
$authErrorKey = Security::AUTHENTICATION_ERROR;
$lastUsernameKey = Security::LAST_USERNAME;
if ($request->attributes->has($authErrorKey)) {
$error = $request->attributes->get($authErrorKey);
} elseif (null !== $session && $session->has($authErrorKey)) {
$error = $session->get($authErrorKey);
$session->remove($authErrorKey);
} else {
$error = null;
}
if (!$error instanceof AuthenticationException) {
$error = null;
}
$lastUsername = (null === $session) ? '' : $session->get($lastUsernameKey);
$csrfToken = $this->has('security.csrf.token_manager')
? $this->get('security.csrf.token_manager')->getToken('authenticate')->getValue()
: null;
$formFactory = $this->get('fos_user.registration.form.factory');
$form = $formFactory->createForm();
return $this->render('@FOSUser/Security/loginModalV2.html.twig', array(
'last_username' => $lastUsername,
'error' => $error,
'csrf_token' => $csrfToken,
'register_form' => $form->createView()
)
);
}
}
@@ -160,7 +160,7 @@ class Ad
*
* @ORM\Column(name="public_tag", type="json_document", nullable=true, options={"jsonb":true})
*
*
* @Groups({"ad_detail", "answer_detail"})
*/
private $publicTag;
@@ -249,11 +249,14 @@ class Ad
/**
* @ORM\OneToMany(targetEntity="AppBundle\Entity\TerritoryAd", mappedBy="ad", cascade={"persist", "remove"})
*
* @Groups({"ad_detail" , "answer_detail"})
*/
private $territories;
/**
* @ORM\OneToMany(targetEntity="AppBundle\Entity\BookmarkAd", mappedBy="ad", cascade={"persist", "remove"})
*
*/
private $bookmarkAds;
@@ -177,7 +177,7 @@ class Answer
$criteria = Criteria::create()
->where(Criteria::expr()->neq('status', "DRAFT"));
return $this->messages->matching($criteria)->last();
return $this->messages->matching($criteria)->first();
}
public function getIsViewed(){
@@ -38,7 +38,7 @@ class BookmarkAd
private $bookmark;
/**
* @ORM\ManyToOne(targetEntity="AppBundle\Entity\Ad")
* @ORM\ManyToOne(targetEntity="AppBundle\Entity\Ad" , inversedBy="bookmarkAds")
*/
private $ad;
@@ -98,6 +98,13 @@ class Company
*/
private $logo;
/**
* @var string
*
* @ORM\Column(name="cv", type="string", length=255, nullable=true)
*/
private $cv;
/**
* @var string
*
@@ -121,6 +128,8 @@ class Company
*/
private $presentationVideo;
/**
* @var string
*
@@ -203,7 +212,10 @@ class Company
* @Groups({"ad_list", "company_list", "company_detail"})
*/
private $countAds;
/***********************
* Constructor
***********************/
@@ -213,6 +225,9 @@ class Company
$this->products = new \Doctrine\Common\Collections\ArrayCollection();
$this->users = new \Doctrine\Common\Collections\ArrayCollection();
$this->ads = new \Doctrine\Common\Collections\ArrayCollection();
//$this->territories = new \Doctrine\Common\Collections\ArrayCollection();
// $this->children = new \Doctrine\Common\Collections\ArrayCollection();
// $this->parent = new \Doctrine\Common\Collections\ArrayCollection();
$this->emphasis = false;
}
@@ -239,6 +254,18 @@ class Company
}
public function uploadCv($uploadedFile)
{
if (null === $uploadedFile) {
return;
}
//$name = $this->file->getClientOriginalName()."_".uniqid();
$name = md5(uniqid()) . '.' . $uploadedFile->guessExtension();
$uploadedFile->move($this->getUploadRootDirCv(), $name);
$this->cv = $name;
}
public function getUploadDir()
{
return 'uploads/img';
@@ -249,6 +276,16 @@ class Company
return __DIR__ . '/../../../web/' . $this->getUploadDir();
}
public function getUploadDirCv()
{
return 'uploads/cv';
}
protected function getUploadRootDirCv()
{
return __DIR__ . '/../../../web/' . $this->getUploadDirCv();
}
public function getWebPath()
{
return null === $this->logo ? null : $this->getUploadDir() . '/' . $this->logo;
@@ -351,7 +388,7 @@ class Company
if (empty($this->publicTag))
$empty++;
if ($this->presentation_video === null)
if ($this->presentationVideo == null)
$empty++;
if (is_array($this->ad) && empty($this->ad))
@@ -446,6 +483,16 @@ class Company
return $this->description;
}
/**
* Get Logo.
*
* @return string|null
*/
public function getLogo()
{
return $this->logo;
}
/**
* Set logo.
*
@@ -461,13 +508,37 @@ class Company
}
/**
* Get logo.
* Get Cv.
*
* @return string|null
*/
public function getLogo()
public function getCv()
{
return $this->logo;
return $this->cv;
}
/**
* Set cv.
*
* @param string|null $cv
*
* @return Company
*/
public function setCv($photo = null)
{
$this->cv = $cv;
return $this;
}
/**
* Get photo.
*
* @return string|null
*/
public function getPhoto()
{
return $this->photo;
}
/**
@@ -929,4 +1000,6 @@ class Company
{
return count($this->getPublishedAds());
}
}
@@ -24,26 +24,28 @@ class TerritoryAd
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
* @Groups({"company_detail"})
* @Groups({"ad_detail" , "company_detail"})
*/
private $id;
/**
* @ORM\ManyToOne(targetEntity="AppBundle\Entity\Company", inversedBy="territoryAds")
* @ORM\JoinColumn(nullable=false)
* @Groups({"company_detail"})
* @Groups({"ad_detail" , "company_detail"})
*/
private $territory;
/**
* @ORM\ManyToOne(targetEntity="AppBundle\Entity\Ad", inversedBy="territories")
* @ORM\JoinColumn(nullable=true)
* @Groups({"ad_detail" , "company_detail"})
*/
private $ad;
/**
* @ORM\ManyToOne(targetEntity="AppBundle\Entity\Company", inversedBy="territoryAds")
* @ORM\ManyToOne(targetEntity="AppBundle\Entity\Company", inversedBy="territories")
* @ORM\JoinColumn(nullable=true)
* @Groups({"ad_detail" , "company_detail"})
*/
private $company;
@@ -229,6 +229,7 @@ class User extends BaseUser
$name = md5(uniqid()) . '.' . $this->file->guessExtension();
$this->file->move($this->getUploadRootDir(), $name);
$this->photo = $name;
}
public function getUploadDir()
@@ -368,12 +369,32 @@ class User extends BaseUser
*/
public function getIdCard()
{
$pres="";
$cv="";
if($this->getCompany()->getPresentationVideo())
{
$pres= $this->getCompany()->getPresentationVideo()->getCdnUrl();
}
if($this->getCompany()->getCv())
{
$cv= $this->getCompany()->getCv();
}
$card = array(
"firstname" => $this->getFirstname(),
"lastname" => $this->getLastname(),
"email" => $this->getEmail(),
"picture" => $this->getPhoto(),
"socialPicture" => $this->getSocialPicture()
"socialPicture" => $this->getSocialPicture(),
"phone" => $this->getCompany()->getExtra()["phoneTalent"],
"linkedin" => $this->getCompany()->getExtra()["linkedin"],
"twitter" => $this->getCompany()->getExtra()["twitter"],
"videoPres" => $pres,
"cv" => $cv,
"currentJob" => $this->getCompany()->getExtra()["titleTalent"],
"website" => $this->getCompany()->getWebsite(),
);
return $card;
}
@@ -0,0 +1,25 @@
<?php
namespace AppBundle\Form\Admin;
use AppBundle\Entity\User;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\CheckboxType;
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
class UserCompanyType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('email', null, array('required' => true, 'label' => 'Email'));
}
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(array(
'data_class' => User::class,
));
}
}
@@ -16,7 +16,7 @@ use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\Form\Extension\Core\Type\DateType;
use Symfony\Component\Form\Extension\Core\Type\DateTimeType;
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
use Symfony\Component\OptionsResolver\OptionsResolver;
@@ -33,13 +33,13 @@ class UserType extends AbstractType
'label' => 'Nom',
'required' => true,
))
->add('birthday', DateType::class, array(
/*->add('birthday', DateTimeType::class, array(
'widget' => 'single_text',
'label' => 'Date de naissance',
'attr' => array(
'class' => 'calendar'
)
))
))*/
->add('gender', ChoiceType::class, array(
'expanded' => true,
'multiple' => false,
@@ -25,6 +25,27 @@ class AnswerRepository extends AbstractRepository
return $this->paginate($qb, $limit, $offset);
}
// Query to find messages excluding Draft message and talent video for chat
public function findOneByWithCorrespondences($user, $answerId)
{
$qb = $this
->createQueryBuilder('a')
->select(['a','m','ad'])
->where('a.user = :user')
->andWhere('a.id = :id')
->setParameter('user', $user)
->setParameter('id', $answerId)
->leftJoin('a.messages', 'm','WITH', 'm.status NOT IN(\'DRAFT\',\'CONTACT_TALENT\')')
// ->setParameter(':status', array('DRAFT','CONTACT_TALENT'))
->leftJoin('a.ad', 'ad')
->leftJoin('a.company', 'company')
;
return $qb
->getQuery()
->getResult();
}
public function getAnswerByCompany($id)
{
$qb = $this
@@ -10,4 +10,21 @@ namespace AppBundle\Repository;
*/
class MessageRepository extends \Doctrine\ORM\EntityRepository
{
public function searchCorrespondences($answer)
{
$qb = $this
->createQueryBuilder('m')
->select('m')
->where('m.answer = :answer')
->setParameter('answer', $answer)
->andWhere('m.status <> :status')
->setParameter(':status', 'DRAFT')
;
return $qb
->getQuery()
->getResult();
}
}
// add status = SENDED;
@@ -67,18 +67,18 @@ class UserSubscriptionRepository extends \Doctrine\ORM\EntityRepository
) AS decimal) / 15) * 100 ) >= :percent')
->setParameters(array('percent' => $completenessPercentage));
dump($qb->getQuery()->getSql());
//dump($qb->getQuery()->getSql());
$result = $qb->getQuery()->getResult();
dump($result);
//dump($result);
return $result;
}
public function findByTagMatching($tags)
{
dump($tags);
//dump($tags);
$config = $this->_em->getConfiguration();
$config->addCustomNumericFunction('CAST', 'AppBundle\Repository\Query\CastAs');
@@ -96,11 +96,11 @@ class UserSubscriptionRepository extends \Doctrine\ORM\EntityRepository
}
}
dump($qb->getQuery()->getSql());
//dump($qb->getQuery()->getSql());
$result = $qb->getQuery()->getResult();
dump($result);
//dump($result);
return $result;
}
@@ -106,6 +106,7 @@ class RegistrationListener implements EventSubscriberInterface
$company->setType("TALENT");
} elseif ($user->hasRole('ROLE_COMPANY')) {
$company->setType("COMPANY");
$company->setIsPrivate(true);
} elseif ($user->hasRole('ROLE_TERRITORY')) {
$company->setType("TERRITORY");
} else {
@@ -48,6 +48,7 @@ class CompanyManager
$company->setExtra($extra);
$company->upload();
//$company->uploadCv();
}
$this->em->persist($company);
$this->em->flush();
@@ -63,6 +64,16 @@ class CompanyManager
$this->em->flush();
}
/**
* @param $company
*/
public function updateCv($company, $uploadedFile)
{
$company->uploadCv($uploadedFile);
$this->em->persist($company);
$this->em->flush();
}
/**
* @param $user
*/
@@ -91,6 +102,7 @@ class CompanyManager
'titleTalent' => $talent->getTitleTalent(),
'situationTalent' => $talent->getSituationTalent(),
'descriptionTalent' => $talent->getDescriptionTalent(),
'phoneTalent' => $talent->getPhoneTalent(),
);
$talent->setExtra($extra);
@@ -148,9 +148,9 @@ class MediaManager
$thumbnails = array();
//PUSH VIDEO TO Vimeo
if ($this->env == "dev") {
$uriVimeo = "/videos/217844541";
$uriVimeo = "/videos/385952221";
$nameVimeo = "name";
$linkVimeo = "/videos/217844541";
$linkVimeo = "/videos/385952221";
} else {
$urlToPull = $this->mediaVideoUrl . $fileName;
$response = $this->vimeo->request('/me/videos', array('type' => 'pull', 'link' => $urlToPull), 'POST');
@@ -105,9 +105,9 @@ class NotificationSender implements ContainerAwareInterface
$user = $this->userManager->findUserBy(array('email' => $email));
$output->writeln('$user : ' . $user->getFirstname());
$users = $this->subscriptionManager->getAll();
$subscriptions = $this->subscriptionManager->findByEmails(array($email));
foreach ($users as $subscription) {
foreach ($subscriptions as $subscription) {
$this->sendNotification($output, $subscription);
}
@@ -142,6 +142,8 @@ class NotificationSender implements ContainerAwareInterface
private function sendNotification(OutputInterface $output, $subscription)
{
$output->writeln(' ====== subscription ======');
$output->writeln($subscription->getEndpoint());
!$output->isVerbose()?:$output->writeln('send to user ---> ' . $subscription->getEndpoint());
$this->sender->sendNotification(
@@ -12,7 +12,7 @@ trait ExtraJsonTrait
*
* @ORM\Column(name="extra", type="json_document", nullable=true)
*
* @Groups({"company_detail", "company_list"})
* @Groups({"ad_detail" , "company_detail", "company_list"})
*/
private $extra;
@@ -24,6 +24,7 @@ trait ExtraJsonTrait
private $size;
private $siren;
private $phoneTalent;
private $titleTalent;
private $situationTalent;
private $descriptionTalent;
@@ -41,6 +42,7 @@ trait ExtraJsonTrait
isset($extra['linkedin']) ? $this->linkedin = $extra['linkedin'] : null;
isset($extra['size']) ? $this->size = $extra['size'] : null;
isset($extra['siren']) ? $this->siren = $extra['siren'] : null;
isset($extra['phoneTalent']) ? $this->phoneTalent = $extra['phoneTalent'] : null;
isset($extra['titleTalent']) ? $this->titleTalent = $extra['titleTalent'] : null;
isset($extra['situationTalent']) ? $this->situationTalent = $extra['situationTalent'] : null;
isset($extra['descriptionTalent']) ? $this->descriptionTalent = $extra['descriptionTalent'] : null;
@@ -115,6 +117,18 @@ trait ExtraJsonTrait
return $this->siren;
}
public function setPhoneTalent($phoneTalent)
{
$this->phoneTalent = $phoneTalent;
return $this;
}
public function getPhoneTalent()
{
return $this->phoneTalent;
}
public function setTitleTalent($titleTalent)
{
$this->titleTalent = $titleTalent;
@@ -28,6 +28,7 @@ use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
use Symfony\Component\Security\Core\Exception\AccessDeniedException;
/**
* Controller managing the registration.
*
@@ -58,7 +59,8 @@ class RegistrationController extends Controller
{
$user = $this->userManager->createUser();
$user->setEnabled(true);
// AJOUT ROLE COMPANY
//$user->setRoles(array('ROLE_COMPANY'));
$event = new GetResponseUserEvent($user, $request);
$this->eventDispatcher->dispatch(FOSUserEvents::REGISTRATION_INITIALIZE, $event);
@@ -101,6 +103,8 @@ class RegistrationController extends Controller
));
}
/**
* Tell the user to check their email provider.
*/
+2
View File
@@ -2912,3 +2912,5 @@ a.link-white-underline {
/*Modules
---------------------------------------------------*/
/*# sourceMappingURL=admin.css.map */
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -4,8 +4,8 @@
<title>Step_arrow</title>
<desc>Created with Sketch.</desc>
<defs></defs>
<g id="Interactions" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" stroke-linecap="square">
<g id="Réponse-offre-d'emploi-:-module_camera" transform="translate(-179.000000, -491.000000)" stroke="#E3E3E3">
<g id="Interactions" stroke="none" stroke-width="3" fill="none" fill-rule="evenodd" stroke-linecap="square">
<g id="Réponse-offre-d'emploi-:-module_camera" transform="translate(-179.000000, -491.000000)" stroke="#D7D7D7">
<g id="Réponse-offre" transform="translate(80.000000, 176.000000)">
<g id="001-camera" transform="translate(30.200000, 21.700000)">
<g id="Group-4">

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 1.6 KiB

@@ -1,9 +1,7 @@
{
"parameters": {
"pushType": "tags",
"keywords": "surf;voile",
"profilCompletenessPercentage": "10",
"users": "thomas.berrod@e-declic.com;thomas.berrod@e-declic.com;thomas.berrod@e-declic.com"
"keywords": "trytodev"
},
"notification": {
"title": "Coriolis composites",
@@ -12,7 +10,7 @@
"image": "https://i.vimeocdn.com/video/668043830.webp?mw=1100&mh=619&q=70",
"tag": "open-window",
"data": {
"link": "http://localhost/app_dev.php/annonce/7-composites-studies-engineer"
"link": "http://localhost/annonce/7-composites-studies-engineer"
}
}
}

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