Compare commits

...

83 Commits

Author SHA1 Message Date
Author Name d56dc27fe1 Feat : Update js with assetic 2018-10-31 14:13:19 +01:00
Maxime Thévenot 2ee49175ef Conf : update parameters preprod according to server 2018-10-31 14:10:58 +01:00
Maxime Thévenot 6f0379c7aa Feat : update carrousel to not loop with less than 3 item 2018-10-31 12:18:57 +01:00
Maxime Thévenot 2491b253c6 Fix : update css for select visibility 2018-10-11 11:25:45 +02:00
Thomas MONCHICOURT df3bb979e9 Merge branch 'feat/choose-thumbnail' into develop 2018-10-03 16:51:04 +02:00
Thomas MONCHICOURT bc75bb7afc Feat: Mise en place du changement de vignette #7354 @2h30 2018-10-03 16:50:29 +02:00
Thomas MONCHICOURT ef5f0e81da Fix : birthdate null 2018-10-03 12:17:40 +02:00
Thomas MONCHICOURT 88ceb319af Merge branch 'master' into develop 2018-10-03 11:32:36 +02:00
Thomas MONCHICOURT f314a614fe Fix: probleme set date anniversaire Facebook 2018-10-03 11:26:50 +02:00
Thomas MONCHICOURT b19498ef46 Feat: mise en place du choix de la vignette #7354 @2h 2018-10-03 11:07:51 +02:00
Thomas MONCHICOURT 6313039500 Feat : modification talent en home #7339 @1h 2018-09-26 14:17:28 +02:00
Thomas MONCHICOURT f098e4b6b8 Merge branch 'develop' 2018-09-26 10:46:39 +02:00
Thomas MONCHICOURT ed70e8c940 Fix: delete dump 2018-09-26 10:46:24 +02:00
Thomas MONCHICOURT 9762aee7ae Feat : ajout nouveau type search #7317 @0h15 2018-09-25 16:40:34 +02:00
Thomas MONCHICOURT d0fd19d760 Fix : style dashboard 2018-09-25 16:35:08 +02:00
Thomas MONCHICOURT 3ccf2b9604 Feat : test elastic #7317 @0h30 2018-09-25 16:34:29 +02:00
Thomas MONCHICOURT babfa473fb Merge branch 'master' into develop
# Conflicts:
#	volume/www/website/www/web/css/styles.css
#	volume/www/website/www/web/css/styles.css.map
#	volume/www/website/www/web/sass/base/_mtgenerics.scss
2018-09-25 16:13:31 +02:00
Thomas MONCHICOURT 0bcd46fde8 Fix : correction affichage mediatheque 2018-09-25 16:11:29 +02:00
Thomas MONCHICOURT c976bb6d21 Feat : Modification recherche par tag #7317 @0h20 2018-09-25 15:59:34 +02:00
Thomas MONCHICOURT d301c3b029 Feat : Etat de visionnage d’une candidature par le talent #7229 @0h30 2018-09-25 15:33:24 +02:00
Thomas MONCHICOURT c5a1aebecc Merge branch 'feat/research-keywords' into develop 2018-09-25 14:59:26 +02:00
Thomas MONCHICOURT e516e45cb0 Feat: ajout lien + css #7317 @0h30 2018-09-25 14:58:51 +02:00
Thomas MONCHICOURT 441304c363 Fix : probleme save data 2018-09-24 17:22:51 +02:00
Thomas MONCHICOURT 3399a82379 Fix : Bouton lien page detail territoire 2018-09-24 17:02:25 +02:00
Thomas MONCHICOURT 4e111ae3cd Fix : re prestashop 2018-09-24 16:59:31 +02:00
Thomas MONCHICOURT ed669974a1 Fix : delete event for prestashop 2018-09-24 16:56:01 +02:00
Thomas MONCHICOURT 02c68a48c9 Fix : edition image progile 2018-09-24 16:12:54 +02:00
Thomas MONCHICOURT cce45d834f Feat : Mots clefs cliquable #7317 @2h 2018-09-24 15:32:50 +02:00
Thomas MONCHICOURT 0373f01013 Fix: remove utf8 encode for months 2018-09-20 16:49:19 +02:00
Thomas MONCHICOURT cbcf51f93d Fix : language mois 2018-09-20 16:44:41 +02:00
Thomas MONCHICOURT dffb439bb3 Fix : language date 2018-09-20 16:39:46 +02:00
Thomas MONCHICOURT 4b2c5fc222 Fix : bouton de lien page entreprise 2018-09-20 16:31:10 +02:00
Thomas MONCHICOURT 13073d59e4 Fix : set locales 2018-09-20 14:05:50 +02:00
Thomas MONCHICOURT 8e995cef82 Fix : modal picture profil 2018-09-20 12:23:10 +02:00
Thomas MONCHICOURT 349bc309bd Fix: lien pour voir plus de mots clefs 2018-09-20 11:46:33 +02:00
Thomas MONCHICOURT 492d2687c5 Fix : modification affichage mois 2018-09-20 11:36:27 +02:00
Thomas MONCHICOURT 2fa50e3d5b Fix : changin month save 2018-09-20 11:05:25 +02:00
Thomas MONCHICOURT e6e00c1659 Merge branch 'develop'
# Conflicts:
#	volume/www/website/www/web/css/styles.css.map
2018-09-20 10:33:57 +02:00
Thomas MONCHICOURT db7cc56e3a Feat: Required 2018-09-20 10:21:55 +02:00
Thomas MONCHICOURT 7b5e7bc53a Feat: dernière correction #7104 @0h15 2018-09-20 10:03:03 +02:00
Thomas MONCHICOURT 0d7c6466ec Fix : header et footer tuto 2018-09-19 11:24:37 +02:00
Thomas MONCHICOURT 27ecf6f81c Fix : correction page talent 2018-09-19 09:25:39 +02:00
Thomas MONCHICOURT 55eb1ed363 Feat : dernier correctif page talent #7104 @2h 2018-09-18 16:34:46 +02:00
Thomas MONCHICOURT 6ddf703f9e Fix : correction 2018-09-18 15:37:56 +02:00
Thomas MONCHICOURT 6f8671bc8f Feat : correctin design #7104 @1h30 2018-09-18 12:17:30 +02:00
Thomas MONCHICOURT 68802a2a4d Feat : ajout de fonctionnalité admin #7249 @0h15 2018-09-12 15:15:03 +02:00
Thomas MONCHICOURT ceb2f7f7ce Feat : correction mineur #7244 @0h20 2018-09-12 14:22:02 +02:00
Thomas MONCHICOURT 4da427bac0 Feat : test unit test 2018-09-12 09:36:33 +02:00
Thomas MONCHICOURT 766e57e849 Fix : hide career default form 2018-09-11 10:51:45 +02:00
Thomas MONCHICOURT 3c3b8c8428 Fix : Get birthday on null 2018-09-11 10:46:45 +02:00
Thomas MONCHICOURT 49d47b70f6 Feat : ajout d’un status visionnée candidature talent #7229 @0h15 2018-09-10 15:56:01 +02:00
Thomas MONCHICOURT 717e57dc81 Fix: problem edition carrriere 2018-09-10 14:50:53 +02:00
Thomas MONCHICOURT 9e7ef88bea Feat: refactor form #7104 @1h 2018-09-07 14:59:44 +02:00
Thomas MONCHICOURT 3f7c0803f1 Refactor: Formulaire independant #7104 @2h 2018-09-07 11:12:25 +02:00
Thomas MONCHICOURT c99b3d2236 Merge branch 'master' into develop
# Conflicts:
#	volume/www/website/www/web/assetic/main.dash.talent.js
#	volume/www/website/www/web/css/styles.css
#	volume/www/website/www/web/css/styles.css.map
2018-09-07 09:42:31 +02:00
Thomas MONCHICOURT 580bf6ecb4 Refactor: experience 2018-09-07 09:41:01 +02:00
Thomas MONCHICOURT 82bf5fa76f Feat : correction affichage 2018-09-06 16:12:01 +02:00
Thomas MONCHICOURT 3fb8262649 Feat: correction review correntin #7104 @3h30 2018-09-06 14:22:53 +02:00
Thomas MONCHICOURT f4f9191bd1 Fix : retour corentin profile talent 2018-09-05 11:03:29 +02:00
Thomas MONCHICOURT 9709b69125 Fix : Condition pour éviter erreur JS 2018-09-04 15:29:29 +02:00
Thomas MONCHICOURT 6f19c7df97 Feat : Mise en place de la gestion des langues #7104 @3h 2018-09-04 09:32:23 +02:00
Thomas MONCHICOURT 7779cdbf66 Fix : modification style apres merge 2018-08-30 16:30:57 +02:00
Thomas MONCHICOURT 95d58a14e0 Merge branch 'feat/profile-talent' into develop
# Conflicts:
#	volume/www/website/www/src/AppBundle/Form/TalentProfileType.php
#	volume/www/website/www/web/css/styles.css
2018-08-30 16:29:04 +02:00
Thomas MONCHICOURT f8db5a4b1c Feat : Videotheque #5925 @1h 2018-08-30 16:22:00 +02:00
Thomas MONCHICOURT ca23af2623 Feat : edition page talent #7104 @2h 2018-08-29 17:18:49 +02:00
Thomas MONCHICOURT b54d162032 Merge branch 'feat/videotheque' into feat/profile-talent
# Conflicts:
#	volume/www/website/www/app/Resources/views/base.html.twig
#	volume/www/website/www/app/Resources/views/base_dashboard.html.twig
#	volume/www/website/www/web/assetic/main.base.dash.js
#	volume/www/website/www/web/assetic/main.dash.company.js
#	volume/www/website/www/web/assetic/main.js
#	volume/www/website/www/web/css/styles.css.map
2018-08-28 16:50:51 +02:00
Thomas MONCHICOURT 78c15596cd feat : Page profile 2018-08-28 15:58:20 +02:00
Maxime Thévenot 74f9c7b884 Fix : update registration template to fix button 2018-08-28 15:29:04 +02:00
Thomas MONCHICOURT 5bb76aa419 feat : page talent 2018-08-28 12:29:06 +02:00
Thomas MONCHICOURT d5532926aa Feat : Front + css page talent #7104 @3h 2018-08-27 17:26:35 +02:00
Thomas MONCHICOURT 1707d28fc7 Feat: Nouveaux champs talent + formations #7104 @5h 2018-08-27 12:01:03 +02:00
Thomas MONCHICOURT 39143908af Feat : careers #7104 @2h 2018-08-24 12:16:16 +02:00
Thomas MONCHICOURT b2b075ffe7 Feat : macro form pour prototype career 2018-08-23 17:06:48 +02:00
Thomas MONCHICOURT 91c7ebb145 Feat : form experience #7104 @2h 2018-08-23 16:38:13 +02:00
Thomas MONCHICOURT 66e5fd4c6c Feat : experiences 2018-08-23 16:06:14 +02:00
Thomas MONCHICOURT 80f8ad7043 Merge branch 'master' into feat/profile-talent
# Conflicts:
#	volume/www/website/www/web/css/styles.css.map
#	volume/www/website/www/web/js/dropzone.js
2018-08-23 15:49:01 +02:00
Thomas MONCHICOURT e1c3f77e68 Feat : dropzone reload 2018-08-23 14:56:07 +02:00
Thomas MONCHICOURT 14cc09b25f Merge branch 'develop' into feat/profile-talent
# Conflicts:
#	volume/www/website/www/src/AppBundle/Controller/TalentController.php
#	volume/www/website/www/src/AppBundle/Form/TalentProfileType.php
#	volume/www/website/www/web/css/styles.css.map
2018-08-23 14:23:16 +02:00
Thomas MONCHICOURT bdbe45e1a2 Feat : Formulaire compétence #7104 @1h30 2018-08-22 11:01:34 +02:00
Thomas MONCHICOURT 66af01c050 Feat : gestion des experiences #7104 @3h 2018-08-21 17:27:53 +02:00
Thomas MONCHICOURT a38b63f87f Feat : form career pour talents #7104 @5h 2018-08-21 11:01:25 +02:00
Thomas MONCHICOURT 2a2ef6673d feat : Videotheque + lien partage #5925 @2h 2018-07-24 16:55:52 +02:00
Thomas MONCHICOURT f3d618b640 Feat: modificiation videotheque #5925 @1h20 2018-07-23 16:59:57 +02:00
75 changed files with 7387 additions and 327 deletions
@@ -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 lordre dimportance. 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 demploi</target>
</trans-unit>
<trans-unit id="talent.profile.situation.2.label">
<source>talent.profile.situation.2.label</source>
<target>À l’écoute dopportunités</target>
</trans-unit>
<trans-unit id="talent.profile.situation.3.label">
<source>talent.profile.situation.3.label</source>
<target>En poste</target>
</trans-unit>
<!-- TALENT -->
<trans-unit id="ad.talent.answer.label">
<source>ad.talent.answer.label</source>
@@ -552,8 +656,20 @@
<source>label.answer.history.title</source>
<target>Historique des messages envoyés</target>
</trans-unit>
<!-- Territoires -->
<trans-unit id="message.territory.list.ads">
<source>message.territory.list.ads</source>
<target>offres d'emploi en cours sur ce territoire</target>
</trans-unit>
<trans-unit id="message.territory.list.ad">
<source>message.territory.list.ad</source>
<target>offre d'emploi en cours sur ce territoire</target>
</trans-unit>
<trans-unit id="message.territory.list.noads">
<source>message.territory.list.noads</source>
<target>Découvrez les entreprises qui recrutent sur ce territoire</target>
</trans-unit>
</body>
</file>
</xliff>
@@ -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>
@@ -32,15 +32,22 @@
<div class="row row-tags row-noMargin">
<div class="col s11 col-noPadding" style="position:relative;">
<div class="chip center-align">
{% set nbAds = c.getPublishedAds|length %}
{% set fragment = "" %}
{% if nbAds > 0 %}
{% set fragment = "offers" %}
{% endif %}
<a class="td-none color-grey3"
href="{{ path('company_show',{'alias': c.alias, '_fragment':'offers' }) }}">
href="{{ path('company_show',{'alias': c.alias, '_fragment': fragment }) }}">
{% set nbAds = c.getPublishedAds|length %}
{% if nbAds > 1 %}
<strong>{{ c.getPublishedAds|length }} offres d'emploi en
cours</strong>
{% else %}
{% elseif nbAds == 1 %}
<strong>{{ c.getPublishedAds|length }} offre d'emploi en
cours</strong>
{% else %}
<strong>candidature spontanée</strong>
{% endif %}
</a>
</div>
@@ -98,9 +98,9 @@
<div class="container">
<div class="row center-align">
<div class="col s12">
<h2 class="blue-text no-margin-top">Les talents</h2>
<h2 class="blue-text no-margin-top">Les talents à la une</h2>
</div>
<h3 class="subtitles-homepage">Découvrez leurs CV vidéo et vidéo de motivation.</h3>
<h3 class="subtitles-homepage">Découvrez leur CV vidéo et vidéo de motivation.</h3>
</div>
<div class="row">
<div class="owl-carousel owl-carousel-home home-talent-carousel">
@@ -111,6 +111,12 @@
{% endif %}
</div>
</div>
<div class="row center-align">
<h2>Rejoignez une communauté de plus de <strong>500</strong> candidats</h2>
<div class="col s12 m-t-50">
<a href="#!" title="Créer Mon profil" class="btn btn-default btn-round btn-create-account">Créer mon profil</a>
</div>
</div>
</div>
</div>
{# TERRITOIRE #}
@@ -19,13 +19,13 @@
{{ user.firstname }} {{ user.lastname }}
</a>
</p>
{% if talent.publicTag %}
{#{% if talent.publicTag %}
{% for keyword in talent.publicTag %}
{% if keyword != "" %}
<div class="chip">{{ keyword }}</div>
{% endif %}
{% endfor %}
{% endif %}
{% endif %}#}
</div>
{% endif %}
{% endfor %}
@@ -12,12 +12,12 @@
<div class="row">
<div class="col s12">
{% if medias|length == 0 and is_granted('ROLE_TALENT') %}
<div class="col s12 col-actions center-align">
<div class="col s12 center-align">
<br/><br/>
<strong class="color-grey3">Vous ne possédez pas encore de CV vidéo!</strong><br/>
<span class="color-grey2">Cliquez sur le bouton pour ajouter votre première vidéo.</span>
<br/><br/>
<a class="waves-effect waves-light btn btn-default modal-trigger" href="#addVideo">Ajouter une
<a class="btn btn-default modal-trigger" href="#addVideo">Ajouter une
vidéo</a>
</div>
{% else %}
@@ -0,0 +1,315 @@
{% if is_granted('ROLE_COMPANY') %}
{% set extendTemplate='company/base_dashboard_company.html.twig' %}
{% elseif is_granted('ROLE_TERRITORY') %}
{% set extendTemplate='territory/base_dashboard_territory.html.twig' %}
{% else %}
{% set extendTemplate='talent/base_dashboard_talent.html.twig' %}
{% endif %}
{% extends extendTemplate %}
{% block dashContent %}
<div class="row">
<div class="col s12">
{#<a class="waves-effect waves-light btn btn-default modal-trigger left m-r-10" href="#addVideo">Créer une vidéo</a>#}
{% if medias|length > 0 %}
<a class="waves-effect waves-light btn btn-default modal-trigger left" href="#addVideo">Ajouter une vidéo</a>
<a class="btn btn-delete-video btn-round tooltipped red right" href="#!" data-position="top"
data-tooltip="Supprimer des vidéos"><i class="fa fa-trash" aria-hidden="true"></i>
</a>
{% endif %}
</div>
</div>
{% if medias|length == 0 %}
<div class="col s12 col-actions center-align" id="no-video-talents">
<br/><br/>
<strong class="color-grey3">Vous ne possédez pas encore de CV vidéo!</strong><br/>
<span class="color-grey2">Cliquez sur le bouton pour ajouter votre première vidéo.</span>
<br/><br/>
<a class="waves-effect waves-light btn btn-default modal-trigger" href="#addVideo">Ajouter une
vidéo</a>
</div>
{% else %}
{% if app.user.company.presentationVideo %}
{% set media = app.user.company.presentationVideo %}
{% endif %}
<div class="row video_premier z-depth-3">
{% if app.user.company.presentationVideo %}
<div class="col s4 video_col col-card">
<div class="preloader-wrapper small">
<div class="spinner-layer spinner-blue-only">
<div class="circle-clipper left">
<div class="circle"></div>
</div><div class="gap-patch">
<div class="circle"></div>
</div><div class="circle-clipper right">
<div class="circle"></div>
</div>
</div>
</div>
<div class="embed-responsive embed-responsive-16by9">
<iframe src="https://player.vimeo.com{{ media.getCdnUrl()|replace({ "videos": "video"}) }}"
width="100%" height="550" frameborder="0" webkitallowfullscreen
mozallowfullscreen allowfullscreen></iframe>
</div>
<a data-id="{{ media.getCdnUrl()|replace({ "/videos/": ""}) }}" href="#!" class="btn-floating left halfway-fab changeThumbnail"><i class="material-icons">image</i></a>
</div>
{% else %}
<div class="col s12 video_col">
<div class="no-presentation-video">
<strong>
Vous ne disposez pas de vidéo de présentation !
</strong><br/>
Cliquez sur le bouton ci-dessous pour la sélectionner dans votre bibliothèque.
</div>
</div>
{% endif %}
{% if media is defined %}
<div class="col s8 content_col">
<div class="col s12 video_col_content">
<h3>{{ media.title }}</h3>
</div>
<div class="video_col_actions">
<div class="col s6 video_col_link_share">
<a class="btn btn-default modal-trigger" href="#shareCv">Partager le profil
<i class="fa fa-share-alt" aria-hidden="true"></i>
</a>
</div>
<div class="col s6 video_col_edit_premier">
<a class="btn btn-cancel-premier red right" href="#!" data-position="top" data-tooltip="Annuler">
<span>Annuler</span> <i class="fa fa-ban" aria-hidden="true"></i>
</a>
<a class="btn btn-default btn-video-premier right">
<span>Remplacer la vidéo</span>
<i class="fa fa-pencil" aria-hidden="true"></i>
</a>
<div class="clearfix"></div>
</div>
</div>
</div>
{% endif %}
</div>
{% endif %}
<div class="row">
{% for media in medias %}
{% set classVideo = "" %}
{% if app.user.company.presentationVideo %}
{% set idPresentationVideo = app.user.company.presentationVideo.id %}
{% else %}
{% set idPresentationVideo = false %}
{% endif %}
{% if idPresentationVideo != media.id %}
<div class="col s12 m6 l4 col-card">
<div class="card card-video-action z-depth-1">
<div class="card-image">
<div class="preloader-wrapper small">
<div class="spinner-layer spinner-blue-only">
<div class="circle-clipper left">
<div class="circle"></div>
</div><div class="gap-patch">
<div class="circle"></div>
</div><div class="circle-clipper right">
<div class="circle"></div>
</div>
</div>
</div>
<div class="embed-responsive embed-responsive-16by9">
<iframe src="https://player.vimeo.com{{ media.getCdnUrl()|replace({ "videos": "video"}) }}"
width="100%" height="230px" frameborder="0" webkitallowfullscreen
mozallowfullscreen allowfullscreen></iframe>
</div>
<div class="card-fog choice-fog">
<div class="card-fog-container">
<a data-id="{{ media.getId() }}"
class="btn btn-default btn-default-video {{ classVideo }} tooltipped"
data-position="top"
data-tooltip="{{ 'global.video.defaultaction.label'|trans }}">
Choisir cette vidéo
</a>
</div>
</div>
{% set classFog ="" %}
{% set messageTooltipFog ="" %}
{% if media.getAds().toArray() %}
{% set classFog = "fogLight" %}
{% set messageTooltipFog ="Vidéo associée à une annonce" %}
{% endif %}
{% if media.getAnswers().toArray() %}
{% set classFog = "fogLight" %}
{% set messageTooltipFog ="Vidéo associée à une réponse" %}
{% endif %}
<div class="card-fog delete-fog {{ classFog }}">
<div class="card-fog-container">
{% if media.getAds().toArray() or media.getAnswers().toArray() %}
<div class="card-fog-message">
Vous ne pouvez pas supprimer cette vidéo.<br/>
<i data-position="top" data-tooltip="{{ messageTooltipFog }}"
class="fa fa-question-circle tooltipped" aria-hidden="true"></i>
</div>
{% else %}
<a class="btn btn-default halfway-fab waves-effect waves-light red delete_unattached_media tooltipped"
href="{{ path("delete_unattached_media",{"id" : media.getId()}) }}"
data-position="top" data-tooltip="{{ 'media.delete.video.label'|trans }}">Supprimer</a>
{% endif %}
</div>
</div>
<a data-id="{{ media.getCdnUrl()|replace({ "/videos/": ""}) }}" href="#!" class="btn-floating left halfway-fab changeThumbnail"><i class="material-icons">image</i></a>
</div>
<div class="card-content">
<p>
<strong><span data-id="{{ media.id }}" class="titleVideo truncate tooltipped"
data-position="top"
data-tooltip="{{ media.title }}">{{ media.title }}</span></strong>
</p>
</div>
</div>
</div>
{% endif %}
{% endfor %}
</div>
<div id="changeThumbnailVideo" class="modal modal-fixed-footer modal-fixed-header">
<div class="modal-header">
<h3 class="color-blue1">Modifier la vignette</h3>
<span class="right">
<a href="#!" class="modal-close">
<img src="{{ asset('/img/close-modal.svg') }}" >
</a>
</span>
</div>
<div class="modal-content">
<div class="row">
<div class="col s6">
<div class="embed-responsive embed-responsive-16by9">
<div class="col s12">
<div id="video-vimeo"></div>
</div>
</div>
</div>
<div class="col s6">
<p><strong>Lancez la vidéo</strong> , puis <strong>appuyer sur pause</strong> pour définir limage.
<br />Une fois votre vignette définie, cliquez sur le bouton
<strong>Sauvegarder</strong>.</p>
</div>
</div>
</div>
<div class="modal-footer">
<a href="#!" class="modal-action modal-close btn btn-default btn-round captur">Sauvegarder</a>
</div>
</div>
{% set video = null %}
<div id="addVideo" class="modal modal-fixed-footer">
<div class="modal-content">
<div class="row">
{{ form_start(form, {'attr': { 'id': 'form_media' } }) }}
<div class="input-field col s8">
{{ form_rest(form) }}
</div>
<div class="col s4 right-align">
<button id="submit" class="btn btn-default disabled" type="submit">Enregistrer</button>
{% set messageTooltiped = "Votre vidéo ne doit pas dépasser les 500Mo.\n
Les formats de vidéo acceptés sont les suivants : .mp4, .mov, .qt, .mkv, .avi, .m4v, .webm." %}
<i class="fa fa-question-circle tooltipped" data-position="top" data-delay="50"
data-tooltip="{{ messageTooltiped }}" aria-hidden="true"></i>
</div>
{{ form_end(form) }}
<div class="col s12">
{% include 'media/dropzone.html.twig' with {'deleting': 'false'} %}
</div>
</div>
</div>
<div class="modal-footer">
<a href="#!" class="modal-action modal-close btn btn-default btn-round">Fermer</a>
</div>
</div>
<div id="shareCv" class="modal modal-fixed-footer">
<div class="modal-content">
<div class="row">
<h2>Vous souhaitez partager votre profil à d'autres entreprises?</h2>
<h3>Copiez et ajoutez l'adresse ci-dessous lors de vos candidatures</h3>
<input id="linkToCopy" type="text" value="https://www.talentstube.com{{ path("talent_show", {"alias": app.user.company.alias }) }}">
<a class="btn btn-default btn-round" id="copyLink">Copier</a><br />
<a class="modal-action modal-close">Fermer</a>
</div>
</div>
</div>
{% endblock %}
{% block javascripts %}
{{ parent() }}
<script type="text/javascript">
var urlDropzone = '{{ path("upload_media_default", {"id": app.user.id }) }}';
var urlDelete = '';
var idObject = null;
var typeObject = null;
var videoExist = false;
var mediaDefaultUrl = '{{ path("media_default") }}';
var idUser = '{{ app.user.id }}';
var mediaEditTitleUrl = "{{ path('media_edit_title', {'id': 'id_video'})|escape('js') }}";
$(document).ready(function(){
$('.modal').modal();
});
</script>
<script src="{{ asset('/js/mediaListing.js') }}"></script>
<script src="{{ asset('/js/dropzone.js') }}"></script>
<script src="https://player.vimeo.com/api/player.js"></script>
<script type="text/javascript">
$(document).ready(function(){
var options = {
id: null
};
var player = null;
$('.modal-close').on('click',function(){
$('#changeThumbnailVideo').modal('close');
});
$('.changeThumbnail').on('click',function(){
$('#changeThumbnailVideo').modal();
$('#changeThumbnailVideo').modal('open');
var idVideo = $(this).data('id');
options = {
id: idVideo
};
player = new Vimeo.Player('video-vimeo', options);
});
$('.captur').on('click',function(e){
e.preventDefault();
$('a.changeThumbnail').data('id',options.id).parents('.col-card').find('.preloader-wrapper').addClass('active');
player.getCurrentTime().then(function(seconds) {
var data = {'duration': seconds, 'id':options.id};
$.ajax({
url:"{{ path('video_changeThumbnail') }}",
type:"POST",
data: JSON.stringify(data),
success:function(response) {
$('a.changeThumbnail').data('id',options.id).parents('.col-card').each(function( index ) {
var iframe = $( this ).contents().find('iframe');
iframe[0].src = iframe[0].src;
});
},
error:function(error){
console.log(error)
}
});
}).catch(function(error) {
console.log(error);
});
});
$("iframe").on("load", function () {
$('.preloader-wrapper').removeClass('active');
});
});
</script>
{% endblock %}
@@ -38,7 +38,16 @@
<a href="{{ path('talent_answer_create',{id:a.ad.id}) }}">
<i class="fa fa-pencil-square-o" aria-hidden="true"></i>
</a>
{% endif %}{{ a.status|trans }}
{% elseif a.status == "DRAFT" and a.company != null %}
<a href="{{ path('talent_spontaneous_application_create',{id:a.company.id}) }}">
<i class="fa fa-pencil-square-o" aria-hidden="true"></i>
</a>
{% endif %}
{% if a.isViewed %}
{{ 'VIEWED'|trans }}
{% else %}
{{ a.status|trans }}
{% endif %}
</td>
</tr>
{% endfor %}
@@ -73,4 +82,11 @@
var player_vimeo = new Vimeo.Player('player_vimeo');
});
</script>
<script type="text/javascript">
(function ($) {
$(function () {
$('.modal').modal();
});
})(jQuery);
</script>
{% endblock %}
@@ -21,27 +21,8 @@
{% block javascripts %}
<script src="https://maps.googleapis.com/maps/api/js?key=AIzaSyDYV8IJGtIoWLfXJQQvIuDQ88n2aEuRgpg&libraries=places"></script>
{% javascripts
'@vendors'
'@global'
'@talents'
output='assetic/main.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 %}
@@ -65,18 +65,21 @@
<div class="col s11 col-noPadding" style="position:relative;">
<div class="chip center-align">
<p class="m-0">
{% set nbAds = 0 %}
{% set fragment = "companies" %}
{% for territoryAd in c.getTerritoryAds if territoryAd.ad != null %}
{% set nbAds = nbAds + 1 %}
{% set fragment = "offers" %}
{% endfor %}
<a class="td-none color-grey3"
href="{{ path('territory_show',{'alias': c.alias, '_fragment':'offers' }) }}">
{% set nbAds = 0 %}
{% for territoryAd in c.getTerritoryAds if territoryAd.ad != null %}
{% set nbAds = nbAds + 1 %}
{% endfor %}
href="{{ path('territory_show',{'alias': c.alias, '_fragment': fragment }) }}">
{% if nbAds > 1 %}
<strong>{{ nbAds }} offres d'emploi en
cours sur ce territoire</strong>
<strong>{{ nbAds }} {{ 'message.territory.list.ads'|trans }}</strong>
{% elseif nbAds == 1 %}
<strong>{{ nbAds }} {{ 'message.territory.list.ad'|trans }}</strong>
{% else %}
<strong>{{ nbAds }} offre d'emploi en
cours sur ce territoire</strong>
<strong>{{ 'message.territory.list.noads'|trans }}</strong>
{% endif %}
</a>
</p>
@@ -71,11 +71,11 @@
- {{ company.addresses.billing.country|country }}</p>
{% endif %}
</div>
<div class="col s12 profil-links">
<div class="col s12 profil-links center-align">
{% if company.website %}
<a target="_blank" href="{{ company.website }}" class="td-none">
<span class="fa-stack fa-lg">
<i class="fa fa-circle fa-stack-2x z-depth-2"></i>
<i class="fa fa-circle fa-stack-2x"></i>
<i class="fa fa-link fa-stack-1x fa-inverse"></i>
</span>
</a>
@@ -32,8 +32,16 @@ assetic:
- 'js/vendors/jquery.daterangepicker.min.js'
talents:
inputs:
- 'js/vendors/jquery-3.1.1.min.js'
- 'js/vendors/dropzone.js'
- 'js/vendors/materialize.min.js'
- 'js/vendors/materialize-tags.min.js'
- 'js/vendors/typeahead.js'
- 'js/vendors/jquery-confirm.min.js'
- 'js/vendors/tooltipster.bundle.min.js'
- 'js/vendors/datepicker.min.js'
- 'js/vendors/jquery.validate.min.js'
- 'js/talent.js'
admin:
inputs:
- 'admin/AdminLTE/plugins/jQuery/jquery-2.2.3.min.js'
@@ -2,6 +2,18 @@ fos_elastica:
clients:
default: { host: %elastic_host%, port: %elastic_port% }
indexes:
tags:
types:
tagsfr:
mappings:
publicTag:
analyzer: keyword
type: text
persistence:
driver: orm
model: AppBundle\Entity\Ad
provider: ~
finder: ~
ads:
settings:
index:
@@ -8,7 +8,8 @@ parameters:
database_port: '5432'
database_name: database
database_user: user
database_password: 7C|Uk2B[.>"6{QO{
#database_password: 7C|Uk2B[.>"6{QO{
database_password: b|RN:iR<g,TNMqM6
#Mongo
mongodb_server: "mongodb://tt-website.mongo.preprod:27017"
#Prestashop
@@ -19,6 +19,10 @@ services:
class: AppBundle\Utils\Services\AdSearcher
arguments: ['@fos_elastica.finder.ads.adfr']
app.ad_tags_searcher:
class: AppBundle\Utils\Services\AdSearcher
arguments: ['@fos_elastica.finder.tags.tagsfr']
# Twig Extensions
twig.country_extension:
class: AppBundle\Twig\CountryExtension
@@ -298,7 +298,6 @@ class AdController extends Controller
if ($form->isSubmitted() && $form->isValid()) {
$data = $form->getData();
if (is_null($data['job'])) {
//return $this->redirectToRoute('homepage');
$session->remove('jobSearch');
unset($data['job']);
} else {
@@ -330,8 +329,13 @@ class AdController extends Controller
]);
} else {
$ads = $this->getPublishedAds($promoted);
if($request->get('tag')){
$data['tag'] = $request->get('tag');
$adSearcher = $this->get('app.ad_tags_searcher');
$ads = $adSearcher->process($data,'tag');
} else {
$ads = $this->getPublishedAds($promoted);
}
}
return $this->render('default/ad_search_result.html.twig', [
@@ -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);
}
}
}
+7 -2
View File
@@ -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
+10
View File
@@ -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; }
+312 -40
View File
@@ -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

+7 -2
View File
@@ -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>']
});
+19 -11
View File
@@ -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');
});
});
+66
View File
@@ -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;
}
}