Compare commits
71 Commits
2.2.4
...
V2.6.2_prod
| Author | SHA1 | Date | |
|---|---|---|---|
| e8eb1c9692 | |||
| d4b2b78553 | |||
| c0c1735e9d | |||
| b6d6a3f177 | |||
| 4f185984f9 | |||
| 26e781c230 | |||
| b68e1c6050 | |||
| ee98a19150 | |||
| 0e512cb8a2 | |||
| 24a5ac8cbf | |||
| 6920e8faa0 | |||
| 5aa8079b0a | |||
| cc83f88458 | |||
| 4edfdfd187 | |||
| 605834be03 | |||
| dca7bf9efe | |||
| 99434105e3 | |||
| d018b73fc8 | |||
| 10975021c3 | |||
| 2af32f2835 | |||
| 2c41f2aa02 | |||
| ef50bfddff | |||
| 029d86649a | |||
| 24becf66c3 | |||
| 43d0852075 | |||
| 81c548bd00 | |||
| c7f4eddad5 | |||
| 39e02581ae | |||
| a5aa1364ab | |||
| e48027f2b2 | |||
| aad0203d0b | |||
| a49cf8d9bf | |||
| c85313ade6 | |||
| 992ba3a103 | |||
| 992f61867e | |||
| 72b119ac0c | |||
| 831f7696ac | |||
| 5a44f7d6ec | |||
| ddbfcc8a69 | |||
| 61925ebb38 | |||
| 0bb341b7ce | |||
| 74f2e45edf | |||
| 5d660ebc8b | |||
| a31e49278b | |||
| b13d0d939f | |||
| e470c8dce1 | |||
| 8eeaf240de | |||
| 18144e395c | |||
| f53815aa1a | |||
| bab23a58ac | |||
| 9346635ca7 | |||
| 849b5a999a | |||
| 409be2f0b0 | |||
| d201bd44b9 | |||
| cbe1b1f0d6 | |||
| a56d568319 | |||
| c8f9e4d8f4 | |||
| 21b8954c13 | |||
| ee9eb19ca9 | |||
| 3060f93e59 | |||
| dc29527064 | |||
| f369802b96 | |||
| 07941367cc | |||
| effb92a9d8 | |||
| 1952e27030 | |||
| 6db371f2af | |||
| 37ef9a4fdd | |||
| e11f36d170 | |||
| 968b4d0497 | |||
| b6ba7e62e3 | |||
| 67734e40b3 |
@@ -0,0 +1,8 @@
|
||||
UPDATE ad SET competences = '{"competences" : [{ "id1" : "libelle 1"},{ "id2" : "libelle 2"},{ "id3" : "libelle 3" }]}' WHERE id =1;
|
||||
UPDATE ad SET competences = '{ "id1" : "libelle 1", "id2" : "libelle 2", "id3" : "libelle 3" }' WHERE id =1;
|
||||
UPDATE ad SET competences = '{ "id1" : "libelle 1" }' WHERE id =31;
|
||||
UPDATE ad SET competences = '{ "id2" : "libelle 2", "id3" : "libelle 3"}' WHERE id =29;
|
||||
SELECT id FROM "ad" WHERE competences::jsonb @> '{ "id1" : "libelle 1"}'::jsonb LIMIT 10;
|
||||
SELECT id FROM "ad" WHERE competences::jsonb ? 'id1' LIMIT 10;
|
||||
SELECT competences::jsonb @> '{ "id1" : "libelle 1"}'::jsonb FROM "ad" WHERE id=1 LIMIT 1;
|
||||
SELECT * FROM "ad" WHERE id = 1 or id=31 or id =29;
|
||||
@@ -208,7 +208,7 @@
|
||||
</trans-unit>
|
||||
<trans-unit id="profile.company.size">
|
||||
<source>profile.company.size</source>
|
||||
<target>Taille de l'entreprise (nombre de personnes)</target>
|
||||
<target>Taille de l'entreprise</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="profile.company.description">
|
||||
<source>profile.company.description</source>
|
||||
|
||||
@@ -70,7 +70,12 @@
|
||||
<th width="11%"><input id='input4' type='text' class='form-control' placeholder='par prénom' style='font-family:Arial, FontAwesome; width:100%'/></th>
|
||||
<th width="25%"><input id='input5' type='text' class='form-control' placeholder='par entreprise / offre' style='font-family:Arial, FontAwesome; width:100%'/></th>
|
||||
|
||||
<th width="15%"><input id='input7' type='text' class='form-control' placeholder='par statut' style='font-family:Arial, FontAwesome; width:100%'/></th>
|
||||
<th width="15%">
|
||||
<select id='input7'>
|
||||
<option value="sended">Envoyé</option>
|
||||
<option value="draft">Brouillon</option>
|
||||
</select>
|
||||
</th>
|
||||
|
||||
</tr>
|
||||
</table>
|
||||
@@ -263,6 +268,19 @@
|
||||
}
|
||||
});
|
||||
}
|
||||
function verifierDelete(id){
|
||||
console.log(id);
|
||||
var r = confirm("Êtes vous sûr de supprimer cette candidature ?\nSupprimer cette candidature supprimera le média associé\n");
|
||||
if (r == true) {
|
||||
txt = "You pressed OK!";
|
||||
location.href = "/app_dev.php/admin/config/answer/"+id+"/delete";
|
||||
return true;
|
||||
} else {
|
||||
txt = "You pressed Cancel!";
|
||||
}
|
||||
console.log(txt);
|
||||
|
||||
}
|
||||
</script>
|
||||
|
||||
{% endblock %}
|
||||
@@ -28,11 +28,10 @@
|
||||
<!-- Please remove the file below for production: Contains demo classes -->
|
||||
<link class="main-stylesheet" href="{{ asset('dashboard/css/style.css') }}" rel="stylesheet" type="text/css" />
|
||||
<script type="text/javascript">window.$crisp=[];window.CRISP_WEBSITE_ID="08e9d301-ba14-4d69-8b1a-53685114c5af";(function(){d=document;s=d.createElement("script");s.src="https://client.crisp.chat/l.js";s.async=1;d.getElementsByTagName("head")[0].appendChild(s);})();</script>
|
||||
<!-- BEGIN VENDOR JS -->
|
||||
<script src="{{ asset('dashboard/plugins/pace/pace.min.js') }}" type="text/javascript"></script>
|
||||
<!-- A polyfill for browsers that don't support ligatures: remove liga.js if not needed-->
|
||||
<script src="{{ asset('dashboard/plugins/liga.js') }}" type="text/javascript"></script>
|
||||
<!-- END PAGE LEVEL JS -->
|
||||
|
||||
<script src="{{ asset('dashboard/plugins/jquery/jquery-3.2.1.min.js') }}" type="text/javascript"></script>
|
||||
|
||||
{# <script type="text/javascript" src="http://code.jquery.com/jquery-3.2.1.min.js"></script> #}
|
||||
|
||||
{% block javascriptSupl %}
|
||||
@@ -42,6 +41,7 @@
|
||||
|
||||
<body class="fixed-header dashboard menu-pin menu-behind">
|
||||
{# {{ include('default/user_switch.html.twig') }} #}
|
||||
|
||||
{{ include('admin/navigation_gauche.html.twig')}} }}
|
||||
|
||||
|
||||
@@ -76,11 +76,30 @@
|
||||
<!-- END PAGE CONTENT WRAPPER -->
|
||||
</div>
|
||||
<!-- END PAGE CONTAINER -->
|
||||
{% block javascripts %}
|
||||
<script src="https://maps.googleapis.com/maps/api/js?key=AIzaSyDYV8IJGtIoWLfXJQQvIuDQ88n2aEuRgpg&libraries=places">
|
||||
</script>
|
||||
{% javascripts
|
||||
'@vendors'
|
||||
'@global'
|
||||
'@company'
|
||||
output='assetic/main.dash.company.js' filter='?uglifyjs2' %}
|
||||
<script src="{{ asset_url }}"></script>
|
||||
{% endjavascripts %}
|
||||
|
||||
{% endblock %}
|
||||
|
||||
<!-- BEGIN VENDOR JS -->
|
||||
<script src="{{ asset('dashboard/plugins/pace/pace.min.js') }}" type="text/javascript"></script>
|
||||
<!-- A polyfill for browsers that don't support ligatures: remove liga.js if not needed-->
|
||||
<script src="{{ asset('dashboard/plugins/liga.js') }}" type="text/javascript"></script>
|
||||
|
||||
<script src="{{ asset('dashboard/plugins/modernizr.custom.js') }}" type="text/javascript"></script>
|
||||
<script src="{{ asset('dashboard/plugins/jquery-ui/jquery-ui.min.js') }}" type="text/javascript"></script>
|
||||
<script src="{{ asset('dashboard/plugins/popper/umd/popper.min.js') }}" type="text/javascript"></script>
|
||||
<script src="{{ asset('dashboard/plugins/bootstrap/js/bootstrap.min.js') }}" type="text/javascript"></script>
|
||||
|
||||
|
||||
<script src="{{ asset('dashboard/plugins/jquery/jquery-easy.js') }}" type="text/javascript"></script>
|
||||
<script src="{{ asset('dashboard/plugins/jquery-unveil/jquery.unveil.min.js') }}" type="text/javascript"></script>
|
||||
<script src="{{ asset('dashboard/plugins/jquery-ios-list/jquery.ioslist.min.js') }}" type="text/javascript"></script>
|
||||
@@ -99,11 +118,12 @@
|
||||
<script src="{{ asset('dashboard/plugins/mapplic/js/hammer.min.js') }}"></script>
|
||||
<script src="{{ asset('dashboard/plugins/mapplic/js/jquery.mousewheel.js') }}"></script>
|
||||
<script src="{{ asset('dashboard/plugins/mapplic/js/mapplic.js') }}"></script>
|
||||
{# <script src="{{ asset('dashboard/plugins/rickshaw/rickshaw.min.js') }}"></script> #}
|
||||
<script src="{{ asset('dashboard/plugins/rickshaw/rickshaw.min.js') }}"></script>
|
||||
<script src="{{ asset('dashboard/plugins/jquery-sparkline/jquery.sparkline.min.js') }}" type="text/javascript">
|
||||
</script>
|
||||
|
||||
<script src="{{ asset('dashboard/plugins/skycons/skycons.js') }}" type="text/javascript"></script>
|
||||
{# <script src="{{ asset('dashboard/plugins/quill/quill.min.js') }}" type="text/javascript"></script> #}
|
||||
<script src="{{ asset('dashboard/plugins/quill/quill.min.js') }}" type="text/javascript"></script>
|
||||
<!-- END VENDOR JS -->
|
||||
<!-- BEGIN CORE TEMPLATE JS -->
|
||||
<!-- BEGIN CORE TEMPLATE JS -->
|
||||
@@ -114,23 +134,11 @@
|
||||
<script src="{{ asset('dashboard/js/scripts.js') }}" type="text/javascript"></script>
|
||||
<!-- END PAGE LEVEL JS -->
|
||||
<!-- END CORE TEMPLATE JS -->
|
||||
<!-- BEGIN PAGE LEVEL JS -->
|
||||
|
||||
|
||||
|
||||
<!-- BEGIN PAGE LEVEL JS -->
|
||||
<script src="{{ asset('dashboard/js/dashboard.js') }}" type="text/javascript"></script>
|
||||
|
||||
<!-- END PAGE LEVEL JS -->
|
||||
{% block javascripts %}
|
||||
<script src="https://maps.googleapis.com/maps/api/js?key=AIzaSyDYV8IJGtIoWLfXJQQvIuDQ88n2aEuRgpg&libraries=places">
|
||||
</script>
|
||||
{% javascripts
|
||||
'@vendors'
|
||||
'@global'
|
||||
'@company'
|
||||
output='assetic/main.dash.company.js' filter='?uglifyjs2' %}
|
||||
<script src="{{ asset_url }}"></script>
|
||||
{% endjavascripts %}
|
||||
|
||||
{% endblock %}
|
||||
|
||||
{% block javascriptsSecondaire %}
|
||||
|
||||
{% endblock %}
|
||||
@@ -140,4 +148,4 @@
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
||||
</html>
|
||||
|
||||
@@ -22,7 +22,8 @@
|
||||
<th>ID</th>
|
||||
<th>Titre</th>
|
||||
<th>Utilisateur</th>
|
||||
<th>Status</th>
|
||||
<th>Annonce?</th>
|
||||
<th>Date de réponse</th>
|
||||
<th>action</th>
|
||||
</tr>
|
||||
</thead>
|
||||
@@ -30,11 +31,21 @@
|
||||
<tbody>
|
||||
{% for m in medias %}
|
||||
<tr>
|
||||
<td>{{ m.id }}</td>
|
||||
<td>{{ m.title }}</td>
|
||||
<td>{{ m.creator.firstname }} {{ m.creator.lastname }}</td>
|
||||
<td>{{ m.mediaid }}</td>
|
||||
<td><a href="{{ chemin }}{{ m.original_url }}" target="_blank">{{ m.title }}</a></td>
|
||||
<td>{{ m.firstname }} {{ m.lastname }} - ({{ m.email }}) </td>
|
||||
<td>
|
||||
<span class="label pull-right bg-orange">{{ m.status }}</span>
|
||||
{% if m.answerid %}
|
||||
{% if m.adtitle %}
|
||||
({{ m.adtitle }})
|
||||
{% else %}
|
||||
({{ m.ctitle }})
|
||||
{% endif %}
|
||||
{% else %}
|
||||
<b>Vidéo orpheline</b>
|
||||
{% endif %}</td>
|
||||
<td>
|
||||
<span class="label pull-right bg-orange">{{ m.sendtime }}</span>
|
||||
</td>
|
||||
<td>
|
||||
<a href="{{ path('admin_video_moderation',{'id':m.id}) }}">
|
||||
@@ -67,9 +78,11 @@
|
||||
{"targets": 0, "searchable": true, "orderable": true},
|
||||
{"targets": 1, "searchable": true, "orderable": true},
|
||||
{"targets": 2, "searchable": true, "orderable": true},
|
||||
{"targets": 3, "searchable": true, "orderable": true, "className": "text-center"},
|
||||
{"targets": 4, "searchable": false, "orderable": false, "className": "text-center"},
|
||||
]
|
||||
{"targets": 3, "searchable": true, "orderable": true},
|
||||
{"targets": 4, "searchable": true, "orderable": true, "className": "text-center"},
|
||||
{"targets": 5, "searchable": false, "orderable": false, "className": "text-center"},
|
||||
],
|
||||
"order": [[ 0, "desc" ]]
|
||||
});
|
||||
});
|
||||
</script>
|
||||
|
||||
@@ -21,6 +21,9 @@
|
||||
<th class="col-md-2">Date de création</th>
|
||||
<th>Prénom - Nom</th>
|
||||
<th>Email</th>
|
||||
<th>Dernière connexion</th>
|
||||
<th>Validé</th>
|
||||
<th>Annonce?</th>
|
||||
<th class="col-md-1">Vidéos</th>
|
||||
<th class="col-md-1">A la une</th>
|
||||
<th>Action</th>
|
||||
@@ -29,12 +32,34 @@
|
||||
<tbody>
|
||||
{% for talent in t if talent.MainUser %}
|
||||
{% set user = talent.users|first %}
|
||||
{% set adId = talent.description|split(':') %}
|
||||
<tr>
|
||||
<td data-order="{{ talent.cTime|date('U') }}">{{ talent.cTime|date('d/m/Y') }}</td>
|
||||
<td>
|
||||
{{ user.firstname }} {{ user.lastname }}
|
||||
{{ user.firstname }} / {{ user.lastname }} - {% if talent.extra["phoneTalent"] is defined %} (Tel : {{ talent.extra["phoneTalent"] }}) {% endif %}
|
||||
</td>
|
||||
<td><a href="mailto:{{ user.email }}">{{ user.email }}</a></td>
|
||||
<td>
|
||||
{% if user.enabled == 1 %}
|
||||
{{ user.lastLogin|date('d-m-Y h:m') }}
|
||||
{% endif %}</td>
|
||||
<td>
|
||||
{% if user.enabled == 1 %}
|
||||
oui
|
||||
{% else %}
|
||||
non
|
||||
{% endif %}
|
||||
</td>
|
||||
<td> {% if adId|length > 1 %}
|
||||
{% if user.medias|length > 0 %}
|
||||
|
||||
{% else %}
|
||||
{% if adId[1] and adId[1] !="" %}
|
||||
<a href="https://www.talentstube.com/Offre/{{ adId[1]|replace({' ': ''}) }}-{{ adId[1] }}" target="_blank">Lien vers l'annonce avant inscription</a>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
</td>
|
||||
<td>
|
||||
{% if user.medias|length > 0 %}
|
||||
{{ user.medias|length }}
|
||||
@@ -90,9 +115,12 @@
|
||||
{"targets": 0, "searchable": true, "orderable": true},
|
||||
{"targets": 1, "searchable": true, "orderable": true},
|
||||
{"targets": 2, "searchable": true, "orderable": true},
|
||||
{"targets": 3, "searchable": true, "orderable": true, "className": "text-center"},
|
||||
{"targets": 4, "searchable": true, "orderable": true, "className": "text-center"},
|
||||
{"targets": 5, "searchable": false, "orderable": false, "className": "text-center"},
|
||||
{"targets": 3, "searchable": true, "orderable": true},
|
||||
{"targets": 4, "searchable": true, "orderable": true},
|
||||
{"targets": 5, "searchable": true, "orderable": true},
|
||||
{"targets": 6, "searchable": true, "orderable": true, "className": "text-center"},
|
||||
{"targets": 7, "searchable": true, "orderable": true, "className": "text-center"},
|
||||
{"targets": 8, "searchable": false, "orderable": false, "className": "text-center"},
|
||||
],
|
||||
"order": [[0, "desc"]]
|
||||
});
|
||||
|
||||
@@ -1,9 +1,12 @@
|
||||
{% extends 'base.html.twig' %}
|
||||
{% extends 'basev2.html.twig' %}
|
||||
|
||||
{% block metarobot %}<meta name="robots" content="noindex,follow">{% endblock %}
|
||||
{% block metarobot %}
|
||||
<meta name="robots" content="noindex,follow">
|
||||
<link rel="canonical" href="https://www.talentstube.com/Offres" />
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
{% if typeObject == 'Ad' %}
|
||||
{# {% if typeObject == 'Ad' %}
|
||||
{% set subtitle = 'Candidature à l\'offre d\'emploi:' %}
|
||||
{% set title = object.title %}
|
||||
{% set route = "answer_create_ad_step2" %}
|
||||
@@ -11,20 +14,20 @@
|
||||
{% set subtitle = 'Candidature pour l\'entreprise :' %}
|
||||
{% set title = object.brandName %}
|
||||
{% set route = "answer_create_company_step2" %}
|
||||
{% endif %}
|
||||
{% endif %} #}
|
||||
|
||||
<div class="fluid-container bg-grey-3">
|
||||
<div class="container contentWrapper contentPage">
|
||||
<div class="row">
|
||||
<div class="col s12">
|
||||
{# <div class="col s12">
|
||||
<div class="col-content center-align m-t-20">
|
||||
<strong>{{ subtitle }}</strong>
|
||||
<h3 class="color-blue1 m-0 m-t-10">{{ title }}</h3>
|
||||
</div>
|
||||
</div>
|
||||
</div> #}
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col s12 m6 ">
|
||||
{# <div class="col s12 m6 ">
|
||||
<div class="col-content p-15 bg-blue-1 center-align whiteColor z-depth-2 choice-answer-item">
|
||||
<img src="{{ asset('img/img_popupcv/webcam_cv_video.svg')}}">
|
||||
<h3>J'enregistre mon CV vidéo !</h3>
|
||||
@@ -40,13 +43,13 @@
|
||||
<a href="{{ path(route,{'id': object.id, 'type': 'import'}) }}" class="btn btn btn-default">Importer mon CV vidéo</a><br /><br />
|
||||
<a id="link-videotheque" href="{{ route_videotheque }}">Choisir une vidéo de ma vidéothèque</a>
|
||||
</div>
|
||||
</div>
|
||||
</div> #}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
{% block javascripts %}
|
||||
{{ parent() }}
|
||||
{# {{ parent() }}
|
||||
<script type="text/javascript">
|
||||
{% if mustLogin == true %}
|
||||
$('#link-videotheque').on('click',function(event){
|
||||
@@ -54,5 +57,5 @@
|
||||
$('#modal_login').modal('open');
|
||||
});
|
||||
{% endif %}
|
||||
</script>
|
||||
</script> #}
|
||||
{% endblock %}
|
||||
@@ -15,7 +15,7 @@
|
||||
|
||||
<!-- Required Meta Tags Always Come First -->
|
||||
<meta charset="utf-8">
|
||||
<meta name="robots" content="noindex,nofollow">
|
||||
{# <meta name="robots" content="noindex,nofollow"> #}
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||
{% block meta %}
|
||||
{% endblock %}
|
||||
|
||||
@@ -45,11 +45,11 @@
|
||||
|
||||
<!-- Modal 1 -->
|
||||
<div class="modal fade bd-example-modal-lg" id="competencesModal" tabindex="-1" role="dialog"
|
||||
aria-labelledby="competencesModalLabel" aria-hidden="false">
|
||||
aria-labelledby="competencesModalLabel" aria-hidden="false" data-show="false">
|
||||
<div class="modal-dialog modal-lg" role="document">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h5 class="modal-title" id="competencesModalLabel">Souhaitez-vous remplacer le métier <span class="metierPopup"></span></h5>
|
||||
<h5 class="modal-title" id="competencesModalLabel">Souhaitez-vous sélectionner le métier <span class="metierPopup"></span>?</h5>
|
||||
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
|
||||
<span aria-hidden="true">×</span>
|
||||
</button>
|
||||
@@ -58,13 +58,13 @@
|
||||
<h5> </h5>
|
||||
<p>
|
||||
|
||||
Si vous remplacez le métier de rattachement, la totalité des compétences que vous aviez précédemment sélectionnées en lien avec l'ancien métier de rattachement seront remplacées par les nouvelles compétences, correspondant au métier <span class="metierPopup"></span>.
|
||||
Si vous aviez précédemment sélectionné des compétences en lien avec l'ancien métier de rattachement, celles-ci seront remplacées par les nouvelles compétences, correspondant au métier <span class="metierPopup"></span>.
|
||||
</p>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-secondary" data-dismiss="modal">Annuler</button>
|
||||
<button type="button" class="btn btn-secondary" data-dismiss="modal"
|
||||
onclick="chargerCompetences();">Remplacer</button>
|
||||
onclick="chargerCompetences();">Sélectionner</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -73,7 +73,7 @@
|
||||
|
||||
<!-- Modal 2 -->
|
||||
<div class="modal fade modalCompetences" id="ajoutCompetencesModal" tabindex="-1" role="dialog"
|
||||
aria-labelledby="ajoutCompetencesModalLabel" aria-hidden="false">
|
||||
aria-labelledby="ajoutCompetencesModalLabel" aria-hidden="false" data-show="false">
|
||||
<div class="modal-dialog modal-lg" role="document">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
@@ -247,6 +247,7 @@
|
||||
<td class="col-lg-12 col-md-12 col-sm-12 bg-contrast-lower">
|
||||
<div id="competencesAd"></div><br />
|
||||
<div id="competencesAdMessage" class="text-danger">Veuillez choisir un métier de rattachement pour votre annonce.</div><br />
|
||||
<div id="loadingDiv" >Patientez...</div><br />
|
||||
<div class="text-center" id="competencesButtonAd">
|
||||
<button type="button" class="btn btn-primary" data-toggle="modal"
|
||||
data-target="#ajoutCompetencesModal" id="ajoutCompetences">
|
||||
@@ -516,6 +517,7 @@
|
||||
.ready(function () {
|
||||
// Construction du champ typeahead d'auto compléetion de métier
|
||||
$("#competencesButtonAd").hide();
|
||||
$('#loadingDiv').hide();
|
||||
var metiers = new Bloodhound({
|
||||
datumTokenizer: Bloodhound.tokenizers.whitespace,
|
||||
queryTokenizer: Bloodhound.tokenizers.whitespace,
|
||||
@@ -556,9 +558,9 @@
|
||||
//comment sont formaté les suggestion de l'auto completion
|
||||
$(".tt-dataset-metiers").show();
|
||||
var chaine = data.metier_libelle.replace("'", "\\'");
|
||||
return '<div><a href="#" onclick="chargerDonneesTemp(' + data.metier_id + ',\'' +
|
||||
return '<div onclick="chargerDonneesTemp(' + data.metier_id + ',\'' +
|
||||
chaine +
|
||||
'\')" data-toggle="modal" data-target="#competencesModal" id="competences">' + data.metier_libelle +
|
||||
'\')" data-toggle="modal" data-target="#competencesModal" id="competences"><a href="#" >' + data.metier_libelle +
|
||||
'</a></div>'
|
||||
},
|
||||
footer: function (query) {
|
||||
@@ -597,6 +599,10 @@
|
||||
data: 'q=' + $("#id_appellation_temporaire").val(),
|
||||
//Le format de réponse attendu
|
||||
dataType: "json",
|
||||
beforeSend: function () { // Before we send the request, remove the .hidden class from the spinner and default to inline-block.
|
||||
$('#loadingDiv').show();
|
||||
console.log("début loading");
|
||||
},
|
||||
})
|
||||
//Ce code sera exécuté en cas de succès - La réponse du serveur est passée à done()
|
||||
/*On peut par exemple convertir cette réponse en chaine JSON et insérer
|
||||
@@ -681,6 +687,7 @@
|
||||
}
|
||||
//on génere le json qui va remplir le champ ad_competences
|
||||
genererJson();
|
||||
$('#loadingDiv').hide();
|
||||
})
|
||||
|
||||
//Ce code sera exécuté en cas d'échec - L'erreur est passée à fail()
|
||||
@@ -693,11 +700,11 @@
|
||||
$("#competencesAdMessage").html(
|
||||
"Une erreur est survenue dans la recherche du métier de rattachement. <a href='#' onclick='chargerCompetences();'><br/><i class='fa fa-refresh fa-spin fa-fw'></i>Cliquez ici pour relancer la recherche</a> "
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
console.log("La requête s'est terminée en échec. Infos : " + JSON.stringify(error));
|
||||
$('#loadingDiv').hide();
|
||||
console.log("La requête s'est terminée en échec q= "+ $("#id_appellation_temporaire").val()+" Infos : " + JSON.stringify(error));
|
||||
})
|
||||
|
||||
//Ce code sera exécuté que la requête soit un succès ou un échec
|
||||
.always(function () {
|
||||
console.log("Requête effectuée");
|
||||
@@ -710,7 +717,7 @@
|
||||
console.log("Clicked, target = " + cb.id);
|
||||
var id = cb.id.split('_');
|
||||
id = id[1];
|
||||
if($("#nbCompetences").val()<11){
|
||||
if($("#nbCompetences").val()<10){
|
||||
$("#competence_" + id).prop("checked", cb.checked);
|
||||
$("#competencepopup_" + id).prop("checked", cb.checked);
|
||||
if (cb.checked) {
|
||||
@@ -722,6 +729,8 @@
|
||||
}
|
||||
}else{
|
||||
$("#competence_" + id).prop("checked", false);
|
||||
$("#competence_ad_" + id).hide();
|
||||
//$("#competence_" + id).hide();
|
||||
$("#competencepopup_" + id).prop("checked", false);
|
||||
}
|
||||
// on génere le json a chaque fois
|
||||
|
||||
@@ -40,11 +40,11 @@
|
||||
|
||||
<!-- Modal 1 -->
|
||||
<div class="modal fade bd-example-modal-lg" id="competencesModal" tabindex="-1" role="dialog"
|
||||
aria-labelledby="competencesModalLabel" aria-hidden="false">
|
||||
aria-labelledby="competencesModalLabel" aria-hidden="false" data-show="false">
|
||||
<div class="modal-dialog modal-lg" role="document">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h5 class="modal-title" id="competencesModalLabel">Souhaitez-vous remplacer le métier <span class="metierPopup"></span></h5>
|
||||
<h5 class="modal-title" id="competencesModalLabel">Souhaitez-vous sélectionner le métier <span class="metierPopup"></span>?</h5>
|
||||
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
|
||||
<span aria-hidden="true">×</span>
|
||||
</button>
|
||||
@@ -53,13 +53,13 @@
|
||||
<h5> </h5>
|
||||
<p>
|
||||
|
||||
Si vous remplacez le métier de rattachement, la totalité des compétences que vous aviez précédemment sélectionnées en lien avec l'ancien métier de rattachement seront remplacées par les nouvelles compétences, correspondant au métier <span class="metierPopup"></span>.
|
||||
Si vous aviez précédemment sélectionné des compétences en lien avec l'ancien métier de rattachement, celles-ci seront remplacées par les nouvelles compétences, correspondant au métier <span class="metierPopup"></span>.
|
||||
</p>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-secondary" data-dismiss="modal">Annuler</button>
|
||||
<button type="button" class="btn btn-secondary" data-dismiss="modal"
|
||||
onclick="chargerCompetences();">Remplacer</button>
|
||||
onclick="chargerCompetences();">Sélectionner</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -68,7 +68,7 @@
|
||||
|
||||
<!-- Modal 2 -->
|
||||
<div class="modal fade modalCompetences" id="ajoutCompetencesModal" tabindex="-1" role="dialog"
|
||||
aria-labelledby="ajoutCompetencesModalLabel" aria-hidden="false">
|
||||
aria-labelledby="ajoutCompetencesModalLabel" aria-hidden="false" data-show="false">
|
||||
<div class="modal-dialog modal-lg" role="document">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
@@ -239,7 +239,8 @@ Afin de créer votre annonce, renseignez l’ensemble des champs relatifs au pos
|
||||
<td class="col-lg-12 col-md-12 col-sm-12 bg-contrast-lower">
|
||||
<div id="competencesAd"></div><br />
|
||||
<div id="competencesAdMessage" class="text-danger">Vous devez
|
||||
sélectionner un minimum une compétence</div><br />
|
||||
sélectionner au minimum une compétence</div><br />
|
||||
<div id="loadingDiv" >Patientez...</div><br />
|
||||
<div class="text-center" id="competencesButtonAd">
|
||||
<button type="button" class="btn btn-primary" data-toggle="modal"
|
||||
data-target="#ajoutCompetencesModal" id="ajoutCompetences">
|
||||
@@ -493,6 +494,7 @@ Afin de créer votre annonce, renseignez l’ensemble des champs relatifs au pos
|
||||
.ready(function () {
|
||||
// Construction du champ typeahead d'auto compléetion de métier
|
||||
$("#competencesButtonAd").hide();
|
||||
$('#loadingDiv').hide();
|
||||
console.log("metiers!!");
|
||||
var metiers = new Bloodhound({
|
||||
datumTokenizer: Bloodhound.tokenizers.whitespace,
|
||||
@@ -536,9 +538,9 @@ Afin de créer votre annonce, renseignez l’ensemble des champs relatifs au pos
|
||||
//comment sont formaté les suggestion de l'auto completion
|
||||
$(".tt-dataset-metiers").show();
|
||||
var chaine = data.metier_libelle.replace("'", " ");
|
||||
return '<div><a href="#" onclick="chargerDonneesTemp(' + data.metier_id + ',\'' +
|
||||
return '<div onclick="chargerDonneesTemp(' + data.metier_id + ',\'' +
|
||||
chaine +
|
||||
'\')" data-toggle="modal" data-target="#competencesModal" id="competences">' + data.metier_libelle +
|
||||
'\')" data-toggle="modal" data-target="#competencesModal" id="competences"><a href="#" >' + data.metier_libelle +
|
||||
'</a></div>'
|
||||
},
|
||||
footer: function (query) {
|
||||
@@ -575,6 +577,10 @@ Afin de créer votre annonce, renseignez l’ensemble des champs relatifs au pos
|
||||
data: 'q=' + $("#id_appellation_temporaire").val(),
|
||||
//Le format de réponse attendu
|
||||
dataType: "json",
|
||||
beforeSend: function () { // Before we send the request, remove the .hidden class from the spinner and default to inline-block.
|
||||
$('#loadingDiv').show();
|
||||
console.log("début loading");
|
||||
},
|
||||
})
|
||||
//Ce code sera exécuté en cas de succès - La réponse du serveur est passée à done()
|
||||
/*On peut par exemple convertir cette réponse en chaine JSON et insérer
|
||||
@@ -662,6 +668,7 @@ Afin de créer votre annonce, renseignez l’ensemble des champs relatifs au pos
|
||||
}
|
||||
//on génere le json qui va remplir le champ ad_soft_competences
|
||||
genererJson();
|
||||
$('#loadingDiv').hide();
|
||||
})
|
||||
|
||||
//Ce code sera exécuté en cas d'échec - L'erreur est passée à fail()
|
||||
@@ -675,7 +682,7 @@ Afin de créer votre annonce, renseignez l’ensemble des champs relatifs au pos
|
||||
"Une erreur est survenue dans la recherche du métier de rattachement. <a href='#' onclick='chargerCompetences();'><br/><i class='fa fa-refresh fa-spin fa-fw'></i>Cliquez ici pour relancer la recherche</a> "
|
||||
);
|
||||
}
|
||||
|
||||
$('#loadingDiv').hide();
|
||||
console.log("La requête s'est terminée en échec. Infos : " + JSON.stringify(error));
|
||||
})
|
||||
|
||||
@@ -692,7 +699,7 @@ Afin de créer votre annonce, renseignez l’ensemble des champs relatifs au pos
|
||||
console.log("Clicked, target = " + cb.id);
|
||||
var id = cb.id.split('_');
|
||||
id = id[1];
|
||||
if($("#nbCompetences").val()<11){
|
||||
if($("#nbCompetences").val()<10){
|
||||
$("#competence_" + id).prop("checked", cb.checked);
|
||||
$("#competencepopup_" + id).prop("checked", cb.checked);
|
||||
if (cb.checked) {
|
||||
@@ -704,6 +711,7 @@ Afin de créer votre annonce, renseignez l’ensemble des champs relatifs au pos
|
||||
}
|
||||
}else{
|
||||
$("#competence_" + id).prop("checked", false);
|
||||
$("#competence_ad_" + id).hide();
|
||||
$("#competencepopup_" + id).prop("checked", false);
|
||||
}
|
||||
// on génere le json a chaque fois
|
||||
|
||||
@@ -131,7 +131,7 @@
|
||||
</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
{% if answers|length == 0 %}
|
||||
{% if spontaneous|length == 0 %}
|
||||
<tr><th colspan="3" class="text-center">Aucune candidature pour le moment</th></tr>
|
||||
{% endif %}
|
||||
</tbody>
|
||||
|
||||
@@ -89,46 +89,89 @@ Afin de créer votre annonce, renseignez l’ensemble des champs relatifs au pos
|
||||
</div>
|
||||
<div class="tab-pane slide-left padding-20 sm-no-padding active" id="tab2">
|
||||
<div class="row row-same-height">
|
||||
<div class="col-md-5 b-r b-dashed b-grey ">
|
||||
<div class="padding-30 sm-padding-5 sm-m-t-15 m-t-50">
|
||||
<div class="col-md-6 b-r b-dashed b-grey ">
|
||||
<div class="container-envoi-videos">
|
||||
<div class="titre-bloc-envoi-videos">
|
||||
<img src='https://www.talentstube.com/statique/images/capture.svg'class="image-envoi-video"/img>
|
||||
<div class="texte-envoi-video">
|
||||
<h4>Choix n°1</h4>
|
||||
<h5>J’<span class="underline">envoie</span> mes séquences vidéos à Talents Tube</h5>
|
||||
</div>
|
||||
</div>
|
||||
<div class="contenu-bloc-envoi-videos">
|
||||
{{ form_start(formFile, {'attr': { 'id': 'form_file' } }) }}
|
||||
{# {{ form_row(form.brochure) }}
|
||||
{{ form_row(form.brochure1) }}
|
||||
{{ form_row(form.brochure2) }} #}
|
||||
<p>Envoyez les séquences vidéos et Talents Tube s’occupe pour vous du montage complet de votre offre d’emploi sous <span class="underline">48h</span></p>
|
||||
<label for="etape-import-video">Vidéo 1 : Présentation de l’entreprise</label>
|
||||
{{ form_row(formFile.file1) }}
|
||||
{# <input type="file" id="avatar" name="avatar" accept="image/png, image/jpeg"> #}
|
||||
<label for="etape-import-video">Vidéo 2 : Présentation du poste et des missions</label>
|
||||
{{ form_row(formFile.file2) }}
|
||||
{# <input type="file" id="avatar" name="avatar" accept="image/png, image/jpeg"> #}
|
||||
<label for="etape-import-video">Vidéo 3 : Témoignage d’un collaborateur</label>
|
||||
{{ form_row(formFile.file3) }}
|
||||
{# <input type="file" id="avatar" name="avatar" accept="image/png, image/jpeg"> #}
|
||||
<button aria-label class="btn btn-primary" type="submit" onClick='$("#encours").show();'>Envoyer les séquences vidéos</button>
|
||||
|
||||
{{ form_end(formFile) }}
|
||||
{% if message !="" %}
|
||||
<div class="green center-align" style="border-radius:10px;padding:20px;color:#FFF;">{{ message }}</div>
|
||||
{% else %}
|
||||
<div class=" center-align" id="encours">Vos séquences vidéos sont en cours d’envoi...
|
||||
Veuillez rester sur la page pendant le chargement qui peut durer plusieurs minutes.
|
||||
</div>
|
||||
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
<!--<div class="padding-30 sm-padding-5 sm-m-t-15 m-t-50">
|
||||
<h2>J'importe une vidéo</h2>
|
||||
<p>Importez votre vidéo de recrutement et publiez votre annonce.
|
||||
Vous ne possédez pas encore de vidéo ?
|
||||
Talents Tube peut vous accompagner dans la réalisation de votre
|
||||
vidéo d'offre d'emploi. <a href="https://blog.talentstube.com/contact" target="_blank">Contactez-nous</a></p>
|
||||
{# <p class="small hint-text">Below is a sample page for your cart , Created using pages design
|
||||
UI Elementes</p> #}
|
||||
{# <ul id="tabs-video" class="tabs">
|
||||
<li class="tab col s4"><a class="active" href="#tab-video-new">Ajouter une nouvelle vidéo</a>
|
||||
</li>
|
||||
<li class="tab col s4"><a href="#tab-video-select">Utiliser une vidéo existante</a></li>
|
||||
</ul> #}
|
||||
</div>
|
||||
</div>-->
|
||||
</div>
|
||||
<div class="col-md-7">
|
||||
<div class="padding-30 sm-padding-5" id="tab-video-new">
|
||||
{% include 'media/dropzoneV2.html.twig' %}
|
||||
{{ form_start(form, {'attr': { 'id': 'form_media' } }) }}
|
||||
{{ form_row(form.title) }}
|
||||
<br/>
|
||||
<a href="{{ path('company_ad_edit',{"id": ad.getId()}) }}" class="btn btn-round btn-dark">
|
||||
<button aria-label="" class="btn btn-primary btn-cons btn-animated from-left pull-right"
|
||||
type="button">
|
||||
<span>Retour au détail de l'annonce </span>
|
||||
<span class="hidden-block">
|
||||
<i class="material-icons fs-16">info</i>
|
||||
</span>
|
||||
</button>
|
||||
</a>
|
||||
<button aria-label="" id="submit" type="submit" class="btn btn-primary btn-cons btn-animated from-left pull-right hide"
|
||||
type="button">
|
||||
<span>Valider l'annonce</span>
|
||||
<span class="hidden-block">
|
||||
<i class="material-icons fs-16">save</i>
|
||||
</span>
|
||||
</button>
|
||||
|
||||
{{ form_end(form) }}
|
||||
<div class="col-md-6">
|
||||
<div class="padding sm-padding-5" id="tab-video-new">
|
||||
<div class="container-envoi-videos">
|
||||
<div class="titre-bloc-envoi-videos">
|
||||
<img src='https://www.talentstube.com/statique/images/Import-video-recruteur.svg'class="image-envoi-video"/img>
|
||||
<div class="texte-envoi-video">
|
||||
<h4>Choix n°2</h4>
|
||||
<h5>J’<span class="underline">importe</span> ma vidéo d’offre d’emploi</h5>
|
||||
</div>
|
||||
</div>
|
||||
<div class="contenu-bloc-envoi-videos">
|
||||
{% include 'media/dropzoneV2.html.twig' %}
|
||||
{{ form_start(form, {'attr': { 'id': 'form_media' } }) }}
|
||||
{{ form_row(form.title) }}
|
||||
{# {{ form_row(form.brochure) }}
|
||||
{{ form_row(form.brochure1) }}
|
||||
{{ form_row(form.brochure2) }} #}
|
||||
<br/>
|
||||
<a href="{{ path('company_ad_edit',{"id": ad.getId()}) }}" class="btn btn-round btn-dark">
|
||||
<button aria-label="" class="btn btn-primary btn-cons btn-animated from-left pull-right"
|
||||
type="button">
|
||||
<span>Retour au détail de l'annonce </span>
|
||||
<span class="hidden-block">
|
||||
<i class="material-icons fs-16">info</i>
|
||||
</span>
|
||||
</button>
|
||||
</a>
|
||||
<button aria-label="" id="submit" type="submit" class="btn btn-primary btn-cons btn-animated from-left pull-right hide"
|
||||
type="button">
|
||||
<span>Valider l'annonce</span>
|
||||
<span class="hidden-block">
|
||||
<i class="material-icons fs-16">save</i>
|
||||
</span>
|
||||
</button>
|
||||
|
||||
{{ form_end(form) }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="tab-video-select" class="col s12">
|
||||
<div class="row">
|
||||
@@ -243,6 +286,7 @@ vidéo d'offre d'emploi. <a href="https://blog.talentstube.com/contact" target="
|
||||
});
|
||||
</script>
|
||||
<script type="text/javascript">
|
||||
$("#encours").hide();
|
||||
var urlDropzone = '{{ path("upload_media", {"id": ad.getId()}) }}';
|
||||
var urlDelete = '{{ path("delete_media", {"id": ad.getId() }) }}'
|
||||
var idObject = '{{ ad.getId() }}';
|
||||
|
||||
@@ -49,10 +49,230 @@
|
||||
<a href="{{ path('company_profile') }}">à les remplir ici. <i class="fa fa-link" aria-hidden="true"></i></a>
|
||||
</div>
|
||||
</div>
|
||||
<script>
|
||||
document.location.href = "/entreprise/me/profil";
|
||||
</script>
|
||||
{# {{ render("/entreprise/me/profil") }} #}
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
{% include 'company/ad_table_listing.html.twig' with {'ads':ads} %}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- START JUMBOTRON -->
|
||||
<div class="jumbotron" data-pages="parallax">
|
||||
<div class=" container-fluid container-fixed-lg sm-p-l-0 sm-p-r-0">
|
||||
<div class="inner">
|
||||
<!-- START BREADCRUMB -->
|
||||
<ol class="breadcrumb">
|
||||
<li class="breadcrumb-item"><a href="/entreprise/me/">Accueil</a></li>
|
||||
</ol>
|
||||
<!-- END BREADCRUMB -->
|
||||
<div class="row">
|
||||
<div class="col-xl-12 col-lg-12 ">
|
||||
<!-- START card -->
|
||||
<div class="card card-transparent">
|
||||
<div class="card-header ">
|
||||
</div>
|
||||
<div class="card-body">
|
||||
|
||||
<a class="btn-square" target="_self" href="{{ path('company_ad_create') }}">
|
||||
<button aria-label=""
|
||||
class="btn btn-primary btn-cons">{{ 'ad.company.add.label'|trans }}</button>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<!-- END card -->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- END JUMBOTRON -->
|
||||
|
||||
|
||||
|
||||
<!-- START CONTAINER FLUID -->
|
||||
<!-- START CONTAINER FLUID -->
|
||||
<div class=" container-fluid container-fixed-lg bg-white">
|
||||
<!-- START card -->
|
||||
<div class="card card-transparent">
|
||||
<div class="card-header ">
|
||||
<div class="card-title">Statistiques</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-lg-12 col-xl-12 col-xlg-12">
|
||||
<div class="col-md-12 m-b-10" style="display:flex;">
|
||||
<!-- Nombre de candidatures vidéo - START WIDGET D3 widget_graphTileFlat-->
|
||||
<div class="widget-8 card m-r-15 widget-loader-bar card-header card-background-1">
|
||||
<div class="container-xs-height">
|
||||
<!--full-height-->
|
||||
<div class="">
|
||||
<!--row-xs-height -->
|
||||
<div class="col-xs-height col-top">
|
||||
<div class="">
|
||||
<!--card-header top-left top-right -->
|
||||
<div class="card-title text-card">
|
||||
<span class="font-montserrat fs-11 all-caps">Nombre total de
|
||||
candidats</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row-xs-height">
|
||||
<div class="col-xs-height col-top relative">
|
||||
<div class="row full-height">
|
||||
<div class="col-sm-12 text-card">
|
||||
<h3 class="bold no-margin p-b-5 text-card"><a class="bold no-margin p-b-5 text-card" href="{{ path('company_answer_list') }}">{{nbAnswersSended}}</a></h3>
|
||||
</div>
|
||||
<div class="col-sm-8">
|
||||
<div
|
||||
class="p-l-0 full-height d-flex flex-column justify-content-between text-card">
|
||||
<p class="small m-t-5 m-b-0">
|
||||
<span class="fs-12 ">Nouveaux candidats</span>
|
||||
</p>
|
||||
<h4 class="bold no-margin"><a class="bold no-margin" href="{{ path('company_answer_list') }}">+{{nbAnswersSended}}</a></h4>
|
||||
</div>
|
||||
</div>
|
||||
<!--<div class="col-sm-5">
|
||||
<div class="p-l-0 full-height d-flex flex-column justify-content-between text-card">
|
||||
<p class="small m-t-5 m-b-0">
|
||||
<span class="fs-12 ">30 derniers jours</span>
|
||||
</p>
|
||||
<h4 class="bold no-margin" style="opacity:0.75">+48</h4>
|
||||
</div>
|
||||
</div>-->
|
||||
</div>
|
||||
<!--<div class="widget-8-chart line-chart" data-line-color="white" data-points="true" data-point-color="warning" data-stroke-width="2">
|
||||
</div>-->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- END WIDGET -->
|
||||
<!-- Nombre de visite page entreprise vidéo - START WIDGET D3 widget_graphTileFlat-->
|
||||
<div class="widget-8 card m-r-15 widget-loader-bar card-header card-background-2">
|
||||
<div class="container-xs-height">
|
||||
<div class="">
|
||||
<!--row-xs-height -->
|
||||
<div class="col-xs-height col-top">
|
||||
<div class="">
|
||||
<!--card-header top-left top-right -->
|
||||
<div class="card-title text-card">
|
||||
<span class="font-montserrat fs-11 all-caps">Visites de la page
|
||||
entreprise</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row-xs-height">
|
||||
<div class="col-xs-height col-top relative">
|
||||
<div class="row full-height">
|
||||
<div class="col-sm-12 text-card">
|
||||
<h3 class="bold no-margin p-b-5 text-card">{{ records.totalRecordsCompany }}</h3>
|
||||
</div>
|
||||
<div class="col-sm-5 vertical-border">
|
||||
<div
|
||||
class="p-l-0 full-height d-flex flex-column justify-content-between text-card">
|
||||
<p class="small m-t-5 m-b-0">
|
||||
<span class="fs-12 ">7 derniers jours</span>
|
||||
</p>
|
||||
<h4 class="bold no-margin">+{{ records7days.totalRecordsCompany }}</h4>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-5">
|
||||
<div
|
||||
class="p-l-0 full-height d-flex flex-column justify-content-between text-card">
|
||||
<p class="small m-t-5 m-b-0">
|
||||
<span class="fs-12 ">30 derniers jours</span>
|
||||
</p>
|
||||
<h4 class="bold no-margin" style="opacity:0.75">+{{ records30days.totalRecordsCompany }}</h4>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!--<div class="widget-8-chart line-chart" data-line-color="white" data-points="true" data-point-color="warning" data-stroke-width="2">
|
||||
</div>-->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- END WIDGET -->
|
||||
|
||||
<!-- Nombre de visites global offres d'emploi --START WIDGET D3 widget_graphTileFlat-->
|
||||
<div class="widget-8 card no-margin widget-loader-bar card-header card-background-3">
|
||||
<div class="container-xs-height">
|
||||
<div class="">
|
||||
<!--row-xs-height -->
|
||||
<div class="col-xs-height col-top">
|
||||
<div class="">
|
||||
<!--card-header top-left top-right -->
|
||||
<div class="card-title text-card">
|
||||
<span class="font-montserrat fs-11 all-caps">Vues globales des offres
|
||||
d’emploi</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row-xs-height">
|
||||
<div class="col-xs-height col-top relative">
|
||||
<div class="row full-height">
|
||||
<div class="col-sm-12 text-card">
|
||||
<h3 class="bold no-margin p-b-5 text-card">{{ records.totalRecords-records.totalRecordsCompany }}</h3>
|
||||
</div>
|
||||
<div class="col-sm-5 vertical-border">
|
||||
<div
|
||||
class="p-l-0 full-height d-flex flex-column justify-content-between text-card">
|
||||
<p class="small m-t-5 m-b-0">
|
||||
<span class="fs-12 ">7 derniers jours</span>
|
||||
</p>
|
||||
<h4 class="bold no-margin">+{{ records7days.totalRecords-records7days.totalRecordsCompany }}</h4>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-5">
|
||||
<div
|
||||
class="p-l-0 full-height d-flex flex-column justify-content-between text-card">
|
||||
<p class="small m-t-5 m-b-0">
|
||||
<span class="fs-12 ">30 derniers jours</span>
|
||||
</p>
|
||||
<h4 class="bold no-margin" style="opacity:0.75">+{{ records30days.totalRecords-records30days.totalRecordsCompany }}</h4>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!--<div class="widget-8-chart line-chart" data-line-color="white" data-points="true" data-point-color="warning" data-stroke-width="2">
|
||||
</div>-->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- END WIDGET -->
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<!--class="col-lg-8 sm-p-b-10 md-p-b-10"-->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
<!-- END card -->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
{% endblock %}
|
||||
|
||||
@@ -61,178 +281,192 @@
|
||||
{# <script src="{{ asset('/js/vendors/Chart.bundle.min.js') }}"></script> #}
|
||||
<script type="text/javascript">
|
||||
var currentMonth = '{{ "now"|date("m") }}';
|
||||
var arrayRecords;
|
||||
{# var ctx, myChart, arrayCurrentsLabel, arrayCurrentsAdsValues, arrayCurrentsCompanyValues, donughtRecords; #}
|
||||
var arrayRecords; {
|
||||
#
|
||||
var ctx, myChart, arrayCurrentsLabel, arrayCurrentsAdsValues, arrayCurrentsCompanyValues, donughtRecords;#
|
||||
}
|
||||
var sumVisitsAds = 0;
|
||||
var sumCompanyValues = 0;
|
||||
|
||||
{# function loadChartData() {
|
||||
setArrayValues();
|
||||
myChart.update();
|
||||
myDoughnutChart.update();
|
||||
} #}
|
||||
|
||||
{# function getChartData(date1, date2) {
|
||||
$.ajax({
|
||||
type: "POST",
|
||||
url: '{{ path("company_ajax_dashboard") }}',
|
||||
data: 'date1=' + date1 + '&date2=' + date2,
|
||||
dataType: "json",
|
||||
success: function (data) {
|
||||
arrayRecords = data.lineRecords;
|
||||
donughtRecords = data.donughtRecords;
|
||||
myDoughnutChart.data.datasets[0].data = donughtRecords;
|
||||
loadChartData();
|
||||
$('.fa-refresh').hide();
|
||||
},
|
||||
error: function (data) {
|
||||
$('.fa-refresh').hide();
|
||||
}
|
||||
});
|
||||
} #}
|
||||
|
||||
{# document.addEventListener("DOMContentLoaded", function (event) {
|
||||
$('.fa-refresh').hide();
|
||||
getChartData(0, 0);
|
||||
configDatePicker = {
|
||||
applyBtnClass: 'btn btn-default',
|
||||
format: 'DD-MM-YYYY',
|
||||
separator: ' au ',
|
||||
endDate: new Date(),
|
||||
maxDays: 365
|
||||
}
|
||||
$('#choiceMonth').dateRangePicker(configDatePicker).bind('datepicker-apply', function (event, obj) {
|
||||
$('.fa-refresh').show();
|
||||
var month1 = obj.date1.getMonth();
|
||||
var day1 = obj.date1.getDate();
|
||||
var year1 = obj.date1.getFullYear();
|
||||
var month2 = obj.date2.getMonth();
|
||||
var day2 = obj.date2.getDate();
|
||||
var year2 = obj.date2.getFullYear();
|
||||
var date1 = (month1 + 1) + "/" + day1 + "/" + year1 + " 00:00:01";
|
||||
var date2 = (month2 + 1) + "/" + day2 + "/" + year2 + " 23:59:59";
|
||||
getChartData(date1, date2);
|
||||
});
|
||||
$('.apply-btn').attr('value', 'Valider');
|
||||
}); #}
|
||||
|
||||
{# function setArrayValues() {
|
||||
arrayCurrentsLabel = [];
|
||||
arrayCurrentsAdsValues = [];
|
||||
arrayCurrentsCompanyValues = [];
|
||||
arrayRecords['labels'].forEach(function (element, index) {
|
||||
var date = element.split("-");
|
||||
var dateAffiche = date[2] + "-" + date[1] + "-" + date[0];
|
||||
arrayCurrentsLabel.push(dateAffiche);
|
||||
arrayCurrentsAdsValues.push(arrayRecords['datasetsAd'][index]);
|
||||
arrayCurrentsCompanyValues.push(arrayRecords['datasetsCompany'][index]);
|
||||
});
|
||||
myChart.data.labels = arrayCurrentsLabel;
|
||||
myChart.data.datasets[0].data = arrayCurrentsAdsValues;
|
||||
myChart.data.datasets[1].data = arrayCurrentsCompanyValues;
|
||||
|
||||
if (arrayCurrentsAdsValues.length > 0) {
|
||||
sumVisitsAds = arrayCurrentsAdsValues.reduce(function (memo, val) {
|
||||
let value = val || 0;
|
||||
if (value != null) {
|
||||
return memo + value;
|
||||
}
|
||||
});
|
||||
} else {
|
||||
sumVisitsAds = 0;
|
||||
}
|
||||
if (arrayCurrentsCompanyValues.length > 0) {
|
||||
sumCompanyValues = arrayCurrentsCompanyValues.reduce(function (memo, val) {
|
||||
let value = val || 0;
|
||||
if (value != null) {
|
||||
return memo + value;
|
||||
}
|
||||
});
|
||||
} else {
|
||||
sumCompanyValues = 0;
|
||||
}
|
||||
|
||||
$('.countVisitsAds').html(sumVisitsAds);
|
||||
$('.countVisitsCompany').html(sumCompanyValues);
|
||||
{
|
||||
#
|
||||
function loadChartData() {
|
||||
setArrayValues();
|
||||
myChart.update();
|
||||
myDoughnutChart.update();
|
||||
}#
|
||||
}
|
||||
|
||||
var dataLine = {
|
||||
datasets: [{
|
||||
label: "Nombre de visite d'annonce par jour",
|
||||
fill: false,
|
||||
fontColor: "rgba(39,139,231,1)",
|
||||
backgroundColor: "rgba(39,139,231,1)",
|
||||
borderColor: "rgba(39,139,231,1)"
|
||||
}, {
|
||||
label: "Nombre de visite de votre page entreprise",
|
||||
fill: false,
|
||||
fontColor: "#F9C339",
|
||||
backgroundColor: "#F9C339",
|
||||
borderColor: "#F9C339"
|
||||
}]
|
||||
};
|
||||
{
|
||||
#
|
||||
function getChartData(date1, date2) {
|
||||
$.ajax({
|
||||
type: "POST",
|
||||
url: '{{ path("company_ajax_dashboard") }}',
|
||||
data: 'date1=' + date1 + '&date2=' + date2,
|
||||
dataType: "json",
|
||||
success: function (data) {
|
||||
arrayRecords = data.lineRecords;
|
||||
donughtRecords = data.donughtRecords;
|
||||
myDoughnutChart.data.datasets[0].data = donughtRecords;
|
||||
loadChartData();
|
||||
$('.fa-refresh').hide();
|
||||
},
|
||||
error: function (data) {
|
||||
$('.fa-refresh').hide();
|
||||
}
|
||||
});
|
||||
}#
|
||||
}
|
||||
|
||||
var ctx = document.getElementById("nb_visits");
|
||||
var myChart = new Chart(ctx, {
|
||||
type: 'line',
|
||||
data: dataLine,
|
||||
options: {
|
||||
legend: {
|
||||
display: false
|
||||
},
|
||||
scales: {
|
||||
xAxes: [{
|
||||
display: true,
|
||||
scaleLabel: {
|
||||
display: true,
|
||||
labelString: 'Date'
|
||||
}
|
||||
}],
|
||||
yAxes: [{
|
||||
ticks: {
|
||||
min: 0
|
||||
},
|
||||
scaleLabel: {
|
||||
display: true,
|
||||
labelString: 'Valeur'
|
||||
}
|
||||
}]
|
||||
{
|
||||
#
|
||||
document.addEventListener("DOMContentLoaded", function (event) {
|
||||
$('.fa-refresh').hide();
|
||||
getChartData(0, 0);
|
||||
configDatePicker = {
|
||||
applyBtnClass: 'btn btn-default',
|
||||
format: 'DD-MM-YYYY',
|
||||
separator: ' au ',
|
||||
endDate: new Date(),
|
||||
maxDays: 365
|
||||
}
|
||||
}
|
||||
});
|
||||
$('#choiceMonth').dateRangePicker(configDatePicker).bind('datepicker-apply', function (event, obj) {
|
||||
$('.fa-refresh').show();
|
||||
var month1 = obj.date1.getMonth();
|
||||
var day1 = obj.date1.getDate();
|
||||
var year1 = obj.date1.getFullYear();
|
||||
var month2 = obj.date2.getMonth();
|
||||
var day2 = obj.date2.getDate();
|
||||
var year2 = obj.date2.getFullYear();
|
||||
var date1 = (month1 + 1) + "/" + day1 + "/" + year1 + " 00:00:01";
|
||||
var date2 = (month2 + 1) + "/" + day2 + "/" + year2 + " 23:59:59";
|
||||
getChartData(date1, date2);
|
||||
});
|
||||
$('.apply-btn').attr('value', 'Valider');
|
||||
});#
|
||||
}
|
||||
|
||||
var dataDonught = {
|
||||
labels: [
|
||||
"Visites de talents",
|
||||
"Visites d'entreprises",
|
||||
"Visites d'internautes non inscrit"
|
||||
],
|
||||
datasets: [{
|
||||
data: donughtRecords,
|
||||
backgroundColor: [
|
||||
"#FF6384",
|
||||
"#36A2EB",
|
||||
"#FFCE56"
|
||||
{
|
||||
#
|
||||
function setArrayValues() {
|
||||
arrayCurrentsLabel = [];
|
||||
arrayCurrentsAdsValues = [];
|
||||
arrayCurrentsCompanyValues = [];
|
||||
arrayRecords['labels'].forEach(function (element, index) {
|
||||
var date = element.split("-");
|
||||
var dateAffiche = date[2] + "-" + date[1] + "-" + date[0];
|
||||
arrayCurrentsLabel.push(dateAffiche);
|
||||
arrayCurrentsAdsValues.push(arrayRecords['datasetsAd'][index]);
|
||||
arrayCurrentsCompanyValues.push(arrayRecords['datasetsCompany'][index]);
|
||||
});
|
||||
myChart.data.labels = arrayCurrentsLabel;
|
||||
myChart.data.datasets[0].data = arrayCurrentsAdsValues;
|
||||
myChart.data.datasets[1].data = arrayCurrentsCompanyValues;
|
||||
|
||||
if (arrayCurrentsAdsValues.length > 0) {
|
||||
sumVisitsAds = arrayCurrentsAdsValues.reduce(function (memo, val) {
|
||||
let value = val || 0;
|
||||
if (value != null) {
|
||||
return memo + value;
|
||||
}
|
||||
});
|
||||
} else {
|
||||
sumVisitsAds = 0;
|
||||
}
|
||||
if (arrayCurrentsCompanyValues.length > 0) {
|
||||
sumCompanyValues = arrayCurrentsCompanyValues.reduce(function (memo, val) {
|
||||
let value = val || 0;
|
||||
if (value != null) {
|
||||
return memo + value;
|
||||
}
|
||||
});
|
||||
} else {
|
||||
sumCompanyValues = 0;
|
||||
}
|
||||
|
||||
$('.countVisitsAds').html(sumVisitsAds);
|
||||
$('.countVisitsCompany').html(sumCompanyValues);
|
||||
}
|
||||
|
||||
var dataLine = {
|
||||
datasets: [{
|
||||
label: "Nombre de visite d'annonce par jour",
|
||||
fill: false,
|
||||
fontColor: "rgba(39,139,231,1)",
|
||||
backgroundColor: "rgba(39,139,231,1)",
|
||||
borderColor: "rgba(39,139,231,1)"
|
||||
}, {
|
||||
label: "Nombre de visite de votre page entreprise",
|
||||
fill: false,
|
||||
fontColor: "#F9C339",
|
||||
backgroundColor: "#F9C339",
|
||||
borderColor: "#F9C339"
|
||||
}]
|
||||
};
|
||||
|
||||
var ctx = document.getElementById("nb_visits");
|
||||
var myChart = new Chart(ctx, {
|
||||
type: 'line',
|
||||
data: dataLine,
|
||||
options: {
|
||||
legend: {
|
||||
display: false
|
||||
},
|
||||
scales: {
|
||||
xAxes: [{
|
||||
display: true,
|
||||
scaleLabel: {
|
||||
display: true,
|
||||
labelString: 'Date'
|
||||
}
|
||||
}],
|
||||
yAxes: [{
|
||||
ticks: {
|
||||
min: 0
|
||||
},
|
||||
scaleLabel: {
|
||||
display: true,
|
||||
labelString: 'Valeur'
|
||||
}
|
||||
}]
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
var dataDonught = {
|
||||
labels: [
|
||||
"Visites de talents",
|
||||
"Visites d'entreprises",
|
||||
"Visites d'internautes non inscrit"
|
||||
],
|
||||
hoverBackgroundColor: [
|
||||
"#FF6384",
|
||||
"#36A2EB",
|
||||
"#FFCE56"
|
||||
]
|
||||
}]
|
||||
};
|
||||
var ctxDonught = document.getElementById("donught_visits");
|
||||
var myDoughnutChart = new Chart(ctxDonught, {
|
||||
type: 'doughnut',
|
||||
data: dataDonught,
|
||||
options: {
|
||||
legend: {
|
||||
display: false,
|
||||
},
|
||||
animation: {
|
||||
animateScale: true
|
||||
datasets: [{
|
||||
data: donughtRecords,
|
||||
backgroundColor: [
|
||||
"#FF6384",
|
||||
"#36A2EB",
|
||||
"#FFCE56"
|
||||
],
|
||||
hoverBackgroundColor: [
|
||||
"#FF6384",
|
||||
"#36A2EB",
|
||||
"#FFCE56"
|
||||
]
|
||||
}]
|
||||
};
|
||||
var ctxDonught = document.getElementById("donught_visits");
|
||||
var myDoughnutChart = new Chart(ctxDonught, {
|
||||
type: 'doughnut',
|
||||
data: dataDonught,
|
||||
options: {
|
||||
legend: {
|
||||
display: false,
|
||||
},
|
||||
animation: {
|
||||
animateScale: true
|
||||
}
|
||||
}
|
||||
}
|
||||
}); #}
|
||||
});#
|
||||
}
|
||||
</script>
|
||||
{% endblock %}
|
||||
@@ -19,7 +19,8 @@
|
||||
<!-- Title -->
|
||||
<header class="text-center mb-5">
|
||||
<h2 class="h4 mb-0">Connexion</h2>
|
||||
<p>Connectez-vous pour gérer votre compte</p>
|
||||
<p>Connectez-vous pour gérer votre compte </p>
|
||||
{% if erreur is defined and erreur %}<p class="text-danger">Votre dernière tentative de connexion a échoué. Vérifiez votre email ou votre mot de passe</p>{% endif %}
|
||||
</header>
|
||||
|
||||
|
||||
@@ -143,4 +144,4 @@
|
||||
<!-- End Content -->
|
||||
</div>
|
||||
<!-- End Signup Modal Window -->
|
||||
<!-- ========== END SECONDARY CONTENTS ========== -->
|
||||
<!-- ========== END SECONDARY CONTENTS ========== -->
|
||||
|
||||
@@ -17,8 +17,67 @@
|
||||
data-arrow-left-classes="fa fa-arrow-left u-slick__arrow-classic-inner bg-white text-dark left-0 ml-md-n9"
|
||||
data-arrow-right-classes="fa fa-arrow-right u-slick__arrow-classic-inner bg-white text-dark right-0 mr-md-n9"
|
||||
data-nav-for="#sliderSyncingThumb2">
|
||||
|
||||
<div class="js-slide bg-img-hero bg-img-hero-center gradient-overlay-half-black-v1"
|
||||
style="background-image: url({{ asset('v2/temoignages/pontivy-temoignage-image.jpg') }});">
|
||||
|
||||
<div class="w-md-80 w-lg-50 text-white space-2 px-9">
|
||||
<h3 class="h2 text-lh-xs mb-4">Pontivy Communauté</h3>
|
||||
<p class="text-white-70 mb-4">Christine Le Strat & Kévin Nado</p>
|
||||
|
||||
<a class="js-fancybox text-white" href="javascript:;"
|
||||
data-src="https://www.youtube.com/watch?v=ugXui7ICJeM?autoplay=1" data-speed="700"
|
||||
data-animate-in="zoomIn" data-animate-out="zoomOut" data-caption="Témoignage">
|
||||
Voir le témoignage
|
||||
<i class="u-icon u-icon--sm u-icon--white-soft rounded-circle ml-2">
|
||||
<i class="u-icon__inner svg-icon svg-icon-xs text-white">
|
||||
<svg width="24px" height="24px" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
||||
<rect x="0" y="0" width="24" height="24"></rect>
|
||||
<path
|
||||
d="M9.82866499,18.2771971 L16.5693679,12.3976203 C16.7774696,12.2161036 16.7990211,11.9002555 16.6175044,11.6921539 C16.6029128,11.6754252 16.5872233,11.6596867 16.5705402,11.6450431 L9.82983723,5.72838979 C9.62230202,5.54622572 9.30638833,5.56679309 9.12422426,5.7743283 C9.04415337,5.86555116 9,5.98278612 9,6.10416552 L9,17.9003957 C9,18.1765381 9.22385763,18.4003957 9.5,18.4003957 C9.62084305,18.4003957 9.73759731,18.3566309 9.82866499,18.2771971 Z"
|
||||
fill="#000000"></path>
|
||||
</g>
|
||||
</svg>
|
||||
</i>
|
||||
</i>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="js-slide bg-img-hero bg-img-hero-center gradient-overlay-half-black-v1"
|
||||
style="background-image: url({{ asset('v2/temoignages/temoignage-mma-questembert.jpg') }});">
|
||||
|
||||
<div class="w-md-80 w-lg-50 text-white space-2 px-9">
|
||||
<h3 class="h2 text-lh-xs mb-4">MMA Questembert</h3>
|
||||
<p class="text-white-70 mb-4"> Stephane David, Agent Général d'Assurances</p>
|
||||
|
||||
<a class="js-fancybox text-white" href="javascript:;"
|
||||
data-src="https://www.youtube.com/watch?v=0bbNdf4qAng?autoplay=1" data-speed="700"
|
||||
data-animate-in="zoomIn" data-animate-out="zoomOut" data-caption="Témoignage">
|
||||
Voir le témoignage
|
||||
<i class="u-icon u-icon--sm u-icon--white-soft rounded-circle ml-2">
|
||||
<i class="u-icon__inner svg-icon svg-icon-xs text-white">
|
||||
<svg width="24px" height="24px" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
||||
<rect x="0" y="0" width="24" height="24"></rect>
|
||||
<path
|
||||
d="M9.82866499,18.2771971 L16.5693679,12.3976203 C16.7774696,12.2161036 16.7990211,11.9002555 16.6175044,11.6921539 C16.6029128,11.6754252 16.5872233,11.6596867 16.5705402,11.6450431 L9.82983723,5.72838979 C9.62230202,5.54622572 9.30638833,5.56679309 9.12422426,5.7743283 C9.04415337,5.86555116 9,5.98278612 9,6.10416552 L9,17.9003957 C9,18.1765381 9.22385763,18.4003957 9.5,18.4003957 C9.62084305,18.4003957 9.73759731,18.3566309 9.82866499,18.2771971 Z"
|
||||
fill="#000000"></path>
|
||||
</g>
|
||||
</svg>
|
||||
</i>
|
||||
</i>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="js-slide bg-img-hero bg-img-hero-center gradient-overlay-half-black-v1"
|
||||
style="background-image: url({{ asset('v2/temoignages/mgdis-temoignage-image.jpg') }});">
|
||||
|
||||
<div class="w-md-80 w-lg-50 text-white space-2 px-9">
|
||||
<h3 class="h2 text-lh-xs mb-4">MGDIS</h3>
|
||||
<p class="text-white-70 mb-4">Simona Vasile-Martin, Responsable Marketing</p>
|
||||
@@ -100,6 +159,7 @@
|
||||
|
||||
<div class="js-slide bg-img-hero bg-img-hero-center gradient-overlay-half-black-v1"
|
||||
style="background-image: url({{ asset('v2/temoignages/intermarche-temoignage-image.jpg') }});">
|
||||
|
||||
<div class="w-md-80 w-lg-50 text-white space-2 px-9">
|
||||
<h3 class="h2 text-lh-xs mb-4">Intermarché LAI</h3>
|
||||
<p class="text-white-70 mb-4">Ludovic Chamoin-Foucaut, Responsable Ressources Humaines</p>
|
||||
@@ -135,6 +195,43 @@
|
||||
<div id="sliderSyncingThumb2"
|
||||
class="js-slick-carousel u-slick u-slick--gutters-2 u-slick--video w-50 w-lg-30 mx-auto" data-infinite="true"
|
||||
data-slides-show="3" data-is-thumbs="true" data-center-mode="true" data-nav-for="#sliderSyncingNav2">
|
||||
|
||||
<div class="js-slide rounded overflow-hidden">
|
||||
<img class="img-fluid" src="{{ asset('v2/temoignages/pontivy-communaute-temoignage-vignette.jpg') }}"
|
||||
alt="Image Description">
|
||||
<i class="u-icon u-icon--sm u-icon--dark-soft rounded-circle u-slick--video__player">
|
||||
<i class="u-icon__inner svg-icon svg-icon-xs text-white">
|
||||
<svg width="24px" height="24px" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
||||
<rect x="0" y="0" width="24" height="24"></rect>
|
||||
<path
|
||||
d="M9.82866499,18.2771971 L16.5693679,12.3976203 C16.7774696,12.2161036 16.7990211,11.9002555 16.6175044,11.6921539 C16.6029128,11.6754252 16.5872233,11.6596867 16.5705402,11.6450431 L9.82983723,5.72838979 C9.62230202,5.54622572 9.30638833,5.56679309 9.12422426,5.7743283 C9.04415337,5.86555116 9,5.98278612 9,6.10416552 L9,17.9003957 C9,18.1765381 9.22385763,18.4003957 9.5,18.4003957 C9.62084305,18.4003957 9.73759731,18.3566309 9.82866499,18.2771971 Z"
|
||||
fill="#000000"></path>
|
||||
</g>
|
||||
</svg>
|
||||
</i>
|
||||
</i>
|
||||
</div>
|
||||
|
||||
<div class="js-slide rounded overflow-hidden">
|
||||
<img class="img-fluid" src="{{ asset('v2/temoignages/mma-temoignage-vignette.jpg') }}"
|
||||
alt="Image Description">
|
||||
<i class="u-icon u-icon--sm u-icon--dark-soft rounded-circle u-slick--video__player">
|
||||
<i class="u-icon__inner svg-icon svg-icon-xs text-white">
|
||||
<svg width="24px" height="24px" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
||||
<rect x="0" y="0" width="24" height="24"></rect>
|
||||
<path
|
||||
d="M9.82866499,18.2771971 L16.5693679,12.3976203 C16.7774696,12.2161036 16.7990211,11.9002555 16.6175044,11.6921539 C16.6029128,11.6754252 16.5872233,11.6596867 16.5705402,11.6450431 L9.82983723,5.72838979 C9.62230202,5.54622572 9.30638833,5.56679309 9.12422426,5.7743283 C9.04415337,5.86555116 9,5.98278612 9,6.10416552 L9,17.9003957 C9,18.1765381 9.22385763,18.4003957 9.5,18.4003957 C9.62084305,18.4003957 9.73759731,18.3566309 9.82866499,18.2771971 Z"
|
||||
fill="#000000"></path>
|
||||
</g>
|
||||
</svg>
|
||||
</i>
|
||||
</i>
|
||||
</div>
|
||||
|
||||
<div class="js-slide rounded overflow-hidden">
|
||||
<img class="img-fluid" src="{{ asset('v2/temoignages/mgdis-temoignage-vignette.jpg') }}"
|
||||
alt="Image Description">
|
||||
|
||||
@@ -36,8 +36,7 @@
|
||||
<li><a class="list-group-item list-group-item-action" href="{{ path('cgu') }}" target="_blank">CGU</a></li>
|
||||
<li><a class="list-group-item list-group-item-action" href="{{ path('politique-confidentialite') }}" target="_blank">Politique de confidentialité</a></li>
|
||||
<li><a class="list-group-item list-group-item-action" href="{{ path('abonnement') }}" >Tarifs</a></li>
|
||||
<li><a class="list-group-item list-group-item-action" href="https://blog.talentstube.com/contact" target="_blank"
|
||||
">Contact</a></li>
|
||||
<li><a class="list-group-item list-group-item-action" href="https://blog.talentstube.com/contact" target="_blank">Contact</a></li>
|
||||
</ul>
|
||||
<!-- End Links -->
|
||||
</div>
|
||||
@@ -86,7 +85,7 @@
|
||||
|
||||
|
||||
|
||||
<p class="small text-muted">Tous droits réservés. © 2020 Talents Tube.</p>
|
||||
<p class="small text-muted">Tous droits réservés.. © 2020 Talents Tube. V{{ version }}</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -1,110 +1,530 @@
|
||||
<!doctype html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title></title>
|
||||
<!--[if !mso]><!-->
|
||||
<style type="text/css">
|
||||
@import url(https://fonts.googleapis.com/css?family=Raleway);
|
||||
</style>
|
||||
<style type="text/css">
|
||||
@media only screen and (max-width:480px) {
|
||||
@-ms-viewport { width:320px; }
|
||||
@viewport { width:320px; }
|
||||
}
|
||||
</style>
|
||||
<link href="https://fonts.googleapis.com/css?family=Raleway" rel="stylesheet" type="text/css">
|
||||
<style type="text/css">
|
||||
*{
|
||||
font-family: 'Raleway';
|
||||
}
|
||||
#outlook a { padding: 0; }
|
||||
.ReadMsgBody { width: 100%; }
|
||||
.ExternalClass { width: 100%; }
|
||||
.ExternalClass * { line-height:100%; }
|
||||
body { margin: 0; padding: 0; -webkit-text-size-adjust: 100%; -ms-text-size-adjust: 100%; }
|
||||
table, td { border-collapse:collapse; mso-table-lspace: 0pt; mso-table-rspace: 0pt; }
|
||||
img { border: 0; height: auto; line-height: 100%; outline: none; text-decoration: none; -ms-interpolation-mode: bicubic; }
|
||||
p {
|
||||
display: block;
|
||||
margin: 13px 0;
|
||||
}
|
||||
.btn-default {
|
||||
padding: 12px 30px;
|
||||
border-radius: 30px;
|
||||
height: 48px;
|
||||
line-height: 48px;
|
||||
background: #1689fb;
|
||||
font-size: 16px;
|
||||
color: #FFF;
|
||||
text-decoration: none;
|
||||
}
|
||||
.btn-white {
|
||||
background: #FFF;
|
||||
color: #1689fb;
|
||||
border: 1px solid #1689fb;
|
||||
padding: 10px 29px;
|
||||
}
|
||||
<!doctype html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:v="urn:schemas-microsoft-com:vml"
|
||||
xmlns:o="urn:schemas-microsoft-com:office:office">
|
||||
|
||||
</style>
|
||||
<head>
|
||||
<title>
|
||||
Réinitialisation de votre mot de passe Talents Tube
|
||||
</title>
|
||||
<!--[if !mso]><!-- -->
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<!--<![endif]-->
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<style type="text/css">
|
||||
#outlook a {
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
<!--<![endif]-->
|
||||
<style type="text/css">
|
||||
@media only screen and (min-width:480px) {
|
||||
.mj-column-per-100, * [aria-labelledby="mj-column-per-100"] { width:100%!important; }
|
||||
}</style></head>
|
||||
<body id="YIELD_MJML" style="background: #F2F2F2;font-family:'Raleway';"><div class="mj-body" style="background-color:#F2F2F2;"><!--[if mso]>
|
||||
<table border="0" cellpadding="0" cellspacing="0" width="600" align="center" style="width:600px;"><tr><td>
|
||||
<![endif]--><div style="margin:0 auto;max-width:600px;background:#F2F2F2;"><table class="" cellpadding="0" cellspacing="0" style="width:100%;font-size:0px;background:#F2F2F2;" align="center"><tbody><tr><td style="text-align:center;vertical-align:top;font-size:0;padding:0px;"><!--[if mso]>
|
||||
<table border="0" cellpadding="0" cellspacing="0"><tr><td style="width:600px;">
|
||||
</td></tr></table>
|
||||
<![endif]--></td></tr></tbody></table></div><!--[if mso]>
|
||||
</td></tr></table>
|
||||
<![endif]-->
|
||||
<!--[if mso]>
|
||||
<table border="0" cellpadding="0" cellspacing="0" width="600" align="center" style="width:600px;"><tr><td>
|
||||
<![endif]--><div style="margin:0 auto;max-width:600px;background:#F2F2F2;"><table class="" cellpadding="0" cellspacing="0" style="width:100%;font-size:0px;background:#F2F2F2;" align="center"><tbody><tr><td style="text-align:center;vertical-align:top;font-size:0;padding:22px 0;"><!--[if mso]>
|
||||
<table border="0" cellpadding="0" cellspacing="0"><tr><td style="width:600px;">
|
||||
<![endif]--><div style="vertical-align:top;display:inline-block;font-size:13px;text-align:left;width:100%;" class="mj-column-per-100" aria-labelledby="mj-column-per-100"><table width="100%"><tbody><tr><td style="font-size:0;padding:0px;" align="center"><table cellpadding="0" cellspacing="0" style="border-collapse:collapse;border-spacing:0px;" align="center"><tbody><tr><td><a href="http://www.talentstube.com/"><img alt="Talents Tube" src="https://recruteur.talentstube.com/img/mail/logo-talents-tube.png" style="border:none;display:block;outline:none;text-decoration:none;width:100%;max-width:150px;height:auto;" width="150" height="auto"></a></td></tr></tbody></table></td></tr></tbody></table></div><!--[if mso]>
|
||||
</td></tr></table>
|
||||
<![endif]--></td></tr></tbody></table></div><!--[if mso]>
|
||||
</td></tr></table>
|
||||
<![endif]-->
|
||||
<!--[if mso]>
|
||||
body {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
-webkit-text-size-adjust: 100%;
|
||||
-ms-text-size-adjust: 100%;
|
||||
}
|
||||
|
||||
<!--[if mso]>
|
||||
<table border="0" cellpadding="0" cellspacing="0" width="600" align="center" style="width:600px;"><tr><td>
|
||||
<![endif]--><div style="margin:0 auto;max-width:600px;background:#FFFFFF;"><table class="" cellpadding="0" cellspacing="0" style="width:100%;font-size:0px;background:#FFFFFF;" align="center"><tbody><tr><td style="text-align:center;vertical-align:top;font-size:0;padding:0px;"><!--[if mso]>
|
||||
<table border="0" cellpadding="0" cellspacing="0"><tr><td style="width:600px;">
|
||||
<![endif]--><div style="vertical-align:top;display:inline-block;font-size:13px;text-align:left;width:100%;" class="mj-column-per-100" aria-labelledby="mj-column-per-100"><table width="100%"><tbody><tr><td style="font-size:0;padding:20px 35px 20px 35px;" align="left"><div class="mj-content" style="cursor:auto;color:#534F4F;font-family:Raleway;font-size:14px;line-height:22px;">
|
||||
{% block content %}{% endblock %}<!--[if mso]>
|
||||
</td></tr></table>
|
||||
<![endif]--></td></tr></tbody></table></div><!--[if mso]>
|
||||
</td></tr></table>
|
||||
<![endif]-->
|
||||
<!--[if mso]>
|
||||
<table border="0" cellpadding="0" cellspacing="0" width="600" align="center" style="width:600px;"><tr><td>
|
||||
<![endif]--><div style="margin:0 auto;max-width:600px;background:#FFFFFF;"><table class="" cellpadding="0" cellspacing="0" style="width:100%;font-size:0px;background:#FFFFFF;" align="center"><tbody><tr><td style="text-align:center;vertical-align:top;font-size:0;padding:0px;"><!--[if mso]>
|
||||
<table border="0" cellpadding="0" cellspacing="0"><tr><td style="width:600px;">
|
||||
<![endif]--><div style="vertical-align:top;display:inline-block;font-size:13px;text-align:left;width:100%;" class="mj-column-per-100" aria-labelledby="mj-column-per-100"><table width="100%"><tbody><tr><td style="font-size:0;padding:0px 35px 0px 35px;" align="center"><div class="mj-content" style="cursor:auto;color:#534F4F;font-family:Raleway;font-size:14px;line-height:22px;"><p>Suivez-nous !</p>
|
||||
<p>
|
||||
<a style="margin:10px 20px 22px 20px;" href="https://www.facebook.com/TalentsTuber/"><img src="https://recruteur.talentstube.com/img/mail/facebook.png" alt="Facebook"></a>
|
||||
<a style="margin:10px 20px 22px 20px;" href="https://twitter.com/TalentsTuber"><img src="https://recruteur.talentstube.com/img/mail/twitter.png" alt="Twitter"></a>
|
||||
<a style="margin:10px 20px 22px 20px;" href="https://www.linkedin.com/company/talentstube"><img src="https://recruteur.talentstube.com/img/mail/linkedin.png" alt="LinkedIn"></a>
|
||||
</p></div></td></tr></tbody></table></div><!--[if mso]>
|
||||
</td></tr></table>
|
||||
<![endif]--></td></tr></tbody></table></div><!--[if mso]>
|
||||
</td></tr></table>
|
||||
<![endif]-->
|
||||
<!--[if mso]>
|
||||
<table border="0" cellpadding="0" cellspacing="0" width="600" align="center" style="width:600px;"><tr><td>
|
||||
<![endif]--><div style="margin:0 auto;max-width:600px;background:#F2F2F2;"><table class="" cellpadding="0" cellspacing="0" style="width:100%;font-size:0px;background:#F2F2F2;" align="center"><tbody><tr><td style="text-align:center;vertical-align:top;font-size:0;padding:0px;"><!--[if mso]>
|
||||
<table border="0" cellpadding="0" cellspacing="0"><tr><td style="width:600px;">
|
||||
<![endif]--><div style="vertical-align:top;display:inline-block;font-size:13px;text-align:left;width:100%;" class="mj-column-per-100" aria-labelledby="mj-column-per-100"><table width="100%"><tbody><tr><td style="font-size:0;padding:20px 35px 20px 35px;" align="center"><div class="mj-content" style="cursor:auto;color:#7E7878;font-family:Raleway;font-size:14px;line-height:22px;"><p style="font-weight:bold;">Talents Tube</p>
|
||||
<p>Village By CA - 3 rue Louis de Broglie - PIBS - 56000 VANNES</p>
|
||||
<p><a style="text-decoration:none;color:#7E7878;font-weight:bold;" href="mailto:contact@talentstube.com">contact@talentstube.com</a></p></div></td></tr></tbody></table></div><!--[if mso]>
|
||||
</td></tr></table>
|
||||
<![endif]--></td></tr></tbody></table></div><!--[if mso]>
|
||||
</td></tr></table>
|
||||
<![endif]--></div></body>
|
||||
</html>
|
||||
table,
|
||||
td {
|
||||
border-collapse: collapse;
|
||||
mso-table-lspace: 0pt;
|
||||
mso-table-rspace: 0pt;
|
||||
}
|
||||
|
||||
img {
|
||||
border: 0;
|
||||
height: auto;
|
||||
line-height: 100%;
|
||||
outline: none;
|
||||
text-decoration: none;
|
||||
-ms-interpolation-mode: bicubic;
|
||||
}
|
||||
|
||||
p {
|
||||
display: block;
|
||||
margin: 13px 0;
|
||||
}
|
||||
</style>
|
||||
<!--[if mso]>
|
||||
<xml>
|
||||
<o:OfficeDocumentSettings>
|
||||
<o:AllowPNG/>
|
||||
<o:PixelsPerInch>96</o:PixelsPerInch>
|
||||
</o:OfficeDocumentSettings>
|
||||
</xml>
|
||||
<![endif]-->
|
||||
<!--[if lte mso 11]>
|
||||
<style type="text/css">
|
||||
.mj-outlook-group-fix { width:100% !important; }
|
||||
</style>
|
||||
<![endif]-->
|
||||
|
||||
<!--[if !mso]><!-->
|
||||
<link href="https://fonts.googleapis.com/css?family=Roboto:300,400,500,700" rel="stylesheet" type="text/css">
|
||||
<style type="text/css">
|
||||
@import url(https://fonts.googleapis.com/css?family=Roboto:300,400,500,700);
|
||||
</style>
|
||||
<!--<![endif]-->
|
||||
|
||||
|
||||
|
||||
<style type="text/css">
|
||||
@media only screen and (min-width:480px) {
|
||||
.mj-column-per-100 {
|
||||
width: 100% !important;
|
||||
max-width: 100%;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
<style type="text/css">
|
||||
[owa] .mj-column-per-100 {
|
||||
width: 100% !important;
|
||||
max-width: 100%;
|
||||
}
|
||||
</style>
|
||||
|
||||
<style type="text/css">
|
||||
@media only screen and (max-width:480px) {
|
||||
table.mj-full-width-mobile {
|
||||
width: 100% !important;
|
||||
}
|
||||
|
||||
td.mj-full-width-mobile {
|
||||
width: auto !important;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
||||
|
||||
</head>
|
||||
|
||||
<body style="background-color:#f3f3f4;">
|
||||
|
||||
|
||||
<div style="background-color:#f3f3f4;">
|
||||
|
||||
|
||||
<!--[if mso | IE]>
|
||||
<table
|
||||
align="center" border="0" cellpadding="0" cellspacing="0" class="" style="width:600px;" width="600"
|
||||
>
|
||||
<tr>
|
||||
<td style="line-height:0px;font-size:0px;mso-line-height-rule:exactly;">
|
||||
<![endif]-->
|
||||
|
||||
|
||||
<div style="margin:0px auto;max-width:600px;">
|
||||
|
||||
<table align="center" border="0" cellpadding="0" cellspacing="0" role="presentation"
|
||||
style="width:100%;">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td
|
||||
style="border:0px solid #ffffff;direction:ltr;font-size:0px;padding:15px 0px 15px 0px;padding-bottom:15px;padding-left:0px;padding-right:0px;padding-top:15px;text-align:center;">
|
||||
<!--[if mso | IE]>
|
||||
<table role="presentation" border="0" cellpadding="0" cellspacing="0">
|
||||
|
||||
<tr>
|
||||
|
||||
<td
|
||||
class="" style="vertical-align:top;width:600px;"
|
||||
>
|
||||
<![endif]-->
|
||||
|
||||
<div class="mj-column-per-100 mj-outlook-group-fix"
|
||||
style="font-size:0px;text-align:left;direction:ltr;display:inline-block;vertical-align:top;width:100%;">
|
||||
|
||||
<table border="0" cellpadding="0" cellspacing="0" role="presentation"
|
||||
style="vertical-align:top;" width="100%">
|
||||
|
||||
<tr>
|
||||
<td align="center"
|
||||
style="font-size:0px;padding:10px 25px 10px 25px;padding-right:25px;padding-left:25px;word-break:break-word;">
|
||||
|
||||
<table border="0" cellpadding="0" cellspacing="0" role="presentation"
|
||||
style="border-collapse:collapse;border-spacing:0px;">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td style="width:150px;">
|
||||
|
||||
<a href="https://www.talentstube.com/" target="_blank">
|
||||
|
||||
<img alt="Talents Tube, plateforme pour l'emploi en vidéo."
|
||||
height="auto"
|
||||
src="https://izq1.mjt.lu/tplimg/izq1/b/0644g/gvziq.png"
|
||||
style="border:none;display:block;outline:none;text-decoration:none;height:auto;width:100%;font-size:13px;"
|
||||
title="" width="150" />
|
||||
|
||||
</a>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
</table>
|
||||
|
||||
</div>
|
||||
|
||||
<!--[if mso | IE]>
|
||||
</td>
|
||||
|
||||
</tr>
|
||||
|
||||
</table>
|
||||
<![endif]-->
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<!--[if mso | IE]>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<table
|
||||
align="center" border="0" cellpadding="0" cellspacing="0" class="" style="width:600px;" width="600"
|
||||
>
|
||||
<tr>
|
||||
<td style="line-height:0px;font-size:0px;mso-line-height-rule:exactly;">
|
||||
<![endif]-->
|
||||
|
||||
|
||||
<div style="background:#ffffff;background-color:#ffffff;margin:0px auto;max-width:600px;">
|
||||
|
||||
<table align="center" border="0" cellpadding="0" cellspacing="0" role="presentation"
|
||||
style="background:#ffffff;background-color:#ffffff;width:100%;">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td
|
||||
style="border:0px solid #ffffff;direction:ltr;font-size:0px;padding:20px 0px 20px 0px;padding-left:0px;padding-right:0px;text-align:center;">
|
||||
<!--[if mso | IE]>
|
||||
<table role="presentation" border="0" cellpadding="0" cellspacing="0">
|
||||
|
||||
<tr>
|
||||
|
||||
<td
|
||||
class="" style="vertical-align:top;width:600px;"
|
||||
>
|
||||
<![endif]-->
|
||||
|
||||
<div class="mj-column-per-100 mj-outlook-group-fix"
|
||||
style="font-size:0px;text-align:left;direction:ltr;display:inline-block;vertical-align:top;width:100%;">
|
||||
|
||||
{% block content %}{% endblock %}
|
||||
|
||||
</div>
|
||||
|
||||
<!--[if mso | IE]>
|
||||
</td>
|
||||
|
||||
</tr>
|
||||
|
||||
</table>
|
||||
<![endif]-->
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<!--[if mso | IE]>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<table
|
||||
align="center" border="0" cellpadding="0" cellspacing="0" class="" style="width:600px;" width="600"
|
||||
>
|
||||
<tr>
|
||||
<td style="line-height:0px;font-size:0px;mso-line-height-rule:exactly;">
|
||||
<![endif]-->
|
||||
|
||||
|
||||
<div style="margin:0px auto;max-width:600px;">
|
||||
|
||||
<table align="center" border="0" cellpadding="0" cellspacing="0" role="presentation"
|
||||
style="width:100%;">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td
|
||||
style="border:0px solid #ffffff;direction:ltr;font-size:0px;padding:20px 0px 0px 0px;padding-bottom:0px;padding-left:0px;padding-right:0px;text-align:center;">
|
||||
<!--[if mso | IE]>
|
||||
<table role="presentation" border="0" cellpadding="0" cellspacing="0">
|
||||
|
||||
<tr>
|
||||
|
||||
<td
|
||||
class="" style="vertical-align:top;width:600px;"
|
||||
>
|
||||
<![endif]-->
|
||||
|
||||
<div class="mj-column-per-100 mj-outlook-group-fix"
|
||||
style="font-size:0px;text-align:left;direction:ltr;display:inline-block;vertical-align:top;width:100%;">
|
||||
|
||||
<table border="0" cellpadding="0" cellspacing="0" role="presentation"
|
||||
style="vertical-align:top;" width="100%">
|
||||
|
||||
<tr>
|
||||
<td align="left"
|
||||
style="font-size:0px;padding:0px 0px 0px 0px;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;word-break:break-word;">
|
||||
|
||||
<div
|
||||
style="font-family:Arial, sans-serif;font-size:13px;letter-spacing:normal;line-height:1;text-align:left;color:#000000;">
|
||||
<p
|
||||
style="text-align: center; margin: 10px 0; margin-top: 10px; margin-bottom: 10px;">
|
||||
<span
|
||||
style="text-align:center;font-size:13px;letter-spacing:normal;text-align:left;color:#1E2327;font-family:Arial;">REJOIGNEZ
|
||||
LA COMMUNAUTÉ</span></p>
|
||||
</div>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td align="center"
|
||||
style="background:transparent;font-size:0px;padding:0px 0px 25px 0px;padding-top:0px;padding-right:0px;padding-bottom:25px;padding-left:0px;word-break:break-word;">
|
||||
|
||||
|
||||
<!--[if mso | IE]>
|
||||
<table
|
||||
align="center" border="0" cellpadding="0" cellspacing="0" role="presentation"
|
||||
>
|
||||
<tr>
|
||||
|
||||
<td>
|
||||
<![endif]-->
|
||||
<table align="center" border="0" cellpadding="0" cellspacing="0"
|
||||
role="presentation" style="float:none;display:inline-table;">
|
||||
|
||||
<tr>
|
||||
<td style="padding:4px;">
|
||||
<table border="0" cellpadding="0" cellspacing="0"
|
||||
role="presentation"
|
||||
style="background:#1689fb;border-radius:50%;width:21;">
|
||||
<tr>
|
||||
<td
|
||||
style="padding:5px 5px 5px 5px;font-size:0;height:21;vertical-align:middle;width:21;">
|
||||
<a href="https://www.youtube.com/channel/UCRNqiJCLAorO0aCzNQu-8ww"
|
||||
target="_blank">
|
||||
<img height="21"
|
||||
src="https://www.mailjet.com/images/theme/v1/icons/ico-social/youtube.png"
|
||||
style="border-radius:50%;display:block;"
|
||||
width="21" />
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
|
||||
</tr>
|
||||
|
||||
</table>
|
||||
<!--[if mso | IE]>
|
||||
</td>
|
||||
|
||||
<td>
|
||||
<![endif]-->
|
||||
<table align="center" border="0" cellpadding="0" cellspacing="0"
|
||||
role="presentation" style="float:none;display:inline-table;">
|
||||
|
||||
<tr>
|
||||
<td style="padding:4px;">
|
||||
<table border="0" cellpadding="0" cellspacing="0"
|
||||
role="presentation"
|
||||
style="background:#1689fb;border-radius:50%;width:21;">
|
||||
<tr>
|
||||
<td
|
||||
style="padding:5px 5px 5px 5px;font-size:0;height:21;vertical-align:middle;width:21;">
|
||||
<a href="https://www.linkedin.com/company/talentstube"
|
||||
target="_blank">
|
||||
<img height="21"
|
||||
src="https://www.mailjet.com/images/theme/v1/icons/ico-social/linkedin.png"
|
||||
style="border-radius:50%;display:block;"
|
||||
width="21" />
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
|
||||
</tr>
|
||||
|
||||
</table>
|
||||
<!--[if mso | IE]>
|
||||
</td>
|
||||
|
||||
<td>
|
||||
<![endif]-->
|
||||
<table align="center" border="0" cellpadding="0" cellspacing="0"
|
||||
role="presentation" style="float:none;display:inline-table;">
|
||||
|
||||
<tr>
|
||||
<td style="padding:4px;">
|
||||
<table border="0" cellpadding="0" cellspacing="0"
|
||||
role="presentation"
|
||||
style="background:#1689fb;border-radius:50%;width:21;">
|
||||
<tr>
|
||||
<td
|
||||
style="padding:5px 5px 5px 5px;font-size:0;height:21;vertical-align:middle;width:21;">
|
||||
<a href="https://www.facebook.com/TalentsTuber/"
|
||||
target="_blank">
|
||||
<img height="21"
|
||||
src="https://www.mailjet.com/images/theme/v1/icons/ico-social/facebook.png"
|
||||
style="border-radius:50%;display:block;"
|
||||
width="21" />
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
|
||||
</tr>
|
||||
|
||||
</table>
|
||||
<!--[if mso | IE]>
|
||||
</td>
|
||||
|
||||
<td>
|
||||
<![endif]-->
|
||||
<table align="center" border="0" cellpadding="0" cellspacing="0"
|
||||
role="presentation" style="float:none;display:inline-table;">
|
||||
|
||||
<tr>
|
||||
<td style="padding:4px;">
|
||||
<table border="0" cellpadding="0" cellspacing="0"
|
||||
role="presentation"
|
||||
style="background:#1689fb;border-radius:50%;width:21;">
|
||||
<tr>
|
||||
<td
|
||||
style="padding:5px 5px 5px 5px;font-size:0;height:21;vertical-align:middle;width:21;">
|
||||
<a href="https://www.instagram.com/talents.tube/"
|
||||
target="_blank">
|
||||
<img height="21"
|
||||
src="https://www.mailjet.com/images/theme/v1/icons/ico-social/instagram.png"
|
||||
style="border-radius:50%;display:block;"
|
||||
width="21" />
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
|
||||
</tr>
|
||||
|
||||
</table>
|
||||
<!--[if mso | IE]>
|
||||
</td>
|
||||
|
||||
<td>
|
||||
<![endif]-->
|
||||
<table align="center" border="0" cellpadding="0" cellspacing="0"
|
||||
role="presentation" style="float:none;display:inline-table;">
|
||||
|
||||
<tr>
|
||||
<td style="padding:4px;">
|
||||
<table border="0" cellpadding="0" cellspacing="0"
|
||||
role="presentation"
|
||||
style="background:#1689fb;border-radius:50%;width:21;">
|
||||
<tr>
|
||||
<td
|
||||
style="padding:5px 5px 5px 5px;font-size:0;height:21;vertical-align:middle;width:21;">
|
||||
<a href="https://twitter.com/TalentsTuber"
|
||||
target="_blank">
|
||||
<img height="21"
|
||||
src="https://www.mailjet.com/images/theme/v1/icons/ico-social/twitter.png"
|
||||
style="border-radius:50%;display:block;"
|
||||
width="21" />
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
|
||||
</tr>
|
||||
|
||||
</table>
|
||||
<!--[if mso | IE]>
|
||||
</td>
|
||||
|
||||
</tr>
|
||||
</table>
|
||||
<![endif]-->
|
||||
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td align="left"
|
||||
style="font-size:0px;padding:0px 25px 0px 25px;padding-top:0px;padding-right:25px;padding-bottom:0px;padding-left:25px;word-break:break-word;">
|
||||
|
||||
<div
|
||||
style="font-family:Arial, sans-serif;font-size:13px;letter-spacing:normal;line-height:1;text-align:left;color:#000000;">
|
||||
<p class="text-build-content"
|
||||
style="text-align: center; margin: 10px 0; margin-top: 10px;"
|
||||
data-testid="51OayorMO"><a class="link-build-content"
|
||||
style="color:inherit;; text-decoration: none;"
|
||||
target="_blank"
|
||||
href="https://www.talentstube.com/Confidentialite"><span
|
||||
style="color:#4B4F52;font-family:Arial;font-size:13px;line-height:20px;"><u>Confidentialité</u></span></a><span
|
||||
style="color:#4B4F52;font-family:Roboto;font-size:13px;line-height:20px;">
|
||||
| </span><a class="link-build-content"
|
||||
style="color:inherit;; text-decoration: none;"
|
||||
target="_blank" href="https://www.talentstube.com/Cgu"><span
|
||||
style="color:#4B4F52;font-family:Arial;font-size:13px;line-height:20px;"><u>CGU</u></span></a>
|
||||
</p>
|
||||
<p class="text-build-content"
|
||||
style="text-align: center; margin: 10px 0; margin-bottom: 10px;"
|
||||
data-testid="51OayorMO"><span
|
||||
style="color:#4B4F52;font-family:Roboto;font-size:13px;line-height:20px;">Talents
|
||||
Tube, 3 rue Louis de Broglie, 56000 Vannes, France</span>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
</table>
|
||||
|
||||
</div>
|
||||
|
||||
<!--[if mso | IE]>
|
||||
</td>
|
||||
|
||||
</tr>
|
||||
|
||||
</table>
|
||||
<![endif]-->
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<!--[if mso | IE]>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<![endif]-->
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -2,16 +2,136 @@
|
||||
|
||||
{% block body_text %}
|
||||
{% autoescape false %}
|
||||
Bonjour {{ user.firstname }} {{ user.lastname }},
|
||||
<table border="0" cellpadding="0" cellspacing="0" role="presentation" style="vertical-align:top;" width="100%">
|
||||
|
||||
|
||||
Nous avons reçu une demande de changement de mot de passe pour votre compte Talents Tube.
|
||||
Si vous n'avez pas fait cette demande, veuillez ignorer cet e-mail.
|
||||
Dans le cas contraire, veuillez cliquer sur le lien ci-dessous pour changer votre mot de passe :
|
||||
<tr>
|
||||
<td align="left"
|
||||
style="font-size:0px;padding:0px 25px 0px 25px;padding-top:0px;padding-bottom:0px;word-break:break-word;">
|
||||
|
||||
{{ confirmationUrl }}
|
||||
<div
|
||||
style="font-family:Arial, sans-serif;font-size:22px;letter-spacing:normal;line-height:1;text-align:left;color:#000000;">
|
||||
<h1 class="text-build-content" data-testid="1ZA4EV9FdGR"
|
||||
style="margin-top: 10px; margin-bottom: 10px; font-weight: normal;">
|
||||
<span style="color:#000000;font-family:Roboto;font-size:22px;"><b>Bonjour
|
||||
{{ user.firstname }} {{ user.lastname }},</b></span></h1>
|
||||
</div>
|
||||
|
||||
L'équipe de talentstube.com
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td align="left"
|
||||
style="font-size:0px;padding:0px 25px 0px 25px;padding-top:0px;padding-bottom:0px;word-break:break-word;">
|
||||
|
||||
<div
|
||||
style="font-family:Arial, sans-serif;font-size:14px;letter-spacing:normal;line-height:1;text-align:left;color:#000000;">
|
||||
<p class="text-build-content" style="line-height: 24px; margin: 10px 0; margin-top: 10px;"
|
||||
data-testid="S-P6IScCbo-"><span style="color:#000000;font-family:Roboto;font-size:16px;">Vous
|
||||
avez demandé un nouveau mot de passe pour votre compte
|
||||
Talents Tube.</span></p>
|
||||
<p class="text-build-content" style="line-height: 24px; margin: 10px 0; margin-bottom: 10px;"
|
||||
data-testid="S-P6IScCbo-"><span style="color:#000000;font-family:Roboto;font-size:16px;">Cliquez
|
||||
sur le bouton ci-dessous pour changer votre mot de passe
|
||||
:</span></p>
|
||||
</div>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td style="font-size:0px;padding:0px;padding-top:0px;padding-bottom:0px;word-break:break-word;">
|
||||
|
||||
<div
|
||||
style="font-family:Arial, sans-serif;font-size:13px;letter-spacing:normal;line-height:1;color:#000000;">
|
||||
<div>
|
||||
<!--[if mso | IE]><table align="center" border="0" cellpadding="0" cellspacing="0" class="" style="width:600px;" width="600" ><tr><td style="line-height:0px;font-size:0px;mso-line-height-rule:exactly;"><![endif]-->
|
||||
<div style="margin:0px auto;max-width:600px;">
|
||||
<table align="center" border="0" cellpadding="0" cellspacing="0" role="presentation"
|
||||
style="width:100%;">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td style="direction:ltr;font-size:0px;padding:10px 0;text-align:center;">
|
||||
<!--[if mso | IE]><table role="presentation" border="0" cellpadding="0" cellspacing="0"><tr><td class="" style="vertical-align:top;width:600px;" ><![endif]-->
|
||||
<div class="mj-column-per-100 mj-outlook-group-fix"
|
||||
style="font-size:0px;text-align:left;direction:ltr;display:inline-block;vertical-align:top;width:100%;">
|
||||
<table border="0" cellpadding="0" cellspacing="0" role="presentation"
|
||||
style="vertical-align:top;" width="100%">
|
||||
<tr>
|
||||
<td align="center" vertical-align="middle"
|
||||
style="font-size:0px;padding:10px 25px;word-break:break-word;">
|
||||
<table border="0" cellpadding="0" cellspacing="0"
|
||||
role="presentation"
|
||||
style="border-collapse:separate;line-height:100%;">
|
||||
<tr>
|
||||
<td align="center" bgcolor="#1689FB" role="presentation"
|
||||
style="border:none;border-radius:3px;cursor:auto;mso-padding-alt:10px 25px;background:#1689FB;"
|
||||
valign="middle">
|
||||
<a href="{{ confirmationUrl }}"
|
||||
style="display:inline-block;background:#1689FB;color:white;font-family:Roboto;font-size:15px;font-weight:normal;line-height:120%;margin:0;text-decoration:none;text-transform:none;padding:14px 20px;mso-padding-alt:0px;border-radius:5px;; text-decoration: none;">Modifier
|
||||
mon mot de
|
||||
passe</a>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<!--[if mso | IE]></td></tr></table><![endif]-->
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!--[if mso | IE]></td></tr></table><![endif]-->
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td align="left"
|
||||
style="background:#f3f9ff;font-size:0px;padding:0px 25px 0px 25px;padding-top:0px;padding-right:25px;padding-bottom:0px;padding-left:25px;word-break:break-word;">
|
||||
|
||||
<div
|
||||
style="font-family:Arial, sans-serif;font-size:14px;letter-spacing:normal;line-height:1;text-align:left;color:#000000;">
|
||||
<p class="text-build-content" style="line-height: 22px; margin: 10px 0; margin-top: 10px;"
|
||||
data-testid="-KQrJGjLi"><span style="color:#000000;font-family:Roboto;font-size:14px;">Vous
|
||||
pouvez également copier-coller cette URL dans votre
|
||||
navigateur Internet.</span></p>
|
||||
<p class="text-build-content" style="line-height: 22px; margin: 10px 0; margin-bottom: 10px;"
|
||||
data-testid="-KQrJGjLi"><span
|
||||
style="color:#000000;font-family:Roboto;font-size:14px;">{{ confirmationUrl }}</span>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td align="left"
|
||||
style="font-size:0px;padding:15px 25px 0px 25px;padding-top:15px;padding-right:25px;padding-bottom:0px;padding-left:25px;word-break:break-word;">
|
||||
|
||||
<div
|
||||
style="font-family:Arial, sans-serif;font-size:13px;letter-spacing:normal;line-height:1;text-align:left;color:#000000;">
|
||||
<p class="text-build-content" data-testid="CMoJCeaZu" style="margin: 10px 0; margin-top: 10px;"><span
|
||||
style="color:#000000;font-family:Roboto;font-size:16px;line-height:24px;">Si
|
||||
vous n'avez pas demandé à changer de mot de passe, veuillez
|
||||
ignorer ce message.</span></p>
|
||||
<p class="text-build-content" data-testid="CMoJCeaZu" style="margin: 10px 0;"> </p>
|
||||
<p class="text-build-content" data-testid="CMoJCeaZu" style="margin: 10px 0;"><span
|
||||
style="color:#000000;font-family:Roboto;font-size:16px;line-height:24px;">A
|
||||
très bientôt,</span></p>
|
||||
<p class="text-build-content" data-testid="CMoJCeaZu" style="margin: 10px 0; margin-bottom: 10px;"><span
|
||||
style="color:#000000;font-family:Roboto;font-size:16px;line-height:24px;">L'équipe
|
||||
Talents Tube</span></p>
|
||||
</div>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
</table>
|
||||
{% endautoescape %}
|
||||
{% endblock %}
|
||||
|
||||
|
||||
@@ -2,17 +2,135 @@
|
||||
|
||||
|
||||
{% block content %}
|
||||
<p>Bonjour {{ user.firstname }} {{ user.lastname }},</p>
|
||||
<table border="0" cellpadding="0" cellspacing="0" role="presentation" style="vertical-align:top;" width="100%">
|
||||
|
||||
<p>
|
||||
Nous avons reçu une demande de changement de mot de passe pour votre compte Talents Tube.<br />
|
||||
Si vous n'avez pas fait cette demande, veuillez ignorer cet e-mail.<br />
|
||||
Dans le cas contraire, veuillez cliquer sur le lien ci-dessous pour changer votre mot de passe :<br /><br />
|
||||
<a href="{{ confirmationUrl }}">Réinitialiser mon mot de passe</a>
|
||||
<br /><br />
|
||||
Vous pouvez également copier-coller cette URL dans votre navigateur Internet :
|
||||
{{ confirmationUrl }}
|
||||
</p>
|
||||
<tr>
|
||||
<td align="left"
|
||||
style="font-size:0px;padding:0px 25px 0px 25px;padding-top:0px;padding-bottom:0px;word-break:break-word;">
|
||||
|
||||
<div
|
||||
style="font-family:Arial, sans-serif;font-size:22px;letter-spacing:normal;line-height:1;text-align:left;color:#000000;">
|
||||
<h1 class="text-build-content" data-testid="1ZA4EV9FdGR"
|
||||
style="margin-top: 10px; margin-bottom: 10px; font-weight: normal;">
|
||||
<span style="color:#000000;font-family:Roboto;font-size:22px;"><b>Bonjour
|
||||
{{ user.firstname }} {{ user.lastname }},</b></span></h1>
|
||||
</div>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td align="left"
|
||||
style="font-size:0px;padding:0px 25px 0px 25px;padding-top:0px;padding-bottom:0px;word-break:break-word;">
|
||||
|
||||
<div
|
||||
style="font-family:Arial, sans-serif;font-size:14px;letter-spacing:normal;line-height:1;text-align:left;color:#000000;">
|
||||
<p class="text-build-content" style="line-height: 24px; margin: 10px 0; margin-top: 10px;"
|
||||
data-testid="S-P6IScCbo-"><span style="color:#000000;font-family:Roboto;font-size:16px;">Vous
|
||||
avez demandé un nouveau mot de passe pour votre compte
|
||||
Talents Tube.</span></p>
|
||||
<p class="text-build-content" style="line-height: 24px; margin: 10px 0; margin-bottom: 10px;"
|
||||
data-testid="S-P6IScCbo-"><span style="color:#000000;font-family:Roboto;font-size:16px;">Cliquez
|
||||
sur le bouton ci-dessous pour changer votre mot de passe
|
||||
:</span></p>
|
||||
</div>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td style="font-size:0px;padding:0px;padding-top:0px;padding-bottom:0px;word-break:break-word;">
|
||||
|
||||
<div
|
||||
style="font-family:Arial, sans-serif;font-size:13px;letter-spacing:normal;line-height:1;color:#000000;">
|
||||
<div>
|
||||
<!--[if mso | IE]><table align="center" border="0" cellpadding="0" cellspacing="0" class="" style="width:600px;" width="600" ><tr><td style="line-height:0px;font-size:0px;mso-line-height-rule:exactly;"><![endif]-->
|
||||
<div style="margin:0px auto;max-width:600px;">
|
||||
<table align="center" border="0" cellpadding="0" cellspacing="0" role="presentation"
|
||||
style="width:100%;">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td style="direction:ltr;font-size:0px;padding:10px 0;text-align:center;">
|
||||
<!--[if mso | IE]><table role="presentation" border="0" cellpadding="0" cellspacing="0"><tr><td class="" style="vertical-align:top;width:600px;" ><![endif]-->
|
||||
<div class="mj-column-per-100 mj-outlook-group-fix"
|
||||
style="font-size:0px;text-align:left;direction:ltr;display:inline-block;vertical-align:top;width:100%;">
|
||||
<table border="0" cellpadding="0" cellspacing="0" role="presentation"
|
||||
style="vertical-align:top;" width="100%">
|
||||
<tr>
|
||||
<td align="center" vertical-align="middle"
|
||||
style="font-size:0px;padding:10px 25px;word-break:break-word;">
|
||||
<table border="0" cellpadding="0" cellspacing="0"
|
||||
role="presentation"
|
||||
style="border-collapse:separate;line-height:100%;">
|
||||
<tr>
|
||||
<td align="center" bgcolor="#1689FB" role="presentation"
|
||||
style="border:none;border-radius:3px;cursor:auto;mso-padding-alt:10px 25px;background:#1689FB;"
|
||||
valign="middle">
|
||||
<a href="{{ confirmationUrl }}"
|
||||
style="display:inline-block;background:#1689FB;color:white;font-family:Roboto;font-size:15px;font-weight:normal;line-height:120%;margin:0;text-decoration:none;text-transform:none;padding:14px 20px;mso-padding-alt:0px;border-radius:5px;; text-decoration: none;">Modifier
|
||||
mon mot de
|
||||
passe</a>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<!--[if mso | IE]></td></tr></table><![endif]-->
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!--[if mso | IE]></td></tr></table><![endif]-->
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td align="left"
|
||||
style="background:#f3f9ff;font-size:0px;padding:0px 25px 0px 25px;padding-top:0px;padding-right:25px;padding-bottom:0px;padding-left:25px;word-break:break-word;">
|
||||
|
||||
<div
|
||||
style="font-family:Arial, sans-serif;font-size:14px;letter-spacing:normal;line-height:1;text-align:left;color:#000000;">
|
||||
<p class="text-build-content" style="line-height: 22px; margin: 10px 0; margin-top: 10px;"
|
||||
data-testid="-KQrJGjLi"><span style="color:#000000;font-family:Roboto;font-size:14px;">Vous
|
||||
pouvez également copier-coller cette URL dans votre
|
||||
navigateur Internet.</span></p>
|
||||
<p class="text-build-content" style="line-height: 22px; margin: 10px 0; margin-bottom: 10px;"
|
||||
data-testid="-KQrJGjLi"><span
|
||||
style="color:#000000;font-family:Roboto;font-size:14px;">{{ confirmationUrl }}</span>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td align="left"
|
||||
style="font-size:0px;padding:15px 25px 0px 25px;padding-top:15px;padding-right:25px;padding-bottom:0px;padding-left:25px;word-break:break-word;">
|
||||
|
||||
<div
|
||||
style="font-family:Arial, sans-serif;font-size:13px;letter-spacing:normal;line-height:1;text-align:left;color:#000000;">
|
||||
<p class="text-build-content" data-testid="CMoJCeaZu" style="margin: 10px 0; margin-top: 10px;"><span
|
||||
style="color:#000000;font-family:Roboto;font-size:16px;line-height:24px;">Si
|
||||
vous n'avez pas demandé à changer de mot de passe, veuillez
|
||||
ignorer ce message.</span></p>
|
||||
<p class="text-build-content" data-testid="CMoJCeaZu" style="margin: 10px 0;"> </p>
|
||||
<p class="text-build-content" data-testid="CMoJCeaZu" style="margin: 10px 0;"><span
|
||||
style="color:#000000;font-family:Roboto;font-size:16px;line-height:24px;">A
|
||||
très bientôt,</span></p>
|
||||
<p class="text-build-content" data-testid="CMoJCeaZu" style="margin: 10px 0; margin-bottom: 10px;"><span
|
||||
style="color:#000000;font-family:Roboto;font-size:16px;line-height:24px;">L'équipe
|
||||
Talents Tube</span></p>
|
||||
</div>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
</table>
|
||||
|
||||
<p>L'équipe de talentstube.com</p>
|
||||
{% endblock %}
|
||||
@@ -0,0 +1,434 @@
|
||||
<!DOCTYPE html>
|
||||
|
||||
<html lang="fr">
|
||||
|
||||
<head>
|
||||
<!-- Global site tag (gtag.js) - Google Analytics -->
|
||||
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-98246968-7"></script>
|
||||
<script>
|
||||
window.dataLayer = window.dataLayer || [];
|
||||
function gtag(){dataLayer.push(arguments);}
|
||||
gtag('js', new Date());
|
||||
gtag('config', 'UA-98246968-7');
|
||||
</script>
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com">
|
||||
<link href="https://fonts.googleapis.com/css2?family=Roboto:wght@100;400;500;700;900&display=swap" rel="stylesheet">
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title>Réalisez une offre d’emploi originale vous-même</title>
|
||||
<meta name="description" content="Créez des vidéos d’offres d’emploi originales avec Talents Tube. Réalisez vos vidéos rapidement avec un smartphone et recrutez">
|
||||
<link rel="shortcut icon" href="/landing/img/talentstubeIco.svg" type="image/x-icon">
|
||||
<link rel="icon" href="/landing/img/favicon.ico" type="image/x-icon">
|
||||
<link href="/landing/css/bootstrap.min.css" rel="stylesheet">
|
||||
<link href="/landing/css/owl.carousel.css" rel="stylesheet">
|
||||
<link href="/landing/css/main.css" rel="stylesheet">
|
||||
<link href="/landing/css/fontawesome.min.css" rel="stylesheet">
|
||||
<!-- Latest compiled and minified CSS -->
|
||||
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css">
|
||||
<!-- Optional theme -->
|
||||
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap-theme.min.css">
|
||||
<script src="/landing/js/modernizr.min.js"></script>
|
||||
<!--Ajout pour le référencement-->
|
||||
{# <link rel="canonical" href="" /> #}
|
||||
<meta property="og:locale" content="fr_FR" />
|
||||
<meta property="og:type" content="website" />
|
||||
<meta property="og:title" content="Réalisez une offre d’emploi originale vous-même" />
|
||||
<meta property="og:description" content="Créez des vidéos d’offres d’emploi originales avec Talents Tube. Réalisez vos vidéos rapidement avec un smartphone et recrutez" />
|
||||
<meta property="og:url" content="https://recruteur.talentstube.com/offre-emploi-originale" />
|
||||
<meta property="og:site_name" content="Talents Tube" />
|
||||
<meta property="og:image" content="https://recruteur.talentstube.com/landing/img/offre-emploi-originale-en-video.jpg" />
|
||||
<meta name="twitter:card" content="summary_large_image" />
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<!-- Modal : Vidéo -->
|
||||
<div class="modal fade bd-example-modal-lg" id="exampleModalCenter" tabindex="-1" role="dialog"
|
||||
aria-labelledby="myLargeModalLabel" aria-hidden="true">
|
||||
<div class="modal-dialog modal-lg" role="document">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
|
||||
<span aria-hidden="true">×</span>
|
||||
</button>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<div class="container-video" style="position:relative;width:100%;height:0;padding-bottom:56.25%;">
|
||||
<iframe src="https://www.youtube.com/embed/gOXg9e29dyc"
|
||||
style="position: absolute;top: 0;left: 0;width: 100%;height: 100%;" frameborder="0"
|
||||
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"
|
||||
allowfullscreen id="player"></iframe>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-secondary" data-dismiss="modal" onclick="fermerVideo()">Fermer</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!--Modal : Vidéo End -->
|
||||
|
||||
<!-- Modal : Formulaire -->
|
||||
<div class="modal fade" id="exampleModal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel"
|
||||
aria-hidden="true">
|
||||
<div class="modal-dialog" role="document">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<div class="container-fluid">
|
||||
<div class="row" id="demandeRdvContainer">
|
||||
<div class="col-sm-12">
|
||||
<h2>Demandez votre rendez-vous</h2>
|
||||
|
||||
<div class="row">
|
||||
|
||||
<div class="col-12 col-sm-12">
|
||||
<div class="form-group">
|
||||
<label for="exampleInputPrenom>">Prénom</label>
|
||||
<input type="text" class="form-control" id="prenom" placeholder="Votre prénom">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
|
||||
<div class="col-12 col-sm-12">
|
||||
<div class="form-group">
|
||||
<label for="exampleInputNom">Nom</label>
|
||||
<input type="text" class="form-control" id="nom" placeholder="Votre nom">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
|
||||
<div class="col-12 col-sm-12">
|
||||
<div class="form-group">
|
||||
<label for="exampleInputEmail1">E-mail</label>
|
||||
<input type="email" class="form-control" id="email" placeholder="Votre email">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
|
||||
<div class="col-12 col-sm-12">
|
||||
<div class="form-group">
|
||||
<label for="exampleInputPhone">Téléphone</label>
|
||||
<input type="phone" class="form-control" id="telephone" placeholder="Votre téléphone">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<p class="text-danger" id="erreur">Veuillez compléter l'ensemble des champs ci-dessus pour
|
||||
demander un rendez-vous</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row" id="felicitationRdvContainer" class="text-center">
|
||||
<div class="text-center">
|
||||
<img src="/landing/img/demande-rendez-vous.svg">
|
||||
<h2>Merci!</h2>
|
||||
<p>Votre demande a bien été envoyée. Un conseiller vous contactera <b>sous 48h</b>.
|
||||
En attendant, nous allons vous rediriger vers notre blog afin de vous faire découvrir tous nos
|
||||
conseils pour un recrutement réussi.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button class="bttn" onClick="demanderRdv();" id="boutonDemandeRdv">Demander un rendez-vous</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!--Modal : Formulaire End -->
|
||||
|
||||
<main>
|
||||
<data id="mj-w-res-data" data-token="3ff0355b417f4f6e84deb70f12fcbca8" class="mj-w-data" data-apikey="2jWA"
|
||||
data-w-id="HpL" data-lang="fr_FR" data-base="https://app.mailjet.com" data-width="640" data-height="588"
|
||||
data-statics="statics"></data>
|
||||
<!--Header : Menu et Vidéo en fond-->
|
||||
<header class="hero-section">
|
||||
<!--HTML5 Video-->
|
||||
<video autoplay loop muted id="bgvid" poster="">
|
||||
<source src="/landing/video/modele-offre-emploi-originale.mp4" type="video/mp4"
|
||||
alt="Modèle offre d'emploi originale">
|
||||
<!--Prévoir une image fixe pour la version mobile : main.css : 102-->
|
||||
</video>
|
||||
|
||||
<!--HTML5 Video end-->
|
||||
<div class="overlay"></div>
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<div class="logo-header" style="display:inline-block;">
|
||||
<img src="/landing/img/talentstube-logo-blanc.svg" data-at2x="/landing/img/talentstube-logo-blanc@2x.svg"
|
||||
alt="Talents Tube" class="logo-talentstube" style="width:150px">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!--nav-->
|
||||
<nav class="navbar-default">
|
||||
<!-- clas="navbar"-->
|
||||
<div class="container">
|
||||
<div class="logo-brand">
|
||||
<img src="https://blog.talentstube.com/wp-content/uploads/2021/02/TalentsTube-logo-blanc.svg"
|
||||
data-at2x="https://blog.talentstube.com/wp-content/uploads/2021/02/TalentsTube-logo-blanc.svg"
|
||||
alt="Talents Tube, plateforme de recrutement en vidéo" class="logo-head">
|
||||
</div>
|
||||
<!--<div class="navbar-header">
|
||||
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-navbar-collapse-1">
|
||||
<span class="sr-only">Toggle navigation</span>
|
||||
<span class="icon-bar"></span>
|
||||
<span class="icon-bar"></span>
|
||||
<span class="icon-bar"></span>
|
||||
</button>
|
||||
</div>-->
|
||||
<div class="collapse navbar-collapse" id="bs-navbar-collapse-1">
|
||||
<div class="row">
|
||||
<div class="logo-header" style="display:inline-block;">
|
||||
<img src="https://blog.talentstube.com/wp-content/uploads/2021/02/talents-tube-logo-color.svg'"
|
||||
data-at2x="https://blog.talentstube.com/wp-content/uploads/2021/02/talents-tube-logo-color.svg"
|
||||
alt="Talents Tube" class="logo-nav">
|
||||
</div>
|
||||
<ul class="nav navbar-nav navbar-right">
|
||||
<li>
|
||||
<div class="mj-w-button mj-w-btn bttn" data-toggle="modal" data-target="#exampleModal">Demander un
|
||||
rendez-vous</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
<!--nav end-->
|
||||
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<!--welcome-message-->
|
||||
<div class="welcome-message">
|
||||
<h1>Créez des vidéos d’offres d’emploi avec votre smartphone</h1>
|
||||
<p>Vous voulez recruter rapidement, efficacement, vous démarquer de la concurrence tout en restant
|
||||
vous-même ? Votre recrutement, c’est dans la poche avec Talents Tube !</p>
|
||||
</div>
|
||||
<!--welcome-message end-->
|
||||
<div class="action-btn video-header">
|
||||
<button class="bttn" data-toggle="modal" data-target="#exampleModal">Demander un rendez-vous</button>
|
||||
<button class="bttn" data-toggle="modal" data-target=".bd-example-modal-lg">Voir la démo</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
<!--Header end-->
|
||||
<!--about 1-->
|
||||
<section class="about section-spacing-little" style="margin-top:20px">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-md-5 bloc-gauche-1"> <img src="/landing/img/realiser-offre-emploi-originale.jpg"
|
||||
alt="Réaliser une offre d'emploi originale avec un smartphone" data-no-retina> </div>
|
||||
<div class="col-md-7 bloc-droit-1" style="padding: 2em 4em;">
|
||||
<h2>Votre offre d’emploi originale en vidéo</h2>
|
||||
<p>Parce que <span class="texte-gras">votre recrutement mérite mieux que du texte</span>, lancez-vous dans
|
||||
<span class="texte-gras">la vidéo de recrutement !</span></p>
|
||||
<p>Vous êtes en quête de rapidité et d’efficacité dans votre processus de recrutement? Vous ne voulez pas
|
||||
ressembler à vos concurrents?</p>
|
||||
<p>Démarquez-vous avec des <span class="texte-gras">annonces de recrutement originales et
|
||||
attractives.</span>En filmant vos collaborateurs, vos gestes métiers, vous offrez une <span
|
||||
class="texte-gras">meilleure expérience candidat</span>, vous engagez et valorisez vos collaborateurs et
|
||||
vous <span class="texte-gras">recrutez plus efficacement.</span></p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<!--about end-->
|
||||
|
||||
<!--about 2-->
|
||||
<section class="about section-spacing-little">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-md-7 bloc-droit-2" style="padding: 2em 4em;">
|
||||
<h2>Votre vidéo de recrutement originale avec un smartphone</h2>
|
||||
<p>Vous vous dites que c’est une super idée mais <span class="texte-gras">faire une vidéo c’est trop
|
||||
compliqué, trop cher et pas pour vous !</span></p>
|
||||
<p>Sachez qu’aujourd’hui, vous pouvez <span class="texte-gras">créer des vidéos facilement !</span></p>
|
||||
<p>Vous possédez <span class="texte-gras">un smartphone avec une caméra</span> ultra performante qui vous
|
||||
permet de créer du contenu vidéo tout le temps et partout, avec une qualité pro. Et tout ceci ne nécessite
|
||||
aucun investissement supplémentaire.</p>
|
||||
<p><span class="texte-gras">Le recrutement vidéo</span> est dans votre poche !</p>
|
||||
</div>
|
||||
<div class="col-md-5 bloc-gauche-2"> <img src="/landing/img/recruter-rapidement-offre-emploi-originale.jpg"
|
||||
alt="Recruter rapidement avec une offre d'emploi vidéo originale" data-no-retina> </div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<!--about end-->
|
||||
|
||||
<!--about 3-->
|
||||
<section class="about section-spacing-little">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-md-5 bloc-gauche-1"> <img src="/landing/img/etape-realisation-offre-emploi-originale.jpg"
|
||||
alt="3 étapes pour réaliser une offre d'emploi originale" data-no-retina> </div>
|
||||
<div class="col-md-7 bloc-droit-1" style="padding: 2em 4em;">
|
||||
<h2>Un recrutement vidéo rapide en quelques étapes</h2>
|
||||
<p>Avec Talents Tube, vous allez recruter de nouveaux profils en seulement 3 étapes :</p>
|
||||
<ul class="list-puces">
|
||||
<li>Rédigez votre scénario pour préparer le tournage de votre vidéo</li>
|
||||
<li>Réalisez votre offre d’emploi vidéo avec un smartphone</li>
|
||||
<li>Envoyez-nous vos séquences vidéos</li>
|
||||
<li>Pour vous, nous réalisons le montage de votre vidéo</li>
|
||||
<li>Et nous vous accompagnons dans votre recherche du candidat idéal</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<!--about end-->
|
||||
|
||||
<!--sponsor-->
|
||||
<section class="sponsor section-spacing text-center">
|
||||
<div class="container">
|
||||
<header>
|
||||
<h2>Ils ont recruté en vidéo</h2>
|
||||
<h3>Ces entreprises ont choisi Talents Tube pour recruter avec des offres d'emploi originales !</h3>
|
||||
</header>
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<figure><img
|
||||
src="https://recruteur.talentstube.com/media/cache/profile_thumb/uploads/img/94c787c21c93a6b905eca6b739eedbf2.png"
|
||||
data-at2x="https://recruteur.talentstube.com/media/cache/profile_thumb/uploads/img/94c787c21c93a6b905eca6b739eedbf2.png"
|
||||
alt="actual-offre-emploi-orignale"></figure>
|
||||
<figure><img
|
||||
src="https://recruteur.talentstube.com/media/cache/profile_thumb/uploads/img/4f3dba583fea12c01a9c708772b1e0ac.jpeg"
|
||||
data-at2x="https://recruteur.talentstube.com/media/cache/profile_thumb/uploads/img/4f3dba583fea12c01a9c708772b1e0ac.jpeg"
|
||||
alt="aer-recyclage-offre-emploi-orignale"></figure>
|
||||
<figure><img
|
||||
src="https://recruteur.talentstube.com/media/cache/profile_thumb/uploads/img/154d998227e24b1e44e6e520ab2e09a2.png"
|
||||
data-at2x="https://recruteur.talentstube.com/media/cache/profile_thumb/uploads/img/154d998227e24b1e44e6e520ab2e09a2.png"
|
||||
alt="cdg-offre-emploi-orignale"></figure>
|
||||
<figure><img
|
||||
src="https://recruteur.talentstube.com/media/cache/profile_thumb/uploads/img/c076323088783c6aa0093563dcdd1f16.jpeg"
|
||||
data-at2x="https://recruteur.talentstube.com/media/cache/profile_thumb/uploads/img/c076323088783c6aa0093563dcdd1f16.jpeg"
|
||||
alt="temporis-offre-emploi-orignale"></figure>
|
||||
</div>
|
||||
</div>
|
||||
<!--<div class="row">
|
||||
<div class="col-md-12">
|
||||
<figure><img src="https://recruteur.talentstube.com//media/cache/profile_thumb/uploads/img/c99c8a1e7cd4b9bf249053774d72e0c9.jpeg" data-at2x="https://recruteur.talentstube.com//media/cache/profile_thumb/uploads/img/c99c8a1e7cd4b9bf249053774d72e0c9.jpeg" alt="sponsor"></figure>
|
||||
<figure><img src="https://recruteur.talentstube.com//media/cache/profile_thumb/uploads/img/0dc350ae6a639b3671b7a262e51ad581.jpeg" data-at2x="https://recruteur.talentstube.com//media/cache/profile_thumb/uploads/img/0dc350ae6a639b3671b7a262e51ad581.jpeg" alt="sponsor"></figure>
|
||||
<figure><img src="https://recruteur.talentstube.com//media/cache/profile_thumb/uploads/img/0a4c111bc35a4b2ab654ab8fce9f1d53.png" data-at2x="https://recruteur.talentstube.com//media/cache/profile_thumb/uploads/img/0a4c111bc35a4b2ab654ab8fce9f1d53.png" alt="sponsor"></figure>
|
||||
<figure><img src="https://recruteur.talentstube.com//media/cache/profile_thumb/uploads/img/4f3dba583fea12c01a9c708772b1e0ac.jpeg" data-at2x="https://recruteur.talentstube.com//media/cache/profile_thumb/uploads/img/4f3dba583fea12c01a9c708772b1e0ac.jpeg" alt="sponsor"></figure>
|
||||
</div>
|
||||
</div>-->
|
||||
</div>
|
||||
</section>
|
||||
<!--sponsor end-->
|
||||
<!--venue-->
|
||||
<section class="venue section-spacing" id="venue">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="container text-center">
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<!--goodbye-message-->
|
||||
<div class="appel-action">
|
||||
<h2>Créez votre première offre d’emploi originale avec un smartphone</h2>
|
||||
<p>Il ne vous reste plus qu'un clic pour recruter rapidement, efficacement et vous démarquer de la
|
||||
concurrence...</p>
|
||||
<p>Lancez-vous et demandez un rendez-vous dès maintenant !</p>
|
||||
<button class="bttn" data-toggle="modal" data-target="#exampleModal" style="margin-top:30px;">Demander
|
||||
un rendez-vous</button>
|
||||
</div>
|
||||
<!--goodbye-message end-->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</main>
|
||||
<script type="text/javascript" src="https://app.mailjet.com/statics/js/widget.modal.js"></script>
|
||||
<script src="/landing/js/jquery-2.1.3.min.js"></script>
|
||||
<script src="/landing/js/bootstrap.min.js"></script>
|
||||
<script src="/landing/js/waypoints.min.js"></script>
|
||||
<!--Ordre important-->
|
||||
<script src="/landing/js/waypoints-sticky.min.js"></script> <!-- Nécessaire header sticky -->
|
||||
<script src="/landing/js/retina.min.js"></script> <!-- Nécessaire logo header (à voir pour l'enlever) -->
|
||||
<script src="/landing/js/owl.carousel.min.js"></script> <!-- Nécessaire avec les avantages (+de 3 avantages) -->
|
||||
<script src="/landing/js/jquery.ajaxchimp.min.js"></script> <!-- Nécessaire FAQ-->
|
||||
<script src="/landing/js/jquery.validate.min.js"></script>
|
||||
<script src="/landing/js/main.js"></script>
|
||||
<!--<script src="js/jquery.animateNumber.min.js"></script>-->
|
||||
<!--<script src="js/jquery.form.min.js"></script>-->
|
||||
<script>
|
||||
$("#erreur").hide();
|
||||
$("#felicitationRdvContainer").hide();
|
||||
|
||||
|
||||
function demanderRdv() {
|
||||
if ($("#nom").val() == "" || $("#prenom").val() == "" || $("#email").val() == "" || $("#telephone").val() == "") {
|
||||
$("#erreur").show();
|
||||
} else {
|
||||
$("#erreur").hide();
|
||||
$("#boutonDemandeRdv").hide();
|
||||
$("#felicitationRdvContainer").show();
|
||||
$("#demandeRdvContainer").hide();
|
||||
|
||||
$.ajax({
|
||||
//L'URL de la requête
|
||||
|
||||
url: "/app_dev.php/api/demanderRdv?nom=" + $("#nom").val() + "&prenom=" + $("#prenom").val() + "&email=" +
|
||||
$("#email").val() + "&telephone=" + $("#telephone").val() + "&page=Demande rdv module vidéo",
|
||||
method: "GET",
|
||||
//La méthode d'envoi (type de requête)
|
||||
|
||||
|
||||
//Le format de réponse attendu
|
||||
dataType: "json",
|
||||
})
|
||||
//Ce code sera exécuté en cas de succès - La réponse du serveur est passée à done()
|
||||
/*On peut par exemple convertir cette réponse en chaine JSON et insérer
|
||||
* cette chaine dans un div id="res"*/
|
||||
.done(function (response) {
|
||||
console.log("Requête demande rdv done");
|
||||
setTimeout(function () {
|
||||
document.location.href = "https://blog.talentstube.com/articles-entreprise/";
|
||||
}, 8000);
|
||||
|
||||
})
|
||||
|
||||
//Ce code sera exécuté en cas d'échec - L'erreur est passée à fail()
|
||||
//On peut afficher les informations relatives à la requête et à l'erreur
|
||||
.fail(function (error) {
|
||||
aconsole.log("Requête demande rdvfail");
|
||||
console.log(error);
|
||||
})
|
||||
|
||||
//Ce code sera exécuté que la requête soit un succès ou un échec
|
||||
.always(function () {
|
||||
console.log("Requête demande rdv effectuée");
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
function fermerVideo() {
|
||||
var videoURL = $('#player').prop('src');
|
||||
videoURL = videoURL.replace("&autoplay=1", "");
|
||||
$('#player').prop('src', '');
|
||||
$('#player').prop('src', videoURL);
|
||||
|
||||
}
|
||||
$('#exampleModalCenter').on('hidden.bs.modal', function (e) {
|
||||
console.log("exampleModalCenter11");
|
||||
fermerVideo();
|
||||
})
|
||||
</script>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
@@ -80,6 +80,8 @@ twig:
|
||||
globals:
|
||||
push_public_key: "%push_params.public_key%"
|
||||
fairlane_cookie_consent: '@fairlane_cookie_consent.twig'
|
||||
version: '2.6.2'
|
||||
|
||||
|
||||
|
||||
# Swiftmailer Configuration
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
# This file is auto-generated during the composer install
|
||||
parameters:
|
||||
onurb_yuml.extension: jpg
|
||||
mailjet_public: 355697fac93fca865660734b4fdffaeb
|
||||
mailjet_private : ddecf75321ca89c09e561857b13534c8
|
||||
mailer_transport: smtp
|
||||
mailer_host: mail.gandi.net
|
||||
mailer_user: noreply@talentstube.io
|
||||
@@ -25,7 +27,8 @@ parameters:
|
||||
media_photo_dir: '%kernel.root_dir%/../web/uploads/photos/'
|
||||
elastic_host: tt-website.elasticsearch.dev
|
||||
elastic_port: 9200
|
||||
delivery_addresses: l.laniau@talentstube.com
|
||||
delivery_addresses: dev@talentstube.com
|
||||
app.version: 2.5.1
|
||||
push_params:
|
||||
push_notification_file_path: '%kernel.root_dir%/../web/push/'
|
||||
push_network_config:
|
||||
@@ -35,4 +38,4 @@ parameters:
|
||||
ttl: 300
|
||||
urgency: high
|
||||
topic: Emploi
|
||||
push_params.public_key: BNFyiyPiLH97Dgc0m1vXluUNaCN6y3Hkgd4YcqS2lVkP8my3tq2D5gM5g7cY6R4VxC7GljSzkLRu+k+oO+2TtjU=
|
||||
push_params.public_key: BNFyiyPiLH97Dgc0m1vXluUNaCN6y3Hkgd4YcqS2lVkP8my3tq2D5gM5g7cY6R4VxC7GljSzkLRu+k+oO+2TtjU=
|
||||
@@ -1,4 +1,6 @@
|
||||
parameters:
|
||||
mailjet_public: 355697fac93fca865660734b4fdffaeb
|
||||
mailjet_private : ddecf75321ca89c09e561857b13534c8
|
||||
mailer_transport: smtp
|
||||
mailer_host: mail.gandi.net
|
||||
# mailer_user: noreply@talentstube.io
|
||||
@@ -30,7 +32,8 @@ parameters:
|
||||
|
||||
elastic_host: tt-website.elasticsearch.preprod
|
||||
elastic_port: 9200
|
||||
delivery_addresses: l.laniau@talentstube.com
|
||||
delivery_addresses: dev@talentstube.com
|
||||
app.version: 2.5.1
|
||||
push_params:
|
||||
push_notification_file_path: '%kernel.root_dir%/../web/push/'
|
||||
push_network_config:
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
parameters:
|
||||
mailjet_public: 355697fac93fca865660734b4fdffaeb
|
||||
mailjet_private : ddecf75321ca89c09e561857b13534c8
|
||||
mailer_transport: smtp
|
||||
mailer_host: mail.gandi.net
|
||||
#mailer_user: noreply@talentstube.com
|
||||
@@ -22,14 +24,15 @@ parameters:
|
||||
prestashop_ad_id: 10
|
||||
prestashop_video_corporate_id: 19
|
||||
prestashop_url: https://www.talentstube.com/store/
|
||||
#Media
|
||||
#Media
|
||||
media_video_dir: '%kernel.root_dir%/../web/uploads/videos/'
|
||||
media_video_url: 'http://static.talentstube.com/videos/'
|
||||
media_photo_dir: '%kernel.root_dir%/../web/uploads/photos/'
|
||||
|
||||
elastic_host: tt-website.elasticsearch.prod
|
||||
elastic_port: 9200
|
||||
delivery_addresses: l.laniau@talentstube.com
|
||||
delivery_addresses: dev@talentstube.com
|
||||
app.version: 2.5.1
|
||||
push_params:
|
||||
push_notification_file_path: '%kernel.root_dir%/../web/push/'
|
||||
push_network_config:
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
parameters:
|
||||
cheminVideo : '%kernel.project_dir%/web/uploads/videos/montage'
|
||||
|
||||
services:
|
||||
|
||||
#Tools (independent)
|
||||
|
||||
@@ -60,7 +60,8 @@
|
||||
"willdurand/hateoas-bundle": "^1.4",
|
||||
"lexik/jwt-authentication-bundle": "^2.5",
|
||||
"nelmio/cors-bundle": "^1.5",
|
||||
"onurb/doctrine-yuml-bundle": "^1.1"
|
||||
"onurb/doctrine-yuml-bundle": "^1.1",
|
||||
"mailjet/mailjet-apiv3-php": "^1.5"
|
||||
},
|
||||
"require-dev": {
|
||||
"sensio/generator-bundle": "^3.0",
|
||||
|
||||
@@ -159,6 +159,16 @@ class AnswerController extends AbstractController
|
||||
// But if that werent't the case, its value should have been tested
|
||||
// before assigning it to $responseTemp
|
||||
$responseTemp = $answer->getUser()->getFirstname();
|
||||
if($answer->getUser()->getCompany()){
|
||||
if($answer->getUser()->getCompany()->getCv()){
|
||||
if ($this->container->get( 'kernel' )->getEnvironment() == "dev") {
|
||||
$cheminCv = "../../../../../uploads/cv/";
|
||||
}else{
|
||||
$cheminCv = "../../../../uploads/cv/";
|
||||
}
|
||||
$responseTemp .= "<br> <a target='_blank' href='".$cheminCv.$answer->getUser()->getCompany()->getCv()."'>Lien vers le CV papier</a>";
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -206,7 +216,12 @@ class AnswerController extends AbstractController
|
||||
}
|
||||
case 'status':
|
||||
{
|
||||
$responseTemp = "<span id='status_".$answer->getId()."'> ".$answer->getstatus()."</span> ";
|
||||
if($answer->getstatus()=="SENDED"){
|
||||
$status= "ENVOYE";
|
||||
}else{
|
||||
$status=$answer->getstatus();
|
||||
}
|
||||
$responseTemp = "<span id='status_".$answer->getId()."'> ".$status."</span> ";
|
||||
|
||||
|
||||
break;
|
||||
@@ -215,7 +230,8 @@ class AnswerController extends AbstractController
|
||||
case 'actions':
|
||||
{
|
||||
$responseTemp = "Actions :<select class='changeStatus' onChange='changerStatut(this.value, ".$answer->getId().")' name='changeStatus' data-id=".$answer->getId()."><option value='null'>choisir</option><option value='SENDED'>Envoyé</option><option value='DRAFT'>Brouillon</option><option value='REFUSED'>Refuser</option></select>";
|
||||
|
||||
$responseTemp .= "<br>";
|
||||
$responseTemp .= "<a class='delete-answer' href='#' onClick='verifierDelete(".$answer->getId().")' data-toggle='tooltip' title='Supprimer'>Supprimer <i class='fa fa-trash'></i></a>";
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -24,10 +24,15 @@ class MediaController extends Controller
|
||||
public function adminVideoModerationListAction()
|
||||
{
|
||||
$em = $this->getDoctrine()->getManager();
|
||||
$medias = $em->getRepository('AppBundle:Media')->findByStatus('TO_MODERATE');
|
||||
|
||||
$medias = $em->getRepository('AppBundle:Media')->getMedias();
|
||||
if ($this->container->get( 'kernel' )->getEnvironment() == "dev") {
|
||||
$chemin="../../../../uploads/videos/";
|
||||
}else{
|
||||
$chemin="../../../uploads/videos/";
|
||||
}
|
||||
return $this->render('admin/media_list_moderation.html.twig', array(
|
||||
'medias' => $medias,
|
||||
'chemin' => $chemin,
|
||||
));
|
||||
}
|
||||
|
||||
|
||||
@@ -108,12 +108,16 @@ class UserController extends Controller
|
||||
}
|
||||
|
||||
\assert(!\is_null($user));
|
||||
// $company = $user->getCompany();
|
||||
$company = $user->getCompany();
|
||||
// if ($company) {
|
||||
// $company->setPresentationVideo(null);
|
||||
// $em->persist($company);
|
||||
// $em->flush();
|
||||
// $em->remove($company);
|
||||
// $em->flush();
|
||||
// }
|
||||
if ($company) {
|
||||
$company->setPresentationVideo(null);
|
||||
$em->persist($company);
|
||||
$em->flush();
|
||||
}
|
||||
$this->deleteRelation($user);
|
||||
$em->remove($user);
|
||||
$em->flush();
|
||||
@@ -125,7 +129,7 @@ class UserController extends Controller
|
||||
// if ($company) {
|
||||
// $em->remove($company);
|
||||
// }
|
||||
$em->flush();
|
||||
//$em->flush();
|
||||
|
||||
return $this->redirectToRoute('admin_config_others_user');
|
||||
}
|
||||
@@ -133,13 +137,14 @@ class UserController extends Controller
|
||||
public function deleteRelation($user)
|
||||
{
|
||||
$em = $this->getDoctrine()->getManager();
|
||||
|
||||
//$company = $em->getRepository('AppBundle:Company')->find($companyId);
|
||||
$sendMessage = $em->getRepository('AppBundle:Message')->findBy(array('sender' => $user));
|
||||
if ($sendMessage) {
|
||||
foreach ($sendMessage as $key => $message) {
|
||||
$message->setSender(null);
|
||||
$message->setAnswer(null);
|
||||
}
|
||||
|
||||
$em->flush();
|
||||
}
|
||||
|
||||
@@ -160,6 +165,14 @@ class UserController extends Controller
|
||||
$em->flush();
|
||||
}
|
||||
|
||||
$subscriptions = $em->getRepository('AppBundle:UserSubscription')->findBy(array('user' => $user));
|
||||
if ($subscriptions) {
|
||||
foreach ($subscriptions as $key => $subscription) {
|
||||
$em->remove($subscription);
|
||||
}
|
||||
$em->flush();
|
||||
}
|
||||
|
||||
$answers = $em->getRepository('AppBundle:Answer')->findBy(array('user' => $user));
|
||||
if ($answers) {
|
||||
foreach ($answers as $key => $answer) {
|
||||
@@ -194,6 +207,12 @@ class UserController extends Controller
|
||||
|
||||
$medias = $em->getRepository('AppBundle:Media')->findBy(array('creator' => $user));
|
||||
if ($medias) {
|
||||
// foreach ($medias as $key => $media) {
|
||||
// $media->setCompany(null);
|
||||
// $em->persist($media);
|
||||
// $em->flush();
|
||||
// }
|
||||
|
||||
foreach ($medias as $key => $media) {
|
||||
$em->remove($media);
|
||||
}
|
||||
|
||||
@@ -18,7 +18,12 @@ use Symfony\Component\HttpFoundation\Session\Session;
|
||||
use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
|
||||
use Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken;
|
||||
use AppBundle\Entity\Media;
|
||||
|
||||
//MAILJET
|
||||
use AppBundle\Entity\Mailjet;
|
||||
// use AppBundle\Entity\Response;
|
||||
use AppBundle\Entity\Resources;
|
||||
use AppBundle\Entity\Config;
|
||||
use AppBundle\Entity\Client;
|
||||
class AnswerController extends Controller
|
||||
{
|
||||
/**
|
||||
@@ -266,42 +271,37 @@ class AnswerController extends Controller
|
||||
*/
|
||||
public function talentCreateSpontaneaousAction(Request $request, Company $company)
|
||||
{
|
||||
$securityContext = $this->container->get('security.authorization_checker');
|
||||
if (!$securityContext->isGranted('IS_AUTHENTICATED_FULLY')) {
|
||||
$this->createAnonymousUser();
|
||||
}
|
||||
$em = $this->getDoctrine()->getManager();
|
||||
$existAnswer = $em->getRepository('AppBundle:Answer')->findOneBy(array('user' => $this->getUser(), 'company' => $company));
|
||||
if ($existAnswer) {
|
||||
if ($existAnswer->getStatus() == "SENDED") {
|
||||
$answer = new Answer($this->getUser(), null, 'DRAFT', $company);
|
||||
$em->persist($answer);
|
||||
$em->flush();
|
||||
} else {
|
||||
$answer = $existAnswer;
|
||||
}
|
||||
} else {
|
||||
$answer = new Answer($this->getUser(), null, 'DRAFT', $company);
|
||||
$em->persist($answer);
|
||||
$em->flush();
|
||||
}
|
||||
$em->persist($answer);
|
||||
$em->flush();
|
||||
$user = $this->getUser();
|
||||
$mustLogin = false;
|
||||
if (!$user->hasRole('ROLE_TALENT')) {
|
||||
$mustLogin = true;
|
||||
}
|
||||
$route_videotheque = $this->generateUrl("answer_create_company_step2", array('id' => $company->getId(), 'type' => 'videotheque'));
|
||||
$this->get('twig')->addGlobal('destination_login', $route_videotheque);
|
||||
// $securityContext = $this->container->get('security.authorization_checker');
|
||||
// if (!$securityContext->isGranted('IS_AUTHENTICATED_FULLY')) {
|
||||
// $this->createAnonymousUser();
|
||||
// }
|
||||
// $em = $this->getDoctrine()->getManager();
|
||||
// $existAnswer = $em->getRepository('AppBundle:Answer')->findOneBy(array('user' => $this->getUser(), 'company' => $company));
|
||||
// if ($existAnswer) {
|
||||
// if ($existAnswer->getStatus() == "SENDED") {
|
||||
// $answer = new Answer($this->getUser(), null, 'DRAFT', $company);
|
||||
// $em->persist($answer);
|
||||
// $em->flush();
|
||||
// } else {
|
||||
// $answer = $existAnswer;
|
||||
// }
|
||||
// } else {
|
||||
// $answer = new Answer($this->getUser(), null, 'DRAFT', $company);
|
||||
// $em->persist($answer);
|
||||
// $em->flush();
|
||||
// }
|
||||
// $em->persist($answer);
|
||||
// $em->flush();
|
||||
// $user = $this->getUser();
|
||||
// $mustLogin = false;
|
||||
// if (!$user->hasRole('ROLE_TALENT')) {
|
||||
// $mustLogin = true;
|
||||
// }
|
||||
// $route_videotheque = $this->generateUrl("answer_create_company_step2", array('id' => $company->getId(), 'type' => 'videotheque'));
|
||||
// $this->get('twig')->addGlobal('destination_login', $route_videotheque);
|
||||
|
||||
return $this->render('answer/answer_create_step1.html.twig', array(
|
||||
'typeObject' => 'Company',
|
||||
'answer' => $answer,
|
||||
'object' => $company,
|
||||
'mustLogin' => $mustLogin,
|
||||
'route_videotheque' => $route_videotheque,
|
||||
));
|
||||
return $this->render('answer/answer_create_step1.html.twig'
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -379,34 +379,94 @@ class AnswerController extends Controller
|
||||
}
|
||||
|
||||
if ($form->isSubmitted() && $form->isValid()) {
|
||||
$mj = new Client($this->getParameter('mailjet_public'), $this->getParameter('mailjet_private'));
|
||||
// $link = $this->generateUrl('company_answer_show', array('id' => $answer->getId()), UrlGeneratorInterface::ABSOLUTE_URL);
|
||||
$contactMail = $answer->getUser()->getEmail();
|
||||
if ($this->container->get( 'kernel' )->getEnvironment() == "dev") {
|
||||
$contactMail = "dev@talentstube.com";
|
||||
}
|
||||
if($message->getVideo() == null){
|
||||
$body = [
|
||||
'FromEmail' => "noreply@talentstube.io",
|
||||
'FromName' => "Talents Tube",
|
||||
'Subject' => "Découvrez la réponse de l’entreprise pour votre candidature",
|
||||
'MJ-TemplateID' =>2196199 ,
|
||||
'MJ-TemplateLanguage' => true,
|
||||
'Recipients' => [
|
||||
[
|
||||
'Email' => $contactMail,
|
||||
'Vars' => [
|
||||
'prenom' => $answer->getUser()->getFirstname(),
|
||||
'entreprise' => $this->getUser()->getCompany()->getBrandName(),
|
||||
]
|
||||
]
|
||||
]
|
||||
];
|
||||
}else{
|
||||
$thumbnailsArray = $message->getVideo()->getThumbnails();
|
||||
$img="";
|
||||
if($thumbnailsArray){
|
||||
if($thumbnailsArray[0]){
|
||||
if($thumbnailsArray[0]['sizes']){
|
||||
$img = $thumbnailsArray[0]['sizes'][4]['link'];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$body = [
|
||||
'FromEmail' => "noreply@talentstube.io",
|
||||
'FromName' => "Talents tube",
|
||||
'Subject' => "Découvrez la réponse de l’entreprise pour votre candidature",
|
||||
'MJ-TemplateID' =>2196010 ,
|
||||
'MJ-TemplateLanguage' => true,
|
||||
'Recipients' => [
|
||||
[
|
||||
'Email' => $contactMail,
|
||||
'Vars' => [
|
||||
'prenom' => $answer->getUser()->getFirstname(),
|
||||
'entreprise' => $this->getUser()->getCompany()->getBrandName(),
|
||||
'imgReponseEntreprise' => $img,
|
||||
]
|
||||
]
|
||||
]
|
||||
];
|
||||
}
|
||||
$response = $mj->post(Resources::$Email, ['body' => $body]);
|
||||
$response->success() && var_dump($response->getData());
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
$messageText = $form['message']->getData();
|
||||
if(!$messageText){
|
||||
$messageText = "";
|
||||
}
|
||||
$mediaManager = $this->get('media_manager');
|
||||
$mediaManager->getThumbnails($message);
|
||||
$htmlView = $this->renderView('email/contact_talent.html.twig', array(
|
||||
'type' => 'html',
|
||||
'answer' => $answer,
|
||||
'messageText' => $messageText,
|
||||
'user' => $answer->getUser(),
|
||||
'video' => $message->getVideo(),
|
||||
'message' => $message,
|
||||
'aliasCompany' => $aliasCompany
|
||||
));
|
||||
// $mediaManager = $this->get('media_manager');
|
||||
// $mediaManager->getThumbnails($message);
|
||||
// $htmlView = $this->renderView('email/contact_talent.html.twig', array(
|
||||
// 'type' => 'html',
|
||||
// 'answer' => $answer,
|
||||
// 'messageText' => $messageText,
|
||||
// 'user' => $answer->getUser(),
|
||||
// 'video' => $message->getVideo(),
|
||||
// 'message' => $message,
|
||||
// 'aliasCompany' => $aliasCompany
|
||||
// ));
|
||||
|
||||
$plainView = $this->renderView('email/contact_talent_plain.html.twig', array(
|
||||
'message' => $messageText,
|
||||
'user' => $answer->getUser(),
|
||||
));
|
||||
$email = \Swift_Message::newInstance()
|
||||
->setSubject('Candidature : ' . $title)
|
||||
->setFrom($this->getParameter('mailer_user'))
|
||||
->setReplyTo($this->getParameter('mailer_user'))
|
||||
->setTo($answer->getUser()->getEmail())
|
||||
->setBody($htmlView, 'text/html')
|
||||
->addPart($plainView, 'text/plain');
|
||||
$this->get('mailer')->send($email);
|
||||
// $plainView = $this->renderView('email/contact_talent_plain.html.twig', array(
|
||||
// 'message' => $messageText,
|
||||
// 'user' => $answer->getUser(),
|
||||
// ));
|
||||
// $email = \Swift_Message::newInstance()
|
||||
// ->setSubject('Candidature : ' . $title)
|
||||
// ->setFrom($this->getParameter('mailer_user'))
|
||||
// ->setReplyTo($this->getParameter('mailer_user'))
|
||||
// ->setTo($answer->getUser()->getEmail())
|
||||
// ->setBody($htmlView, 'text/html')
|
||||
// ->addPart($plainView, 'text/plain');
|
||||
// $this->get('mailer')->send($email);
|
||||
$em = $this->getDoctrine()->getManager();
|
||||
$message->setSubject('Candidature : ' . $title);
|
||||
$message->setContent($messageText);
|
||||
|
||||
@@ -22,6 +22,12 @@ use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
|
||||
use JMS\Serializer\SerializationContext;
|
||||
use AppBundle\Exception\ResourceValidationException;
|
||||
use AppBundle\Exception\UnknownUserException;
|
||||
//MAILJET
|
||||
use AppBundle\Entity\Mailjet;
|
||||
// use AppBundle\Entity\Response;
|
||||
use AppBundle\Entity\Resources;
|
||||
use AppBundle\Entity\Config;
|
||||
use AppBundle\Entity\Client;
|
||||
use \DateTime;
|
||||
|
||||
class AnswerController extends FOSRestController
|
||||
@@ -95,7 +101,7 @@ class AnswerController extends FOSRestController
|
||||
$mediaId = htmlspecialchars($request->get('mediaId'));
|
||||
$companyId = htmlspecialchars($request->get('companyId'));
|
||||
$adId = htmlspecialchars($request->get('adId'));
|
||||
|
||||
//TODO 471 : Associer CV avec candidature crée (on a envoyé le lien du cv dans le request)
|
||||
if (!is_numeric($mediaId) || !is_numeric($companyId) || ($adId != null && !is_numeric($adId))) {
|
||||
$message = 'Le média, l\'entreprise ou l\'offre ne sont pas au format demandé';
|
||||
$status = 'failure';
|
||||
@@ -160,33 +166,78 @@ class AnswerController extends FOSRestController
|
||||
$message->setVideo($video);
|
||||
$em->persist($message);
|
||||
$em->flush();*/
|
||||
$mailManager = $this->get('app.mail_manager');
|
||||
foreach ($usersCompany as $user){
|
||||
$link = $this->generateUrl('company_answer_show', array('id' => $answer->getId()), UrlGeneratorInterface::ABSOLUTE_URL);
|
||||
$mailManager->sendMail(
|
||||
'Candidature TalentsTube ',
|
||||
'<div style="margin:0 auto;max-width:600px;background:#FFFFFF;"><table class="" cellpadding="0" cellspacing="0" style="width:100%;font-size:0px;background:#FFFFFF;" align="center"><tbody><tr><td style="text-align:center;vertical-align:top;font-size:0;padding:0px;"><!--[if mso]>
|
||||
<table border="0" cellpadding="0" cellspacing="0"><tr><td style="width:600px;">
|
||||
<![endif]--><div style="vertical-align:top;display:inline-block;font-size:13px;text-align:left;width:100%;" class="mj-column-per-100" aria-labelledby="mj-column-per-100"><table width="100%"><tbody><tr><td style="font-size:0;padding:0px;" align="center"><table cellpadding="0" cellspacing="0" style="border-collapse:collapse;border-spacing:0px;" align="center"><tbody><tr><td><img alt="" src="' . $img . '" style="border:none;display:block;outline:none;text-decoration:none;width:100%;max-width:600px;height:auto;" width="600" height="auto"></td></tr></tbody></table></td></tr></tbody></table></div><!--[if mso]>
|
||||
</td></tr></table>
|
||||
<![endif]--></td></tr></tbody></table></div>
|
||||
|
||||
|
||||
//if ($this->container->get( 'kernel' )->getEnvironment() != "dev") {
|
||||
|
||||
|
||||
$mailManager = $this->get('app.mail_manager');
|
||||
foreach ($usersCompany as $user){
|
||||
$mj = new Client("355697fac93fca865660734b4fdffaeb", "ddecf75321ca89c09e561857b13534c8");
|
||||
$link = $this->generateUrl('company_answer_show', array('id' => $answer->getId()), UrlGeneratorInterface::ABSOLUTE_URL);
|
||||
$contactMail = $user->getEmail();
|
||||
if ($this->container->get( 'kernel' )->getEnvironment() == "dev") {
|
||||
$contactMail = "dev@talentstube.com";
|
||||
|
||||
<div style="margin:0 auto;max-width:600px;background:#FFFFFF;"><table class="" cellpadding="0" cellspacing="0" style="width:100%;font-size:0px;background:#FFFFFF;" align="center"><tbody><tr><td style="text-align:center;vertical-align:top;font-size:0;padding:0px;"><!--[if mso]>
|
||||
<table border="0" cellpadding="0" cellspacing="0"><tr><td style="width:600px;">
|
||||
<![endif]--><div style="vertical-align:top;display:inline-block;font-size:13px;text-align:left;width:100%;" class="mj-column-per-100" aria-labelledby="mj-column-per-100"><table width="100%"><tbody><tr><td style="font-size:0;padding:20px 35px 20px 35px;" align="left"><div class="mj-content" style="cursor:auto;color:#534F4F;font-family:Trebuchet,Helvetica,sans-serif;font-size:14px;line-height:22px;"><p>Bonjour ' . $user->getLastname() . ' ' . $user->getFirstname() . ',</p>
|
||||
<p>Le talent ' . $answer->getUser()->getFirstname() . ' ' . $answer->getUser()->getLastname() . ' a répondu à votre annonce ' . $title . '.</p></div></td></tr></tbody></table></div><!--[if mso]>
|
||||
</td></tr></table>
|
||||
<![endif]--></td></tr></tbody></table></div>
|
||||
}else{
|
||||
// $complSubject="";
|
||||
// if($user->getEmail()){
|
||||
// $complSubject=$user->getEmail();
|
||||
// }
|
||||
if($answer->getUser()){
|
||||
$body = [
|
||||
'FromEmail' => "noreply@talentstube.io",
|
||||
'FromName' => "Talents Tube",
|
||||
// 'To' => $contactMail,
|
||||
'Subject' => "Une nouvelle candidature reçue sur Talents Tube ",
|
||||
'MJ-TemplateID' =>2297838 ,
|
||||
'MJ-TemplateLanguage' => true,
|
||||
'Recipients' => [
|
||||
[
|
||||
'Email' => $contactMail,
|
||||
'Name' => $user->getLastname(),
|
||||
'Vars' => [
|
||||
'prenomRecruteur' => $user->getFirstname(),
|
||||
'nomRecruteur' => $user->getLastname(),
|
||||
'prenom' => $answer->getUser()->getFirstname(),
|
||||
'nom' => $answer->getUser()->getLastname(),
|
||||
'urlCandidature' => $link,
|
||||
]
|
||||
]
|
||||
],
|
||||
|
||||
];
|
||||
$response = $mj->post(Resources::$Email, ['body' => $body]);
|
||||
$response->success() ;
|
||||
}
|
||||
}
|
||||
|
||||
<div style="margin:0 auto;max-width:600px;background:#FFFFFF;"><table class="" cellpadding="0" cellspacing="0" style="width:100%;font-size:0px;background:#FFFFFF;" align="center"><tbody><tr><td style="text-align:center;vertical-align:top;font-size:0;padding:0px 0px 40px 0px;"><!--[if mso]>
|
||||
<table border="0" cellpadding="0" cellspacing="0"><tr><td style="width:600px;">
|
||||
<![endif]--><div style="vertical-align:top;display:inline-block;font-size:13px;text-align:left;width:100%;" class="mj-column-per-100" aria-labelledby="mj-column-per-100"><table width="100%"><tbody><tr><td style="font-size:0;padding:15px 30px;" align="center"><table cellpadding="0" cellspacing="0" style="border:none;border-radius:30px;" align="center"><tbody><tr><td style="background:#1689FB;border-radius:30px;color:#FFFFFF;cursor:auto;" align="center" valign="middle" bgcolor="#1689FB"><a class="mj-content" href="' . $link . '" style="display:inline-block;text-decoration:none;background:#1689FB;border:1px solid #1689FB;border-radius:30px;color:#FFFFFF;font-family:Trebuchet,Helvetica,sans-serif;font-size:14px;font-weight:normal;padding:15px 30px;" target="_blank">Découvrir le talent</a></td></tr></tbody></table></td></tr></tbody></table></div><!--[if mso]>
|
||||
</td></tr></table>
|
||||
<![endif]--></td></tr></tbody></table></div>',
|
||||
$user,
|
||||
'contact_default'
|
||||
);
|
||||
}
|
||||
|
||||
// $mailManager->sendMail(
|
||||
// 'Candidature TalentsTube ',
|
||||
// '<div style="margin:0 auto;max-width:600px;background:#FFFFFF;"><table class="" cellpadding="0" cellspacing="0" style="width:100%;font-size:0px;background:#FFFFFF;" align="center"><tbody><tr><td style="text-align:center;vertical-align:top;font-size:0;padding:0px;"><!--[if mso]>
|
||||
// <table border="0" cellpadding="0" cellspacing="0"><tr><td style="width:600px;">
|
||||
// <![endif]--><div style="vertical-align:top;display:inline-block;font-size:13px;text-align:left;width:100%;" class="mj-column-per-100" aria-labelledby="mj-column-per-100"><table width="100%"><tbody><tr><td style="font-size:0;padding:0px;" align="center"><table cellpadding="0" cellspacing="0" style="border-collapse:collapse;border-spacing:0px;" align="center"><tbody><tr><td><img alt="" src="' . $img . '" style="border:none;display:block;outline:none;text-decoration:none;width:100%;max-width:600px;height:auto;" width="600" height="auto"></td></tr></tbody></table></td></tr></tbody></table></div><!--[if mso]>
|
||||
// </td></tr></table>
|
||||
// <![endif]--></td></tr></tbody></table></div>
|
||||
|
||||
// <div style="margin:0 auto;max-width:600px;background:#FFFFFF;"><table class="" cellpadding="0" cellspacing="0" style="width:100%;font-size:0px;background:#FFFFFF;" align="center"><tbody><tr><td style="text-align:center;vertical-align:top;font-size:0;padding:0px;"><!--[if mso]>
|
||||
// <table border="0" cellpadding="0" cellspacing="0"><tr><td style="width:600px;">
|
||||
// <![endif]--><div style="vertical-align:top;display:inline-block;font-size:13px;text-align:left;width:100%;" class="mj-column-per-100" aria-labelledby="mj-column-per-100"><table width="100%"><tbody><tr><td style="font-size:0;padding:20px 35px 20px 35px;" align="left"><div class="mj-content" style="cursor:auto;color:#534F4F;font-family:Trebuchet,Helvetica,sans-serif;font-size:14px;line-height:22px;"><p>Bonjour ' . $user->getLastname() . ' ' . $user->getFirstname() . ',</p>
|
||||
// <p>Le talent ' . $answer->getUser()->getFirstname() . ' ' . $answer->getUser()->getLastname() . ' a répondu à votre annonce ' . $title . '.</p></div></td></tr></tbody></table></div><!--[if mso]>
|
||||
// </td></tr></table>
|
||||
// <![endif]--></td></tr></tbody></table></div>
|
||||
|
||||
// <div style="margin:0 auto;max-width:600px;background:#FFFFFF;"><table class="" cellpadding="0" cellspacing="0" style="width:100%;font-size:0px;background:#FFFFFF;" align="center"><tbody><tr><td style="text-align:center;vertical-align:top;font-size:0;padding:0px 0px 40px 0px;"><!--[if mso]>
|
||||
// <table border="0" cellpadding="0" cellspacing="0"><tr><td style="width:600px;">
|
||||
// <![endif]--><div style="vertical-align:top;display:inline-block;font-size:13px;text-align:left;width:100%;" class="mj-column-per-100" aria-labelledby="mj-column-per-100"><table width="100%"><tbody><tr><td style="font-size:0;padding:15px 30px;" align="center"><table cellpadding="0" cellspacing="0" style="border:none;border-radius:30px;" align="center"><tbody><tr><td style="background:#1689FB;border-radius:30px;color:#FFFFFF;cursor:auto;" align="center" valign="middle" bgcolor="#1689FB"><a class="mj-content" href="' . $link . '" style="display:inline-block;text-decoration:none;background:#1689FB;border:1px solid #1689FB;border-radius:30px;color:#FFFFFF;font-family:Trebuchet,Helvetica,sans-serif;font-size:14px;font-weight:normal;padding:15px 30px;" target="_blank">Découvrir le talent</a></td></tr></tbody></table></td></tr></tbody></table></div><!--[if mso]>
|
||||
// </td></tr></table>
|
||||
// <![endif]--></td></tr></tbody></table></div>',
|
||||
// $user,
|
||||
// 'contact_default'
|
||||
// );
|
||||
}
|
||||
//}
|
||||
$status = array('status' => "success", "idAnswer" => $answer->getId()/*, "idMessage" => $message->getId()*/);
|
||||
}
|
||||
} else {
|
||||
@@ -320,6 +371,7 @@ class AnswerController extends FOSRestController
|
||||
$status = array('status' => "success", "companyUpdated" => false);
|
||||
//dump($file);
|
||||
// If a file was uploaded
|
||||
//TODO Controle sur l'extension du fichier (pdf, word)
|
||||
if (!is_null($file)) {
|
||||
|
||||
$companyManager = $this->get('app.company_manager');
|
||||
@@ -386,30 +438,59 @@ class AnswerController extends FOSRestController
|
||||
$em->flush();*/
|
||||
$mailManager = $this->get('app.mail_manager');
|
||||
foreach ($usersCompany as $user){
|
||||
$link = $this->generateUrl('company_answer_show', array('id' => $existAnswer->getId()), UrlGeneratorInterface::ABSOLUTE_URL);
|
||||
$mailManager->sendMail(
|
||||
'Message sur la plateforme Talents Tube ',
|
||||
'<div style="margin:0 auto;max-width:600px;background:#FFFFFF;"><table class="" cellpadding="0" cellspacing="0" style="width:100%;font-size:0px;background:#FFFFFF;" align="center"><tbody><tr><td style="text-align:center;vertical-align:top;font-size:0;padding:0px;"><!--[if mso]>
|
||||
<table border="0" cellpadding="0" cellspacing="0"><tr><td style="width:600px;">
|
||||
<![endif]--><div style="vertical-align:top;display:inline-block;font-size:13px;text-align:left;width:100%;" class="mj-column-per-100" aria-labelledby="mj-column-per-100"><table width="100%"><tbody><tr><td style="font-size:0;padding:0px;" align="center"><table cellpadding="0" cellspacing="0" style="border-collapse:collapse;border-spacing:0px;" align="center"><tbody><tr><td><img alt="" src="' . $img . '" style="border:none;display:block;outline:none;text-decoration:none;width:100%;max-width:600px;height:auto;" width="600" height="auto"></td></tr></tbody></table></td></tr></tbody></table></div><!--[if mso]>
|
||||
</td></tr></table>
|
||||
<![endif]--></td></tr></tbody></table></div>
|
||||
|
||||
<div style="margin:0 auto;max-width:600px;background:#FFFFFF;"><table class="" cellpadding="0" cellspacing="0" style="width:100%;font-size:0px;background:#FFFFFF;" align="center"><tbody><tr><td style="text-align:center;vertical-align:top;font-size:0;padding:0px;"><!--[if mso]>
|
||||
<table border="0" cellpadding="0" cellspacing="0"><tr><td style="width:600px;">
|
||||
<![endif]--><div style="vertical-align:top;display:inline-block;font-size:13px;text-align:left;width:100%;" class="mj-column-per-100" aria-labelledby="mj-column-per-100"><table width="100%"><tbody><tr><td style="font-size:0;padding:20px 35px 20px 35px;" align="left"><div class="mj-content" style="cursor:auto;color:#534F4F;font-family:Trebuchet,Helvetica,sans-serif;font-size:14px;line-height:22px;"><p>Bonjour ' . $user->getLastname() . ' ' . $user->getFirstname() . ',</p>
|
||||
<p>Le talent ' . $existAnswer->getUser()->getFirstname() . ' ' . $existAnswer->getUser()->getLastname() . ' a laissé un message à votre annonce ' . $title . '.</p></div></td></tr></tbody></table></div><!--[if mso]>
|
||||
</td></tr></table>
|
||||
<![endif]--></td></tr></tbody></table></div>
|
||||
$mj = new Client($this->getParameter('mailjet_public'), $this->getParameter('mailjet_private'));
|
||||
// $link = $this->generateUrl('company_answer_show', array('id' => $existAnswer->getId()), UrlGeneratorInterface::ABSOLUTE_URL);
|
||||
$contactMail = $user->getEmail();
|
||||
if ($this->container->get( 'kernel' )->getEnvironment() == "dev") {
|
||||
$contactMail = "dev@talentstube.com";
|
||||
}
|
||||
$body = [
|
||||
'FromEmail' => "noreply@talentstube.io",
|
||||
'FromName' => "Talents Tube",
|
||||
'Subject' => "Vous avez reçu un message d’un candidat",
|
||||
'MJ-TemplateID' =>2195469 ,
|
||||
'MJ-TemplateLanguage' => true,
|
||||
'Recipients' => [
|
||||
[
|
||||
'Email' => $contactMail,
|
||||
'Vars' => [
|
||||
'prenomRecruteur' => $user->getFirstname(),
|
||||
'nomRecruteur' => $user->getLastname(),
|
||||
'prenom' => $existAnswer->getUser()->getFirstname(),
|
||||
'nom' => $existAnswer->getUser()->getLastname(),
|
||||
'entreprise' => $title
|
||||
]
|
||||
]
|
||||
]
|
||||
];
|
||||
$response = $mj->post(Resources::$Email, ['body' => $body]);
|
||||
|
||||
|
||||
<div style="margin:0 auto;max-width:600px;background:#FFFFFF;"><table class="" cellpadding="0" cellspacing="0" style="width:100%;font-size:0px;background:#FFFFFF;" align="center"><tbody><tr><td style="text-align:center;vertical-align:top;font-size:0;padding:0px 0px 40px 0px;"><!--[if mso]>
|
||||
<table border="0" cellpadding="0" cellspacing="0"><tr><td style="width:600px;">
|
||||
<![endif]--><div style="vertical-align:top;display:inline-block;font-size:13px;text-align:left;width:100%;" class="mj-column-per-100" aria-labelledby="mj-column-per-100"><table width="100%"><tbody><tr><td style="font-size:0;padding:15px 30px;" align="center"><table cellpadding="0" cellspacing="0" style="border:none;border-radius:30px;" align="center"><tbody><tr><td style="background:#1689FB;border-radius:30px;color:#FFFFFF;cursor:auto;" align="center" valign="middle" bgcolor="#1689FB"><a class="mj-content" href="' . $link . '" style="display:inline-block;text-decoration:none;background:#1689FB;border:1px solid #1689FB;border-radius:30px;color:#FFFFFF;font-family:Trebuchet,Helvetica,sans-serif;font-size:14px;font-weight:normal;padding:15px 30px;" target="_blank">Lire le message</a></td></tr></tbody></table></td></tr></tbody></table></div><!--[if mso]>
|
||||
</td></tr></table>
|
||||
<![endif]--></td></tr></tbody></table></div>',
|
||||
$user,
|
||||
'contact_default'
|
||||
);
|
||||
// $link = $this->generateUrl('company_answer_show', array('id' => $existAnswer->getId()), UrlGeneratorInterface::ABSOLUTE_URL);
|
||||
// $mailManager->sendMail(
|
||||
// 'Message sur la plateforme Talents Tube ',
|
||||
// '<div style="margin:0 auto;max-width:600px;background:#FFFFFF;"><table class="" cellpadding="0" cellspacing="0" style="width:100%;font-size:0px;background:#FFFFFF;" align="center"><tbody><tr><td style="text-align:center;vertical-align:top;font-size:0;padding:0px;"><!--[if mso]>
|
||||
// <table border="0" cellpadding="0" cellspacing="0"><tr><td style="width:600px;">
|
||||
// <![endif]--><div style="vertical-align:top;display:inline-block;font-size:13px;text-align:left;width:100%;" class="mj-column-per-100" aria-labelledby="mj-column-per-100"><table width="100%"><tbody><tr><td style="font-size:0;padding:0px;" align="center"><table cellpadding="0" cellspacing="0" style="border-collapse:collapse;border-spacing:0px;" align="center"><tbody><tr><td><img alt="" src="' . $img . '" style="border:none;display:block;outline:none;text-decoration:none;width:100%;max-width:600px;height:auto;" width="600" height="auto"></td></tr></tbody></table></td></tr></tbody></table></div><!--[if mso]>
|
||||
// </td></tr></table>
|
||||
// <![endif]--></td></tr></tbody></table></div>
|
||||
|
||||
// <div style="margin:0 auto;max-width:600px;background:#FFFFFF;"><table class="" cellpadding="0" cellspacing="0" style="width:100%;font-size:0px;background:#FFFFFF;" align="center"><tbody><tr><td style="text-align:center;vertical-align:top;font-size:0;padding:0px;"><!--[if mso]>
|
||||
// <table border="0" cellpadding="0" cellspacing="0"><tr><td style="width:600px;">
|
||||
// <![endif]--><div style="vertical-align:top;display:inline-block;font-size:13px;text-align:left;width:100%;" class="mj-column-per-100" aria-labelledby="mj-column-per-100"><table width="100%"><tbody><tr><td style="font-size:0;padding:20px 35px 20px 35px;" align="left"><div class="mj-content" style="cursor:auto;color:#534F4F;font-family:Trebuchet,Helvetica,sans-serif;font-size:14px;line-height:22px;"><p>Bonjour ' . $user->getLastname() . ' ' . $user->getFirstname() . ',</p>
|
||||
// <p>Le talent ' . $existAnswer->getUser()->getFirstname() . ' ' . $existAnswer->getUser()->getLastname() . ' a laissé un message à votre annonce ' . $title . '.</p></div></td></tr></tbody></table></div><!--[if mso]>
|
||||
// </td></tr></table>
|
||||
// <![endif]--></td></tr></tbody></table></div>
|
||||
|
||||
// <div style="margin:0 auto;max-width:600px;background:#FFFFFF;"><table class="" cellpadding="0" cellspacing="0" style="width:100%;font-size:0px;background:#FFFFFF;" align="center"><tbody><tr><td style="text-align:center;vertical-align:top;font-size:0;padding:0px 0px 40px 0px;"><!--[if mso]>
|
||||
// <table border="0" cellpadding="0" cellspacing="0"><tr><td style="width:600px;">
|
||||
// <![endif]--><div style="vertical-align:top;display:inline-block;font-size:13px;text-align:left;width:100%;" class="mj-column-per-100" aria-labelledby="mj-column-per-100"><table width="100%"><tbody><tr><td style="font-size:0;padding:15px 30px;" align="center"><table cellpadding="0" cellspacing="0" style="border:none;border-radius:30px;" align="center"><tbody><tr><td style="background:#1689FB;border-radius:30px;color:#FFFFFF;cursor:auto;" align="center" valign="middle" bgcolor="#1689FB"><a class="mj-content" href="' . $link . '" style="display:inline-block;text-decoration:none;background:#1689FB;border:1px solid #1689FB;border-radius:30px;color:#FFFFFF;font-family:Trebuchet,Helvetica,sans-serif;font-size:14px;font-weight:normal;padding:15px 30px;" target="_blank">Lire le message</a></td></tr></tbody></table></td></tr></tbody></table></div><!--[if mso]>
|
||||
// </td></tr></table>
|
||||
// <![endif]--></td></tr></tbody></table></div>',
|
||||
// $user,
|
||||
// 'contact_default'
|
||||
// );
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -18,6 +18,12 @@ use JMS\Serializer\SerializationContext;
|
||||
use Symfony\Component\HttpFoundation\JsonResponse;
|
||||
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
|
||||
use Symfony\Component\HttpFoundation\Request;
|
||||
//MAILJET
|
||||
use AppBundle\Entity\Mailjet;
|
||||
// use AppBundle\Entity\Response;
|
||||
use AppBundle\Entity\Resources;
|
||||
use AppBundle\Entity\Config;
|
||||
use AppBundle\Entity\Client;
|
||||
|
||||
class CompanyController extends FOSRestController
|
||||
{
|
||||
@@ -111,7 +117,7 @@ class CompanyController extends FOSRestController
|
||||
/**
|
||||
* @Rest\Get(path="/api/getAppelationsMetier", name="api_getAppelationsMetier")
|
||||
* @Rest\View
|
||||
* Récupérer des appelations à partir d'un métier (code ROME)
|
||||
* Récupérer des appelations pole emploi à partir d'un métier (code ROME)
|
||||
*/
|
||||
public function getAppelationsMetierAction(Request $request)
|
||||
{
|
||||
@@ -162,7 +168,7 @@ class CompanyController extends FOSRestController
|
||||
/**
|
||||
* @Rest\Get(path="/api/getAppelationsLibelle", name="api_getAppelationsLibelle")
|
||||
* @Rest\View
|
||||
* Récupérer des appelations à partir d'un libellé
|
||||
* Récupérer des appelations pole emploi à partir d'un libellé
|
||||
*/
|
||||
public function getAppelationsLibelleAction(Request $request)
|
||||
{
|
||||
@@ -214,7 +220,7 @@ class CompanyController extends FOSRestController
|
||||
/**
|
||||
* @Rest\Get(path="/api/getDetailAppelation", name="api_getDetailAppelation")
|
||||
* @Rest\View
|
||||
* Récupérer le détail d'une appelation
|
||||
* Récupérer le détail d'une appelation pole meploi
|
||||
*/
|
||||
public function getDetailAppelationAction(Request $request)
|
||||
{
|
||||
@@ -328,6 +334,57 @@ class CompanyController extends FOSRestController
|
||||
return new JsonResponse($response, 200, [], true);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @Rest\Get(path="/api/demanderRdv", name="api_demanderRdv")
|
||||
* @Rest\View
|
||||
*/
|
||||
public function demanderRdvAction(Request $request)
|
||||
{
|
||||
//APPEL de l'api Pole emploi pour recuperer Token
|
||||
$nom=$request->query->get('nom');
|
||||
$prenom=$request->query->get('prenom');
|
||||
$email=$request->query->get('email');
|
||||
$telephone=$request->query->get('telephone');
|
||||
$page=$request->query->get('page');
|
||||
if(isset($_SERVER['HTTP_REFERER'])) {
|
||||
$previous = $_SERVER['HTTP_REFERER']." / ".$_SERVER['REQUEST_URI'];
|
||||
}
|
||||
|
||||
$mj = new Client($this->getParameter('mailjet_public'), $this->getParameter('mailjet_private'));
|
||||
// $link = $this->generateUrl('company_answer_show', array('id' => $existAnswer->getId()), UrlGeneratorInterface::ABSOLUTE_URL);
|
||||
$contactMail = "contact@talentstube.com";
|
||||
if ($this->container->get( 'kernel' )->getEnvironment() == "dev") {
|
||||
$contactMail = "dev@talentstube.com";
|
||||
}
|
||||
$body = [
|
||||
'FromEmail' => "noreply@talentstube.io",
|
||||
'FromName' => "Talents Tube",
|
||||
'Subject' => "Demande de rdv ",
|
||||
'MJ-TemplateID' =>2383497 ,
|
||||
'MJ-TemplateLanguage' => true,
|
||||
'Recipients' => [
|
||||
[
|
||||
'Email' => $contactMail,
|
||||
'Vars' => [
|
||||
'prenom' => $prenom,
|
||||
'nom' => $nom,
|
||||
'email' => $email,
|
||||
'telephone' => $telephone,
|
||||
'page' => $page,
|
||||
'precedent' => $previous
|
||||
]
|
||||
]
|
||||
]
|
||||
];
|
||||
$response = $mj->post(Resources::$Email, ['body' => $body]);
|
||||
|
||||
|
||||
return new JsonResponse(array('retour' => "true"));
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @Rest\Get("/api/companies", name="api_company_list")
|
||||
* @Rest\QueryParam(
|
||||
@@ -400,6 +457,7 @@ class CompanyController extends FOSRestController
|
||||
public function companyAjaxRecStatAction(Company $company)
|
||||
{
|
||||
$history = $this->get('edeclic.history.record');
|
||||
|
||||
if ($this->getUser() && $this->getUser()->getCompany() != null) {
|
||||
if ($this->getUser()->getCompany()->getId() !== $company->getId()) {
|
||||
$history->recordIt($this->getUser()->getId(), "r", get_class($company), $company->getId(), serialize($company));
|
||||
@@ -408,6 +466,10 @@ class CompanyController extends FOSRestController
|
||||
$history->recordIt("Anonymous", "r", 'AppBundle\Entity\Company', $company->getId(), serialize($company));
|
||||
}
|
||||
|
||||
return new JsonResponse(array('code' => "ok"));
|
||||
if(!$this->getUser() == null){
|
||||
return new JsonResponse(array('code' => "ok", "user" => $this->getUser()->getUsername()));
|
||||
} else{
|
||||
return new JsonResponse(array('code' => "ok"));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -67,6 +67,7 @@ class SecurityController extends FOSRestController
|
||||
$lastname = htmlspecialchars($request->get('lastname'));
|
||||
$email = htmlspecialchars($request->get('email'));
|
||||
$password = htmlspecialchars($request->get('password'));
|
||||
$adId = htmlspecialchars($request->get('adId'));
|
||||
|
||||
if (!isset($firstname) || !isset($lastname) || !isset($email) || !isset($password))
|
||||
$status = array('status' => "failure", 'message' => 'empty parameters');
|
||||
@@ -75,7 +76,7 @@ class SecurityController extends FOSRestController
|
||||
$user = $userManager->findUserByEmail($email);
|
||||
|
||||
if (isset($user))
|
||||
$status = array('status' => "failure", 'message' => "L'utilisateur existe déjà.");
|
||||
$status = array('status' => "failure", 'message' => "L'utilisateur existe déjà!");
|
||||
else {
|
||||
$user = $userManager->createUser();
|
||||
|
||||
@@ -99,11 +100,12 @@ class SecurityController extends FOSRestController
|
||||
$alias = $slugService->slugify($user->getId() . "-" . $user->getFirstname() . "-" . $user->getLastname());
|
||||
$company->setAlias($alias);
|
||||
$company->setType("TALENT");
|
||||
$company->setDescription("Annonce consultée : ".$adId);
|
||||
$user->setCompany($company);
|
||||
$userManager->updateUser($user);
|
||||
}
|
||||
// $userManager->updatePassword($user);//pas besoin car fait dans updateUser , vraiment bizarre....
|
||||
$status = array('status' => "success", 'confirmationToken' => $user->getConfirmationToken(), 'email' => $user->getEmail(), 'firstname' => $user->getFirstname(), 'lastname' => $user->getLastname());
|
||||
$status = array('status' => "success", 'confirmationToken' => $user->getConfirmationToken(), 'email' => $user->getEmail(), 'firstname' => $user->getFirstname(), 'lastname' => $user->getLastname(), 'adId' => $adId);
|
||||
}
|
||||
}
|
||||
return new JsonResponse($status);
|
||||
@@ -163,6 +165,21 @@ class SecurityController extends FOSRestController
|
||||
$countryTalent = "";
|
||||
}
|
||||
$titleTalent = htmlspecialchars($request->get('currentJob'));
|
||||
|
||||
$geoloc = htmlspecialchars($request->get('geoloc'));
|
||||
$street_number = htmlspecialchars($request->get('street_number'));
|
||||
$route = htmlspecialchars($request->get('route'));
|
||||
$locality = htmlspecialchars($request->get('locality'));
|
||||
$administrative_area_level_2 = htmlspecialchars($request->get('administrative_area_level_2'));
|
||||
$administrative_area_level_1 = htmlspecialchars($request->get('administrative_area_level_1'));
|
||||
$country = htmlspecialchars($request->get('country'));
|
||||
$postal_code = htmlspecialchars($request->get('postal_code'));
|
||||
$formatted_address = str_replace('"', '', $request->get('formatted_address'));
|
||||
$lat = stripslashes($request->get('lat'));
|
||||
$lng = stripslashes($request->get('lng'));
|
||||
|
||||
//
|
||||
|
||||
$newLinkedin = htmlspecialchars($request->get('linkedin'));
|
||||
$newTwitter = htmlspecialchars($request->get('twitter'));
|
||||
$newWebsite = htmlspecialchars($request->get('website'));
|
||||
@@ -179,6 +196,26 @@ class SecurityController extends FOSRestController
|
||||
$talent->setLinkedin($newLinkedin);
|
||||
$talent->setTwitter($newTwitter);
|
||||
$talent->setTitleTalent($titleTalent);
|
||||
$array = Array ();
|
||||
|
||||
// \"$formatted_address
|
||||
if($formatted_address!=""){
|
||||
$array[] = Array (
|
||||
"street_number" => $street_number,
|
||||
"route" => $route,
|
||||
"administrative_area_level_2" => $administrative_area_level_2,
|
||||
"administrative_area_level_1" => $administrative_area_level_1,
|
||||
"country" => $country,
|
||||
"locality" => $locality,
|
||||
"postal_code" => $postal_code,
|
||||
"formatted_address" => $formatted_address,
|
||||
"lat" => stripslashes($lat),
|
||||
"lng" => stripslashes($lng)
|
||||
);
|
||||
|
||||
$usr->setGeoloc($array);
|
||||
}
|
||||
|
||||
$talent->setPhoneTalent($phoneTalent);
|
||||
//$talent->setPhoneTalent($phoneTalent);
|
||||
$billing = array(
|
||||
@@ -193,7 +230,7 @@ class SecurityController extends FOSRestController
|
||||
|
||||
$companyManager->updateTalent($usr);
|
||||
|
||||
$status = array('status' => "success");
|
||||
$status = array('status' => "success!!!!!!!!!!!!!!!!!!");
|
||||
}
|
||||
} else {
|
||||
$status = array('status' => "failure", 'message' => "Vous n'êtes pas connecté.");
|
||||
|
||||
@@ -17,6 +17,12 @@ use Symfony\Bundle\FrameworkBundle\Controller\Controller;
|
||||
use Symfony\Component\HttpFoundation\JsonResponse;
|
||||
use Symfony\Component\HttpFoundation\Request;
|
||||
use Symfony\Component\HttpFoundation\Session\Session;
|
||||
//MAILJET
|
||||
use AppBundle\Entity\Mailjet;
|
||||
// use AppBundle\Entity\Response;
|
||||
use AppBundle\Entity\Resources;
|
||||
use AppBundle\Entity\Config;
|
||||
use AppBundle\Entity\Client;
|
||||
|
||||
class CompanyController extends Controller
|
||||
{
|
||||
@@ -30,9 +36,27 @@ class CompanyController extends Controller
|
||||
$stats = $this->get("app.stats_manager");
|
||||
$em = $this->getDoctrine()->getManager();
|
||||
$ads = $em->getRepository('AppBundle:Ad')->findBy(array('company' => $this->getUser()->getCompany()));
|
||||
$arrayDate['dateBegin'] = new \DateTime('now -7 Day');
|
||||
$arrayDate['dateEnd'] = new \DateTime('now');
|
||||
$records7days = $stats->getCompanyDashboard($this->getUser()->getCompany()->getId(), $arrayDate);
|
||||
//dump($records7days);
|
||||
$arrayDate['dateBegin'] = new \DateTime('now -30 Day');
|
||||
$records30days = $stats->getCompanyDashboard($this->getUser()->getCompany()->getId(), $arrayDate);
|
||||
//dump($records30days);
|
||||
$records = $stats->getCompanyDashboard($this->getUser()->getCompany()->getId(), null);
|
||||
//dump($records);
|
||||
$answersSended = $em->getRepository('AppBundle:Answer')->getAnswerByCompanyStatus($this->getUser()->getCompany()->getId(), 'SENDED');
|
||||
$answersDraft = $em->getRepository('AppBundle:Answer')->getAnswerByCompanyStatus($this->getUser()->getCompany()->getId(), 'DRAFT');
|
||||
$nbAnswersSended =count($answersSended);
|
||||
$nbAnswersDraft =count($answersDraft);
|
||||
|
||||
return $this->render('company/dashboard.html.twig', [
|
||||
'ads' => $ads,
|
||||
'records7days' => $records7days,
|
||||
'records30days' => $records30days,
|
||||
'records' => $records,
|
||||
'nbAnswersSended' => $nbAnswersSended,
|
||||
'nbAnswersDraft' => $nbAnswersDraft,
|
||||
'arrayByAds' => $records['arrayByAds'],
|
||||
]);
|
||||
}
|
||||
@@ -211,27 +235,68 @@ class CompanyController extends Controller
|
||||
// $user,
|
||||
// 'contact_default'
|
||||
// );
|
||||
$message=$company->getBrandName()." vous invite à rejoindre la plateforme de recrutement vidéo Talents Tube.<br/>
|
||||
$mj = new Client($this->getParameter('mailjet_public'), $this->getParameter('mailjet_private'));
|
||||
|
||||
$contactMail = $user->getEmail();
|
||||
// if ($this->container->get( 'kernel' )->getEnvironment() == "dev") {
|
||||
// $contactMail = "l.laniau@talentstube.com";
|
||||
// }
|
||||
$body = [
|
||||
'FromEmail' => "noreply@talentstube.io",
|
||||
'FromName' => "Talents Tube",
|
||||
'Subject' => "Rejoignez l’espace recruteur ".$company->getBrandName()." sur Talents Tube
|
||||
" ,
|
||||
'MJ-TemplateID' =>2183741 ,
|
||||
'MJ-TemplateLanguage' => true,
|
||||
'Recipients' => [
|
||||
[
|
||||
'Email' => $contactMail,
|
||||
'Vars' => [
|
||||
'entreprise' => $company->getBrandName(),
|
||||
'emailNouvelUtilisateur' => $user->getEmail(),
|
||||
'mdpNouvelUtilisateur' => $form["password"]->getData(),
|
||||
|
||||
]
|
||||
]
|
||||
]
|
||||
];
|
||||
$response = $mj->post(Resources::$Email, ['body' => $body]);
|
||||
$response->success() && var_dump($response->getData());
|
||||
// $message=$company->getBrandName()." vous invite à rejoindre la plateforme de recrutement vidéo Talents Tube.<br/>
|
||||
|
||||
Votre identifiant : ".$user->getEmail()."<br/>
|
||||
Votre mot de passe : ".$form["password"]->getData()."<br/>
|
||||
(Vous pourrez réinitialiser votre mot de passe en cliquant <a href='https://recruteur.talentstube.com/resetting/request' target='_blank'>**ici**</a><br/>
|
||||
<br/>
|
||||
<a href='https://recruteur.talentstube.com' target='_blank'>[Rejoindre l'équipe]</a> <br/>";
|
||||
$plainView = $this->renderView('email/contact_default.html.twig', array(
|
||||
'message' => $message,
|
||||
'type' => 'html'
|
||||
));
|
||||
$body ="";
|
||||
$email = \Swift_Message::newInstance()
|
||||
->setSubject("Rejoignez l'équipe ".$company->getBrandName()." sur Talents Tube." )
|
||||
->setFrom($this->getParameter('mailer_user'))
|
||||
->setReplyTo($this->getParameter('mailer_user'))
|
||||
->setTo($user->getEmail())
|
||||
->setBody($plainView, 'text/html')
|
||||
// ->addPart($plainView, 'text/plain')
|
||||
;
|
||||
$retour = $this->get('mailer')->send($email);
|
||||
// Votre identifiant : ".$user->getEmail()."<br/>
|
||||
// Votre mot de passe : ".$form["password"]->getData()."<br/>
|
||||
// (Vous pourrez réinitialiser votre mot de passe en cliquant <a href='https://recruteur.talentstube.com/resetting/request' target='_blank'>**ici**</a><br/>
|
||||
// <br/>
|
||||
// <a href='https://recruteur.talentstube.com' target='_blank'>[Rejoindre l'équipe]</a> <br/>";
|
||||
// $plainView = $this->renderView('email/contact_default.html.twig', array(
|
||||
// 'message' => $message,
|
||||
// 'type' => 'html'
|
||||
// ));
|
||||
// //$body ="";
|
||||
// $mj = new Client('355697fac93fca865660734b4fdffaeb', 'ddecf75321ca89c09e561857b13534c8');
|
||||
// $body = [
|
||||
// 'FromEmail' => $this->getParameter('mailer_user'),
|
||||
// 'FromName' => "Talents Tube",
|
||||
// 'Subject' => "Rejoignez l'équipe ".$company->getBrandName()." sur Talents Tube.",
|
||||
// //'Text-part' => "Dear passenger, welcome to Mailjet! May the delivery force be with you!",
|
||||
// 'Html-part' => $plainView,
|
||||
// 'Recipients' => [
|
||||
// ['Email' => $user->getEmail()]
|
||||
// ]
|
||||
// ];
|
||||
// $response = $mj->post(Resources::$Email, ['body' => $body]);
|
||||
// $response->success() && var_dump($response->getData());
|
||||
|
||||
// $email = \Swift_Message::newInstance()
|
||||
// ->setSubject("Rejoignez l'équipe ".$company->getBrandName()." sur Talents Tube." )
|
||||
// ->setFrom($this->getParameter('mailer_user'))
|
||||
// ->setReplyTo($this->getParameter('mailer_user'))
|
||||
// ->setTo($user->getEmail())
|
||||
// ->setBody($plainView, 'text/html')
|
||||
// // ->addPart($plainView, 'text/plain')
|
||||
// ;
|
||||
// $retour = $this->get('mailer')->send($email);
|
||||
//var_dump($mailManager);
|
||||
return $this->redirectToRoute('users');
|
||||
}else{
|
||||
|
||||
@@ -6,9 +6,16 @@ use Symfony\Bundle\FrameworkBundle\Controller\Controller;
|
||||
use Symfony\Component\HttpFoundation\Request;
|
||||
use Symfony\Component\Security\Core\Exception\AuthenticationException;
|
||||
use Symfony\Component\Security\Core\Security;
|
||||
use AppBundle\Entity\Mailjet;
|
||||
use AppBundle\Entity\Response;
|
||||
use AppBundle\Entity\Resources;
|
||||
use AppBundle\Entity\Config;
|
||||
use AppBundle\Entity\Client;
|
||||
use Symfony\Component\HttpFoundation\Session\SessionInterface;
|
||||
|
||||
class DefaultController extends Controller
|
||||
{
|
||||
|
||||
/**
|
||||
* @Route("/indexV1", name="homepageV1")
|
||||
*/
|
||||
@@ -69,7 +76,34 @@ class DefaultController extends Controller
|
||||
*/
|
||||
public function homepagev2Action(Request $request)
|
||||
{
|
||||
//$em = $this->getDoctrine()->getManager();
|
||||
//US-468
|
||||
$session = $request->getSession();
|
||||
$arrayDate['dateBegin'] = new \DateTime('now -1 Month');
|
||||
$arrayDate['dateEnd'] = new \DateTime('now');
|
||||
setlocale(LC_ALL, 'fr_FR.utf-8');
|
||||
$stats = $this->get("app.stats_manager");
|
||||
// $records = $stats->getCompanyDashboard(21247, $arrayDate);
|
||||
// dump($records);
|
||||
//US444
|
||||
// $mj = new Client('805b8adce80bc6aa9422ddff20bb4171', 'f3bce955f21bc9456d65245c50e8c512');
|
||||
// $body = [
|
||||
// 'FromEmail' => "l.laniau@talentstube.com",
|
||||
// 'FromName' => "Mailjet Pilot",
|
||||
// 'Subject' => "Your email flight plan!",
|
||||
// 'MJ-TemplateID' =>2087555 ,
|
||||
// 'MJ-TemplateLanguage' => true,
|
||||
// 'Recipients' => [
|
||||
// ['Email' => "l.laniau@talentstube.com", 'Vars' => ['lien' => 'www.talentstube.com']]
|
||||
// ]
|
||||
// ];
|
||||
// $response = $mj->post(Resources::$Email, ['body' => $body]);
|
||||
// $response->success() && var_dump($response->getData());
|
||||
// dump($response);
|
||||
//FIN US444
|
||||
|
||||
|
||||
|
||||
//$em = $this->getDoctrine()->getManager();
|
||||
// $ads = $em->getRepository('AppBundle:Ad')->findBy(array("status" => "PUBLISHED", "emphasis" => true, "isPromoted" => false), array('emphasisOrder' => 'DESC'));
|
||||
// if (!$ads) {
|
||||
// $ads = $em->getRepository('AppBundle:Ad')->findBy(array("status" => "PUBLISHED", "isPromoted" => false), array('id' => 'DESC'));
|
||||
@@ -104,21 +138,27 @@ class DefaultController extends Controller
|
||||
// foreach ($territories as $t) {
|
||||
// $mediaManager->getThumbnails($t);
|
||||
// }
|
||||
|
||||
//dump($this->container->get( 'kernel' )->getEnvironment());
|
||||
// $form = $this->createForm(AdSearchType::class);
|
||||
$params = $this->getParams($request);
|
||||
$usename = $params["lastUsername"];
|
||||
$csrfToken = $params["csrfToken"];
|
||||
$error = $params["error"];
|
||||
$destination_login = "admin/dashboard";
|
||||
|
||||
$erreur = false;
|
||||
if($request->query->get('erreur')){
|
||||
$erreur = $request->query->get('erreur');
|
||||
}
|
||||
//$mj = new \Mailjet\Client('805b8adce80bc6aa9422ddff20bb4171', 'f3bce955f21bc9456d65245c50e8c512');
|
||||
//dump($mj);
|
||||
//var_dump($mailManager);
|
||||
return $this->render(
|
||||
'defaultv2/accueil/index.html.twig', [
|
||||
'last_username' => $usename,
|
||||
'csrf_token' => $csrfToken,
|
||||
'error' => $error,
|
||||
'destination_login' => $destination_login
|
||||
'destination_login' => $destination_login,
|
||||
'erreur' => $erreur
|
||||
//'ads' => $ads,
|
||||
//'companies' => $arrayCompany,
|
||||
//'talents' => $arrayTalents,
|
||||
@@ -331,17 +371,18 @@ class DefaultController extends Controller
|
||||
|
||||
return $this->redirectToRoute('admin_dashboard');
|
||||
} elseif ($user->hasRole('ROLE_TALENT')) {
|
||||
|
||||
return $this->redirectToRoute('talent_dashboard');
|
||||
return $this->redirect('https://www.talentstube.com');
|
||||
//return $this->redirectToRoute('talent_dashboard');
|
||||
} elseif ($user->hasRole('ROLE_COMPANY')) {
|
||||
|
||||
return $this->redirectToRoute('company_dashboard');
|
||||
// return $this->redirectToRoute('company_profile');
|
||||
}
|
||||
} else {
|
||||
|
||||
return $this->redirectToRoute('homepage');
|
||||
return $this->redirectToRoute('/homepage');
|
||||
}
|
||||
return $this->redirectToRoute('homepage');
|
||||
return $this->redirectToRoute('/homepage');
|
||||
|
||||
}
|
||||
|
||||
@@ -360,6 +401,31 @@ class DefaultController extends Controller
|
||||
//return $this->render('page_static/video_territoire.html.twig');
|
||||
return $this->render('page_static/accompagnement_video_territoire.html.twig');
|
||||
}
|
||||
|
||||
/**
|
||||
* @Route("/offre-emploi-originale", name="offre_emploi_originale")
|
||||
*/
|
||||
public function landingAction()
|
||||
{
|
||||
$previous="";
|
||||
if(isset($_SERVER['HTTP_REFERER'])) {
|
||||
$previous = $_SERVER['HTTP_REFERER']." / ".$_SERVER['REQUEST_URI'];
|
||||
}
|
||||
//return $this->render('page_static/marque_employeur.html.twig');
|
||||
//return $this->render('page_static/offre_emploi.html.twig');
|
||||
//return $this->render('page_static/accompagnement_video_company.html.twig');
|
||||
//return $this->render('page_static/reussir_video_company.html.twig');
|
||||
//return $this->render('page_static/accompagnement_video_talent.html.twig');
|
||||
//return $this->render('page_static/cvvideo.html.twig');
|
||||
//return $this->render('page_static/reussir_video_talent.html.twig');
|
||||
//return $this->render('page_static/video_territoire.html.twig');
|
||||
return $this->render('landing/offreEmploiOriginal.html.twig', [
|
||||
'previous' => $previous,
|
||||
|
||||
]);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @param Request $request
|
||||
*
|
||||
|
||||
@@ -14,11 +14,19 @@ use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
|
||||
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Security;
|
||||
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
|
||||
use Symfony\Component\Form\Extension\Core\Type\TextType;
|
||||
use Symfony\Component\Form\Extension\Core\Type\FileType;
|
||||
use Symfony\Component\HttpFoundation\Cookie;
|
||||
use Symfony\Component\HttpFoundation\JsonResponse;
|
||||
use Symfony\Component\HttpFoundation\Request;
|
||||
use Symfony\Component\HttpFoundation\Response;
|
||||
use Symfony\Component\HttpFoundation\Session\Session;
|
||||
use Symfony\Component\Validator\Constraints\File;
|
||||
//MAILJET
|
||||
use AppBundle\Entity\Mailjet;
|
||||
// use AppBundle\Entity\Response;
|
||||
use AppBundle\Entity\Resources;
|
||||
use AppBundle\Entity\Config;
|
||||
use AppBundle\Entity\Client;
|
||||
|
||||
class MediaController extends Controller
|
||||
{
|
||||
@@ -102,7 +110,15 @@ class MediaController extends Controller
|
||||
'medias' => $medias,
|
||||
]);
|
||||
}
|
||||
public function convertKekab($string){
|
||||
$search = array('À', 'Á', 'Â', 'Ã', 'Ä', 'Å', 'Ç', 'È', 'É', 'Ê', 'Ë', 'Ì', 'Í', 'Î', 'Ï', 'Ò', 'Ó', 'Ô', 'Õ', 'Ö', 'Ù', 'Ú', 'Û', 'Ü', 'Ý', 'à', 'á', 'â', 'ã', 'ä', 'å', 'ç', 'è', 'é', 'ê', 'ë', 'ì', 'í', 'î', 'ï', 'ð', 'ò', 'ó', 'ô', 'õ', 'ö', 'ù', 'ú', 'û', 'ü', 'ý', 'ÿ', "/");
|
||||
//Préférez str_replace à strtr car strtr travaille directement sur les octets, ce qui pose problème en UTF-8
|
||||
$replace = array('A', 'A', 'A', 'A', 'A', 'A', 'C', 'E', 'E', 'E', 'E', 'I', 'I', 'I', 'I', 'O', 'O', 'O', 'O', 'O', 'U', 'U', 'U', 'U', 'Y', 'a', 'a', 'a', 'a', 'a', 'a', 'c', 'e', 'e', 'e', 'e', 'i', 'i', 'i', 'i', 'o', 'o', 'o', 'o', 'o', 'o', 'u', 'u', 'u', 'u', 'y', 'y', "s");
|
||||
|
||||
$string = str_replace($search, $replace, $string);
|
||||
$string = strtolower (str_replace(" ", "-", $string));
|
||||
return $string;
|
||||
}
|
||||
/**
|
||||
* @Route("/media/create/{id}", name="create_media")
|
||||
* @Security("ad.getStatus() == 'DRAFT' or ad.getStatus() == 'DECLINED' or ad.getStatus() == 'TO_PUBLISH'")
|
||||
@@ -115,6 +131,7 @@ class MediaController extends Controller
|
||||
if ($ad) {
|
||||
$video = $ad->getVideo();
|
||||
}
|
||||
$message="";
|
||||
// Get Avalaible videos
|
||||
$em = $this->getDoctrine()->getManager();
|
||||
$videos = $em->getRepository('AppBundle:Media')->findBy(array('creator' => $this->getUser()));
|
||||
@@ -141,11 +158,182 @@ class MediaController extends Controller
|
||||
$em->flush();
|
||||
}
|
||||
|
||||
|
||||
$formFile = $this->createFormBuilder($video)
|
||||
->add('file1', FileType::class, [
|
||||
|
||||
'label' => false,
|
||||
// unmapped means that this field is not associated to any entity property
|
||||
'mapped' => false,
|
||||
|
||||
// make it optional so you don't have to re-upload the PDF file
|
||||
// every time you edit the Product details
|
||||
'required' => false,
|
||||
|
||||
// unmapped fields can't define their validation using annotations
|
||||
// in the associated entity, so you can use the PHP constraint classes
|
||||
'constraints' => [
|
||||
new File([
|
||||
'maxSize' => '512000k',
|
||||
'mimeTypes' => [
|
||||
'video/*',
|
||||
],
|
||||
'mimeTypesMessage' => 'Votre fichier doit être un fichier vidéo',
|
||||
])
|
||||
],
|
||||
])
|
||||
->add('file2', FileType::class, [
|
||||
'label' => false,
|
||||
|
||||
// unmapped means that this field is not associated to any entity property
|
||||
'mapped' => false,
|
||||
|
||||
// make it optional so you don't have to re-upload the PDF file
|
||||
// every time you edit the Product details
|
||||
'required' => false,
|
||||
|
||||
// unmapped fields can't define their validation using annotations
|
||||
// in the associated entity, so you can use the PHP constraint classes
|
||||
'constraints' => [
|
||||
new File([
|
||||
'maxSize' => '512000k',
|
||||
'mimeTypes' => [
|
||||
'video/*',
|
||||
],
|
||||
'mimeTypesMessage' => 'Votre fichier doit être un fichier vidéo',
|
||||
])
|
||||
],
|
||||
])
|
||||
->add('file3', FileType::class, [
|
||||
'label' => false,
|
||||
|
||||
// unmapped means that this field is not associated to any entity property
|
||||
'mapped' => false,
|
||||
|
||||
// make it optional so you don't have to re-upload the PDF file
|
||||
// every time you edit the Product details
|
||||
'required' => false,
|
||||
|
||||
// unmapped fields can't define their validation using annotations
|
||||
// in the associated entity, so you can use the PHP constraint classes
|
||||
'constraints' => [
|
||||
new File([
|
||||
'maxSize' => '512000k',
|
||||
'mimeTypes' => [
|
||||
'video/*',
|
||||
],
|
||||
'mimeTypesMessage' => 'Votre fichier doit être un fichier vidéo',
|
||||
])
|
||||
],
|
||||
])
|
||||
->getForm();
|
||||
|
||||
$formFile->handleRequest($request);
|
||||
if ($formFile->isSubmitted() && $formFile->isValid()) {
|
||||
|
||||
$file1 = $formFile->get('file1')->getData();
|
||||
$file2 = $formFile->get('file2')->getData();
|
||||
$file3 = $formFile->get('file3')->getData();
|
||||
$newFilenameWithoutExt="fichier";
|
||||
if($ad->getTitle()){
|
||||
$newFilenameWithoutExt= $this->convertKekab($ad->getTitle()." ".$ad->getId()." ");
|
||||
}
|
||||
if ($file1) {
|
||||
$originalFilename = pathinfo($file1->getClientOriginalName(), PATHINFO_FILENAME);
|
||||
// this is needed to safely include the file name as part of the URL
|
||||
|
||||
|
||||
$newFilename1 = "1-".$newFilenameWithoutExt.uniqid().'.'.$file1->guessExtension();
|
||||
|
||||
// Move the file to the directory where brochures are stored
|
||||
try {
|
||||
$file1->move(
|
||||
$this->get('kernel')->getProjectDir()."/web/uploads/videos/montage",
|
||||
$newFilename1
|
||||
);
|
||||
} catch (FileException $e) {
|
||||
// ... handle exception if something happens during file upload
|
||||
}
|
||||
|
||||
// updates the 'brochureFilename' property to store the PDF file name
|
||||
// instead of its contents
|
||||
// $product->setBrochureFilename($newFilename);
|
||||
}
|
||||
if ($file2) {
|
||||
$originalFilename = pathinfo($file2->getClientOriginalName(), PATHINFO_FILENAME);
|
||||
// this is needed to safely include the file name as part of the URL
|
||||
|
||||
$newFilename2 = "2-".$newFilenameWithoutExt.uniqid().'.'.$file2->guessExtension();
|
||||
|
||||
// Move the file to the directory where brochures are stored
|
||||
try {
|
||||
$file2->move(
|
||||
$this->get('kernel')->getProjectDir()."/web/uploads/videos/montage",
|
||||
$newFilename2
|
||||
);
|
||||
} catch (FileException $e) {
|
||||
// ... handle exception if something happens during file upload
|
||||
}
|
||||
|
||||
// updates the 'brochureFilename' property to store the PDF file name
|
||||
// instead of its contents
|
||||
// $product->setBrochureFilename($newFilename);
|
||||
}
|
||||
if ($file3) {
|
||||
$originalFilename = pathinfo($file3->getClientOriginalName(), PATHINFO_FILENAME);
|
||||
// this is needed to safely include the file name as part of the URL
|
||||
|
||||
$newFilename3 = "3-".$newFilenameWithoutExt.uniqid().'.'.$file3->guessExtension();
|
||||
|
||||
// Move the file to the directory where brochures are stored
|
||||
try {
|
||||
$file3->move(
|
||||
$this->get('kernel')->getProjectDir()."/web/uploads/videos/montage",
|
||||
$newFilename3
|
||||
);
|
||||
} catch (FileException $e) {
|
||||
// ... handle exception if something happens during file upload
|
||||
}
|
||||
|
||||
// updates the 'brochureFilename' property to store the PDF file name
|
||||
// instead of its contents
|
||||
// $product->setBrochureFilename($newFilename);
|
||||
}
|
||||
$mj = new Client($this->getParameter('mailjet_public'), $this->getParameter('mailjet_private'));
|
||||
// $link = $this->generateUrl('company_answer_show', array('id' => $answer->getId()), UrlGeneratorInterface::ABSOLUTE_URL);
|
||||
|
||||
|
||||
$body = [
|
||||
'FromEmail' => "noreply@talentstube.io",
|
||||
'FromName' => "Talents Tube",
|
||||
'Subject' => $ad->getCompany()->getBrandName()." : Nouvelles vidéos Whaouuuuu!!!",
|
||||
'MJ-TemplateID' =>2210612 ,
|
||||
'MJ-TemplateLanguage' => true,
|
||||
'Recipients' => [
|
||||
[
|
||||
'Email' => 'dev@talentstube.com',
|
||||
'Vars' => [
|
||||
'adressEmailRecruteur' => "",
|
||||
'nomEntreprise' => $ad->getCompany()->getBrandName(),
|
||||
'videoOffre1' => "https://recruteur.talentstube.com/uploads/videos/montage/".$newFilename1,
|
||||
'videoOffre2' => "https://recruteur.talentstube.com/uploads/videos/montage/".$newFilename2,
|
||||
'videoOffre3' => "https://recruteur.talentstube.com/uploads/videos/montage/".$newFilename3,
|
||||
]
|
||||
]
|
||||
]
|
||||
];
|
||||
$response = $mj->post(Resources::$Email, ['body' => $body]);
|
||||
$response->success() && var_dump($response->getData());
|
||||
$message="Talents Tube a bien reçu vos séquences vidéos. Nous vous recontacterons par email pour finaliser la publication de votre annonce.";
|
||||
}
|
||||
|
||||
return $this->render('company/createMedia.html.twig', array(
|
||||
'form' => $form->createView(),
|
||||
'formFile' => $formFile->createView(),
|
||||
'ad' => $ad,
|
||||
'video' => $video,
|
||||
'videos' => $videos,
|
||||
'message' => $message,
|
||||
));
|
||||
}
|
||||
|
||||
|
||||
@@ -148,7 +148,7 @@ class Ad
|
||||
* @var array
|
||||
*
|
||||
* @ORM\Column(name="competences", type="json_document", nullable=true, options={"jsonb":true})
|
||||
*
|
||||
* @Groups({"ad_detail", "ad_list", "answer_detail", "company_detail"})
|
||||
*/
|
||||
private $competences;
|
||||
|
||||
|
||||
@@ -0,0 +1,425 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
/*
|
||||
* Copyright (C) 2013 Mailgun
|
||||
*
|
||||
* This software may be modified and distributed under the terms
|
||||
* of the MIT license. See the LICENSE file for details.
|
||||
*/
|
||||
|
||||
namespace AppBundle\Entity;
|
||||
|
||||
class Client
|
||||
{
|
||||
const WRAPPER_VERSION = Config::WRAPPER_VERSION;
|
||||
|
||||
/**
|
||||
* connect_timeout: (float, default=2) Float describing the number of
|
||||
* seconds to wait while trying to connect to a server. Use 0 to wait
|
||||
* indefinitely (the default behavior).
|
||||
*/
|
||||
const CONNECT_TIMEOUT = 'connect_timeout';
|
||||
|
||||
/**
|
||||
* timeout: (float, default=15) Float describing the timeout of the
|
||||
* request in seconds. Use 0 to wait indefinitely (the default behavior).
|
||||
*/
|
||||
const TIMEOUT = 'timeout';
|
||||
|
||||
/**
|
||||
* proxy: (array, default=none) Array describing the proxy options used by guzzle client
|
||||
* See guzzle-http for specification.
|
||||
*/
|
||||
const PROXY = 'proxy';
|
||||
|
||||
private $apikey;
|
||||
private $apisecret;
|
||||
private $apitoken;
|
||||
private $version = Config::MAIN_VERSION;
|
||||
private $url = Config::MAIN_URL;
|
||||
private $secure = Config::SECURED;
|
||||
private $call = true;
|
||||
private $settings = [];
|
||||
private $changed = false;
|
||||
private $requestOptions = [
|
||||
self::TIMEOUT => 15,
|
||||
self::CONNECT_TIMEOUT => 2,
|
||||
];
|
||||
private $smsResources = [
|
||||
'send',
|
||||
'sms',
|
||||
'sms-send',
|
||||
];
|
||||
private $dataAction = [
|
||||
'csverror/text:csv',
|
||||
'csvdata/text:plain',
|
||||
'JSONError/application:json/LAST',
|
||||
];
|
||||
|
||||
/**
|
||||
* Client constructor requires:.
|
||||
*
|
||||
* @param string $key Mailjet API Key
|
||||
* @param string|null $secret Mailjet API Secret
|
||||
* @param bool $call performs the call or not
|
||||
* @param array $settings
|
||||
*/
|
||||
public function __construct(string $key, string $secret = null, bool $call = true, array $settings = [])
|
||||
{
|
||||
$this->setAuthentication($key, $secret, $call, $settings);
|
||||
}
|
||||
|
||||
/**
|
||||
* Trigger a POST request.
|
||||
*
|
||||
* @param array $resource Mailjet Resource/Action pair
|
||||
* @param array $args Request arguments
|
||||
* @param array $options
|
||||
* @return Response
|
||||
*/
|
||||
public function post(array $resource, array $args = [], array $options = []): Response
|
||||
{
|
||||
if (!empty($options)) {
|
||||
$this->setOptions($options, $resource);
|
||||
}
|
||||
|
||||
$result = $this->_call('POST', $resource[0], $resource[1], $args);
|
||||
|
||||
if (!empty($this->changed)) {
|
||||
$this->setSettings();
|
||||
}
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Trigger a GET request.
|
||||
*
|
||||
* @param array $resource Mailjet Resource/Action pair
|
||||
* @param array $args Request arguments
|
||||
* @param array $options
|
||||
* @return Response
|
||||
*/
|
||||
public function get(array $resource, array $args = [], array $options = []): Response
|
||||
{
|
||||
if (!empty($options)) {
|
||||
$this->setOptions($options, $resource);
|
||||
}
|
||||
|
||||
$result = $this->_call('GET', $resource[0], $resource[1], $args);
|
||||
|
||||
if (!empty($this->changed)) {
|
||||
$this->setSettings();
|
||||
}
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Trigger a POST request.
|
||||
*
|
||||
* @param array $resource Mailjet Resource/Action pair
|
||||
* @param array $args Request arguments
|
||||
* @param array $options
|
||||
* @return Response
|
||||
*/
|
||||
public function put(array $resource, array $args = [], array $options = []): Response
|
||||
{
|
||||
if (!empty($options)) {
|
||||
$this->setOptions($options, $resource);
|
||||
}
|
||||
|
||||
$result = $this->_call('PUT', $resource[0], $resource[1], $args);
|
||||
|
||||
if (!empty($this->changed)) {
|
||||
$this->setSettings();
|
||||
}
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Trigger a GET request.
|
||||
*
|
||||
* @param array $resource Mailjet Resource/Action pair
|
||||
* @param array $args Request arguments
|
||||
* @param array $options
|
||||
* @return Response
|
||||
*/
|
||||
public function delete(array $resource, array $args = [], array $options = []): Response
|
||||
{
|
||||
if (!empty($options)) {
|
||||
$this->setOptions($options, $resource);
|
||||
}
|
||||
|
||||
$result = $this->_call('DELETE', $resource[0], $resource[1], $args);
|
||||
|
||||
if (!empty($this->changed)) {
|
||||
$this->setSettings();
|
||||
}
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets if we need to use https or http protocol while using API Url.
|
||||
*
|
||||
* @param bool|mixed $bIsSecured True use https / false use http
|
||||
*
|
||||
* @return bool true if we set value false otherwise
|
||||
*/
|
||||
public function setSecureProtocol($bIsSecured = null): bool
|
||||
{
|
||||
if (\is_bool($bIsSecured)) {
|
||||
$this->secure = $bIsSecured;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set HTTP request Timeout.
|
||||
* @param int $timeout
|
||||
*/
|
||||
public function setTimeout(int $timeout): void
|
||||
{
|
||||
$this->requestOptions[self::TIMEOUT] = $timeout;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set HTTP proxy options
|
||||
* See: http://docs.guzzlephp.org/en/stable/request-options.html#proxy.
|
||||
* @param array $proxyArray
|
||||
*/
|
||||
public function setHttpProxy(array $proxyArray): void
|
||||
{
|
||||
$this->requestOptions[self::PROXY] = $proxyArray;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set HTTP connection Timeout.
|
||||
* @param int $timeout
|
||||
*/
|
||||
public function setConnectionTimeout(int $timeout): void
|
||||
{
|
||||
$this->requestOptions[self::CONNECT_TIMEOUT] = $timeout;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get HTTP request Timeout
|
||||
* $return int|null.
|
||||
*/
|
||||
public function getTimeout(): ?int
|
||||
{
|
||||
return $this->requestOptions[self::TIMEOUT];
|
||||
}
|
||||
|
||||
/**
|
||||
* Get HTTP connection Timeout
|
||||
* $return int|null.
|
||||
*/
|
||||
public function getConnectionTimeout(): ?int
|
||||
{
|
||||
return $this->requestOptions[self::CONNECT_TIMEOUT];
|
||||
}
|
||||
|
||||
/**
|
||||
* Add a HTTP request option.
|
||||
*
|
||||
* @param string $key
|
||||
* @param mixed $value
|
||||
* [IMPORTANT]Default options will be overwritten
|
||||
* if such option is provided
|
||||
*
|
||||
* @see \GuzzleHttp\RequestOptions for a list of available request options.
|
||||
*/
|
||||
public function addRequestOption(string $key, $value): void
|
||||
{
|
||||
if ((null !== $key) && (null !== $value)) {
|
||||
$this->requestOptions[$key] = $value;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get HTTP connection options
|
||||
* $return array.
|
||||
*/
|
||||
public function getRequestOptions(): array
|
||||
{
|
||||
return $this->requestOptions;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set auth.
|
||||
*
|
||||
* @param string $key
|
||||
* @param string|null $secret
|
||||
* @param bool $call
|
||||
* @param array $settings
|
||||
*/
|
||||
private function setAuthentication(string $key, string $secret, bool $call, array $settings = []): void
|
||||
{
|
||||
$isBasicAuth = $this->isBasicAuthentication($key, $secret);
|
||||
|
||||
if ($isBasicAuth) {
|
||||
$this->apikey = $key;
|
||||
$this->apisecret = $secret;
|
||||
} else {
|
||||
$this->apitoken = $key;
|
||||
$this->version = Config::SMS_VERSION;
|
||||
}
|
||||
|
||||
$this->initSettings($call, $settings);
|
||||
$this->setSettings();
|
||||
}
|
||||
|
||||
/**
|
||||
* Magic method to call a mailjet resource.
|
||||
*
|
||||
* @param string $method Http method
|
||||
* @param string $resource mailjet resource
|
||||
* @param string $action mailjet resource action
|
||||
* @param array $args Request arguments
|
||||
*
|
||||
* @return Response server response
|
||||
*/
|
||||
private function _call(string $method, string $resource, string $action, array $args): Response
|
||||
{
|
||||
$args = array_merge([
|
||||
'id' => '',
|
||||
'actionid' => '',
|
||||
'filters' => [],
|
||||
'body' => 'GET' === $method ? null : '{}',
|
||||
], array_change_key_case($args));
|
||||
|
||||
$url = $this->buildURL($resource, $action, (string) $args['id'], $args['actionid']);
|
||||
|
||||
$contentType = ('csvdata/text:plain' === $action || 'csverror/text:csv' === $action) ? 'text/plain' : 'application/json';
|
||||
|
||||
$isBasicAuth = $this->isBasicAuthentication($this->apikey, $this->apisecret);
|
||||
$auth = $isBasicAuth ? [$this->apikey, $this->apisecret] : [$this->apitoken];
|
||||
|
||||
$request = new Request(
|
||||
$auth,
|
||||
$method,
|
||||
$url,
|
||||
$args['filters'],
|
||||
$args['body'],
|
||||
$contentType,
|
||||
$this->requestOptions
|
||||
);
|
||||
|
||||
return $request->call($this->call);
|
||||
}
|
||||
|
||||
/**
|
||||
* Build the base API url depending on wether user need a secure connection
|
||||
* or not.
|
||||
*
|
||||
* @return string the API url;
|
||||
*/
|
||||
private function getApiUrl(): string
|
||||
{
|
||||
$h = true === $this->secure ? 'https' : 'http';
|
||||
|
||||
return sprintf('%s://%s/%s/', $h, $this->url, $this->version);
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks that both parameters are strings, which means
|
||||
* that basic authentication will be required.
|
||||
*
|
||||
* @param string $key
|
||||
* @param string $secret
|
||||
* @return bool flag
|
||||
*/
|
||||
private function isBasicAuthentication(string $key, string $secret): bool
|
||||
{
|
||||
return !empty($key) && !empty($secret);
|
||||
}
|
||||
|
||||
/**
|
||||
* Build the final call url without query strings.
|
||||
*
|
||||
* @param string $resource Mailjet resource
|
||||
* @param string $action Mailjet resource action
|
||||
* @param string $id mailjet resource id
|
||||
* @param string $actionid mailjet resource actionid
|
||||
*
|
||||
* @return string final call url
|
||||
*/
|
||||
private function buildURL(string $resource, string $action, string $id, string $actionid): string
|
||||
{
|
||||
$path = 'REST';
|
||||
|
||||
if (\in_array($resource, $this->smsResources, true)) {
|
||||
$path = '';
|
||||
} elseif (\in_array($action, $this->dataAction, true)) {
|
||||
$path = 'DATA';
|
||||
} elseif ('v4' === $this->version) {
|
||||
$path = '';
|
||||
}
|
||||
|
||||
$arrayFilter = [$path, $resource, $id, $action, $actionid];
|
||||
|
||||
return $this->getApiUrl().implode('/', array_filter($arrayFilter));
|
||||
}
|
||||
|
||||
/**
|
||||
* Temporary set the variables generating the url.
|
||||
*
|
||||
* @param array $options contain temporary modifications for the client
|
||||
* @param array $resource may contain the version linked to the resource
|
||||
*/
|
||||
private function setOptions(array $options, array $resource): void
|
||||
{
|
||||
$this->version = (string) ($options['version'] ?? $resource[2] ?? Config::MAIN_VERSION);
|
||||
$this->url = (string) ($options['url'] ?? Config::MAIN_URL);
|
||||
$this->secure = $options['secured'] ?? Config::SECURED;
|
||||
$this->call = $options['call'] ?? true;
|
||||
$this->changed = true;
|
||||
}
|
||||
|
||||
/**
|
||||
* set back the variables generating the url.
|
||||
*/
|
||||
private function setSettings(): void
|
||||
{
|
||||
if (!empty($this->settings['url']) && \is_string($this->settings['url'])) {
|
||||
$this->url = $this->settings['url'];
|
||||
}
|
||||
|
||||
if (!empty($this->settings['version']) && \is_string($this->settings['version'])) {
|
||||
$this->version = $this->settings['version'];
|
||||
}
|
||||
|
||||
if (isset($this->settings['call']) && \is_bool($this->settings['call'])) {
|
||||
$this->call = $this->settings['call'];
|
||||
}
|
||||
|
||||
if (isset($this->settings['secured']) && \is_bool($this->settings['secured'])) {
|
||||
$this->secure = $this->settings['secured'];
|
||||
}
|
||||
|
||||
$this->changed = false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set a backup if the variables generating the url are change during a call.
|
||||
* @param bool $call
|
||||
* @param array $settings
|
||||
*/
|
||||
private function initSettings(bool $call, array $settings = []): void
|
||||
{
|
||||
$this->settings['url'] = $settings['url'] ?? $this->url;
|
||||
$this->settings['version'] = $settings['version'] ?? $this->version;
|
||||
$this->settings['call'] = $call;
|
||||
$this->settings['secured'] = $settings['secured'] ?? $this->secure;
|
||||
|
||||
$this->changed = false;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
/*
|
||||
* Copyright (C) 2013 Mailgun
|
||||
*
|
||||
* This software may be modified and distributed under the terms
|
||||
* of the MIT license. See the LICENSE file for details.
|
||||
*/
|
||||
|
||||
namespace AppBundle\Entity;
|
||||
|
||||
class Config
|
||||
{
|
||||
const WRAPPER_VERSION = 'v2.0.0';
|
||||
const USER_AGENT = 'mailjet-apiv3-php/';
|
||||
const MAIN_VERSION = 'v3';
|
||||
const MAIN_URL = 'api.mailjet.com';
|
||||
const SECURED = true;
|
||||
const SMS_VERSION = 'v4';
|
||||
}
|
||||
@@ -0,0 +1,593 @@
|
||||
<?php
|
||||
namespace AppBundle\Entity;
|
||||
/**
|
||||
* Mailjet Public API
|
||||
*
|
||||
* @package API v0.3
|
||||
* @author Mailjet
|
||||
* @link http://api.mailjet.com/
|
||||
*
|
||||
* For PHP v >= 5.3
|
||||
*
|
||||
*/
|
||||
|
||||
class Mailjet
|
||||
{
|
||||
# Wrapper version, changed for each release
|
||||
const WRAPPER_VERSION = '1.1.0';
|
||||
|
||||
# Mailjet API version
|
||||
var $version = 'v3';
|
||||
|
||||
# Connect with https protocol
|
||||
var $secure = true;
|
||||
|
||||
# Mode debug ? 0 : none; 1 : errors only; 2 : all
|
||||
var $debug = 0;
|
||||
|
||||
# Edit with your Mailjet API keys (you can find them here : https://app.mailjet.com/account/api_keys)
|
||||
var $apiKey = '';
|
||||
var $secretKey = '';
|
||||
|
||||
// Ressources arrays
|
||||
|
||||
/*
|
||||
* Newsletter resources
|
||||
*/
|
||||
private static $_newsletterResources = array(
|
||||
"newsletterDetailContent",
|
||||
"newsletterSend",
|
||||
"newsletterSchedule",
|
||||
"newsletterTest",
|
||||
"newsletterStatus"
|
||||
);
|
||||
|
||||
/*
|
||||
* Contact resources
|
||||
* "contactManageManyContacts" not in as it is a special case.
|
||||
*/
|
||||
private static $_contactResources = array(
|
||||
"contactManageContactsLists",
|
||||
"contactGetContactsLists"
|
||||
);
|
||||
|
||||
/*
|
||||
* Contactslist resources
|
||||
*/
|
||||
private static $_contactslistResources = array (
|
||||
"contactslistManageContact",
|
||||
"contactslistManageManyContacts"
|
||||
);
|
||||
|
||||
/*
|
||||
* Template resources
|
||||
*/
|
||||
private static $_templateResources = array (
|
||||
"templateDetailContent"
|
||||
);
|
||||
|
||||
/*
|
||||
* dns resources
|
||||
*/
|
||||
private static $_dnsResources = array (
|
||||
"dnsCheck"
|
||||
);
|
||||
|
||||
# Constructor function
|
||||
public function __construct($apiKey = false, $secretKey = false, $preprod = false)
|
||||
{
|
||||
if ($apiKey) {
|
||||
$this->apiKey = $apiKey;
|
||||
}
|
||||
if ($secretKey) {
|
||||
$this->secretKey = $secretKey;
|
||||
}
|
||||
$this->apiUrl = $this->getApiUrl($preprod);
|
||||
$this->wrapperVersion = $this->readWrapperVersion();
|
||||
}
|
||||
|
||||
private function getApiUrl ($preprod)
|
||||
{
|
||||
if ($preprod)
|
||||
{
|
||||
return (($this->secure) ? 'https' : 'http') . '://api.preprod.mailjet.com/' . $this->version . '0';
|
||||
}
|
||||
else
|
||||
{
|
||||
return (($this->secure) ? 'https' : 'http') . '://api.mailjet.com/' . $this->version;
|
||||
}
|
||||
}
|
||||
|
||||
public function curl_setopt_custom_postfields($curl_handle, $postfields, $headers = null) {
|
||||
$algos = hash_algos();
|
||||
$hashAlgo = null;
|
||||
|
||||
foreach (array('sha1', 'md5') as $preferred) {
|
||||
if (in_array($preferred, $algos)) {
|
||||
$hashAlgo = $preferred;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if ($hashAlgo === null) {
|
||||
list($hashAlgo) = $algos;
|
||||
}
|
||||
|
||||
$boundary =
|
||||
'----------------------------' .
|
||||
substr(hash($hashAlgo, 'cURL-php-multiple-value-same-key-support' . microtime()), 0, 12);
|
||||
|
||||
$body = array();
|
||||
$crlf = "\r\n";
|
||||
|
||||
foreach ($postfields as $key => $value) {
|
||||
if (is_array($value)) {
|
||||
foreach ($value as $filename => $path) {
|
||||
// attachment
|
||||
if (strpos($path, '@') === 0) {
|
||||
preg_match('/^@(.*?)$/', $path, $matches);
|
||||
list($dummy, $path) = $matches;
|
||||
|
||||
if (is_int($filename)) {
|
||||
$filename = basename($path);
|
||||
}
|
||||
|
||||
$body[] = '--' . $boundary;
|
||||
$body[] = 'Content-Disposition: form-data; name="' . $key . '"; filename="' . $filename . '"';
|
||||
$body[] = 'Content-Type: application/octet-stream';
|
||||
$body[] = '';
|
||||
$body[] = file_get_contents($path);
|
||||
}
|
||||
// Array of recipients
|
||||
else if ('to' == $key || 'cc' == $key || 'bcc' == $key) {
|
||||
$body[] = '--' . $boundary;
|
||||
$body[] = 'Content-Disposition: form-data; name="' . $key . '"';
|
||||
$body[] = '';
|
||||
$body[] = trim($path);
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
$body[] = '--' . $boundary;
|
||||
$body[] = 'Content-Disposition: form-data; name="' . $key . '"';
|
||||
$body[] = '';
|
||||
$body[] = $value;
|
||||
}
|
||||
}
|
||||
|
||||
$body[] = '--' . $boundary . '--';
|
||||
$body[] = '';
|
||||
$contentType = 'multipart/form-data; boundary=' . $boundary;
|
||||
$content = join($crlf, $body);
|
||||
$contentLength = strlen($content);
|
||||
|
||||
curl_setopt($curl_handle, CURLOPT_HTTPHEADER, array(
|
||||
'Content-Length: ' . $contentLength,
|
||||
'Expect: 100-continue',
|
||||
'Content-Type: ' . $contentType,
|
||||
));
|
||||
|
||||
curl_setopt($curl_handle, CURLOPT_POSTFIELDS, $content);
|
||||
}
|
||||
|
||||
public function __call($resource, $args)
|
||||
{
|
||||
# Parameters array
|
||||
$params = (sizeof($args) > 0) ? $args[0] : array();
|
||||
|
||||
# Request method, GET by default
|
||||
if (isset($params["method"]))
|
||||
{
|
||||
$request = strtoupper($params["method"]);
|
||||
unset($params['method']);
|
||||
}
|
||||
else
|
||||
{
|
||||
$request = 'GET';
|
||||
}
|
||||
|
||||
# Request ID, empty by default
|
||||
$id = isset($params["ID"]) ? $params["ID"] : '';
|
||||
|
||||
/*
|
||||
Using SendAPI without the "to" parameter but with "cc" AND/OR "bcc"
|
||||
Our API needs the "to" parameter filled to send email
|
||||
We give it a default value with an email @example.org. See http://en.wikipedia.org/wiki/Example.com
|
||||
*/
|
||||
if ($resource == "sendEmail" && (empty($params["to"]) && (!empty($params["cc"]) || !empty($params["bcc"])))) {
|
||||
$params["to"] = "mailjet@example.org";
|
||||
}
|
||||
|
||||
if ($id == '')
|
||||
{
|
||||
# Request Unique field, empty by default
|
||||
$unique = isset($params["unique"]) ? $params["unique"] : '';
|
||||
unset($params["unique"]);
|
||||
# Make request
|
||||
$result = $this->sendRequest($resource, $params, $request, $unique);
|
||||
}
|
||||
else
|
||||
{
|
||||
# Make request
|
||||
$result = $this->sendRequest($resource, $params, $request, $id);
|
||||
}
|
||||
|
||||
# Return result
|
||||
$return = ($result === true) ? $this->_response : false;
|
||||
if ($this->debug == 2 || ($this->debug == 1 && $return == false)) {
|
||||
$this->debug();
|
||||
}
|
||||
|
||||
return $return;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param string $method REST or DATA
|
||||
* @param string $resourceBase Base resource
|
||||
* @param int $resourceID Base resource ID
|
||||
* @param string $action Action on resource
|
||||
*
|
||||
* @return string Returns the call's url.
|
||||
*/
|
||||
private function makeUrl($method, $resourceBase, $resourceID, $action)
|
||||
{
|
||||
return $this->apiUrl.'/'.$method.'/'.$resourceBase.'/'.$resourceID.'/'.strtolower($action);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param string $method REST or DATA
|
||||
* @param string $resourceBase Base resource
|
||||
* @param int $resourceID Base resource ID
|
||||
* @param string $resource The whole resource, before parsing
|
||||
*
|
||||
* @return string Returns the call's url.
|
||||
*/
|
||||
private function makeUrlFromFilter($method, $resourceBase, $resourceID, $resource)
|
||||
{
|
||||
$matches = array();
|
||||
preg_match('/'.$resourceBase.'([a-zA-Z]+)/', $resource, $matches);
|
||||
|
||||
$action = $matches[1];
|
||||
return $this->makeUrl($method, $resourceBase, $resourceID, $action);
|
||||
}
|
||||
|
||||
public function requestUrlBuilder($resource, $params = array(), $request, $id)
|
||||
{
|
||||
if ($resource == "sendEmail") {
|
||||
$this->call_url = $this->apiUrl."/send/message";
|
||||
}
|
||||
else if ($resource == "send") {
|
||||
$this->call_url = $this->apiUrl."/send"; //json support for SendAPI
|
||||
}
|
||||
else if ($resource == "uploadCSVContactslistData") {
|
||||
if (!empty($params['_contactslist_id'])) {
|
||||
$contactslist_id = $params['_contactslist_id'];
|
||||
}
|
||||
else if (!empty($params['ID'])) {
|
||||
$contactslist_id = $params['ID'];
|
||||
}
|
||||
$this->call_url = $this->makeUrl('DATA', 'Contactslist', $contactslist_id, 'CSVData/text:plain'); // Was $this->call_url = $this->apiUrl."/DATA/contactslist/". $contactslist_id ."/CSVData/text:plain";
|
||||
}
|
||||
else if (($resource == "addHTMLbody") || ($resource == "getHTMLbody")) {
|
||||
if (!empty($params['_newsletter_id'])) {
|
||||
$newsletter_id = $params['_newsletter_id'];
|
||||
}
|
||||
else if (!empty($params['ID'])) {
|
||||
$newsletter_id = $params['ID'];
|
||||
}
|
||||
$this->call_url = $this->makeUrl('DATA', 'NewsLetter', $newsletter_id, 'HTML/text/html/LAST');
|
||||
}
|
||||
else if (in_array($resource, self::$_newsletterResources))
|
||||
{
|
||||
$this->call_url = $this->makeUrlFromFilter('REST', 'newsletter', $params['ID'], $resource); // Was $this->call_url = $this->apiUrl."/REST/newsletter/". $newsletter_id ."/".strtolower($action);
|
||||
}
|
||||
else if (in_array($resource, self::$_templateResources))
|
||||
{
|
||||
$this->call_url = $this->makeUrlFromFilter('REST', 'template', $params['ID'], $resource);
|
||||
}
|
||||
else if (in_array($resource, self::$_dnsResources))
|
||||
{
|
||||
$this->call_url = $this->makeUrlFromFilter('REST', 'dns', $params['ID'], $resource);
|
||||
}
|
||||
else if (in_array($resource, self::$_contactResources))
|
||||
{
|
||||
$this->call_url = $this->makeUrlFromFilter('REST', 'contact', $params['ID'], $resource); // Was $this->call_url = $this->apiUrl."/REST/contact/". $contact_id . "/".strtolower($action);
|
||||
}
|
||||
else if ($resource == "contactManageManyContacts")
|
||||
{
|
||||
$this->call_url = $this->apiUrl."/REST/contact/managemanycontacts";
|
||||
}
|
||||
else if (in_array($resource, self::$_contactslistResources))
|
||||
{
|
||||
$this->call_url = $this->makeUrlFromFilter('REST', 'contactslist', $params['ID'], $resource); // Was $this->call_url = $this->apiUrl."/REST/contactslist/". $contactslist_id . "/".strtolower($action);
|
||||
}
|
||||
else {
|
||||
$this->call_url = $this->apiUrl . '/REST/' . $resource;
|
||||
}
|
||||
|
||||
if ($request == "GET" || $request == "POST") {
|
||||
if (count($params) > 0)
|
||||
{
|
||||
$this->call_url .= '?';
|
||||
|
||||
foreach ($params as $key => $value) {
|
||||
// In a GET request, put an underscore char in front of params to avoid it being treated as a filter
|
||||
$firstChar = substr($key, 0, -(strlen($key) - 1));
|
||||
|
||||
if ($request == "GET") {
|
||||
$okFirstChar = ($firstChar != "_");
|
||||
$queryStringKey = $key;
|
||||
}
|
||||
else {
|
||||
$okFirstChar = ($firstChar == "_");
|
||||
$queryStringKey = substr($key, 1);
|
||||
}
|
||||
|
||||
if ($okFirstChar && ($key != "ID"))
|
||||
{
|
||||
$query_string[$queryStringKey] = $queryStringKey . '=' . urlencode($value);
|
||||
$this->call_url .= $query_string[$queryStringKey] . '&';
|
||||
}
|
||||
}
|
||||
|
||||
$this->call_url = substr($this->call_url, 0, -1);
|
||||
}
|
||||
}
|
||||
|
||||
if (($request == "VIEW" || $request == "DELETE" || $request == "PUT") && $resource != "addHTMLbody" && $resource != "uploadCSVContactslistData")
|
||||
{
|
||||
if ($id != '')
|
||||
{
|
||||
if ($resource == "contactslistManageManyContacts")
|
||||
{
|
||||
$this->call_url .= '/' . $params["JobID"];
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->call_url .= '/' . $id;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return $this->call_url;
|
||||
}
|
||||
|
||||
public function sendRequest($resource = false, $params = array(), $request = "GET", $id = '')
|
||||
{
|
||||
# Method
|
||||
$this->_method = $resource;
|
||||
$this->_request = $request;
|
||||
|
||||
# Build request URL
|
||||
$url = $this->requestUrlBuilder($resource, $params, $request, $id);
|
||||
|
||||
// fix bug for sort (ID+DESC), replace %2B in url by +
|
||||
$url = preg_replace('#Sort=(.+)%2B(DESC|ASC|)?#sUi', 'Sort=$1+$2', $url);
|
||||
|
||||
# Set up and execute the curl process
|
||||
$curl_handle = curl_init();
|
||||
curl_setopt($curl_handle, CURLOPT_URL, $url);
|
||||
curl_setopt($curl_handle, CURLOPT_USERAGENT, 'mailjet-api-v3-php-simple/' . $this->wrapperVersion . '; PHP v. ' . phpversion());
|
||||
curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, 1);
|
||||
curl_setopt($curl_handle, CURLOPT_SSL_VERIFYPEER, FALSE);
|
||||
curl_setopt($curl_handle, CURLOPT_SSL_VERIFYHOST, 2);
|
||||
curl_setopt($curl_handle, CURLOPT_USERPWD, $this->apiKey . ':' . $this->secretKey);
|
||||
|
||||
$this->_request_post = false;
|
||||
|
||||
if (($request == 'POST') || ($request == 'PUT')):
|
||||
curl_setopt($curl_handle, CURLOPT_POST, 1);
|
||||
|
||||
// Exclude filters from payload. See http://stackoverflow.com/questions/4260086/php-how-to-use-array-filter-to-filter-array-keys
|
||||
$paramsFiltered = array_filter(array_keys($params), function($k) {
|
||||
return substr($k, 0, 1) != '_';
|
||||
});
|
||||
$params = array_intersect_key($params, array_flip($paramsFiltered));
|
||||
|
||||
if ($this->debug == 2) {
|
||||
var_dump($params);
|
||||
}
|
||||
|
||||
if ($resource == "sendEmail") {
|
||||
$this->curl_setopt_custom_postfields($curl_handle, $params);
|
||||
}
|
||||
else if ($resource == "addHTMLbody")
|
||||
{
|
||||
curl_setopt($curl_handle, CURLOPT_POSTFIELDS, $params['html_content']);
|
||||
curl_setopt($curl_handle, CURLOPT_HTTPHEADER, array(
|
||||
'Content-Type: text/html'
|
||||
));
|
||||
}
|
||||
//
|
||||
else if ($resource == "uploadCSVContactslistData")
|
||||
{
|
||||
curl_setopt($curl_handle, CURLOPT_BINARYTRANSFER, TRUE);
|
||||
curl_setopt($curl_handle, CURLOPT_POSTFIELDS, $params['csv_content']);
|
||||
curl_setopt($curl_handle, CURLOPT_HTTPHEADER, array(
|
||||
'Content-Type: text/plain'
|
||||
));
|
||||
}
|
||||
//
|
||||
else
|
||||
{
|
||||
if ((in_array($resource, self::$_newsletterResources)) ||
|
||||
($resource == "contactManageContactsLists") ||
|
||||
($resource == "contactManageManyContacts") ||
|
||||
(in_array($resource, self::$_contactslistResources)) ||
|
||||
(in_array($resource, self::$_templateResources)) ||
|
||||
(in_array($resource, self::$_dnsResources)))
|
||||
{
|
||||
unset($params['ID']);
|
||||
}
|
||||
|
||||
$j_e = null;
|
||||
if (version_compare(phpversion(), '5.4.0', '<')) {
|
||||
$j_e = str_replace('\\/', '/', json_encode($params));
|
||||
} else {
|
||||
// 64 => unescaped_slashes
|
||||
$j_e = json_encode($params, 64);
|
||||
}
|
||||
|
||||
curl_setopt($curl_handle, CURLOPT_POSTFIELDS, $j_e);
|
||||
curl_setopt($curl_handle, CURLOPT_HTTPHEADER, array(
|
||||
'Content-Type: application/json'
|
||||
));
|
||||
}
|
||||
$this->_request_post = $params;
|
||||
endif;
|
||||
|
||||
if ($request == 'DELETE') {
|
||||
curl_setopt($curl_handle, CURLOPT_CUSTOMREQUEST, "DELETE");
|
||||
}
|
||||
|
||||
if ($request == 'PUT') {
|
||||
curl_setopt($curl_handle, CURLOPT_CUSTOMREQUEST, "PUT");
|
||||
}
|
||||
|
||||
$buffer = curl_exec($curl_handle);
|
||||
|
||||
if ($this->debug == 2) {
|
||||
var_dump($buffer);
|
||||
}
|
||||
|
||||
# Response code
|
||||
$this->_response_code = curl_getinfo($curl_handle, CURLINFO_HTTP_CODE);
|
||||
|
||||
# Close curl process
|
||||
curl_close($curl_handle);
|
||||
|
||||
# Return response
|
||||
if (($this->_response_code == 200) && ($resource == "getHTMLbody")) {
|
||||
$this->_response = $buffer;
|
||||
}
|
||||
else
|
||||
{
|
||||
/*
|
||||
* This prevents the rounding error on 32 bits systems with PHP version >= 5.4
|
||||
*/
|
||||
if (defined('JSON_BIGINT_AS_STRING'))
|
||||
{
|
||||
$this->_response = json_decode($buffer, false, 512, JSON_BIGINT_AS_STRING);
|
||||
}
|
||||
else
|
||||
{ // PHP v <= 5.3.* doens't support the fourth parameter of json_decode
|
||||
$this->_response = json_decode($buffer, false, 512);
|
||||
}
|
||||
}
|
||||
|
||||
if ($request == 'POST') {
|
||||
return ($this->_response_code == 201 || $this->_response_code == 200) ? true : false;
|
||||
}
|
||||
if ($request == 'DELETE') {
|
||||
return ($this->_response_code == 204) ? true : false;
|
||||
}
|
||||
return ($this->_response_code == 200) ? true : false;
|
||||
}
|
||||
|
||||
public function debug()
|
||||
{
|
||||
echo '<style type="text/css">';
|
||||
echo '
|
||||
#debugger {width: 100%; font-family: arial;}
|
||||
#debugger table {padding: 0; margin: 0 0 20px; width: 100%; font-size: 11px; text-align: left;border-collapse: collapse;}
|
||||
#debugger th, #debugger td {padding: 2px 4px;}
|
||||
#debugger tr.h {background: #999; color: #fff;}
|
||||
#debugger tr.Success {background:#90c306; color: #fff;}
|
||||
#debugger tr.Error {background:#c30029 ; color: #fff;}
|
||||
#debugger tr.Not-modified {background:orange ; color: #fff;}
|
||||
#debugger th {width: 20%; vertical-align:top; padding-bottom: 8px;}
|
||||
';
|
||||
echo '</style>';
|
||||
|
||||
echo '<div id="debugger">';
|
||||
|
||||
if (isset($this->_response_code)):
|
||||
if (($this->_response_code == 200) || ($this->_response_code == 201) || ($this->_response_code == 204)):
|
||||
echo '<table>';
|
||||
echo '<tr class="Success"><th>Success</th><td></td></tr>';
|
||||
echo '<tr><th>Status code</th><td>' . $this->_response_code . '</td></tr>';
|
||||
|
||||
if (isset($this->_response)):
|
||||
echo '<tr><th>Response</th><td><pre>' . utf8_decode(print_r($this->_response, 1)) . '</pre></td></tr>';
|
||||
endif;
|
||||
|
||||
echo '</table>';
|
||||
elseif ($this->_response_code == 304):
|
||||
echo '<table>';
|
||||
echo '<tr class="Not-modified"><th>Error</th><td></td></tr>';
|
||||
echo '<tr><th>Error no</th><td>' . $this->_response_code . '</td></tr>';
|
||||
echo '<tr><th>Message</th><td>Not Modified</td></tr>';
|
||||
echo '</table>';
|
||||
else:
|
||||
echo '<table>';
|
||||
echo '<tr class="Error"><th>Error</th><td></td></tr>';
|
||||
echo '<tr><th>Error no</th><td>' . $this->_response_code . '</td></tr>';
|
||||
if (isset($this->_response)):
|
||||
if (is_array($this->_response) OR is_object($this->_response)):
|
||||
echo '<tr><th>Status</th><td><pre>' . print_r($this->_response, true) . '</pre></td></tr>';
|
||||
else:
|
||||
echo '<tr><th>Status</th><td><pre>' . $this->_response . '</pre></td></tr>';
|
||||
endif;
|
||||
endif;
|
||||
echo '</table>';
|
||||
endif;
|
||||
endif;
|
||||
|
||||
$call_url = parse_url($this->call_url);
|
||||
|
||||
echo '<table>';
|
||||
echo '<tr class="h"><th>API config</th><td></td></tr>';
|
||||
echo '<tr><th>Protocole</th><td>' . $call_url['scheme'] . '</td></tr>';
|
||||
echo '<tr><th>Host</th><td>' . $call_url['host'] . '</td></tr>';
|
||||
echo '<tr><th>Version</th><td>' . $this->version . '</td></tr>';
|
||||
echo '<tr><th>Wrapper Version</th><td>' . $this->readWrapperVersion() . '</td></tr>';
|
||||
echo '</table>';
|
||||
|
||||
echo '<table>';
|
||||
echo '<tr class="h"><th>Call infos</th><td></td></tr>';
|
||||
echo '<tr><th>Resource</th><td>' . $this->_method . '</td></tr>';
|
||||
echo '<tr><th>Request type</th><td>' . $this->_request . '</td></tr>';
|
||||
echo '<tr><th>Get Arguments</th><td>';
|
||||
|
||||
if (isset($call_url['query'])) {
|
||||
$args = explode("&", $call_url['query']);
|
||||
foreach ($args as $arg) {
|
||||
$arg = explode("=", $arg);
|
||||
echo '' . $arg[0] . ' = <span style="color:#ff6e56;">' . $arg[1] . '</span><br/>';
|
||||
}
|
||||
}
|
||||
|
||||
echo '</td></tr>';
|
||||
|
||||
if ($this->_request_post) {
|
||||
echo '<tr><th>Post Arguments</th><td>';
|
||||
|
||||
foreach ($this->_request_post as $k => $v) {
|
||||
if (is_array($v))
|
||||
{
|
||||
foreach ($v as $key => $value)
|
||||
{
|
||||
echo $key . ' = <span style="color:#ff6e56;">' . $value . '</span><br/>';
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
echo $k . ' = <span style="color:#ff6e56;">' . $v . '</span><br/>';
|
||||
}
|
||||
}
|
||||
|
||||
echo '</td></tr>';
|
||||
}
|
||||
|
||||
echo '<tr><th>Call url</th><td>' . $this->call_url . '</td></tr>';
|
||||
echo '</table>';
|
||||
|
||||
echo '</div>';
|
||||
}
|
||||
|
||||
private function readWrapperVersion() {
|
||||
return Mailjet::WRAPPER_VERSION;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,189 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
/*
|
||||
* Copyright (C) 2013 Mailgun
|
||||
*
|
||||
* This software may be modified and distributed under the terms
|
||||
* of the MIT license. See the LICENSE file for details.
|
||||
*/
|
||||
|
||||
namespace AppBundle\Entity;
|
||||
|
||||
use GuzzleHttp\Client as GuzzleClient;
|
||||
use GuzzleHttp\Exception\ClientException;
|
||||
use GuzzleHttp\Exception\ServerException;
|
||||
|
||||
class Request extends GuzzleClient
|
||||
{
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
private $method;
|
||||
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
private $url;
|
||||
|
||||
/**
|
||||
* @var array
|
||||
*/
|
||||
private $filters;
|
||||
|
||||
/**
|
||||
* @var array
|
||||
*/
|
||||
private $body;
|
||||
|
||||
/**
|
||||
* @var array
|
||||
*/
|
||||
private $auth;
|
||||
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
private $type;
|
||||
|
||||
/**
|
||||
* @var array
|
||||
*/
|
||||
private $requestOptions = [];
|
||||
|
||||
/**
|
||||
* Build a new Http request.
|
||||
*
|
||||
* @param array $auth [apikey, apisecret]
|
||||
* @param string $method http method
|
||||
* @param string $url call url
|
||||
* @param array $filters Mailjet resource filters
|
||||
* @param array|null $body Mailjet resource body
|
||||
* @param string $type Request Content-type
|
||||
* @param array $requestOptions
|
||||
*/
|
||||
public function __construct(
|
||||
array $auth,
|
||||
string $method,
|
||||
string $url,
|
||||
array $filters,
|
||||
?array $body,
|
||||
string $type,
|
||||
array $requestOptions = []
|
||||
) {
|
||||
parent::__construct(['defaults' => [
|
||||
'headers' => [
|
||||
'user-agent' => Config::USER_AGENT.PHP_VERSION.'/'.Client::WRAPPER_VERSION,
|
||||
],
|
||||
]]);
|
||||
|
||||
$this->type = $type;
|
||||
$this->auth = $auth;
|
||||
$this->method = $method;
|
||||
$this->url = $url;
|
||||
$this->filters = $filters;
|
||||
$this->body = $body;
|
||||
$this->requestOptions = $requestOptions;
|
||||
}
|
||||
|
||||
/**
|
||||
* Trigger the actual call
|
||||
* TODO: DATA API.
|
||||
*
|
||||
* @param $call
|
||||
*
|
||||
* @return Response the call response
|
||||
*/
|
||||
public function call($call)
|
||||
{
|
||||
$payload = [
|
||||
'query' => $this->filters,
|
||||
('application/json' === $this->type ? 'json' : 'body') => $this->body,
|
||||
];
|
||||
|
||||
$authArgsCount = \count($this->auth);
|
||||
$headers = [
|
||||
'content-type' => $this->type,
|
||||
];
|
||||
|
||||
if ($authArgsCount > 1) {
|
||||
$payload['auth'] = $this->auth;
|
||||
} else {
|
||||
$headers['Authorization'] = 'Bearer '.$this->auth[0];
|
||||
}
|
||||
|
||||
$payload['headers'] = $headers;
|
||||
|
||||
if ((!empty($this->requestOptions)) && (\is_array($this->requestOptions))) {
|
||||
$payload = array_merge_recursive($payload, $this->requestOptions);
|
||||
}
|
||||
|
||||
$response = null;
|
||||
|
||||
if ($call) {
|
||||
try {
|
||||
$response = \call_user_func_array(
|
||||
[$this, strtolower($this->method)],
|
||||
[$this->url, $payload]
|
||||
);
|
||||
} catch (ClientException $e) {
|
||||
$response = $e->getResponse();
|
||||
} catch (ServerException $e) {
|
||||
$response = $e->getResponse();
|
||||
}
|
||||
}
|
||||
|
||||
return new Response($this, $response);
|
||||
}
|
||||
|
||||
/**
|
||||
* Filters getters.
|
||||
*
|
||||
* @return array Request filters
|
||||
*/
|
||||
public function getFilters(): array
|
||||
{
|
||||
return $this->filters;
|
||||
}
|
||||
|
||||
/**
|
||||
* Http method getter.
|
||||
*
|
||||
* @return string Request method
|
||||
*/
|
||||
public function getMethod(): string
|
||||
{
|
||||
return $this->method;
|
||||
}
|
||||
|
||||
/**
|
||||
* Call Url getter.
|
||||
*
|
||||
* @return string Request Url
|
||||
*/
|
||||
public function getUrl(): string
|
||||
{
|
||||
return $this->url;
|
||||
}
|
||||
|
||||
/**
|
||||
* Request body getter.
|
||||
*
|
||||
* @return array request body
|
||||
*/
|
||||
public function getBody(): array
|
||||
{
|
||||
return $this->body;
|
||||
}
|
||||
|
||||
/**
|
||||
* Auth getter. to discuss.
|
||||
*
|
||||
* @return array Request auth
|
||||
*/
|
||||
public function getAuth(): array
|
||||
{
|
||||
return $this->auth;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,121 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
/*
|
||||
* Copyright (C) 2013 Mailgun
|
||||
*
|
||||
* This software may be modified and distributed under the terms
|
||||
* of the MIT license. See the LICENSE file for details.
|
||||
*/
|
||||
|
||||
namespace AppBundle\Entity;
|
||||
|
||||
/**
|
||||
* PHP version 7.2.
|
||||
*
|
||||
* This is the Mailjet Resources Class
|
||||
*
|
||||
* @category Mailjet_API
|
||||
*
|
||||
* @author Guillaume Badi <gbadi@mailjet.com>
|
||||
* @license MIT https://opensource.org/licenses/MIT
|
||||
*
|
||||
* @see dev.mailjet.com
|
||||
*/
|
||||
class Resources
|
||||
{
|
||||
public static $Email = ['send', ''/*, 'v3.1'*/];
|
||||
public static $Aggregategraphstatistics = ['aggregategraphstatistics', ''];
|
||||
public static $Apikey = ['apikey', ''];
|
||||
public static $Apikeyaccess = ['apikeyaccess', ''];
|
||||
public static $Apikeytotals = ['apikeytotals', ''];
|
||||
public static $Apitoken = ['apitoken', ''];
|
||||
public static $Axtesting = ['axtesting', ''];
|
||||
public static $Batchjob = ['batchjob', ''];
|
||||
public static $BatchjobCsverror = ['batchjob', 'csverror/text:csv'];
|
||||
public static $BatchjobJsonerror = ['batchjob', 'JSONError/application:json/LAST'];
|
||||
public static $Bouncestatistics = ['bouncestatistics', ''];
|
||||
public static $Campaign = ['campaign', ''];
|
||||
public static $Campaignaggregate = ['campaignaggregate', ''];
|
||||
public static $Campaigndraft = ['campaigndraft', ''];
|
||||
public static $CampaigndraftSchedule = ['campaigndraft', 'schedule'];
|
||||
public static $CampaigndraftStatus = ['campaigndraft', 'status'];
|
||||
public static $CampaigndraftSend = ['campaigndraft', 'send'];
|
||||
public static $CampaigndraftTest = ['campaigndraft', 'test'];
|
||||
public static $CampaigndraftDetailcontent = ['campaigndraft', 'detailcontent'];
|
||||
public static $Campaigngraphstatistics = ['campaigngraphstatistics', ''];
|
||||
public static $Campaignoverview = ['campaignoverview', ''];
|
||||
public static $Campaignstatistics = ['campaignstatistics', ''];
|
||||
public static $Clickstatistics = ['clickstatistics', ''];
|
||||
public static $Contact = ['contact', ''];
|
||||
public static $ContactManagecontactslists = ['contact', 'managecontactslists'];
|
||||
public static $ContactGetcontactslists = ['contact', 'getcontactslists'];
|
||||
public static $ContactManagemanycontacts = ['contact', 'managemanycontacts'];
|
||||
public static $Contactdata = ['contactdata', ''];
|
||||
public static $Contactfilter = ['contactfilter', ''];
|
||||
public static $Contacthistorydata = ['contacthistorydata', ''];
|
||||
public static $Contactmetadata = ['contactmetadata', ''];
|
||||
public static $Contactslist = ['contactslist', ''];
|
||||
public static $ContactslistCsvdata = ['contactslist', 'csvdata/text:plain'];
|
||||
public static $ContactslistManagecontact = ['contactslist', 'ManageContact'];
|
||||
public static $ContactslistManagemanycontacts = ['contactslist', 'ManageManyContacts'];
|
||||
public static $ContactslistImportlist = ['contactslist', 'ImportList'];
|
||||
public static $Contactslistsignup = ['contactslistsignup', ''];
|
||||
public static $Contactstatistics = ['contactstatistics', ''];
|
||||
public static $Csvimport = ['csvimport', ''];
|
||||
public static $Dns = ['dns', ''];
|
||||
public static $DnsCheck = ['dns', 'check'];
|
||||
public static $Domainstatistics = ['domainstatistics', ''];
|
||||
public static $Eventcallbackurl = ['eventcallbackurl', ''];
|
||||
public static $Geostatistics = ['geostatistics', ''];
|
||||
public static $Graphstatistics = ['graphstatistics', ''];
|
||||
public static $Listrecipient = ['listrecipient', ''];
|
||||
public static $Listrecipientstatistics = ['listrecipientstatistics', ''];
|
||||
public static $Liststatistics = ['liststatistics', ''];
|
||||
public static $Message = ['message', ''];
|
||||
public static $Messagehistory = ['messagehistory', ''];
|
||||
public static $Messageinformation = ['messageinformation', ''];
|
||||
public static $Messagesentstatistics = ['messagesentstatistics', ''];
|
||||
public static $Messagestate = ['messagestate', ''];
|
||||
public static $Messagestatistics = ['messagestatistics', ''];
|
||||
public static $Metadata = ['metadata', ''];
|
||||
public static $Metasender = ['metasender', ''];
|
||||
public static $Myprofile = ['myprofile', ''];
|
||||
public static $Newsletter = ['newsletter', ''];
|
||||
public static $NewsletterSchedule = ['newsletter', 'schedule'];
|
||||
public static $NewsletterStatus = ['newsletter', 'status'];
|
||||
public static $NewsletterSend = ['newsletter', 'send'];
|
||||
public static $NewsletterTest = ['newsletter', 'test'];
|
||||
public static $NewsletterDetailcontent = ['newsletter', 'detailcontent'];
|
||||
public static $Newslettertemplate = ['newslettertemplate', ''];
|
||||
public static $Newslettertemplatecategory = ['newslettertemplatecategory', ''];
|
||||
public static $Openinformation = ['openinformation', ''];
|
||||
public static $Openstatistics = ['openstatistics', ''];
|
||||
public static $Parseroute = ['parseroute', ''];
|
||||
public static $Preferences = ['preferences', ''];
|
||||
public static $Preset = ['preset', ''];
|
||||
public static $Sender = ['sender', ''];
|
||||
public static $SenderValidate = ['sender', 'validate'];
|
||||
public static $Senderstatistics = ['senderstatistics', ''];
|
||||
public static $Template = ['template', ''];
|
||||
public static $TemplateDetailcontent = ['template', 'detailcontent'];
|
||||
public static $TemplateDetailpreviews = ['template', 'detailpreviews'];
|
||||
public static $TemplateDisplaypreview = ['template', 'displaypreview'];
|
||||
public static $TemplateDetailthumbnail = ['template', 'detailthumbnail'];
|
||||
public static $TemplateDisplaythumbnail = ['template', 'displaythumbnail'];
|
||||
public static $Toplinkclicked = ['toplinkclicked', ''];
|
||||
public static $Trigger = ['trigger', ''];
|
||||
public static $User = ['user', ''];
|
||||
public static $UserActivate = ['user', 'activate'];
|
||||
public static $Useragentstatistics = ['useragentstatistics', ''];
|
||||
public static $Widget = ['widget', ''];
|
||||
public static $Widgetcustomvalue = ['widgetcustomvalue', ''];
|
||||
public static $Statcounters = ['statcounters', ''];
|
||||
public static $StatisticsLinkclick = ['statistics', 'link-click'];
|
||||
public static $StatisticsRecipientesp = ['statistics', 'recipient-esp'];
|
||||
public static $Sms = ['sms', ''];
|
||||
public static $SmsSend = ['sms-send', ''];
|
||||
public static $SmsExport = ['sms', 'export'];
|
||||
public static $SmsCount = ['sms', 'count'];
|
||||
}
|
||||
@@ -0,0 +1,147 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
/*
|
||||
* Copyright (C) 2013 Mailgun
|
||||
*
|
||||
* This software may be modified and distributed under the terms
|
||||
* of the MIT license. See the LICENSE file for details.
|
||||
*/
|
||||
|
||||
namespace AppBundle\Entity;
|
||||
|
||||
use Psr\Http\Message\ResponseInterface;
|
||||
|
||||
class Response
|
||||
{
|
||||
/**
|
||||
* @var int
|
||||
*/
|
||||
private $status;
|
||||
|
||||
/**
|
||||
* @var bool
|
||||
*/
|
||||
private $success;
|
||||
|
||||
/**
|
||||
* @var array
|
||||
*/
|
||||
private $body = [];
|
||||
|
||||
/**
|
||||
* @var ResponseInterface
|
||||
*/
|
||||
private $rawResponse;
|
||||
|
||||
/**
|
||||
* @var Request
|
||||
*/
|
||||
private $request;
|
||||
|
||||
/**
|
||||
* Construct a Mailjet response.
|
||||
*
|
||||
* @param Request $request Mailjet actual request
|
||||
* @param ResponseInterface $response Guzzle response
|
||||
*/
|
||||
public function __construct(Request $request, ResponseInterface $response)
|
||||
{
|
||||
$this->request = $request;
|
||||
|
||||
if ($response) {
|
||||
$this->rawResponse = $response;
|
||||
$this->status = $response->getStatusCode();
|
||||
$this->body = $this->decodeBody($response->getBody()->getContents());
|
||||
$this->success = 2 === floor($this->status / 100);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Status Getter
|
||||
* return the http status code.
|
||||
*
|
||||
* @return int status
|
||||
*/
|
||||
public function getStatus()
|
||||
{
|
||||
return $this->status;
|
||||
}
|
||||
|
||||
/**
|
||||
* Status Getter
|
||||
* return the entire response array.
|
||||
*/
|
||||
public function getBody(): array
|
||||
{
|
||||
return $this->body;
|
||||
}
|
||||
|
||||
/**
|
||||
* Data Getter
|
||||
* The data returned by the mailjet call.
|
||||
*
|
||||
* @return array data
|
||||
*/
|
||||
public function getData(): array
|
||||
{
|
||||
return $this->body['Data'] ?? $this->body;
|
||||
}
|
||||
|
||||
/**
|
||||
* Count getter
|
||||
* return the resulting array size.
|
||||
*/
|
||||
public function getCount(): ?int
|
||||
{
|
||||
return $this->body['Count'] ?? null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Error Reason getter
|
||||
* return the resulting error message.
|
||||
*/
|
||||
public function getReasonPhrase(): ?string
|
||||
{
|
||||
return $this->rawResponse->getReasonPhrase();
|
||||
}
|
||||
|
||||
/**
|
||||
* Total getter
|
||||
* return the total count of all results.
|
||||
*
|
||||
* @return int|null count
|
||||
*/
|
||||
public function getTotal(): ?int
|
||||
{
|
||||
return $this->body['Total'] ?? null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Success getter.
|
||||
*
|
||||
* @return bool true is return code is 2**
|
||||
*/
|
||||
public function success(): ?bool
|
||||
{
|
||||
return $this->success;
|
||||
}
|
||||
|
||||
public function getRequest(): Request
|
||||
{
|
||||
return $this->request;
|
||||
}
|
||||
|
||||
/**
|
||||
* Decodes a mailjet string response to an object representing that response.
|
||||
*
|
||||
* @param string $body The mailjet response as string
|
||||
*
|
||||
* @return array Object representing the mailjet response
|
||||
*/
|
||||
protected function decodeBody(string $body): array
|
||||
{
|
||||
return json_decode($body, true, 512, JSON_BIGINT_AS_STRING) ?: [];
|
||||
}
|
||||
}
|
||||
@@ -80,6 +80,15 @@ class User extends BaseUser
|
||||
*/
|
||||
private $status;
|
||||
|
||||
|
||||
/**
|
||||
* @var array
|
||||
*
|
||||
* @ORM\Column(name="geoloc", type="json_document", nullable=true, options={"jsonb":true})
|
||||
* @Groups({"ad_detail", "ad_list", "answer_detail", "company_detail"})
|
||||
*/
|
||||
private $geoloc;
|
||||
|
||||
/**
|
||||
* @ORM\ManyToOne(targetEntity="AppBundle\Entity\Company", inversedBy="users", cascade={"persist"})
|
||||
*/
|
||||
@@ -377,7 +386,7 @@ class User extends BaseUser
|
||||
$zipCode = "";
|
||||
$city = "";
|
||||
$country = "";
|
||||
|
||||
$type=null;
|
||||
if($this->getCompany()->getPresentationVideo())
|
||||
{
|
||||
$pres= $this->getCompany()->getPresentationVideo()->getCdnUrl();
|
||||
@@ -407,6 +416,8 @@ class User extends BaseUser
|
||||
$linkedin="";
|
||||
$twitter="";
|
||||
if($this->getCompany()->getExtra()){
|
||||
//19/01 j'ai eneleve le initExtra de ExtraJsonTrait
|
||||
$this->getCompany()->initExtra();
|
||||
if(array_key_exists("phoneTalent", $this->getCompany()->getExtra())){
|
||||
if($this->getCompany()->getExtra()["phoneTalent"]){
|
||||
$phone= $this->getCompany()->getExtra()["phoneTalent"];
|
||||
@@ -424,6 +435,10 @@ class User extends BaseUser
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if($this->getCompany()->getType()){
|
||||
$type=$this->getCompany()->getType();
|
||||
}
|
||||
}
|
||||
|
||||
$card = array(
|
||||
@@ -443,7 +458,9 @@ class User extends BaseUser
|
||||
"zipCode" => $zipCode,
|
||||
"city" => $city,
|
||||
"country" => $country,
|
||||
"type" => $type,
|
||||
"currentJob" => $this->getCompany()->getExtra()["titleTalent"],
|
||||
"geoloc" => $this->getGeoloc(),
|
||||
"website" => $this->getCompany()->getWebsite(),
|
||||
);
|
||||
return $card;
|
||||
@@ -610,6 +627,32 @@ class User extends BaseUser
|
||||
return $this->status;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Set Geoloc.
|
||||
*
|
||||
* @param json_document|null $geoloc
|
||||
*
|
||||
* @return User
|
||||
*/
|
||||
public function setGeoloc($geoloc = null)
|
||||
{
|
||||
$this->geoloc = $geoloc;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get geoloc.
|
||||
*
|
||||
* @return json_document|null
|
||||
*/
|
||||
public function getGeoloc()
|
||||
{
|
||||
//19/01 : modif pour size et siren cote Symfony. Effet sur la web app?
|
||||
//$this->initExtra();
|
||||
return $this->geoloc;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set facebookId.
|
||||
*
|
||||
|
||||
@@ -67,6 +67,7 @@ class AdSoftType extends AbstractType
|
||||
'mapped' => false,
|
||||
'label' => 'Localisation du poste',
|
||||
'attr' => array(
|
||||
'placeholder' => 'Ex : 3 Rue Louis de Broglie, Vannes, France',
|
||||
'value' => $location_gmap,
|
||||
'class' => 'form-control'
|
||||
)
|
||||
@@ -162,7 +163,7 @@ class AdSoftType extends AbstractType
|
||||
))
|
||||
->add('nombre_heure', IntegerType::class, array(
|
||||
'mapped' => false,
|
||||
'label' => 'Temps de travail',
|
||||
'label' => "Temps de travail (Le nombre saisi correspond au nombre d'heures/semaine.)",
|
||||
'empty_data' => "0",
|
||||
'required' => false,
|
||||
'attr' => array(
|
||||
@@ -178,7 +179,7 @@ class AdSoftType extends AbstractType
|
||||
'label' => 'Possibilité de faire du Télétravail?',
|
||||
'data' => $teletravail,
|
||||
'choices' => array(
|
||||
'Occasionnel ' => 'tele_occassionel',
|
||||
'Occasionnel ' => 'tele_occasionel',
|
||||
'Partiel ' => 'tele_partiel',
|
||||
'Total' => 'tele_total',
|
||||
'Non' => 'tele_non',
|
||||
|
||||
@@ -95,7 +95,8 @@ class AdType extends AbstractType
|
||||
'label' => 'Localisation du poste',
|
||||
'attr' => array(
|
||||
'value' => $location_gmap,
|
||||
'class' => 'form-control'
|
||||
'class' => 'form-control',
|
||||
'placeholder' => 'Ex : 3 Rue Louis de Broglie, Vannes, France',
|
||||
)
|
||||
))
|
||||
->add('location', HiddenType::class, array(
|
||||
@@ -179,7 +180,7 @@ class AdType extends AbstractType
|
||||
))
|
||||
->add('nombre_heure', IntegerType::class, array(
|
||||
'mapped' => false,
|
||||
'label' => 'Temps de travail',
|
||||
'label' => "Temps de travail (Le nombre saisi correspond au nombre d'heures/semaine.)",
|
||||
'empty_data' => "0",
|
||||
'required' => false,
|
||||
'attr' => array(
|
||||
@@ -195,7 +196,7 @@ class AdType extends AbstractType
|
||||
'label' => 'Possibilité de faire du Télétravail?',
|
||||
'data' => $teletravail,
|
||||
'choices' => array(
|
||||
'Occasionnel ' => 'tele_occassionel',
|
||||
'Occasionnel ' => 'tele_occasionel',
|
||||
'Partiel ' => 'tele_partiel',
|
||||
'Total' => 'tele_total',
|
||||
'Non' => 'tele_non',
|
||||
|
||||
@@ -50,7 +50,8 @@ class AdType extends AbstractType
|
||||
'label' => 'Localisation du poste',
|
||||
'attr' => array(
|
||||
'value' => $location_gmap,
|
||||
'class' => 'form-control'
|
||||
'class' => 'form-control',
|
||||
'placeholder' => 'Ex : 3 Rue Louis de Broglie, Vannes, France',
|
||||
)
|
||||
))
|
||||
->add('location', HiddenType::class, array(
|
||||
|
||||
@@ -9,6 +9,7 @@ use Symfony\Component\Form\Extension\Core\Type\CountryType;
|
||||
use Symfony\Component\Form\Extension\Core\Type\FileType;
|
||||
use Symfony\Component\Form\Extension\Core\Type\IntegerType;
|
||||
use Symfony\Component\Form\Extension\Core\Type\TextType;
|
||||
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
|
||||
use Symfony\Component\Form\Extension\Core\Type\TextareaType;
|
||||
use Symfony\Component\Form\Extension\Core\Type\UrlType;
|
||||
use Symfony\Component\Form\FormBuilderInterface;
|
||||
@@ -36,8 +37,17 @@ class CompanyAdminType extends AbstractType
|
||||
->add('siren', TextType::class, array(
|
||||
'label' => 'profile.company.siren',
|
||||
))
|
||||
->add('size', TextType::class, array(
|
||||
// ->add('size', TextType::class, array(
|
||||
// 'label' => 'profile.company.size',
|
||||
// ))
|
||||
->add('size', ChoiceType::class, array(
|
||||
'label' => 'profile.company.size',
|
||||
'choices' => array(
|
||||
'TPE (1 à 9 salariés) ' => 1,
|
||||
'PME (10 à 249 salariés) ' => 10,
|
||||
'ETI (250 à 4 999 salariés)' =>250 ,
|
||||
'GE (à partir de 5 000 salariés)' => 5000,
|
||||
),
|
||||
))
|
||||
->add('isPrivate', CheckboxType::class, array(
|
||||
'label' => 'Page entreprise privé ( non listée en front )',
|
||||
|
||||
@@ -16,6 +16,7 @@ use Symfony\Component\Form\AbstractType;
|
||||
use Symfony\Component\Form\Extension\Core\Type\CountryType;
|
||||
use Symfony\Component\Form\Extension\Core\Type\FileType;
|
||||
use Symfony\Component\Form\Extension\Core\Type\TextType;
|
||||
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
|
||||
use Symfony\Component\Form\Extension\Core\Type\TextareaType;
|
||||
use Symfony\Component\Form\Extension\Core\Type\UrlType;
|
||||
use Symfony\Component\Form\FormBuilderInterface;
|
||||
@@ -62,12 +63,26 @@ class CompanyProfileType extends AbstractType
|
||||
'class' => 'form-control'
|
||||
)
|
||||
))
|
||||
->add('size', TextType::class, array(
|
||||
->add('size', ChoiceType::class, array(
|
||||
'label' => 'profile.company.size',
|
||||
'choices' => array(
|
||||
'TPE (1 à 9 salariés) ' => 1,
|
||||
'PME (10 à 249 salariés) ' => 10,
|
||||
'ETI (250 à 4 999 salariés)' =>250 ,
|
||||
'GE (à partir de 5 000 salariés)' => 5000,
|
||||
),
|
||||
'attr' => array(
|
||||
'class' => 'form-control'
|
||||
)
|
||||
));
|
||||
))
|
||||
// ->add('size', TextType::class, array(
|
||||
// 'label' => 'profile.company.size',
|
||||
// 'attr' => array(
|
||||
// 'class' => 'form-control'
|
||||
// )
|
||||
// ))
|
||||
;
|
||||
|
||||
// Addresses fields
|
||||
$builder
|
||||
->add('address', TextType::class, array(
|
||||
|
||||
@@ -113,6 +113,26 @@ class AnswerRepository extends AbstractRepository
|
||||
->getResult();
|
||||
}
|
||||
|
||||
public function getAnswerByCompanyStatus($id, $status)
|
||||
{
|
||||
$qb = $this
|
||||
->createQueryBuilder('a')
|
||||
->select('a')
|
||||
->where('a.ad IN (
|
||||
SELECT p.id
|
||||
FROM AppBundle:Ad p
|
||||
WHERE p.company = :id
|
||||
)')
|
||||
->setParameter(':id', $id)
|
||||
->andWhere('a.status = :status')
|
||||
->setParameter(':status', $status)
|
||||
->orderBy('a.uTime','DESC');
|
||||
|
||||
return $qb
|
||||
->getQuery()
|
||||
->getResult();
|
||||
}
|
||||
|
||||
|
||||
public function getAnswerByAdsShare( $adId)
|
||||
{
|
||||
@@ -168,12 +188,12 @@ class AnswerRepository extends AbstractRepository
|
||||
$query
|
||||
->select(['a','user'])
|
||||
->join('a.user', 'user')
|
||||
->join('a.ad', 'ad')
|
||||
->leftjoin('a.ad', 'ad')
|
||||
->leftjoin('a.video', 'video')
|
||||
->leftjoin('a.company', 'company');
|
||||
$countQuery
|
||||
->join('a.user', 'user')
|
||||
->join('a.ad', 'ad')
|
||||
->leftjoin('a.ad', 'ad')
|
||||
->leftjoin('a.video', 'video')
|
||||
->leftjoin('a.company', 'company');
|
||||
// $countQuery
|
||||
@@ -318,4 +338,26 @@ class AnswerRepository extends AbstractRepository
|
||||
"countResult" => $countResult
|
||||
);
|
||||
}
|
||||
|
||||
public function getMedias()
|
||||
{
|
||||
$qb = $this
|
||||
->createQueryBuilder('a')
|
||||
->select(['a','video'])
|
||||
->leftJoin('a.video', 'video')
|
||||
->andWhere('video.status = :status')
|
||||
->setParameter(':status', "TO_MODERATE")
|
||||
->orderBy('video.id', 'DESC');
|
||||
|
||||
|
||||
$medias = $qb->getQuery()->getResult();
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
return $medias;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,12 +2,45 @@
|
||||
|
||||
namespace AppBundle\Repository;
|
||||
|
||||
use Doctrine\ORM\EntityRepository;
|
||||
|
||||
/**
|
||||
* MediaRepository
|
||||
*
|
||||
* This class was generated by the Doctrine ORM. Add your own custom
|
||||
* repository methods below.
|
||||
*/
|
||||
class MediaRepository extends \Doctrine\ORM\EntityRepository
|
||||
class MediaRepository extends AbstractRepository
|
||||
{
|
||||
public function getMedias()
|
||||
{
|
||||
$qb = $this
|
||||
->createQueryBuilder('m')
|
||||
->andWhere('m.status = :status')
|
||||
->setParameter(':status', "TO_MODERATE")
|
||||
->orderBy('m.id', 'DESC');
|
||||
|
||||
|
||||
$medias = $qb->getQuery()->getResult();
|
||||
$rawSql = "SELECT m.id as mediaid, m.title as title, m.original_url as original_url , u.* , a.id as answerId, a.send_time as sendtime, ad.title as adTitle, c.brand_name as cTitle
|
||||
FROM media AS m
|
||||
JOIN fos_user AS u ON (u.id=m.creator_id)
|
||||
LEFT JOIN answer AS a ON (a.video_id=m.id)
|
||||
LEFT JOIN ad AS ad ON (ad.id=a.ad_id)
|
||||
LEFT JOIN company AS c ON (c.id=a.company_id)
|
||||
WHERE m.status='TO_MODERATE'
|
||||
ORDER by m.id DESC";
|
||||
|
||||
$stmt = $this->getEntityManager()->getConnection()->prepare($rawSql);
|
||||
$stmt->execute([]);
|
||||
|
||||
return $stmt->fetchAll();
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
//return $medias;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -77,8 +77,12 @@ class CompanyManager
|
||||
);
|
||||
}
|
||||
|
||||
$company->setExtra(null);
|
||||
$this->em->persist($company);
|
||||
$this->em->flush();
|
||||
$company->setExtra($extra);
|
||||
$company->upload();
|
||||
|
||||
//$company->uploadCv();
|
||||
}
|
||||
$this->em->persist($company);
|
||||
|
||||
@@ -96,12 +96,12 @@ class MailManager
|
||||
$email = \Swift_Message::newInstance()
|
||||
->setSubject($subject)
|
||||
->setFrom('noreply@talentstube.io')
|
||||
->setTo('c.leveque@talentstube.com')
|
||||
->setTo('dev@talentstube.com')
|
||||
->setBody($message, 'text/html')
|
||||
;
|
||||
if ($this->mailer->send($email)) {
|
||||
// $spool = $this->mailer->getTransport()->getSpool();
|
||||
// $spool->flushQueue($this->transport);
|
||||
// $spool = $this->mailer->getTransport()->getSpool();
|
||||
// $spool->flushQueue($this->transport);
|
||||
$message = array('success' => 200);
|
||||
} else {
|
||||
$message = array('success' => 500);
|
||||
|
||||
@@ -216,8 +216,11 @@ class MediaManager
|
||||
$message = array('success' => 200,
|
||||
'filename' => $media->getTitle(),
|
||||
'originalFilename' => $uploadedFile->getClientOriginalName(),
|
||||
'originalUrl' => $media->getOriginalUrl(),
|
||||
'thumbnails' => $media->getThumbnails(),
|
||||
'uriVimeo' => str_replace('videos', 'video', $uriVimeo),
|
||||
'mediaId' => $media->getId(),
|
||||
'heure' => date("H:i:s"),
|
||||
);
|
||||
} else {
|
||||
$message = array('success' => 500,
|
||||
|
||||
@@ -40,7 +40,7 @@ trait ExtraJsonTrait
|
||||
$extra = $this->extra;
|
||||
isset($extra['twitter']) ? $this->twitter = $extra['twitter'] : null;
|
||||
isset($extra['linkedin']) ? $this->linkedin = $extra['linkedin'] : null;
|
||||
isset($extra['size']) ? $this->size = $extra['size'] : null;
|
||||
isset($extra['size']) ? $this->size = $extra['size'] : 1;
|
||||
isset($extra['siren']) ? $this->siren = $extra['siren'] : null;
|
||||
isset($extra['phoneTalent']) ? $this->phoneTalent = $extra['phoneTalent'] : null;
|
||||
isset($extra['titleTalent']) ? $this->titleTalent = $extra['titleTalent'] : null;
|
||||
@@ -66,6 +66,8 @@ trait ExtraJsonTrait
|
||||
*/
|
||||
public function getExtra()
|
||||
{
|
||||
//19/01 : modif pour size et siren cote Symfony. Effet sur la web app?
|
||||
//$this->initExtra();
|
||||
return $this->extra;
|
||||
}
|
||||
|
||||
|
||||
@@ -35,7 +35,7 @@ abstract class AbstractFactory implements SecurityFactoryInterface
|
||||
protected $defaultSuccessHandlerOptions = [
|
||||
'always_use_default_target_path' => false,
|
||||
'default_target_path' => '/',
|
||||
'login_path' => '/login',
|
||||
'login_path' => '/',
|
||||
'target_path_parameter' => '_target_path',
|
||||
'use_referer' => false,
|
||||
];
|
||||
@@ -43,7 +43,7 @@ abstract class AbstractFactory implements SecurityFactoryInterface
|
||||
protected $defaultFailureHandlerOptions = [
|
||||
'failure_path' => null,
|
||||
'failure_forward' => false,
|
||||
'login_path' => '/login',
|
||||
'login_path' => '/?erreur=1',
|
||||
'failure_path_parameter' => '_failure_path',
|
||||
];
|
||||
|
||||
|
||||
@@ -35,4 +35,96 @@
|
||||
.font-2 {
|
||||
font-family: "Varela Round", sans-serif; }
|
||||
|
||||
.container-envoi-videos{
|
||||
width:100%;
|
||||
height:auto;
|
||||
border:1px solid #1689FB;
|
||||
border-radius:5px;
|
||||
margin-bottom:30px;
|
||||
}
|
||||
|
||||
.titre-bloc-envoi-videos{
|
||||
background-color:#1689FB;
|
||||
padding:15px;
|
||||
}
|
||||
|
||||
.image-envoi-video{
|
||||
display:inline-block;
|
||||
width:60px;
|
||||
height:60px;
|
||||
vertical-align: baseline;
|
||||
margin-right:20px;
|
||||
}
|
||||
|
||||
.texte-envoi-video{
|
||||
display:inline-block;
|
||||
}
|
||||
|
||||
.container-envoi-videos h4,.container-envoi-videos h5 {
|
||||
color:#fff;
|
||||
}
|
||||
|
||||
.container-envoi-videos h4{
|
||||
font-size:1.250em;
|
||||
}
|
||||
|
||||
.container-envoi-videos h5{
|
||||
font-size:1em;
|
||||
}
|
||||
|
||||
.contenu-bloc-envoi-videos{
|
||||
padding:15px;
|
||||
}
|
||||
|
||||
.contenu-bloc-envoi-videos p, .contenu-bloc-envoi-videos label{
|
||||
color:#000;
|
||||
font-weight: bold;
|
||||
font-size:1em;
|
||||
margin:10px 0;
|
||||
}
|
||||
|
||||
.contenu-bloc-envoi-videos button{
|
||||
display:block;
|
||||
margin :20px 0;
|
||||
}
|
||||
|
||||
.contenu-bloc-envoi-videos input{
|
||||
display:block;
|
||||
}
|
||||
|
||||
.underline{
|
||||
text-decoration : underline;
|
||||
|
||||
}
|
||||
|
||||
.text-card h3, .text-card span, .text-card h4{
|
||||
color:#fff;
|
||||
}
|
||||
|
||||
.card-background-1{
|
||||
background-color:#25D89A !important;
|
||||
border-radius:3px !important;
|
||||
padding:20px;
|
||||
min-height:180px;
|
||||
|
||||
}
|
||||
|
||||
.card-background-2{
|
||||
background-color:#1689fb !important;
|
||||
border-radius:3px !important;
|
||||
|
||||
padding:20px;
|
||||
min-height:180px;
|
||||
}
|
||||
|
||||
.card-background-3{
|
||||
background-color:#FF5A5F !important;
|
||||
border-radius:3px !important;
|
||||
padding:20px;
|
||||
min-height:180px;
|
||||
}
|
||||
|
||||
.vertical-border{
|
||||
border-right: 1px solid white;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,153 @@
|
||||
/*
|
||||
* Core Owl Carousel CSS File
|
||||
* v1.3.3
|
||||
*/
|
||||
|
||||
/* clearfix */
|
||||
.owl-carousel .owl-wrapper:after {
|
||||
content: ".";
|
||||
display: block;
|
||||
clear: both;
|
||||
visibility: hidden;
|
||||
line-height: 0;
|
||||
height: 0;
|
||||
}
|
||||
/* display none until init */
|
||||
.owl-carousel{
|
||||
display: none;
|
||||
position: relative;
|
||||
width: 100%;
|
||||
-ms-touch-action: pan-y;
|
||||
}
|
||||
.owl-carousel .owl-wrapper{
|
||||
display: none;
|
||||
position: relative;
|
||||
-webkit-transform: translate3d(0px, 0px, 0px);
|
||||
}
|
||||
.owl-carousel .owl-wrapper-outer{
|
||||
overflow: hidden;
|
||||
position: relative;
|
||||
width: 100%;
|
||||
}
|
||||
.owl-carousel .owl-wrapper-outer.autoHeight{
|
||||
-webkit-transition: height 500ms ease-in-out;
|
||||
-moz-transition: height 500ms ease-in-out;
|
||||
-ms-transition: height 500ms ease-in-out;
|
||||
-o-transition: height 500ms ease-in-out;
|
||||
transition: height 500ms ease-in-out;
|
||||
}
|
||||
|
||||
.owl-carousel .owl-item{
|
||||
float: left;
|
||||
}
|
||||
.owl-controls .owl-page,
|
||||
.owl-controls .owl-buttons div{
|
||||
cursor: pointer;
|
||||
}
|
||||
.owl-controls {
|
||||
-webkit-user-select: none;
|
||||
-khtml-user-select: none;
|
||||
-moz-user-select: none;
|
||||
-ms-user-select: none;
|
||||
user-select: none;
|
||||
-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
|
||||
}
|
||||
|
||||
/* mouse grab icon */
|
||||
.grabbing {
|
||||
cursor:url(../img/grabbing.png) 8 8, move;
|
||||
}
|
||||
|
||||
/* fix */
|
||||
.owl-carousel .owl-wrapper,
|
||||
.owl-carousel .owl-item{
|
||||
-webkit-backface-visibility: hidden;
|
||||
-moz-backface-visibility: hidden;
|
||||
-ms-backface-visibility: hidden;
|
||||
-webkit-transform: translate3d(0,0,0);
|
||||
-moz-transform: translate3d(0,0,0);
|
||||
-ms-transform: translate3d(0,0,0);
|
||||
}
|
||||
|
||||
/*
|
||||
* Owl Carousel Owl Demo Theme
|
||||
* v1.3.3
|
||||
*/
|
||||
|
||||
.owl-theme .owl-controls{
|
||||
margin-top: 10px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
/* Styling Next and Prev buttons */
|
||||
|
||||
.owl-theme .owl-controls .owl-buttons div{
|
||||
color: #FFF;
|
||||
display: inline-block;
|
||||
zoom: 1;
|
||||
*display: inline;/*IE7 life-saver */
|
||||
margin: 5px;
|
||||
padding: 3px 10px;
|
||||
font-size: 12px;
|
||||
-webkit-border-radius: 30px;
|
||||
-moz-border-radius: 30px;
|
||||
border-radius: 30px;
|
||||
background: #869791;
|
||||
filter: Alpha(Opacity=50);/*IE7 fix*/
|
||||
opacity: 0.5;
|
||||
}
|
||||
/* Clickable class fix problem with hover on touch devices */
|
||||
/* Use it for non-touch hover action */
|
||||
.owl-theme .owl-controls.clickable .owl-buttons div:hover{
|
||||
filter: Alpha(Opacity=100);/*IE7 fix*/
|
||||
opacity: 1;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
/* Styling Pagination*/
|
||||
|
||||
.owl-theme .owl-controls .owl-page{
|
||||
display: inline-block;
|
||||
zoom: 1;
|
||||
*display: inline;/*IE7 life-saver */
|
||||
}
|
||||
.owl-theme .owl-controls .owl-page span{
|
||||
display: block;
|
||||
width: 12px;
|
||||
height: 12px;
|
||||
margin: 5px 7px;
|
||||
filter: Alpha(Opacity=50);/*IE7 fix*/
|
||||
opacity: 0.5;
|
||||
-webkit-border-radius: 20px;
|
||||
-moz-border-radius: 20px;
|
||||
border-radius: 20px;
|
||||
background: #FF5A5F;
|
||||
}
|
||||
|
||||
.owl-theme .owl-controls .owl-page.active span,
|
||||
.owl-theme .owl-controls.clickable .owl-page:hover span{
|
||||
filter: Alpha(Opacity=100);/*IE7 fix*/
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
/* If PaginationNumbers is true */
|
||||
|
||||
.owl-theme .owl-controls .owl-page span.owl-numbers{
|
||||
height: auto;
|
||||
width: auto;
|
||||
color: #FFF;
|
||||
padding: 2px 10px;
|
||||
font-size: 12px;
|
||||
-webkit-border-radius: 30px;
|
||||
-moz-border-radius: 30px;
|
||||
border-radius: 30px;
|
||||
}
|
||||
|
||||
.screenshot-slider .item{
|
||||
margin: 3px;
|
||||
}
|
||||
.screenshot-slider .item img{
|
||||
display: block;
|
||||
width: 100%;
|
||||
height: auto;
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
<svg id="TalentsTube_logo-blanc" xmlns="http://www.w3.org/2000/svg" width="127.874" height="28.875" viewBox="0 0 127.874 28.875">
|
||||
<g id="Groupe_7850" data-name="Groupe 7850" transform="translate(0 7.042)">
|
||||
<path id="Tracé_210" data-name="Tracé 210" d="M137.664,221v-4.5h-.33a.834.834,0,1,1,0-1.668h.33v-1.459a.982.982,0,0,1,1.963,0v1.459h1.546a.834.834,0,1,1,0,1.668h-1.546v4.187a.925.925,0,0,0,1.06,1.06,4.521,4.521,0,0,0,.486-.052.83.83,0,0,1,.834.817.866.866,0,0,1-.521.764,4.073,4.073,0,0,1-1.338.226C138.672,223.519,137.664,222.894,137.664,221Z" transform="translate(-136.5 -211.479)" fill="#fff"/>
|
||||
<path id="Tracé_211" data-name="Tracé 211" d="M177.7,231.9v-.035c0-1.842,1.442-2.745,3.527-2.745a7.16,7.16,0,0,1,2.293.347v-.208c0-1.216-.747-1.859-2.12-1.859a4.786,4.786,0,0,0-1.894.347,1.07,1.07,0,0,1-.313.052.819.819,0,0,1-.834-.817.879.879,0,0,1,.539-.782,7.234,7.234,0,0,1,2.745-.5,3.833,3.833,0,0,1,2.832.956,3.572,3.572,0,0,1,.921,2.641v4.2a.928.928,0,0,1-.956.938.879.879,0,0,1-.956-.834v-.33a3.494,3.494,0,0,1-2.78,1.251A2.7,2.7,0,0,1,177.7,231.9Zm5.872-.625v-.591a5.5,5.5,0,0,0-1.946-.347c-1.268,0-2.015.539-2.015,1.425v.035c0,.834.73,1.3,1.668,1.3C182.582,233.119,183.572,232.372,183.572,231.277Z" transform="translate(-170.542 -222.468)" fill="#fff"/>
|
||||
<path id="Tracé_212" data-name="Tracé 212" d="M236.8,208.073a.96.96,0,0,1,.973-.973.975.975,0,0,1,.99.973v10.042a.982.982,0,0,1-1.963,0Z" transform="translate(-219.374 -207.1)" fill="#fff"/>
|
||||
<path id="Tracé_213" data-name="Tracé 213" d="M264.4,234.313a4.262,4.262,0,0,1-4.4-4.43v-.035a4.238,4.238,0,0,1,4.17-4.448,4.043,4.043,0,0,1,4.066,4.2.909.909,0,0,1-.921.938h-5.351a2.391,2.391,0,0,0,2.467,2.172,3.02,3.02,0,0,0,2.015-.747.686.686,0,0,1,.5-.174.783.783,0,0,1,.782.8.851.851,0,0,1-.261.591A4.35,4.35,0,0,1,264.4,234.313Zm1.946-5.073a2.215,2.215,0,0,0-2.172-2.259,2.327,2.327,0,0,0-2.224,2.259Z" transform="translate(-238.543 -222.221)" fill="#fff"/>
|
||||
<path id="Tracé_214" data-name="Tracé 214" d="M319,226.377a.965.965,0,0,1,.973-.99.979.979,0,0,1,.99.99v.417a3.091,3.091,0,0,1,2.676-1.494c1.929,0,3.04,1.3,3.04,3.266v4.569a.95.95,0,0,1-.973.973.965.965,0,0,1-.99-.973v-3.961c0-1.32-.66-2.085-1.824-2.085a1.908,1.908,0,0,0-1.928,2.12v3.927a.982.982,0,0,1-1.963,0Z" transform="translate(-287.292 -222.138)" fill="#fff"/>
|
||||
<path id="Tracé_215" data-name="Tracé 215" d="M373.564,221v-4.5h-.33a.834.834,0,0,1,0-1.668h.33v-1.459a.982.982,0,0,1,1.963,0v1.459h1.546a.834.834,0,1,1,0,1.668h-1.546v4.187a.925.925,0,0,0,1.06,1.06,4.522,4.522,0,0,0,.486-.052.83.83,0,0,1,.834.817.866.866,0,0,1-.521.764,4.073,4.073,0,0,1-1.338.226A2.181,2.181,0,0,1,373.564,221Z" transform="translate(-331.415 -211.479)" fill="#fff"/>
|
||||
<path id="Tracé_216" data-name="Tracé 216" d="M411.465,233.336a.748.748,0,0,1-.365-.678.8.8,0,0,1,.8-.8.787.787,0,0,1,.417.122,4.51,4.51,0,0,0,2.467.834c.834,0,1.32-.348,1.32-.921v-.052c0-.66-.9-.886-1.911-1.2-1.268-.347-2.676-.869-2.676-2.5v-.035c0-1.616,1.338-2.606,3.04-2.606a5.969,5.969,0,0,1,2.693.695.814.814,0,0,1,.469.747.8.8,0,0,1-.817.8.7.7,0,0,1-.382-.1,4.8,4.8,0,0,0-2.015-.591c-.764,0-1.2.347-1.2.834v.035c0,.625.921.886,1.929,1.216,1.251.382,2.658.956,2.658,2.484v.035c0,1.79-1.39,2.693-3.179,2.693A5.719,5.719,0,0,1,411.465,233.336Z" transform="translate(-363.391 -222.303)" fill="#fff"/>
|
||||
<path id="Tracé_217" data-name="Tracé 217" d="M486.464,221v-4.5h-.33a.834.834,0,0,1,0-1.668h.33v-1.459a.982.982,0,0,1,1.963,0v1.459h1.546a.834.834,0,1,1,0,1.668h-1.546v4.187a.925.925,0,0,0,1.06,1.06,4.521,4.521,0,0,0,.486-.052.83.83,0,0,1,.834.817.866.866,0,0,1-.521.764,4.074,4.074,0,0,1-1.338.226A2.181,2.181,0,0,1,486.464,221Z" transform="translate(-424.699 -211.479)" fill="#fff"/>
|
||||
<path id="Tracé_218" data-name="Tracé 218" d="M535.1,233.549a.99.99,0,0,1-1.981,0v-.434a3.067,3.067,0,0,1-2.676,1.512c-1.929,0-3.04-1.3-3.04-3.284V226.79a.982.982,0,1,1,1.963,0v3.961c0,1.32.66,2.068,1.824,2.068a1.893,1.893,0,0,0,1.929-2.1V226.79a.979.979,0,0,1,.99-.99.99.99,0,0,1,.99.99Z" transform="translate(-459.485 -222.551)" fill="#fff"/>
|
||||
<path id="Tracé_219" data-name="Tracé 219" d="M585.8,208.073a.95.95,0,0,1,.973-.973.965.965,0,0,1,.99.973v3.8a3.432,3.432,0,0,1,2.919-1.6c2.015,0,3.961,1.581,3.961,4.43v.035a4.086,4.086,0,0,1-3.961,4.43,3.5,3.5,0,0,1-2.919-1.512v.434a.982.982,0,0,1-1.963,0Zm6.845,6.654v-.035a2.522,2.522,0,0,0-2.45-2.728,2.569,2.569,0,0,0-2.484,2.728v.035a2.569,2.569,0,0,0,2.484,2.728A2.492,2.492,0,0,0,592.645,214.727Z" transform="translate(-507.738 -207.1)" fill="#fff"/>
|
||||
<path id="Tracé_220" data-name="Tracé 220" d="M649.9,234.313a4.262,4.262,0,0,1-4.4-4.43v-.035a4.238,4.238,0,0,1,4.17-4.448,4.043,4.043,0,0,1,4.065,4.2.909.909,0,0,1-.921.938h-5.351a2.391,2.391,0,0,0,2.467,2.172,3.02,3.02,0,0,0,2.015-.747.685.685,0,0,1,.5-.174.783.783,0,0,1,.782.8.851.851,0,0,1-.261.591A4.38,4.38,0,0,1,649.9,234.313Zm1.946-5.073a2.215,2.215,0,0,0-2.172-2.259,2.327,2.327,0,0,0-2.224,2.259Z" transform="translate(-557.066 -222.221)" fill="#fff"/>
|
||||
</g>
|
||||
<g id="Groupe_7851" data-name="Groupe 7851" transform="translate(103.478 0)">
|
||||
<circle id="Ellipse_105" data-name="Ellipse 105" cx="3.266" cy="3.266" r="3.266" transform="matrix(0.384, -0.924, 0.924, 0.384, 9.466, 20.582)" fill="#fff"/>
|
||||
<circle id="Ellipse_106" data-name="Ellipse 106" cx="3.266" cy="3.266" r="3.266" transform="matrix(0.384, -0.924, 0.924, 0.384, 9.471, 11.874)" fill="#fff"/>
|
||||
<circle id="Ellipse_107" data-name="Ellipse 107" cx="3.927" cy="3.927" r="3.927" transform="matrix(0.384, -0.924, 0.924, 0.384, 0.009, 16.56)" fill="#fff"/>
|
||||
<circle id="Ellipse_108" data-name="Ellipse 108" cx="3.927" cy="3.927" r="3.927" transform="matrix(0.384, -0.924, 0.924, 0.384, 0.002, 7.252)" fill="#fff"/>
|
||||
<circle id="Ellipse_109" data-name="Ellipse 109" cx="3.927" cy="3.927" r="3.927" transform="matrix(0.384, -0.924, 0.924, 0.384, 0, 25.862)" fill="#fff"/>
|
||||
<circle id="Ellipse_110" data-name="Ellipse 110" cx="2.728" cy="2.728" r="2.728" transform="matrix(0.384, -0.924, 0.924, 0.384, 17.264, 15.911)" fill="#fff"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 5.9 KiB |
@@ -0,0 +1,23 @@
|
||||
<svg id="TalentsTube_logo-blanc" xmlns="http://www.w3.org/2000/svg" width="127.874" height="28.875" viewBox="0 0 127.874 28.875">
|
||||
<g id="Groupe_7850" data-name="Groupe 7850" transform="translate(0 7.042)">
|
||||
<path id="Tracé_210" data-name="Tracé 210" d="M137.664,221v-4.5h-.33a.834.834,0,1,1,0-1.668h.33v-1.459a.982.982,0,0,1,1.963,0v1.459h1.546a.834.834,0,1,1,0,1.668h-1.546v4.187a.925.925,0,0,0,1.06,1.06,4.521,4.521,0,0,0,.486-.052.83.83,0,0,1,.834.817.866.866,0,0,1-.521.764,4.073,4.073,0,0,1-1.338.226C138.672,223.519,137.664,222.894,137.664,221Z" transform="translate(-136.5 -211.479)" fill="#fff"/>
|
||||
<path id="Tracé_211" data-name="Tracé 211" d="M177.7,231.9v-.035c0-1.842,1.442-2.745,3.527-2.745a7.16,7.16,0,0,1,2.293.347v-.208c0-1.216-.747-1.859-2.12-1.859a4.786,4.786,0,0,0-1.894.347,1.07,1.07,0,0,1-.313.052.819.819,0,0,1-.834-.817.879.879,0,0,1,.539-.782,7.234,7.234,0,0,1,2.745-.5,3.833,3.833,0,0,1,2.832.956,3.572,3.572,0,0,1,.921,2.641v4.2a.928.928,0,0,1-.956.938.879.879,0,0,1-.956-.834v-.33a3.494,3.494,0,0,1-2.78,1.251A2.7,2.7,0,0,1,177.7,231.9Zm5.872-.625v-.591a5.5,5.5,0,0,0-1.946-.347c-1.268,0-2.015.539-2.015,1.425v.035c0,.834.73,1.3,1.668,1.3C182.582,233.119,183.572,232.372,183.572,231.277Z" transform="translate(-170.542 -222.468)" fill="#fff"/>
|
||||
<path id="Tracé_212" data-name="Tracé 212" d="M236.8,208.073a.96.96,0,0,1,.973-.973.975.975,0,0,1,.99.973v10.042a.982.982,0,0,1-1.963,0Z" transform="translate(-219.374 -207.1)" fill="#fff"/>
|
||||
<path id="Tracé_213" data-name="Tracé 213" d="M264.4,234.313a4.262,4.262,0,0,1-4.4-4.43v-.035a4.238,4.238,0,0,1,4.17-4.448,4.043,4.043,0,0,1,4.066,4.2.909.909,0,0,1-.921.938h-5.351a2.391,2.391,0,0,0,2.467,2.172,3.02,3.02,0,0,0,2.015-.747.686.686,0,0,1,.5-.174.783.783,0,0,1,.782.8.851.851,0,0,1-.261.591A4.35,4.35,0,0,1,264.4,234.313Zm1.946-5.073a2.215,2.215,0,0,0-2.172-2.259,2.327,2.327,0,0,0-2.224,2.259Z" transform="translate(-238.543 -222.221)" fill="#fff"/>
|
||||
<path id="Tracé_214" data-name="Tracé 214" d="M319,226.377a.965.965,0,0,1,.973-.99.979.979,0,0,1,.99.99v.417a3.091,3.091,0,0,1,2.676-1.494c1.929,0,3.04,1.3,3.04,3.266v4.569a.95.95,0,0,1-.973.973.965.965,0,0,1-.99-.973v-3.961c0-1.32-.66-2.085-1.824-2.085a1.908,1.908,0,0,0-1.928,2.12v3.927a.982.982,0,0,1-1.963,0Z" transform="translate(-287.292 -222.138)" fill="#fff"/>
|
||||
<path id="Tracé_215" data-name="Tracé 215" d="M373.564,221v-4.5h-.33a.834.834,0,0,1,0-1.668h.33v-1.459a.982.982,0,0,1,1.963,0v1.459h1.546a.834.834,0,1,1,0,1.668h-1.546v4.187a.925.925,0,0,0,1.06,1.06,4.522,4.522,0,0,0,.486-.052.83.83,0,0,1,.834.817.866.866,0,0,1-.521.764,4.073,4.073,0,0,1-1.338.226A2.181,2.181,0,0,1,373.564,221Z" transform="translate(-331.415 -211.479)" fill="#fff"/>
|
||||
<path id="Tracé_216" data-name="Tracé 216" d="M411.465,233.336a.748.748,0,0,1-.365-.678.8.8,0,0,1,.8-.8.787.787,0,0,1,.417.122,4.51,4.51,0,0,0,2.467.834c.834,0,1.32-.348,1.32-.921v-.052c0-.66-.9-.886-1.911-1.2-1.268-.347-2.676-.869-2.676-2.5v-.035c0-1.616,1.338-2.606,3.04-2.606a5.969,5.969,0,0,1,2.693.695.814.814,0,0,1,.469.747.8.8,0,0,1-.817.8.7.7,0,0,1-.382-.1,4.8,4.8,0,0,0-2.015-.591c-.764,0-1.2.347-1.2.834v.035c0,.625.921.886,1.929,1.216,1.251.382,2.658.956,2.658,2.484v.035c0,1.79-1.39,2.693-3.179,2.693A5.719,5.719,0,0,1,411.465,233.336Z" transform="translate(-363.391 -222.303)" fill="#fff"/>
|
||||
<path id="Tracé_217" data-name="Tracé 217" d="M486.464,221v-4.5h-.33a.834.834,0,0,1,0-1.668h.33v-1.459a.982.982,0,0,1,1.963,0v1.459h1.546a.834.834,0,1,1,0,1.668h-1.546v4.187a.925.925,0,0,0,1.06,1.06,4.521,4.521,0,0,0,.486-.052.83.83,0,0,1,.834.817.866.866,0,0,1-.521.764,4.074,4.074,0,0,1-1.338.226A2.181,2.181,0,0,1,486.464,221Z" transform="translate(-424.699 -211.479)" fill="#fff"/>
|
||||
<path id="Tracé_218" data-name="Tracé 218" d="M535.1,233.549a.99.99,0,0,1-1.981,0v-.434a3.067,3.067,0,0,1-2.676,1.512c-1.929,0-3.04-1.3-3.04-3.284V226.79a.982.982,0,1,1,1.963,0v3.961c0,1.32.66,2.068,1.824,2.068a1.893,1.893,0,0,0,1.929-2.1V226.79a.979.979,0,0,1,.99-.99.99.99,0,0,1,.99.99Z" transform="translate(-459.485 -222.551)" fill="#fff"/>
|
||||
<path id="Tracé_219" data-name="Tracé 219" d="M585.8,208.073a.95.95,0,0,1,.973-.973.965.965,0,0,1,.99.973v3.8a3.432,3.432,0,0,1,2.919-1.6c2.015,0,3.961,1.581,3.961,4.43v.035a4.086,4.086,0,0,1-3.961,4.43,3.5,3.5,0,0,1-2.919-1.512v.434a.982.982,0,0,1-1.963,0Zm6.845,6.654v-.035a2.522,2.522,0,0,0-2.45-2.728,2.569,2.569,0,0,0-2.484,2.728v.035a2.569,2.569,0,0,0,2.484,2.728A2.492,2.492,0,0,0,592.645,214.727Z" transform="translate(-507.738 -207.1)" fill="#fff"/>
|
||||
<path id="Tracé_220" data-name="Tracé 220" d="M649.9,234.313a4.262,4.262,0,0,1-4.4-4.43v-.035a4.238,4.238,0,0,1,4.17-4.448,4.043,4.043,0,0,1,4.065,4.2.909.909,0,0,1-.921.938h-5.351a2.391,2.391,0,0,0,2.467,2.172,3.02,3.02,0,0,0,2.015-.747.685.685,0,0,1,.5-.174.783.783,0,0,1,.782.8.851.851,0,0,1-.261.591A4.38,4.38,0,0,1,649.9,234.313Zm1.946-5.073a2.215,2.215,0,0,0-2.172-2.259,2.327,2.327,0,0,0-2.224,2.259Z" transform="translate(-557.066 -222.221)" fill="#fff"/>
|
||||
</g>
|
||||
<g id="Groupe_7851" data-name="Groupe 7851" transform="translate(103.478 0)">
|
||||
<circle id="Ellipse_105" data-name="Ellipse 105" cx="3.266" cy="3.266" r="3.266" transform="matrix(0.384, -0.924, 0.924, 0.384, 9.466, 20.582)" fill="#fff"/>
|
||||
<circle id="Ellipse_106" data-name="Ellipse 106" cx="3.266" cy="3.266" r="3.266" transform="matrix(0.384, -0.924, 0.924, 0.384, 9.471, 11.874)" fill="#fff"/>
|
||||
<circle id="Ellipse_107" data-name="Ellipse 107" cx="3.927" cy="3.927" r="3.927" transform="matrix(0.384, -0.924, 0.924, 0.384, 0.009, 16.56)" fill="#fff"/>
|
||||
<circle id="Ellipse_108" data-name="Ellipse 108" cx="3.927" cy="3.927" r="3.927" transform="matrix(0.384, -0.924, 0.924, 0.384, 0.002, 7.252)" fill="#fff"/>
|
||||
<circle id="Ellipse_109" data-name="Ellipse 109" cx="3.927" cy="3.927" r="3.927" transform="matrix(0.384, -0.924, 0.924, 0.384, 0, 25.862)" fill="#fff"/>
|
||||
<circle id="Ellipse_110" data-name="Ellipse 110" cx="2.728" cy="2.728" r="2.728" transform="matrix(0.384, -0.924, 0.924, 0.384, 17.264, 15.911)" fill="#fff"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 5.9 KiB |
@@ -0,0 +1,10 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="100" height="100" viewBox="0 0 100 100">
|
||||
<g id="Groupe_8222" data-name="Groupe 8222" transform="translate(-905 -178)">
|
||||
<g id="Groupe_8166" data-name="Groupe 8166" transform="translate(-23 -21.541)">
|
||||
<circle id="Ellipse_130" data-name="Ellipse 130" cx="50" cy="50" r="50" transform="translate(928 199.541)" fill="#1689fb"/>
|
||||
<g id="_001-like" data-name="001-like" transform="translate(948.325 227.541)">
|
||||
<path id="Tracé_429" data-name="Tracé 429" d="M52.8,33.254a6.076,6.076,0,0,0,1.422-4.061,6.239,6.239,0,0,0-1.33-3.519,5.467,5.467,0,0,0-1.3-6.291C49.963,17.9,47.2,17.235,43.376,17.42a32.1,32.1,0,0,0-5.033.644h-.01c-.511.092-1.054.2-1.606.327-.041-.655.072-2.281,1.279-5.943,1.432-4.357,1.35-7.692-.266-9.922A6.5,6.5,0,0,0,32.533,0a2.569,2.569,0,0,0-1.974.9c-1.135,1.32-1,3.754-.859,4.879-1.35,3.621-5.135,12.5-8.336,14.965a1.1,1.1,0,0,0-.164.143,10.988,10.988,0,0,0-2,3.007,4.221,4.221,0,0,0-2.025-.511H10.93a4.258,4.258,0,0,0-4.255,4.255V44.26a4.258,4.258,0,0,0,4.255,4.255h6.24a4.246,4.246,0,0,0,2.455-.777l2.4.286a102.986,102.986,0,0,0,13.635.747c1.217.092,2.363.143,3.427.143a22.95,22.95,0,0,0,4.756-.43c3.13-.665,5.268-1.995,6.352-3.948a6.261,6.261,0,0,0,.7-3.918,6.524,6.524,0,0,0,2.322-5.309A6.91,6.91,0,0,0,52.8,33.254ZM10.93,45.753A1.5,1.5,0,0,1,9.437,44.26V27.628a1.5,1.5,0,0,1,1.493-1.493h6.24a1.5,1.5,0,0,1,1.493,1.493V44.25a1.5,1.5,0,0,1-1.493,1.493H10.93Zm39.248-13.7a1.375,1.375,0,0,0-.184,1.667,4.256,4.256,0,0,1,.471,1.708,4.093,4.093,0,0,1-1.923,3.539,1.394,1.394,0,0,0-.471,1.575,3.612,3.612,0,0,1-.276,2.639c-.685,1.227-2.209,2.107-4.521,2.6a26.947,26.947,0,0,1-7.457.225h-.143a100.965,100.965,0,0,1-13.3-.726h-.01l-1.033-.123a4.334,4.334,0,0,0,.092-.9V27.628a4.327,4.327,0,0,0-.194-1.268,8.549,8.549,0,0,1,1.9-3.508C27.726,19.21,32.216,6.925,32.41,6.393a1.3,1.3,0,0,0,.061-.685A6.392,6.392,0,0,1,32.6,2.741a3.67,3.67,0,0,1,2.885,1.381c1.043,1.442,1,4.02-.123,7.436-1.718,5.206-1.862,7.948-.5,9.155a2.229,2.229,0,0,0,2.23.4c.624-.143,1.217-.266,1.78-.358l.133-.031c3.14-.685,8.766-1.1,10.72.675a2.943,2.943,0,0,1,.348,3.733,1.368,1.368,0,0,0,.245,1.78A3.875,3.875,0,0,1,51.456,29.3,3.8,3.8,0,0,1,50.178,32.057Z" transform="translate(-1 -4)" fill="#fff"/>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 2.2 KiB |
|
After Width: | Height: | Size: 40 KiB |
|
After Width: | Height: | Size: 1.1 KiB |
|
After Width: | Height: | Size: 641 KiB |
|
After Width: | Height: | Size: 46 KiB |
|
After Width: | Height: | Size: 33 KiB |
|
After Width: | Height: | Size: 24 KiB |
@@ -0,0 +1,34 @@
|
||||
<svg id="TalentsTube_logo-color" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="127.039" height="26.461" viewBox="0 0 127.039 26.461">
|
||||
<defs>
|
||||
<linearGradient id="linear-gradient" x1="1.583" y1="24.72" x2="5.134" y2="24.72" gradientUnits="objectBoundingBox">
|
||||
<stop offset="0" stop-color="#155ee4"/>
|
||||
<stop offset="1" stop-color="#1689fb"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="linear-gradient-2" x1="1.583" y1="24.46" x2="5.134" y2="24.46" xlink:href="#linear-gradient"/>
|
||||
<linearGradient id="linear-gradient-3" x1="2.496" y1="20.539" x2="5.45" y2="20.539" xlink:href="#linear-gradient"/>
|
||||
<linearGradient id="linear-gradient-4" x1="2.496" y1="20.308" x2="5.45" y2="20.308" xlink:href="#linear-gradient"/>
|
||||
<linearGradient id="linear-gradient-5" x1="2.496" y1="20.771" x2="5.45" y2="20.771" xlink:href="#linear-gradient"/>
|
||||
<linearGradient id="linear-gradient-6" x1="0.498" y1="29.345" x2="4.749" y2="29.345" xlink:href="#linear-gradient"/>
|
||||
</defs>
|
||||
<g id="Groupe_7848" data-name="Groupe 7848" transform="translate(0 5.838)">
|
||||
<path id="Tracé_199" data-name="Tracé 199" d="M136.964,221v-4.5h-.33a.834.834,0,0,1,0-1.668h.33v-1.459a.982.982,0,0,1,1.963,0v1.459h1.546a.834.834,0,1,1,0,1.668h-1.546v4.187a.925.925,0,0,0,1.06,1.06,4.521,4.521,0,0,0,.486-.052.83.83,0,0,1,.834.817.866.866,0,0,1-.521.764,4.073,4.073,0,0,1-1.338.226A2.181,2.181,0,0,1,136.964,221Z" transform="translate(-135.8 -211.479)"/>
|
||||
<path id="Tracé_200" data-name="Tracé 200" d="M177.1,231.9v-.035c0-1.842,1.442-2.745,3.527-2.745a7.16,7.16,0,0,1,2.293.347v-.208c0-1.216-.747-1.859-2.12-1.859a4.786,4.786,0,0,0-1.894.347,1.07,1.07,0,0,1-.313.052.819.819,0,0,1-.834-.817.879.879,0,0,1,.539-.782,7.234,7.234,0,0,1,2.745-.5,3.833,3.833,0,0,1,2.832.956,3.572,3.572,0,0,1,.921,2.641v4.2a.928.928,0,0,1-.956.938.879.879,0,0,1-.956-.834v-.33a3.494,3.494,0,0,1-2.78,1.251A2.7,2.7,0,0,1,177.1,231.9Zm5.855-.625v-.591a5.5,5.5,0,0,0-1.946-.347c-1.268,0-2.015.539-2.015,1.425v.035c0,.834.73,1.3,1.668,1.3C181.965,233.119,182.955,232.372,182.955,231.277Z" transform="translate(-169.924 -222.468)"/>
|
||||
<path id="Tracé_201" data-name="Tracé 201" d="M236.1,208.073a.96.96,0,0,1,.973-.973.975.975,0,0,1,.99.973v10.042a.982.982,0,0,1-1.963,0Z" transform="translate(-218.674 -207.1)"/>
|
||||
<path id="Tracé_202" data-name="Tracé 202" d="M263.878,234.313a4.248,4.248,0,0,1-4.378-4.43v-.035a4.238,4.238,0,0,1,4.17-4.448,4.043,4.043,0,0,1,4.066,4.2.909.909,0,0,1-.921.938h-5.351a2.391,2.391,0,0,0,2.467,2.172,3.021,3.021,0,0,0,2.015-.747.685.685,0,0,1,.5-.174.783.783,0,0,1,.782.8.851.851,0,0,1-.261.591A4.488,4.488,0,0,1,263.878,234.313Zm1.946-5.073a2.215,2.215,0,0,0-2.172-2.259,2.327,2.327,0,0,0-2.224,2.259Z" transform="translate(-238.008 -222.221)"/>
|
||||
<path id="Tracé_203" data-name="Tracé 203" d="M318.4,226.377a.965.965,0,0,1,.973-.99.979.979,0,0,1,.99.99v.417a3.091,3.091,0,0,1,2.676-1.494c1.929,0,3.04,1.3,3.04,3.266v4.569a.95.95,0,0,1-.973.973.965.965,0,0,1-.99-.973v-3.961c0-1.32-.66-2.085-1.824-2.085a1.908,1.908,0,0,0-1.929,2.12v3.927a.982.982,0,0,1-1.963,0Z" transform="translate(-286.675 -222.138)"/>
|
||||
<path id="Tracé_204" data-name="Tracé 204" d="M372.964,221v-4.5h-.33a.834.834,0,1,1,0-1.668h.33v-1.459a.982.982,0,0,1,1.963,0v1.459h1.546a.834.834,0,1,1,0,1.668h-1.546v4.187a.925.925,0,0,0,1.06,1.06,4.52,4.52,0,0,0,.486-.052.83.83,0,0,1,.834.817.866.866,0,0,1-.521.764,4.073,4.073,0,0,1-1.338.226A2.181,2.181,0,0,1,372.964,221Z" transform="translate(-330.797 -211.479)"/>
|
||||
<path id="Tracé_205" data-name="Tracé 205" d="M410.865,233.336a.748.748,0,0,1-.365-.678.8.8,0,0,1,.8-.8.787.787,0,0,1,.417.122,4.51,4.51,0,0,0,2.467.834c.834,0,1.32-.348,1.32-.921v-.052c0-.66-.9-.886-1.911-1.2-1.268-.347-2.676-.869-2.676-2.5v-.035c0-1.616,1.338-2.606,3.04-2.606a5.969,5.969,0,0,1,2.693.695.814.814,0,0,1,.469.747.791.791,0,0,1-.817.8.7.7,0,0,1-.382-.1,4.8,4.8,0,0,0-2.015-.591c-.764,0-1.2.347-1.2.834v.035c0,.625.921.886,1.929,1.216,1.251.382,2.658.956,2.658,2.484v.035c0,1.79-1.39,2.693-3.179,2.693A5.72,5.72,0,0,1,410.865,233.336Z" transform="translate(-362.773 -222.303)"/>
|
||||
<path id="Tracé_206" data-name="Tracé 206" d="M485.864,221v-4.5h-.33a.834.834,0,1,1,0-1.668h.33v-1.459a.982.982,0,0,1,1.963,0v1.459h1.546a.834.834,0,1,1,0,1.668h-1.546v4.187a.925.925,0,0,0,1.06,1.06,4.521,4.521,0,0,0,.486-.052.83.83,0,0,1,.834.817.866.866,0,0,1-.521.764,4.073,4.073,0,0,1-1.338.226A2.181,2.181,0,0,1,485.864,221Z" transform="translate(-424.082 -211.479)"/>
|
||||
<path id="Tracé_207" data-name="Tracé 207" d="M534.5,233.549a.991.991,0,0,1-1.981,0v-.434a3.067,3.067,0,0,1-2.676,1.512c-1.929,0-3.04-1.3-3.04-3.284V226.79a.982.982,0,1,1,1.963,0v3.961c0,1.32.66,2.068,1.824,2.068a1.893,1.893,0,0,0,1.928-2.1V226.79a.979.979,0,0,1,.99-.99.99.99,0,0,1,.99.99Z" transform="translate(-458.867 -222.551)"/>
|
||||
<path id="Tracé_208" data-name="Tracé 208" d="M585.1,208.073a.95.95,0,0,1,.973-.973.965.965,0,0,1,.99.973v3.8a3.432,3.432,0,0,1,2.919-1.6c2.015,0,3.961,1.581,3.961,4.43v.035a4.086,4.086,0,0,1-3.961,4.43,3.5,3.5,0,0,1-2.919-1.512v.434a.982.982,0,0,1-1.963,0Zm6.845,6.654v-.035a2.522,2.522,0,0,0-2.45-2.728,2.569,2.569,0,0,0-2.485,2.728v.035a2.569,2.569,0,0,0,2.485,2.728A2.483,2.483,0,0,0,591.945,214.727Z" transform="translate(-507.038 -207.1)"/>
|
||||
<path id="Tracé_209" data-name="Tracé 209" d="M649.378,234.313a4.248,4.248,0,0,1-4.378-4.43v-.035a4.238,4.238,0,0,1,4.17-4.448,4.043,4.043,0,0,1,4.065,4.2.909.909,0,0,1-.921.938h-5.351a2.391,2.391,0,0,0,2.467,2.172,3.02,3.02,0,0,0,2.015-.747.685.685,0,0,1,.5-.174.783.783,0,0,1,.782.8.852.852,0,0,1-.261.591A4.488,4.488,0,0,1,649.378,234.313Zm1.946-5.073a2.215,2.215,0,0,0-2.172-2.259,2.327,2.327,0,0,0-2.224,2.259Z" transform="translate(-556.531 -222.221)"/>
|
||||
</g>
|
||||
<g id="Groupe_7849" data-name="Groupe 7849" transform="translate(104.696 0)">
|
||||
<circle id="Ellipse_99" data-name="Ellipse 99" cx="3.266" cy="3.266" r="3.266" transform="translate(9.26 14.351)" fill="url(#linear-gradient)"/>
|
||||
<circle id="Ellipse_100" data-name="Ellipse 100" cx="3.266" cy="3.266" r="3.266" transform="translate(9.26 5.647)" fill="url(#linear-gradient-2)"/>
|
||||
<circle id="Ellipse_101" data-name="Ellipse 101" cx="3.927" cy="3.927" r="3.927" transform="translate(0 9.313)" fill="url(#linear-gradient-3)"/>
|
||||
<circle id="Ellipse_102" data-name="Ellipse 102" cx="3.927" cy="3.927" r="3.927" fill="url(#linear-gradient-4)"/>
|
||||
<circle id="Ellipse_103" data-name="Ellipse 103" cx="3.927" cy="3.927" r="3.927" transform="translate(0 18.608)" fill="url(#linear-gradient-5)"/>
|
||||
<circle id="Ellipse_104" data-name="Ellipse 104" cx="2.728" cy="2.728" r="2.728" transform="translate(16.888 10.511)" fill="url(#linear-gradient-6)"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 6.6 KiB |
@@ -0,0 +1,34 @@
|
||||
<svg id="TalentsTube_logo-color" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="127.039" height="26.461" viewBox="0 0 127.039 26.461">
|
||||
<defs>
|
||||
<linearGradient id="linear-gradient" x1="1.583" y1="24.72" x2="5.134" y2="24.72" gradientUnits="objectBoundingBox">
|
||||
<stop offset="0" stop-color="#155ee4"/>
|
||||
<stop offset="1" stop-color="#1689fb"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="linear-gradient-2" x1="1.583" y1="24.46" x2="5.134" y2="24.46" xlink:href="#linear-gradient"/>
|
||||
<linearGradient id="linear-gradient-3" x1="2.496" y1="20.539" x2="5.45" y2="20.539" xlink:href="#linear-gradient"/>
|
||||
<linearGradient id="linear-gradient-4" x1="2.496" y1="20.308" x2="5.45" y2="20.308" xlink:href="#linear-gradient"/>
|
||||
<linearGradient id="linear-gradient-5" x1="2.496" y1="20.771" x2="5.45" y2="20.771" xlink:href="#linear-gradient"/>
|
||||
<linearGradient id="linear-gradient-6" x1="0.498" y1="29.345" x2="4.749" y2="29.345" xlink:href="#linear-gradient"/>
|
||||
</defs>
|
||||
<g id="Groupe_7848" data-name="Groupe 7848" transform="translate(0 5.838)">
|
||||
<path id="Tracé_199" data-name="Tracé 199" d="M136.964,221v-4.5h-.33a.834.834,0,0,1,0-1.668h.33v-1.459a.982.982,0,0,1,1.963,0v1.459h1.546a.834.834,0,1,1,0,1.668h-1.546v4.187a.925.925,0,0,0,1.06,1.06,4.521,4.521,0,0,0,.486-.052.83.83,0,0,1,.834.817.866.866,0,0,1-.521.764,4.073,4.073,0,0,1-1.338.226A2.181,2.181,0,0,1,136.964,221Z" transform="translate(-135.8 -211.479)"/>
|
||||
<path id="Tracé_200" data-name="Tracé 200" d="M177.1,231.9v-.035c0-1.842,1.442-2.745,3.527-2.745a7.16,7.16,0,0,1,2.293.347v-.208c0-1.216-.747-1.859-2.12-1.859a4.786,4.786,0,0,0-1.894.347,1.07,1.07,0,0,1-.313.052.819.819,0,0,1-.834-.817.879.879,0,0,1,.539-.782,7.234,7.234,0,0,1,2.745-.5,3.833,3.833,0,0,1,2.832.956,3.572,3.572,0,0,1,.921,2.641v4.2a.928.928,0,0,1-.956.938.879.879,0,0,1-.956-.834v-.33a3.494,3.494,0,0,1-2.78,1.251A2.7,2.7,0,0,1,177.1,231.9Zm5.855-.625v-.591a5.5,5.5,0,0,0-1.946-.347c-1.268,0-2.015.539-2.015,1.425v.035c0,.834.73,1.3,1.668,1.3C181.965,233.119,182.955,232.372,182.955,231.277Z" transform="translate(-169.924 -222.468)"/>
|
||||
<path id="Tracé_201" data-name="Tracé 201" d="M236.1,208.073a.96.96,0,0,1,.973-.973.975.975,0,0,1,.99.973v10.042a.982.982,0,0,1-1.963,0Z" transform="translate(-218.674 -207.1)"/>
|
||||
<path id="Tracé_202" data-name="Tracé 202" d="M263.878,234.313a4.248,4.248,0,0,1-4.378-4.43v-.035a4.238,4.238,0,0,1,4.17-4.448,4.043,4.043,0,0,1,4.066,4.2.909.909,0,0,1-.921.938h-5.351a2.391,2.391,0,0,0,2.467,2.172,3.021,3.021,0,0,0,2.015-.747.685.685,0,0,1,.5-.174.783.783,0,0,1,.782.8.851.851,0,0,1-.261.591A4.488,4.488,0,0,1,263.878,234.313Zm1.946-5.073a2.215,2.215,0,0,0-2.172-2.259,2.327,2.327,0,0,0-2.224,2.259Z" transform="translate(-238.008 -222.221)"/>
|
||||
<path id="Tracé_203" data-name="Tracé 203" d="M318.4,226.377a.965.965,0,0,1,.973-.99.979.979,0,0,1,.99.99v.417a3.091,3.091,0,0,1,2.676-1.494c1.929,0,3.04,1.3,3.04,3.266v4.569a.95.95,0,0,1-.973.973.965.965,0,0,1-.99-.973v-3.961c0-1.32-.66-2.085-1.824-2.085a1.908,1.908,0,0,0-1.929,2.12v3.927a.982.982,0,0,1-1.963,0Z" transform="translate(-286.675 -222.138)"/>
|
||||
<path id="Tracé_204" data-name="Tracé 204" d="M372.964,221v-4.5h-.33a.834.834,0,1,1,0-1.668h.33v-1.459a.982.982,0,0,1,1.963,0v1.459h1.546a.834.834,0,1,1,0,1.668h-1.546v4.187a.925.925,0,0,0,1.06,1.06,4.52,4.52,0,0,0,.486-.052.83.83,0,0,1,.834.817.866.866,0,0,1-.521.764,4.073,4.073,0,0,1-1.338.226A2.181,2.181,0,0,1,372.964,221Z" transform="translate(-330.797 -211.479)"/>
|
||||
<path id="Tracé_205" data-name="Tracé 205" d="M410.865,233.336a.748.748,0,0,1-.365-.678.8.8,0,0,1,.8-.8.787.787,0,0,1,.417.122,4.51,4.51,0,0,0,2.467.834c.834,0,1.32-.348,1.32-.921v-.052c0-.66-.9-.886-1.911-1.2-1.268-.347-2.676-.869-2.676-2.5v-.035c0-1.616,1.338-2.606,3.04-2.606a5.969,5.969,0,0,1,2.693.695.814.814,0,0,1,.469.747.791.791,0,0,1-.817.8.7.7,0,0,1-.382-.1,4.8,4.8,0,0,0-2.015-.591c-.764,0-1.2.347-1.2.834v.035c0,.625.921.886,1.929,1.216,1.251.382,2.658.956,2.658,2.484v.035c0,1.79-1.39,2.693-3.179,2.693A5.72,5.72,0,0,1,410.865,233.336Z" transform="translate(-362.773 -222.303)"/>
|
||||
<path id="Tracé_206" data-name="Tracé 206" d="M485.864,221v-4.5h-.33a.834.834,0,1,1,0-1.668h.33v-1.459a.982.982,0,0,1,1.963,0v1.459h1.546a.834.834,0,1,1,0,1.668h-1.546v4.187a.925.925,0,0,0,1.06,1.06,4.521,4.521,0,0,0,.486-.052.83.83,0,0,1,.834.817.866.866,0,0,1-.521.764,4.073,4.073,0,0,1-1.338.226A2.181,2.181,0,0,1,485.864,221Z" transform="translate(-424.082 -211.479)"/>
|
||||
<path id="Tracé_207" data-name="Tracé 207" d="M534.5,233.549a.991.991,0,0,1-1.981,0v-.434a3.067,3.067,0,0,1-2.676,1.512c-1.929,0-3.04-1.3-3.04-3.284V226.79a.982.982,0,1,1,1.963,0v3.961c0,1.32.66,2.068,1.824,2.068a1.893,1.893,0,0,0,1.928-2.1V226.79a.979.979,0,0,1,.99-.99.99.99,0,0,1,.99.99Z" transform="translate(-458.867 -222.551)"/>
|
||||
<path id="Tracé_208" data-name="Tracé 208" d="M585.1,208.073a.95.95,0,0,1,.973-.973.965.965,0,0,1,.99.973v3.8a3.432,3.432,0,0,1,2.919-1.6c2.015,0,3.961,1.581,3.961,4.43v.035a4.086,4.086,0,0,1-3.961,4.43,3.5,3.5,0,0,1-2.919-1.512v.434a.982.982,0,0,1-1.963,0Zm6.845,6.654v-.035a2.522,2.522,0,0,0-2.45-2.728,2.569,2.569,0,0,0-2.485,2.728v.035a2.569,2.569,0,0,0,2.485,2.728A2.483,2.483,0,0,0,591.945,214.727Z" transform="translate(-507.038 -207.1)"/>
|
||||
<path id="Tracé_209" data-name="Tracé 209" d="M649.378,234.313a4.248,4.248,0,0,1-4.378-4.43v-.035a4.238,4.238,0,0,1,4.17-4.448,4.043,4.043,0,0,1,4.065,4.2.909.909,0,0,1-.921.938h-5.351a2.391,2.391,0,0,0,2.467,2.172,3.02,3.02,0,0,0,2.015-.747.685.685,0,0,1,.5-.174.783.783,0,0,1,.782.8.852.852,0,0,1-.261.591A4.488,4.488,0,0,1,649.378,234.313Zm1.946-5.073a2.215,2.215,0,0,0-2.172-2.259,2.327,2.327,0,0,0-2.224,2.259Z" transform="translate(-556.531 -222.221)"/>
|
||||
</g>
|
||||
<g id="Groupe_7849" data-name="Groupe 7849" transform="translate(104.696 0)">
|
||||
<circle id="Ellipse_99" data-name="Ellipse 99" cx="3.266" cy="3.266" r="3.266" transform="translate(9.26 14.351)" fill="url(#linear-gradient)"/>
|
||||
<circle id="Ellipse_100" data-name="Ellipse 100" cx="3.266" cy="3.266" r="3.266" transform="translate(9.26 5.647)" fill="url(#linear-gradient-2)"/>
|
||||
<circle id="Ellipse_101" data-name="Ellipse 101" cx="3.927" cy="3.927" r="3.927" transform="translate(0 9.313)" fill="url(#linear-gradient-3)"/>
|
||||
<circle id="Ellipse_102" data-name="Ellipse 102" cx="3.927" cy="3.927" r="3.927" fill="url(#linear-gradient-4)"/>
|
||||
<circle id="Ellipse_103" data-name="Ellipse 103" cx="3.927" cy="3.927" r="3.927" transform="translate(0 18.608)" fill="url(#linear-gradient-5)"/>
|
||||
<circle id="Ellipse_104" data-name="Ellipse 104" cx="2.728" cy="2.728" r="2.728" transform="translate(16.888 10.511)" fill="url(#linear-gradient-6)"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 6.6 KiB |
|
After Width: | Height: | Size: 3.2 KiB |
@@ -0,0 +1,23 @@
|
||||
<svg id="TalentsTube_logo-blanc" xmlns="http://www.w3.org/2000/svg" width="127.874" height="28.875" viewBox="0 0 127.874 28.875">
|
||||
<g id="Groupe_7850" data-name="Groupe 7850" transform="translate(0 7.042)">
|
||||
<path id="Tracé_210" data-name="Tracé 210" d="M137.664,221v-4.5h-.33a.834.834,0,1,1,0-1.668h.33v-1.459a.982.982,0,0,1,1.963,0v1.459h1.546a.834.834,0,1,1,0,1.668h-1.546v4.187a.925.925,0,0,0,1.06,1.06,4.521,4.521,0,0,0,.486-.052.83.83,0,0,1,.834.817.866.866,0,0,1-.521.764,4.073,4.073,0,0,1-1.338.226C138.672,223.519,137.664,222.894,137.664,221Z" transform="translate(-136.5 -211.479)" fill="#fff"/>
|
||||
<path id="Tracé_211" data-name="Tracé 211" d="M177.7,231.9v-.035c0-1.842,1.442-2.745,3.527-2.745a7.16,7.16,0,0,1,2.293.347v-.208c0-1.216-.747-1.859-2.12-1.859a4.786,4.786,0,0,0-1.894.347,1.07,1.07,0,0,1-.313.052.819.819,0,0,1-.834-.817.879.879,0,0,1,.539-.782,7.234,7.234,0,0,1,2.745-.5,3.833,3.833,0,0,1,2.832.956,3.572,3.572,0,0,1,.921,2.641v4.2a.928.928,0,0,1-.956.938.879.879,0,0,1-.956-.834v-.33a3.494,3.494,0,0,1-2.78,1.251A2.7,2.7,0,0,1,177.7,231.9Zm5.872-.625v-.591a5.5,5.5,0,0,0-1.946-.347c-1.268,0-2.015.539-2.015,1.425v.035c0,.834.73,1.3,1.668,1.3C182.582,233.119,183.572,232.372,183.572,231.277Z" transform="translate(-170.542 -222.468)" fill="#fff"/>
|
||||
<path id="Tracé_212" data-name="Tracé 212" d="M236.8,208.073a.96.96,0,0,1,.973-.973.975.975,0,0,1,.99.973v10.042a.982.982,0,0,1-1.963,0Z" transform="translate(-219.374 -207.1)" fill="#fff"/>
|
||||
<path id="Tracé_213" data-name="Tracé 213" d="M264.4,234.313a4.262,4.262,0,0,1-4.4-4.43v-.035a4.238,4.238,0,0,1,4.17-4.448,4.043,4.043,0,0,1,4.066,4.2.909.909,0,0,1-.921.938h-5.351a2.391,2.391,0,0,0,2.467,2.172,3.02,3.02,0,0,0,2.015-.747.686.686,0,0,1,.5-.174.783.783,0,0,1,.782.8.851.851,0,0,1-.261.591A4.35,4.35,0,0,1,264.4,234.313Zm1.946-5.073a2.215,2.215,0,0,0-2.172-2.259,2.327,2.327,0,0,0-2.224,2.259Z" transform="translate(-238.543 -222.221)" fill="#fff"/>
|
||||
<path id="Tracé_214" data-name="Tracé 214" d="M319,226.377a.965.965,0,0,1,.973-.99.979.979,0,0,1,.99.99v.417a3.091,3.091,0,0,1,2.676-1.494c1.929,0,3.04,1.3,3.04,3.266v4.569a.95.95,0,0,1-.973.973.965.965,0,0,1-.99-.973v-3.961c0-1.32-.66-2.085-1.824-2.085a1.908,1.908,0,0,0-1.928,2.12v3.927a.982.982,0,0,1-1.963,0Z" transform="translate(-287.292 -222.138)" fill="#fff"/>
|
||||
<path id="Tracé_215" data-name="Tracé 215" d="M373.564,221v-4.5h-.33a.834.834,0,0,1,0-1.668h.33v-1.459a.982.982,0,0,1,1.963,0v1.459h1.546a.834.834,0,1,1,0,1.668h-1.546v4.187a.925.925,0,0,0,1.06,1.06,4.522,4.522,0,0,0,.486-.052.83.83,0,0,1,.834.817.866.866,0,0,1-.521.764,4.073,4.073,0,0,1-1.338.226A2.181,2.181,0,0,1,373.564,221Z" transform="translate(-331.415 -211.479)" fill="#fff"/>
|
||||
<path id="Tracé_216" data-name="Tracé 216" d="M411.465,233.336a.748.748,0,0,1-.365-.678.8.8,0,0,1,.8-.8.787.787,0,0,1,.417.122,4.51,4.51,0,0,0,2.467.834c.834,0,1.32-.348,1.32-.921v-.052c0-.66-.9-.886-1.911-1.2-1.268-.347-2.676-.869-2.676-2.5v-.035c0-1.616,1.338-2.606,3.04-2.606a5.969,5.969,0,0,1,2.693.695.814.814,0,0,1,.469.747.8.8,0,0,1-.817.8.7.7,0,0,1-.382-.1,4.8,4.8,0,0,0-2.015-.591c-.764,0-1.2.347-1.2.834v.035c0,.625.921.886,1.929,1.216,1.251.382,2.658.956,2.658,2.484v.035c0,1.79-1.39,2.693-3.179,2.693A5.719,5.719,0,0,1,411.465,233.336Z" transform="translate(-363.391 -222.303)" fill="#fff"/>
|
||||
<path id="Tracé_217" data-name="Tracé 217" d="M486.464,221v-4.5h-.33a.834.834,0,0,1,0-1.668h.33v-1.459a.982.982,0,0,1,1.963,0v1.459h1.546a.834.834,0,1,1,0,1.668h-1.546v4.187a.925.925,0,0,0,1.06,1.06,4.521,4.521,0,0,0,.486-.052.83.83,0,0,1,.834.817.866.866,0,0,1-.521.764,4.074,4.074,0,0,1-1.338.226A2.181,2.181,0,0,1,486.464,221Z" transform="translate(-424.699 -211.479)" fill="#fff"/>
|
||||
<path id="Tracé_218" data-name="Tracé 218" d="M535.1,233.549a.99.99,0,0,1-1.981,0v-.434a3.067,3.067,0,0,1-2.676,1.512c-1.929,0-3.04-1.3-3.04-3.284V226.79a.982.982,0,1,1,1.963,0v3.961c0,1.32.66,2.068,1.824,2.068a1.893,1.893,0,0,0,1.929-2.1V226.79a.979.979,0,0,1,.99-.99.99.99,0,0,1,.99.99Z" transform="translate(-459.485 -222.551)" fill="#fff"/>
|
||||
<path id="Tracé_219" data-name="Tracé 219" d="M585.8,208.073a.95.95,0,0,1,.973-.973.965.965,0,0,1,.99.973v3.8a3.432,3.432,0,0,1,2.919-1.6c2.015,0,3.961,1.581,3.961,4.43v.035a4.086,4.086,0,0,1-3.961,4.43,3.5,3.5,0,0,1-2.919-1.512v.434a.982.982,0,0,1-1.963,0Zm6.845,6.654v-.035a2.522,2.522,0,0,0-2.45-2.728,2.569,2.569,0,0,0-2.484,2.728v.035a2.569,2.569,0,0,0,2.484,2.728A2.492,2.492,0,0,0,592.645,214.727Z" transform="translate(-507.738 -207.1)" fill="#fff"/>
|
||||
<path id="Tracé_220" data-name="Tracé 220" d="M649.9,234.313a4.262,4.262,0,0,1-4.4-4.43v-.035a4.238,4.238,0,0,1,4.17-4.448,4.043,4.043,0,0,1,4.065,4.2.909.909,0,0,1-.921.938h-5.351a2.391,2.391,0,0,0,2.467,2.172,3.02,3.02,0,0,0,2.015-.747.685.685,0,0,1,.5-.174.783.783,0,0,1,.782.8.851.851,0,0,1-.261.591A4.38,4.38,0,0,1,649.9,234.313Zm1.946-5.073a2.215,2.215,0,0,0-2.172-2.259,2.327,2.327,0,0,0-2.224,2.259Z" transform="translate(-557.066 -222.221)" fill="#fff"/>
|
||||
</g>
|
||||
<g id="Groupe_7851" data-name="Groupe 7851" transform="translate(103.478 0)">
|
||||
<circle id="Ellipse_105" data-name="Ellipse 105" cx="3.266" cy="3.266" r="3.266" transform="matrix(0.384, -0.924, 0.924, 0.384, 9.466, 20.582)" fill="#fff"/>
|
||||
<circle id="Ellipse_106" data-name="Ellipse 106" cx="3.266" cy="3.266" r="3.266" transform="matrix(0.384, -0.924, 0.924, 0.384, 9.471, 11.874)" fill="#fff"/>
|
||||
<circle id="Ellipse_107" data-name="Ellipse 107" cx="3.927" cy="3.927" r="3.927" transform="matrix(0.384, -0.924, 0.924, 0.384, 0.009, 16.56)" fill="#fff"/>
|
||||
<circle id="Ellipse_108" data-name="Ellipse 108" cx="3.927" cy="3.927" r="3.927" transform="matrix(0.384, -0.924, 0.924, 0.384, 0.002, 7.252)" fill="#fff"/>
|
||||
<circle id="Ellipse_109" data-name="Ellipse 109" cx="3.927" cy="3.927" r="3.927" transform="matrix(0.384, -0.924, 0.924, 0.384, 0, 25.862)" fill="#fff"/>
|
||||
<circle id="Ellipse_110" data-name="Ellipse 110" cx="2.728" cy="2.728" r="2.728" transform="matrix(0.384, -0.924, 0.924, 0.384, 17.264, 15.911)" fill="#fff"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 5.9 KiB |
@@ -0,0 +1,23 @@
|
||||
<svg id="TalentsTube_logo-blanc" xmlns="http://www.w3.org/2000/svg" width="127.874" height="28.875" viewBox="0 0 127.874 28.875">
|
||||
<g id="Groupe_7850" data-name="Groupe 7850" transform="translate(0 7.042)">
|
||||
<path id="Tracé_210" data-name="Tracé 210" d="M137.664,221v-4.5h-.33a.834.834,0,1,1,0-1.668h.33v-1.459a.982.982,0,0,1,1.963,0v1.459h1.546a.834.834,0,1,1,0,1.668h-1.546v4.187a.925.925,0,0,0,1.06,1.06,4.521,4.521,0,0,0,.486-.052.83.83,0,0,1,.834.817.866.866,0,0,1-.521.764,4.073,4.073,0,0,1-1.338.226C138.672,223.519,137.664,222.894,137.664,221Z" transform="translate(-136.5 -211.479)" fill="#fff"/>
|
||||
<path id="Tracé_211" data-name="Tracé 211" d="M177.7,231.9v-.035c0-1.842,1.442-2.745,3.527-2.745a7.16,7.16,0,0,1,2.293.347v-.208c0-1.216-.747-1.859-2.12-1.859a4.786,4.786,0,0,0-1.894.347,1.07,1.07,0,0,1-.313.052.819.819,0,0,1-.834-.817.879.879,0,0,1,.539-.782,7.234,7.234,0,0,1,2.745-.5,3.833,3.833,0,0,1,2.832.956,3.572,3.572,0,0,1,.921,2.641v4.2a.928.928,0,0,1-.956.938.879.879,0,0,1-.956-.834v-.33a3.494,3.494,0,0,1-2.78,1.251A2.7,2.7,0,0,1,177.7,231.9Zm5.872-.625v-.591a5.5,5.5,0,0,0-1.946-.347c-1.268,0-2.015.539-2.015,1.425v.035c0,.834.73,1.3,1.668,1.3C182.582,233.119,183.572,232.372,183.572,231.277Z" transform="translate(-170.542 -222.468)" fill="#fff"/>
|
||||
<path id="Tracé_212" data-name="Tracé 212" d="M236.8,208.073a.96.96,0,0,1,.973-.973.975.975,0,0,1,.99.973v10.042a.982.982,0,0,1-1.963,0Z" transform="translate(-219.374 -207.1)" fill="#fff"/>
|
||||
<path id="Tracé_213" data-name="Tracé 213" d="M264.4,234.313a4.262,4.262,0,0,1-4.4-4.43v-.035a4.238,4.238,0,0,1,4.17-4.448,4.043,4.043,0,0,1,4.066,4.2.909.909,0,0,1-.921.938h-5.351a2.391,2.391,0,0,0,2.467,2.172,3.02,3.02,0,0,0,2.015-.747.686.686,0,0,1,.5-.174.783.783,0,0,1,.782.8.851.851,0,0,1-.261.591A4.35,4.35,0,0,1,264.4,234.313Zm1.946-5.073a2.215,2.215,0,0,0-2.172-2.259,2.327,2.327,0,0,0-2.224,2.259Z" transform="translate(-238.543 -222.221)" fill="#fff"/>
|
||||
<path id="Tracé_214" data-name="Tracé 214" d="M319,226.377a.965.965,0,0,1,.973-.99.979.979,0,0,1,.99.99v.417a3.091,3.091,0,0,1,2.676-1.494c1.929,0,3.04,1.3,3.04,3.266v4.569a.95.95,0,0,1-.973.973.965.965,0,0,1-.99-.973v-3.961c0-1.32-.66-2.085-1.824-2.085a1.908,1.908,0,0,0-1.928,2.12v3.927a.982.982,0,0,1-1.963,0Z" transform="translate(-287.292 -222.138)" fill="#fff"/>
|
||||
<path id="Tracé_215" data-name="Tracé 215" d="M373.564,221v-4.5h-.33a.834.834,0,0,1,0-1.668h.33v-1.459a.982.982,0,0,1,1.963,0v1.459h1.546a.834.834,0,1,1,0,1.668h-1.546v4.187a.925.925,0,0,0,1.06,1.06,4.522,4.522,0,0,0,.486-.052.83.83,0,0,1,.834.817.866.866,0,0,1-.521.764,4.073,4.073,0,0,1-1.338.226A2.181,2.181,0,0,1,373.564,221Z" transform="translate(-331.415 -211.479)" fill="#fff"/>
|
||||
<path id="Tracé_216" data-name="Tracé 216" d="M411.465,233.336a.748.748,0,0,1-.365-.678.8.8,0,0,1,.8-.8.787.787,0,0,1,.417.122,4.51,4.51,0,0,0,2.467.834c.834,0,1.32-.348,1.32-.921v-.052c0-.66-.9-.886-1.911-1.2-1.268-.347-2.676-.869-2.676-2.5v-.035c0-1.616,1.338-2.606,3.04-2.606a5.969,5.969,0,0,1,2.693.695.814.814,0,0,1,.469.747.8.8,0,0,1-.817.8.7.7,0,0,1-.382-.1,4.8,4.8,0,0,0-2.015-.591c-.764,0-1.2.347-1.2.834v.035c0,.625.921.886,1.929,1.216,1.251.382,2.658.956,2.658,2.484v.035c0,1.79-1.39,2.693-3.179,2.693A5.719,5.719,0,0,1,411.465,233.336Z" transform="translate(-363.391 -222.303)" fill="#fff"/>
|
||||
<path id="Tracé_217" data-name="Tracé 217" d="M486.464,221v-4.5h-.33a.834.834,0,0,1,0-1.668h.33v-1.459a.982.982,0,0,1,1.963,0v1.459h1.546a.834.834,0,1,1,0,1.668h-1.546v4.187a.925.925,0,0,0,1.06,1.06,4.521,4.521,0,0,0,.486-.052.83.83,0,0,1,.834.817.866.866,0,0,1-.521.764,4.074,4.074,0,0,1-1.338.226A2.181,2.181,0,0,1,486.464,221Z" transform="translate(-424.699 -211.479)" fill="#fff"/>
|
||||
<path id="Tracé_218" data-name="Tracé 218" d="M535.1,233.549a.99.99,0,0,1-1.981,0v-.434a3.067,3.067,0,0,1-2.676,1.512c-1.929,0-3.04-1.3-3.04-3.284V226.79a.982.982,0,1,1,1.963,0v3.961c0,1.32.66,2.068,1.824,2.068a1.893,1.893,0,0,0,1.929-2.1V226.79a.979.979,0,0,1,.99-.99.99.99,0,0,1,.99.99Z" transform="translate(-459.485 -222.551)" fill="#fff"/>
|
||||
<path id="Tracé_219" data-name="Tracé 219" d="M585.8,208.073a.95.95,0,0,1,.973-.973.965.965,0,0,1,.99.973v3.8a3.432,3.432,0,0,1,2.919-1.6c2.015,0,3.961,1.581,3.961,4.43v.035a4.086,4.086,0,0,1-3.961,4.43,3.5,3.5,0,0,1-2.919-1.512v.434a.982.982,0,0,1-1.963,0Zm6.845,6.654v-.035a2.522,2.522,0,0,0-2.45-2.728,2.569,2.569,0,0,0-2.484,2.728v.035a2.569,2.569,0,0,0,2.484,2.728A2.492,2.492,0,0,0,592.645,214.727Z" transform="translate(-507.738 -207.1)" fill="#fff"/>
|
||||
<path id="Tracé_220" data-name="Tracé 220" d="M649.9,234.313a4.262,4.262,0,0,1-4.4-4.43v-.035a4.238,4.238,0,0,1,4.17-4.448,4.043,4.043,0,0,1,4.065,4.2.909.909,0,0,1-.921.938h-5.351a2.391,2.391,0,0,0,2.467,2.172,3.02,3.02,0,0,0,2.015-.747.685.685,0,0,1,.5-.174.783.783,0,0,1,.782.8.851.851,0,0,1-.261.591A4.38,4.38,0,0,1,649.9,234.313Zm1.946-5.073a2.215,2.215,0,0,0-2.172-2.259,2.327,2.327,0,0,0-2.224,2.259Z" transform="translate(-557.066 -222.221)" fill="#fff"/>
|
||||
</g>
|
||||
<g id="Groupe_7851" data-name="Groupe 7851" transform="translate(103.478 0)">
|
||||
<circle id="Ellipse_105" data-name="Ellipse 105" cx="3.266" cy="3.266" r="3.266" transform="matrix(0.384, -0.924, 0.924, 0.384, 9.466, 20.582)" fill="#fff"/>
|
||||
<circle id="Ellipse_106" data-name="Ellipse 106" cx="3.266" cy="3.266" r="3.266" transform="matrix(0.384, -0.924, 0.924, 0.384, 9.471, 11.874)" fill="#fff"/>
|
||||
<circle id="Ellipse_107" data-name="Ellipse 107" cx="3.927" cy="3.927" r="3.927" transform="matrix(0.384, -0.924, 0.924, 0.384, 0.009, 16.56)" fill="#fff"/>
|
||||
<circle id="Ellipse_108" data-name="Ellipse 108" cx="3.927" cy="3.927" r="3.927" transform="matrix(0.384, -0.924, 0.924, 0.384, 0.002, 7.252)" fill="#fff"/>
|
||||
<circle id="Ellipse_109" data-name="Ellipse 109" cx="3.927" cy="3.927" r="3.927" transform="matrix(0.384, -0.924, 0.924, 0.384, 0, 25.862)" fill="#fff"/>
|
||||
<circle id="Ellipse_110" data-name="Ellipse 110" cx="2.728" cy="2.728" r="2.728" transform="matrix(0.384, -0.924, 0.924, 0.384, 17.264, 15.911)" fill="#fff"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 5.9 KiB |
@@ -0,0 +1,16 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Generator: Adobe Illustrator 25.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
viewBox="0 0 277 328" style="enable-background:new 0 0 277 328;" xml:space="preserve">
|
||||
<style type="text/css">
|
||||
.st0{fill:#1689FB;}
|
||||
</style>
|
||||
<g id="Groupe_7859" transform="translate(-4.489 -11.849)">
|
||||
<circle id="Ellipse_105" class="st0" cx="159.8" cy="229.9" r="40.6"/>
|
||||
<circle id="Ellipse_106" class="st0" cx="159.8" cy="122.4" r="40.6"/>
|
||||
<circle id="Ellipse_107" class="st0" cx="53.8" cy="175.9" r="48.8"/>
|
||||
<circle id="Ellipse_108" class="st0" cx="53.7" cy="61" r="48.8"/>
|
||||
<circle id="Ellipse_109" class="st0" cx="53.7" cy="290.7" r="48.8"/>
|
||||
<circle id="Ellipse_110" class="st0" cx="247.4" cy="175.9" r="33.9"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 895 B |
@@ -0,0 +1 @@
|
||||
(function($){"use strict";$.ajaxChimp={responses:{"We have sent you a confirmation email":0,"Please enter a value":1,"An email address must contain a single @":2,"The domain portion of the email address is invalid (the portion after the @: )":3,"The username portion of the email address is invalid (the portion before the @: )":4,"This email address looks fake or invalid. Please enter a real email address":5},translations:{en:null},init:function(selector,options){$(selector).ajaxChimp(options)}};$.fn.ajaxChimp=function(options){$(this).each(function(i,elem){var form=$(elem);var email=form.find("input[type=email]");var label=form.find("label[for="+email.attr("id")+"]");var settings=$.extend({url:form.attr("action"),language:"en"},options);var url=settings.url.replace("/post?","/post-json?").concat("&c=?");form.attr("novalidate","true");email.attr("name","EMAIL");form.submit(function(){var msg;function successCallback(resp){if(resp.result==="success"){msg="We have sent you a confirmation email";label.removeClass("error").addClass("valid");email.removeClass("error").addClass("valid")}else{email.removeClass("valid").addClass("error");label.removeClass("valid").addClass("error");var index=-1;try{var parts=resp.msg.split(" - ",2);if(parts[1]===undefined){msg=resp.msg}else{var i=parseInt(parts[0],10);if(i.toString()===parts[0]){index=parts[0];msg=parts[1]}else{index=-1;msg=resp.msg}}}catch(e){index=-1;msg=resp.msg}}if(settings.language!=="en"&&$.ajaxChimp.responses[msg]!==undefined&&$.ajaxChimp.translations&&$.ajaxChimp.translations[settings.language]&&$.ajaxChimp.translations[settings.language][$.ajaxChimp.responses[msg]]){msg=$.ajaxChimp.translations[settings.language][$.ajaxChimp.responses[msg]]}label.html(msg);label.show(2e3);if(settings.callback){settings.callback(resp)}}var data={};var dataArray=form.serializeArray();$.each(dataArray,function(index,item){data[item.name]=item.value});$.ajax({url:url,data:data,success:successCallback,dataType:"jsonp",error:function(resp,text){console.log("mailchimp ajax submit error: "+text)}});var submitMsg="Submitting...";if(settings.language!=="en"&&$.ajaxChimp.translations&&$.ajaxChimp.translations[settings.language]&&$.ajaxChimp.translations[settings.language]["submit"]){submitMsg=$.ajaxChimp.translations[settings.language]["submit"]}label.html(submitMsg).show(2e3);return false})});return this}})(jQuery);
|
||||
@@ -0,0 +1,8 @@
|
||||
/*
|
||||
jQuery animateNumber plugin v0.0.10
|
||||
(c) 2013, Alexandr Borisov.
|
||||
https://github.com/aishek/jquery-animateNumber
|
||||
*/
|
||||
(function(d){var p=function(b){return b.split("").reverse().join("")},l={numberStep:function(b,a){var e=Math.floor(b);d(a.elem).text(e)}},h=function(b){var a=b.elem;a.nodeType&&a.parentNode&&(a=a._animateNumberSetter,a||(a=l.numberStep),a(b.now,b))};d.Tween&&d.Tween.propHooks?d.Tween.propHooks.number={set:h}:d.fx.step.number=h;d.animateNumber={numberStepFactories:{append:function(b){return function(a,e){var k=Math.floor(a);d(e.elem).prop("number",a).text(k+b)}},separator:function(b,a){b=b||" ";a=
|
||||
a||3;return function(e,k){var c=Math.floor(e).toString(),s=d(k.elem);if(c.length>a){for(var f=c,g=a,l=f.split("").reverse(),c=[],m,q,n,r=0,h=Math.ceil(f.length/g);r<h;r++){m="";for(n=0;n<g;n++){q=r*g+n;if(q===f.length)break;m+=l[q]}c.push(m)}f=c.length-1;g=p(c[f]);c[f]=p(parseInt(g,10).toString());c=c.join(b);c=p(c)}s.prop("number",e).text(c)}}}};d.fn.animateNumber=function(){for(var b=arguments[0],a=d.extend({},l,b),e=d(this),k=[a],c=1,h=arguments.length;c<h;c++)k.push(arguments[c]);if(b.numberStep){var f=
|
||||
this.each(function(){this._animateNumberSetter=b.numberStep}),g=a.complete;a.complete=function(){f.each(function(){delete this._animateNumberSetter});g&&g.apply(this,arguments)}}return e.animate.apply(e,k)}})(jQuery);
|
||||
@@ -0,0 +1,297 @@
|
||||
|
||||
|
||||
$(function() {
|
||||
"use strict";
|
||||
|
||||
|
||||
/* ==========================================================================
|
||||
Sub Form
|
||||
========================================================================== */
|
||||
|
||||
|
||||
|
||||
$('#mc-form').ajaxChimp({
|
||||
language: 'cm',
|
||||
url: 'http://csmthemes.us3.list-manage.com/subscribe/post?u=9666c25a337f497687875a388&id=5b881a50fb'
|
||||
//http://xxx.xxx.list-manage.com/subscribe/post?u=xxx&id=xxx
|
||||
});
|
||||
|
||||
|
||||
$.ajaxChimp.translations.cm = {
|
||||
'submit': 'Submitting...',
|
||||
0: '<i class="fa fa-envelope"></i> Awesome! Subscription confirmed',
|
||||
1: '<i class="fa fa-exclamation-triangle"></i> Please enter a value',
|
||||
2: '<i class="fa fa-exclamation-triangle"></i> An email address must contain a single @',
|
||||
3: '<i class="fa fa-exclamation-triangle"></i> The domain portion of the email address is invalid (the portion after the @: )',
|
||||
4: '<i class="fa fa-exclamation-triangle"></i> The username portion of the email address is invalid (the portion before the @: )',
|
||||
5: '<i class="fa fa-exclamation-triangle"></i> This email address looks fake or invalid. Please enter a real email address'
|
||||
}
|
||||
|
||||
|
||||
/* ==========================================================================
|
||||
Number animation
|
||||
========================================================================== */
|
||||
|
||||
|
||||
$('.counter').waypoint(function() {
|
||||
|
||||
var comma_separator_number_step = $.animateNumber.numberStepFactories.separator(',');
|
||||
|
||||
$('.total-number-1').animateNumber({
|
||||
number: 20, //change value here
|
||||
numberStep: comma_separator_number_step
|
||||
}, 2000);
|
||||
|
||||
$('.total-number-2').animateNumber({
|
||||
number: 5000, //change value here
|
||||
numberStep: comma_separator_number_step
|
||||
}, 2000);
|
||||
|
||||
$('.total-number-3').animateNumber({
|
||||
number: 10, //change value here
|
||||
numberStep: comma_separator_number_step
|
||||
}, 2000);
|
||||
|
||||
$('.total-number-4').animateNumber({
|
||||
number: 3000, //change value here
|
||||
numberStep: comma_separator_number_step
|
||||
}, 2000);
|
||||
|
||||
|
||||
|
||||
}, {
|
||||
offset: '80%'
|
||||
|
||||
});
|
||||
|
||||
|
||||
/* ==========================================================================
|
||||
sticky nav
|
||||
========================================================================== */
|
||||
|
||||
$('.navbar-default').waypoint('sticky', {
|
||||
offset: 30
|
||||
});
|
||||
|
||||
|
||||
|
||||
|
||||
/* ==========================================================================
|
||||
Tabs
|
||||
========================================================================== */
|
||||
|
||||
$('#schedule-days a').click(function(e) {
|
||||
e.preventDefault()
|
||||
$(this).tab('show')
|
||||
})
|
||||
|
||||
|
||||
/* ==========================================================================
|
||||
team
|
||||
========================================================================== */
|
||||
|
||||
$(".speaker-slider").owlCarousel({
|
||||
|
||||
items: 3,
|
||||
itemsDesktop: [1199, 3],
|
||||
itemsDesktopSmall: [979, 2]
|
||||
|
||||
});
|
||||
|
||||
|
||||
/* ==========================================================================
|
||||
Smooth Scroll
|
||||
========================================================================== */
|
||||
|
||||
$('a[href*=#]:not([href=#], #schedule-days a, .event-speaker a)').click(function() {
|
||||
if (location.pathname.replace(/^\//, '') == this.pathname.replace(/^\//, '') && location.hostname == this.hostname) {
|
||||
var target = $(this.hash);
|
||||
target = target.length ? target : $('[name=' + this.hash.slice(1) + ']');
|
||||
if (target.length) {
|
||||
$('html,body').animate({
|
||||
scrollTop: (target.offset().top - 40)
|
||||
}, 1000);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
|
||||
/* ==========================================================================
|
||||
Speaker bio
|
||||
========================================================================== */
|
||||
|
||||
|
||||
var is_firefox = navigator.userAgent.indexOf('Firefox') > -1;
|
||||
|
||||
|
||||
$('#speaker').find('.event-speaker a[data-type*="speaker-"]').on('click', function(event) {
|
||||
event.preventDefault();
|
||||
var selected_member = $(this).data('type');
|
||||
$('.cd-speaker-bio.' + selected_member + '').addClass('slide-in');
|
||||
$('.cd-speaker-bio-close').addClass('is-visible');
|
||||
|
||||
|
||||
if (is_firefox) {
|
||||
$('main').addClass('slide-out').one('webkitTransitionEnd otransitionend oTransitionEnd msTransitionEnd transitionend', function() {
|
||||
$('body').addClass('overflow-hidden');
|
||||
});
|
||||
} else {
|
||||
$('main').addClass('slide-out');
|
||||
$('body').addClass('overflow-hidden');
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
|
||||
$(document).on('click', '.cd-overlay, .cd-speaker-bio-close', function(event) {
|
||||
event.preventDefault();
|
||||
$('.cd-speaker-bio').removeClass('slide-in');
|
||||
$('.cd-speaker-bio-close').removeClass('is-visible');
|
||||
|
||||
if (is_firefox) {
|
||||
$('main').removeClass('slide-out').one('webkitTransitionEnd otransitionend oTransitionEnd msTransitionEnd transitionend', function() {
|
||||
$('body').removeClass('overflow-hidden');
|
||||
});
|
||||
} else {
|
||||
$('main').removeClass('slide-out');
|
||||
$('body').removeClass('overflow-hidden');
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/* ==========================================================================
|
||||
FAQ accordion
|
||||
========================================================================== */
|
||||
|
||||
|
||||
var MqM = 768,
|
||||
MqL = 1024;
|
||||
|
||||
var faqsSections = $('.cd-faq-group'),
|
||||
faqTrigger = $('.cd-faq-trigger'),
|
||||
faqsContainer = $('.cd-faq-items'),
|
||||
faqsCategoriesContainer = $('.cd-faq-categories'),
|
||||
faqsCategories = faqsCategoriesContainer.find('a'),
|
||||
closeFaqsContainer = $('.cd-close-panel');
|
||||
|
||||
|
||||
faqsCategories.on('click', function(event) {
|
||||
event.preventDefault();
|
||||
var selectedHref = $(this).attr('href'),
|
||||
target = $(selectedHref);
|
||||
if ($(window).width() < MqM) {
|
||||
faqsContainer.scrollTop(0).addClass('slide-in').children('ul').removeClass('selected').end().children(selectedHref).addClass('selected');
|
||||
closeFaqsContainer.addClass('move-left');
|
||||
$('body').addClass('cd-overlay');
|
||||
} else {
|
||||
$('body,html').animate({'scrollTop': target.offset().top - 19}, 200);
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
$('body').bind('click touchstart', function(event) {
|
||||
if ($(event.target).is('body.cd-overlay') || $(event.target).is('.cd-close-panel')) {
|
||||
closePanel(event);
|
||||
}
|
||||
});
|
||||
faqsContainer.on('swiperight', function(event) {
|
||||
closePanel(event);
|
||||
});
|
||||
|
||||
|
||||
faqTrigger.on('click', function(event) {
|
||||
event.preventDefault();
|
||||
$(this).next('.cd-faq-content').slideToggle(200).end().parent('li').toggleClass('content-visible');
|
||||
});
|
||||
|
||||
|
||||
|
||||
|
||||
/* ==========================================================================
|
||||
Contact Form
|
||||
========================================================================== */
|
||||
|
||||
|
||||
$('#contact-form').validate({
|
||||
rules: {
|
||||
name: {
|
||||
required: true,
|
||||
minlength: 2
|
||||
},
|
||||
email: {
|
||||
required: true,
|
||||
email: true
|
||||
},
|
||||
|
||||
message: {
|
||||
required: true,
|
||||
minlength: 10
|
||||
}
|
||||
},
|
||||
messages: {
|
||||
name: "<i class='fa fa-exclamation-triangle'></i>Please specify your name.",
|
||||
email: {
|
||||
required: "<i class='fa fa-exclamation-triangle'></i>We need your email address to contact you.",
|
||||
email: "<i class='fa fa-exclamation-triangle'></i>Please enter a valid email address."
|
||||
},
|
||||
message: "<i class='fa fa-exclamation-triangle'></i>Please enter your message."
|
||||
},
|
||||
submitHandler: function(form) {
|
||||
$(form).ajaxSubmit({
|
||||
type: "POST",
|
||||
data: $(form).serialize(),
|
||||
url: "php/contact-me.php",
|
||||
success: function() {
|
||||
$('#contact-form :input').attr('disabled', 'disabled');
|
||||
$('#contact-form').fadeTo("slow", 0.15, function() {
|
||||
$(this).find(':input').attr('disabled', 'disabled');
|
||||
$(this).find('label').css('cursor', 'default');
|
||||
$('.success-cf').fadeIn();
|
||||
});
|
||||
$('#contact-form')[0].reset();
|
||||
},
|
||||
error: function() {
|
||||
$('#contact-form').fadeTo("slow", 0.15, function() {
|
||||
$('.error-cf').fadeIn();
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
/* ==========================================================================
|
||||
ScrollTop Button
|
||||
========================================================================== */
|
||||
|
||||
|
||||
$(window).scroll(function() {
|
||||
if ($(this).scrollTop() > 200) {
|
||||
$('.scroll-top a').fadeIn(200);
|
||||
} else {
|
||||
$('.scroll-top a').fadeOut(200);
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
$('.scroll-top a').click(function(event) {
|
||||
event.preventDefault();
|
||||
|
||||
$('html, body').animate({
|
||||
scrollTop: 0
|
||||
}, 1000);
|
||||
});
|
||||
|
||||
/* ==========================================================================
|
||||
Collapse nav bar
|
||||
========================================================================== */
|
||||
$(".navbar-nav li a").on('click', function() {
|
||||
$(".navbar-collapse").collapse('hide');
|
||||
});
|
||||
|
||||
});
|
||||
@@ -0,0 +1,47 @@
|
||||
"function"!==typeof Object.create&&(Object.create=function(f){function g(){}g.prototype=f;return new g});
|
||||
(function(f,g,k){var l={init:function(a,b){this.$elem=f(b);this.options=f.extend({},f.fn.owlCarousel.options,this.$elem.data(),a);this.userOptions=a;this.loadContent()},loadContent:function(){function a(a){var d,e="";if("function"===typeof b.options.jsonSuccess)b.options.jsonSuccess.apply(this,[a]);else{for(d in a.owl)a.owl.hasOwnProperty(d)&&(e+=a.owl[d].item);b.$elem.html(e)}b.logIn()}var b=this,e;"function"===typeof b.options.beforeInit&&b.options.beforeInit.apply(this,[b.$elem]);"string"===typeof b.options.jsonPath?
|
||||
(e=b.options.jsonPath,f.getJSON(e,a)):b.logIn()},logIn:function(){this.$elem.data("owl-originalStyles",this.$elem.attr("style"));this.$elem.data("owl-originalClasses",this.$elem.attr("class"));this.$elem.css({opacity:0});this.orignalItems=this.options.items;this.checkBrowser();this.wrapperWidth=0;this.checkVisible=null;this.setVars()},setVars:function(){if(0===this.$elem.children().length)return!1;this.baseClass();this.eventTypes();this.$userItems=this.$elem.children();this.itemsAmount=this.$userItems.length;
|
||||
this.wrapItems();this.$owlItems=this.$elem.find(".owl-item");this.$owlWrapper=this.$elem.find(".owl-wrapper");this.playDirection="next";this.prevItem=0;this.prevArr=[0];this.currentItem=0;this.customEvents();this.onStartup()},onStartup:function(){this.updateItems();this.calculateAll();this.buildControls();this.updateControls();this.response();this.moveEvents();this.stopOnHover();this.owlStatus();!1!==this.options.transitionStyle&&this.transitionTypes(this.options.transitionStyle);!0===this.options.autoPlay&&
|
||||
(this.options.autoPlay=5E3);this.play();this.$elem.find(".owl-wrapper").css("display","block");this.$elem.is(":visible")?this.$elem.css("opacity",1):this.watchVisibility();this.onstartup=!1;this.eachMoveUpdate();"function"===typeof this.options.afterInit&&this.options.afterInit.apply(this,[this.$elem])},eachMoveUpdate:function(){!0===this.options.lazyLoad&&this.lazyLoad();!0===this.options.autoHeight&&this.autoHeight();this.onVisibleItems();"function"===typeof this.options.afterAction&&this.options.afterAction.apply(this,
|
||||
[this.$elem])},updateVars:function(){"function"===typeof this.options.beforeUpdate&&this.options.beforeUpdate.apply(this,[this.$elem]);this.watchVisibility();this.updateItems();this.calculateAll();this.updatePosition();this.updateControls();this.eachMoveUpdate();"function"===typeof this.options.afterUpdate&&this.options.afterUpdate.apply(this,[this.$elem])},reload:function(){var a=this;g.setTimeout(function(){a.updateVars()},0)},watchVisibility:function(){var a=this;if(!1===a.$elem.is(":visible"))a.$elem.css({opacity:0}),
|
||||
g.clearInterval(a.autoPlayInterval),g.clearInterval(a.checkVisible);else return!1;a.checkVisible=g.setInterval(function(){a.$elem.is(":visible")&&(a.reload(),a.$elem.animate({opacity:1},200),g.clearInterval(a.checkVisible))},500)},wrapItems:function(){this.$userItems.wrapAll('<div class="owl-wrapper">').wrap('<div class="owl-item"></div>');this.$elem.find(".owl-wrapper").wrap('<div class="owl-wrapper-outer">');this.wrapperOuter=this.$elem.find(".owl-wrapper-outer");this.$elem.css("display","block")},
|
||||
baseClass:function(){var a=this.$elem.hasClass(this.options.baseClass),b=this.$elem.hasClass(this.options.theme);a||this.$elem.addClass(this.options.baseClass);b||this.$elem.addClass(this.options.theme)},updateItems:function(){var a,b;if(!1===this.options.responsive)return!1;if(!0===this.options.singleItem)return this.options.items=this.orignalItems=1,this.options.itemsCustom=!1,this.options.itemsDesktop=!1,this.options.itemsDesktopSmall=!1,this.options.itemsTablet=!1,this.options.itemsTabletSmall=
|
||||
!1,this.options.itemsMobile=!1;a=f(this.options.responsiveBaseWidth).width();a>(this.options.itemsDesktop[0]||this.orignalItems)&&(this.options.items=this.orignalItems);if(!1!==this.options.itemsCustom)for(this.options.itemsCustom.sort(function(a,b){return a[0]-b[0]}),b=0;b<this.options.itemsCustom.length;b+=1)this.options.itemsCustom[b][0]<=a&&(this.options.items=this.options.itemsCustom[b][1]);else a<=this.options.itemsDesktop[0]&&!1!==this.options.itemsDesktop&&(this.options.items=this.options.itemsDesktop[1]),
|
||||
a<=this.options.itemsDesktopSmall[0]&&!1!==this.options.itemsDesktopSmall&&(this.options.items=this.options.itemsDesktopSmall[1]),a<=this.options.itemsTablet[0]&&!1!==this.options.itemsTablet&&(this.options.items=this.options.itemsTablet[1]),a<=this.options.itemsTabletSmall[0]&&!1!==this.options.itemsTabletSmall&&(this.options.items=this.options.itemsTabletSmall[1]),a<=this.options.itemsMobile[0]&&!1!==this.options.itemsMobile&&(this.options.items=this.options.itemsMobile[1]);this.options.items>this.itemsAmount&&
|
||||
!0===this.options.itemsScaleUp&&(this.options.items=this.itemsAmount)},response:function(){var a=this,b,e;if(!0!==a.options.responsive)return!1;e=f(g).width();a.resizer=function(){f(g).width()!==e&&(!1!==a.options.autoPlay&&g.clearInterval(a.autoPlayInterval),g.clearTimeout(b),b=g.setTimeout(function(){e=f(g).width();a.updateVars()},a.options.responsiveRefreshRate))};f(g).resize(a.resizer)},updatePosition:function(){this.jumpTo(this.currentItem);!1!==this.options.autoPlay&&this.checkAp()},appendItemsSizes:function(){var a=
|
||||
this,b=0,e=a.itemsAmount-a.options.items;a.$owlItems.each(function(c){var d=f(this);d.css({width:a.itemWidth}).data("owl-item",Number(c));if(0===c%a.options.items||c===e)c>e||(b+=1);d.data("owl-roundPages",b)})},appendWrapperSizes:function(){this.$owlWrapper.css({width:this.$owlItems.length*this.itemWidth*2,left:0});this.appendItemsSizes()},calculateAll:function(){this.calculateWidth();this.appendWrapperSizes();this.loops();this.max()},calculateWidth:function(){this.itemWidth=Math.round(this.$elem.width()/
|
||||
this.options.items)},max:function(){var a=-1*(this.itemsAmount*this.itemWidth-this.options.items*this.itemWidth);this.options.items>this.itemsAmount?this.maximumPixels=a=this.maximumItem=0:(this.maximumItem=this.itemsAmount-this.options.items,this.maximumPixels=a);return a},min:function(){return 0},loops:function(){var a=0,b=0,e,c;this.positionsInArray=[0];this.pagesInArray=[];for(e=0;e<this.itemsAmount;e+=1)b+=this.itemWidth,this.positionsInArray.push(-b),!0===this.options.scrollPerPage&&(c=f(this.$owlItems[e]),
|
||||
c=c.data("owl-roundPages"),c!==a&&(this.pagesInArray[a]=this.positionsInArray[e],a=c))},buildControls:function(){if(!0===this.options.navigation||!0===this.options.pagination)this.owlControls=f('<div class="owl-controls"/>').toggleClass("clickable",!this.browser.isTouch).appendTo(this.$elem);!0===this.options.pagination&&this.buildPagination();!0===this.options.navigation&&this.buildButtons()},buildButtons:function(){var a=this,b=f('<div class="owl-buttons"/>');a.owlControls.append(b);a.buttonPrev=
|
||||
f("<div/>",{"class":"owl-prev",html:a.options.navigationText[0]||""});a.buttonNext=f("<div/>",{"class":"owl-next",html:a.options.navigationText[1]||""});b.append(a.buttonPrev).append(a.buttonNext);b.on("touchstart.owlControls mousedown.owlControls",'div[class^="owl"]',function(a){a.preventDefault()});b.on("touchend.owlControls mouseup.owlControls",'div[class^="owl"]',function(b){b.preventDefault();f(this).hasClass("owl-next")?a.next():a.prev()})},buildPagination:function(){var a=this;a.paginationWrapper=
|
||||
f('<div class="owl-pagination"/>');a.owlControls.append(a.paginationWrapper);a.paginationWrapper.on("touchend.owlControls mouseup.owlControls",".owl-page",function(b){b.preventDefault();Number(f(this).data("owl-page"))!==a.currentItem&&a.goTo(Number(f(this).data("owl-page")),!0)})},updatePagination:function(){var a,b,e,c,d,g;if(!1===this.options.pagination)return!1;this.paginationWrapper.html("");a=0;b=this.itemsAmount-this.itemsAmount%this.options.items;for(c=0;c<this.itemsAmount;c+=1)0===c%this.options.items&&
|
||||
(a+=1,b===c&&(e=this.itemsAmount-this.options.items),d=f("<div/>",{"class":"owl-page"}),g=f("<span></span>",{text:!0===this.options.paginationNumbers?a:"","class":!0===this.options.paginationNumbers?"owl-numbers":""}),d.append(g),d.data("owl-page",b===c?e:c),d.data("owl-roundPages",a),this.paginationWrapper.append(d));this.checkPagination()},checkPagination:function(){var a=this;if(!1===a.options.pagination)return!1;a.paginationWrapper.find(".owl-page").each(function(){f(this).data("owl-roundPages")===
|
||||
f(a.$owlItems[a.currentItem]).data("owl-roundPages")&&(a.paginationWrapper.find(".owl-page").removeClass("active"),f(this).addClass("active"))})},checkNavigation:function(){if(!1===this.options.navigation)return!1;!1===this.options.rewindNav&&(0===this.currentItem&&0===this.maximumItem?(this.buttonPrev.addClass("disabled"),this.buttonNext.addClass("disabled")):0===this.currentItem&&0!==this.maximumItem?(this.buttonPrev.addClass("disabled"),this.buttonNext.removeClass("disabled")):this.currentItem===
|
||||
this.maximumItem?(this.buttonPrev.removeClass("disabled"),this.buttonNext.addClass("disabled")):0!==this.currentItem&&this.currentItem!==this.maximumItem&&(this.buttonPrev.removeClass("disabled"),this.buttonNext.removeClass("disabled")))},updateControls:function(){this.updatePagination();this.checkNavigation();this.owlControls&&(this.options.items>=this.itemsAmount?this.owlControls.hide():this.owlControls.show())},destroyControls:function(){this.owlControls&&this.owlControls.remove()},next:function(a){if(this.isTransition)return!1;
|
||||
this.currentItem+=!0===this.options.scrollPerPage?this.options.items:1;if(this.currentItem>this.maximumItem+(!0===this.options.scrollPerPage?this.options.items-1:0))if(!0===this.options.rewindNav)this.currentItem=0,a="rewind";else return this.currentItem=this.maximumItem,!1;this.goTo(this.currentItem,a)},prev:function(a){if(this.isTransition)return!1;this.currentItem=!0===this.options.scrollPerPage&&0<this.currentItem&&this.currentItem<this.options.items?0:this.currentItem-(!0===this.options.scrollPerPage?
|
||||
this.options.items:1);if(0>this.currentItem)if(!0===this.options.rewindNav)this.currentItem=this.maximumItem,a="rewind";else return this.currentItem=0,!1;this.goTo(this.currentItem,a)},goTo:function(a,b,e){var c=this;if(c.isTransition)return!1;"function"===typeof c.options.beforeMove&&c.options.beforeMove.apply(this,[c.$elem]);a>=c.maximumItem?a=c.maximumItem:0>=a&&(a=0);c.currentItem=c.owl.currentItem=a;if(!1!==c.options.transitionStyle&&"drag"!==e&&1===c.options.items&&!0===c.browser.support3d)return c.swapSpeed(0),
|
||||
!0===c.browser.support3d?c.transition3d(c.positionsInArray[a]):c.css2slide(c.positionsInArray[a],1),c.afterGo(),c.singleItemTransition(),!1;a=c.positionsInArray[a];!0===c.browser.support3d?(c.isCss3Finish=!1,!0===b?(c.swapSpeed("paginationSpeed"),g.setTimeout(function(){c.isCss3Finish=!0},c.options.paginationSpeed)):"rewind"===b?(c.swapSpeed(c.options.rewindSpeed),g.setTimeout(function(){c.isCss3Finish=!0},c.options.rewindSpeed)):(c.swapSpeed("slideSpeed"),g.setTimeout(function(){c.isCss3Finish=!0},
|
||||
c.options.slideSpeed)),c.transition3d(a)):!0===b?c.css2slide(a,c.options.paginationSpeed):"rewind"===b?c.css2slide(a,c.options.rewindSpeed):c.css2slide(a,c.options.slideSpeed);c.afterGo()},jumpTo:function(a){"function"===typeof this.options.beforeMove&&this.options.beforeMove.apply(this,[this.$elem]);a>=this.maximumItem||-1===a?a=this.maximumItem:0>=a&&(a=0);this.swapSpeed(0);!0===this.browser.support3d?this.transition3d(this.positionsInArray[a]):this.css2slide(this.positionsInArray[a],1);this.currentItem=
|
||||
this.owl.currentItem=a;this.afterGo()},afterGo:function(){this.prevArr.push(this.currentItem);this.prevItem=this.owl.prevItem=this.prevArr[this.prevArr.length-2];this.prevArr.shift(0);this.prevItem!==this.currentItem&&(this.checkPagination(),this.checkNavigation(),this.eachMoveUpdate(),!1!==this.options.autoPlay&&this.checkAp());"function"===typeof this.options.afterMove&&this.prevItem!==this.currentItem&&this.options.afterMove.apply(this,[this.$elem])},stop:function(){this.apStatus="stop";g.clearInterval(this.autoPlayInterval)},
|
||||
checkAp:function(){"stop"!==this.apStatus&&this.play()},play:function(){var a=this;a.apStatus="play";if(!1===a.options.autoPlay)return!1;g.clearInterval(a.autoPlayInterval);a.autoPlayInterval=g.setInterval(function(){a.next(!0)},a.options.autoPlay)},swapSpeed:function(a){"slideSpeed"===a?this.$owlWrapper.css(this.addCssSpeed(this.options.slideSpeed)):"paginationSpeed"===a?this.$owlWrapper.css(this.addCssSpeed(this.options.paginationSpeed)):"string"!==typeof a&&this.$owlWrapper.css(this.addCssSpeed(a))},
|
||||
addCssSpeed:function(a){return{"-webkit-transition":"all "+a+"ms ease","-moz-transition":"all "+a+"ms ease","-o-transition":"all "+a+"ms ease",transition:"all "+a+"ms ease"}},removeTransition:function(){return{"-webkit-transition":"","-moz-transition":"","-o-transition":"",transition:""}},doTranslate:function(a){return{"-webkit-transform":"translate3d("+a+"px, 0px, 0px)","-moz-transform":"translate3d("+a+"px, 0px, 0px)","-o-transform":"translate3d("+a+"px, 0px, 0px)","-ms-transform":"translate3d("+
|
||||
a+"px, 0px, 0px)",transform:"translate3d("+a+"px, 0px,0px)"}},transition3d:function(a){this.$owlWrapper.css(this.doTranslate(a))},css2move:function(a){this.$owlWrapper.css({left:a})},css2slide:function(a,b){var e=this;e.isCssFinish=!1;e.$owlWrapper.stop(!0,!0).animate({left:a},{duration:b||e.options.slideSpeed,complete:function(){e.isCssFinish=!0}})},checkBrowser:function(){var a=k.createElement("div");a.style.cssText=" -moz-transform:translate3d(0px, 0px, 0px); -ms-transform:translate3d(0px, 0px, 0px); -o-transform:translate3d(0px, 0px, 0px); -webkit-transform:translate3d(0px, 0px, 0px); transform:translate3d(0px, 0px, 0px)";
|
||||
a=a.style.cssText.match(/translate3d\(0px, 0px, 0px\)/g);this.browser={support3d:null!==a&&1===a.length,isTouch:"ontouchstart"in g||g.navigator.msMaxTouchPoints}},moveEvents:function(){if(!1!==this.options.mouseDrag||!1!==this.options.touchDrag)this.gestures(),this.disabledEvents()},eventTypes:function(){var a=["s","e","x"];this.ev_types={};!0===this.options.mouseDrag&&!0===this.options.touchDrag?a=["touchstart.owl mousedown.owl","touchmove.owl mousemove.owl","touchend.owl touchcancel.owl mouseup.owl"]:
|
||||
!1===this.options.mouseDrag&&!0===this.options.touchDrag?a=["touchstart.owl","touchmove.owl","touchend.owl touchcancel.owl"]:!0===this.options.mouseDrag&&!1===this.options.touchDrag&&(a=["mousedown.owl","mousemove.owl","mouseup.owl"]);this.ev_types.start=a[0];this.ev_types.move=a[1];this.ev_types.end=a[2]},disabledEvents:function(){this.$elem.on("dragstart.owl",function(a){a.preventDefault()});this.$elem.on("mousedown.disableTextSelect",function(a){return f(a.target).is("input, textarea, select, option")})},
|
||||
gestures:function(){function a(a){if(void 0!==a.touches)return{x:a.touches[0].pageX,y:a.touches[0].pageY};if(void 0===a.touches){if(void 0!==a.pageX)return{x:a.pageX,y:a.pageY};if(void 0===a.pageX)return{x:a.clientX,y:a.clientY}}}function b(a){"on"===a?(f(k).on(d.ev_types.move,e),f(k).on(d.ev_types.end,c)):"off"===a&&(f(k).off(d.ev_types.move),f(k).off(d.ev_types.end))}function e(b){b=b.originalEvent||b||g.event;d.newPosX=a(b).x-h.offsetX;d.newPosY=a(b).y-h.offsetY;d.newRelativeX=d.newPosX-h.relativePos;
|
||||
"function"===typeof d.options.startDragging&&!0!==h.dragging&&0!==d.newRelativeX&&(h.dragging=!0,d.options.startDragging.apply(d,[d.$elem]));(8<d.newRelativeX||-8>d.newRelativeX)&&!0===d.browser.isTouch&&(void 0!==b.preventDefault?b.preventDefault():b.returnValue=!1,h.sliding=!0);(10<d.newPosY||-10>d.newPosY)&&!1===h.sliding&&f(k).off("touchmove.owl");d.newPosX=Math.max(Math.min(d.newPosX,d.newRelativeX/5),d.maximumPixels+d.newRelativeX/5);!0===d.browser.support3d?d.transition3d(d.newPosX):d.css2move(d.newPosX)}
|
||||
function c(a){a=a.originalEvent||a||g.event;var c;a.target=a.target||a.srcElement;h.dragging=!1;!0!==d.browser.isTouch&&d.$owlWrapper.removeClass("grabbing");d.dragDirection=0>d.newRelativeX?d.owl.dragDirection="left":d.owl.dragDirection="right";0!==d.newRelativeX&&(c=d.getNewPosition(),d.goTo(c,!1,"drag"),h.targetElement===a.target&&!0!==d.browser.isTouch&&(f(a.target).on("click.disable",function(a){a.stopImmediatePropagation();a.stopPropagation();a.preventDefault();f(a.target).off("click.disable")}),
|
||||
a=f._data(a.target,"events").click,c=a.pop(),a.splice(0,0,c)));b("off")}var d=this,h={offsetX:0,offsetY:0,baseElWidth:0,relativePos:0,position:null,minSwipe:null,maxSwipe:null,sliding:null,dargging:null,targetElement:null};d.isCssFinish=!0;d.$elem.on(d.ev_types.start,".owl-wrapper",function(c){c=c.originalEvent||c||g.event;var e;if(3===c.which)return!1;if(!(d.itemsAmount<=d.options.items)){if(!1===d.isCssFinish&&!d.options.dragBeforeAnimFinish||!1===d.isCss3Finish&&!d.options.dragBeforeAnimFinish)return!1;
|
||||
!1!==d.options.autoPlay&&g.clearInterval(d.autoPlayInterval);!0===d.browser.isTouch||d.$owlWrapper.hasClass("grabbing")||d.$owlWrapper.addClass("grabbing");d.newPosX=0;d.newRelativeX=0;f(this).css(d.removeTransition());e=f(this).position();h.relativePos=e.left;h.offsetX=a(c).x-e.left;h.offsetY=a(c).y-e.top;b("on");h.sliding=!1;h.targetElement=c.target||c.srcElement}})},getNewPosition:function(){var a=this.closestItem();a>this.maximumItem?a=this.currentItem=this.maximumItem:0<=this.newPosX&&(this.currentItem=
|
||||
a=0);return a},closestItem:function(){var a=this,b=!0===a.options.scrollPerPage?a.pagesInArray:a.positionsInArray,e=a.newPosX,c=null;f.each(b,function(d,g){e-a.itemWidth/20>b[d+1]&&e-a.itemWidth/20<g&&"left"===a.moveDirection()?(c=g,a.currentItem=!0===a.options.scrollPerPage?f.inArray(c,a.positionsInArray):d):e+a.itemWidth/20<g&&e+a.itemWidth/20>(b[d+1]||b[d]-a.itemWidth)&&"right"===a.moveDirection()&&(!0===a.options.scrollPerPage?(c=b[d+1]||b[b.length-1],a.currentItem=f.inArray(c,a.positionsInArray)):
|
||||
(c=b[d+1],a.currentItem=d+1))});return a.currentItem},moveDirection:function(){var a;0>this.newRelativeX?(a="right",this.playDirection="next"):(a="left",this.playDirection="prev");return a},customEvents:function(){var a=this;a.$elem.on("owl.next",function(){a.next()});a.$elem.on("owl.prev",function(){a.prev()});a.$elem.on("owl.play",function(b,e){a.options.autoPlay=e;a.play();a.hoverStatus="play"});a.$elem.on("owl.stop",function(){a.stop();a.hoverStatus="stop"});a.$elem.on("owl.goTo",function(b,e){a.goTo(e)});
|
||||
a.$elem.on("owl.jumpTo",function(b,e){a.jumpTo(e)})},stopOnHover:function(){var a=this;!0===a.options.stopOnHover&&!0!==a.browser.isTouch&&!1!==a.options.autoPlay&&(a.$elem.on("mouseover",function(){a.stop()}),a.$elem.on("mouseout",function(){"stop"!==a.hoverStatus&&a.play()}))},lazyLoad:function(){var a,b,e,c,d;if(!1===this.options.lazyLoad)return!1;for(a=0;a<this.itemsAmount;a+=1)b=f(this.$owlItems[a]),"loaded"!==b.data("owl-loaded")&&(e=b.data("owl-item"),c=b.find(".lazyOwl"),"string"!==typeof c.data("src")?
|
||||
b.data("owl-loaded","loaded"):(void 0===b.data("owl-loaded")&&(c.hide(),b.addClass("loading").data("owl-loaded","checked")),(d=!0===this.options.lazyFollow?e>=this.currentItem:!0)&&e<this.currentItem+this.options.items&&c.length&&this.lazyPreload(b,c)))},lazyPreload:function(a,b){function e(){a.data("owl-loaded","loaded").removeClass("loading");b.removeAttr("data-src");"fade"===d.options.lazyEffect?b.fadeIn(400):b.show();"function"===typeof d.options.afterLazyLoad&&d.options.afterLazyLoad.apply(this,
|
||||
[d.$elem])}function c(){f+=1;d.completeImg(b.get(0))||!0===k?e():100>=f?g.setTimeout(c,100):e()}var d=this,f=0,k;"DIV"===b.prop("tagName")?(b.css("background-image","url("+b.data("src")+")"),k=!0):b[0].src=b.data("src");c()},autoHeight:function(){function a(){var a=f(e.$owlItems[e.currentItem]).height();e.wrapperOuter.css("height",a+"px");e.wrapperOuter.hasClass("autoHeight")||g.setTimeout(function(){e.wrapperOuter.addClass("autoHeight")},0)}function b(){d+=1;e.completeImg(c.get(0))?a():100>=d?g.setTimeout(b,
|
||||
100):e.wrapperOuter.css("height","")}var e=this,c=f(e.$owlItems[e.currentItem]).find("img"),d;void 0!==c.get(0)?(d=0,b()):a()},completeImg:function(a){return!a.complete||"undefined"!==typeof a.naturalWidth&&0===a.naturalWidth?!1:!0},onVisibleItems:function(){var a;!0===this.options.addClassActive&&this.$owlItems.removeClass("active");this.visibleItems=[];for(a=this.currentItem;a<this.currentItem+this.options.items;a+=1)this.visibleItems.push(a),!0===this.options.addClassActive&&f(this.$owlItems[a]).addClass("active");
|
||||
this.owl.visibleItems=this.visibleItems},transitionTypes:function(a){this.outClass="owl-"+a+"-out";this.inClass="owl-"+a+"-in"},singleItemTransition:function(){var a=this,b=a.outClass,e=a.inClass,c=a.$owlItems.eq(a.currentItem),d=a.$owlItems.eq(a.prevItem),f=Math.abs(a.positionsInArray[a.currentItem])+a.positionsInArray[a.prevItem],g=Math.abs(a.positionsInArray[a.currentItem])+a.itemWidth/2;a.isTransition=!0;a.$owlWrapper.addClass("owl-origin").css({"-webkit-transform-origin":g+"px","-moz-perspective-origin":g+
|
||||
"px","perspective-origin":g+"px"});d.css({position:"relative",left:f+"px"}).addClass(b).on("webkitAnimationEnd oAnimationEnd MSAnimationEnd animationend",function(){a.endPrev=!0;d.off("webkitAnimationEnd oAnimationEnd MSAnimationEnd animationend");a.clearTransStyle(d,b)});c.addClass(e).on("webkitAnimationEnd oAnimationEnd MSAnimationEnd animationend",function(){a.endCurrent=!0;c.off("webkitAnimationEnd oAnimationEnd MSAnimationEnd animationend");a.clearTransStyle(c,e)})},clearTransStyle:function(a,
|
||||
b){a.css({position:"",left:""}).removeClass(b);this.endPrev&&this.endCurrent&&(this.$owlWrapper.removeClass("owl-origin"),this.isTransition=this.endCurrent=this.endPrev=!1)},owlStatus:function(){this.owl={userOptions:this.userOptions,baseElement:this.$elem,userItems:this.$userItems,owlItems:this.$owlItems,currentItem:this.currentItem,prevItem:this.prevItem,visibleItems:this.visibleItems,isTouch:this.browser.isTouch,browser:this.browser,dragDirection:this.dragDirection}},clearEvents:function(){this.$elem.off(".owl owl mousedown.disableTextSelect");
|
||||
f(k).off(".owl owl");f(g).off("resize",this.resizer)},unWrap:function(){0!==this.$elem.children().length&&(this.$owlWrapper.unwrap(),this.$userItems.unwrap().unwrap(),this.owlControls&&this.owlControls.remove());this.clearEvents();this.$elem.attr("style",this.$elem.data("owl-originalStyles")||"").attr("class",this.$elem.data("owl-originalClasses"))},destroy:function(){this.stop();g.clearInterval(this.checkVisible);this.unWrap();this.$elem.removeData()},reinit:function(a){a=f.extend({},this.userOptions,
|
||||
a);this.unWrap();this.init(a,this.$elem)},addItem:function(a,b){var e;if(!a)return!1;if(0===this.$elem.children().length)return this.$elem.append(a),this.setVars(),!1;this.unWrap();e=void 0===b||-1===b?-1:b;e>=this.$userItems.length||-1===e?this.$userItems.eq(-1).after(a):this.$userItems.eq(e).before(a);this.setVars()},removeItem:function(a){if(0===this.$elem.children().length)return!1;a=void 0===a||-1===a?-1:a;this.unWrap();this.$userItems.eq(a).remove();this.setVars()}};f.fn.owlCarousel=function(a){return this.each(function(){if(!0===
|
||||
f(this).data("owl-init"))return!1;f(this).data("owl-init",!0);var b=Object.create(l);b.init(a,this);f.data(this,"owlCarousel",b)})};f.fn.owlCarousel.options={items:5,itemsCustom:!1,itemsDesktop:[1199,4],itemsDesktopSmall:[979,3],itemsTablet:[768,2],itemsTabletSmall:!1,itemsMobile:[479,1],singleItem:!1,itemsScaleUp:!1,slideSpeed:200,paginationSpeed:800,rewindSpeed:1E3,autoPlay:!1,stopOnHover:!1,navigation:!1,navigationText:["prev","next"],rewindNav:!0,scrollPerPage:!1,pagination:!0,paginationNumbers:!1,
|
||||
responsive:!0,responsiveRefreshRate:200,responsiveBaseWidth:g,baseClass:"owl-carousel",theme:"owl-theme",lazyLoad:!1,lazyFollow:!0,lazyEffect:"fade",autoHeight:!1,jsonPath:!1,jsonSuccess:!1,dragBeforeAnimFinish:!0,mouseDrag:!0,touchDrag:!0,addClassActive:!1,transitionStyle:!1,beforeUpdate:!1,afterUpdate:!1,beforeInit:!1,afterInit:!1,beforeMove:!1,afterMove:!1,afterAction:!1,startDragging:!1,afterLazyLoad:!1}})(jQuery,window,document);
|
||||
@@ -0,0 +1,10 @@
|
||||
/*!
|
||||
* Retina.js v1.4.0
|
||||
*
|
||||
* Copyright 2016 Imulus, LLC
|
||||
* Released under the MIT license
|
||||
*
|
||||
* Retina.js is an open source script that makes it easy to serve
|
||||
* high-resolution images to devices with retina displays.
|
||||
*/
|
||||
!function(){function a(){}function b(a){return f.retinaImageSuffix+a}function c(a,c){if(this.path=a||"","undefined"!=typeof c&&null!==c)this.at_2x_path=c,this.perform_check=!1;else{if(void 0!==document.createElement){var d=document.createElement("a");d.href=this.path,d.pathname=d.pathname.replace(g,b),this.at_2x_path=d.href}else{var e=this.path.split("?");e[0]=e[0].replace(g,b),this.at_2x_path=e.join("?")}this.perform_check=!0}}function d(a){this.el=a,this.path=new c(this.el.getAttribute("src"),this.el.getAttribute("data-at2x"));var b=this;this.path.check_2x_variant(function(a){a&&b.swap()})}var e="undefined"==typeof exports?window:exports,f={retinaImageSuffix:"@2x",check_mime_type:!0,retinaImgTagSelector:"body img",force_original_dimensions:!0};e.Retina=a,a.configure=function(a){null===a&&(a={});for(var b in a)a.hasOwnProperty(b)&&(f[b]=a[b])},a.init=function(a){null===a&&(a=e),a.addEventListener("load",function(){var a,b,c=document.querySelectorAll(f.retinaImgTagSelector),e=[];for(a=0;a<c.length;a+=1)b=c[a],b.getAttributeNode("data-no-retina")||b.src&&e.push(new d(b))})},a.isRetina=function(){var a="(-webkit-min-device-pixel-ratio: 1.5), (min--moz-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3/2), (min-resolution: 1.5dppx)";return e.devicePixelRatio>1?!0:!(!e.matchMedia||!e.matchMedia(a).matches)};var g=/\.[\w\?=]+$/;e.RetinaImagePath=c,c.confirmed_paths=[],c.prototype.is_external=function(){return!(!this.path.match(/^(https?\:|\/\/)/i)||this.path.match("//"+document.domain))},c.prototype.check_2x_variant=function(a){var b,d=this;return this.perform_check||"undefined"==typeof this.at_2x_path||null===this.at_2x_path?this.at_2x_path in c.confirmed_paths?a(!0):this.is_external()?a(!1):(b=new XMLHttpRequest,b.open("HEAD",this.at_2x_path),b.onreadystatechange=function(){if(4!==b.readyState)return a(!1);if(b.status>=200&&b.status<=399){if(f.check_mime_type){var e=b.getResponseHeader("Content-Type");if(null===e||!e.match(/^image/i))return a(!1)}return c.confirmed_paths.push(d.at_2x_path),a(!0)}return a(!1)},b.send(),void 0):a(!0)},e.RetinaImage=d,d.prototype.swap=function(a){function b(){c.el.complete?(f.force_original_dimensions&&(0===c.el.offsetWidth&&0===c.el.offsetHeight?(c.el.setAttribute("width",c.el.naturalWidth),c.el.setAttribute("height",c.el.naturalHeight)):(c.el.setAttribute("width",c.el.offsetWidth),c.el.setAttribute("height",c.el.offsetHeight))),c.el.setAttribute("src",a)):setTimeout(b,5)}"undefined"==typeof a&&(a=this.path.at_2x_path);var c=this;b()},a.isRetina()&&a.init(e)}();
|
||||
@@ -0,0 +1,8 @@
|
||||
// Generated by CoffeeScript 1.6.2
|
||||
/*
|
||||
Sticky Elements Shortcut for jQuery Waypoints - v2.0.5
|
||||
Copyright (c) 2011-2014 Caleb Troughton
|
||||
Licensed under the MIT license.
|
||||
https://github.com/imakewebthings/jquery-waypoints/blob/master/licenses.txt
|
||||
*/
|
||||
(function(){(function(t,n){if(typeof define==="function"&&define.amd){return define(["jquery","waypoints"],n)}else{return n(t.jQuery)}})(window,function(t){var n,i;n={wrapper:'<div class="sticky-wrapper" />',stuckClass:"stuck",direction:"down right"};i=function(t,n){var i;t.wrap(n.wrapper);i=t.parent();return i.data("isWaypointStickyWrapper",true)};t.waypoints("extendFn","sticky",function(r){var e,a,s;a=t.extend({},t.fn.waypoint.defaults,n,r);e=i(this,a);s=a.handler;a.handler=function(n){var i,r;i=t(this).children(":first");r=a.direction.indexOf(n)!==-1;i.toggleClass(a.stuckClass,r);e.height(r?i.outerHeight():"");if(s!=null){return s.call(this,n)}};e.waypoint(a);return this.data("stuckClass",a.stuckClass)});return t.waypoints("extendFn","unsticky",function(){var t;t=this.parent();if(!t.data("isWaypointStickyWrapper")){return this}t.waypoint("destroy");this.unwrap();return this.removeClass(this.data("stuckClass"))})})}).call(this);
|
||||
@@ -0,0 +1,61 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<urlset
|
||||
xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9
|
||||
http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd">
|
||||
<!-- created with Free Online Sitemap Generator www.xml-sitemaps.com -->
|
||||
|
||||
<url>
|
||||
<loc>https://recruteur.talentstube.com/offre-emploi-originale</loc>
|
||||
<lastmod>2021-02-10T16:05:39+00:00</lastmod>
|
||||
<priority>1.00</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://recruteur.talentstube.com/</loc>
|
||||
<lastmod>2020-11-18T16:05:39+00:00</lastmod>
|
||||
<priority>1.00</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://recruteur.talentstube.com/offre-emploi-video</loc>
|
||||
<lastmod>2020-11-18T16:05:39+00:00</lastmod>
|
||||
<priority>0.80</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://recruteur.talentstube.com/marque-employeur-video</loc>
|
||||
<lastmod>2020-11-18T16:05:39+00:00</lastmod>
|
||||
<priority>0.80</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://recruteur.talentstube.com/candidatures-video</loc>
|
||||
<lastmod>2020-11-18T16:05:39+00:00</lastmod>
|
||||
<priority>0.80</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://recruteur.talentstube.com/mentions-legales</loc>
|
||||
<lastmod>2020-11-18T16:05:39+00:00</lastmod>
|
||||
<priority>0.80</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://recruteur.talentstube.com/cgu</loc>
|
||||
<lastmod>2020-11-18T16:05:39+00:00</lastmod>
|
||||
<priority>0.80</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://recruteur.talentstube.com/politique-confidentialite</loc>
|
||||
<lastmod>2020-11-18T16:05:39+00:00</lastmod>
|
||||
<priority>0.80</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://recruteur.talentstube.com/abonnement</loc>
|
||||
<lastmod>2020-11-18T16:05:39+00:00</lastmod>
|
||||
<priority>0.80</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://recruteur.talentstube.com/register/</loc>
|
||||
<lastmod>2020-11-18T16:05:39+00:00</lastmod>
|
||||
<priority>0.80</priority>
|
||||
</url>
|
||||
|
||||
|
||||
</urlset>
|
||||
|
After Width: | Height: | Size: 1.6 KiB |
|
After Width: | Height: | Size: 1.9 KiB |
|
After Width: | Height: | Size: 24 KiB |
|
After Width: | Height: | Size: 17 KiB |