Compare commits
88 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| d56dc27fe1 | |||
| 2ee49175ef | |||
| 6f0379c7aa | |||
| 2491b253c6 | |||
| df3bb979e9 | |||
| bc75bb7afc | |||
| ef5f0e81da | |||
| 88ceb319af | |||
| f314a614fe | |||
| b19498ef46 | |||
| 6313039500 | |||
| f098e4b6b8 | |||
| ed70e8c940 | |||
| 9762aee7ae | |||
| d0fd19d760 | |||
| 3ccf2b9604 | |||
| babfa473fb | |||
| 0bcd46fde8 | |||
| c976bb6d21 | |||
| d301c3b029 | |||
| c5a1aebecc | |||
| e516e45cb0 | |||
| 441304c363 | |||
| 3399a82379 | |||
| 4e111ae3cd | |||
| ed669974a1 | |||
| 02c68a48c9 | |||
| cce45d834f | |||
| 0373f01013 | |||
| cbcf51f93d | |||
| dffb439bb3 | |||
| 4b2c5fc222 | |||
| 13073d59e4 | |||
| 8e995cef82 | |||
| 349bc309bd | |||
| 492d2687c5 | |||
| 2fa50e3d5b | |||
| e6e00c1659 | |||
| db7cc56e3a | |||
| 7b5e7bc53a | |||
| 0d7c6466ec | |||
| 27ecf6f81c | |||
| 55eb1ed363 | |||
| 6ddf703f9e | |||
| 6f8671bc8f | |||
| 68802a2a4d | |||
| ceb2f7f7ce | |||
| 4da427bac0 | |||
| 766e57e849 | |||
| 3c3b8c8428 | |||
| 49d47b70f6 | |||
| 49cc496661 | |||
| 717e57dc81 | |||
| 9e7ef88bea | |||
| a46d69f190 | |||
| 3f7c0803f1 | |||
| c99b3d2236 | |||
| 580bf6ecb4 | |||
| 26a41d4eb6 | |||
| 82bf5fa76f | |||
| 3fb8262649 | |||
| feca14ae4d | |||
| 33c1221cb2 | |||
| f4f9191bd1 | |||
| 9709b69125 | |||
| 6f19c7df97 | |||
| 7779cdbf66 | |||
| 95d58a14e0 | |||
| f8db5a4b1c | |||
| ca23af2623 | |||
| b54d162032 | |||
| 78c15596cd | |||
| 74f9c7b884 | |||
| 5bb76aa419 | |||
| d5532926aa | |||
| 1707d28fc7 | |||
| 39143908af | |||
| b2b075ffe7 | |||
| 91c7ebb145 | |||
| 66e5fd4c6c | |||
| 80f8ad7043 | |||
| e1c3f77e68 | |||
| 14cc09b25f | |||
| bdbe45e1a2 | |||
| 66af01c050 | |||
| a38b63f87f | |||
| 2a2ef6673d | |||
| f3d618b640 |
@@ -169,6 +169,10 @@
|
||||
<trans-unit id="profile.edit.submit">
|
||||
<source>profile.edit.submit</source>
|
||||
<target>Sauvegarder mon profil</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="profile.edit.save">
|
||||
<source>profile.edit.save</source>
|
||||
<target>Enregistrer</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="profile.company.title">
|
||||
<source>profile.company.title</source>
|
||||
@@ -226,6 +230,30 @@
|
||||
<source>profile.company.logo</source>
|
||||
<target>Logo de l'entreprise</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="talent.profile.title.label">
|
||||
<source>talent.profile.title.label</source>
|
||||
<target>Titre de votre profil</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="talent.profile.situation.label">
|
||||
<source>talent.profile.situation.label</source>
|
||||
<target>Votre situation</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="talent.profile.description.label">
|
||||
<source>talent.profile.description.label</source>
|
||||
<target>Quelques mots sur vous</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="profile.talent.tags">
|
||||
<source>profile.talent.tags</source>
|
||||
<target>Vos compétences.</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="profile.talent.under.tags">
|
||||
<source>profile.talent.under.tags</source>
|
||||
<target>Définissez vos clés dans l’ordre d’importance. Vous pouvez indiquer jusqu’à 50 compétences.</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="talent.menu.dashboard.label">
|
||||
<source>talent.menu.dashboard.label</source>
|
||||
<target>Mon profil</target>
|
||||
</trans-unit>
|
||||
<!-- ANNONCE-->
|
||||
<trans-unit id="ad.company.add.label">
|
||||
<source>ad.company.add.label</source>
|
||||
@@ -305,6 +333,82 @@
|
||||
<source>talent.menu.recommandations.label</source>
|
||||
<target>Mes recommandations</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="talent.profile.career.company.label">
|
||||
<source>talent.profile.career.company.label</source>
|
||||
<target>Entreprise</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="talent.profile.career.job.label">
|
||||
<source>talent.profile.career.job.label</source>
|
||||
<target>Intitulé du poste</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="talent.profile.career.begin.label">
|
||||
<source>talent.profile.career.begin.label</source>
|
||||
<target>Début</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="talent.profile.career.end.label">
|
||||
<source>talent.profile.career.end.label</source>
|
||||
<target>Fin</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="talent.profile.career.skills.label">
|
||||
<source>talent.profile.career.skills.label</source>
|
||||
<target>Vos compétences</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="talent.profile.career.actualJob.label">
|
||||
<source>talent.profile.career.actualJob.label</source>
|
||||
<target>Toujours en poste</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="talent.profile.career.place.label">
|
||||
<source>talent.profile.career.place.label</source>
|
||||
<target>Lieux</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="talent.profile.formation.name.label">
|
||||
<source>talent.profile.formation.name.label</source>
|
||||
<target>Diplome</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="talent.profile.formation.school.label">
|
||||
<source>talent.profile.formation.school.label</source>
|
||||
<target>Ecole</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="talent.profile.formation.actual.label">
|
||||
<source>talent.profile.formation.actual.label</source>
|
||||
<target>Toujours en cours</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="talent.profile.formation.obtention.label">
|
||||
<source>talent.profile.formation.obtention.label</source>
|
||||
<target>Année d'obtention</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="talent.profile.language.skill.1.label">
|
||||
<source>talent.profile.language.skill.1.label</source>
|
||||
<target>Notions</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="talent.profile.language.skill.2.label">
|
||||
<source>talent.profile.language.skill.2.label</source>
|
||||
<target>Compétence professionnelle limitée</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="talent.profile.language.skill.3.label">
|
||||
<source>talent.profile.language.skill.3.label</source>
|
||||
<target>Compétence professionnelle complète</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="talent.profile.language.skill.4.label">
|
||||
<source>talent.profile.language.skill.4.label</source>
|
||||
<target>Bilingue ou natif</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="talent.profile.language.name.label">
|
||||
<source>talent.profile.language.name.label</source>
|
||||
<target>Langue</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="talent.profile.situation.1.label">
|
||||
<source>talent.profile.situation.1.label</source>
|
||||
<target>En recherche d’emploi</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="talent.profile.situation.2.label">
|
||||
<source>talent.profile.situation.2.label</source>
|
||||
<target>À l’écoute d’opportunités</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="talent.profile.situation.3.label">
|
||||
<source>talent.profile.situation.3.label</source>
|
||||
<target>En poste</target>
|
||||
</trans-unit>
|
||||
<!-- TALENT -->
|
||||
<trans-unit id="ad.talent.answer.label">
|
||||
<source>ad.talent.answer.label</source>
|
||||
@@ -552,8 +656,20 @@
|
||||
<source>label.answer.history.title</source>
|
||||
<target>Historique des messages envoyés</target>
|
||||
</trans-unit>
|
||||
|
||||
|
||||
|
||||
<!-- Territoires -->
|
||||
<trans-unit id="message.territory.list.ads">
|
||||
<source>message.territory.list.ads</source>
|
||||
<target>offres d'emploi en cours sur ce territoire</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="message.territory.list.ad">
|
||||
<source>message.territory.list.ad</source>
|
||||
<target>offre d'emploi en cours sur ce territoire</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="message.territory.list.noads">
|
||||
<source>message.territory.list.noads</source>
|
||||
<target>Découvrez les entreprises qui recrutent sur ce territoire</target>
|
||||
</trans-unit>
|
||||
</body>
|
||||
</file>
|
||||
</xliff>
|
||||
@@ -0,0 +1,134 @@
|
||||
{% extends 'admin/base_admin.html.twig' %}
|
||||
|
||||
|
||||
{% block contentHeader %}
|
||||
<h1>
|
||||
Liste des Candidatures
|
||||
</h1>
|
||||
<ol class="breadcrumb">
|
||||
<li><a href="{{ path('admin_dashboard') }}"><i class="fa fa-dashboard"></i> Dashboard</a></li>
|
||||
<li class="active">Annonces</li>
|
||||
</ol>
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
|
||||
<div class="box box-primary">
|
||||
<div class="box-body">
|
||||
<table id="answer_list_table" class="table table-hover table-bordered">
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="col-xs-2">Date d'envoi</th>
|
||||
<th>Utilisateur</th>
|
||||
<th>Annonce / Entreprise</th>
|
||||
<th>video</th>
|
||||
<th>Status</th>
|
||||
<th>action</th>
|
||||
</tr>
|
||||
</thead>
|
||||
|
||||
<tbody>
|
||||
{% for answer in answers if answer.status != "DRAFT" %}
|
||||
<tr>
|
||||
<td data-order="{{ answer.sendTime|date('U') }}">{{ answer.sendTime|date('d/m/Y') }}</td>
|
||||
<td>{{ answer.user.firstname }} {{ answer.user.lastname }}</td>
|
||||
{% if answer.ad %}
|
||||
<td>{{ answer.ad.company.brandname }} - {{ answer.ad.title }}</td>
|
||||
{% else %}
|
||||
<td>{{ answer.company.brandname }}</td>
|
||||
{% endif %}
|
||||
<td>
|
||||
|
||||
ID Candidature : {{ answer.id }}<br />
|
||||
{% if answer.video.cdnUrl is defined %}
|
||||
<iframe src="https://player.vimeo.com/video/{{ answer.video.cdnUrl|replace({ "/videos/": ""}) }}"
|
||||
width="auto" height="auto" frameborder="0" webkitallowfullscreen mozallowfullscreen
|
||||
allowfullscreen></iframe>
|
||||
{% endif %}
|
||||
</td>
|
||||
<td class="status">{{ answer.status }}</td>
|
||||
<td>
|
||||
Actions :
|
||||
<select class="changeStatus" name="changeStatus" data-id="{{ answer.id }}">
|
||||
<option value="null">choisir</option>
|
||||
<option value="SENDED">Envoyé</option>
|
||||
<option value="DRAFT">Brouillon</option>
|
||||
<option value="REFUSED">Refuser</option>
|
||||
</select>
|
||||
<br />
|
||||
<a class="delete-answer" href='{{ path("admin_answer_delete",{'id':answer.id }) }}' data-toggle="tooltip" title="Supprimer">
|
||||
Supprimer <i class="fa fa-trash"></i>
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{% endblock %}
|
||||
|
||||
{% block javascripts %}
|
||||
<script>
|
||||
$(function () {
|
||||
$('.changeStatus').change(function(e){
|
||||
e.preventDefault();
|
||||
var idAnswer = $(this).data('id');
|
||||
var value = $(this).val();
|
||||
var route = '/app_dev.php/admin/config/answer/' + idAnswer + '/status/' + value;
|
||||
var select = $(this);
|
||||
$.ajax({
|
||||
type: "POST",
|
||||
url: route,
|
||||
dataType: "json",
|
||||
success: function (msg) {
|
||||
console.log("ok");
|
||||
select.parent().prev('.status').html(value);
|
||||
}
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
$('#answer_list_table').DataTable({
|
||||
"paging": true,
|
||||
"lengthChange": true,
|
||||
"searching": true,
|
||||
"ordering": true,
|
||||
"info": true,
|
||||
"autoWidth": false,
|
||||
"language": {
|
||||
"url": "http://cdn.datatables.net/plug-ins/1.10.11/i18n/French.json"
|
||||
},
|
||||
"columnDefs": [
|
||||
{"targets": 1, "searchable": true, "orderable": true},
|
||||
{"targets": 2, "searchable": true, "orderable": true},
|
||||
{"targets": 4, "searchable": true, "orderable": true, "className": "text-center"},
|
||||
],
|
||||
"order": [[ 0, "desc" ]]
|
||||
});
|
||||
|
||||
$(".delete-answer").confirm({
|
||||
title: "Êtes vous sûr de supprimer cette candidature ?",
|
||||
content: "Supprimer cette candidature supprimera le média associé",
|
||||
type: 'red',
|
||||
boxWidth: '30%',
|
||||
useBootstrap: false,
|
||||
buttons: {
|
||||
confirm: {
|
||||
text: 'Confirmer',
|
||||
action: function () {
|
||||
console.log(this.$target);
|
||||
location.href = this.$target.attr('href');
|
||||
return true;
|
||||
}
|
||||
},
|
||||
cancel: {
|
||||
text: 'Annuler'
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
</script>
|
||||
|
||||
{% endblock %}
|
||||
@@ -28,6 +28,11 @@
|
||||
<i class="fa fa-file-video-o" aria-hidden="true"></i> <span>Vidéos Talent</span>
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="{{ path('admin_anwser_moderation_list') }}">
|
||||
<i class="fa fa-file-video-o" aria-hidden="true"></i> <span>Candidatures</span>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
<ul class="sidebar-menu">
|
||||
<li class="header">ENTITEES</li>
|
||||
|
||||
@@ -28,6 +28,7 @@
|
||||
<i class="fa fa-star color-gold" aria-hidden="true"></i>
|
||||
</span>
|
||||
{% endif %}
|
||||
<br/><i class="fa fa-link"></i>Url :<br /> https://www.talentstube.com{{ path("talent_show",{'alias':user.company.alias})}}<br />
|
||||
</h3>
|
||||
<br>
|
||||
<span><a href="mailto:{{ user.email }}">{{ user.email }}</a></span>
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
<div id="modal-tuto" class="modal">
|
||||
<div id="modal-tuto" class="modal modal-fixed-footer">
|
||||
<div class="modal-content">
|
||||
<div class="row">
|
||||
<div class="col s12">
|
||||
<h3 class="color-blue1 center-align title-tuto">Les conseils de Talents Tube</h3>
|
||||
<div class="col-content">
|
||||
<h3 class="color-blue1 center-align">Les conseils de Talents Tube</h3>
|
||||
<div class="owl-carousel tuto-carousel">
|
||||
<div class="item-tuto-webcam carousel-item">
|
||||
<div class="row">
|
||||
<div class="col s4 offset-s1 hide-on-med-and-down">
|
||||
<div class="col s3 offset-s1 hide-on-med-and-down">
|
||||
<img class="responsive-img" src="{{ asset('img/img_popupcv/cv_video_step_1.svg')}}" alt="">
|
||||
</div>
|
||||
<div class="col s11 m11 l6 offset-s1 left-align">
|
||||
@@ -31,7 +31,7 @@
|
||||
</div>
|
||||
<div class="item-tuto-webcam carousel-item">
|
||||
<div class="row">
|
||||
<div class="col s4 offset-s1 hide-on-med-and-down">
|
||||
<div class="col s3 offset-s1 hide-on-med-and-down">
|
||||
<img class="responsive-img" src="{{ asset('img/img_popupcv/cv_video_step_2.svg')}}" alt="">
|
||||
</div>
|
||||
<div class="col s11 m11 l6 offset-s1 left-align">
|
||||
@@ -51,7 +51,7 @@
|
||||
</div>
|
||||
<div class="item-tuto-webcam carousel-item">
|
||||
<div class="row">
|
||||
<div class="col s4 offset-s1 hide-on-med-and-down">
|
||||
<div class="col s3 offset-s1 hide-on-med-and-down">
|
||||
<img class="responsive-img" src="{{ asset('img/img_popupcv/cv_video_step_3.svg')}}" alt="">
|
||||
</div>
|
||||
<div class="col s11 m11 l6 offset-s1 left-align">
|
||||
@@ -73,12 +73,15 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="carousel-fixed-item right">
|
||||
<a class="text close-tuto">Passer l'intro</a>
|
||||
<a class="btn btn-default next-slide">suivant</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<div id="customDots" class="owl-dots"></div>
|
||||
<div class="carousel-fixed-item right">
|
||||
<a class="text close-tuto">Passer l'intro</a>
|
||||
<a class="btn btn-default next-slide">suivant</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -68,11 +68,11 @@
|
||||
- {{ company.addresses.billing.country|country }}</p>
|
||||
{% endif %}
|
||||
</div>
|
||||
<div class="col s12 profil-links">
|
||||
<div class="col s12 profil-links center-align">
|
||||
{% 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-circle fa-stack-2x"></i>
|
||||
<i class="fa fa-link fa-stack-1x fa-inverse"></i>
|
||||
</span>
|
||||
</a>
|
||||
|
||||
@@ -46,9 +46,9 @@
|
||||
<span class="clearfix"></span>
|
||||
<div class="keywords">
|
||||
{% if a.publicTag %}
|
||||
{% for keyword in a.publicTag %}
|
||||
{% for tag in a.publicTag %}
|
||||
<div class="chip">
|
||||
{{ keyword }}
|
||||
<a href="{{ path('ad_search_result',{'tag':tag }) }}">{{ tag }}</a>
|
||||
</div>
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
|
||||
@@ -52,7 +52,9 @@
|
||||
<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">{{ tag }}</li>{% endfor %}</ul>
|
||||
<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>
|
||||
|
||||
@@ -76,9 +76,8 @@
|
||||
</div>
|
||||
<div class="col s12">
|
||||
{% for tag in ad.publicTag %}
|
||||
<p class="chip">{{ tag }}</p>
|
||||
<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>
|
||||
|
||||
@@ -32,15 +32,22 @@
|
||||
<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':'offers' }) }}">
|
||||
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>
|
||||
{% else %}
|
||||
{% elseif nbAds == 1 %}
|
||||
<strong>{{ c.getPublishedAds|length }} offre d'emploi en
|
||||
cours</strong>
|
||||
{% else %}
|
||||
<strong>candidature spontanée</strong>
|
||||
{% endif %}
|
||||
</a>
|
||||
</div>
|
||||
|
||||
@@ -98,9 +98,9 @@
|
||||
<div class="container">
|
||||
<div class="row center-align">
|
||||
<div class="col s12">
|
||||
<h2 class="blue-text no-margin-top">Les talents</h2>
|
||||
<h2 class="blue-text no-margin-top">Les talents à la une</h2>
|
||||
</div>
|
||||
<h3 class="subtitles-homepage">Découvrez leurs CV vidéo et vidéo de motivation.</h3>
|
||||
<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">
|
||||
@@ -111,6 +111,12 @@
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
<div class="row center-align">
|
||||
<h2>Rejoignez une communauté de plus de <strong>500</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 #}
|
||||
|
||||
@@ -19,13 +19,13 @@
|
||||
{{ user.firstname }} {{ user.lastname }}
|
||||
</a>
|
||||
</p>
|
||||
{% if talent.publicTag %}
|
||||
{#{% if talent.publicTag %}
|
||||
{% for keyword in talent.publicTag %}
|
||||
{% if keyword != "" %}
|
||||
<div class="chip">{{ keyword }}</div>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
{% endif %}#}
|
||||
</div>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
@@ -12,12 +12,12 @@
|
||||
<div class="row">
|
||||
<div class="col s12">
|
||||
{% if medias|length == 0 and is_granted('ROLE_TALENT') %}
|
||||
<div class="col s12 col-actions center-align">
|
||||
<div class="col s12 center-align">
|
||||
<br/><br/>
|
||||
<strong class="color-grey3">Vous ne possédez pas encore de CV vidéo!</strong><br/>
|
||||
<span class="color-grey2">Cliquez sur le bouton pour ajouter votre première vidéo.</span>
|
||||
<br/><br/>
|
||||
<a class="waves-effect waves-light btn btn-default modal-trigger" href="#addVideo">Ajouter une
|
||||
<a class="btn btn-default modal-trigger" href="#addVideo">Ajouter une
|
||||
vidéo</a>
|
||||
</div>
|
||||
{% else %}
|
||||
|
||||
@@ -0,0 +1,315 @@
|
||||
{% if is_granted('ROLE_COMPANY') %}
|
||||
{% set extendTemplate='company/base_dashboard_company.html.twig' %}
|
||||
{% elseif is_granted('ROLE_TERRITORY') %}
|
||||
{% set extendTemplate='territory/base_dashboard_territory.html.twig' %}
|
||||
{% else %}
|
||||
{% set extendTemplate='talent/base_dashboard_talent.html.twig' %}
|
||||
{% endif %}
|
||||
|
||||
{% extends extendTemplate %}
|
||||
|
||||
{% block dashContent %}
|
||||
<div class="row">
|
||||
<div class="col s12">
|
||||
{#<a class="waves-effect waves-light btn btn-default modal-trigger left m-r-10" href="#addVideo">Créer une vidéo</a>#}
|
||||
{% if medias|length > 0 %}
|
||||
<a class="waves-effect waves-light btn btn-default modal-trigger left" href="#addVideo">Ajouter une vidéo</a>
|
||||
<a class="btn btn-delete-video btn-round tooltipped red right" href="#!" data-position="top"
|
||||
data-tooltip="Supprimer des vidéos"><i class="fa fa-trash" aria-hidden="true"></i>
|
||||
</a>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
{% if medias|length == 0 %}
|
||||
<div class="col s12 col-actions center-align" id="no-video-talents">
|
||||
<br/><br/>
|
||||
<strong class="color-grey3">Vous ne possédez pas encore de CV vidéo!</strong><br/>
|
||||
<span class="color-grey2">Cliquez sur le bouton pour ajouter votre première vidéo.</span>
|
||||
<br/><br/>
|
||||
<a class="waves-effect waves-light btn btn-default modal-trigger" href="#addVideo">Ajouter une
|
||||
vidéo</a>
|
||||
</div>
|
||||
{% else %}
|
||||
{% if app.user.company.presentationVideo %}
|
||||
{% set media = app.user.company.presentationVideo %}
|
||||
{% endif %}
|
||||
<div class="row video_premier z-depth-3">
|
||||
{% if app.user.company.presentationVideo %}
|
||||
<div class="col s4 video_col col-card">
|
||||
<div class="preloader-wrapper small">
|
||||
<div class="spinner-layer spinner-blue-only">
|
||||
<div class="circle-clipper left">
|
||||
<div class="circle"></div>
|
||||
</div><div class="gap-patch">
|
||||
<div class="circle"></div>
|
||||
</div><div class="circle-clipper right">
|
||||
<div class="circle"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="embed-responsive embed-responsive-16by9">
|
||||
<iframe src="https://player.vimeo.com{{ media.getCdnUrl()|replace({ "videos": "video"}) }}"
|
||||
width="100%" height="550" frameborder="0" webkitallowfullscreen
|
||||
mozallowfullscreen allowfullscreen></iframe>
|
||||
</div>
|
||||
<a data-id="{{ media.getCdnUrl()|replace({ "/videos/": ""}) }}" href="#!" class="btn-floating left halfway-fab changeThumbnail"><i class="material-icons">image</i></a>
|
||||
</div>
|
||||
{% else %}
|
||||
<div class="col s12 video_col">
|
||||
<div class="no-presentation-video">
|
||||
<strong>
|
||||
Vous ne disposez pas de vidéo de présentation !
|
||||
</strong><br/>
|
||||
Cliquez sur le bouton ci-dessous pour la sélectionner dans votre bibliothèque.
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
{% if media is defined %}
|
||||
<div class="col s8 content_col">
|
||||
<div class="col s12 video_col_content">
|
||||
<h3>{{ media.title }}</h3>
|
||||
</div>
|
||||
<div class="video_col_actions">
|
||||
<div class="col s6 video_col_link_share">
|
||||
<a class="btn btn-default modal-trigger" href="#shareCv">Partager le profil
|
||||
<i class="fa fa-share-alt" aria-hidden="true"></i>
|
||||
</a>
|
||||
</div>
|
||||
<div class="col s6 video_col_edit_premier">
|
||||
<a class="btn btn-cancel-premier red right" href="#!" data-position="top" data-tooltip="Annuler">
|
||||
<span>Annuler</span> <i class="fa fa-ban" aria-hidden="true"></i>
|
||||
</a>
|
||||
<a class="btn btn-default btn-video-premier right">
|
||||
<span>Remplacer la vidéo</span>
|
||||
<i class="fa fa-pencil" aria-hidden="true"></i>
|
||||
</a>
|
||||
<div class="clearfix"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
<div class="row">
|
||||
{% for media in medias %}
|
||||
{% set classVideo = "" %}
|
||||
{% if app.user.company.presentationVideo %}
|
||||
{% set idPresentationVideo = app.user.company.presentationVideo.id %}
|
||||
{% else %}
|
||||
{% set idPresentationVideo = false %}
|
||||
{% endif %}
|
||||
{% if idPresentationVideo != media.id %}
|
||||
<div class="col s12 m6 l4 col-card">
|
||||
<div class="card card-video-action z-depth-1">
|
||||
<div class="card-image">
|
||||
<div class="preloader-wrapper small">
|
||||
<div class="spinner-layer spinner-blue-only">
|
||||
<div class="circle-clipper left">
|
||||
<div class="circle"></div>
|
||||
</div><div class="gap-patch">
|
||||
<div class="circle"></div>
|
||||
</div><div class="circle-clipper right">
|
||||
<div class="circle"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="embed-responsive embed-responsive-16by9">
|
||||
<iframe src="https://player.vimeo.com{{ media.getCdnUrl()|replace({ "videos": "video"}) }}"
|
||||
width="100%" height="230px" frameborder="0" webkitallowfullscreen
|
||||
mozallowfullscreen allowfullscreen></iframe>
|
||||
</div>
|
||||
<div class="card-fog choice-fog">
|
||||
<div class="card-fog-container">
|
||||
<a data-id="{{ media.getId() }}"
|
||||
class="btn btn-default btn-default-video {{ classVideo }} tooltipped"
|
||||
data-position="top"
|
||||
data-tooltip="{{ 'global.video.defaultaction.label'|trans }}">
|
||||
Choisir cette vidéo
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
{% set classFog ="" %}
|
||||
{% set messageTooltipFog ="" %}
|
||||
{% if media.getAds().toArray() %}
|
||||
{% set classFog = "fogLight" %}
|
||||
{% set messageTooltipFog ="Vidéo associée à une annonce" %}
|
||||
{% endif %}
|
||||
|
||||
{% if media.getAnswers().toArray() %}
|
||||
{% set classFog = "fogLight" %}
|
||||
{% set messageTooltipFog ="Vidéo associée à une réponse" %}
|
||||
{% endif %}
|
||||
<div class="card-fog delete-fog {{ classFog }}">
|
||||
<div class="card-fog-container">
|
||||
{% if media.getAds().toArray() or media.getAnswers().toArray() %}
|
||||
<div class="card-fog-message">
|
||||
Vous ne pouvez pas supprimer cette vidéo.<br/>
|
||||
<i data-position="top" data-tooltip="{{ messageTooltipFog }}"
|
||||
class="fa fa-question-circle tooltipped" aria-hidden="true"></i>
|
||||
</div>
|
||||
{% else %}
|
||||
<a class="btn btn-default halfway-fab waves-effect waves-light red delete_unattached_media tooltipped"
|
||||
href="{{ path("delete_unattached_media",{"id" : media.getId()}) }}"
|
||||
data-position="top" data-tooltip="{{ 'media.delete.video.label'|trans }}">Supprimer</a>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
<a data-id="{{ media.getCdnUrl()|replace({ "/videos/": ""}) }}" href="#!" class="btn-floating left halfway-fab changeThumbnail"><i class="material-icons">image</i></a>
|
||||
</div>
|
||||
<div class="card-content">
|
||||
<p>
|
||||
<strong><span data-id="{{ media.id }}" class="titleVideo truncate tooltipped"
|
||||
data-position="top"
|
||||
data-tooltip="{{ media.title }}">{{ media.title }}</span></strong>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
</div>
|
||||
|
||||
|
||||
<div id="changeThumbnailVideo" class="modal modal-fixed-footer modal-fixed-header">
|
||||
<div class="modal-header">
|
||||
<h3 class="color-blue1">Modifier la vignette</h3>
|
||||
<span class="right">
|
||||
<a href="#!" class="modal-close">
|
||||
<img src="{{ asset('/img/close-modal.svg') }}" >
|
||||
</a>
|
||||
</span>
|
||||
</div>
|
||||
<div class="modal-content">
|
||||
<div class="row">
|
||||
<div class="col s6">
|
||||
<div class="embed-responsive embed-responsive-16by9">
|
||||
<div class="col s12">
|
||||
<div id="video-vimeo"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col s6">
|
||||
<p><strong>Lancez la vidéo</strong> , puis <strong>appuyer sur pause</strong> pour définir l’image.
|
||||
<br />Une fois votre vignette définie, cliquez sur le bouton
|
||||
<strong>Sauvegarder</strong>.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<a href="#!" class="modal-action modal-close btn btn-default btn-round captur">Sauvegarder</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
{% set video = null %}
|
||||
<div id="addVideo" class="modal modal-fixed-footer">
|
||||
<div class="modal-content">
|
||||
<div class="row">
|
||||
{{ form_start(form, {'attr': { 'id': 'form_media' } }) }}
|
||||
<div class="input-field col s8">
|
||||
{{ form_rest(form) }}
|
||||
</div>
|
||||
<div class="col s4 right-align">
|
||||
<button id="submit" class="btn btn-default disabled" type="submit">Enregistrer</button>
|
||||
{% set messageTooltiped = "Votre vidéo ne doit pas dépasser les 500Mo.\n
|
||||
Les formats de vidéo acceptés sont les suivants : .mp4, .mov, .qt, .mkv, .avi, .m4v, .webm." %}
|
||||
<i class="fa fa-question-circle tooltipped" data-position="top" data-delay="50"
|
||||
data-tooltip="{{ messageTooltiped }}" aria-hidden="true"></i>
|
||||
</div>
|
||||
{{ form_end(form) }}
|
||||
<div class="col s12">
|
||||
{% include 'media/dropzone.html.twig' with {'deleting': 'false'} %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<a href="#!" class="modal-action modal-close btn btn-default btn-round">Fermer</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="shareCv" class="modal modal-fixed-footer">
|
||||
<div class="modal-content">
|
||||
<div class="row">
|
||||
<h2>Vous souhaitez partager votre profil à d'autres entreprises?</h2>
|
||||
<h3>Copiez et ajoutez l'adresse ci-dessous lors de vos candidatures</h3>
|
||||
|
||||
<input id="linkToCopy" type="text" value="https://www.talentstube.com{{ path("talent_show", {"alias": app.user.company.alias }) }}">
|
||||
<a class="btn btn-default btn-round" id="copyLink">Copier</a><br />
|
||||
<a class="modal-action modal-close">Fermer</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{% endblock %}
|
||||
{% block javascripts %}
|
||||
{{ parent() }}
|
||||
<script type="text/javascript">
|
||||
var urlDropzone = '{{ path("upload_media_default", {"id": app.user.id }) }}';
|
||||
var urlDelete = '';
|
||||
var idObject = null;
|
||||
var typeObject = null;
|
||||
var videoExist = false;
|
||||
var mediaDefaultUrl = '{{ path("media_default") }}';
|
||||
var idUser = '{{ app.user.id }}';
|
||||
var mediaEditTitleUrl = "{{ path('media_edit_title', {'id': 'id_video'})|escape('js') }}";
|
||||
$(document).ready(function(){
|
||||
$('.modal').modal();
|
||||
});
|
||||
</script>
|
||||
<script src="{{ asset('/js/mediaListing.js') }}"></script>
|
||||
<script src="{{ asset('/js/dropzone.js') }}"></script>
|
||||
<script src="https://player.vimeo.com/api/player.js"></script>
|
||||
<script type="text/javascript">
|
||||
$(document).ready(function(){
|
||||
var options = {
|
||||
id: null
|
||||
};
|
||||
var player = null;
|
||||
$('.modal-close').on('click',function(){
|
||||
$('#changeThumbnailVideo').modal('close');
|
||||
});
|
||||
$('.changeThumbnail').on('click',function(){
|
||||
$('#changeThumbnailVideo').modal();
|
||||
$('#changeThumbnailVideo').modal('open');
|
||||
var idVideo = $(this).data('id');
|
||||
options = {
|
||||
id: idVideo
|
||||
};
|
||||
player = new Vimeo.Player('video-vimeo', options);
|
||||
});
|
||||
|
||||
$('.captur').on('click',function(e){
|
||||
e.preventDefault();
|
||||
$('a.changeThumbnail').data('id',options.id).parents('.col-card').find('.preloader-wrapper').addClass('active');
|
||||
player.getCurrentTime().then(function(seconds) {
|
||||
var data = {'duration': seconds, 'id':options.id};
|
||||
$.ajax({
|
||||
url:"{{ path('video_changeThumbnail') }}",
|
||||
type:"POST",
|
||||
data: JSON.stringify(data),
|
||||
success:function(response) {
|
||||
$('a.changeThumbnail').data('id',options.id).parents('.col-card').each(function( index ) {
|
||||
var iframe = $( this ).contents().find('iframe');
|
||||
iframe[0].src = iframe[0].src;
|
||||
});
|
||||
},
|
||||
error:function(error){
|
||||
console.log(error)
|
||||
}
|
||||
});
|
||||
}).catch(function(error) {
|
||||
console.log(error);
|
||||
});
|
||||
});
|
||||
$("iframe").on("load", function () {
|
||||
$('.preloader-wrapper').removeClass('active');
|
||||
});
|
||||
});
|
||||
</script>
|
||||
{% endblock %}
|
||||
@@ -38,7 +38,16 @@
|
||||
<a href="{{ path('talent_answer_create',{id:a.ad.id}) }}">
|
||||
<i class="fa fa-pencil-square-o" aria-hidden="true"></i>
|
||||
</a>
|
||||
{% endif %}{{ a.status|trans }}
|
||||
{% elseif a.status == "DRAFT" and a.company != null %}
|
||||
<a href="{{ path('talent_spontaneous_application_create',{id:a.company.id}) }}">
|
||||
<i class="fa fa-pencil-square-o" aria-hidden="true"></i>
|
||||
</a>
|
||||
{% endif %}
|
||||
{% if a.isViewed %}
|
||||
{{ 'VIEWED'|trans }}
|
||||
{% else %}
|
||||
{{ a.status|trans }}
|
||||
{% endif %}
|
||||
</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
@@ -73,4 +82,11 @@
|
||||
var player_vimeo = new Vimeo.Player('player_vimeo');
|
||||
});
|
||||
</script>
|
||||
<script type="text/javascript">
|
||||
(function ($) {
|
||||
$(function () {
|
||||
$('.modal').modal();
|
||||
});
|
||||
})(jQuery);
|
||||
</script>
|
||||
{% endblock %}
|
||||
@@ -21,27 +21,8 @@
|
||||
{% block javascripts %}
|
||||
<script src="https://maps.googleapis.com/maps/api/js?key=AIzaSyDYV8IJGtIoWLfXJQQvIuDQ88n2aEuRgpg&libraries=places"></script>
|
||||
{% javascripts
|
||||
'@vendors'
|
||||
'@global'
|
||||
'@talents'
|
||||
output='assetic/main.dash.talent.js' filter='?uglifyjs2' %}
|
||||
output='assetic/main.dashboard.talent.js' filter='?uglifyjs2' %}
|
||||
<script src="{{ asset_url }}"></script>
|
||||
{% endjavascripts %}
|
||||
<script type="text/javascript">
|
||||
$.fn.datepicker.languages['fr-FR'] = {
|
||||
format: 'dd/mm/yyyy',
|
||||
days: ['Dimanche', 'Lundi', 'Mardi', 'Mercredi', 'Jeudi', 'Vendredi', 'Samedi'],
|
||||
daysShort: ['Dim', 'Lun', 'Mar', 'Mer', 'Jeu', 'Ven', 'Sam'],
|
||||
daysMin: ['Di', 'Lu', 'Ma', 'Me', 'Je', 'Ve', 'Sa'],
|
||||
weekStart: 1,
|
||||
months: ['Janvier', 'Février', 'Mars', 'Avril', 'Mai', 'Juin', 'Juillet', 'Aout', 'Septembre', 'Octobre', 'Novembre', 'Décembre'],
|
||||
monthsShort: ['Jan', 'Fev', 'Mar', 'Avr', 'Mai', 'Jun', 'Jui', 'Aou', 'Sep', 'Oct', 'Nov', 'Dec']
|
||||
};
|
||||
|
||||
$('.datepicker').datepicker({
|
||||
language: 'fr-FR'
|
||||
});
|
||||
|
||||
$('form[name="talent_profile"]').validate();
|
||||
</script>
|
||||
{% endblock %}
|
||||
@@ -7,26 +7,26 @@
|
||||
<img src="{{ app.user.webPath | imagine_filter('profile_square') }}"
|
||||
alt="{{ app.user.firstname }} {{ app.user.lastname|first|upper }}"
|
||||
class="circle responsive-img"/>
|
||||
<a href="#modalProfilePicture">
|
||||
<a data-target="modalProfilePicture" class="modal-trigger" href="#modalProfilePicture">
|
||||
<i class="fa fa-pencil" aria-hidden="true"></i>
|
||||
</a>
|
||||
{% elseif app.user.socialPicture is not null %}
|
||||
<img src="{{ app.user.socialPicture }}"
|
||||
alt="{{ app.user.firstname }} {{ app.user.lastname|first|upper }}"
|
||||
class="circle responsive-img"/>
|
||||
<a href="#modalProfilePicture">
|
||||
<a data-target="modalProfilePicture" class="modal-trigger" href="#modalProfilePicture">
|
||||
<i class="fa fa-pencil" aria-hidden="true"></i>
|
||||
</a>
|
||||
{% else %}
|
||||
<div class="circle-letters font-2">{{ app.user.firstname|first|upper }}{{ app.user.lastname|first|upper }}</div>
|
||||
<a href="#modalProfilePicture">
|
||||
<a data-target="modalProfilePicture" class="modal-trigger" href="#modalProfilePicture">
|
||||
<i class="fa fa-pencil" aria-hidden="true"></i>
|
||||
</a>
|
||||
{% endif %}
|
||||
</div>
|
||||
|
||||
<p class="profil-name">
|
||||
<b>{{ app.user.firstname }} {{ app.user.lastname|upper }}</b>
|
||||
<a href="https://www.talentstube.com{{ path("talent_show", {"alias": app.user.company.alias }) }}"><b>{{ app.user.firstname }} {{ app.user.lastname|upper }}</b></a>
|
||||
</p>
|
||||
{% if company.addresses.billing is defined %}
|
||||
<p class="profil-city">{{ company.addresses.billing.city }}
|
||||
@@ -41,7 +41,7 @@
|
||||
<li>
|
||||
<a href="{{ path('talent_dashboard') }}">
|
||||
<i class="fa fa-user"></i>
|
||||
{{ 'company.menu.dashboard.label'|trans }}
|
||||
{{ 'talent.menu.dashboard.label'|trans }}
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
|
||||
@@ -3,13 +3,102 @@
|
||||
{% set video = null %}
|
||||
{% block title %} Profil Talent{% endblock %}
|
||||
|
||||
|
||||
{% macro printTalentRow(form, loop_index, typeform, add) %}
|
||||
{% set loop_index = loop_index|default(1000) %}
|
||||
{% set typeform = typeform|default('default') %}
|
||||
{% set add = add|default('false') %}
|
||||
<div class="modal modal-fixed-footer {{ "modal-" ~ typeform }} {{ "modal-" ~ typeform ~ "-" ~ (loop_index) }}">
|
||||
<div class="modal-content">
|
||||
<div id="modal-header" class="row">
|
||||
<div class="col s12">
|
||||
{% if typeform == "career" %}
|
||||
<h4>Expériences</h4>
|
||||
{% endif %}
|
||||
{% if typeform == "formation" %}
|
||||
<h4>Formations & certifications</h4>
|
||||
{% endif %}
|
||||
{% if typeform == "language" %}
|
||||
<h4>Langues</h4>
|
||||
{% endif %}
|
||||
<span class="right">
|
||||
<a href="#!" class="modal-close">
|
||||
<img src="{{ asset('/img/close-modal.svg') }}" >
|
||||
</a>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row {{ "form-container-" ~ typeform }}">
|
||||
{% set index = loop_index %}
|
||||
{% for row in form %}
|
||||
{% set type = row.vars.block_prefixes.1 %}
|
||||
{% if type == "choice" %}
|
||||
{% if row.vars.name == "beginMonth" ~ typeform|capitalize %}
|
||||
<div class="col s12"><h5 class="required">Dates</h5></div>
|
||||
<div class="col s6"><span class="undertitle">Début</span></div>
|
||||
<div class="col s6"><span class="undertitle">Fin</span></div>
|
||||
{% endif %}
|
||||
{% if row.vars.name == "skillLanguage" %}
|
||||
<div class="col s12">
|
||||
{% else %}
|
||||
<div class="col s3">
|
||||
{% endif %}
|
||||
{% elseif type == "checkbox" %}
|
||||
{% if typeform == "formation" %}
|
||||
<div class="col s12">
|
||||
{% else %}
|
||||
<div class="col s6">
|
||||
{% endif %}
|
||||
{% else %}
|
||||
<div class="col s12">
|
||||
{% endif %}
|
||||
{% if type == "checkbox" %}
|
||||
<p>
|
||||
{{ form_widget(row, { 'attr': {'class': 'checkbox-' ~ typeform,'data-index': (index)} }) }}
|
||||
{{ form_label(row) }}
|
||||
</p><br />
|
||||
{% else %}
|
||||
{% if type != "choice" %}
|
||||
{% if row.vars.block_prefixes.2 matches '{^(.*)(_tagsComma)$}' %}
|
||||
<div class="m-t-10 m-b-20">
|
||||
{{ form_label(row) }}
|
||||
<br />
|
||||
<span class="small">{{ 'profile.talent.under.tags'|trans }}</span>
|
||||
{{ form_widget(row) }}
|
||||
<span class="xsmall">Insérez une virgule ou appuyez sur ENTRÉE pour séparer vos mots-clés.</span>
|
||||
<br />
|
||||
</div>
|
||||
{% else %}
|
||||
{{ form_label(row) }}
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{{ form_widget(row) }}
|
||||
{% endif %}
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
{% if add == 'add' %}
|
||||
<a class="btn btn-default {{ "cancel-" ~ typeform }} left">Annuler</a>
|
||||
{% else %}
|
||||
<a data-type="{{ typeform }}" class="btn btn-default {{ "delete-" ~ typeform }} left">Supprimer</a>
|
||||
{% endif %}
|
||||
<a href="#!" data-type="{{ typeform }}" class="btn btn-default {{ typeform ~ "-save-action " }} right">Sauvegarder</a>
|
||||
</div>
|
||||
</div>
|
||||
{% endmacro %}
|
||||
|
||||
{% import _self as formMacros %}
|
||||
|
||||
|
||||
{% block dashContent %}
|
||||
{% include 'default/flash_message.html.twig' %}
|
||||
{{ render(controller('AppBundle:Talent:profileProgression',{'talent':app.user.company.id})) }}
|
||||
|
||||
<div class="bg-bordered row m-b-10 p-20">
|
||||
<div class="col s12">
|
||||
<span class="bg-blue-1 text-gradient font-2 fs-20">CV Vidéo générique</span>
|
||||
<h4>CV Vidéo générique</h4>
|
||||
<div class="switch d-inblock pull-right">
|
||||
<label>
|
||||
Etre visible des recruteurs
|
||||
@@ -49,89 +138,145 @@
|
||||
<span><strong><a href="{{ path('talent_media') }}">Choisir depuis votre videothèque</a></strong></span>
|
||||
</div>
|
||||
</div>
|
||||
{#
|
||||
<div class="row">
|
||||
<div class="col s6">
|
||||
<div class="input-field">
|
||||
{{ form_rest(formMedia) }}
|
||||
</div>
|
||||
</div>
|
||||
<div class="col s6 ">
|
||||
<button id="submit" class="btn btn-default disabled" type="submit">Enregistrer</button>
|
||||
</div>
|
||||
<div class="col s12">
|
||||
<span><strong><a href="{{ path('talent_media') }}">Choisir depuis votre videothèque</a></strong></span>
|
||||
</div>
|
||||
</div>
|
||||
#}
|
||||
</div>
|
||||
{{ form_end(formMedia) }}
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
{{ form_start(form) }}
|
||||
<div class="bg-bordered row m-b-10 p-20">
|
||||
|
||||
{{ form_start(formCompany, {'attr': {'id': 'form_profile_edit','novalidate': 'novalidate'}}) }}
|
||||
<div class="bg-bordered professional-info row m-b-10 p-20">
|
||||
<div class="col s12">
|
||||
<span class="bg-blue-1 text-gradient font-2 fs-20">Information Professionnelles</span>
|
||||
<h4>Information Professionnelles</h4>
|
||||
</div>
|
||||
<div class="col s12">
|
||||
<div class="m-t-10">
|
||||
{{ form_label(form.company.tagsComma) }}
|
||||
{{ form_row(formCompany.titleTalent) }}
|
||||
{{ form_row(formCompany.situationTalent) }}
|
||||
<div class="m-t-10 m-b-20">
|
||||
{{ form_label(formCompany.tagsComma) }}
|
||||
<br />
|
||||
<span class="small">{{ 'profile.talent.under.tags'|trans }}</span>
|
||||
<i class="fa fa-question-circle-o fs-20 color-blue1 tooltipped" data-position="top"
|
||||
data-tooltip="Les mots clés permettent la mise en relation des talents et des entreprises. Vous pourrez les changer à tout moment."></i>
|
||||
{{ form_widget(form.company.tagsComma) }}
|
||||
{{ form_widget(formCompany.tagsComma) }}
|
||||
<span class="xsmall">Insérez une virgule ou appuyez sur ENTRÉE pour séparer vos mots-clés.</span>
|
||||
<br />
|
||||
</div>
|
||||
{{ form_row(form.company.tagsComma) }}
|
||||
{{ form_row(form.company.website) }}
|
||||
{{ form_row(form.company.twitter) }}
|
||||
{{ form_row(form.company.linkedin) }}
|
||||
{{ form_row(formCompany.descriptionTalent) }}
|
||||
{{ form_row(formCompany.website) }}
|
||||
{{ form_row(formCompany.twitter) }}
|
||||
{{ form_row(formCompany.linkedin) }}
|
||||
</div>
|
||||
<div class="col s12">
|
||||
<input class="btn btn-default btn-round pull-right m-t-15 m-b-20" type="submit"
|
||||
value="{{ 'profile.edit.save'|trans }}"/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{{ form_end(formCompany) }}
|
||||
|
||||
{# Espace Experiences professionnelle #}
|
||||
{{ form_start(formCareer, {'attr': {'id': 'form_profile_career','novalidate': 'novalidate'}}) }}
|
||||
{% do formCareer.career.setRendered %}
|
||||
<div class="bg-bordered row m-b-10 p-20">
|
||||
<div class="col s12">
|
||||
<span class="bg-blue-1 text-gradient font-2 fs-20">Information personnelles</span>
|
||||
<h4>Experiences</h4>
|
||||
<a class="btn btn-default right" id="add_career">Ajouter une experience professionnelle</a>
|
||||
</div>
|
||||
<div class="col s12" id="career_container">
|
||||
{% include 'talent/profile_career.html.twig' with {'carrer': career, 'edit': true} %}
|
||||
{{ form_errors(formCareer.career) }}
|
||||
<span class="career-holder" data-prototype="{{ formMacros.printTalentRow(formCareer.career.vars.prototype, (formCareer.career|length + 1), 'career','add')|e('html_attr') }}"></span>
|
||||
{% for careerField in formCareer.career %}
|
||||
{{ formMacros.printTalentRow(careerField, (loop.index - 1), 'career') }}
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
{{ form_end(formCareer) }}
|
||||
|
||||
{{ form_start(formFormation, {'attr': {'id': 'form_profile_formation','novalidate': 'novalidate'}}) }}
|
||||
{% do formFormation.formation.setRendered %}
|
||||
{# Espace Formation #}
|
||||
<div class="bg-bordered row m-b-10 p-20">
|
||||
<div class="col s12">
|
||||
<h4>Formations et certifications</h4>
|
||||
<a class="btn btn-default right" id="add_formation">Ajouter une formation</a>
|
||||
</div>
|
||||
<div class="col s12" id="formation_container">
|
||||
{% include 'talent/profile_formation.html.twig' with {'formation': formation, 'edit': true} %}
|
||||
{{ form_errors(formFormation.formation) }}
|
||||
<span class="formation-holder" data-prototype="{{ formMacros.printTalentRow(formFormation.formation.vars.prototype, (formFormation.formation|length + 1), 'formation','add')|e('html_attr') }}"></span>
|
||||
{% for formationField in formFormation.formation %}
|
||||
{{ formMacros.printTalentRow(formationField, (loop.index - 1), 'formation') }}
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
{{ form_end(formFormation) }}
|
||||
|
||||
{{ form_start(formLanguage, {'attr': {'id': 'form_profile_language','novalidate': 'novalidate'}}) }}
|
||||
{% do formLanguage.language.setRendered %}
|
||||
<div class="bg-bordered row m-b-10 p-20">
|
||||
<div class="col s12">
|
||||
<h4>Langues</h4>
|
||||
<a class="btn btn-default right" id="add_language">Ajouter une langues</a>
|
||||
</div>
|
||||
<div class="col s12" id="language_container">
|
||||
{% include 'talent/profile_language.html.twig' with {'language': language, 'edit': true} %}
|
||||
{{ form_errors(formLanguage.language) }}
|
||||
<span class="language-holder" data-prototype="{{ formMacros.printTalentRow(formLanguage.language.vars.prototype, (formLanguage.language|length + 1 ), 'language','add')|e('html_attr') }}"></span>
|
||||
{% for languageField in formLanguage.language %}
|
||||
{{ formMacros.printTalentRow(languageField, (loop.index - 1), 'language') }}
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
{{ form_end(formLanguage) }}
|
||||
|
||||
|
||||
{{ form_start(formProfile, {'attr': {'id': 'form_profile_edit2','novalidate': 'novalidate'}}) }}
|
||||
<div class="bg-bordered personal-info row m-b-10 p-20">
|
||||
<div class="col s12">
|
||||
<h4>Information personnelles</h4>
|
||||
</div>
|
||||
<div class="col s12">
|
||||
<div class="p-t-10">
|
||||
<div class="col s6 p-r-10">
|
||||
{{ form_row(form.firstname) }}
|
||||
{{ form_row(formProfile.firstname) }}
|
||||
</div>
|
||||
<div class="col s6">
|
||||
{{ form_row(form.lastname) }}
|
||||
{{ form_row(formProfile.lastname) }}
|
||||
</div>
|
||||
<div class="col s6">
|
||||
{{ form_row(form.birthday) }}
|
||||
{{ form_row(formProfile.birthday) }}
|
||||
</div>
|
||||
<div class="col s6">
|
||||
{{ form_row(form.gender) }}
|
||||
{{ form_row(formProfile.gender) }}
|
||||
</div>
|
||||
<div class="col s12">
|
||||
{{ form_row(form.company.address) }}
|
||||
{{ form_row(form.company.addressComp) }}
|
||||
{{ form_row(formProfile.company.address) }}
|
||||
{{ form_row(formProfile.company.addressComp) }}
|
||||
</div>
|
||||
<div class="col s6 p-r-10">
|
||||
{{ form_row(form.company.city) }}
|
||||
{{ form_row(formProfile.company.city) }}
|
||||
</div>
|
||||
<div class="col s6">
|
||||
{{ form_row(form.company.zipcode) }}
|
||||
{{ form_row(formProfile.company.zipcode) }}
|
||||
</div>
|
||||
<div class="col s12">
|
||||
{{ form_row(form.company.country) }}
|
||||
{{ form_row(formProfile.company.country) }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col s12">
|
||||
<input class="btn btn-default btn-round pull-right m-t-15 m-b-20" type="submit"
|
||||
value="{{ 'profile.edit.save'|trans }}"/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<input class="btn btn-default btn-round pull-right m-t-15" type="submit"
|
||||
value="{{ 'profile.edit.submit'|trans }}"/>
|
||||
</div>
|
||||
{{ form_end(form) }}
|
||||
{{ form_end(formProfile) }}
|
||||
|
||||
|
||||
<div id="liste-offres" class="bg-bordered row m-t-20 m-b-10 p-20">
|
||||
<div class="col s12">
|
||||
<span class="bg-blue-1 text-gradient font-2 fs-20">Mes dernières offres consultées</span>
|
||||
<h4>Mes dernières offres consultées</h4>
|
||||
</div>
|
||||
<div class="owl-carousel owl-carousel-ptalent">
|
||||
{% for historyAd in historyAds %}
|
||||
@@ -165,8 +310,8 @@
|
||||
{% endblock %}
|
||||
|
||||
{% block javascripts %}
|
||||
|
||||
{{ parent() }}
|
||||
{% if app.user.company.presentationVideo is null %}
|
||||
<script type="text/javascript">
|
||||
var urlDropzone = '{{ path("upload_media_presentation") }}';
|
||||
var urlDelete = '';
|
||||
@@ -178,25 +323,14 @@
|
||||
var mediaEditTitleUrl = "{{ path('media_edit_title', {'id': 'id_video'})|escape('js') }}";
|
||||
</script>
|
||||
<script src="{{ asset('/js/dropzone.js') }}"></script>
|
||||
<script>
|
||||
$(document).ready(function () {
|
||||
$('.tooltipster').tooltipster({
|
||||
theme: 'tooltipster-ttube',
|
||||
side: 'bottom',
|
||||
{% endif %}
|
||||
<script src="{{ asset('/js/profileTalent.js') }}"></script>
|
||||
<script type="text/javascript">
|
||||
(function ($) {
|
||||
$(function () {
|
||||
$('.modal').modal();
|
||||
});
|
||||
});
|
||||
</script>
|
||||
<script>
|
||||
$('#searchableToggle').change(function () {
|
||||
var route = '/talent/me/searchable/toggle';
|
||||
$.ajax({
|
||||
type: "POST",
|
||||
url: route,
|
||||
dataType: "json",
|
||||
success: function (msg) {
|
||||
console.log(msg);
|
||||
}
|
||||
});
|
||||
});
|
||||
})(jQuery);
|
||||
</script>
|
||||
|
||||
{% endblock %}
|
||||
@@ -0,0 +1,44 @@
|
||||
{% for c in career %}
|
||||
<div class="row row-career">
|
||||
<div class="col s12">
|
||||
<span class="titleCompanyCareer">{{c.companyCareer}}</span>
|
||||
{% if edit is defined %}
|
||||
<span class="right">
|
||||
<a class="edit-career" data-index="{{ loop.index - 1 }}">
|
||||
<i class="fa fa-pencil" aria-hidden="true"></i>
|
||||
</a>
|
||||
</span>
|
||||
{% endif %}
|
||||
</div>
|
||||
<div class="col s12">
|
||||
<span class="titleJobCareer">{{c.jobCareer}}</span>
|
||||
</div>
|
||||
<div class="col s12 titleDateCareer">
|
||||
{% if c.beginMonthCareer is defined %}
|
||||
{% set fullDate = '2018-' ~ c.beginMonthCareer ~ '-01' %}
|
||||
{% if c.beginMonthCareer matches '/^\\d+$/' %}
|
||||
<span>{{ fullDate|datetime }} {{ c.beginYearCareer }}</span>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
<span>-
|
||||
{% if c.actualJobCareer is defined and c.actualJobCareer == true %}
|
||||
Aujourd'hui{% else %} {% set fullDateEnd = '2018-' ~ c.endMonthCareer ~ '-01' %} {% if c.endMonthCareer matches '/^\\d+$/' %}{{ fullDateEnd|datetime }}{% endif %} {{ c.endYearCareer }}{% endif %}, {{ c.placeCareer }}
|
||||
</span>
|
||||
</div>
|
||||
<div class="col s12">
|
||||
<span class="titleDescriptionCareer">{{c.descriptionCareer|nl2br}}</span>
|
||||
</div>
|
||||
<div class="col s12">
|
||||
<div class="keywords">
|
||||
{% if c.tagsComma %}
|
||||
{% for keyword in c.tagsComma|split(',') %}
|
||||
<div class="chip">
|
||||
{{ keyword }}
|
||||
</div>
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
</div>
|
||||
<hr />
|
||||
</div>
|
||||
</div>
|
||||
{% endfor %}
|
||||
@@ -0,0 +1,29 @@
|
||||
{% for f in formation %}
|
||||
<div class="row row-formation">
|
||||
<div class="col s12">
|
||||
<span class="titleCompanyCareer">{{f.nameFormation}}</span>
|
||||
{% if edit is defined %}
|
||||
<span class="right">
|
||||
<a class="edit-formation" data-index="{{ loop.index - 1 }}">
|
||||
<i class="fa fa-pencil" aria-hidden="true"></i>
|
||||
</a>
|
||||
</span>
|
||||
{% endif %}
|
||||
</div>
|
||||
<div class="col s12 titleDateCareer">
|
||||
<span>
|
||||
{% if f.actualJobFormation is defined and f.actualJobFormation == true %}
|
||||
En cours
|
||||
{% else %}
|
||||
{{ f.beginYearFormation }}
|
||||
{% endif %}
|
||||
</span>
|
||||
</div>
|
||||
<div class="col s12">
|
||||
<span class="titleDescriptionCareer">{{f.descriptionFormation|nl2br}}</span>
|
||||
</div>
|
||||
<div class="col s12">
|
||||
<hr />
|
||||
</div>
|
||||
</div>
|
||||
{% endfor %}
|
||||
@@ -0,0 +1,17 @@
|
||||
{% for l in language %}
|
||||
<div class="row row-language">
|
||||
<div class="col s12">
|
||||
<span class="titleCompanyCareer">{{l.nameLanguage}}</span>
|
||||
{% if edit is defined %}
|
||||
<span class="right">
|
||||
<a class="edit-language" data-index="{{ loop.index - 1 }}">
|
||||
<i class="fa fa-pencil" aria-hidden="true"></i>
|
||||
</a>
|
||||
</span>
|
||||
{% endif %}
|
||||
</div>
|
||||
<div class="col s12">
|
||||
<span class="titleJobCareer">{{ l.skillLanguage|trans }}</span>
|
||||
</div>
|
||||
</div>
|
||||
{% endfor %}
|
||||
@@ -35,32 +35,6 @@
|
||||
{{ company.addresses.billing.country|country }}</p>
|
||||
{% endif %}
|
||||
</div>
|
||||
<div class="col s12 profil-links">
|
||||
{% if talent.extra.linkedin %}
|
||||
<a target="_blank" href="{{ talent.extra.linkedin }}" 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-linkedin fa-stack-1x fa-inverse"></i>
|
||||
</span>
|
||||
</a>
|
||||
{% endif %}
|
||||
{% if talent.extra.twitter %}
|
||||
<a target="_blank" href="{{ talent.extra.twitter }}" 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-twitter fa-stack-1x fa-inverse"></i>
|
||||
</span>
|
||||
</a>
|
||||
{% endif %}
|
||||
{% if talent.website %}
|
||||
<a target="_blank" href="{{ talent.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/>
|
||||
@@ -79,17 +53,64 @@
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
<div class="row bg-bordered">
|
||||
<div class="col s12">
|
||||
<h3 class="blue-text no-margin-top">
|
||||
Le Cv vidéo de
|
||||
{{ user.firstname }}
|
||||
{{ user.lastname }}</h3>
|
||||
{% for tag in talent.publicTag %}
|
||||
<div class="chip">{{ tag }}</div>
|
||||
<div class="row bg-bordered talent-profile">
|
||||
<div class="col s8">
|
||||
<h3 class="no-margin-top">{{ user.company.extra.titleTalent }}</h3>
|
||||
<span>{{ user.company.extra.situationTalent|trans }}</span>
|
||||
</div>
|
||||
<div class="col s4 talent-border-left">
|
||||
<h3 class="no-margin-top talent-profile-title">DÉCOUVRIR SON PROFIL</h3>
|
||||
<div class="profil-links">
|
||||
{% if talent.extra.linkedin %}
|
||||
<a target="_blank" href="{{ talent.extra.linkedin }}" >
|
||||
<i class="fa fa-linkedin fa-inverse"></i>
|
||||
</a>
|
||||
{% endif %}
|
||||
{% if talent.extra.twitter %}
|
||||
<a target="_blank" href="{{ talent.extra.twitter }}" >
|
||||
<i class="fa fa-twitter fa-inverse"></i>
|
||||
</a>
|
||||
{% endif %}
|
||||
{% if talent.website %}
|
||||
<a target="_blank" href="{{ talent.website }}" >
|
||||
<i class="fa fa-globe-africa fa-inverse"></i>
|
||||
</a>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
<div class="col s12 talent-border-top">
|
||||
{% for tag in talent.publicTag if talent.publicTag[0] is not empty %}
|
||||
<div class="chip {% if loop.index > 5 %}chip-invisible{% endif %}">{{ tag }}</div>
|
||||
{% endfor %}
|
||||
{% if talent.publicTag|length > 5 %}
|
||||
<div class="chip chip-more">+ {{ talent.publicTag|length - 5 }}</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
{% if user.company.extra.descriptionTalent %}
|
||||
<div class="row bg-bordered">
|
||||
<div class="col s12">
|
||||
<h3 class="blue-text no-margin-top">{{ user.firstname }} {% trans %}en quelques mots{% endtrans %}</h3>
|
||||
</div>
|
||||
<div class="col s12">
|
||||
<p>
|
||||
{{ user.company.extra.descriptionTalent|raw|nl2br }}
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
{% if user.career %}
|
||||
<div class="row bg-bordered">
|
||||
<div class="col s12">
|
||||
<h3 class="blue-text no-margin-top">Expériences</h3>
|
||||
</div>
|
||||
<div class="col s12">
|
||||
<div class="col s12" id="career_container">
|
||||
{% include 'talent/profile_career.html.twig' with {'career': user.career } %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
<div class="row bg-bordered">
|
||||
<div class="col s12 header-recommendations">
|
||||
<h3 class="blue-text no-margin-top">{% trans %}label.recommendations{% endtrans %}</h3>
|
||||
@@ -129,6 +150,30 @@
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
{% if user.formation %}
|
||||
<div class="row bg-bordered">
|
||||
<div class="col s12">
|
||||
<h3 class="blue-text no-margin-top">Formations & Certifications </h3>
|
||||
</div>
|
||||
<div class="col s12">
|
||||
<div class="col s12" id="formation_container">
|
||||
{% include 'talent/profile_formation.html.twig' with {'formation': user.formation } %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
{% if user.language %}
|
||||
<div class="row bg-bordered">
|
||||
<div class="col s12">
|
||||
<h3 class="blue-text no-margin-top">Langues </h3>
|
||||
</div>
|
||||
<div class="col s12">
|
||||
<div class="col s12" id="formation_container">
|
||||
{% include 'talent/profile_language.html.twig' with {'language': user.language } %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -195,6 +240,11 @@
|
||||
});
|
||||
$('#modal-recommendation').modal('open');
|
||||
}
|
||||
|
||||
$(".chip-more").on('click',function(){
|
||||
$(this).fadeOut();
|
||||
$(".chip-invisible").css('display','inline-block');
|
||||
});
|
||||
});
|
||||
</script>
|
||||
{% endblock %}
|
||||
@@ -65,18 +65,21 @@
|
||||
<div class="col s11 col-noPadding" style="position:relative;">
|
||||
<div class="chip center-align">
|
||||
<p class="m-0">
|
||||
{% set nbAds = 0 %}
|
||||
{% set fragment = "companies" %}
|
||||
{% for territoryAd in c.getTerritoryAds if territoryAd.ad != null %}
|
||||
{% set nbAds = nbAds + 1 %}
|
||||
{% set fragment = "offers" %}
|
||||
{% endfor %}
|
||||
<a class="td-none color-grey3"
|
||||
href="{{ path('territory_show',{'alias': c.alias, '_fragment':'offers' }) }}">
|
||||
{% set nbAds = 0 %}
|
||||
{% for territoryAd in c.getTerritoryAds if territoryAd.ad != null %}
|
||||
{% set nbAds = nbAds + 1 %}
|
||||
{% endfor %}
|
||||
href="{{ path('territory_show',{'alias': c.alias, '_fragment': fragment }) }}">
|
||||
|
||||
{% if nbAds > 1 %}
|
||||
<strong>{{ nbAds }} offres d'emploi en
|
||||
cours sur ce territoire</strong>
|
||||
<strong>{{ nbAds }} {{ 'message.territory.list.ads'|trans }}</strong>
|
||||
{% elseif nbAds == 1 %}
|
||||
<strong>{{ nbAds }} {{ 'message.territory.list.ad'|trans }}</strong>
|
||||
{% else %}
|
||||
<strong>{{ nbAds }} offre d'emploi en
|
||||
cours sur ce territoire</strong>
|
||||
<strong>{{ 'message.territory.list.noads'|trans }}</strong>
|
||||
{% endif %}
|
||||
</a>
|
||||
</p>
|
||||
|
||||
@@ -71,11 +71,11 @@
|
||||
- {{ company.addresses.billing.country|country }}</p>
|
||||
{% endif %}
|
||||
</div>
|
||||
<div class="col s12 profil-links">
|
||||
<div class="col s12 profil-links center-align">
|
||||
{% 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-circle fa-stack-2x"></i>
|
||||
<i class="fa fa-link fa-stack-1x fa-inverse"></i>
|
||||
</span>
|
||||
</a>
|
||||
|
||||
@@ -32,8 +32,16 @@ assetic:
|
||||
- 'js/vendors/jquery.daterangepicker.min.js'
|
||||
talents:
|
||||
inputs:
|
||||
- 'js/vendors/jquery-3.1.1.min.js'
|
||||
- 'js/vendors/dropzone.js'
|
||||
- 'js/vendors/materialize.min.js'
|
||||
- 'js/vendors/materialize-tags.min.js'
|
||||
- 'js/vendors/typeahead.js'
|
||||
- 'js/vendors/jquery-confirm.min.js'
|
||||
- 'js/vendors/tooltipster.bundle.min.js'
|
||||
- 'js/vendors/datepicker.min.js'
|
||||
- 'js/vendors/jquery.validate.min.js'
|
||||
- 'js/talent.js'
|
||||
admin:
|
||||
inputs:
|
||||
- 'admin/AdminLTE/plugins/jQuery/jquery-2.2.3.min.js'
|
||||
|
||||
@@ -2,6 +2,18 @@ fos_elastica:
|
||||
clients:
|
||||
default: { host: %elastic_host%, port: %elastic_port% }
|
||||
indexes:
|
||||
tags:
|
||||
types:
|
||||
tagsfr:
|
||||
mappings:
|
||||
publicTag:
|
||||
analyzer: keyword
|
||||
type: text
|
||||
persistence:
|
||||
driver: orm
|
||||
model: AppBundle\Entity\Ad
|
||||
provider: ~
|
||||
finder: ~
|
||||
ads:
|
||||
settings:
|
||||
index:
|
||||
|
||||
@@ -8,7 +8,8 @@ parameters:
|
||||
database_port: '5432'
|
||||
database_name: database
|
||||
database_user: user
|
||||
database_password: 7C|Uk2B[.>"6{QO{
|
||||
#database_password: 7C|Uk2B[.>"6{QO{
|
||||
database_password: b|RN:iR<g,TNMqM6
|
||||
#Mongo
|
||||
mongodb_server: "mongodb://tt-website.mongo.preprod:27017"
|
||||
#Prestashop
|
||||
|
||||
@@ -19,6 +19,10 @@ services:
|
||||
class: AppBundle\Utils\Services\AdSearcher
|
||||
arguments: ['@fos_elastica.finder.ads.adfr']
|
||||
|
||||
app.ad_tags_searcher:
|
||||
class: AppBundle\Utils\Services\AdSearcher
|
||||
arguments: ['@fos_elastica.finder.tags.tagsfr']
|
||||
|
||||
# Twig Extensions
|
||||
twig.country_extension:
|
||||
class: AppBundle\Twig\CountryExtension
|
||||
|
||||
@@ -298,7 +298,6 @@ class AdController extends Controller
|
||||
if ($form->isSubmitted() && $form->isValid()) {
|
||||
$data = $form->getData();
|
||||
if (is_null($data['job'])) {
|
||||
//return $this->redirectToRoute('homepage');
|
||||
$session->remove('jobSearch');
|
||||
unset($data['job']);
|
||||
} else {
|
||||
@@ -330,8 +329,13 @@ class AdController extends Controller
|
||||
]);
|
||||
|
||||
} else {
|
||||
|
||||
$ads = $this->getPublishedAds($promoted);
|
||||
if($request->get('tag')){
|
||||
$data['tag'] = $request->get('tag');
|
||||
$adSearcher = $this->get('app.ad_tags_searcher');
|
||||
$ads = $adSearcher->process($data,'tag');
|
||||
} else {
|
||||
$ads = $this->getPublishedAds($promoted);
|
||||
}
|
||||
}
|
||||
|
||||
return $this->render('default/ad_search_result.html.twig', [
|
||||
|
||||
@@ -0,0 +1,68 @@
|
||||
<?php
|
||||
|
||||
namespace AppBundle\Controller\Admin;
|
||||
|
||||
use AppBundle\Entity\Answer;
|
||||
use AppBundle\Entity\Ad;
|
||||
use AppBundle\Form\Admin\AdType;
|
||||
use AppBundle\Form\Admin\ModerationDeclineType;
|
||||
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
|
||||
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Security;
|
||||
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
|
||||
use Symfony\Component\HttpFoundation\Request;
|
||||
use Symfony\Component\HttpFoundation\JsonResponse;
|
||||
|
||||
class AnswerController extends Controller
|
||||
{
|
||||
|
||||
/***********************
|
||||
* MODERATION
|
||||
***********************/
|
||||
|
||||
/**
|
||||
* @Route("/admin/moderation/anwser/list", name="admin_anwser_moderation_list")
|
||||
*/
|
||||
public function adminAnswerModerationListAction()
|
||||
{
|
||||
$em = $this->getDoctrine()->getManager();
|
||||
$answers = $em->getRepository('AppBundle:Answer')->findAll();
|
||||
|
||||
return $this->render('admin/answer_list_moderation.html.twig', array(
|
||||
'answers' => $answers,
|
||||
));
|
||||
}
|
||||
|
||||
/**
|
||||
* @Route("/admin/config/answer/{id}/status/{status}", name="admin_answer_status")
|
||||
*/
|
||||
public function adminStatusAnswerAction(Answer $answer, $status)
|
||||
{
|
||||
$em = $this->getDoctrine()->getManager();
|
||||
$answer->setStatus($status);
|
||||
$em->persist($answer);
|
||||
$em->flush();
|
||||
$result = array("msg" => "toggle ok");
|
||||
return new JsonResponse($result);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @Route("/admin/config/answer/{id}/delete", name="admin_answer_delete")
|
||||
*/
|
||||
public function adminAnswerDeleteAction(Answer $answer)
|
||||
{
|
||||
$em = $this->getDoctrine()->getManager();
|
||||
$t = $em->getRepository('AppBundle:User')->findByRole('ROLE_TALENT');
|
||||
$media = $answer->getVideo();
|
||||
$answer->setVideo(null);
|
||||
$em->remove($answer);
|
||||
$mediaManager = $this->get('media_manager');
|
||||
if($media){
|
||||
$mediaManager->delete($media);
|
||||
$em->remove($media);
|
||||
}
|
||||
$em->flush();
|
||||
|
||||
return $this->redirectToRoute('admin_anwser_moderation_list');
|
||||
}
|
||||
}
|
||||
@@ -18,7 +18,7 @@ class DefaultController extends Controller
|
||||
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' => 'ASC'));
|
||||
$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'));
|
||||
$territories = $em->getRepository('AppBundle:Company')->findBy(array("type" => "TERRITORY", "emphasis" => true), array('emphasisOrder' => 'ASC'));
|
||||
|
||||
|
||||
@@ -97,7 +97,7 @@ class MediaController extends Controller
|
||||
return $this->redirectToRoute('talent_media');
|
||||
}
|
||||
|
||||
return $this->render('media/media_list.html.twig', [
|
||||
return $this->render('media/media_list_talent.html.twig', [
|
||||
'form' => $form->createView(),
|
||||
'medias' => $medias,
|
||||
]);
|
||||
@@ -144,6 +144,18 @@ class MediaController extends Controller
|
||||
* Ajax & Webservices
|
||||
***********************/
|
||||
|
||||
/**
|
||||
* @Route("/media/changeThumbnail", name="video_changeThumbnail")
|
||||
*/
|
||||
public function changeThumbnailAction(Request $request)
|
||||
{
|
||||
$data = json_decode($request->getContent());
|
||||
$mediaManager = $this->get('media_manager');
|
||||
$message = $mediaManager->changeThumbnail($data->duration, $data->id);
|
||||
|
||||
return new JsonResponse($message);
|
||||
}
|
||||
|
||||
/**
|
||||
* @Route("/media/upload/{id}", name="upload_media")
|
||||
*/
|
||||
|
||||
@@ -10,6 +10,10 @@ use AppBundle\Entity\Recommendation;
|
||||
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 Edeclic\PrestashopBridgeBundle\Event\PrestashopBridgeEvents;
|
||||
use Edeclic\PrestashopBridgeBundle\Event\UserEvent;
|
||||
use Sensio\Bundle\FrameworkExtraBundle\Configuration\ParamConverter;
|
||||
@@ -38,11 +42,28 @@ class TalentController extends Controller
|
||||
]);
|
||||
}
|
||||
|
||||
private static function sortByBeginYearCareer($x, $y) {
|
||||
|
||||
return strcasecmp($y['beginYearCareer'], $x['beginYearCareer']);
|
||||
}
|
||||
|
||||
private static function sortByBeginYearFormation($x, $y) {
|
||||
|
||||
return strcasecmp($y['beginYearFormation'], $x['beginYearFormation']);
|
||||
}
|
||||
|
||||
private static function sortByLanguageName($x, $y) {
|
||||
|
||||
return strcasecmp($y['nameLanguage'], $x['nameLanguage']);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @Route("/talent/me/", name="talent_dashboard")
|
||||
*/
|
||||
public function talentProfileAction(Request $request)
|
||||
{
|
||||
setlocale(LC_TIME, 'fr_FR.UTF8', 'fr.UTF8', 'fr_FR.UTF-8', 'fr.UTF-8');
|
||||
$em = $this->getDoctrine()->getManager();
|
||||
$history = $this->get('edeclic.history.record');
|
||||
$records = $history->recordShow($this->getUser()->getId(), "r", 'AppBundle\Entity\Ad', null);
|
||||
@@ -53,11 +74,10 @@ class TalentController extends Controller
|
||||
$historyAds[$objRecord->getId()] = $existAnswer;
|
||||
}
|
||||
$user = $this->getUser();
|
||||
$form = $this->createForm(TalentProfileType::class, $user);
|
||||
$form->handleRequest($request);
|
||||
if ($form->isSubmitted() && $form->isValid()) {
|
||||
$birthday = \DateTime::createFromFormat('d/m/Y', $form->getData()->getBirthday());
|
||||
$user->setBirthday($birthday);
|
||||
|
||||
$formProfile = $this->createForm(TalentProfileType::class, $user);
|
||||
$formProfile->handleRequest($request);
|
||||
if ($formProfile->isSubmitted() && $formProfile->isValid()) {
|
||||
$companyManager = $this->get('app.company_manager');
|
||||
$companyManager->updateTalent($user);
|
||||
$event = new UserEvent($user);
|
||||
@@ -67,6 +87,59 @@ class TalentController extends Controller
|
||||
$this->get('translator')->trans('company.profile.save.title')
|
||||
);
|
||||
}
|
||||
|
||||
$formCompany = $this->createForm(TalentType::class, $user->getCompany());
|
||||
$formCompany->handleRequest($request);
|
||||
if ($formCompany->isSubmitted() && $formCompany->isValid()) {
|
||||
$companyManager = $this->get('app.company_manager');
|
||||
$companyManager->updateTalent($user);
|
||||
$this->addFlash(
|
||||
'notice',
|
||||
$this->get('translator')->trans('company.profile.save.title')
|
||||
);
|
||||
}
|
||||
|
||||
$formCareer = $this->createForm(CareersType::class, $user);
|
||||
$formCareer->handleRequest($request);
|
||||
if ($formCareer->isSubmitted() && $formCareer->isValid()) {
|
||||
$careers = $formCareer->getData()->getCareer();
|
||||
usort($careers, "static::sortByBeginYearCareer");
|
||||
$user->setCareer($careers);
|
||||
$em->persist($user);
|
||||
$em->flush();
|
||||
$this->addFlash(
|
||||
'notice',
|
||||
$this->get('translator')->trans('company.profile.save.title')
|
||||
);
|
||||
}
|
||||
|
||||
$formFormation = $this->createForm(FormationsType::class, $user);
|
||||
$formFormation->handleRequest($request);
|
||||
if ($formFormation->isSubmitted() && $formFormation->isValid()) {
|
||||
$formations = $formFormation->getData()->getFormation();
|
||||
usort($formations, "static::sortByBeginYearFormation");
|
||||
$user->setFormation($formations);
|
||||
$em->persist($user);
|
||||
$em->flush();
|
||||
$this->addFlash(
|
||||
'notice',
|
||||
$this->get('translator')->trans('company.profile.save.title')
|
||||
);
|
||||
}
|
||||
|
||||
$formLanguage = $this->createForm(LanguagesType::class, $user);
|
||||
$formLanguage->handleRequest($request);
|
||||
if ($formLanguage->isSubmitted() && $formLanguage->isValid()) {
|
||||
$languages = $formLanguage->getData()->getLanguage();
|
||||
$user->setLanguage($languages);
|
||||
$em->persist($user);
|
||||
$em->flush();
|
||||
$this->addFlash(
|
||||
'notice',
|
||||
$this->get('translator')->trans('company.profile.save.title')
|
||||
);
|
||||
}
|
||||
|
||||
$formMedia = $this->createForm(MediaType::class);
|
||||
$formMedia->handleRequest($request);
|
||||
if ($formMedia->isSubmitted() && $formMedia->isValid()) {
|
||||
@@ -80,10 +153,16 @@ class TalentController extends Controller
|
||||
return $this->redirectToRoute('talent_media');
|
||||
}
|
||||
|
||||
|
||||
return $this->render('talent/profile.html.twig', [
|
||||
'form' => $form->createView(),
|
||||
'formProfile' => $formProfile->createView(),
|
||||
'formCompany' => $formCompany->createView(),
|
||||
'formCareer' => $formCareer->createView(),
|
||||
'formFormation' => $formFormation->createView(),
|
||||
'formLanguage' => $formLanguage->createView(),
|
||||
'formMedia' => $formMedia->createView(),
|
||||
'career' => $user->getCareer(),
|
||||
'formation' => $user->getFormation(),
|
||||
'language' => $user->getLanguage(),
|
||||
'historyAds' => $historyAds
|
||||
]);
|
||||
}
|
||||
|
||||
@@ -140,7 +140,7 @@ class Answer
|
||||
}
|
||||
|
||||
public function getIsViewed(){
|
||||
if($this->messages->count() <= 1){
|
||||
if($this->messages->count() >= 1){
|
||||
|
||||
return $this->messages->last();
|
||||
} else {
|
||||
|
||||
@@ -6,7 +6,7 @@ use Doctrine\Common\Collections\ArrayCollection;
|
||||
use Doctrine\ORM\Mapping as ORM;
|
||||
use FOS\UserBundle\Model\User as BaseUser;
|
||||
use Symfony\Component\HttpFoundation\File\UploadedFile;
|
||||
|
||||
use AppBundle\Utils\Traits\CareerJsonTrait;
|
||||
/**
|
||||
* @ORM\Entity(repositoryClass="AppBundle\Repository\UserRepository")
|
||||
* @ORM\Table(name="fos_user")
|
||||
@@ -160,6 +160,28 @@ class User extends BaseUser
|
||||
*/
|
||||
private $socialPicture;
|
||||
|
||||
|
||||
/**
|
||||
* @var array
|
||||
*
|
||||
* @ORM\Column(name="career", type="json_document", nullable=true)
|
||||
*/
|
||||
private $career;
|
||||
|
||||
/**
|
||||
* @var array
|
||||
*
|
||||
* @ORM\Column(name="formation", type="json_document", nullable=true)
|
||||
*/
|
||||
private $formation;
|
||||
|
||||
/**
|
||||
* @var array
|
||||
*
|
||||
* @ORM\Column(name="language", type="json_document", nullable=true)
|
||||
*/
|
||||
private $language;
|
||||
|
||||
/***********************
|
||||
* Constructor
|
||||
***********************/
|
||||
@@ -349,8 +371,16 @@ class User extends BaseUser
|
||||
*
|
||||
* @return User
|
||||
*/
|
||||
public function setBirthday($birthday = null)
|
||||
public function setBirthday($birthday = null, $isSocial = false)
|
||||
{
|
||||
if($birthday != null){
|
||||
if($isSocial){
|
||||
$birthday = \DateTime::createFromFormat('m/d/Y', $birthday);
|
||||
} else {
|
||||
$birthday = \DateTime::createFromFormat('d/m/Y', $birthday);
|
||||
}
|
||||
}
|
||||
|
||||
$this->birthday = $birthday;
|
||||
|
||||
return $this;
|
||||
@@ -363,7 +393,12 @@ class User extends BaseUser
|
||||
*/
|
||||
public function getBirthday()
|
||||
{
|
||||
return $this->birthday;
|
||||
if ($this->birthday == null) {
|
||||
|
||||
return $this->birthday;
|
||||
}
|
||||
|
||||
return $this->birthday->format('d/m/Y');
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -935,4 +970,102 @@ class User extends BaseUser
|
||||
{
|
||||
return $this->sendedRecommendations->removeElement($reco);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set career.
|
||||
*
|
||||
* @param json_document|null $career
|
||||
*
|
||||
* @return User
|
||||
*/
|
||||
public function setCareer($career = null)
|
||||
{
|
||||
$this->career = $career;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get career.
|
||||
*
|
||||
* @return json_document|null
|
||||
*/
|
||||
public function getCareer()
|
||||
{
|
||||
return $this->career;
|
||||
}
|
||||
|
||||
/**
|
||||
* Add sendedRecommendation.
|
||||
*
|
||||
* @param \AppBundle\Entity\Recommendation $sendedRecommendation
|
||||
*
|
||||
* @return User
|
||||
*/
|
||||
public function addSendedRecommendation(\AppBundle\Entity\Recommendation $sendedRecommendation)
|
||||
{
|
||||
$this->sendedRecommendations[] = $sendedRecommendation;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove sendedRecommendation.
|
||||
*
|
||||
* @param \AppBundle\Entity\Recommendation $sendedRecommendation
|
||||
*
|
||||
* @return boolean TRUE if this collection contained the specified element, FALSE otherwise.
|
||||
*/
|
||||
public function removeSendedRecommendation(\AppBundle\Entity\Recommendation $sendedRecommendation)
|
||||
{
|
||||
return $this->sendedRecommendations->removeElement($sendedRecommendation);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set formation.
|
||||
*
|
||||
* @param json_document|null $formation
|
||||
*
|
||||
* @return User
|
||||
*/
|
||||
public function setFormation($formation = null)
|
||||
{
|
||||
$this->formation = $formation;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get formation.
|
||||
*
|
||||
* @return json_document|null
|
||||
*/
|
||||
public function getFormation()
|
||||
{
|
||||
return $this->formation;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set language.
|
||||
*
|
||||
* @param json_document|null $language
|
||||
*
|
||||
* @return User
|
||||
*/
|
||||
public function setLanguage($language = null)
|
||||
{
|
||||
$this->language = $language;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get language.
|
||||
*
|
||||
* @return json_document|null
|
||||
*/
|
||||
public function getLanguage()
|
||||
{
|
||||
return $this->language;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,111 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* This file is part of the FOSUserBundle package.
|
||||
*
|
||||
* (c) FriendsOfSymfony <http://friendsofsymfony.github.com/>
|
||||
*
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace AppBundle\Form;
|
||||
|
||||
use AppBundle\Entity\User;
|
||||
use Symfony\Component\Form\AbstractType;
|
||||
use Symfony\Component\Form\Extension\Core\Type\CountryType;
|
||||
use Symfony\Component\Form\Extension\Core\Type\TextType;
|
||||
use Symfony\Component\Form\Extension\Core\Type\TextareaType;
|
||||
use Symfony\Component\Form\Extension\Core\Type\UrlType;
|
||||
use Symfony\Component\Form\FormBuilderInterface;
|
||||
use Symfony\Component\OptionsResolver\OptionsResolver;
|
||||
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
|
||||
use Symfony\Component\Form\Extension\Core\Type\CheckboxType;
|
||||
|
||||
class CareerType extends AbstractType
|
||||
{
|
||||
public function buildForm(FormBuilderInterface $builder, array $options)
|
||||
{
|
||||
$builder
|
||||
->add('companyCareer', TextType::class, array(
|
||||
'label' => 'talent.profile.career.company.label',
|
||||
))
|
||||
->add('jobCareer', TextType::class, array(
|
||||
'label' => 'talent.profile.career.job.label',
|
||||
))
|
||||
->add('placeCareer', TextType::class, array(
|
||||
'label' => 'talent.profile.career.place.label',
|
||||
))
|
||||
->add('beginMonthCareer', ChoiceType::class, array(
|
||||
'label' => 'talent.profile.career.begin.label',
|
||||
'choices' => $this->getMonths(),
|
||||
'placeholder' => 'Mois'
|
||||
))
|
||||
->add('beginYearCareer', ChoiceType::class, array(
|
||||
'label' => 'talent.profile.career.begin.label',
|
||||
'choices' => $this->getYears(1960),
|
||||
'placeholder' => 'Année',
|
||||
'attr' => array(
|
||||
'class' => 'beginYearCareer'
|
||||
)
|
||||
))
|
||||
->add('endMonthCareer', ChoiceType::class, array(
|
||||
'label' => 'talent.profile.career.end.label',
|
||||
'choices' => $this->getMonths(),
|
||||
'required' => false,
|
||||
'placeholder' => 'Mois'
|
||||
))
|
||||
->add('endYearCareer', ChoiceType::class, array(
|
||||
'label' => 'talent.profile.career.end.label',
|
||||
'choices' => $this->getYears(1960),
|
||||
'required' => false,
|
||||
'placeholder' => 'Année',
|
||||
'attr' => array(
|
||||
'class' => 'endYearCareer'
|
||||
)
|
||||
))
|
||||
->add('actualJobCareer', CheckboxType::class, array(
|
||||
'label' => 'talent.profile.career.actualJob.label',
|
||||
'required' => false
|
||||
))
|
||||
->add('descriptionCareer', TextareaType::class, array(
|
||||
'label' => 'profile.company.description',
|
||||
'required' => false,
|
||||
'attr' => array(
|
||||
'class' => 'materialize-textarea'
|
||||
)
|
||||
))
|
||||
->add('tagsComma', TextType::class, array(
|
||||
'label' => 'talent.profile.career.skills.label',
|
||||
'required' => false,
|
||||
'attr' => array(
|
||||
'data-role'=>"materialtags"
|
||||
)
|
||||
));
|
||||
}
|
||||
|
||||
private function getYears($min, $max='current')
|
||||
{
|
||||
$years = range($min, ($max === 'current' ? date('Y') : $max));
|
||||
$resultYears = array_combine($years, $years);
|
||||
arsort($resultYears);
|
||||
|
||||
return $resultYears;
|
||||
}
|
||||
|
||||
private function getMonths()
|
||||
{
|
||||
$months = array();
|
||||
for ($m=1; $m<=12; $m++) {
|
||||
$month = strftime('%B', mktime(0,0,0,$m, 1, date('Y')));
|
||||
$months[$month] = $m;
|
||||
}
|
||||
|
||||
return $months;
|
||||
}
|
||||
|
||||
public function getName()
|
||||
{
|
||||
return 'career';
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,65 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* This file is part of the FOSUserBundle package.
|
||||
*
|
||||
* (c) FriendsOfSymfony <http://friendsofsymfony.github.com/>
|
||||
*
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace AppBundle\Form;
|
||||
|
||||
use AppBundle\Entity\User;
|
||||
use Symfony\Component\Form\AbstractType;
|
||||
use Symfony\Component\Form\FormBuilderInterface;
|
||||
|
||||
use Symfony\Component\Form\Extension\Core\Type\CollectionType;
|
||||
use Symfony\Component\Form\FormEvents;
|
||||
use Symfony\Component\Form\FormEvent;
|
||||
|
||||
use Symfony\Component\Form\FormInterface;
|
||||
use Symfony\Component\Form\FormView;
|
||||
|
||||
class CareersType extends AbstractType
|
||||
{
|
||||
public function buildForm(FormBuilderInterface $builder, array $options)
|
||||
{
|
||||
$builder->add('career', CollectionType::class, array(
|
||||
'entry_type'=> CareerType::class,
|
||||
'prototype'=>true,
|
||||
'allow_add'=>true,
|
||||
'allow_delete'=>true
|
||||
));
|
||||
|
||||
$builder->addEventListener(FormEvents::PRE_SUBMIT, function (FormEvent $event) {
|
||||
|
||||
$submittedData = $event->getData();
|
||||
if (empty($submittedData['career'])) {
|
||||
return;
|
||||
}
|
||||
|
||||
usort($submittedData['career'], "static::sortByBeginYearCareer");
|
||||
|
||||
$event->setData($submittedData);
|
||||
});
|
||||
}
|
||||
|
||||
private static function sortByBeginYearCareer($x, $y) {
|
||||
|
||||
return strcasecmp($y['beginYearCareer'], $x['beginYearCareer']);
|
||||
}
|
||||
|
||||
|
||||
public function getName()
|
||||
{
|
||||
return 'careers';
|
||||
}
|
||||
|
||||
public function setDefaultOptions(OptionsResolverInterface $resolver) {
|
||||
$resolver->setDefaults(array(
|
||||
'restore_input_order' => false,
|
||||
));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,84 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* This file is part of the FOSUserBundle package.
|
||||
*
|
||||
* (c) FriendsOfSymfony <http://friendsofsymfony.github.com/>
|
||||
*
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace AppBundle\Form;
|
||||
|
||||
use AppBundle\Entity\User;
|
||||
use Symfony\Component\Form\AbstractType;
|
||||
use Symfony\Component\Form\Extension\Core\Type\CountryType;
|
||||
use Symfony\Component\Form\Extension\Core\Type\TextType;
|
||||
use Symfony\Component\Form\Extension\Core\Type\TextareaType;
|
||||
use Symfony\Component\Form\Extension\Core\Type\UrlType;
|
||||
use Symfony\Component\Form\FormBuilderInterface;
|
||||
use Symfony\Component\OptionsResolver\OptionsResolver;
|
||||
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
|
||||
use Symfony\Component\Form\Extension\Core\Type\CheckboxType;
|
||||
|
||||
class FormationType extends AbstractType
|
||||
{
|
||||
public function buildForm(FormBuilderInterface $builder, array $options)
|
||||
{
|
||||
$builder
|
||||
->add('nameFormation', TextType::class, array(
|
||||
'label' => 'talent.profile.formation.name.label',
|
||||
'required' => true
|
||||
))
|
||||
->add('schoolFormation', TextType::class, array(
|
||||
'label' => 'talent.profile.formation.school.label',
|
||||
'required' => true
|
||||
))
|
||||
->add('beginYearFormation', ChoiceType::class, array(
|
||||
'label' => 'talent.profile.formation.begin.label',
|
||||
'choices' => $this->getYears(1960),
|
||||
'placeholder' => 'Année',
|
||||
'attr' => array(
|
||||
'class' => 'beginYearFormation'
|
||||
)
|
||||
))
|
||||
->add('actualFormation', CheckboxType::class, array(
|
||||
'label' => 'talent.profile.formation.actual.label',
|
||||
'required' => false,
|
||||
))
|
||||
->add('descriptionFormation', TextareaType::class, array(
|
||||
'label' => 'profile.company.description',
|
||||
'required' => false,
|
||||
'attr' => array(
|
||||
'class' => 'materialize-textarea'
|
||||
)
|
||||
));
|
||||
}
|
||||
|
||||
private function getYears($min, $max='current')
|
||||
{
|
||||
$years = range($min, ($max === 'current' ? date('Y') : $max));
|
||||
$resultYears = array_combine($years, $years);
|
||||
arsort($resultYears);
|
||||
|
||||
return $resultYears;
|
||||
}
|
||||
|
||||
private function getMonths()
|
||||
{
|
||||
setlocale(LC_TIME, "fr_FR");
|
||||
$months = array();
|
||||
for ($m=1; $m<=12; $m++) {
|
||||
$month = utf8_encode(strftime('%B', mktime(0,0,0,$m, 1, date('Y'))));
|
||||
$months[] = $month;
|
||||
}
|
||||
|
||||
return array_combine($months, $months);
|
||||
}
|
||||
|
||||
public function getName()
|
||||
{
|
||||
return 'formation';
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,52 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* This file is part of the FOSUserBundle package.
|
||||
*
|
||||
* (c) FriendsOfSymfony <http://friendsofsymfony.github.com/>
|
||||
*
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace AppBundle\Form;
|
||||
|
||||
use AppBundle\Entity\User;
|
||||
use Symfony\Component\Form\AbstractType;
|
||||
use Symfony\Component\Form\FormBuilderInterface;
|
||||
|
||||
use Symfony\Component\Form\Extension\Core\Type\CollectionType;
|
||||
use Symfony\Component\Form\FormEvents;
|
||||
use Symfony\Component\Form\FormEvent;
|
||||
|
||||
class FormationsType extends AbstractType
|
||||
{
|
||||
public function buildForm(FormBuilderInterface $builder, array $options)
|
||||
{
|
||||
$builder->add('formation', CollectionType::class, array(
|
||||
'entry_type'=> FormationType::class,
|
||||
'prototype'=>true,
|
||||
'allow_add'=>true,
|
||||
'allow_delete'=>true
|
||||
));
|
||||
|
||||
$builder->addEventListener(FormEvents::PRE_SUBMIT, function (FormEvent $event) {
|
||||
$submittedData = $event->getData();
|
||||
if (!array_key_exists('formation', $submittedData)) {
|
||||
return;
|
||||
}
|
||||
usort($submittedData['formation'], "static::sortByBeginYearFormation");
|
||||
$event->setData($submittedData);
|
||||
});
|
||||
}
|
||||
|
||||
private static function sortByBeginYearFormation($x, $y) {
|
||||
|
||||
return strcasecmp($y['beginYearFormation'], $x['beginYearFormation']);
|
||||
}
|
||||
|
||||
public function getName()
|
||||
{
|
||||
return 'formations';
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,56 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* This file is part of the FOSUserBundle package.
|
||||
*
|
||||
* (c) FriendsOfSymfony <http://friendsofsymfony.github.com/>
|
||||
*
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace AppBundle\Form;
|
||||
|
||||
use AppBundle\Entity\User;
|
||||
use Symfony\Component\Form\AbstractType;
|
||||
use Symfony\Component\Form\Extension\Core\Type\CountryType;
|
||||
use Symfony\Component\Form\Extension\Core\Type\TextType;
|
||||
use Symfony\Component\Form\Extension\Core\Type\UrlType;
|
||||
use Symfony\Component\Form\FormBuilderInterface;
|
||||
use Symfony\Component\OptionsResolver\OptionsResolver;
|
||||
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
|
||||
use Symfony\Component\Form\Extension\Core\Type\CheckboxType;
|
||||
|
||||
class LanguageType extends AbstractType
|
||||
{
|
||||
public function buildForm(FormBuilderInterface $builder, array $options)
|
||||
{
|
||||
$builder
|
||||
->add('nameLanguage', TextType::class, array(
|
||||
'label' => 'talent.profile.language.name.label',
|
||||
))
|
||||
->add('skillLanguage', ChoiceType::class, array(
|
||||
'label' => 'talent.profile.language.skill.label',
|
||||
'choices' => $this->getSkills(),
|
||||
'placeholder' => 'Niveau',
|
||||
'required' => true
|
||||
));
|
||||
}
|
||||
|
||||
private function getSkills()
|
||||
{
|
||||
$skills = array(
|
||||
'talent.profile.language.skill.1.label' => 'talent.profile.language.skill.1.label',
|
||||
'talent.profile.language.skill.2.label' =>'talent.profile.language.skill.2.label',
|
||||
'talent.profile.language.skill.3.label' => 'talent.profile.language.skill.3.label',
|
||||
'talent.profile.language.skill.4.label' => 'talent.profile.language.skill.4.label',
|
||||
);
|
||||
|
||||
return $skills;
|
||||
}
|
||||
|
||||
public function getName()
|
||||
{
|
||||
return 'language';
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,37 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* This file is part of the FOSUserBundle package.
|
||||
*
|
||||
* (c) FriendsOfSymfony <http://friendsofsymfony.github.com/>
|
||||
*
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace AppBundle\Form;
|
||||
|
||||
use AppBundle\Entity\User;
|
||||
use Symfony\Component\Form\AbstractType;
|
||||
use Symfony\Component\Form\FormBuilderInterface;
|
||||
|
||||
use Symfony\Component\Form\Extension\Core\Type\CollectionType;
|
||||
|
||||
class LanguagesType extends AbstractType
|
||||
{
|
||||
public function buildForm(FormBuilderInterface $builder, array $options)
|
||||
{
|
||||
$builder->add('language', CollectionType::class, array(
|
||||
'entry_type'=> LanguageType::class,
|
||||
'prototype'=>true,
|
||||
'allow_add'=>true,
|
||||
'allow_delete'=>true
|
||||
));
|
||||
}
|
||||
|
||||
|
||||
public function getName()
|
||||
{
|
||||
return 'languages';
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,53 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* This file is part of the FOSUserBundle package.
|
||||
*
|
||||
* (c) FriendsOfSymfony <http://friendsofsymfony.github.com/>
|
||||
*
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace AppBundle\Form;
|
||||
|
||||
use AppBundle\Entity\Company;
|
||||
use Symfony\Component\Form\AbstractType;
|
||||
use Symfony\Component\Form\FormBuilderInterface;
|
||||
|
||||
use Symfony\Component\Form\Extension\Core\Type\TextType;
|
||||
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
|
||||
use Symfony\Component\Form\Extension\Core\Type\CountryType;
|
||||
use Symfony\Component\OptionsResolver\OptionsResolver;
|
||||
|
||||
class TalentProfileAddressType extends AbstractType
|
||||
{
|
||||
public function buildForm(FormBuilderInterface $builder, array $options)
|
||||
{
|
||||
$builder
|
||||
->add('address', TextType::class, array(
|
||||
'label' => 'Adresse',
|
||||
))
|
||||
->add('addressComp', TextType::class, array(
|
||||
'label' => 'Complément Adresse',
|
||||
'required' => false
|
||||
))
|
||||
->add('zipcode', TextType::class, array(
|
||||
'label' => 'Code postal',
|
||||
))
|
||||
->add('city', TextType::class, array(
|
||||
'label' => 'Ville',
|
||||
))
|
||||
->add('country', CountryType::class, array(
|
||||
'label' => 'Pays',
|
||||
));
|
||||
}
|
||||
|
||||
public function configureOptions(OptionsResolver $resolver)
|
||||
{
|
||||
|
||||
$resolver->setDefaults(array(
|
||||
'data_class' => Company::class,
|
||||
));
|
||||
}
|
||||
}
|
||||
@@ -14,23 +14,23 @@ namespace AppBundle\Form;
|
||||
use AppBundle\Entity\User;
|
||||
use Symfony\Component\Form\AbstractType;
|
||||
use Symfony\Component\Form\FormBuilderInterface;
|
||||
|
||||
use AppBundle\Form\TalentProfileAddressType;
|
||||
|
||||
use Symfony\Component\Form\Extension\Core\Type\TextType;
|
||||
use Symfony\Component\Form\Extension\Core\Type\DateType;
|
||||
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
|
||||
use Symfony\Component\Form\Extension\Core\Type\CountryType;
|
||||
use Symfony\Component\OptionsResolver\OptionsResolver;
|
||||
|
||||
use Symfony\Component\Form\Extension\Core\Type\CollectionType;
|
||||
|
||||
class TalentProfileType extends AbstractType
|
||||
{
|
||||
public function buildForm(FormBuilderInterface $builder, array $options)
|
||||
{
|
||||
$user = $options['data'];
|
||||
$user->getCompany()->init();
|
||||
$birthday = $options['data']->getBirthday();
|
||||
if(!empty($birthday)){
|
||||
$options['data']->setBirthday($birthday->format('d/m/Y'));
|
||||
}
|
||||
|
||||
$builder
|
||||
->add('firstname', null, array(
|
||||
'label' => 'Prénom',
|
||||
@@ -57,15 +57,13 @@ class TalentProfileType extends AbstractType
|
||||
),
|
||||
'label' => 'Sexe'
|
||||
));
|
||||
|
||||
$builder
|
||||
->add('company',TalentType::class, array(
|
||||
'label'=>false
|
||||
));
|
||||
|
||||
$builder->add('company', TalentProfileAddressType::class);
|
||||
}
|
||||
|
||||
public function configureOptions(OptionsResolver $resolver)
|
||||
{
|
||||
|
||||
$resolver->setDefaults(array(
|
||||
'data_class' => User::class,
|
||||
));
|
||||
|
||||
@@ -13,8 +13,10 @@ namespace AppBundle\Form;
|
||||
|
||||
use AppBundle\Entity\Company;
|
||||
use Symfony\Component\Form\AbstractType;
|
||||
use Symfony\Component\Form\Extension\Core\Type\CountryType;
|
||||
|
||||
use Symfony\Component\Form\Extension\Core\Type\TextType;
|
||||
use Symfony\Component\Form\Extension\Core\Type\TextareaType;
|
||||
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
|
||||
use Symfony\Component\Form\Extension\Core\Type\UrlType;
|
||||
use Symfony\Component\Form\FormBuilderInterface;
|
||||
use Symfony\Component\OptionsResolver\OptionsResolver;
|
||||
@@ -23,30 +25,27 @@ class TalentType extends AbstractType
|
||||
{
|
||||
public function buildForm(FormBuilderInterface $builder, array $options)
|
||||
{
|
||||
|
||||
$builder
|
||||
->add('address', TextType::class, array(
|
||||
'label' => 'Adresse',
|
||||
->add('titleTalent', TextType::class, array(
|
||||
'label' => 'talent.profile.title.label',
|
||||
))
|
||||
->add('addressComp', TextType::class, array(
|
||||
'label' => 'Complément Adresse',
|
||||
'required' => false
|
||||
->add('situationTalent', ChoiceType::class, array(
|
||||
'label' => 'talent.profile.situation.label',
|
||||
'choices' => $this->getSituations()
|
||||
))
|
||||
->add('zipcode', TextType::class, array(
|
||||
'label' => 'Code postal',
|
||||
))
|
||||
->add('city', TextType::class, array(
|
||||
'label' => 'Ville',
|
||||
))
|
||||
->add('country', CountryType::class, array(
|
||||
'label' => 'Pays',
|
||||
));
|
||||
$builder
|
||||
->add('tagsComma', TextType::class, array(
|
||||
'label' => 'profile.company.tags',
|
||||
'label' => 'profile.talent.tags',
|
||||
'attr' => array(
|
||||
'data-role'=>"materialtags"
|
||||
)
|
||||
))
|
||||
->add('descriptionTalent', TextareaType::class, array(
|
||||
'label' => 'talent.profile.description.label',
|
||||
'required' => false,
|
||||
'attr' => array(
|
||||
'class' => 'materialize-textarea',
|
||||
'placeholder' => '...'
|
||||
)
|
||||
));
|
||||
$builder
|
||||
->add('website', UrlType::class, array('label' => 'Site internet',
|
||||
@@ -75,4 +74,14 @@ class TalentType extends AbstractType
|
||||
'data_class' => Company::class,
|
||||
));
|
||||
}
|
||||
|
||||
public function getSituations(){
|
||||
$situations = array(
|
||||
'talent.profile.situation.1.label' => 'talent.profile.situation.1.label',
|
||||
'talent.profile.situation.2.label' =>'talent.profile.situation.2.label',
|
||||
'talent.profile.situation.3.label' => 'talent.profile.situation.3.label'
|
||||
);
|
||||
|
||||
return $situations;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -148,7 +148,7 @@ class FOSUBUserProvider extends BaseFOSUBProvider
|
||||
} else {
|
||||
$userPhoto = 'https://graph.facebook.com/'.$data['id'].'/picture?height=200';
|
||||
if(isset($data['birthday'])){
|
||||
$birthday = \DateTime::createFromFormat ('m/d/Y', $data['birthday']);
|
||||
$birthday = $data['birthday'];
|
||||
} else {
|
||||
$birthday = null;
|
||||
}
|
||||
|
||||
@@ -25,12 +25,38 @@ class AdSearcher
|
||||
{
|
||||
if ($param == 'lite') {
|
||||
$ads = $this->searchLite($data);
|
||||
} elseif ($param == 'tag') {
|
||||
$ads = $this->searchTag($data);
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
return $ads;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $data
|
||||
* @return mixed
|
||||
*
|
||||
* ElasticSearch query for ad search
|
||||
*/
|
||||
public function searchTag($data)
|
||||
{
|
||||
$query = new \Elastica\Query();
|
||||
$boolQuery = new \Elastica\Query\BoolQuery();
|
||||
$fieldQuery = new \Elastica\Query\MultiMatch();
|
||||
if(isset($data['tag'])){
|
||||
$fieldQuery->setQuery($data['tag']);
|
||||
$fieldQuery->setFields(['publicTag']);
|
||||
//$fieldQuery->setFieldQuery('publicTag', $data['tag']);
|
||||
$boolQuery->addMust($fieldQuery);
|
||||
}
|
||||
$query->setQuery($boolQuery);
|
||||
$result = $this->finder->find($query);
|
||||
$ads = $this->filterStatus($result);
|
||||
|
||||
return $ads;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $data
|
||||
* @return mixed
|
||||
|
||||
@@ -72,7 +72,6 @@ class CompanyManager
|
||||
$talent = $user->getCompany();
|
||||
$alias = $this->slugService->slugify($user->getId() . "-" . $user->getFirstname() . "-" . $user->getLastname());
|
||||
$talent->setAlias($alias);
|
||||
|
||||
if ($talent->getAddress() != null) {
|
||||
$billing = array(
|
||||
'address1' => $talent->getAddress(),
|
||||
@@ -83,16 +82,20 @@ class CompanyManager
|
||||
);
|
||||
$addrs['billing'] = $billing;
|
||||
$talent->setAddresses($addrs);
|
||||
$publicTags = explode(',', $talent->getTagsComma());
|
||||
$talent->setPublicTag($publicTags);
|
||||
$extra = array(
|
||||
'linkedin' => $talent->getLinkedin(),
|
||||
'twitter' => $talent->getTwitter(),
|
||||
);
|
||||
$talent->setExtra($extra);
|
||||
}
|
||||
$publicTags = explode(',', $talent->getTagsComma());
|
||||
$talent->setPublicTag($publicTags);
|
||||
$extra = array(
|
||||
'linkedin' => $talent->getLinkedin(),
|
||||
'twitter' => $talent->getTwitter(),
|
||||
'titleTalent' => $talent->getTitleTalent(),
|
||||
'situationTalent' => $talent->getSituationTalent(),
|
||||
'descriptionTalent' => $talent->getDescriptionTalent(),
|
||||
);
|
||||
$talent->setExtra($extra);
|
||||
|
||||
$this->em->persist($talent);
|
||||
$this->em->persist($user);
|
||||
$this->em->flush();
|
||||
}
|
||||
|
||||
|
||||
@@ -84,20 +84,34 @@ class MediaManager
|
||||
*/
|
||||
public function delete($entity)
|
||||
{
|
||||
$video = $entity;
|
||||
if (unlink($this->mediaVideoDir . $video->getOriginalUrl())) {
|
||||
if ($this->env != "dev") {
|
||||
if ($this->env != "dev") {
|
||||
$video = $entity;
|
||||
if (unlink($this->mediaVideoDir . $video->getOriginalUrl())) {
|
||||
$response = $this->vimeo->request($video->getCdnUrl(), [], 'DELETE');
|
||||
}
|
||||
$this->em->remove($video);
|
||||
$this->em->flush();
|
||||
|
||||
$this->em->remove($video);
|
||||
$this->em->flush();
|
||||
|
||||
return array('success' => "true");
|
||||
return array('success' => "true");
|
||||
} else {
|
||||
return array('success' => "false");
|
||||
}
|
||||
} else {
|
||||
return array('success' => "false");
|
||||
return array('success' => "true");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $entity
|
||||
* @return array
|
||||
*/
|
||||
public function changeThumbnail($duration, $id)
|
||||
{
|
||||
$response = $this->vimeo->request('/videos/'.$id.'/pictures', array('active' => true, 'time' => $duration), 'POST');
|
||||
|
||||
return array('success' => $response);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $entity
|
||||
* @return array
|
||||
|
||||
@@ -22,6 +22,11 @@ trait ExtraJsonTrait
|
||||
private $size;
|
||||
private $siren;
|
||||
|
||||
private $titleTalent;
|
||||
private $situationTalent;
|
||||
private $descriptionTalent;
|
||||
|
||||
|
||||
/***********************
|
||||
* Custom Functions
|
||||
***********************/
|
||||
@@ -34,6 +39,9 @@ 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['titleTalent']) ? $this->titleTalent = $extra['titleTalent'] : null;
|
||||
isset($extra['situationTalent']) ? $this->situationTalent = $extra['situationTalent'] : null;
|
||||
isset($extra['descriptionTalent']) ? $this->descriptionTalent = $extra['descriptionTalent'] : null;
|
||||
}
|
||||
|
||||
/***********************
|
||||
@@ -105,4 +113,40 @@ trait ExtraJsonTrait
|
||||
return $this->siren;
|
||||
}
|
||||
|
||||
public function setTitleTalent($titleTalent)
|
||||
{
|
||||
$this->titleTalent = $titleTalent;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function getTitleTalent()
|
||||
{
|
||||
return $this->titleTalent;
|
||||
}
|
||||
|
||||
public function setSituationTalent($situationTalent)
|
||||
{
|
||||
$this->situationTalent = $situationTalent;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function getSituationTalent()
|
||||
{
|
||||
return $this->situationTalent;
|
||||
}
|
||||
|
||||
|
||||
public function setDescriptionTalent($descriptionTalent)
|
||||
{
|
||||
$this->descriptionTalent = $descriptionTalent;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function getDescriptionTalent()
|
||||
{
|
||||
return $this->descriptionTalent;
|
||||
}
|
||||
}
|
||||
@@ -1,12 +1,9 @@
|
||||
<?php
|
||||
namespace Tests\AppBundle;
|
||||
|
||||
use Doctrine\Common\Persistence\ObjectManager;
|
||||
use Doctrine\Common\Persistence\ObjectRepository;
|
||||
use AppBundle\Entity\Ad;
|
||||
use Symfony\Bundle\FrameworkBundle\TestCase;
|
||||
use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;
|
||||
|
||||
class AdControllerTest extends TestCase
|
||||
class AdControllerTest extends WebTestCase
|
||||
{
|
||||
/**
|
||||
* @var EntityManager
|
||||
@@ -16,7 +13,7 @@ class AdControllerTest extends TestCase
|
||||
public function testAdShowAction()
|
||||
{
|
||||
|
||||
$ad = new Ad();
|
||||
/*$ad = new Ad();
|
||||
$ad->setReference('test');
|
||||
$adRepository = $this->createMock(ObjectRepository::class);
|
||||
|
||||
@@ -28,7 +25,7 @@ class AdControllerTest extends TestCase
|
||||
$objectManager->expects($this->any())
|
||||
->method('getRepository')
|
||||
->willReturn($adRepository);
|
||||
|
||||
*/
|
||||
$client = static::createClient();
|
||||
|
||||
$crawler = $client->request('GET', '/annonce/32-chef-de-projet-industriel-h-f');
|
||||
|
||||
@@ -0,0 +1,45 @@
|
||||
<?php
|
||||
|
||||
namespace Tests\AppBundle\Form;
|
||||
|
||||
use AppBundle\Form\Type\CareersType;
|
||||
use AppBundle\Entity\User;
|
||||
use Symfony\Component\Form\Test\TypeTestCase;
|
||||
|
||||
class CareersTypeTest extends TypeTestCase
|
||||
{
|
||||
public function testSubmitValidData()
|
||||
{
|
||||
$formData = array(
|
||||
'companyCareer' => 'UnitTest',
|
||||
'jobCareer' => 'UnitTest',
|
||||
"placeCareer" => "UnitTest",
|
||||
"beginMonthCareer" => "avril",
|
||||
"beginYearCareer" => 2018,
|
||||
"endMonthCareer" => "juillet",
|
||||
"endYearCareer" => 2014,
|
||||
"actualJobCareer" => true,
|
||||
"descriptionCareer" => "Ouais c'etait pas super passionnant",
|
||||
"tagsComma" => "UnitTest"
|
||||
);
|
||||
|
||||
$objectToCompare = new User();
|
||||
// $objectToCompare will retrieve data from the form submission; pass it as the second argument
|
||||
$form = $this->factory->create(CareersType::class, $objectToCompare);
|
||||
|
||||
$object = new User();
|
||||
$form->submit($formData);
|
||||
|
||||
$this->assertTrue($form->isSynchronized());
|
||||
|
||||
// check that $objectToCompare was modified as expected when the form was submitted
|
||||
$this->assertEquals($object, $objectToCompare);
|
||||
|
||||
$view = $form->createView();
|
||||
$children = $view->children;
|
||||
|
||||
foreach (array_keys($formData) as $key) {
|
||||
$this->assertArrayHasKey($key, $children);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -154,7 +154,12 @@ $(document).ready(function () {
|
||||
}
|
||||
);
|
||||
|
||||
$('select').material_select();
|
||||
$('.btn-create-account').on('click',function(){
|
||||
$('#modal_login').modal('open');
|
||||
$('.change_to_register').click();
|
||||
});
|
||||
|
||||
//$('select').material_select();
|
||||
|
||||
/*menu responsive*/
|
||||
$(".button-collapse").sideNav();
|
||||
@@ -189,7 +194,7 @@ $(document).ready(function () {
|
||||
margin: marginValue,
|
||||
// stagePadding: paddingValue,
|
||||
nav: true,
|
||||
loop: true,
|
||||
loop: $('.territory-carousel > .item').length <= 2 ? false : true,
|
||||
center:true,
|
||||
navText: ['<span class="left-arrow"></span>', '<span class="right-arrow"></span>']
|
||||
});
|
||||
|
||||
@@ -2808,6 +2808,16 @@
|
||||
.hover-none a:hover {
|
||||
color: #ffffff; }
|
||||
|
||||
.chip a {
|
||||
color: rgba(0, 0, 0, 0.6); }
|
||||
|
||||
#liste-jobs .card .card-action .chip a {
|
||||
color: rgba(0, 0, 0, 0.6);
|
||||
text-transform: initial;
|
||||
text-decoration: none;
|
||||
text-align: center;
|
||||
margin: 0; }
|
||||
|
||||
.color-white {
|
||||
color: #FFFFFF; }
|
||||
|
||||
|
||||
@@ -13167,6 +13167,16 @@ coloring of icons.
|
||||
.hover-none a:hover {
|
||||
color: #ffffff; }
|
||||
|
||||
.chip a {
|
||||
color: rgba(0, 0, 0, 0.6); }
|
||||
|
||||
#liste-jobs .card .card-action .chip a {
|
||||
color: rgba(0, 0, 0, 0.6);
|
||||
text-transform: initial;
|
||||
text-decoration: none;
|
||||
text-align: center;
|
||||
margin: 0; }
|
||||
|
||||
.color-white {
|
||||
color: #FFFFFF; }
|
||||
|
||||
@@ -13447,6 +13457,29 @@ a.link-white-underline {
|
||||
.modal-content .btn {
|
||||
box-shadow: none; }
|
||||
|
||||
#dashboard .modal-fixed-header .modal-header {
|
||||
position: fixed;
|
||||
z-index: 100;
|
||||
top: 0;
|
||||
left: 0;
|
||||
height: auto;
|
||||
width: 100%;
|
||||
padding: 20px;
|
||||
border-bottom: 1px solid #E0E0E0; }
|
||||
#dashboard .modal-fixed-header .modal-header h3 {
|
||||
font-size: 20px;
|
||||
font-family: "Raleway", sans-serif;
|
||||
font-weight: 300;
|
||||
margin: 0;
|
||||
float: left; }
|
||||
#dashboard .modal-fixed-header .modal-header a.modal-close {
|
||||
cursor: pointer; }
|
||||
#dashboard .modal-fixed-header .modal-content {
|
||||
padding-top: 100px; }
|
||||
|
||||
.modal-fixed-header .modal-footer {
|
||||
height: 68px; }
|
||||
|
||||
#modal-recommendation span {
|
||||
font-size: 22px; }
|
||||
|
||||
@@ -14612,7 +14645,6 @@ a.link-white-underline {
|
||||
#liste-talents .owl-carousel .item {
|
||||
text-align: center; }
|
||||
#liste-talents .owl-carousel .item .item-list-name {
|
||||
border-bottom: 1px solid #333A40;
|
||||
padding: 15px 0;
|
||||
margin-bottom: 15px; }
|
||||
#liste-talents .owl-carousel .item .item-list-name a {
|
||||
@@ -14720,6 +14752,8 @@ a.link-white-underline {
|
||||
margin-bottom: 10px; }
|
||||
#sidebar .profil p.profil-name {
|
||||
font-weight: bold; }
|
||||
#sidebar .profil p.profil-name a {
|
||||
text-decoration: none; }
|
||||
#sidebar .profil p.profil-job {
|
||||
font-weight: bold;
|
||||
color: #1689fb; }
|
||||
@@ -14751,23 +14785,6 @@ a.link-white-underline {
|
||||
.square-letters {
|
||||
border-radius: 0%; }
|
||||
|
||||
.profil-links {
|
||||
margin: 20px 0;
|
||||
display: flex;
|
||||
justify-content: space-around; }
|
||||
.profil-links a i {
|
||||
background: #FFF;
|
||||
color: #AAAAAA;
|
||||
border-radius: 50%;
|
||||
-webkit-transition: all 0.5s;
|
||||
-moz-transition: all 0.5s;
|
||||
transition: all 0.5s; }
|
||||
.profil-links a i:hover {
|
||||
color: #155ee4;
|
||||
-webkit-transition: all 0.5s;
|
||||
-moz-transition: all 0.5s;
|
||||
transition: all 0.5s; }
|
||||
|
||||
.profil-picture {
|
||||
margin-bottom: 10px; }
|
||||
.profil-picture .responsive-img {
|
||||
@@ -14960,16 +14977,59 @@ textarea.materialize-textarea:focus:not([readonly]) {
|
||||
box-shadow: 0 1px 0 0 #1689fb;
|
||||
outline: none; }
|
||||
|
||||
form[name=talent_profile] div.col label.error {
|
||||
#form_profile_edit .professional-info .col > div, #form_profile_edit .personal-info .col > div, #form_profile_edit2 .professional-info .col > div, #form_profile_edit2 .personal-info .col > div {
|
||||
position: relative; }
|
||||
|
||||
#form_profile_edit label.error, #form_profile_edit2 label.error, #form_profile_career label.error, #form_profile_formation label.error, #form_profile_language label.error {
|
||||
color: red;
|
||||
position: absolute;
|
||||
top: 20px;
|
||||
font-size: 10px;
|
||||
left: 0; }
|
||||
form[name=talent_profile] div.col label.error.active {
|
||||
#form_profile_edit label.error.active, #form_profile_edit2 label.error.active, #form_profile_career label.error.active, #form_profile_formation label.error.active, #form_profile_language label.error.active {
|
||||
color: red; }
|
||||
#form_profile_edit .modal-career label.error, #form_profile_edit .modal-formation label.error, #form_profile_edit .modal-language label.error, #form_profile_edit2 .modal-career label.error, #form_profile_edit2 .modal-formation label.error, #form_profile_edit2 .modal-language label.error, #form_profile_career .modal-career label.error, #form_profile_career .modal-formation label.error, #form_profile_career .modal-language label.error, #form_profile_formation .modal-career label.error, #form_profile_formation .modal-formation label.error, #form_profile_formation .modal-language label.error, #form_profile_language .modal-career label.error, #form_profile_language .modal-formation label.error, #form_profile_language .modal-language label.error {
|
||||
color: red;
|
||||
font-size: 10px;
|
||||
left: 24px;
|
||||
top: unset; }
|
||||
#form_profile_edit select, #form_profile_edit2 select, #form_profile_career select, #form_profile_formation select, #form_profile_language select {
|
||||
display: block; }
|
||||
|
||||
form[name=talent_profile] .bg-bordered .col div {
|
||||
position: relative; }
|
||||
.select-wrapper label.invalid {
|
||||
margin-top: 62px;
|
||||
margin-left: -11px;
|
||||
color: #F44336; }
|
||||
|
||||
#form_profile_edit label, #form_profile_edit2 label, #form_profile_career label, #form_profile_formation label, #form_profile_language label {
|
||||
font-family: "Raleway", sans-serif;
|
||||
font-size: 14px;
|
||||
font-weight: 600;
|
||||
color: #000; }
|
||||
#form_profile_edit input[type=text], #form_profile_edit textarea, #form_profile_edit2 input[type=text], #form_profile_edit2 textarea, #form_profile_career input[type=text], #form_profile_career textarea, #form_profile_formation input[type=text], #form_profile_formation textarea, #form_profile_language input[type=text], #form_profile_language textarea {
|
||||
color: #999CA2;
|
||||
font-family: "Raleway", sans-serif;
|
||||
font-weight: 300; }
|
||||
#form_profile_edit .small, #form_profile_edit2 .small, #form_profile_career .small, #form_profile_formation .small, #form_profile_language .small {
|
||||
font-size: 14px;
|
||||
color: #1E2327; }
|
||||
#form_profile_edit .xsmall, #form_profile_edit2 .xsmall, #form_profile_career .xsmall, #form_profile_formation .xsmall, #form_profile_language .xsmall {
|
||||
font-size: 10px;
|
||||
color: #1E2327; }
|
||||
#form_profile_edit h5, #form_profile_edit2 h5, #form_profile_career h5, #form_profile_formation h5, #form_profile_language h5 {
|
||||
font-family: "Raleway", sans-serif;
|
||||
font-size: 14px;
|
||||
font-weight: 600;
|
||||
text-transform: inherit; }
|
||||
#form_profile_edit .undertitle, #form_profile_edit2 .undertitle, #form_profile_career .undertitle, #form_profile_formation .undertitle, #form_profile_language .undertitle {
|
||||
font-family: "Raleway", sans-serif;
|
||||
font-size: 14px;
|
||||
font-weight: 300;
|
||||
text-transform: inherit; }
|
||||
#form_profile_edit .help, #form_profile_edit2 .help, #form_profile_career .help, #form_profile_formation .help, #form_profile_language .help {
|
||||
font-family: "Raleway", sans-serif;
|
||||
font-size: 14px;
|
||||
font-weight: normal; }
|
||||
|
||||
body {
|
||||
font-size: 16px;
|
||||
@@ -15135,6 +15195,9 @@ h6 {
|
||||
.bg-white.button-plus:after {
|
||||
background: url(/img/decroche-white.png) top center no-repeat; }
|
||||
|
||||
select {
|
||||
display: block; }
|
||||
|
||||
.btn, .btn-large {
|
||||
-webkit-border-radius: 0px;
|
||||
-moz-border-radius: 0px;
|
||||
@@ -15161,6 +15224,9 @@ h6 {
|
||||
text-transform: uppercase;
|
||||
box-shadow: 0 6px 10px 0 rgba(0, 0, 0, 0.14), 0 1px 18px 0 rgba(0, 0, 0, 0.12), 0 3px 5px -1px rgba(0, 0, 0, 0.3); }
|
||||
|
||||
.btn-default.disabled {
|
||||
background: #E0E0E0; }
|
||||
|
||||
.btn-square {
|
||||
padding: 0px 8px;
|
||||
border-radius: 0;
|
||||
@@ -15329,10 +15395,6 @@ h6 {
|
||||
.btn-delete-video:hover {
|
||||
color: #FFF; }
|
||||
|
||||
.btn-video-premier {
|
||||
color: #000;
|
||||
font-weight: bold; }
|
||||
|
||||
.btn.red {
|
||||
background: #d32f2f; }
|
||||
|
||||
@@ -15524,18 +15586,102 @@ h6 {
|
||||
padding: 0 5px; }
|
||||
.row .col-card .card-video {
|
||||
margin-top: 0; }
|
||||
.row .col-card .changeThumbnail {
|
||||
background-color: #155ee4; }
|
||||
.row .col-card .preloader-wrapper {
|
||||
z-index: 1000;
|
||||
position: absolute;
|
||||
top: 10px;
|
||||
left: 30px;
|
||||
margin-left: -18px; }
|
||||
.row .col-card .preloader-wrapper .spinner-blue-only {
|
||||
border-color: #155ee4; }
|
||||
|
||||
.video_premier {
|
||||
padding: 20px; }
|
||||
.video_premier .card-content {
|
||||
padding-left: 0;
|
||||
padding-right: 0; }
|
||||
position: relative;
|
||||
display: flex; }
|
||||
.video_premier .content_col, .video_premier .video_col_edit_premier, .video_premier .video_col_link_share {
|
||||
padding: 0; }
|
||||
.video_premier .content_col {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: space-between;
|
||||
flex-wrap: wrap;
|
||||
background: #FFF; }
|
||||
.video_premier .btn-floating.halfway-fab.left.changeThumbnail {
|
||||
background-color: #155ee4;
|
||||
bottom: 10px;
|
||||
left: 16px; }
|
||||
.video_premier .preloader-wrapper {
|
||||
z-index: 1000;
|
||||
position: absolute;
|
||||
top: 10px;
|
||||
left: 30px;
|
||||
margin-left: -18px; }
|
||||
.video_premier .preloader-wrapper .spinner-blue-only {
|
||||
border-color: #155ee4; }
|
||||
.video_premier .video_col_content {
|
||||
margin-bottom: 10px; }
|
||||
.video_premier .video_col_content h3 {
|
||||
font-family: "Raleway", sans-serif;
|
||||
font-weight: 500 !important;
|
||||
text-transform: initial !important;
|
||||
font-size: 22px;
|
||||
margin-left: 40px; }
|
||||
.video_premier .video_col_actions {
|
||||
border-top: 1px solid #E0E0E0;
|
||||
display: flex;
|
||||
clear: both;
|
||||
height: 48px;
|
||||
align-items: flex-end;
|
||||
overflow: hidden; }
|
||||
.video_premier .video_col_link_share a {
|
||||
border-radius: 0;
|
||||
width: 100%;
|
||||
padding: 0;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
background: #FFF;
|
||||
color: #000;
|
||||
font-weight: 200;
|
||||
font-size: 13px; }
|
||||
.video_premier .video_col_link_share a i {
|
||||
line-height: 40px;
|
||||
margin-left: 10px; }
|
||||
.video_premier .video_col_edit_premier {
|
||||
position: relative; }
|
||||
.video_premier .btn-video-premier {
|
||||
border-radius: 0;
|
||||
width: 100%;
|
||||
padding: 0;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
font-weight: 200;
|
||||
font-size: 13px; }
|
||||
.video_premier .btn-video-premier i {
|
||||
line-height: 40px;
|
||||
margin-left: 10px; }
|
||||
.video_premier .btn-cancel-premier {
|
||||
display: none;
|
||||
margin-left: -137px;
|
||||
padding: 0 20px 0 50px; }
|
||||
border-radius: 0;
|
||||
width: 100%;
|
||||
font-size: 12px;
|
||||
height: 48px;
|
||||
line-height: 48px;
|
||||
padding: 0;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center; }
|
||||
.video_premier .btn-cancel-premier i {
|
||||
line-height: 40px;
|
||||
margin-left: 10px; }
|
||||
.video_premier .btn-cancel-premier:hover {
|
||||
color: #FFF; }
|
||||
color: #FFF;
|
||||
text-decoration: none; }
|
||||
.video_premier .video_col {
|
||||
padding: 0;
|
||||
margin: 0; }
|
||||
|
||||
.card-message-red {
|
||||
background: #d32f2f;
|
||||
@@ -15573,7 +15719,8 @@ h6 {
|
||||
text-align: center; }
|
||||
|
||||
span.titleVideo {
|
||||
word-wrap: break-word; }
|
||||
word-wrap: break-word;
|
||||
font-size: 13px; }
|
||||
|
||||
.col-actions {
|
||||
margin: 20px 0; }
|
||||
@@ -15607,6 +15754,33 @@ span.titleVideo {
|
||||
height: 35px;
|
||||
line-height: 35px; }
|
||||
|
||||
#shareCv {
|
||||
text-align: center;
|
||||
height: 40%;
|
||||
overflow: hidden; }
|
||||
#shareCv .modal-content {
|
||||
height: auto;
|
||||
overflow: hidden; }
|
||||
#shareCv .row {
|
||||
padding: 50px; }
|
||||
#shareCv h2 {
|
||||
color: #333A40;
|
||||
text-align: center;
|
||||
font-size: 20px; }
|
||||
#shareCv h3 {
|
||||
color: #999CA2;
|
||||
text-align: center;
|
||||
font-size: 14px; }
|
||||
#shareCv a {
|
||||
margin-bottom: 10px; }
|
||||
#shareCv a.modal-close {
|
||||
color: #000; }
|
||||
#shareCv input[type=text] {
|
||||
padding-left: 10px;
|
||||
background: #E0E0E0;
|
||||
color: #000;
|
||||
border: none; }
|
||||
|
||||
.toast {
|
||||
background: #1689fb; }
|
||||
|
||||
@@ -15626,7 +15800,13 @@ span.titleVideo {
|
||||
font-weight: 600;
|
||||
text-transform: uppercase; }
|
||||
#dashboard h4 {
|
||||
font-size: 16px; }
|
||||
font-family: "Raleway", sans-serif;
|
||||
color: #155ee4;
|
||||
text-transform: uppercase;
|
||||
font-size: 20px;
|
||||
font-weight: 300;
|
||||
margin-top: 10px;
|
||||
display: inline-block; }
|
||||
#dashboard h4.bordered {
|
||||
margin-top: 45px;
|
||||
padding-bottom: 20px;
|
||||
@@ -15895,6 +16075,60 @@ span.titleVideo {
|
||||
color: #FFF;
|
||||
text-decoration: none; }
|
||||
|
||||
#modal-header {
|
||||
position: fixed;
|
||||
z-index: 1;
|
||||
background: #fafafa;
|
||||
top: 0;
|
||||
left: 0;
|
||||
border-bottom: 1px solid #E0E0E0;
|
||||
width: 100%;
|
||||
padding: 20px 20px; }
|
||||
#modal-header h4 {
|
||||
font-family: "Raleway", sans-serif;
|
||||
font-size: 20px;
|
||||
font-weight: 300;
|
||||
margin: 0;
|
||||
padding: 0; }
|
||||
|
||||
.form-container-career, .form-container-formation, .form-container-language {
|
||||
margin-top: 70px;
|
||||
margin-bottom: 20px; }
|
||||
|
||||
/* Carrière formation */
|
||||
.row-career hr, .row-formation hr, .row-language hr {
|
||||
background: #F2F3F5;
|
||||
height: 1px;
|
||||
border: none;
|
||||
margin: 0;
|
||||
margin-top: 20px; }
|
||||
.row-career .titleCompanyCareer, .row-formation .titleCompanyCareer, .row-language .titleCompanyCareer {
|
||||
font-family: "Raleway", sans-serif;
|
||||
font-size: 14px;
|
||||
font-weight: 600;
|
||||
color: #1E2327;
|
||||
text-transform: uppercase; }
|
||||
.row-career .titleJobCareer, .row-formation .titleJobCareer, .row-language .titleJobCareer {
|
||||
font-family: "Raleway", sans-serif;
|
||||
font-size: 14px;
|
||||
font-weight: 500;
|
||||
color: #1E2327; }
|
||||
.row-career .titleDateCareer, .row-formation .titleDateCareer, .row-language .titleDateCareer {
|
||||
color: #999CA2;
|
||||
font-family: "Raleway", sans-serif;
|
||||
font-weight: 300;
|
||||
font-size: 14px;
|
||||
text-transform: lowercase; }
|
||||
.row-career .titleDescriptionCareer, .row-formation .titleDescriptionCareer, .row-language .titleDescriptionCareer {
|
||||
font-family: "Raleway", sans-serif;
|
||||
font-size: 14px; }
|
||||
|
||||
#no-video-talents {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: space-around;
|
||||
height: 250px; }
|
||||
|
||||
.tooltip_templates {
|
||||
display: none; }
|
||||
|
||||
@@ -16110,6 +16344,9 @@ span.titleVideo {
|
||||
height: auto;
|
||||
max-height: 100%; }
|
||||
|
||||
.modal-career .modal-footer, .modal-formation .modal-footer, .modal-language .modal-footer {
|
||||
height: 70px; }
|
||||
|
||||
/*tableaux*/
|
||||
thead {
|
||||
border-bottom: solid 2px #232323;
|
||||
@@ -16181,33 +16418,17 @@ tbody td {
|
||||
display: none; }
|
||||
.tuto-carousel .item-tuto-webcam {
|
||||
height: 385px; }
|
||||
.tuto-carousel .owl-dots {
|
||||
margin-top: 30px;
|
||||
text-align: center;
|
||||
-webkit-tap-highlight-color: transparent; }
|
||||
.tuto-carousel .owl-dots .owl-dot {
|
||||
display: inline-block;
|
||||
zoom: 1; }
|
||||
.tuto-carousel .owl-dots .owl-dot span {
|
||||
width: 10px;
|
||||
height: 10px;
|
||||
margin: 5px 7px;
|
||||
background: #D6D6D6;
|
||||
display: block;
|
||||
-webkit-backface-visibility: visible;
|
||||
transition: opacity .2s ease;
|
||||
border-radius: 30px; }
|
||||
.tuto-carousel .owl-dots .owl-dot.active span, .tuto-carousel .owl-dots .owl-dot:hover span {
|
||||
background: #155EE5; }
|
||||
.tuto-carousel .owl-nav {
|
||||
width: 103%;
|
||||
z-index: 10; }
|
||||
|
||||
.carousel-fixed-item {
|
||||
margin-right: 45px;
|
||||
margin-top: -40px;
|
||||
position: relative;
|
||||
z-index: 100; }
|
||||
z-index: 100;
|
||||
display: flex;
|
||||
justify-items: center;
|
||||
align-items: center; }
|
||||
|
||||
.title-bubble {
|
||||
display: inline-block;
|
||||
@@ -16231,7 +16452,44 @@ tbody td {
|
||||
width: 80%;
|
||||
min-height: 540px;
|
||||
background: #FFFFFF; }
|
||||
#answerPage #modal-tuto .title-tuto {
|
||||
position: fixed;
|
||||
width: 100%;
|
||||
background: #FFF;
|
||||
display: block;
|
||||
z-index: 2;
|
||||
height: 60px;
|
||||
top: 0;
|
||||
left: 0;
|
||||
padding: 15px 0; }
|
||||
#answerPage #modal-tuto .modal-footer {
|
||||
height: 70px;
|
||||
background: #FFFFFF;
|
||||
border: none;
|
||||
z-index: 10; }
|
||||
#answerPage #modal-tuto .modal-footer .owl-dots {
|
||||
margin-top: 30px;
|
||||
text-align: center;
|
||||
-webkit-tap-highlight-color: transparent;
|
||||
position: absolute;
|
||||
left: 50%;
|
||||
bottom: 15px; }
|
||||
#answerPage #modal-tuto .modal-footer .owl-dots .owl-dot {
|
||||
display: inline-block;
|
||||
zoom: 1; }
|
||||
#answerPage #modal-tuto .modal-footer .owl-dots .owl-dot span {
|
||||
width: 10px;
|
||||
height: 10px;
|
||||
margin: 5px 7px;
|
||||
background: #D6D6D6;
|
||||
display: block;
|
||||
-webkit-backface-visibility: visible;
|
||||
transition: opacity .2s ease;
|
||||
border-radius: 30px; }
|
||||
#answerPage #modal-tuto .modal-footer .owl-dots .owl-dot.active span, #answerPage #modal-tuto .modal-footer .owl-dots .owl-dot:hover span {
|
||||
background: #155EE5; }
|
||||
#answerPage #modal-tuto .col-content {
|
||||
margin-top: 50px;
|
||||
margin-bottom: 0; }
|
||||
#answerPage #modal-tuto .close-tuto {
|
||||
margin-right: 60px;
|
||||
@@ -16273,17 +16531,19 @@ tbody td {
|
||||
color: #FFF;
|
||||
text-decoration: none; }
|
||||
|
||||
@media only screen and (max-width: 800px) {
|
||||
@media only screen and (max-width: 1000px) {
|
||||
#modal-tuto {
|
||||
width: 98%; }
|
||||
#modal-tuto .modal-footer .owl-dots {
|
||||
display: none; }
|
||||
#modal-tuto .modal-footer .close-tuto {
|
||||
font-size: 12px; }
|
||||
#modal-tuto .modal-content {
|
||||
padding: 10px; }
|
||||
#modal-tuto .modal-content h3 {
|
||||
font-size: 1.5rem; }
|
||||
#modal-tuto .modal-content .col {
|
||||
padding: 0; }
|
||||
#modal-tuto .modal-content .owl-dots {
|
||||
display: none; }
|
||||
#modal-tuto .modal-content .carousel-fixed-item {
|
||||
margin-top: 0;
|
||||
margin-right: 0;
|
||||
@@ -16661,3 +16921,37 @@ tbody td {
|
||||
#talent-show .recommendation-user-infos .recommendation-date {
|
||||
font-size: 14px;
|
||||
color: #1E2327; }
|
||||
#talent-show .talent-profile {
|
||||
padding: 0; }
|
||||
#talent-show .talent-profile div.col {
|
||||
padding: 20px 0 20px 20px; }
|
||||
#talent-show .talent-profile h3 {
|
||||
font-size: 18px;
|
||||
font-weight: 600;
|
||||
margin-bottom: 15px;
|
||||
color: #333A40;
|
||||
text-transform: initial; }
|
||||
#talent-show .talent-profile h3.talent-profile-title {
|
||||
font-weight: 300; }
|
||||
#talent-show .talent-profile .chip-more {
|
||||
font-weight: bold;
|
||||
cursor: pointer; }
|
||||
#talent-show .talent-profile .chip-invisible {
|
||||
display: none; }
|
||||
#talent-show .profil-links {
|
||||
margin: 20px 0;
|
||||
justify-content: space-evenly; }
|
||||
#talent-show .profil-links a {
|
||||
margin-right: 20px; }
|
||||
#talent-show .profil-links a i {
|
||||
font-size: 22px;
|
||||
color: #999CA2; }
|
||||
#talent-show .profil-links a i:hover {
|
||||
text-decoration: none;
|
||||
color: #155ee4; }
|
||||
#talent-show .profil-links a:hover {
|
||||
text-decoration: none; }
|
||||
#talent-show .talent-border-top {
|
||||
border-top: 1px solid #F2F3F5; }
|
||||
#talent-show .talent-border-left {
|
||||
border-left: 1px solid #F2F3F5; }
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="25px" height="25px" viewBox="0 0 25 25" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<!-- Generator: Sketch 50.2 (55047) - http://www.bohemiancoding.com/sketch -->
|
||||
<title>quitter</title>
|
||||
<desc>Created with Sketch.</desc>
|
||||
<defs></defs>
|
||||
<g id="Talents" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" stroke-linecap="square">
|
||||
<g id="pop-up-expériences-edit" transform="translate(-992.000000, -87.000000)" stroke="#979797" stroke-width="2">
|
||||
<g id="pop-upExpériences" transform="translate(162.000000, 65.000000)">
|
||||
<g id="quitter" transform="translate(831.000000, 23.000000)">
|
||||
<path d="M0.5,0.5 L22.590722,22.590722" id="Line-2"></path>
|
||||
<path d="M22.5,0.5 L0.409277966,22.590722" id="Line-2"></path>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 973 B |
|
Before Width: | Height: | Size: 107 KiB After Width: | Height: | Size: 13 KiB |
|
After Width: | Height: | Size: 107 KiB |
|
Before Width: | Height: | Size: 214 KiB After Width: | Height: | Size: 9.0 KiB |
|
After Width: | Height: | Size: 214 KiB |
@@ -32,7 +32,8 @@ $(document).ready(function(){
|
||||
margin: 50,
|
||||
stagePadding: padding,
|
||||
navRewind:false,
|
||||
navText: ['<span class="left-arrow"></span>', '<span class="right-arrow"></span>']
|
||||
navText: ['<span class="left-arrow"></span>', '<span class="right-arrow"></span>'],
|
||||
dotsContainer: '#customDots',
|
||||
});
|
||||
$(".tuto-carousel").trigger('refresh.owl.carousel');
|
||||
$(".tuto-carousel").on('changed.owl.carousel', function(event) {
|
||||
|
||||
@@ -154,7 +154,12 @@ $(document).ready(function () {
|
||||
}
|
||||
);
|
||||
|
||||
$('select').material_select();
|
||||
$('.btn-create-account').on('click',function(){
|
||||
$('#modal_login').modal('open');
|
||||
$('.change_to_register').click();
|
||||
});
|
||||
|
||||
//$('select').material_select();
|
||||
|
||||
/*menu responsive*/
|
||||
$(".button-collapse").sideNav();
|
||||
@@ -189,7 +194,7 @@ $(document).ready(function () {
|
||||
margin: marginValue,
|
||||
// stagePadding: paddingValue,
|
||||
nav: true,
|
||||
loop: true,
|
||||
loop: $('.territory-carousel > .item').length <= 2 ? false : true,
|
||||
center:true,
|
||||
navText: ['<span class="left-arrow"></span>', '<span class="right-arrow"></span>']
|
||||
});
|
||||
|
||||
@@ -94,12 +94,9 @@ $('.btn-delete-video').on('click',function(){
|
||||
});
|
||||
|
||||
$('.btn-video-premier,.no-presentation-video').on('click',function(){
|
||||
$('.btn-cancel-premier').css("display","inline-block");
|
||||
$('.btn-cancel-premier').animate({
|
||||
marginLeft: "-37",
|
||||
}, 500, function() {
|
||||
// Animation complete.
|
||||
});
|
||||
$('.btn-video-premier').animate({
|
||||
marginBottom: "-150",
|
||||
}, 500, null);
|
||||
$('.card-video-action > .card-image').each(function( index ) {
|
||||
$(this).children('.choice-fog').fadeIn();
|
||||
});
|
||||
@@ -107,13 +104,24 @@ $('.btn-video-premier,.no-presentation-video').on('click',function(){
|
||||
});
|
||||
|
||||
$('.btn-cancel-premier').on('click',function(){
|
||||
$(this).animate({
|
||||
marginLeft: "-137",
|
||||
}, 500, function() {
|
||||
// Animation complete.
|
||||
});
|
||||
$('.btn-video-premier').animate({
|
||||
marginBottom: "0",
|
||||
}, 500, null);
|
||||
$('.card-video-action > .card-image').each(function( index ) {
|
||||
$(this).children('.choice-fog').fadeOut();
|
||||
});
|
||||
$('.btn-delete-video').removeClass('disabled');
|
||||
});
|
||||
|
||||
$("#copyLink").on('click', function(){
|
||||
$('#linkToCopy').select();
|
||||
if ( document.execCommand( 'copy' ) ) {
|
||||
Materialize.toast('Lien copié dans votre presse papier.', 4000)
|
||||
}
|
||||
return false;
|
||||
} );
|
||||
|
||||
|
||||
$('.modal-close').on('click',function(){
|
||||
$(this).modal('close');
|
||||
});
|
||||
@@ -0,0 +1,130 @@
|
||||
$(document).ready(function () {
|
||||
$('.tooltipster').tooltipster({
|
||||
theme: 'tooltipster-ttube',
|
||||
side: 'bottom',
|
||||
});
|
||||
});
|
||||
|
||||
$('#searchableToggle').change(function () {
|
||||
var route = '/talent/me/searchable/toggle';
|
||||
$.ajax({
|
||||
type: "POST",
|
||||
url: route,
|
||||
dataType: "json",
|
||||
success: function (msg) {
|
||||
console.log(msg);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
String.prototype.capitalize = function() {
|
||||
return this.charAt(0).toUpperCase() + this.slice(1);
|
||||
}
|
||||
|
||||
$(document).ready(function() {
|
||||
function addModal(type){
|
||||
var $collectionHolder = $("."+type+"-holder");
|
||||
var prototype = $collectionHolder.data('prototype');
|
||||
$collectionHolder.data('index', $collectionHolder.find(':input').length);
|
||||
var index = $collectionHolder.data('index');
|
||||
var counter = $('.modal-'+type).length;
|
||||
var newIndex = (counter + 1);
|
||||
var newForm = prototype;
|
||||
$collectionHolder.data('index', newIndex);
|
||||
newForm = newForm.replace(/__name__/g, newIndex);
|
||||
$("#"+type+"_container").append(newForm);
|
||||
$('.modal-'+type+'-'+newIndex).modal({
|
||||
complete: function() {
|
||||
$(this).remove();
|
||||
}
|
||||
});
|
||||
$('.modal-'+type+'-'+newIndex).modal('open');
|
||||
$('.modal-'+type+'-'+newIndex).find('input[data-role="materialtags"]').materialtags({
|
||||
maxTags: 5
|
||||
});
|
||||
var checkbox = $('.modal-'+type+'-'+newIndex).find('.checkbox-'+type);
|
||||
if(checkbox.is(':checked')){
|
||||
$('#'+type+'s_'+type+'_'+(newIndex)+'_endMonth'+type.capitalize()).closest('.col').css('visibility','hidden');
|
||||
$('#'+type+'s_'+type+'_'+(newIndex)+'_endYear'+type.capitalize()).closest('.col').css('visibility','hidden');
|
||||
}
|
||||
}
|
||||
$("#add_career").on('click', function() {
|
||||
addModal('career');
|
||||
});
|
||||
|
||||
$("#add_formation").on('click', function() {
|
||||
addModal('formation');
|
||||
});
|
||||
|
||||
$("#add_language").on('click', function() {
|
||||
addModal('language');
|
||||
});
|
||||
|
||||
$(document).on("click","a[class*='cancel-']", function() {
|
||||
$(this).parents('.modal').modal('close');
|
||||
$(this).parents('.modal').remove();
|
||||
});
|
||||
|
||||
$("a[class*='delete-']").on('click', function() {
|
||||
$(this).parents('.modal').modal('close');
|
||||
$(this).parents('.modal').remove();
|
||||
type = $(this).data('type');
|
||||
$('#form_profile_'+type).submit();
|
||||
});
|
||||
|
||||
$('.modal-career').modal({
|
||||
dismissible: false
|
||||
});
|
||||
$('.modal-formation').modal({
|
||||
dismissible: false
|
||||
});
|
||||
$('.modal-language').modal({
|
||||
dismissible: false
|
||||
});
|
||||
|
||||
$("a[class*='edit-']").on('click',function(){
|
||||
var typeClass = this.className;
|
||||
typeClass = typeClass.split('-');
|
||||
typeClass = typeClass[1];
|
||||
var index = $(this).data('index');
|
||||
$('.modal-'+typeClass+'-'+index).modal('open');
|
||||
var checkbox = $('.modal-'+typeClass+'-'+index).find('.checkbox-career');
|
||||
if(checkbox.is(':checked')){
|
||||
$('#'+typeClass+'s_'+typeClass+'_'+(index)+'_endMonthCareer').closest('.col').css('visibility','hidden');
|
||||
$('#'+typeClass+'s_'+typeClass+'_'+(index)+'_endYearCareer').closest('.col').css('visibility','hidden');
|
||||
}
|
||||
});
|
||||
|
||||
$(document).on('change','select.beginYearCareer', function(){
|
||||
var valueYear = $(this).val();
|
||||
var endYear = $(this).parents('.form-container-career').find('select.endYearCareer');
|
||||
endYear.children('option').each(function () {
|
||||
var sel = $(this).val();
|
||||
if(sel < valueYear ) {
|
||||
$(this).prop('disabled', true);
|
||||
} else {
|
||||
$(this).prop('disabled', false);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
$(document).on('click', "a[class*='-save-action']", function(){
|
||||
type = $(this).data('type');
|
||||
$('#form_profile_'+type).submit();
|
||||
});
|
||||
|
||||
$(document).on('click','.checkbox-career', function(){
|
||||
var index = $(this).data('index');
|
||||
if($(this).is(':checked')){
|
||||
$('#careers_career_'+index+'_endMonthCareer').closest('.col').css('visibility','hidden');
|
||||
$('#careers_career_'+index+'_endYearCareer').closest('.col').css('visibility','hidden');
|
||||
} else {
|
||||
$('#careers_career_'+index+'_endMonthCareer').closest('.col').css('visibility','visible');
|
||||
$('#careers_career_'+index+'_endYearCareer').closest('.col').css('visibility','visible');
|
||||
}
|
||||
});
|
||||
|
||||
$(document).on("click",".modal-close", function() {
|
||||
$(this).parents('.modal').modal('close');
|
||||
});
|
||||
});
|
||||
@@ -0,0 +1,66 @@
|
||||
$.fn.datepicker.languages['fr-FR'] = {
|
||||
format: 'dd/mm/yyyy',
|
||||
days: ['Dimanche', 'Lundi', 'Mardi', 'Mercredi', 'Jeudi', 'Vendredi', 'Samedi'],
|
||||
daysShort: ['Dim', 'Lun', 'Mar', 'Mer', 'Jeu', 'Ven', 'Sam'],
|
||||
daysMin: ['Di', 'Lu', 'Ma', 'Me', 'Je', 'Ve', 'Sa'],
|
||||
weekStart: 1,
|
||||
months: ['Janvier', 'Février', 'Mars', 'Avril', 'Mai', 'Juin', 'Juillet', 'Aout', 'Septembre', 'Octobre', 'Novembre', 'Décembre'],
|
||||
monthsShort: ['Jan', 'Fev', 'Mar', 'Avr', 'Mai', 'Jun', 'Jui', 'Aou', 'Sep', 'Oct', 'Nov', 'Dec']
|
||||
};
|
||||
|
||||
$('.datepicker').datepicker({
|
||||
language: 'fr-FR'
|
||||
});
|
||||
|
||||
jQuery.extend(jQuery.validator.messages, {
|
||||
required: "Ce champ est obligatoire"
|
||||
});
|
||||
|
||||
$('form[name="talent"]').validate();
|
||||
$('form[name="talent_profile"]').validate();
|
||||
$('form[name="careers"]').validate();
|
||||
$('form[name="formations"]').validate();
|
||||
$('form[name="languages"]').validate();
|
||||
|
||||
window.URL = window.URL || window.webkitURL;
|
||||
var useBlob = false && window.URL;
|
||||
|
||||
function readURL(file) {
|
||||
var reader = new FileReader();
|
||||
reader.addEventListener("load", function () {
|
||||
var image = new Image();
|
||||
image.addEventListener("load", function () {
|
||||
if (Math.round(file.size / 1024) > 4000) {
|
||||
$('#preview_profile_picture').html("");
|
||||
$('.btn-save-profile-picture').addClass('hide');
|
||||
$('#card-alert').slideDown();
|
||||
$(".errors").html("L'image que vous tentez de charger est trop lourde.<br />Merci de choisir une autre photo ne dépassant pas les 4Mo.");
|
||||
} else {
|
||||
$('#card-alert').fadeOut();
|
||||
$(".errors").html("");
|
||||
$('#preview_profile_picture').html(this);
|
||||
$('.btn-save-profile-picture').removeClass('hide');
|
||||
}
|
||||
});
|
||||
image.src = useBlob ? window.URL.createObjectURL(file) : reader.result;
|
||||
});
|
||||
reader.readAsDataURL(file);
|
||||
}
|
||||
|
||||
$("#profile_picture_file, #profile_logo_file").change(function () {
|
||||
var files = this.files;
|
||||
if (files && files[0]) {
|
||||
for (var i = 0; i < files.length; i++) {
|
||||
var file = files[i];
|
||||
if ((/\.(png|jpeg|jpg|gif)$/i).test(file.name)) {
|
||||
readURL(file);
|
||||
} else {
|
||||
var errors = file.name + "<br />Le format de l'image n'est pas supporté. Merci de charger une image de type png,jpeg,jpg ou gif.";
|
||||
$('#preview_profile_picture').html("");
|
||||
$('.btn-save-profile-picture').addClass('hide');
|
||||
$('#card-alert').slideDown();
|
||||
$(".errors").html(errors);
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
@@ -486,3 +486,24 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
.chip{
|
||||
a{
|
||||
color: rgba(0, 0, 0, 0.6);
|
||||
}
|
||||
}
|
||||
|
||||
#liste-jobs{
|
||||
.card .card-action{
|
||||
.chip{
|
||||
a{
|
||||
color: rgba(0, 0, 0, 0.6);
|
||||
text-transform: initial;
|
||||
text-decoration: none;
|
||||
text-align: center;
|
||||
margin: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -21,5 +21,5 @@ $grey7 : #1E2327;
|
||||
|
||||
$orange: #ff9800;
|
||||
|
||||
$font-1: "Raleway", sans-serif;
|
||||
$font-1: 'Raleway', sans-serif;
|
||||
$font-2: "Varela Round", sans-serif;
|
||||
|
||||
@@ -22,25 +22,6 @@
|
||||
.item-tuto-webcam{
|
||||
height: 385px;
|
||||
}
|
||||
.owl-dots{
|
||||
margin-top: 30px;
|
||||
text-align:center;
|
||||
-webkit-tap-highlight-color:transparent;
|
||||
}
|
||||
.owl-dots .owl-dot{display:inline-block;zoom:1}
|
||||
.owl-dots .owl-dot span{
|
||||
width:10px;
|
||||
height:10px;
|
||||
margin:5px 7px;
|
||||
background:#D6D6D6;
|
||||
display:block;
|
||||
-webkit-backface-visibility:visible;
|
||||
transition:opacity .2s ease;
|
||||
border-radius:30px;
|
||||
}
|
||||
.owl-dots .owl-dot.active span,.owl-dots .owl-dot:hover span{
|
||||
background:#155EE5;
|
||||
}
|
||||
.owl-nav{
|
||||
width:103%;
|
||||
z-index: 10;
|
||||
@@ -48,9 +29,11 @@
|
||||
}
|
||||
.carousel-fixed-item{
|
||||
margin-right: 45px;
|
||||
margin-top:-40px;
|
||||
position: relative;
|
||||
z-index: 100;
|
||||
display: flex;
|
||||
justify-items: center;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.title-bubble{
|
||||
@@ -74,10 +57,51 @@
|
||||
background: url(/img/img_popupcv/step_arrow.svg) 40px no-repeat #FFFFFF;;
|
||||
}
|
||||
#modal-tuto{
|
||||
.title-tuto{
|
||||
position: fixed;
|
||||
width: 100%;
|
||||
background: #FFF;
|
||||
display: block;
|
||||
z-index: 2;
|
||||
height: 60px;
|
||||
top: 0;
|
||||
left: 0;
|
||||
padding: 15px 0;
|
||||
}
|
||||
.modal-footer{
|
||||
height: 70px;
|
||||
background: $white;
|
||||
border: none;
|
||||
z-index: 10;
|
||||
.owl-dots{
|
||||
margin-top: 30px;
|
||||
text-align:center;
|
||||
-webkit-tap-highlight-color:transparent;
|
||||
position: absolute;
|
||||
left: 50%;
|
||||
bottom: 15px;
|
||||
}
|
||||
.owl-dots .owl-dot{display:inline-block;zoom:1}
|
||||
.owl-dots .owl-dot span{
|
||||
width:10px;
|
||||
height:10px;
|
||||
margin:5px 7px;
|
||||
background:#D6D6D6;
|
||||
display:block;
|
||||
-webkit-backface-visibility:visible;
|
||||
transition:opacity .2s ease;
|
||||
border-radius:30px;
|
||||
}
|
||||
.owl-dots .owl-dot.active span,.owl-dots .owl-dot:hover span{
|
||||
background:#155EE5;
|
||||
}
|
||||
|
||||
}
|
||||
width: 80%;
|
||||
min-height: 540px;
|
||||
background: $white;
|
||||
.col-content{
|
||||
margin-top: 50px;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
.close-tuto{
|
||||
@@ -144,9 +168,17 @@
|
||||
}
|
||||
}
|
||||
|
||||
@media only screen and (max-width: 800px) {
|
||||
@media only screen and (max-width: 1000px) {
|
||||
#modal-tuto {
|
||||
width: 98%;
|
||||
.modal-footer{
|
||||
.owl-dots{
|
||||
display: none;
|
||||
}
|
||||
.close-tuto{
|
||||
font-size: 12px;
|
||||
}
|
||||
}
|
||||
.modal-content{
|
||||
h3{
|
||||
font-size: 1.5rem;
|
||||
@@ -155,9 +187,6 @@
|
||||
.col{
|
||||
padding: 0;
|
||||
}
|
||||
.owl-dots{
|
||||
display: none;
|
||||
}
|
||||
.carousel-fixed-item{
|
||||
margin-top:0;
|
||||
margin-right:0;
|
||||
@@ -166,4 +195,4 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -259,6 +259,38 @@
|
||||
}
|
||||
}
|
||||
|
||||
#dashboard{
|
||||
.modal-fixed-header{
|
||||
.modal-header{
|
||||
position: fixed;
|
||||
z-index: 100;
|
||||
top: 0;
|
||||
left: 0;
|
||||
height: auto;
|
||||
width: 100%;
|
||||
padding: 20px;
|
||||
border-bottom: 1px solid $grey1;
|
||||
h3{
|
||||
font-size: 20px;
|
||||
font-family: $font-1;
|
||||
font-weight: 300;
|
||||
margin: 0;
|
||||
float:left;
|
||||
}
|
||||
a.modal-close {
|
||||
cursor:pointer;
|
||||
}
|
||||
}
|
||||
.modal-content{
|
||||
padding-top: 100px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.modal-fixed-header .modal-footer {
|
||||
height: 68px;
|
||||
}
|
||||
|
||||
#modal-recommendation{
|
||||
span{
|
||||
font-size: 22px;
|
||||
|
||||
@@ -21,6 +21,10 @@
|
||||
box-shadow: 0 6px 10px 0 rgba(0, 0, 0, 0.14), 0 1px 18px 0 rgba(0, 0, 0, 0.12), 0 3px 5px -1px rgba(0, 0, 0, 0.3);
|
||||
}
|
||||
|
||||
.btn-default.disabled {
|
||||
background: $grey1;
|
||||
}
|
||||
|
||||
.btn-square {
|
||||
padding: 0px 8px;
|
||||
border-radius: 0;
|
||||
@@ -220,11 +224,6 @@
|
||||
}
|
||||
}
|
||||
|
||||
.btn-video-premier {
|
||||
color: #000;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.btn.red {
|
||||
background: #d32f2f;
|
||||
}
|
||||
|
||||
@@ -295,7 +295,6 @@
|
||||
color: $white;
|
||||
text-decoration: none;
|
||||
}
|
||||
border-bottom: 1px solid $grey4;
|
||||
padding: 15px 0;
|
||||
margin-bottom: 15px;
|
||||
}
|
||||
|
||||
@@ -11,7 +11,13 @@
|
||||
text-transform: uppercase;
|
||||
}
|
||||
h4{
|
||||
font-size: 16px;
|
||||
font-family: $font-1;
|
||||
color: $blue1;
|
||||
text-transform: uppercase;
|
||||
font-size: 20px;
|
||||
font-weight: 300;
|
||||
margin-top: 10px;
|
||||
display: inline-block;
|
||||
&.bordered {
|
||||
margin-top: 45px;
|
||||
padding-bottom: 20px;
|
||||
@@ -356,4 +362,76 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
#modal-header{
|
||||
position: fixed;
|
||||
z-index:1;
|
||||
background: #fafafa;
|
||||
top:0;
|
||||
left:0;
|
||||
border-bottom: 1px solid $grey1;
|
||||
width: 100%;
|
||||
padding: 20px 20px;
|
||||
h4{
|
||||
font-family: $font-1;
|
||||
font-size: 20px;
|
||||
font-weight: 300;
|
||||
margin:0;
|
||||
padding:0;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
.form-container-career,.form-container-formation,.form-container-language{
|
||||
margin-top: 70px;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
/* Carrière formation */
|
||||
|
||||
.row-career,.row-formation,.row-language{
|
||||
hr{
|
||||
background: $grey3;
|
||||
height: 1px;
|
||||
border: none;
|
||||
margin: 0;
|
||||
margin-top:20px;
|
||||
}
|
||||
.titleCompanyCareer{
|
||||
font-family: $font-1;
|
||||
font-size: 14px;
|
||||
font-weight: 600;
|
||||
color: $grey7;
|
||||
text-transform: uppercase;
|
||||
}
|
||||
|
||||
.titleJobCareer{
|
||||
font-family: $font-1;
|
||||
font-size: 14px;
|
||||
font-weight: 500;
|
||||
color: $grey7;
|
||||
}
|
||||
|
||||
.titleDateCareer{
|
||||
color: $grey6;
|
||||
font-family: $font-1;
|
||||
font-weight: 300;
|
||||
font-size: 14px;
|
||||
text-transform: lowercase;
|
||||
}
|
||||
|
||||
.titleDescriptionCareer{
|
||||
font-family: $font-1;
|
||||
font-size: 14px;
|
||||
}
|
||||
}
|
||||
|
||||
#no-video-talents{
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: space-around;
|
||||
height: 250px;
|
||||
}
|
||||
@@ -76,16 +76,82 @@ textarea.materialize-textarea:focus:not([readonly]){
|
||||
}
|
||||
|
||||
|
||||
form[name=talent_profile] div.col label.error{
|
||||
color: red;
|
||||
position: absolute;
|
||||
top: 20px;
|
||||
left: 0;
|
||||
&.active{
|
||||
color: red;
|
||||
#form_profile_edit, #form_profile_edit2{
|
||||
.professional-info,.personal-info{
|
||||
.col > div{
|
||||
position: relative;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
form[name=talent_profile] .bg-bordered .col div{
|
||||
position: relative;
|
||||
#form_profile_edit, #form_profile_edit2, #form_profile_career, #form_profile_formation, #form_profile_language{
|
||||
label.error{
|
||||
color: red;
|
||||
position: absolute;
|
||||
top: 20px;
|
||||
font-size: 10px;
|
||||
left: 0;
|
||||
&.active{
|
||||
color: red;
|
||||
}
|
||||
}
|
||||
.modal-career,.modal-formation,.modal-language{
|
||||
label.error{
|
||||
color: red;
|
||||
font-size: 10px;
|
||||
left: 24px;
|
||||
top: unset;
|
||||
}
|
||||
}
|
||||
select{
|
||||
display: block;
|
||||
}
|
||||
}
|
||||
|
||||
.select-wrapper label.invalid {
|
||||
margin-top: 62px;
|
||||
margin-left: -11px;
|
||||
color: #F44336;
|
||||
}
|
||||
|
||||
|
||||
#form_profile_edit, #form_profile_edit2, #form_profile_career, #form_profile_formation, #form_profile_language{
|
||||
label{
|
||||
font-family: $font-1;
|
||||
font-size: 14px;
|
||||
font-weight: 600;
|
||||
color: #000;
|
||||
}
|
||||
input[type=text], textarea{
|
||||
color: $grey6;
|
||||
font-family: $font-1;
|
||||
font-weight: 300;
|
||||
}
|
||||
.small{
|
||||
font-size: 14px;
|
||||
color: $grey7;
|
||||
}
|
||||
.xsmall{
|
||||
font-size: 10px;
|
||||
color: $grey7;
|
||||
}
|
||||
h5{
|
||||
font-family: $font-1;
|
||||
font-size: 14px;
|
||||
font-weight: 600;
|
||||
text-transform: inherit;
|
||||
}
|
||||
|
||||
.undertitle{
|
||||
font-family: $font-1;
|
||||
font-size: 14px;
|
||||
font-weight: 300;
|
||||
text-transform: inherit;
|
||||
}
|
||||
|
||||
.help{
|
||||
font-family: $font-1;
|
||||
font-size: 14px;
|
||||
font-weight: normal;
|
||||
}
|
||||
}
|
||||
@@ -211,6 +211,10 @@ h6 {
|
||||
}
|
||||
}
|
||||
|
||||
select{
|
||||
display: block;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -118,4 +118,11 @@
|
||||
height: auto;
|
||||
max-height: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
.modal-career, .modal-formation,.modal-language{
|
||||
.modal-footer{
|
||||
height: 70px;
|
||||
}
|
||||
}
|
||||
@@ -7,6 +7,9 @@
|
||||
margin-top: 0;
|
||||
margin-bottom: 10px;
|
||||
&.profil-name{
|
||||
a{
|
||||
text-decoration: none;
|
||||
}
|
||||
font-weight: bold;
|
||||
}
|
||||
&.profil-job{
|
||||
@@ -53,28 +56,6 @@
|
||||
border-radius: 0%;
|
||||
}
|
||||
|
||||
.profil-links{
|
||||
margin: 20px 0;
|
||||
display: flex;
|
||||
justify-content: space-around;
|
||||
a{
|
||||
i{
|
||||
background: #FFF;
|
||||
color: $grey2;
|
||||
border-radius: 50%;
|
||||
-webkit-transition: all 0.5s;
|
||||
-moz-transition: all 0.5s;
|
||||
transition: all 0.5s;
|
||||
&:hover{
|
||||
color: $blue1;
|
||||
-webkit-transition: all 0.5s;
|
||||
-moz-transition: all 0.5s;
|
||||
transition: all 0.5s;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
.profil-picture {
|
||||
margin-bottom:10px;
|
||||
|
||||
@@ -48,21 +48,124 @@
|
||||
.card-video{
|
||||
margin-top: 0;
|
||||
}
|
||||
.changeThumbnail{
|
||||
background-color: $blue1;
|
||||
}
|
||||
.preloader-wrapper{
|
||||
z-index: 1000;
|
||||
position: absolute;
|
||||
top: 10px;
|
||||
left: 30px;
|
||||
margin-left: -18px;
|
||||
.spinner-blue-only{
|
||||
border-color: $blue1;
|
||||
}
|
||||
}
|
||||
}
|
||||
.video_premier{
|
||||
padding:20px;
|
||||
.card-content{
|
||||
padding-left: 0;
|
||||
padding-right: 0;
|
||||
position: relative;
|
||||
display: flex;
|
||||
.content_col,.video_col_edit_premier,.video_col_link_share{
|
||||
padding:0;
|
||||
}
|
||||
.content_col{
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: space-between;
|
||||
flex-wrap: wrap;
|
||||
background: #FFF;
|
||||
}
|
||||
.btn-floating.halfway-fab.left.changeThumbnail{
|
||||
background-color: $blue1;
|
||||
bottom: 10px;
|
||||
left: 16px;
|
||||
}
|
||||
.preloader-wrapper{
|
||||
z-index: 1000;
|
||||
position: absolute;
|
||||
top: 10px;
|
||||
left: 30px;
|
||||
margin-left: -18px;
|
||||
.spinner-blue-only{
|
||||
border-color: $blue1;
|
||||
}
|
||||
}
|
||||
.video_col_content{
|
||||
margin-bottom: 10px;
|
||||
h3{
|
||||
font-family: $font-1;
|
||||
font-weight: 500 !important;
|
||||
text-transform: initial !important;
|
||||
font-size: 22px;
|
||||
margin-left: 40px;
|
||||
}
|
||||
}
|
||||
.video_col_actions{
|
||||
border-top: 1px solid $grey1;
|
||||
display: flex;
|
||||
clear: both;
|
||||
height: 48px;
|
||||
align-items: flex-end;
|
||||
overflow: hidden;
|
||||
}
|
||||
.video_col_link_share{
|
||||
a{
|
||||
border-radius: 0;
|
||||
width: 100%;
|
||||
padding: 0;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
background: #FFF;
|
||||
color: #000;
|
||||
font-weight: 200;
|
||||
font-size: 13px;
|
||||
i{
|
||||
line-height: 40px;
|
||||
margin-left:10px;
|
||||
}
|
||||
}
|
||||
}
|
||||
.video_col_edit_premier{
|
||||
position: relative;
|
||||
}
|
||||
.btn-video-premier{
|
||||
border-radius: 0;
|
||||
width: 100%;
|
||||
padding: 0;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
font-weight: 200;
|
||||
font-size: 13px;
|
||||
i{
|
||||
line-height: 40px;
|
||||
margin-left:10px;
|
||||
}
|
||||
}
|
||||
.btn-cancel-premier{
|
||||
display: none;
|
||||
margin-left: -137px;
|
||||
padding: 0 20px 0 50px;
|
||||
border-radius: 0;
|
||||
width: 100%;
|
||||
font-size: 12px;
|
||||
height: 48px;
|
||||
line-height: 48px;
|
||||
padding: 0;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
i{
|
||||
line-height: 40px;
|
||||
margin-left:10px;
|
||||
}
|
||||
&:hover{
|
||||
color: #FFF;
|
||||
text-decoration: none;
|
||||
}
|
||||
}
|
||||
.video_col{
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
}
|
||||
}
|
||||
.card-message-red{
|
||||
background: #d32f2f;
|
||||
@@ -107,6 +210,7 @@
|
||||
|
||||
span.titleVideo{
|
||||
word-wrap: break-word;
|
||||
font-size: 13px;
|
||||
}
|
||||
|
||||
.col-actions{
|
||||
@@ -153,4 +257,39 @@ span.titleVideo{
|
||||
line-height: 35px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#shareCv{
|
||||
text-align: center;
|
||||
height: 40%;
|
||||
overflow: hidden;
|
||||
.modal-content{
|
||||
height: auto;
|
||||
overflow: hidden;
|
||||
}
|
||||
.row{
|
||||
padding:50px;
|
||||
}
|
||||
h2{
|
||||
color: $grey4;
|
||||
text-align: center;
|
||||
font-size: 20px;
|
||||
}
|
||||
h3{
|
||||
color: $grey6;
|
||||
text-align: center;
|
||||
font-size: 14px;
|
||||
}
|
||||
a{
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
a.modal-close{
|
||||
color: #000;
|
||||
}
|
||||
input[type=text]{
|
||||
padding-left:10px;
|
||||
background: $grey1;
|
||||
color: #000;
|
||||
border:none;
|
||||
}
|
||||
}
|
||||
@@ -27,4 +27,53 @@
|
||||
color: $grey7;
|
||||
}
|
||||
}
|
||||
|
||||
.talent-profile{
|
||||
padding: 0;
|
||||
div.col{
|
||||
padding: 20px 0 20px 20px;
|
||||
}
|
||||
h3{
|
||||
font-size: 18px;
|
||||
font-weight: 600;
|
||||
margin-bottom: 15px;
|
||||
color: $grey4;
|
||||
text-transform: initial;
|
||||
}
|
||||
h3.talent-profile-title{
|
||||
font-weight: 300;
|
||||
|
||||
}
|
||||
.chip-more{
|
||||
font-weight: bold;
|
||||
cursor: pointer;
|
||||
}
|
||||
.chip-invisible{
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
.profil-links{
|
||||
margin: 20px 0;
|
||||
justify-content: space-evenly;
|
||||
a{
|
||||
margin-right: 20px;
|
||||
i{
|
||||
font-size: 22px;
|
||||
color: $grey6;
|
||||
&:hover{
|
||||
text-decoration: none;
|
||||
color: $blue1;
|
||||
}
|
||||
}
|
||||
&:hover{
|
||||
text-decoration: none;
|
||||
}
|
||||
}
|
||||
}
|
||||
.talent-border-top{
|
||||
border-top: 1px solid $grey3;
|
||||
}
|
||||
.talent-border-left{
|
||||
border-left: 1px solid $grey3;
|
||||
}
|
||||
}
|
||||
|
||||