Compare commits
17 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| d6f8941e47 | |||
| 5474397f5f | |||
| 44d0711dc1 | |||
| 9f6c1a740f | |||
| 8063c8479e | |||
| 04229b0781 | |||
| 4edfae9f1c | |||
| 870654c850 | |||
| 9413202660 | |||
| 215e325a8c | |||
| 9f8682c896 | |||
| c48fe53e6a | |||
| d69f32c657 | |||
| dba776d15f | |||
| bb3ed610ab | |||
| 75145d9e1c | |||
| b885e6866c |
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -17,7 +17,7 @@ endif
|
||||
DC_OVERRIDE := $(shell test -e conf/docker-compose.override.yml && echo "--file conf/docker-compose.override.yml")
|
||||
DC_OVERRIDE_ENV := $(shell test -e conf/docker-compose.$(ENV).yml && echo "--file conf/docker-compose.$(ENV).yml")
|
||||
|
||||
DC=ENV=$(ENV) CLIENT=$(CLIENT) $(DOCKERCOMPOSE) --project-name "$(CLIENT)_$(ENV)" --file conf/docker-compose.yml $(DC_OVERRIDE) $(DC_OVERRIDE_ENV)
|
||||
DC=ENV=$(ENV) CLIENT=$(CLIENT) "$(DOCKERCOMPOSE)" --project-name "$(CLIENT)_$(ENV)" --file conf/docker-compose.yml $(DC_OVERRIDE) $(DC_OVERRIDE_ENV)
|
||||
|
||||
default:
|
||||
$(info $(USAGE))
|
||||
|
||||
@@ -51,6 +51,13 @@ class AppKernel extends Kernel
|
||||
|
||||
//CookieBar
|
||||
new Fairlane\CookieConsentBundle\FairlaneCookieConsentBundle(),
|
||||
|
||||
//Api
|
||||
new JMS\SerializerBundle\JMSSerializerBundle(),
|
||||
new FOS\RestBundle\FOSRestBundle(),
|
||||
new WhiteOctober\PagerfantaBundle\WhiteOctoberPagerfantaBundle(),
|
||||
new Bazinga\Bundle\HateoasBundle\BazingaHateoasBundle(),
|
||||
new Lexik\Bundle\JWTAuthenticationBundle\LexikJWTAuthenticationBundle(),
|
||||
];
|
||||
|
||||
if (in_array($this->getEnvironment(), ['dev', 'test'], true)) {
|
||||
|
||||
@@ -169,10 +169,6 @@
|
||||
<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>
|
||||
@@ -230,30 +226,6 @@
|
||||
<source>profile.company.logo</source>
|
||||
<target>Logo de l'entreprise</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="talent.profile.title.label">
|
||||
<source>talent.profile.title.label</source>
|
||||
<target>Titre de votre profil</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="talent.profile.situation.label">
|
||||
<source>talent.profile.situation.label</source>
|
||||
<target>Votre situation</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="talent.profile.description.label">
|
||||
<source>talent.profile.description.label</source>
|
||||
<target>Quelques mots sur vous</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="profile.talent.tags">
|
||||
<source>profile.talent.tags</source>
|
||||
<target>Vos compétences.</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="profile.talent.under.tags">
|
||||
<source>profile.talent.under.tags</source>
|
||||
<target>Définissez vos clés dans l’ordre d’importance. Vous pouvez indiquer jusqu’à 50 compétences.</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="talent.menu.dashboard.label">
|
||||
<source>talent.menu.dashboard.label</source>
|
||||
<target>Mon profil</target>
|
||||
</trans-unit>
|
||||
<!-- ANNONCE-->
|
||||
<trans-unit id="ad.company.add.label">
|
||||
<source>ad.company.add.label</source>
|
||||
@@ -333,82 +305,6 @@
|
||||
<source>talent.menu.recommandations.label</source>
|
||||
<target>Mes recommandations</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="talent.profile.career.company.label">
|
||||
<source>talent.profile.career.company.label</source>
|
||||
<target>Entreprise</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="talent.profile.career.job.label">
|
||||
<source>talent.profile.career.job.label</source>
|
||||
<target>Intitulé du poste</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="talent.profile.career.begin.label">
|
||||
<source>talent.profile.career.begin.label</source>
|
||||
<target>Début</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="talent.profile.career.end.label">
|
||||
<source>talent.profile.career.end.label</source>
|
||||
<target>Fin</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="talent.profile.career.skills.label">
|
||||
<source>talent.profile.career.skills.label</source>
|
||||
<target>Vos compétences</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="talent.profile.career.actualJob.label">
|
||||
<source>talent.profile.career.actualJob.label</source>
|
||||
<target>Toujours en poste</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="talent.profile.career.place.label">
|
||||
<source>talent.profile.career.place.label</source>
|
||||
<target>Lieux</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="talent.profile.formation.name.label">
|
||||
<source>talent.profile.formation.name.label</source>
|
||||
<target>Diplome</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="talent.profile.formation.school.label">
|
||||
<source>talent.profile.formation.school.label</source>
|
||||
<target>Ecole</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="talent.profile.formation.actual.label">
|
||||
<source>talent.profile.formation.actual.label</source>
|
||||
<target>Toujours en cours</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="talent.profile.formation.obtention.label">
|
||||
<source>talent.profile.formation.obtention.label</source>
|
||||
<target>Année d'obtention</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="talent.profile.language.skill.1.label">
|
||||
<source>talent.profile.language.skill.1.label</source>
|
||||
<target>Notions</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="talent.profile.language.skill.2.label">
|
||||
<source>talent.profile.language.skill.2.label</source>
|
||||
<target>Compétence professionnelle limitée</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="talent.profile.language.skill.3.label">
|
||||
<source>talent.profile.language.skill.3.label</source>
|
||||
<target>Compétence professionnelle complète</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="talent.profile.language.skill.4.label">
|
||||
<source>talent.profile.language.skill.4.label</source>
|
||||
<target>Bilingue ou natif</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="talent.profile.language.name.label">
|
||||
<source>talent.profile.language.name.label</source>
|
||||
<target>Langue</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="talent.profile.situation.1.label">
|
||||
<source>talent.profile.situation.1.label</source>
|
||||
<target>En recherche d’emploi</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="talent.profile.situation.2.label">
|
||||
<source>talent.profile.situation.2.label</source>
|
||||
<target>À l’écoute d’opportunités</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="talent.profile.situation.3.label">
|
||||
<source>talent.profile.situation.3.label</source>
|
||||
<target>En poste</target>
|
||||
</trans-unit>
|
||||
<!-- TALENT -->
|
||||
<trans-unit id="ad.talent.answer.label">
|
||||
<source>ad.talent.answer.label</source>
|
||||
@@ -656,20 +552,8 @@
|
||||
<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>
|
||||
@@ -1,134 +0,0 @@
|
||||
{% extends 'admin/base_admin.html.twig' %}
|
||||
|
||||
|
||||
{% block contentHeader %}
|
||||
<h1>
|
||||
Liste des Candidatures
|
||||
</h1>
|
||||
<ol class="breadcrumb">
|
||||
<li><a href="{{ path('admin_dashboard') }}"><i class="fa fa-dashboard"></i> Dashboard</a></li>
|
||||
<li class="active">Annonces</li>
|
||||
</ol>
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
|
||||
<div class="box box-primary">
|
||||
<div class="box-body">
|
||||
<table id="answer_list_table" class="table table-hover table-bordered">
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="col-xs-2">Date d'envoi</th>
|
||||
<th>Utilisateur</th>
|
||||
<th>Annonce / Entreprise</th>
|
||||
<th>video</th>
|
||||
<th>Status</th>
|
||||
<th>action</th>
|
||||
</tr>
|
||||
</thead>
|
||||
|
||||
<tbody>
|
||||
{% for answer in answers if answer.status != "DRAFT" %}
|
||||
<tr>
|
||||
<td data-order="{{ answer.sendTime|date('U') }}">{{ answer.sendTime|date('d/m/Y') }}</td>
|
||||
<td>{{ answer.user.firstname }} {{ answer.user.lastname }}</td>
|
||||
{% if answer.ad %}
|
||||
<td>{{ answer.ad.company.brandname }} - {{ answer.ad.title }}</td>
|
||||
{% else %}
|
||||
<td>{{ answer.company.brandname }}</td>
|
||||
{% endif %}
|
||||
<td>
|
||||
|
||||
ID Candidature : {{ answer.id }}<br />
|
||||
{% if answer.video.cdnUrl is defined %}
|
||||
<iframe src="https://player.vimeo.com/video/{{ answer.video.cdnUrl|replace({ "/videos/": ""}) }}"
|
||||
width="auto" height="auto" frameborder="0" webkitallowfullscreen mozallowfullscreen
|
||||
allowfullscreen></iframe>
|
||||
{% endif %}
|
||||
</td>
|
||||
<td class="status">{{ answer.status }}</td>
|
||||
<td>
|
||||
Actions :
|
||||
<select class="changeStatus" name="changeStatus" data-id="{{ answer.id }}">
|
||||
<option value="null">choisir</option>
|
||||
<option value="SENDED">Envoyé</option>
|
||||
<option value="DRAFT">Brouillon</option>
|
||||
<option value="REFUSED">Refuser</option>
|
||||
</select>
|
||||
<br />
|
||||
<a class="delete-answer" href='{{ path("admin_answer_delete",{'id':answer.id }) }}' data-toggle="tooltip" title="Supprimer">
|
||||
Supprimer <i class="fa fa-trash"></i>
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{% endblock %}
|
||||
|
||||
{% block javascripts %}
|
||||
<script>
|
||||
$(function () {
|
||||
$('.changeStatus').change(function(e){
|
||||
e.preventDefault();
|
||||
var idAnswer = $(this).data('id');
|
||||
var value = $(this).val();
|
||||
var route = '/app_dev.php/admin/config/answer/' + idAnswer + '/status/' + value;
|
||||
var select = $(this);
|
||||
$.ajax({
|
||||
type: "POST",
|
||||
url: route,
|
||||
dataType: "json",
|
||||
success: function (msg) {
|
||||
console.log("ok");
|
||||
select.parent().prev('.status').html(value);
|
||||
}
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
$('#answer_list_table').DataTable({
|
||||
"paging": true,
|
||||
"lengthChange": true,
|
||||
"searching": true,
|
||||
"ordering": true,
|
||||
"info": true,
|
||||
"autoWidth": false,
|
||||
"language": {
|
||||
"url": "http://cdn.datatables.net/plug-ins/1.10.11/i18n/French.json"
|
||||
},
|
||||
"columnDefs": [
|
||||
{"targets": 1, "searchable": true, "orderable": true},
|
||||
{"targets": 2, "searchable": true, "orderable": true},
|
||||
{"targets": 4, "searchable": true, "orderable": true, "className": "text-center"},
|
||||
],
|
||||
"order": [[ 0, "desc" ]]
|
||||
});
|
||||
|
||||
$(".delete-answer").confirm({
|
||||
title: "Êtes vous sûr de supprimer cette candidature ?",
|
||||
content: "Supprimer cette candidature supprimera le média associé",
|
||||
type: 'red',
|
||||
boxWidth: '30%',
|
||||
useBootstrap: false,
|
||||
buttons: {
|
||||
confirm: {
|
||||
text: 'Confirmer',
|
||||
action: function () {
|
||||
console.log(this.$target);
|
||||
location.href = this.$target.attr('href');
|
||||
return true;
|
||||
}
|
||||
},
|
||||
cancel: {
|
||||
text: 'Annuler'
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
</script>
|
||||
|
||||
{% endblock %}
|
||||
@@ -28,11 +28,6 @@
|
||||
<i class="fa fa-file-video-o" aria-hidden="true"></i> <span>Vidéos Talent</span>
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="{{ path('admin_anwser_moderation_list') }}">
|
||||
<i class="fa fa-file-video-o" aria-hidden="true"></i> <span>Candidatures</span>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
<ul class="sidebar-menu">
|
||||
<li class="header">ENTITEES</li>
|
||||
|
||||
@@ -28,7 +28,6 @@
|
||||
<i class="fa fa-star color-gold" aria-hidden="true"></i>
|
||||
</span>
|
||||
{% endif %}
|
||||
<br/><i class="fa fa-link"></i>Url :<br /> https://www.talentstube.com{{ path("talent_show",{'alias':user.company.alias})}}<br />
|
||||
</h3>
|
||||
<br>
|
||||
<span><a href="mailto:{{ user.email }}">{{ user.email }}</a></span>
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
<div id="modal-tuto" class="modal modal-fixed-footer">
|
||||
<div id="modal-tuto" class="modal">
|
||||
<div class="modal-content">
|
||||
<div class="row">
|
||||
<div class="col s12">
|
||||
<h3 class="color-blue1 center-align title-tuto">Les conseils de Talents Tube</h3>
|
||||
<div class="col-content">
|
||||
<h3 class="color-blue1 center-align">Les conseils de Talents Tube</h3>
|
||||
<div class="owl-carousel tuto-carousel">
|
||||
<div class="item-tuto-webcam carousel-item">
|
||||
<div class="row">
|
||||
<div class="col s3 offset-s1 hide-on-med-and-down">
|
||||
<div class="col s4 offset-s1 hide-on-med-and-down">
|
||||
<img class="responsive-img" src="{{ asset('img/img_popupcv/cv_video_step_1.svg')}}" alt="">
|
||||
</div>
|
||||
<div class="col s11 m11 l6 offset-s1 left-align">
|
||||
@@ -31,7 +31,7 @@
|
||||
</div>
|
||||
<div class="item-tuto-webcam carousel-item">
|
||||
<div class="row">
|
||||
<div class="col s3 offset-s1 hide-on-med-and-down">
|
||||
<div class="col s4 offset-s1 hide-on-med-and-down">
|
||||
<img class="responsive-img" src="{{ asset('img/img_popupcv/cv_video_step_2.svg')}}" alt="">
|
||||
</div>
|
||||
<div class="col s11 m11 l6 offset-s1 left-align">
|
||||
@@ -51,7 +51,7 @@
|
||||
</div>
|
||||
<div class="item-tuto-webcam carousel-item">
|
||||
<div class="row">
|
||||
<div class="col s3 offset-s1 hide-on-med-and-down">
|
||||
<div class="col s4 offset-s1 hide-on-med-and-down">
|
||||
<img class="responsive-img" src="{{ asset('img/img_popupcv/cv_video_step_3.svg')}}" alt="">
|
||||
</div>
|
||||
<div class="col s11 m11 l6 offset-s1 left-align">
|
||||
@@ -73,15 +73,12 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="carousel-fixed-item right">
|
||||
<a class="text close-tuto">Passer l'intro</a>
|
||||
<a class="btn btn-default next-slide">suivant</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<div id="customDots" class="owl-dots"></div>
|
||||
<div class="carousel-fixed-item right">
|
||||
<a class="text close-tuto">Passer l'intro</a>
|
||||
<a class="btn btn-default next-slide">suivant</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -15,18 +15,11 @@
|
||||
{% include 'company/ad_breadcrumb.html.twig' with {'step': 3,'ad': answer.ad,'firstname':answer.user.firstname ,'lastname':answer.user.lastname} %}
|
||||
<div class="col s12 m6">
|
||||
<div id="mini-profil-block">
|
||||
<a target="_blank" href="{{ path('talent_show',{'alias':answer.user.company.alias} ) }}">
|
||||
{% include 'talent/talent_picture.html.twig' with {
|
||||
'user' : answer.user
|
||||
} %}
|
||||
</a>
|
||||
<div>
|
||||
<div class="mini-profil-picture-name">
|
||||
<a target="_blank" href="{{ path('talent_show',{'alias':answer.user.company.alias} ) }}">
|
||||
{{ answer.user.firstname }} {{ answer.user.lastname }}
|
||||
<i class="fa fa-user-circle"></i>
|
||||
</a>
|
||||
</div>
|
||||
<div class="mini-profil-picture-name">{{ answer.user.firstname }} {{ answer.user.lastname }}</div>
|
||||
<div>Recu le {{ answer.sendTime|date('d/m/Y') }}</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -68,11 +68,11 @@
|
||||
- {{ company.addresses.billing.country|country }}</p>
|
||||
{% endif %}
|
||||
</div>
|
||||
<div class="col s12 profil-links center-align">
|
||||
<div class="col s12 profil-links">
|
||||
{% if company.website %}
|
||||
<a target="_blank" href="{{ company.website }}" class="td-none">
|
||||
<span class="fa-stack fa-lg">
|
||||
<i class="fa fa-circle fa-stack-2x"></i>
|
||||
<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>
|
||||
|
||||
@@ -46,9 +46,9 @@
|
||||
<span class="clearfix"></span>
|
||||
<div class="keywords">
|
||||
{% if a.publicTag %}
|
||||
{% for tag in a.publicTag %}
|
||||
{% for keyword in a.publicTag %}
|
||||
<div class="chip">
|
||||
<a href="{{ path('ad_search_result',{'tag':tag }) }}">{{ tag }}</a>
|
||||
{{ keyword }}
|
||||
</div>
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
|
||||
@@ -52,9 +52,7 @@
|
||||
<div class="col s11 col-noPadding" style="position:relative;">
|
||||
<div class="frame" id="basic">
|
||||
<ul class="slidee">{% for tag in a.publicTag %}
|
||||
<li class="chip">
|
||||
<a href="{{ path('ad_search_result',{'tag':tag }) }}" class="hover-blue2">{{ tag }}</a>
|
||||
</li>{% endfor %}</ul>
|
||||
<li class="chip">{{ tag }}</li>{% endfor %}</ul>
|
||||
</div>
|
||||
<div class="controls center">
|
||||
<a class="prev"><i class="fa fa-arrow-circle-left" aria-hidden="true"></i></a>
|
||||
|
||||
@@ -51,11 +51,6 @@
|
||||
OFFRE POURVUE
|
||||
</div>
|
||||
{% endif %}
|
||||
{% if ad.id == 53 %}
|
||||
<div class="isPromoted">
|
||||
Traitement des candidatures vidéos
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
@@ -81,8 +76,9 @@
|
||||
</div>
|
||||
<div class="col s12">
|
||||
{% for tag in ad.publicTag %}
|
||||
<p class="chip"><a href="{{ path('ad_search_result',{'tag':tag }) }}" class="hover-blue2">{{ tag }}</a></p>
|
||||
<p class="chip">{{ tag }}</p>
|
||||
{% endfor %}
|
||||
|
||||
<div class="item-detail-description">
|
||||
<h3 class="blue-text">Détails de l'offre d'emploi</h3>
|
||||
<p>{{ ad.description|nl2br }}</p>
|
||||
@@ -103,14 +99,12 @@
|
||||
</div>
|
||||
{% elseif not is_granted('ROLE_COMPANY') %}
|
||||
{% if not ad.isPromoted %}
|
||||
{% if ad.id != 53 %}
|
||||
<p class="item-detail-reply">
|
||||
<a title="postuler-bottom" href="{{ path('talent_answer_create',{'id': ad.getId()}) }}"
|
||||
class="btn btn-default">
|
||||
Postuler
|
||||
</a>
|
||||
</p>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
|
||||
@@ -57,14 +57,12 @@
|
||||
</div>
|
||||
{% elseif not is_granted('ROLE_COMPANY') %}
|
||||
{% if not ad.isPromoted %}
|
||||
{% if ad.id != 53 %}
|
||||
<p class="item-detail-reply">
|
||||
<a title="postuler-side" href="{{ path('talent_answer_create',{'id': ad.getId()}) }}"
|
||||
class="btn btn-default">
|
||||
Postuler
|
||||
</a>
|
||||
</p>
|
||||
{% endif %}
|
||||
{% else %}
|
||||
<div class="item-detail-ispromoted">
|
||||
Offre pourvue
|
||||
|
||||
@@ -32,22 +32,15 @@
|
||||
<div class="row row-tags row-noMargin">
|
||||
<div class="col s11 col-noPadding" style="position:relative;">
|
||||
<div class="chip center-align">
|
||||
{% set nbAds = c.getPublishedAds|length %}
|
||||
{% set fragment = "" %}
|
||||
{% if nbAds > 0 %}
|
||||
{% set fragment = "offers" %}
|
||||
{% endif %}
|
||||
<a class="td-none color-grey3"
|
||||
href="{{ path('company_show',{'alias': c.alias, '_fragment': fragment }) }}">
|
||||
href="{{ path('company_show',{'alias': c.alias, '_fragment':'offers' }) }}">
|
||||
{% set nbAds = c.getPublishedAds|length %}
|
||||
{% if nbAds > 1 %}
|
||||
<strong>{{ c.getPublishedAds|length }} offres d'emploi en
|
||||
cours</strong>
|
||||
{% elseif nbAds == 1 %}
|
||||
{% else %}
|
||||
<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 à la une</h2>
|
||||
<h2 class="blue-text no-margin-top">Les talents</h2>
|
||||
</div>
|
||||
<h3 class="subtitles-homepage">Découvrez leur CV vidéo et vidéo de motivation.</h3>
|
||||
<h3 class="subtitles-homepage">Découvrez leurs CV vidéo et vidéo de motivation.</h3>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="owl-carousel owl-carousel-home home-talent-carousel">
|
||||
@@ -111,12 +111,6 @@
|
||||
{% 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 %}
|
||||
@@ -8,7 +8,7 @@
|
||||
<h2>Détail de mon annonce</h2>
|
||||
<div>
|
||||
<div>
|
||||
<a href="{{ absolute_url(path('ad_show',{'alias': ad.alias })) }}" title="{{ ad.title }}" class="item-list-media">
|
||||
<a href="{{ path('ad_show',{'alias': ad.alias }) }}" title="{{ ad.title }}" class="item-list-media">
|
||||
{% if ad.video %}
|
||||
{% if ad.video.thumbnails.0.sizes is defined %}
|
||||
<img width="100%" src="{{ ad.video.thumbnails.0.sizes.4.link }}"
|
||||
@@ -19,7 +19,7 @@
|
||||
</div>
|
||||
<div>
|
||||
<h3>
|
||||
<a href="{{ absolute_url(path('ad_show',{'alias': ad.alias })) }}"
|
||||
<a href="{{ path('ad_show',{'alias': ad.alias }) }}"
|
||||
title="{{ ad.title }}">{{ ad.title }}</a>
|
||||
</h3>
|
||||
<p>
|
||||
@@ -40,10 +40,10 @@
|
||||
</p>
|
||||
{% endif %}
|
||||
<p>Entité :
|
||||
<a href="{{ absolute_url(path('company_show',{'alias': ad.company.alias })) }}">{{ ad.company.brandName }}</a>
|
||||
<a href="{{ path('company_show',{'alias': ad.company.alias }) }}">{{ ad.company.brandName }}</a>
|
||||
</p>
|
||||
<p>
|
||||
<a href="{{ absolute_url(path('ad_show',{'alias': ad.alias })) }}" title="{{ ad.title }}" class="btn btn-default">Voir
|
||||
<a href="{{ path('ad_show',{'alias': ad.alias }) }}" title="{{ ad.title }}" class="btn btn-default">Voir
|
||||
l'offre d'emploi</a>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
<br/>
|
||||
<br/>
|
||||
<div style="text-align:center;">
|
||||
<a class="btn btn-default" href="{{ absolute_url(path('talent_ad_detail',{'alias': answer.ad.alias,'id': answer.id })) }}">Visionner la réponse vidéo</a>
|
||||
<a class="btn btn-default" href="{{ path('talent_ad_detail',{'alias': answer.ad.alias,'id': answer.id }) }}">Visionner la réponse vidéo</a>
|
||||
</div>
|
||||
{% else %}
|
||||
<br />
|
||||
@@ -26,7 +26,7 @@
|
||||
<br/>
|
||||
<br/>
|
||||
<div style="text-align:center;">
|
||||
<a class="btn btn-default" href="{{ absolute_url(path('talent_ad_detail',{'alias': answer.ad.alias,'id': answer.id })) }}">Consulter la réponse</a>
|
||||
<a class="btn btn-default" href="{{ path('talent_ad_detail',{'alias': answer.ad.alias,'id': answer.id }) }}">Consulter la réponse</a>
|
||||
</div>
|
||||
{% endif %}
|
||||
<br>
|
||||
|
||||
@@ -12,12 +12,12 @@
|
||||
<div class="row">
|
||||
<div class="col s12">
|
||||
{% if medias|length == 0 and is_granted('ROLE_TALENT') %}
|
||||
<div class="col s12 center-align">
|
||||
<div class="col s12 col-actions 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="btn btn-default modal-trigger" href="#addVideo">Ajouter une
|
||||
<a class="waves-effect waves-light btn btn-default modal-trigger" href="#addVideo">Ajouter une
|
||||
vidéo</a>
|
||||
</div>
|
||||
{% else %}
|
||||
|
||||
@@ -1,315 +0,0 @@
|
||||
{% if is_granted('ROLE_COMPANY') %}
|
||||
{% set extendTemplate='company/base_dashboard_company.html.twig' %}
|
||||
{% elseif is_granted('ROLE_TERRITORY') %}
|
||||
{% set extendTemplate='territory/base_dashboard_territory.html.twig' %}
|
||||
{% else %}
|
||||
{% set extendTemplate='talent/base_dashboard_talent.html.twig' %}
|
||||
{% endif %}
|
||||
|
||||
{% extends extendTemplate %}
|
||||
|
||||
{% block dashContent %}
|
||||
<div class="row">
|
||||
<div class="col s12">
|
||||
{#<a class="waves-effect waves-light btn btn-default modal-trigger left m-r-10" href="#addVideo">Créer une vidéo</a>#}
|
||||
{% if medias|length > 0 %}
|
||||
<a class="waves-effect waves-light btn btn-default modal-trigger left" href="#addVideo">Ajouter une vidéo</a>
|
||||
<a class="btn btn-delete-video btn-round tooltipped red right" href="#!" data-position="top"
|
||||
data-tooltip="Supprimer des vidéos"><i class="fa fa-trash" aria-hidden="true"></i>
|
||||
</a>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
{% if medias|length == 0 %}
|
||||
<div class="col s12 col-actions center-align" id="no-video-talents">
|
||||
<br/><br/>
|
||||
<strong class="color-grey3">Vous ne possédez pas encore de CV vidéo!</strong><br/>
|
||||
<span class="color-grey2">Cliquez sur le bouton pour ajouter votre première vidéo.</span>
|
||||
<br/><br/>
|
||||
<a class="waves-effect waves-light btn btn-default modal-trigger" href="#addVideo">Ajouter une
|
||||
vidéo</a>
|
||||
</div>
|
||||
{% else %}
|
||||
{% if app.user.company.presentationVideo %}
|
||||
{% set media = app.user.company.presentationVideo %}
|
||||
{% endif %}
|
||||
<div class="row video_premier z-depth-3">
|
||||
{% if app.user.company.presentationVideo %}
|
||||
<div class="col s4 video_col col-card">
|
||||
<div class="preloader-wrapper small">
|
||||
<div class="spinner-layer spinner-blue-only">
|
||||
<div class="circle-clipper left">
|
||||
<div class="circle"></div>
|
||||
</div><div class="gap-patch">
|
||||
<div class="circle"></div>
|
||||
</div><div class="circle-clipper right">
|
||||
<div class="circle"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="embed-responsive embed-responsive-16by9">
|
||||
<iframe src="https://player.vimeo.com{{ media.getCdnUrl()|replace({ "videos": "video"}) }}"
|
||||
width="100%" height="550" frameborder="0" webkitallowfullscreen
|
||||
mozallowfullscreen allowfullscreen></iframe>
|
||||
</div>
|
||||
<a data-id="{{ media.getCdnUrl()|replace({ "/videos/": ""}) }}" href="#!" class="btn-floating left halfway-fab changeThumbnail"><i class="material-icons">image</i></a>
|
||||
</div>
|
||||
{% else %}
|
||||
<div class="col s12 video_col">
|
||||
<div class="no-presentation-video">
|
||||
<strong>
|
||||
Vous ne disposez pas de vidéo de présentation !
|
||||
</strong><br/>
|
||||
Cliquez sur le bouton ci-dessous pour la sélectionner dans votre bibliothèque.
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
{% if media is defined %}
|
||||
<div class="col s8 content_col">
|
||||
<div class="col s12 video_col_content">
|
||||
<h3>{{ media.title }}</h3>
|
||||
</div>
|
||||
<div class="video_col_actions">
|
||||
<div class="col s6 video_col_link_share">
|
||||
<a class="btn btn-default modal-trigger" href="#shareCv">Partager le profil
|
||||
<i class="fa fa-share-alt" aria-hidden="true"></i>
|
||||
</a>
|
||||
</div>
|
||||
<div class="col s6 video_col_edit_premier">
|
||||
<a class="btn btn-cancel-premier red right" href="#!" data-position="top" data-tooltip="Annuler">
|
||||
<span>Annuler</span> <i class="fa fa-ban" aria-hidden="true"></i>
|
||||
</a>
|
||||
<a class="btn btn-default btn-video-premier right">
|
||||
<span>Remplacer la vidéo</span>
|
||||
<i class="fa fa-pencil" aria-hidden="true"></i>
|
||||
</a>
|
||||
<div class="clearfix"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
<div class="row">
|
||||
{% for media in medias %}
|
||||
{% set classVideo = "" %}
|
||||
{% if app.user.company.presentationVideo %}
|
||||
{% set idPresentationVideo = app.user.company.presentationVideo.id %}
|
||||
{% else %}
|
||||
{% set idPresentationVideo = false %}
|
||||
{% endif %}
|
||||
{% if idPresentationVideo != media.id %}
|
||||
<div class="col s12 m6 l4 col-card">
|
||||
<div class="card card-video-action z-depth-1">
|
||||
<div class="card-image">
|
||||
<div class="preloader-wrapper small">
|
||||
<div class="spinner-layer spinner-blue-only">
|
||||
<div class="circle-clipper left">
|
||||
<div class="circle"></div>
|
||||
</div><div class="gap-patch">
|
||||
<div class="circle"></div>
|
||||
</div><div class="circle-clipper right">
|
||||
<div class="circle"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="embed-responsive embed-responsive-16by9">
|
||||
<iframe src="https://player.vimeo.com{{ media.getCdnUrl()|replace({ "videos": "video"}) }}"
|
||||
width="100%" height="230px" frameborder="0" webkitallowfullscreen
|
||||
mozallowfullscreen allowfullscreen></iframe>
|
||||
</div>
|
||||
<div class="card-fog choice-fog">
|
||||
<div class="card-fog-container">
|
||||
<a data-id="{{ media.getId() }}"
|
||||
class="btn btn-default btn-default-video {{ classVideo }} tooltipped"
|
||||
data-position="top"
|
||||
data-tooltip="{{ 'global.video.defaultaction.label'|trans }}">
|
||||
Choisir cette vidéo
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
{% set classFog ="" %}
|
||||
{% set messageTooltipFog ="" %}
|
||||
{% if media.getAds().toArray() %}
|
||||
{% set classFog = "fogLight" %}
|
||||
{% set messageTooltipFog ="Vidéo associée à une annonce" %}
|
||||
{% endif %}
|
||||
|
||||
{% if media.getAnswers().toArray() %}
|
||||
{% set classFog = "fogLight" %}
|
||||
{% set messageTooltipFog ="Vidéo associée à une réponse" %}
|
||||
{% endif %}
|
||||
<div class="card-fog delete-fog {{ classFog }}">
|
||||
<div class="card-fog-container">
|
||||
{% if media.getAds().toArray() or media.getAnswers().toArray() %}
|
||||
<div class="card-fog-message">
|
||||
Vous ne pouvez pas supprimer cette vidéo.<br/>
|
||||
<i data-position="top" data-tooltip="{{ messageTooltipFog }}"
|
||||
class="fa fa-question-circle tooltipped" aria-hidden="true"></i>
|
||||
</div>
|
||||
{% else %}
|
||||
<a class="btn btn-default halfway-fab waves-effect waves-light red delete_unattached_media tooltipped"
|
||||
href="{{ path("delete_unattached_media",{"id" : media.getId()}) }}"
|
||||
data-position="top" data-tooltip="{{ 'media.delete.video.label'|trans }}">Supprimer</a>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
<a data-id="{{ media.getCdnUrl()|replace({ "/videos/": ""}) }}" href="#!" class="btn-floating left halfway-fab changeThumbnail"><i class="material-icons">image</i></a>
|
||||
</div>
|
||||
<div class="card-content">
|
||||
<p>
|
||||
<strong><span data-id="{{ media.id }}" class="titleVideo truncate tooltipped"
|
||||
data-position="top"
|
||||
data-tooltip="{{ media.title }}">{{ media.title }}</span></strong>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
</div>
|
||||
|
||||
|
||||
<div id="changeThumbnailVideo" class="modal modal-fixed-footer modal-fixed-header">
|
||||
<div class="modal-header">
|
||||
<h3 class="color-blue1">Modifier la vignette</h3>
|
||||
<span class="right">
|
||||
<a href="#!" class="modal-close">
|
||||
<img src="{{ asset('/img/close-modal.svg') }}" >
|
||||
</a>
|
||||
</span>
|
||||
</div>
|
||||
<div class="modal-content">
|
||||
<div class="row">
|
||||
<div class="col s6">
|
||||
<div class="embed-responsive embed-responsive-16by9">
|
||||
<div class="col s12">
|
||||
<div id="video-vimeo"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col s6">
|
||||
<p><strong>Lancez la vidéo</strong> , puis <strong>appuyer sur pause</strong> pour définir l’image.
|
||||
<br />Une fois votre vignette définie, cliquez sur le bouton
|
||||
<strong>Sauvegarder</strong>.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<a href="#!" class="modal-action modal-close btn btn-default btn-round captur">Sauvegarder</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
{% set video = null %}
|
||||
<div id="addVideo" class="modal modal-fixed-footer">
|
||||
<div class="modal-content">
|
||||
<div class="row">
|
||||
{{ form_start(form, {'attr': { 'id': 'form_media' } }) }}
|
||||
<div class="input-field col s8">
|
||||
{{ form_rest(form) }}
|
||||
</div>
|
||||
<div class="col s4 right-align">
|
||||
<button id="submit" class="btn btn-default disabled" type="submit">Enregistrer</button>
|
||||
{% set messageTooltiped = "Votre vidéo ne doit pas dépasser les 500Mo.\n
|
||||
Les formats de vidéo acceptés sont les suivants : .mp4, .mov, .qt, .mkv, .avi, .m4v, .webm." %}
|
||||
<i class="fa fa-question-circle tooltipped" data-position="top" data-delay="50"
|
||||
data-tooltip="{{ messageTooltiped }}" aria-hidden="true"></i>
|
||||
</div>
|
||||
{{ form_end(form) }}
|
||||
<div class="col s12">
|
||||
{% include 'media/dropzone.html.twig' with {'deleting': 'false'} %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<a href="#!" class="modal-action modal-close btn btn-default btn-round">Fermer</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="shareCv" class="modal modal-fixed-footer">
|
||||
<div class="modal-content">
|
||||
<div class="row">
|
||||
<h2>Vous souhaitez partager votre profil à d'autres entreprises?</h2>
|
||||
<h3>Copiez et ajoutez l'adresse ci-dessous lors de vos candidatures</h3>
|
||||
|
||||
<input id="linkToCopy" type="text" value="https://www.talentstube.com{{ path("talent_show", {"alias": app.user.company.alias }) }}">
|
||||
<a class="btn btn-default btn-round" id="copyLink">Copier</a><br />
|
||||
<a class="modal-action modal-close">Fermer</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{% endblock %}
|
||||
{% block javascripts %}
|
||||
{{ parent() }}
|
||||
<script type="text/javascript">
|
||||
var urlDropzone = '{{ path("upload_media_default", {"id": app.user.id }) }}';
|
||||
var urlDelete = '';
|
||||
var idObject = null;
|
||||
var typeObject = null;
|
||||
var videoExist = false;
|
||||
var mediaDefaultUrl = '{{ path("media_default") }}';
|
||||
var idUser = '{{ app.user.id }}';
|
||||
var mediaEditTitleUrl = "{{ path('media_edit_title', {'id': 'id_video'})|escape('js') }}";
|
||||
$(document).ready(function(){
|
||||
$('.modal').modal();
|
||||
});
|
||||
</script>
|
||||
<script src="{{ asset('/js/mediaListing.js') }}"></script>
|
||||
<script src="{{ asset('/js/dropzone.js') }}"></script>
|
||||
<script src="https://player.vimeo.com/api/player.js"></script>
|
||||
<script type="text/javascript">
|
||||
$(document).ready(function(){
|
||||
var options = {
|
||||
id: null
|
||||
};
|
||||
var player = null;
|
||||
$('.modal-close').on('click',function(){
|
||||
$('#changeThumbnailVideo').modal('close');
|
||||
});
|
||||
$('.changeThumbnail').on('click',function(){
|
||||
$('#changeThumbnailVideo').modal();
|
||||
$('#changeThumbnailVideo').modal('open');
|
||||
var idVideo = $(this).data('id');
|
||||
options = {
|
||||
id: idVideo
|
||||
};
|
||||
player = new Vimeo.Player('video-vimeo', options);
|
||||
});
|
||||
|
||||
$('.captur').on('click',function(e){
|
||||
e.preventDefault();
|
||||
$('a.changeThumbnail').data('id',options.id).parents('.col-card').find('.preloader-wrapper').addClass('active');
|
||||
player.getCurrentTime().then(function(seconds) {
|
||||
var data = {'duration': seconds, 'id':options.id};
|
||||
$.ajax({
|
||||
url:"{{ path('video_changeThumbnail') }}",
|
||||
type:"POST",
|
||||
data: JSON.stringify(data),
|
||||
success:function(response) {
|
||||
$('a.changeThumbnail').data('id',options.id).parents('.col-card').each(function( index ) {
|
||||
var iframe = $( this ).contents().find('iframe');
|
||||
iframe[0].src = iframe[0].src;
|
||||
});
|
||||
},
|
||||
error:function(error){
|
||||
console.log(error)
|
||||
}
|
||||
});
|
||||
}).catch(function(error) {
|
||||
console.log(error);
|
||||
});
|
||||
});
|
||||
$("iframe").on("load", function () {
|
||||
$('.preloader-wrapper').removeClass('active');
|
||||
});
|
||||
});
|
||||
</script>
|
||||
{% endblock %}
|
||||
@@ -38,16 +38,7 @@
|
||||
<a href="{{ path('talent_answer_create',{id:a.ad.id}) }}">
|
||||
<i class="fa fa-pencil-square-o" aria-hidden="true"></i>
|
||||
</a>
|
||||
{% elseif a.status == "DRAFT" and a.company != null %}
|
||||
<a href="{{ path('talent_spontaneous_application_create',{id:a.company.id}) }}">
|
||||
<i class="fa fa-pencil-square-o" aria-hidden="true"></i>
|
||||
</a>
|
||||
{% endif %}
|
||||
{% if a.isViewed %}
|
||||
{{ 'VIEWED'|trans }}
|
||||
{% else %}
|
||||
{{ a.status|trans }}
|
||||
{% endif %}
|
||||
{% endif %}{{ a.status|trans }}
|
||||
</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
@@ -82,11 +73,4 @@
|
||||
var player_vimeo = new Vimeo.Player('player_vimeo');
|
||||
});
|
||||
</script>
|
||||
<script type="text/javascript">
|
||||
(function ($) {
|
||||
$(function () {
|
||||
$('.modal').modal();
|
||||
});
|
||||
})(jQuery);
|
||||
</script>
|
||||
{% endblock %}
|
||||
@@ -21,8 +21,27 @@
|
||||
{% 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' %}
|
||||
output='assetic/main.dash.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 data-target="modalProfilePicture" class="modal-trigger" href="#modalProfilePicture">
|
||||
<a 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 data-target="modalProfilePicture" class="modal-trigger" href="#modalProfilePicture">
|
||||
<a 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 data-target="modalProfilePicture" class="modal-trigger" href="#modalProfilePicture">
|
||||
<a href="#modalProfilePicture">
|
||||
<i class="fa fa-pencil" aria-hidden="true"></i>
|
||||
</a>
|
||||
{% endif %}
|
||||
</div>
|
||||
|
||||
<p class="profil-name">
|
||||
<a href="https://www.talentstube.com{{ path("talent_show", {"alias": app.user.company.alias }) }}"><b>{{ app.user.firstname }} {{ app.user.lastname|upper }}</b></a>
|
||||
<b>{{ app.user.firstname }} {{ app.user.lastname|upper }}</b>
|
||||
</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>
|
||||
{{ 'talent.menu.dashboard.label'|trans }}
|
||||
{{ 'company.menu.dashboard.label'|trans }}
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
|
||||
@@ -3,102 +3,13 @@
|
||||
{% 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">
|
||||
<h4>CV Vidéo générique</h4>
|
||||
<span class="bg-blue-1 text-gradient font-2 fs-20">CV Vidéo générique</span>
|
||||
<div class="switch d-inblock pull-right">
|
||||
<label>
|
||||
Etre visible des recruteurs
|
||||
@@ -138,145 +49,89 @@
|
||||
<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(formCompany, {'attr': {'id': 'form_profile_edit','novalidate': 'novalidate'}}) }}
|
||||
<div class="bg-bordered professional-info row m-b-10 p-20">
|
||||
{{ form_start(form) }}
|
||||
<div class="bg-bordered row m-b-10 p-20">
|
||||
|
||||
<div class="col s12">
|
||||
<h4>Information Professionnelles</h4>
|
||||
<span class="bg-blue-1 text-gradient font-2 fs-20">Information Professionnelles</span>
|
||||
</div>
|
||||
<div class="col s12">
|
||||
{{ 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>
|
||||
<div class="m-t-10">
|
||||
{{ form_label(form.company.tagsComma) }}
|
||||
<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(formCompany.tagsComma) }}
|
||||
<span class="xsmall">Insérez une virgule ou appuyez sur ENTRÉE pour séparer vos mots-clés.</span>
|
||||
<br />
|
||||
{{ form_widget(form.company.tagsComma) }}
|
||||
</div>
|
||||
{{ 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 }}"/>
|
||||
{{ form_row(form.company.tagsComma) }}
|
||||
{{ form_row(form.company.website) }}
|
||||
{{ form_row(form.company.twitter) }}
|
||||
{{ form_row(form.company.linkedin) }}
|
||||
</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">
|
||||
<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>
|
||||
<span class="bg-blue-1 text-gradient font-2 fs-20">Information personnelles</span>
|
||||
</div>
|
||||
<div class="col s12">
|
||||
<div class="p-t-10">
|
||||
<div class="col s6 p-r-10">
|
||||
{{ form_row(formProfile.firstname) }}
|
||||
{{ form_row(form.firstname) }}
|
||||
</div>
|
||||
<div class="col s6">
|
||||
{{ form_row(formProfile.lastname) }}
|
||||
{{ form_row(form.lastname) }}
|
||||
</div>
|
||||
<div class="col s6">
|
||||
{{ form_row(formProfile.birthday) }}
|
||||
{{ form_row(form.birthday) }}
|
||||
</div>
|
||||
<div class="col s6">
|
||||
{{ form_row(formProfile.gender) }}
|
||||
{{ form_row(form.gender) }}
|
||||
</div>
|
||||
<div class="col s12">
|
||||
{{ form_row(formProfile.company.address) }}
|
||||
{{ form_row(formProfile.company.addressComp) }}
|
||||
{{ form_row(form.company.address) }}
|
||||
{{ form_row(form.company.addressComp) }}
|
||||
</div>
|
||||
<div class="col s6 p-r-10">
|
||||
{{ form_row(formProfile.company.city) }}
|
||||
{{ form_row(form.company.city) }}
|
||||
</div>
|
||||
<div class="col s6">
|
||||
{{ form_row(formProfile.company.zipcode) }}
|
||||
{{ form_row(form.company.zipcode) }}
|
||||
</div>
|
||||
<div class="col s12">
|
||||
{{ form_row(formProfile.company.country) }}
|
||||
{{ form_row(form.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>
|
||||
|
||||
{{ form_end(formProfile) }}
|
||||
|
||||
|
||||
<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) }}
|
||||
<div id="liste-offres" class="bg-bordered row m-t-20 m-b-10 p-20">
|
||||
<div class="col s12">
|
||||
<h4>Mes dernières offres consultées</h4>
|
||||
<span class="bg-blue-1 text-gradient font-2 fs-20">Mes dernières offres consultées</span>
|
||||
</div>
|
||||
<div class="owl-carousel owl-carousel-ptalent">
|
||||
{% for historyAd in historyAds %}
|
||||
@@ -310,8 +165,8 @@
|
||||
{% endblock %}
|
||||
|
||||
{% block javascripts %}
|
||||
|
||||
{{ parent() }}
|
||||
{% if app.user.company.presentationVideo is null %}
|
||||
<script type="text/javascript">
|
||||
var urlDropzone = '{{ path("upload_media_presentation") }}';
|
||||
var urlDelete = '';
|
||||
@@ -323,14 +178,25 @@
|
||||
var mediaEditTitleUrl = "{{ path('media_edit_title', {'id': 'id_video'})|escape('js') }}";
|
||||
</script>
|
||||
<script src="{{ asset('/js/dropzone.js') }}"></script>
|
||||
{% endif %}
|
||||
<script src="{{ asset('/js/profileTalent.js') }}"></script>
|
||||
<script type="text/javascript">
|
||||
(function ($) {
|
||||
$(function () {
|
||||
$('.modal').modal();
|
||||
<script>
|
||||
$(document).ready(function () {
|
||||
$('.tooltipster').tooltipster({
|
||||
theme: 'tooltipster-ttube',
|
||||
side: 'bottom',
|
||||
});
|
||||
})(jQuery);
|
||||
});
|
||||
</script>
|
||||
<script>
|
||||
$('#searchableToggle').change(function () {
|
||||
var route = '/talent/me/searchable/toggle';
|
||||
$.ajax({
|
||||
type: "POST",
|
||||
url: route,
|
||||
dataType: "json",
|
||||
success: function (msg) {
|
||||
console.log(msg);
|
||||
}
|
||||
});
|
||||
});
|
||||
</script>
|
||||
|
||||
{% endblock %}
|
||||
@@ -1,44 +0,0 @@
|
||||
{% 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 %}
|
||||
@@ -1,29 +0,0 @@
|
||||
{% 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 %}
|
||||
@@ -1,17 +0,0 @@
|
||||
{% 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,6 +35,32 @@
|
||||
{{ 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/>
|
||||
@@ -53,64 +79,17 @@
|
||||
{% endif %}
|
||||
</div>
|
||||
</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>
|
||||
<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>
|
||||
{% 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>
|
||||
@@ -150,30 +129,6 @@
|
||||
</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>
|
||||
@@ -240,11 +195,6 @@
|
||||
});
|
||||
$('#modal-recommendation').modal('open');
|
||||
}
|
||||
|
||||
$(".chip-more").on('click',function(){
|
||||
$(this).fadeOut();
|
||||
$(".chip-invisible").css('display','inline-block');
|
||||
});
|
||||
});
|
||||
</script>
|
||||
{% endblock %}
|
||||
@@ -65,21 +65,18 @@
|
||||
<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': fragment }) }}">
|
||||
|
||||
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 %}
|
||||
{% if nbAds > 1 %}
|
||||
<strong>{{ nbAds }} {{ 'message.territory.list.ads'|trans }}</strong>
|
||||
{% elseif nbAds == 1 %}
|
||||
<strong>{{ nbAds }} {{ 'message.territory.list.ad'|trans }}</strong>
|
||||
<strong>{{ nbAds }} offres d'emploi en
|
||||
cours sur ce territoire</strong>
|
||||
{% else %}
|
||||
<strong>{{ 'message.territory.list.noads'|trans }}</strong>
|
||||
<strong>{{ nbAds }} offre d'emploi en
|
||||
cours sur ce territoire</strong>
|
||||
{% endif %}
|
||||
</a>
|
||||
</p>
|
||||
|
||||
@@ -71,11 +71,11 @@
|
||||
- {{ company.addresses.billing.country|country }}</p>
|
||||
{% endif %}
|
||||
</div>
|
||||
<div class="col s12 profil-links center-align">
|
||||
<div class="col s12 profil-links">
|
||||
{% if company.website %}
|
||||
<a target="_blank" href="{{ company.website }}" class="td-none">
|
||||
<span class="fa-stack fa-lg">
|
||||
<i class="fa fa-circle fa-stack-2x"></i>
|
||||
<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>
|
||||
|
||||
@@ -32,16 +32,8 @@ 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'
|
||||
|
||||
@@ -227,4 +227,28 @@ monolog:
|
||||
level: debug
|
||||
type: rotating_file
|
||||
max_files: 15
|
||||
path: '%kernel.logs_dir%/%kernel.environment%_debug.log'
|
||||
path: '%kernel.logs_dir%/%kernel.environment%_debug.log'
|
||||
|
||||
#Api
|
||||
fos_rest:
|
||||
zone:
|
||||
- { path: ^/api/* }
|
||||
body_converter:
|
||||
enabled: true
|
||||
view:
|
||||
formats: { json: true, xml: false, rss: false }
|
||||
view_response_listener: true
|
||||
mime_types:
|
||||
json: ['application/json', 'application/json;version=1.0', 'application/json;version=2.0']
|
||||
serializer:
|
||||
serialize_null: true
|
||||
format_listener:
|
||||
rules:
|
||||
- { path: '^/api/', priorities: ['json'], fallback_format: 'json' }
|
||||
param_fetcher_listener: true
|
||||
|
||||
lexik_jwt_authentication:
|
||||
secret_key: '%kernel.root_dir%/../app/config/jwt/private.pem' # required for token creation
|
||||
public_key: '%kernel.root_dir%/../app/config/jwt/public.pem' # required for token verification
|
||||
pass_phrase: 'talentstubeforever' # required for token creation, usage of an environment variable is recommended
|
||||
token_ttl: 3600
|
||||
@@ -2,18 +2,6 @@ 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:
|
||||
|
||||
@@ -0,0 +1,54 @@
|
||||
-----BEGIN RSA PRIVATE KEY-----
|
||||
Proc-Type: 4,ENCRYPTED
|
||||
DEK-Info: AES-256-CBC,1B8B1CB3A64B49F820DD713907974037
|
||||
|
||||
0/ahxIYlJ0RiiOqRz78LbR7g+UvBC8r4RrMWFCIOuh/FPbTYyIc0VxRMObrTqvHv
|
||||
B4oUMnTzHzkOimvLWncZSIA39TL2OuQMTT7g/Cp8uh7Exnf29js7Ywv8EAQA2trw
|
||||
EsLXjH5St3vLhWLQdxVUBY6tWc5yuqTJ3ze9rFojiJ0mbIoeid7L8sI4mQAocfX2
|
||||
2/aMWwhQX83AJaRC7liU18nZAP4gAxYjvLAaC6zj7M3wxPv1r3Ox2PuSUfYZFkYA
|
||||
HbVYq6pi/Dw32CmCniufccSr2wd0f78fZdI/E20tdAviLN6awqrjM2aFgzqZ6zw/
|
||||
UCD3L1hLfGxRk6uYAFgEiFQB7dT4ZzqjopKNsVuho+DTc55kmx8iPD3xXuTMbeUY
|
||||
SgiV4KcGCbHRt1HGWWbJgyOkSaPQQQk5Bf63glS4nLVNqzIqzJmpVCKuwOpKCSnK
|
||||
DTeWpw9MIHLHM4SD2OM8Hh8S8l6v+Y4ash6mEtUNh6a7N+TQ1vEn/wyt8wyM7/Fh
|
||||
UY/97loUyu0HC2Ox89sP1y6VcNaRQlhNj9hZzLC/q5K+Z4zAQRnGPuTowZL7ztxZ
|
||||
BD+MTnNZc+Akrti+3c1vAHxzuUoBd7h8NX2pnNNUY2Wme9JqfZnCx9fV4AwVOvx6
|
||||
8mvTQL5YHOv8HpsGnDoOak1r+QzHM8IrL8SSrJ/DBXMIWmFefhcIDgrXZG8LV+ck
|
||||
RlSuP5Lsyy3e8AQ6hrM06DXkhjGi7gCeHIHySbzw0AiFERQz0d7XgU75DL/ALPqh
|
||||
0lyqlXdrx/+qqTc0wwjYIerNLNdVqN9kvLg+aqFSwZrfiZyEy6rYdUoqYXoInwle
|
||||
QBt2uqcjVUhMwdQYaDWiqHidSpIMP5nuTKDm6Z8J/SLf4iy+It1qXUEcoRKhDavm
|
||||
fy+dw3JvthpoNjP3Bq+moygP8J8msS5Ti3UgVug21Fsp89fmvUO8FO2JRXLXP8+U
|
||||
3HG1Ij/KKk1dxC6PT7qu9gVeoKM+W8maCVV/O84Qx/N3aXY+sHm1HsSssg0cLEC7
|
||||
zaEai16xhVGI8aagYwxBHVkVVXk/CBS7zq1JYBnZOIw56d1NTjvJ3YmTx619Hyek
|
||||
PJuMNjGV4mM0jONzHJbI6deE2B+f1/ej1JwoeGyBhynrZjwtTCd3JAtwRK9WO1fq
|
||||
owdoCAnDOV7yDcwfFEYaNV2ie/R/kQo/fIIanykQs59Op2M0yhLvmch+C3RghLVg
|
||||
qfR3Jngbqjwz/uh5ZQShZtHFirdAyer/eLD0CteDt4TrAiQxiHqrEOdqwF/G/STq
|
||||
+3SSkChf6uhqUUqfmJFwxaF6AiNTkdk0YyxucWY2JXYf3qyz7ADGnI/KZZ+1LchF
|
||||
2bLUKjyjnFKQoaFtDd7qMGxrTD80egN/fFV4Nybt+DTsGjdUjvCFS69j+YvZ0vIP
|
||||
8rZHK7etISTfiauP9SrIR9UKpNA8fGrUgJGOMo/5Wkz4YS6LmMceQkpDxj46p8Ia
|
||||
Iv+pOKez6NsckP1OiDfTxLtXL1S3xQHP3V0dYI5UcWt8Bczi2VylZCcS8JiV8Cqy
|
||||
+EYRaIB9Qi1X5uLQsbiyS70rJp9mJ3xUR2dIzD70njCIDtLPA2b9dXqXm1IyqdkB
|
||||
46W0MOnyI699XgiywvPovwhzTH8uO5Xn5gnjEgD92pHdJ2iTVQDTC9qtKhODrhbC
|
||||
ouOCbS/LPAnQMwlLD1rWAeJcBJ3PL1KdAlaxWq3Jd/iMhDh/hSboS88Lm88RYtBh
|
||||
3DhMCyxY1gu6jyzuWN2pHKzCvZ1Aqqm1SMS/8nAPe/KtPJO7zTRQJIrrfPK1pt2B
|
||||
u5tu1zupVKihoRkLZtV4FUwDBo8DE9V65b/LAJZtuId77ci7aWRoD5b1Lc9X9iyH
|
||||
cFJTQbMxzA76/8F9/Y1h8D9mdP+N9Tfw6iOvRxszqciGAsUasqo4Xm3ZOQqCcOo5
|
||||
djoywGnzqsfxrV733i2KHRqz7XUkLf8n6URloH2i1tSbHWl7fmYAC0N85IUs1PxQ
|
||||
DB0LUtQgS03gjE4pRJSlgf8JX/0KrG8sYpcvz9R5CqMKrkM6rDy6ehe4P5xVQ+3m
|
||||
WNCZFfGjCTcuEVLFDNx8CdF8qIV/BCcUSty7KXXoC3AMOAsVlZSwskmKN61GJmBS
|
||||
Sz1bDwZO6QCZgXR2fH0UMEnCkpksS4xf3f0oq5/WzWzC4ZaDHnwt5NqKE8XXeYpn
|
||||
isulqUFmCK2VhkqRX1rwND8E45yDG8+U5lyJSHp4y8Fe+AEQjxXUxXDefc80s09i
|
||||
LMXM7iNUtESFge3BZvocdRrqvp21tkPElzaDoW0nMb0VoNI4Xfe113vBeBdEq0Hr
|
||||
yuGvM8ZgvKjzl1T4h9PTaBu97kR1QjBSiY0PeEeSMtq/W1XbFO5jU4g/utVRluBm
|
||||
z64kldtRW1RC8vosrN4sNbdVDAvL43Dynl0wYMI+jgIN3HP2QnOTDH1MLQ5BJZg4
|
||||
aZFSMZ70e9kF2HXpFnfp+SsuT0lMhzZrSrLvKg0pkuD8jc7FtP/HoLcay2doBufd
|
||||
fS4VheiaGm7om9Ggmkowld1CUpuzfyi7NDcymWH6J37Ypcvprn1Ts9iBcBDaOsbZ
|
||||
T3pP0mU4glmRPFRq2IRZXOgTQFXIJKYFpnt0LCC2IuzbQLTKy0LVr6Ksc6ZD21j5
|
||||
AR/xblSp8dZDS4ltrN44r+rtcio7dN9KlDctURpoqdw8oatwpk5QLFfYeMKPRn6j
|
||||
yQA4tatWlTxr/UR8Xy8JNcJfg7JQIYjdf36atxpv5xYvnkf6Gs56xVnRthwNYawn
|
||||
h44emyq/Tuflc9FZqptUDwEPKzLvH0NWxVkNvGG92H0OtES3q9OpGPTnqhIPUTme
|
||||
Jrbu7knwD5sdzYRh64BhbXem8glPStYnW7B0dSdvyvGpArF1W2cKKURgnr7XokrB
|
||||
DqbeSpdRf7fE5bw9jHJgcpUJOZ3o6kGA3l309Cdcbigm7gnK0KiY0y/P8MSWEu00
|
||||
C4WZOFLxuaO1iVav+spACFbFkdVmLoRBPE2hFUc6BA3E/7qNHAjlVYXbUrIR3NA+
|
||||
iioXf1XFM7K0LG02mMKEFSuWIpZacDyAfjHUlrid7cFBBXLk/EWcwNyGSlRdQl7w
|
||||
rn7V+QfAdTxmk2FAyO80odbrdZQaBR6oLZaFgz/MzkT6dLJXwCjKG/qJrwwV/2sv
|
||||
-----END RSA PRIVATE KEY-----
|
||||
@@ -0,0 +1,14 @@
|
||||
-----BEGIN PUBLIC KEY-----
|
||||
MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA0emZKHHTXLKphYp1XLeh
|
||||
YApXdcWoZenqaFeE9pa3yzP888bsvka7t41JZy7+LOACkjnZj8VQNhMl/JIwtuv8
|
||||
L276Tox94l1CeLSDvH0vxGAvCyZzpW4pgx2xAJk1xWndkEWcx/6A7/kgdePOFNJt
|
||||
41JdDsefqRMlsMjw5vCxxX4V1mlebi6owKkxVBXii476xheX1M2k3cfVbC95h++h
|
||||
Yd7h10DwA17SPbmIDN07QygKqRH7RGkEU5gK2Psc+NFstmYaYj4ew1NF4X9e2Erj
|
||||
5M3RnYoUfkQBaigv+GSjefL6zdp+yZwjrPtZo+YDC/M1SQLEPAsoxQZvOISrLtkH
|
||||
usqdvLB8rsVysZOipJyO3OClI+Vvqy9p4CggM3rHlpzMu+e+sgpZersaNxDEz/rX
|
||||
J/rMXpPTfkVSRMddkQ/s0e0w4oop/tr2Zi4fYfmaJ2Ha49PFBPT7buZeyabLyAOk
|
||||
utwRBkaGiUGmfVidlb0TMK2fQQOS5WottAJJOhEDzl7woCtCBgCeclsuM6v/EDd/
|
||||
9KCeMcWrx7/PHBH2I8RGSfoqTKrZ8plOOPccaY2G6zZjvceExyBjewlzOm5zXI7Z
|
||||
c/L5H9mghOdLjEJ+eRLZIYL9yw1LSDjY3Q0ENkxdvkMdVnZxmsf+UFMFdxBU3VjB
|
||||
hqeH8T9lC2ZWC8OJ5kA4y4ECAwEAAQ==
|
||||
-----END PUBLIC KEY-----
|
||||
@@ -24,4 +24,4 @@ parameters:
|
||||
media_photo_dir: '%kernel.root_dir%/../web/uploads/photos/'
|
||||
elastic_host: tt-website.elasticsearch.dev
|
||||
elastic_port: 9200
|
||||
delivery_addresses: thomas@e-declic.com
|
||||
delivery_addresses: maxime.thevenot@e-declic.com
|
||||
|
||||
@@ -8,8 +8,7 @@ parameters:
|
||||
database_port: '5432'
|
||||
database_name: database
|
||||
database_user: user
|
||||
#database_password: 7C|Uk2B[.>"6{QO{
|
||||
database_password: b|RN:iR<g,TNMqM6
|
||||
database_password: 7C|Uk2B[.>"6{QO{
|
||||
#Mongo
|
||||
mongodb_server: "mongodb://tt-website.mongo.preprod:27017"
|
||||
#Prestashop
|
||||
|
||||
@@ -38,4 +38,6 @@ parameters:
|
||||
|
||||
# Elastic
|
||||
elastic_host: tt.search_db
|
||||
elastic_port: 9200
|
||||
elastic_port: 9200
|
||||
|
||||
delivery_addresses: maxime.thevenot@e-declic.com
|
||||
|
||||
@@ -22,4 +22,7 @@ hwi_oauth_redirect:
|
||||
prefix: /login
|
||||
|
||||
fairlane_cookie_consent:
|
||||
resource: "@FairlaneCookieConsentBundle/Resources/config/routing.yml"
|
||||
resource: "@FairlaneCookieConsentBundle/Resources/config/routing.yml"
|
||||
|
||||
api_login_check:
|
||||
path: /api/login_check
|
||||
@@ -5,12 +5,31 @@ security:
|
||||
fos_userbundle:
|
||||
#id: fos_user.user_provider.username_email
|
||||
id: app.user_provider
|
||||
|
||||
|
||||
firewalls:
|
||||
dev:
|
||||
pattern: ^/(_(profiler|wdt)|css|images|js)/
|
||||
security: false
|
||||
|
||||
api_login:
|
||||
pattern: ^/api/login_check
|
||||
stateless: true
|
||||
anonymous: true
|
||||
provider: fos_userbundle
|
||||
json_login:
|
||||
check_path: /api/login_check
|
||||
success_handler: lexik_jwt_authentication.handler.authentication_success
|
||||
failure_handler: lexik_jwt_authentication.handler.authentication_failure
|
||||
|
||||
api:
|
||||
pattern: ^/api
|
||||
stateless: true
|
||||
anonymous: true
|
||||
provider: fos_userbundle
|
||||
guard:
|
||||
authenticators:
|
||||
- lexik_jwt_authentication.jwt_token_authenticator
|
||||
|
||||
main:
|
||||
pattern: ^/
|
||||
remember_me:
|
||||
@@ -33,6 +52,8 @@ security:
|
||||
anonymous: true
|
||||
switch_user:
|
||||
provider: fos_userbundle
|
||||
|
||||
|
||||
access_control:
|
||||
- { path: ^/login$, roles: IS_AUTHENTICATED_ANONYMOUSLY }
|
||||
- { path: ^/register, roles: IS_AUTHENTICATED_ANONYMOUSLY }
|
||||
@@ -44,6 +65,10 @@ security:
|
||||
- { path: ^/talent/recherche/, roles: ROLE_COMPANY }
|
||||
- { path: ^/entreprise/me/, roles: ROLE_COMPANY }
|
||||
- { path: ^/territoire/me/, roles: ROLE_TERRITORY }
|
||||
- { path: ^/api/login_check, roles: IS_AUTHENTICATED_ANONYMOUSLY}
|
||||
- { path: ^/api/login_check_oauth, roles: IS_AUTHENTICATED_ANONYMOUSLY}
|
||||
- { path: ^/api, roles: IS_AUTHENTICATED_FULLY, methods: [POST, PUT, DELETE, PATCH] }
|
||||
- { path: ^/api, roles: IS_AUTHENTICATED_ANONYMOUSLY, methods: [GET]}
|
||||
|
||||
encoders:
|
||||
FOS\UserBundle\Model\UserInterface: bcrypt
|
||||
|
||||
@@ -19,10 +19,6 @@ 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
|
||||
@@ -83,3 +79,6 @@ services:
|
||||
app.user_provider:
|
||||
class: AppBundle\Security\Core\User\FOSUBUserProvider
|
||||
arguments: ["@fos_user.user_manager","@doctrine.orm.entity_manager","@mt.slug","@service_container", { facebook: facebookId, linkedin: linkedinId}]
|
||||
|
||||
app.api_key_authenticator:
|
||||
class: AppBundle\Security\ApiKeyAuthenticator
|
||||
|
||||
@@ -23,8 +23,8 @@
|
||||
},
|
||||
"require": {
|
||||
"php": ">=5.5.9",
|
||||
"symfony/symfony": "3.2.*",
|
||||
"doctrine/orm": "2.6.*@dev",
|
||||
"symfony/symfony": "3.4.*",
|
||||
"doctrine/orm": "^2.6.2",
|
||||
"doctrine/doctrine-bundle": "^1.6",
|
||||
"doctrine/doctrine-cache-bundle": "^1.2",
|
||||
"symfony/swiftmailer-bundle": "^2.3.10",
|
||||
@@ -37,7 +37,6 @@
|
||||
"friendsofsymfony/user-bundle": "~2.0",
|
||||
"doctrine/mongodb-odm-bundle": "^3.0",
|
||||
"doctrine/mongodb-odm": "^1.0",
|
||||
"alcaeus/mongo-php-adapter": "^1.0",
|
||||
"dunglas/doctrine-json-odm": "dev-master",
|
||||
"php-ffmpeg/php-ffmpeg": "^0.5",
|
||||
"requestlab/vimeo-bundle": "^0.0.3",
|
||||
@@ -52,7 +51,13 @@
|
||||
"friendsofsymfony/elastica-bundle": "4.1.*",
|
||||
"liip/imagine-bundle": "^1.9",
|
||||
"twig/extensions": "^1.5",
|
||||
"fairlane/cookie-consent-bundle": "^1.0"
|
||||
"fairlane/cookie-consent-bundle": "^1.0",
|
||||
"jms/serializer-bundle": "^2.4",
|
||||
"friendsofsymfony/rest-bundle": "^2.4",
|
||||
"symfony/twig-bundle": "^4.1",
|
||||
"white-october/pagerfanta-bundle": "^1.2",
|
||||
"willdurand/hateoas-bundle": "^1.4",
|
||||
"lexik/jwt-authentication-bundle": "^2.5"
|
||||
},
|
||||
"require-dev": {
|
||||
"sensio/generator-bundle": "^3.0",
|
||||
|
||||
Generated
+1946
-349
File diff suppressed because it is too large
Load Diff
@@ -298,6 +298,7 @@ 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 {
|
||||
@@ -329,13 +330,8 @@ class AdController extends Controller
|
||||
]);
|
||||
|
||||
} else {
|
||||
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);
|
||||
}
|
||||
|
||||
$ads = $this->getPublishedAds($promoted);
|
||||
}
|
||||
|
||||
return $this->render('default/ad_search_result.html.twig', [
|
||||
|
||||
@@ -1,68 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace AppBundle\Controller\Admin;
|
||||
|
||||
use AppBundle\Entity\Answer;
|
||||
use AppBundle\Entity\Ad;
|
||||
use AppBundle\Form\Admin\AdType;
|
||||
use AppBundle\Form\Admin\ModerationDeclineType;
|
||||
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
|
||||
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Security;
|
||||
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
|
||||
use Symfony\Component\HttpFoundation\Request;
|
||||
use Symfony\Component\HttpFoundation\JsonResponse;
|
||||
|
||||
class AnswerController extends Controller
|
||||
{
|
||||
|
||||
/***********************
|
||||
* MODERATION
|
||||
***********************/
|
||||
|
||||
/**
|
||||
* @Route("/admin/moderation/anwser/list", name="admin_anwser_moderation_list")
|
||||
*/
|
||||
public function adminAnswerModerationListAction()
|
||||
{
|
||||
$em = $this->getDoctrine()->getManager();
|
||||
$answers = $em->getRepository('AppBundle:Answer')->findAll();
|
||||
|
||||
return $this->render('admin/answer_list_moderation.html.twig', array(
|
||||
'answers' => $answers,
|
||||
));
|
||||
}
|
||||
|
||||
/**
|
||||
* @Route("/admin/config/answer/{id}/status/{status}", name="admin_answer_status")
|
||||
*/
|
||||
public function adminStatusAnswerAction(Answer $answer, $status)
|
||||
{
|
||||
$em = $this->getDoctrine()->getManager();
|
||||
$answer->setStatus($status);
|
||||
$em->persist($answer);
|
||||
$em->flush();
|
||||
$result = array("msg" => "toggle ok");
|
||||
return new JsonResponse($result);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @Route("/admin/config/answer/{id}/delete", name="admin_answer_delete")
|
||||
*/
|
||||
public function adminAnswerDeleteAction(Answer $answer)
|
||||
{
|
||||
$em = $this->getDoctrine()->getManager();
|
||||
$t = $em->getRepository('AppBundle:User')->findByRole('ROLE_TALENT');
|
||||
$media = $answer->getVideo();
|
||||
$answer->setVideo(null);
|
||||
$em->remove($answer);
|
||||
$mediaManager = $this->get('media_manager');
|
||||
if($media){
|
||||
$mediaManager->delete($media);
|
||||
$em->remove($media);
|
||||
}
|
||||
$em->flush();
|
||||
|
||||
return $this->redirectToRoute('admin_anwser_moderation_list');
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,86 @@
|
||||
<?php
|
||||
|
||||
namespace AppBundle\Controller\Api;
|
||||
|
||||
use AppBundle\Entity\Ad;
|
||||
use AppBundle\Representation\Ads;
|
||||
use AppBundle\Representation\SingleAd;
|
||||
use FOS\RestBundle\Controller\Annotations as Rest;
|
||||
use FOS\RestBundle\Controller\Annotations\Get;
|
||||
use FOS\RestBundle\Controller\Annotations\Post;
|
||||
use FOS\RestBundle\Controller\Annotations\View;
|
||||
use FOS\RestBundle\Controller\FOSRestController;
|
||||
use FOS\RestBundle\Request\ParamFetcherInterface;
|
||||
use Sensio\Bundle\FrameworkExtraBundle\Configuration\ParamConverter;
|
||||
use Symfony\Component\HttpFoundation\Response;
|
||||
use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
|
||||
|
||||
class AdController extends FOSRestController
|
||||
{
|
||||
/**
|
||||
* @Rest\Get(path="/api/ads/{id}", name="api_ad_show", requirements={"id"="\d+"})
|
||||
* @Rest\View
|
||||
*
|
||||
*/
|
||||
public function showAction(Ad $ad)
|
||||
{
|
||||
// return $ad;
|
||||
return new SingleAd($ad);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @Rest\Get("/api/ads", name="api_ad_list")
|
||||
* @Rest\QueryParam(
|
||||
* name="keyword",
|
||||
* requirements="[a-zA-Z0-9]",
|
||||
* nullable=true,
|
||||
* description="The keyword to search for."
|
||||
* )
|
||||
* @Rest\QueryParam(
|
||||
* name="order",
|
||||
* requirements="asc|desc",
|
||||
* default="asc",
|
||||
* description="Sort order (asc or desc)"
|
||||
* )
|
||||
* @Rest\QueryParam(
|
||||
* name="limit",
|
||||
* requirements="\d+",
|
||||
* default="15",
|
||||
* description="Max number of ads per page."
|
||||
* )
|
||||
* @Rest\QueryParam(
|
||||
* name="offset",
|
||||
* requirements="\d+",
|
||||
* default="1",
|
||||
* description="The pagination offset"
|
||||
* )
|
||||
* @Rest\View(StatusCode = 200)
|
||||
*/
|
||||
public function listAction(ParamFetcherInterface $paramFetcher)
|
||||
{
|
||||
$pager = $this->getDoctrine()->getRepository('AppBundle:Ad')->search(
|
||||
$paramFetcher->get('keyword'),
|
||||
$paramFetcher->get('order'),
|
||||
$paramFetcher->get('limit'),
|
||||
$paramFetcher->get('offset')
|
||||
);
|
||||
return new Ads($pager);
|
||||
}
|
||||
|
||||
/**
|
||||
* @Rest\Post("/api/ads", name="api_ad_create")
|
||||
* @Rest\View(StatusCode = 201)
|
||||
* @ParamConverter("ad", converter="fos_rest.request_body")
|
||||
*/
|
||||
public function createAction(Ad $ad)
|
||||
{
|
||||
$em = $this->getDoctrine()->getManager();
|
||||
$em->persist($ad);
|
||||
$em->flush();
|
||||
return $this->view(
|
||||
new SingleAd($ad),
|
||||
Response::HTTP_CREATED,
|
||||
['Location' => $this->generateUrl('api_ad_show', ['id' => $ad->getId(), UrlGeneratorInterface::ABSOLUTE_URL])]);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,79 @@
|
||||
<?php
|
||||
|
||||
namespace AppBundle\Controller\Api;
|
||||
|
||||
use AppBundle\Entity\Answer;
|
||||
use AppBundle\Representation\Answers;
|
||||
use AppBundle\Representation\SingleAnswer;
|
||||
use FOS\RestBundle\Controller\Annotations as Rest;
|
||||
use FOS\RestBundle\Controller\Annotations\Get;
|
||||
use FOS\RestBundle\Controller\Annotations\Post;
|
||||
use FOS\RestBundle\Controller\Annotations\View;
|
||||
use FOS\RestBundle\Controller\FOSRestController;
|
||||
use FOS\RestBundle\Request\ParamFetcherInterface;
|
||||
use Sensio\Bundle\FrameworkExtraBundle\Configuration\ParamConverter;
|
||||
use Symfony\Component\HttpFoundation\Response;
|
||||
use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
|
||||
|
||||
class AnswerController extends FOSRestController
|
||||
{
|
||||
/**
|
||||
* @Rest\Get(path="/api/answers/{id}", name="api_answer_show", requirements={"id"="\d+"})
|
||||
* @Rest\View
|
||||
*
|
||||
*/
|
||||
public function showAction(Answer $answer)
|
||||
{
|
||||
// return $answer;
|
||||
return new SingleAnswer($answer);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @Rest\Get("/api/answers", name="api_answer_list")
|
||||
* @Rest\QueryParam(
|
||||
* name="order",
|
||||
* requirements="asc|desc",
|
||||
* default="asc",
|
||||
* description="Sort order (asc or desc)"
|
||||
* )
|
||||
* @Rest\QueryParam(
|
||||
* name="limit",
|
||||
* requirements="\d+",
|
||||
* default="15",
|
||||
* description="Max number of answers per page."
|
||||
* )
|
||||
* @Rest\QueryParam(
|
||||
* name="offset",
|
||||
* requirements="\d+",
|
||||
* default="1",
|
||||
* description="The pagination offset"
|
||||
* )
|
||||
* @Rest\View(StatusCode = 200)
|
||||
*/
|
||||
public function listAction(ParamFetcherInterface $paramFetcher)
|
||||
{
|
||||
$pager = $this->getDoctrine()->getRepository('AppBundle:Answer')->search(
|
||||
$paramFetcher->get('order'),
|
||||
$paramFetcher->get('limit'),
|
||||
$paramFetcher->get('offset')
|
||||
);
|
||||
return new Answers($pager);
|
||||
}
|
||||
|
||||
/**
|
||||
* @Rest\Post("/api/answers", name="api_answer_create")
|
||||
* @Rest\View(StatusCode = 201)
|
||||
* @ParamConverter("answer", converter="fos_rest.request_body")
|
||||
*/
|
||||
public function createAction(Answer $answer)
|
||||
{
|
||||
$em = $this->getDoctrine()->getManager();
|
||||
$em->persist($answer);
|
||||
$em->flush();
|
||||
return $this->view(
|
||||
new SingleAnswer($answer),
|
||||
Response::HTTP_CREATED,
|
||||
['Location' => $this->generateUrl('api_answer_show', ['id' => $answer->getId(), UrlGeneratorInterface::ABSOLUTE_URL])]);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,79 @@
|
||||
<?php
|
||||
|
||||
namespace AppBundle\Controller\Api;
|
||||
|
||||
use AppBundle\Entity\Company;
|
||||
use AppBundle\Representation\Companys;
|
||||
use AppBundle\Representation\SingleCompany;
|
||||
use FOS\RestBundle\Controller\Annotations as Rest;
|
||||
use FOS\RestBundle\Controller\Annotations\Get;
|
||||
use FOS\RestBundle\Controller\Annotations\Post;
|
||||
use FOS\RestBundle\Controller\Annotations\View;
|
||||
use FOS\RestBundle\Controller\FOSRestController;
|
||||
use FOS\RestBundle\Request\ParamFetcherInterface;
|
||||
use Sensio\Bundle\FrameworkExtraBundle\Configuration\ParamConverter;
|
||||
use Symfony\Component\HttpFoundation\Response;
|
||||
use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
|
||||
|
||||
class CompanyController extends FOSRestController
|
||||
{
|
||||
/**
|
||||
* @Rest\Get(path="/api/companies/{id}", name="api_company_show", requirements={"id"="\d+"})
|
||||
* @Rest\View
|
||||
*
|
||||
*/
|
||||
public function showAction(Company $company)
|
||||
{
|
||||
// return $company;
|
||||
return new SingleCompany($company);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @Rest\Get("/api/companies", name="api_company_list")
|
||||
* @Rest\QueryParam(
|
||||
* name="order",
|
||||
* requirements="asc|desc",
|
||||
* default="asc",
|
||||
* description="Sort order (asc or desc)"
|
||||
* )
|
||||
* @Rest\QueryParam(
|
||||
* name="limit",
|
||||
* requirements="\d+",
|
||||
* default="15",
|
||||
* description="Max number of companys per page."
|
||||
* )
|
||||
* @Rest\QueryParam(
|
||||
* name="offset",
|
||||
* requirements="\d+",
|
||||
* default="1",
|
||||
* description="The pagination offset"
|
||||
* )
|
||||
* @Rest\View(StatusCode = 200)
|
||||
*/
|
||||
public function listAction(ParamFetcherInterface $paramFetcher)
|
||||
{
|
||||
$pager = $this->getDoctrine()->getRepository('AppBundle:Company')->search(
|
||||
$paramFetcher->get('order'),
|
||||
$paramFetcher->get('limit'),
|
||||
$paramFetcher->get('offset')
|
||||
);
|
||||
return new Companys($pager);
|
||||
}
|
||||
|
||||
/**
|
||||
* @Rest\Post("/api/companies", name="api_company_create")
|
||||
* @Rest\View(StatusCode = 201)
|
||||
* @ParamConverter("company", converter="fos_rest.request_body")
|
||||
*/
|
||||
public function createAction(Company $company)
|
||||
{
|
||||
$em = $this->getDoctrine()->getManager();
|
||||
$em->persist($company);
|
||||
$em->flush();
|
||||
return $this->view(
|
||||
new SingleCompany($company),
|
||||
Response::HTTP_CREATED,
|
||||
['Location' => $this->generateUrl('api_company_show', ['id' => $company->getId(), UrlGeneratorInterface::ABSOLUTE_URL])]);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
<?php
|
||||
|
||||
namespace AppBundle\Controller\Api;
|
||||
|
||||
use FOS\RestBundle\Controller\Annotations as Rest;
|
||||
use FOS\RestBundle\Controller\Annotations\Post;
|
||||
use FOS\RestBundle\Controller\Annotations\View;
|
||||
use FOS\RestBundle\Controller\FOSRestController;
|
||||
use Symfony\Component\HttpFoundation\JsonResponse;
|
||||
use Symfony\Component\HttpFoundation\Request;
|
||||
|
||||
class SecurityController extends FOSRestController
|
||||
{
|
||||
|
||||
/**
|
||||
* @Rest\Post(path="/api/login_check_oauth", name="api_oauth_login")
|
||||
* @Rest\View
|
||||
*/
|
||||
public function OAuthLoginAction(Request $request)
|
||||
{
|
||||
$jwtManager = $this->container->get('lexik_jwt_authentication.jwt_manager');
|
||||
|
||||
$token = $request->request->get('oauth-token');
|
||||
$type = $request->request->get('oauth-type');
|
||||
|
||||
if ($type == "facebook") {
|
||||
$em = $this->getDoctrine()->getManager();
|
||||
$user = $em->getRepository('AppBundle:User')->findOneByFacebookId($token);
|
||||
}
|
||||
return new JsonResponse(['token' => $jwtManager->create($user)]);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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' => 'DESC'));
|
||||
$talents = $em->getRepository('AppBundle:Company')->findBy(array("type" => "TALENT", "emphasis" => true), array('emphasisOrder' => 'ASC'));
|
||||
$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'));
|
||||
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user