Compare commits
81 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 | |||
| 4da427bac0 | |||
| 766e57e849 | |||
| 3c3b8c8428 | |||
| 717e57dc81 | |||
| 9e7ef88bea | |||
| 3f7c0803f1 | |||
| c99b3d2236 | |||
| 580bf6ecb4 | |||
| 82bf5fa76f | |||
| 3fb8262649 | |||
| 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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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 %}
|
||||
@@ -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,11 +38,13 @@
|
||||
<a href="{{ path('talent_answer_create',{id:a.ad.id}) }}">
|
||||
<i class="fa fa-pencil-square-o" aria-hidden="true"></i>
|
||||
</a>
|
||||
{% 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 %}
|
||||
{% if a.isViewed.status == "DRAFT" %}
|
||||
{{ 'VIEWED'|trans }}
|
||||
{% endif %}
|
||||
{{ 'VIEWED'|trans }}
|
||||
{% else %}
|
||||
{{ a.status|trans }}
|
||||
{% endif %}
|
||||
@@ -80,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.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 %}
|
||||
@@ -166,6 +311,7 @@
|
||||
|
||||
{% block javascripts %}
|
||||
{{ parent() }}
|
||||
{% if app.user.company.presentationVideo is null %}
|
||||
<script type="text/javascript">
|
||||
var urlDropzone = '{{ path("upload_media_presentation") }}';
|
||||
var urlDelete = '';
|
||||
@@ -177,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 %}
|
||||
@@ -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', [
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
|
||||
@@ -101,6 +101,17 @@ class MediaManager
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @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>']
|
||||
});
|
||||
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -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;
|
||||
@@ -16221,14 +16458,15 @@ tbody td {
|
||||
background: #FFF;
|
||||
display: block;
|
||||
z-index: 2;
|
||||
height: 30px;
|
||||
height: 60px;
|
||||
top: 0;
|
||||
left: 0;
|
||||
padding: 15px 0; }
|
||||
#answerPage #modal-tuto .modal-footer {
|
||||
height: 70px;
|
||||
background: #FFFFFF;
|
||||
border: none; }
|
||||
border: none;
|
||||
z-index: 10; }
|
||||
#answerPage #modal-tuto .modal-footer .owl-dots {
|
||||
margin-top: 30px;
|
||||
text-align: center;
|
||||
@@ -16298,6 +16536,8 @@ tbody td {
|
||||
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 {
|
||||
@@ -16681,5 +16921,37 @@ tbody td {
|
||||
#talent-show .recommendation-user-infos .recommendation-date {
|
||||
font-size: 14px;
|
||||
color: #1E2327; }
|
||||
|
||||
/*# sourceMappingURL=styles.css.map */
|
||||
#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; }
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -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 |
@@ -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;
|
||||
|
||||
@@ -63,7 +63,7 @@
|
||||
background: #FFF;
|
||||
display: block;
|
||||
z-index: 2;
|
||||
height: 30px;
|
||||
height: 60px;
|
||||
top: 0;
|
||||
left: 0;
|
||||
padding: 15px 0;
|
||||
@@ -72,7 +72,7 @@
|
||||
height: 70px;
|
||||
background: $white;
|
||||
border: none;
|
||||
|
||||
z-index: 10;
|
||||
.owl-dots{
|
||||
margin-top: 30px;
|
||||
text-align:center;
|
||||
@@ -175,6 +175,9 @@
|
||||
.owl-dots{
|
||||
display: none;
|
||||
}
|
||||
.close-tuto{
|
||||
font-size: 12px;
|
||||
}
|
||||
}
|
||||
.modal-content{
|
||||
h3{
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user