Compare commits

...

60 Commits

Author SHA1 Message Date
Thomas MONCHICOURT 43858b06ff Feat : modification Css 2018-04-30 15:21:57 +02:00
Thomas MONCHICOURT f012f91ca4 Merge branch 'master' of https://git.e-declic.net/talents-tube/website 2018-04-30 15:11:14 +02:00
Thomas MONCHICOURT 2ba454f2ab Feat : style responsive 2018-04-30 15:11:05 +02:00
Thomas MONCHICOURT 2426dc5abc Feat : correction tuto responsive @1h 2018-04-30 15:10:26 +02:00
Maxime Thévenot 703ec9a1bb Fix : bug on talent deleting 2018-04-26 17:18:42 +02:00
Maxime Thévenot 4a72e4dfe6 Merge branch 'develop' of https://git.e-declic.net/talents-tube/website into develop
# Conflicts:
#	volume/www/website/www/src/AppBundle/Entity/Company.php
2018-04-26 16:42:01 +02:00
Maxime Thévenot 607f7706ca Feat : add capability to delete company from secret admin 2018-04-26 16:40:49 +02:00
Thomas MONCHICOURT b0b1179bdc Feat : Modification listing company #6269 @1h30 2018-04-24 14:16:19 +02:00
Thomas MONCHICOURT 0e2494797e Fix : Bloc vidéo après mot clés #6266 @0h25 2018-04-23 16:09:00 +02:00
Thomas MONCHICOURT 69a7595966 Fix : page detail territoire 2018-04-23 16:04:33 +02:00
Thomas MONCHICOURT e404b4d876 Merge branch 'develop' 2018-04-23 16:00:15 +02:00
Thomas MONCHICOURT fa8b21b93c Merge branch 'develop' of https://git.e-declic.net/talents-tube/website into develop 2018-04-23 15:59:43 +02:00
Thomas MONCHICOURT 8e8312c0f9 Feat : modification video territoire #6266 @0H15 2018-04-23 15:59:40 +02:00
Maxime Thévenot 0297191e07 Fix : update teritory sorting order 2018-04-20 15:23:45 +02:00
Maxime Thévenot e64ce55b66 Merge branch 'develop' 2018-04-20 15:16:04 +02:00
Thomas MONCHICOURT eda0562edc Feat : mise en ligne vidéo albéa + changement home 2018-04-20 15:11:53 +02:00
Maxime Thévenot 01f5823885 Feat : permit admin to refresh vimeo image + sorting list 2018-04-20 15:10:44 +02:00
Thomas MONCHICOURT 9ed2745e8d Feat : mise en ligne vidéo albéa + changement home 2018-04-17 09:33:37 +02:00
Thomas MONCHICOURT 82c4911770 Feat : Modification du code et mise en git #6185 @0h10 2018-04-16 09:34:10 +02:00
Thomas MONCHICOURT 8df9b7af43 Feat : Ajout champ description admin pour territoire #6181 @1h 2018-04-13 10:50:33 +02:00
Thomas MONCHICOURT 71259c40c6 Feat : Ajout d’un col list user + action resend confirm mail #6151 @0h20 2018-04-09 14:49:14 +02:00
Thomas MONCHICOURT 2dd559fa64 Feat : intervention albéa @0h15 2018-03-30 17:04:26 +02:00
Thomas MONCHICOURT 90ae12995f Fix : admin set presentation on null 2018-03-27 15:16:11 +02:00
Thomas MONCHICOURT 7aa4a92cb6 Feat : Ajout listing user en admin #6108 @2h 2018-03-27 14:29:52 +02:00
Thomas MONCHICOURT 6a9b48d629 Fix : modification linkedin 2018-03-15 14:27:13 +01:00
Thomas MONCHICOURT 032d10bb50 Fix: connexion FB 2018-03-15 12:34:07 +01:00
Thomas MONCHICOURT 7731dd2c23 Fix : erreur js vimeo 2018-03-06 09:56:05 +01:00
Thomas MONCHICOURT 8c6e8f14a4 Fix: erreur photo profil talent @0h15 2018-03-05 11:31:45 +01:00
Thomas MONCHICOURT f1c795e8cd Fix : js date picker 2018-02-15 11:30:11 +01:00
Thomas MONCHICOURT 5dd437d939 Feat : increase lifetime sessions 2018-02-15 10:46:05 +01:00
Thomas MONCHICOURT 59f6854379 Fix : popup option connect FB 2018-02-15 10:24:01 +01:00
Thomas MONCHICOURT c2450d3929 Fix : modification app facebook 2018-02-15 10:14:47 +01:00
Thomas MONCHICOURT 2f626dbad5 Fix : robots txt 2018-02-13 15:20:32 +01:00
Thomas MONCHICOURT 8bccabbcf6 Fix : suppression dissalow 2018-02-13 15:04:53 +01:00
Maxime Thévenot 766335bb19 Merge branch 'master' of https://git.e-declic.net/talents-tube/website 2018-02-13 14:32:58 +01:00
Maxime Thévenot 708e1f1c87 Conf : Update .gitignore 2018-02-13 14:32:53 +01:00
Thomas MONCHICOURT 1d0e0e4c48 Merge branch 'master' into develop 2018-02-09 15:34:05 +01:00
Thomas MONCHICOURT a790f99adb Fix : re error 404 2018-02-09 15:32:59 +01:00
Thomas MONCHICOURT e98a2488eb Fix : error 404 error #5890 @1h30 2018-02-09 15:32:43 +01:00
Maxime Thévenot 8b7a79ef8d Conf : Update robot.txt 2018-02-08 17:12:11 +01:00
Thomas MONCHICOURT 645cf1f05a Fix : change password 2018-02-08 17:12:00 +01:00
Thomas MONCHICOURT 974629794d Merge branch 'develop' 2018-02-07 09:17:43 +01:00
Thomas MONCHICOURT f23e906168 Feat: suppression voeux 2018 2018-02-07 09:17:19 +01:00
Thomas MONCHICOURT 5a47ac168e Fix : liste témoignages 2018-02-02 15:06:14 +01:00
Thomas MONCHICOURT a35647ca1d Merge branch 'develop' 2018-02-02 14:52:38 +01:00
Thomas MONCHICOURT 231a692369 Feat : Ajout des temoignage dans d’autre page #5662 @0h20 2018-02-02 14:52:28 +01:00
Thomas MONCHICOURT 1ad2d8bf1a Merge branch 'develop' 2018-02-02 14:28:47 +01:00
Thomas MONCHICOURT 2047322161 Feat : youtube #5845 @0h15 2018-02-02 14:28:29 +01:00
Thomas MONCHICOURT f90c907942 Feat : add a hover stop on carousel 2018-02-02 14:17:33 +01:00
Thomas MONCHICOURT a2d0a9539f Feat : modif temoignages #5662 @0h20 2018-02-02 12:02:49 +01:00
Thomas MONCHICOURT d5f448483c Feat : Modification #5662 @0h30 2018-01-25 15:15:54 +01:00
Thomas MONCHICOURT 8f12cddd86 Feat : template temoignages #5662 @1h15 2018-01-25 12:12:19 +01:00
Thomas MONCHICOURT 0f195907c5 Merge branch 'develop' 2018-01-24 12:04:38 +01:00
Thomas MONCHICOURT 8dabe7ba82 Fix : provider security 2018-01-24 12:04:20 +01:00
Thomas MONCHICOURT 0bfed4b932 Fix : probleme css dot nav tuto 2018-01-22 15:36:16 +01:00
Thomas MONCHICOURT bf875db942 Fix : dropzone js error 2018-01-22 15:09:57 +01:00
Thomas MONCHICOURT 5c47a00d0e Fix : Start to first panel tuto when restart 2018-01-22 15:09:49 +01:00
Thomas MONCHICOURT 0f8fe7732e Fix : amelioration graphique tuto 2018-01-22 15:09:36 +01:00
Thomas MONCHICOURT bed4cbc7b1 Fix : Start to first panel tuto when restart 2018-01-22 14:27:48 +01:00
Thomas MONCHICOURT 77d695f67a Fix : conf preprod 2018-01-22 09:30:44 +01:00
64 changed files with 933 additions and 191 deletions
+2 -1
View File
@@ -6,4 +6,5 @@
!/volume/www
/volume/www/**/conf/nginx.conf
/backup
/conf/env/*.env
/conf/env/*.env
volume/www/website/.idea
+2
View File
@@ -10,6 +10,8 @@ RUN rm /etc/nginx/conf.d/default.conf \
&& sed -i 's|include /etc/nginx/conf.d/\*.conf;|include /etc/nginx/conf.d/\*.conf;\ninclude /etc/nginx/sites-enabled/\*.conf;\n|' /etc/nginx/nginx.conf
COPY log_format.conf /etc/nginx/conf.d/
COPY tt-dev.crt /etc/nginx/ssl/server.crt
COPY tt-dev.key /etc/nginx/ssl/server.key
RUN apt-get clean \
&& rm -rf /var/lib/apt/lists/
+22
View File
@@ -0,0 +1,22 @@
-----BEGIN CERTIFICATE-----
MIIDrjCCApYCCQD0c9mokUtilTANBgkqhkiG9w0BAQsFADCBmDELMAkGA1UEBhMC
RlIxDDAKBgNVBAgMA0JaSDEOMAwGA1UEBwwFQXVyYXkxGTAXBgNVBAoMEHRhbGVu
dHN0dWJlLnRlc3QxETAPBgNVBAsMCGUtZGVjbGljMRkwFwYDVQQDDBB0YWxlbnRz
dHViZS50ZXN0MSIwIAYJKoZIhvcNAQkBFhN0aG9tYXNAZS1kZWNsaWMuY29tMB4X
DTE4MDQzMDA5MTkwMVoXDTE5MDQzMDA5MTkwMVowgZgxCzAJBgNVBAYTAkZSMQww
CgYDVQQIDANCWkgxDjAMBgNVBAcMBUF1cmF5MRkwFwYDVQQKDBB0YWxlbnRzdHVi
ZS50ZXN0MREwDwYDVQQLDAhlLWRlY2xpYzEZMBcGA1UEAwwQdGFsZW50c3R1YmUu
dGVzdDEiMCAGCSqGSIb3DQEJARYTdGhvbWFzQGUtZGVjbGljLmNvbTCCASIwDQYJ
KoZIhvcNAQEBBQADggEPADCCAQoCggEBANVTxapL6RtTjEoO4wWTswIqTW/zTI4B
bETbPHYOeb8+kgLTxH04ETmVzPYz0b5RfkotY0EZzwntv3c5JsLnqqrQAXN4fcl3
iIXCXMKUo1Nrbp0yAMGzGDmnpmvABE/nkg0ZJ3YeKV9xkEYcyMCU+DhUuazd1W3d
odjMs/BHeuoZau9HRE+6lE+/tqWhHrmgRghP8g2Z2g8lrHak5BuQNwnvVmg6oJae
94DWygKV7ZJ3vBHRkLIOaG+mVI8FRjrlHQke/tFStD2dd3TgsqvzYBM3f1VBm85y
qhyIxr2s+xgOl2/Z0VZzmVgI2jAPhvN8VNvXtlFM6BOkyHAFwm7jCtcCAwEAATAN
BgkqhkiG9w0BAQsFAAOCAQEAjlPu5wtZwW0jP0cBBBvZWLRe9+Wlz9uJXiOb2AMF
ibYeKgcGNbruY8Ayvmm++C/mMpkm50NG5ycEiO5rB/1665zB5ibWAswRD+F5rjzx
8qM4YsUVDkiuW5ul0RI2KO6llAbdQaCfaqXtsCZ+b/XVwe41S1ZkvigLaL99pscU
ghgD9yz/RY6C7PHPS+8dF0Uc+YND3vqWfAhUQCXdXetXndPMxwBOXnT08RQOWMBK
lTSHIsFACFhynL3wfQ6xH4+/TQkquxzqqh3MeB1LpqHiFChCoNmBPKWf7ZvFkg/p
4DzXTkLs6G6/WM7DuBmwB6e5tevJfe/BSkzCLaJKABDaOA==
-----END CERTIFICATE-----
+28
View File
@@ -0,0 +1,28 @@
-----BEGIN PRIVATE KEY-----
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDVU8WqS+kbU4xK
DuMFk7MCKk1v80yOAWxE2zx2Dnm/PpIC08R9OBE5lcz2M9G+UX5KLWNBGc8J7b93
OSbC56qq0AFzeH3Jd4iFwlzClKNTa26dMgDBsxg5p6ZrwARP55INGSd2HilfcZBG
HMjAlPg4VLms3dVt3aHYzLPwR3rqGWrvR0RPupRPv7aloR65oEYIT/INmdoPJax2
pOQbkDcJ71ZoOqCWnveA1soCle2Sd7wR0ZCyDmhvplSPBUY65R0JHv7RUrQ9nXd0
4LKr82ATN39VQZvOcqociMa9rPsYDpdv2dFWc5lYCNowD4bzfFTb17ZRTOgTpMhw
BcJu4wrXAgMBAAECggEACj5ikIHiqLBDXU8Hsb3c666yVzzcoTkKROguKBEb4YYU
ptQabFTj5tr9o5jranMpWFCDop2lpnlnJ0d0SAmt1VP1reDMUX9O6/VgVOukSB4x
ipTbGnIKKMKXKDdpPZkGF2Ds1ywtmmqund9F+JFute3DmLxyQjtRSULTJSeZjGIj
kk4mUHIZr71q2KocBEhDZhoaf6aiM3tfyXIlg0C6GzcfGKk4a2C6Ia7D24icPLa7
JE4Omh6w8duQsme8YeFbbixLlwm+74qvo7k8ubqZAvvODQlKz4xiT1App4cTq6nm
PbAuFvLX0DtkndBSgAUa3h8iuchdv15M2FkUWkenaQKBgQD7iup0vZqqIFh6Sk08
k3Skbit6TXwMt4yjP9/JTgMaIO5LfZiht2xyxN4gN2XVp6k4Jn5SPxGuGV+e5QSr
9R04x5wN6NwZAprL70UuztHZdXpzNVogF4hF4LdGDT8CbeFF5ciiTQaAKwX9euOT
HRf6RGT80qiKVcZ+C3zhR6CxAwKBgQDZG39+6DzdGetLzls7B6R1PPV7RLOn6bts
jbxSkx/VksHkS1Q4lG1fXM2q/VdSTFg/gNNKzLCADDVrO9KonvVrvMZlshiSLXTJ
GVgfe+UGSL7VjbH4G4bAqznK5zK8ADI1BRyCU3UrzFqRHoV9h9e2qIfjJrK4taX7
G5KAukDUnQKBgQC6GBLOnTtgY5+xkWjEyP6Ba7QkvlBpBB465FWGk31+BiDlnpyd
/5pu6jC/OtzPDUQG84t/A4Pr/n+ciShEo4mj6SENtVmn8yJcf776Gy5rKBuYQj9U
ALTjpZVRcRlNjccctBwT3tJRXgMHfbQBsYN8tr7TwHHKLh00QQF5lUlPywKBgB2a
SkAbmnDrX9HuSTI7UIlLzo0ISRbUH+IlUVBRDz4nzJg8TTeJxYADP2fZM1bdYgsG
ncjNMCPFhmMgvRCQ3BXcn5CuP/tuh0YEVqe0VP4OXTbxIxsZZb5Pmom4DIrl2/Ku
x7xddNSMAK1Y5ArBwv/86spmNGhLHF6o28kBnGVhAoGAOcGzpJi1l0BzNUKBS512
XlLUYswFW6OqcEk1iGTvEFUzZ9Agp2Yc7HZ3MrmCAjugx37tAfNKQglF2/AJ9Uuy
yoUpPtdXX6CuPTMkzCkvAYbRGohE/cw7ZjI6vTqoEPiyrQA1lJYTIMQm3FYivjJl
z84K0Vlv64BeiIpJrvzW+2A=
-----END PRIVATE KEY-----
+1
View File
@@ -5,6 +5,7 @@ services:
nginx:
ports:
- "80:80"
- "443:443"
volumes:
- ../volume/www:/home/www:cached
restart: "no"
+5 -2
View File
@@ -8,15 +8,18 @@ upstream store_php {
}
server {
listen 80;
listen 443 ssl;
server_name talentstube.test;
root /home/www/website/www/web;
client_max_body_size 500M;
sendfile off;
ssl_certificate /etc/nginx/ssl/server.crt;
ssl_certificate_key /etc/nginx/ssl/server.key;
# DEV
location / {
try_files $uri /app_dev.php$is_args$args;
try_files $uri /app.php$is_args$args;
}
location ~ ^/(app_dev|config)\.php(/|$) {
@@ -1,17 +1,12 @@
{% extends 'base.html.twig' %}
{% block urlCanonical %}
#!
{% endblock %}
{% block content %}
<div class="row">
<div class="col s12">
<h2 class="center-align">Page introuvable</h2>
<p class="center-align">
Cette page n'existe plus.<br/><br/>
<a class="btn btn-default" href="{{ path('homepage') }}">Retour à l'accueil</a>
</p>
</div>
{% block content %}
<div class="row">
<div class="col s12">
<h2 class="center-align m-t-100">Page introuvable</h2>
<p class="center-align">
Cette page n'existe plus.<br/><br/>
<a class="btn btn-default" href="{{ path('homepage') }}">Retour à l'accueil</a>
</p>
</div>
{% endblock %}
</div>
{% endblock %}
@@ -66,6 +66,10 @@
title="Modifier">
<i class="fa fa-pencil-square-o" aria-hidden="true"></i>
</a>
<a href="{{ path('admin_ad_refresh_img',{'id':ad.id}) }}" data-toggle="tooltip"
title="Mise à jour image vimeo">
<i class="fa fa-picture-o" aria-hidden="true"></i>
</a>
</td>
</tr>
{% endfor %}
@@ -13,6 +13,8 @@
<link rel="stylesheet" href="{{ asset('admin/AdminLTE/dist/css/AdminLTE.min.css') }}">
<link rel="stylesheet" href="{{ asset('admin/AdminLTE/dist/css/skins/skin-blue.min.css') }}">
<link rel="stylesheet" href="{{ asset('admin/AdminLTE/plugins/datatables/dataTables.bootstrap.css') }}">
<link rel="stylesheet" href="{{ asset('admin/AdminLTE/plugins/datatables/dataTables.bootstrap.css') }}">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/jquery-confirm/3.3.2/jquery-confirm.min.css">
<script type="text/javascript" defer="defer" src="https://extend.vimeocdn.com/ga/64189815.js"></script>
{% block css %}
@@ -58,6 +58,10 @@
style="margin-left: 5px;">
<i class="fa fa-cart-plus" aria-hidden="true"></i>
</a>
<a href="{{ path('admin_company_refresh_img',{'id':company.id}) }}" data-toggle="tooltip"
title="Mise à jour image vimeo">
<i class="fa fa-picture-o" aria-hidden="true"></i>
</a>
{% if is_granted('ROLE_ALLOWED_TO_SWITCH') %}
<a href="{{ path('company_dashboard',{'_switch_user':company.MainUser.username}) }}"
data-toggle="tooltip" title="Se connecter avec ce compte"
@@ -88,7 +92,7 @@
"language": {
"url": "https://cdn.datatables.net/plug-ins/1.10.11/i18n/French.json"
},
"order": [[1, 'desc']],
"order": [[0, 'desc']],
"columnDefs": [
{"targets": 0, "searchable": true, "orderable": true},
{"targets": 1, "searchable": true, "orderable": true},
@@ -94,7 +94,7 @@
{"targets": 4, "searchable": true, "orderable": true, "className": "text-center"},
{"targets": 5, "searchable": false, "orderable": false, "className": "text-center"},
],
"order": [[1, "asc"]]
"order": [[0, "desc"]]
});
});
</script>
@@ -29,6 +29,7 @@
{{ form_row(form.emphasisOrder) }}
{{ form_row(form.brandName) }}
{{ form_row(form.description) }}
{{ form_row(form.descriptionAdmin) }}
{{ form_row(form.website) }}
{{ form_row(form.tagsComma) }}
{{ form_row(form.file) }}
@@ -60,11 +61,24 @@
</div>
{{ form_end(form) }}
{% endblock %}
{% block css %}
<link rel="stylesheet" href="{{ asset('codemirror/lib/codemirror.css') }}">
{% endblock %}
{% block javascripts %}
<script>
$(document).ready(function () {
$('[data-toggle="popover"]').popover();
});
</script>
{% endblock %}
<script src="{{ asset('codemirror/lib/codemirror.js') }}"></script>
<script src="{{ asset('codemirror/mode/xml/xml.js') }}"></script>
<script src="{{ asset('codemirror/mode/javascript/javascript.js') }}"></script>
<script src="{{ asset('codemirror/mode/css/css.js') }}"></script>
<script src="{{ asset('codemirror/mode/vbscript/vbscript.js') }}"></script>
<script src="{{ asset('codemirror/mode/htmlmixed/htmlmixed.js') }}"></script>
<script>
var myCodeMirror = CodeMirror.fromTextArea(document.getElementById('territory_admin_descriptionAdmin'), {
lineNumbers: true,
});
</script>
{% endblock %}
@@ -100,7 +100,7 @@
{"targets": 3, "searchable": true, "orderable": true, "className": "text-center"},
{"targets": 4, "searchable": false, "orderable": false, "className": "text-center"},
],
"order": [[1, "asc"]]
"order": [[0, "desc"]]
});
});
</script>
@@ -0,0 +1,147 @@
{% extends 'admin/base_admin.html.twig' %}
{% block contentHeader %}
<h1>
Utilisateurs
<small>Liste</small>
</h1>
<ol class="breadcrumb">
<li>
<a href="{{ path('admin_dashboard') }}">
<i class="fa fa-dashboard"></i>
Dashboard</a>
</li>
<li>Secret</li>
<li class="active">Utilisateurs</li>
</ol>
{% endblock %}
{% block content %}
<div class="box box-primary">
<div class="box-body">
<table id="user_list_table" class="table table-hover table-bordered">
<thead>
<tr>
<th class="col-md-2">Nom</th>
<th class="col-md-2">Prénom</th>
<th class="col-md-3">Email</th>
<th class="col-md-1">Rôle</th>
<th class="col-md-3">Etat</th>
<th class="col-md-1">Action</th>
</tr>
</thead>
<tbody>
{% for u in users %}
<tr>
<td>{{ u.lastname }}</td>
<td>{{ u.firstname }}</td>
<td>{{ u.email }}</td>
<td>
{% for r in u.roles %}
{% if r != "ROLE_USER" and r == "ROLE_TALENT" %}
<span class="badge bg-blue" style="font-weight: 400;">{{ r }}</span>
{% elseif r != "ROLE_USER" and r == "ROLE_COMPANY" %}
<span class="badge bg-orange" style="font-weight: 400;">{{ r }}</span>
{% endif %}
{% endfor %}
</td>
<td>
{% if u.enabled %}
Activé
{% else %}
Désactivé
<br/>
<a href="{{ path('admin_user_resend',{'id':u.id}) }}">Renvoyer le mail de confirmation</a>
{% endif %}
</td>
<td>
<a class="delete-user" href="{{ path('admin_user_delete',{'id':u.id}) }}" data-toggle="tooltip" title="Supprimer">
<i class="fa fa-trash"></i>
</a>
</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
</div>
{% endblock %}
{% block javascripts %}
<script>
$(function () {
$('#user_list_table').DataTable({
"paging": true,
"lengthChange": true,
"searching": true,
"ordering": true,
"info": true,
"autoWidth": false,
"language": {
"url": "https://cdn.datatables.net/plug-ins/1.10.11/i18n/French.json"
},
"columnDefs": [
{
"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": 5,
"searchable": false,
"orderable": false,
"className": "text-center"
}
]
});
});
$(document).ready(function () {
$('[data-toggle="popover"]').popover();
$(".delete-user").confirm({
title: "Êtes vous sûr de supprimer cet utilisateur ?",
content: "Supprimer cet utilisateur supprimera, son compte, son entreprise, ses réponses, médias",
type: 'red',
boxWidth: '30%',
useBootstrap: false,
buttons: {
confirm: {
text: 'Confirmer',
action: function () {
console.log(this.$target);
location.href = this.$target.attr('href');
return true;
}
},
cancel: {
text: 'Annuler'
}
}
});
});
</script>
{% endblock %}
@@ -7,10 +7,10 @@
<div class="owl-carousel tuto-carousel">
<div class="item-tuto-webcam carousel-item">
<div class="row">
<div class="col s4 offset-s1">
<div class="col s4 offset-s1 hide-on-med-and-down">
<img class="responsive-img" src="{{ asset('img/img_popupcv/cv_video_step_1.svg')}}" alt="">
</div>
<div class="col s6 offset-s1 left-align">
<div class="col s11 m11 l6 offset-s1 left-align">
<strong><span class="color-blue1">30 Minutes</span> avant lenregistrement</strong>
<br /><br />
<u>Préparez un discours <strong>clair</strong> et <strong>concis</strong></u>
@@ -31,10 +31,10 @@
</div>
<div class="item-tuto-webcam carousel-item">
<div class="row">
<div class="col s4 offset-s1">
<div class="col s4 offset-s1 hide-on-med-and-down">
<img class="responsive-img" src="{{ asset('img/img_popupcv/cv_video_step_2.svg')}}" alt="">
</div>
<div class="col s6 offset-s1 left-align">
<div class="col s11 m11 l6 offset-s1 left-align">
<strong><span class="color-blue1">2 Minutes</span> avant lenregistrement</strong>
<br /><br />
<u>Préparer votre lieu de tournage :</u>
@@ -51,10 +51,10 @@
</div>
<div class="item-tuto-webcam carousel-item">
<div class="row">
<div class="col s4 offset-s1">
<div class="col s4 offset-s1 hide-on-med-and-down">
<img class="responsive-img" src="{{ asset('img/img_popupcv/cv_video_step_3.svg')}}" alt="">
</div>
<div class="col s6 offset-s1 left-align">
<div class="col s11 m11 l6 offset-s1 left-align">
<strong><span class="color-blue1">10 secondes</span> avant lenregistrement</strong>
<br /><br />
<u>Quelques informations à savoir avant le grand bain :</u>
@@ -67,7 +67,7 @@
<li>Recommencez autant de fois que nécessaire.</li>
</ul>
<br /><br />
Bon courage !
Cest à vous !
</strong>
</div>
</div>
@@ -30,26 +30,28 @@
{% endblock %}">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
{# OG et TC #}
{% block ogtc %}
{#Twitter Card data pour les données enrichies sur Twitter#}
<meta name="twitter:card" content="summary">
<meta name="twitter:site" content="@TalentsTube">
<meta name="twitter:title" content="Talents Tube : Le 1er job board 100% vidéo">
<meta name="twitter:description" content="Talents Tube est la première plateforme réservée aux offres d'emploi et aux CV vidéos. Découvrez un nouvelle méthode de recrutement !">
<meta name="twitter:image" content="{{ absolute_url(asset('img/mail/logo-talents-tube.png')) }}">
{% if app.request.attributes.get('_route') != null %}
{% block ogtc %}
{#Twitter Card data pour les données enrichies sur Twitter#}
<meta name="twitter:card" content="summary">
<meta name="twitter:site" content="@TalentsTube">
<meta name="twitter:title" content="Talents Tube : Le 1er job board 100% vidéo">
<meta name="twitter:description" content="Talents Tube est la première plateforme réservée aux offres d'emploi et aux CV vidéos. Découvrez un nouvelle méthode de recrutement !">
<meta name="twitter:image" content="{{ absolute_url(asset('img/mail/logo-talents-tube.png')) }}">
{#Open Graph data pour le partage sur les réseaux sociaux (ex Facebook..)#}
<meta property="og:title" content="Talents Tube : Le 1er job board 100% vidéo" />
<meta property="og:type" content="article" />
<meta property="og:image" content="{{ absolute_url(asset('img/mail/logo-talents-tube.png')) }}" />
<meta property="og:description" content="Talents Tube est la première plateforme réservée aux offres d'emploi et aux CV vidéos. Découvrez un nouvelle méthode de recrutement !" />
<meta property="og:site_name" content="Talents Tube" />
<meta property="og:url" content="{{ url(app.request.attributes.get('_route'), app.request.attributes.get('_route_params')) }}" />
{#Open Graph data pour le partage sur les réseaux sociaux (ex Facebook..)#}
<meta property="og:title" content="Talents Tube : Le 1er job board 100% vidéo" />
<meta property="og:type" content="article" />
<meta property="og:image" content="{{ absolute_url(asset('img/mail/logo-talents-tube.png')) }}" />
<meta property="og:description" content="Talents Tube est la première plateforme réservée aux offres d'emploi et aux CV vidéos. Découvrez un nouvelle méthode de recrutement !" />
<meta property="og:site_name" content="Talents Tube" />
<meta property="og:url" content="{{ url(app.request.attributes.get('_route'), app.request.attributes.get('_route_params')) }}" />
{% endblock %}
{# Canonical #}
<link rel="canonical"
href="{% block urlCanonical %}{{ url(app.request.attributes.get('_route'), app.request.attributes.get('_route_params')) }}{% endblock %}">
{% endblock %}
{# Canonical #}
<link rel="canonical"
href="{% block urlCanonical %}{{ url(app.request.attributes.get('_route'), app.request.attributes.get('_route_params')) }}{% endblock %}">
{% endif %}
{# CSS #}
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
<link href="https://fonts.googleapis.com/css?family=Raleway:100,100i,200,200i,300,300i,400,400i,500,500i,600,600i,700,700i,800,800i,900,900i&amp;subset=latin-ext"
@@ -106,11 +106,11 @@
$('.fa-refresh').show();
var month1 = obj.date1.getMonth();
var day1 = obj.date1.getDate();
var year1 = obj.date1.getUTCFullYear();
var year1 = obj.date1.getFullYear();
var month2 = obj.date2.getMonth();
var day2 = obj.date2.getDate();
var year2 = obj.date2.getUTCFullYear();
var date1 = (month1 + 1) + "/" + day1 + "/" + year1 +" 00:00:00";
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);
});
@@ -48,7 +48,6 @@
</div>
</div>
</div>
{% endblock %}
{% block javascripts %}
@@ -35,13 +35,17 @@
<div class="col s12 m12 l8 xl9">
{% if ad.video and ad.status != "CLOSED" %}
<div class="row m-b-0" id="adVideo">
<div class="embed-responsive embed-responsive-16by9">
<div class="col s12">
<iframe src="https://player.vimeo.com/video/{{ ad.video.cdnUrl|replace({ "/videos/": ""}) }}"
width="100%" height="640" frameborder="0" webkitallowfullscreen mozallowfullscreen
allowfullscreen></iframe>
{% if ad.id == 38 %}
<img class="responsive-img" src="{{asset('/img/GROUPE-ROCHER-TT.jpg')}}">
{% else %}
<div class="embed-responsive embed-responsive-16by9">
<div class="col s12">
<iframe src="https://player.vimeo.com/video/{{ ad.video.cdnUrl|replace({ "/videos/": ""}) }}"
width="100%" height="640" frameborder="0" webkitallowfullscreen mozallowfullscreen
allowfullscreen></iframe>
</div>
</div>
</div>
{% endif %}
{% if ad.isPromoted %}
<div class="isPromoted"><img src="{{asset('/img/offre-pourvue-gauche.png')}}" alt="promoted"></div>
{% endif %}
@@ -41,6 +41,9 @@
<a class="white-text td-none" href="https://twitter.com/TalentsTuber" title="Twitter" target="_blank">
<i class="fa fa-twitter" aria-hidden="true"></i>
</a>
<a class="white-text td-none" href="https://www.youtube.com/channel/UCRNqiJCLAorO0aCzNQu-8ww" title="Youtube" target="_blank">
<i class="fa fa-youtube" aria-hidden="true"></i>
</a>
<a class="white-text td-none" href="https://www.linkedin.com/company/talentstube" title="Linkedin" target="_blank">
<i class="fa fa-linkedin-square" aria-hidden="true"></i>
</a>
@@ -9,16 +9,12 @@
{# VIDEO #}
<div class="col l12 m12 s12 home-content col-noPadding">
<div id="homeTeaser" class="valign-wrapper">
<h1 class="white-text center-align">1er job board <span>100% vidéo</span></h1><br />
<h1 class="white-text center-align">1ère plateforme pour lemploi <span>100% vidéo</span></h1><br />
<div class="link-home-head">
<a data-target="modal_concept" href="#!" class="btn btn-default btn-round btn-concept modal-trigger">
Le concept en vidéo &nbsp;&nbsp;&nbsp;
<img src="{{asset('img/bouton-play.png')}}" />
</a>
<a data-target="modal_voeux" href="#!" class="btn btn-default btn-round btn-voeux modal-trigger">
Voeux 2018 en vidéo &nbsp;&nbsp;&nbsp;
<img src="{{asset('img/bouton-play.png')}}" />
</a>
</div>
<div class="header-video-inner">
<video loop="" preload="metadata" autoplay="" id="vid" muted>
@@ -203,6 +199,7 @@
</div>
</div>
</div>
{% include 'testimony/testimony_list.html.twig' %}
</div>
<div id="modal_concept" class="modal modal-fixed-footer">
<div class="modal-content">
@@ -215,17 +212,6 @@
<a href="#!" class="modal-action modal-close btn btn-default button-round-small">Fermer</a>
</div>
</div>
<div id="modal_voeux" class="modal modal-fixed-footer">
<div class="modal-content">
<div class="video-container">
<iframe id="iframe_concept" src="" frameborder="0" webkitallowfullscreen mozallowfullscreen
allowfullscreen></iframe>
</div>
</div>
<div class="modal-footer">
<a href="#!" class="modal-action modal-close btn btn-default button-round-small">Fermer</a>
</div>
</div>
{% endblock %}
{% block javascripts %}
@@ -12,4 +12,9 @@
{% block description %}{{ page.description }}{% endblock %}
{% block content %}{{ page.content|raw }}{% endblock %}
{% block content %}
{{ page.content|raw }}
{% if isTestimony is defined %}
{% include 'testimony/testimony_list.html.twig' %}
{% endif %}
{% endblock %}
@@ -80,12 +80,11 @@
<div id="modalProfilePicture" class="modal">
<div class="modal-content">
<h4>Edition de votre photo de profil</h4>
{#<div class="row">
<div class="row">
{{ render(controller(
'AppBundle:Media:profilePicture'
)) }}
</div>#}
</div>
</div>
<div class="modal-footer">
<a href="#!" class="modal-action modal-close waves-effect waves-green btn-flat">Fermer</a>
@@ -113,10 +113,7 @@
{% block javascripts %}
{{ parent() }}
<script src="https://player.vimeo.com/api/player.js"></script>
<script>
var iframe = document.querySelector('iframe');
var player = new Vimeo.Player(iframe);
$(document).ready(function(){
$.get( "{{ path('talent_ajaxRecStat',{'id': talent.id }) }}", function( data ) {
});
@@ -95,6 +95,17 @@
</div>
</div>
</div>
{% if company.descriptionAdmin %}
<div class="col s12 m12 l8 xl9 right">
<div class="row bg-bordered">
<div class="col s12">
<div class="item-detail-description-bo">
<p>{{ company.descriptionAdmin|raw }}</p>
</div>
</div>
</div>
</div>
{% endif %}
{% if companyAds|length > 0 %}
<div id="offers" class="row">
<div class="col s12">
@@ -0,0 +1,40 @@
<div id="liste-testimony" class="bg-white">
<div class="container">
<div class="row flexcontainer row-noMargin">
<div class="owl-carousel owl-carousel-testimony">
<div class="item">
<div class="row">
<div class="col s12 l2">
<img class="circle z-depth-3" src="{{ asset('img/testimony/de-charry.jpg')}}" alt="Jean-Philippe, Gérant, cabinet de Charry"/>
</div>
<div class="col s12 l8 left-align">
<h3><strong>Jean-Philippe</strong>, Gérant, Cabinet de Charry</h3>
<p>
Notre entreprise amorce une nouvelle dynamique grâce à la vidéo de recrutement.<br />
Nous accueillons demain notre nouvel agent commercial, basé à Auray/Lorient.<br />
Il sera suivi de près par un autre très bientôt...<br />
Nous avons eu beaucoup dappréciations positives grâce à cette communication.
</p>
</div>
</div>
</div>
<div class="item">
<div class="row">
<div class="col l2">
<img class="circle z-depth-3" src="{{ asset('img/testimony/lionel.jpg')}}" alt="Jean-Philippe, Gérant, cabinet de Charry"/>
</div>
<div class="col s12 l8 left-align text-testimony">
<h3><strong>Lionel</strong>, dirigeant, LB Groupe</h3>
<p>
Talents Tube nous a permis de recruter deux collaborateurs sur des profils bien spécifiques en un temps rapide.<br />
Loffre demploi vidéo a permis datteindre des candidats aux profils plus divers quune annonce classique sur papier ou web.<br />
Les CV vidéo ont permis de gagner un temps précieux au niveau de la présélection.<br />
Atout supplémentaire : nos annonces en vidéo ont contribué à développer notre marque employeur !
</p>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
@@ -40,4 +40,5 @@ assetic:
- 'js/vendors/typeahead.js'
- 'js/company.js'
- 'js/backend.js'
- 'js/tags.js'
- 'js/tags.js'
- 'js/vendors/jquery-confirm.min.js'
+2 -4
View File
@@ -182,13 +182,11 @@ hwi_oauth:
paths:
email: email
profilepicture: picture.data.url
options:
display: popup
#csrf: true
linkedin:
type: linkedin
client_id: 77ywkne3b8tcnk
client_secret: HB9Zdx42s7RPLUqm
client_id: 86m6hegwyj8lbo
client_secret: LIOibqDszsP2vQSr
infos_url: "https://api.linkedin.com/v1/people/~:(id,first-name,last-name,location,email-address,picture-urls::(original))?format=json"
options:
#csrf: true
@@ -3,8 +3,8 @@ security:
in_memory:
memory: ~
fos_userbundle:
#id: fos_user.user_provider.username_email
id: app.user_provider
id: fos_user.user_provider.username_email
#id: app.user_provider
firewalls:
dev:
@@ -13,6 +13,11 @@ security:
main:
pattern: ^/
remember_me:
secret: '%kernel.secret%'
lifetime: 14515200
path: /
always_remember_me: true
form_login:
provider: fos_userbundle
csrf_token_generator: security.csrf.token_manager
@@ -10,7 +10,6 @@ use Sensio\Bundle\FrameworkExtraBundle\Configuration\Security;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Request;
class AdController extends Controller
{
@@ -111,7 +110,6 @@ class AdController extends Controller
));
}
/**
* @Route("/admin/config/ad/{id}/edit", name="admin_ad_edit")
*/
@@ -130,6 +128,16 @@ class AdController extends Controller
));
}
/**
* @Route("/admin/config/ad/{id}/refresh-img", name="admin_ad_refresh_img")
*/
public function adminAdRefreshImgAction(Request $request, Ad $ad)
{
$mediaManager = $this->get('media_manager');
$mediaManager->getThumbnails($ad, true);
return $this->redirectToRoute('admin_ad_list');
}
/**
* @Route("/admin/config/ad/{id}/show", name="admin_ad_show")
*/
@@ -12,7 +12,6 @@ use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Request;
class CompanyController extends Controller
{
@@ -88,4 +87,14 @@ class CompanyController extends Controller
'newP' => $newsP,
));
}
/**
* @Route("/admin/config/company/{id}/refresh-img", name="admin_company_refresh_img")
*/
public function adminCompanyRefreshImgAction(Request $request, Company $company)
{
$mediaManager = $this->get('media_manager');
$mediaManager->getThumbnails($company, true);
return $this->redirectToRoute('admin_config_company');
}
}
@@ -8,7 +8,6 @@ use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Request;
class TalentController extends Controller
{
@@ -11,7 +11,6 @@ use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpKernel\Exception\HttpException;
class UserController extends Controller
{
@@ -30,7 +29,7 @@ class UserController extends Controller
}
}
return $this->render('admin/user_list.html.twig', [
'users' => $users
'users' => $users,
]);
}
@@ -64,4 +63,142 @@ class UserController extends Controller
'form' => $form->createView(),
]);
}
/**
* @Route("/admin/config/user/list", name="admin_config_others_user")
*/
public function adminOthersUsersListAction(Request $request)
{
$em = $this->getDoctrine()->getManager();
$t = $em->getRepository('AppBundle:User')->findTalentsAndCompanies();
return $this->render('admin/users_list.html.twig', array(
'users' => $t,
));
}
/**
* @Route("/admin/config/user/{id}/resend", name="admin_user_resend")
*/
public function adminUserResendAction(Request $request, $id)
{
$userManager = $this->get('fos_user.user_manager');
$user = $userManager->findUserBy(array('id' => $id));
$mailer = $this->get('fos_user.mailer');
$mailer->sendConfirmationEmailMessage($user);
return $this->redirectToRoute('admin_config_user');
}
/**
* @Route("/admin/config/user/{id}/delete", name="admin_user_delete")
*/
public function adminUserDeleteAction(Request $request, $id)
{
$em = $this->getDoctrine()->getManager();
$t = $em->getRepository('AppBundle:User')->findByRole('ROLE_TALENT');
$userManager = $this->get('fos_user.user_manager');
$user = $userManager->findUserBy(array('id' => $id));
if (\is_null($user)) {
// user not found, generate $notFoundResponse
$this->addFlash(
'notice',
' user not found !'
);
}
\assert(!\is_null($user));
$company = $user->getCompany();
if ($company) {
$company->setPresentationVideo(null);
$em->persist($company);
$em->flush();
}
$this->deleteRelation($user);
$em->remove($user);
$em->flush();
if ($company) {
$em->remove($company);
$em->flush();
}
// if ($company) {
// $em->remove($company);
// }
$em->flush();
return $this->redirectToRoute('admin_config_others_user');
}
public function deleteRelation($user)
{
$em = $this->getDoctrine()->getManager();
$sendMessage = $em->getRepository('AppBundle:Message')->findBy(array('sender' => $user));
if ($sendMessage) {
foreach ($sendMessage as $key => $message) {
$message->setSender(null);
$message->setAnswer(null);
}
$em->flush();
}
$recipMessage = $em->getRepository('AppBundle:Message')->findBy(array('recipient' => $user));
if ($recipMessage) {
foreach ($recipMessage as $key => $message) {
$message->setRecipient(null);
$message->setAnswer(null);
}
$em->flush();
}
$bookmarks = $em->getRepository('AppBundle:Bookmark')->findBy(array('creator' => $user));
if ($bookmarks) {
foreach ($bookmarks as $key => $bookmark) {
$em->remove($bookmark);
}
$em->flush();
}
$answers = $em->getRepository('AppBundle:Answer')->findBy(array('user' => $user));
if ($answers) {
foreach ($answers as $key => $answer) {
$em->remove($answer);
}
$em->flush();
}
$ads = $em->getRepository('AppBundle:Ad')->findBy(array('creator' => $user));
if ($ads) {
foreach ($ads as $key => $ad) {
$bms = $em->getRepository('AppBundle:BookmarkAd')->findBy(array('ad' => $ad));
foreach ($bms as $key2 => $bm) {
$em->remove($bm);
}
$em->remove($ad);
}
$em->flush();
}
$ads = $em->getRepository('AppBundle:Ad')->findBy(array('company' => $user->getCompany()));
if ($ads) {
foreach ($ads as $key => $ad) {
$bms = $em->getRepository('AppBundle:BookmarkAd')->findBy(array('ad' => $ad));
foreach ($bms as $key2 => $bm) {
$em->remove($bm);
}
$em->remove($ad);
}
$em->flush();
}
$medias = $em->getRepository('AppBundle:Media')->findBy(array('creator' => $user));
if ($medias) {
foreach ($medias as $key => $media) {
$em->remove($media);
}
$em->flush();
}
}
}
@@ -109,12 +109,17 @@ class CompanyController extends Controller
$this->get('translator')->trans('company.account.save.title')
);
}
$formFactory = $this->container->get('fos_user.change_password.form.factory');
$formPw = $formFactory->createForm();
$formPw->setData($user);
$formPw->handleRequest($request);
if ($formPw->isSubmitted() && $formPw->isValid()) {
$userManager->updateUser($user);
$this->addFlash(
'notice',
$this->get('translator')->trans('company.account.save.title')
);
}
return $this->render('company/my_account.html.twig', [
'form' => $form->createView(),
@@ -188,7 +188,8 @@ class PageController extends Controller
$page = $em->getRepository('AppBundle:Page')->findOneByRef('OFFREEMPLOI');
return $this->render('default/page.html.twig', [
'page' => $page
'page' => $page,
'isTestimony' => true
]);
}
@@ -201,7 +202,8 @@ class PageController extends Controller
$page = $em->getRepository('AppBundle:Page')->findOneByRef('MARQUEEMPLOYEUR');
return $this->render('default/page.html.twig', [
'page' => $page
'page' => $page,
'isTestimony' => true
]);
}
@@ -173,25 +173,30 @@ class Ad
***********************/
/**
* @ORM\OneToMany(targetEntity="AppBundle\Entity\Answer", mappedBy="ad", cascade={"persist"})
* @ORM\OneToMany(targetEntity="AppBundle\Entity\Answer", mappedBy="ad", cascade={"persist", "remove"})
*/
private $answers;
/**
* @ORM\OneToMany(targetEntity="AppBundle\Entity\ProductAd", mappedBy="ad", cascade={"persist"})
* @ORM\OneToMany(targetEntity="AppBundle\Entity\ProductAd", mappedBy="ad", cascade={"persist", "remove"})
*/
private $products;
/**
* @ORM\ManyToMany(targetEntity="AppBundle\Entity\Note", cascade={"persist"})
* @ORM\ManyToMany(targetEntity="AppBundle\Entity\Note", cascade={"persist", "remove"})
*/
private $draftNotes;
/**
* @ORM\OneToMany(targetEntity="AppBundle\Entity\TerritoryAd", mappedBy="ad", cascade={"persist"})
* @ORM\OneToMany(targetEntity="AppBundle\Entity\TerritoryAd", mappedBy="ad", cascade={"persist", "remove"})
*/
private $territories;
/**
* @ORM\OneToMany(targetEntity="AppBundle\Entity\BookmarkAd", mappedBy="ad", cascade={"persist", "remove"})
*/
private $bookmarkAds;
/***********************
* Constructor
@@ -71,12 +71,12 @@ class Answer
***********************/
/**
* @ORM\ManyToMany(targetEntity="AppBundle\Entity\Note", cascade={"persist"})
* @ORM\ManyToMany(targetEntity="AppBundle\Entity\Note", cascade={"persist", "remove"})
*/
private $notes;
/**
* @ORM\OneToMany(targetEntity="AppBundle\Entity\Message", mappedBy="answer", cascade={"persist"})
* @ORM\OneToMany(targetEntity="AppBundle\Entity\Message", mappedBy="answer", cascade={"persist", "remove"})
*/
private $messages;
@@ -84,7 +84,6 @@ class Answer
* Constructor
***********************/
public function __construct($user = null, $ad = null, $status = null, $company = null)
{
$this->notes = new \Doctrine\Common\Collections\ArrayCollection();
@@ -116,12 +115,10 @@ class Answer
}
/***********************
* Getters & Setters
***********************/
/**
* Get id.
*
@@ -51,7 +51,7 @@ class Bookmark
***********************/
/**
* @ORM\ManyToMany(targetEntity="AppBundle\Entity\User", mappedBy="sharedBookmarks" ,cascade={"persist"})
* @ORM\ManyToMany(targetEntity="AppBundle\Entity\User", mappedBy="sharedBookmarks" ,cascade={"persist", "remove"})
*/
private $sharedWith;
@@ -27,7 +27,7 @@ class BookmarkAd
private $id;
/**
* @ORM\ManyToMany(targetEntity="AppBundle\Entity\Note", cascade={"persist"})
* @ORM\ManyToMany(targetEntity="AppBundle\Entity\Note", cascade={"persist","remove"})
*/
private $notes;
@@ -42,7 +42,6 @@ class BookmarkAd
*/
private $ad;
/***********************
* Constructor
***********************/
@@ -57,7 +56,6 @@ class BookmarkAd
* Getters & Setters
***********************/
/**
* Get id.
*
@@ -48,7 +48,7 @@ class BookmarkUser
***********************/
/**
* @ORM\ManyToMany(targetEntity="AppBundle\Entity\Note", cascade={"persist"})
* @ORM\ManyToMany(targetEntity="AppBundle\Entity\Note", cascade={"persist", "remove"})
*/
private $notes;
@@ -56,6 +56,13 @@ class Company
*/
private $description;
/**
* @var text
*
* @ORM\Column(name="description_admin", type="text", length=255, nullable=true)
*/
private $descriptionAdmin;
/**
* @var string
*
@@ -78,10 +85,10 @@ class Company
private $alias;
/**
* @ORM\OneToOne(targetEntity="AppBundle\Entity\Media", cascade={"persist"})
* @ORM\JoinColumn(nullable=true)
* @ORM\OneToOne(targetEntity="AppBundle\Entity\Media", cascade={"persist", "remove"})
* @ORM\JoinColumn(name="presentation_video_id", nullable=true)
*/
private $presentation_video;
private $presentationVideo;
/**
* @var string
@@ -128,26 +135,25 @@ class Company
private $users;
/**
* @ORM\OneToMany(targetEntity="AppBundle\Entity\Ad",mappedBy="company", cascade={"persist"})
* @ORM\OneToMany(targetEntity="AppBundle\Entity\Ad",mappedBy="company", cascade={"persist", "remove"})
*/
private $ads;
/**
* @ORM\OneToMany(targetEntity="AppBundle\Entity\TerritoryAd", mappedBy="territory", cascade={"persist"})
* @ORM\OneToMany(targetEntity="AppBundle\Entity\TerritoryAd", mappedBy="territory", cascade={"persist", "remove"})
*/
private $territoryAds;
/**
* @ORM\OneToMany(targetEntity="AppBundle\Entity\TerritoryAd", mappedBy="company", cascade={"persist"})
* @ORM\OneToMany(targetEntity="AppBundle\Entity\TerritoryAd", mappedBy="company", cascade={"persist", "remove"})
*/
private $territories;
/**
* @ORM\OneToMany(targetEntity="AppBundle\Entity\Answer",mappedBy="company", cascade={"persist"})
* @ORM\OneToMany(targetEntity="AppBundle\Entity\Answer",mappedBy="company", cascade={"persist", "remove"})
*/
private $spontaneousApplications;
/***********************
* Constructor
***********************/
@@ -164,7 +170,8 @@ class Company
* Custom Function
***********************/
public function init(){
public function init()
{
$this->initAddress();
$this->initTags();
$this->initExtra();
@@ -245,8 +252,8 @@ class Company
{
$arrayPublishedAds = array();
foreach ($this->getAds() as $ad) {
if( $ad->getStatus() == "PUBLISHED") {
array_push($arrayPublishedAds, $ad);
if ($ad->getStatus() == "PUBLISHED") {
array_push($arrayPublishedAds, $ad);
}
}
@@ -267,7 +274,6 @@ class Company
* Getter & Setters
***********************/
/**
* Get id.
*
@@ -491,7 +497,7 @@ class Company
*/
public function setPresentationVideo(\AppBundle\Entity\Media $presentationVideo = null)
{
$this->presentation_video = $presentationVideo;
$this->presentationVideo = $presentationVideo;
return $this;
}
@@ -503,7 +509,7 @@ class Company
*/
public function getPresentationVideo()
{
return $this->presentation_video;
return $this->presentationVideo;
}
/**
@@ -594,7 +600,6 @@ class Company
$this->file = $file;
}
/**
* Set emphasis.
*
@@ -774,4 +779,28 @@ class Company
{
return $this->spontaneousApplications;
}
/**
* Set descriptionAdmin.
*
* @param string|null $descriptionAdmin
*
* @return Company
*/
public function setDescriptionAdmin($descriptionAdmin = null)
{
$this->descriptionAdmin = $descriptionAdmin;
return $this;
}
/**
* Get descriptionAdmin.
*
* @return string|null
*/
public function getDescriptionAdmin()
{
return $this->descriptionAdmin;
}
}
@@ -27,7 +27,7 @@ class ProductAd
private $id;
/**
* @ORM\OneToOne(targetEntity="AppBundle\Entity\Product", cascade={"persist"})
* @ORM\OneToOne(targetEntity="AppBundle\Entity\Product", cascade={"persist" , "remove"})
*/
private $product;
@@ -69,49 +69,47 @@ class User extends BaseUser
private $file;
/***********************
* OneToMany Array's
***********************/
/**
* @ORM\OneToMany(targetEntity="AppBundle\Entity\Answer",mappedBy="user", cascade={"persist"})
* @ORM\OneToMany(targetEntity="AppBundle\Entity\Answer",mappedBy="user", cascade={"persist", "remove"})
*/
private $answers;
/**
* @ORM\OneToMany(targetEntity="AppBundle\Entity\Ad",mappedBy="creator", cascade={"persist"})
* @ORM\OneToMany(targetEntity="AppBundle\Entity\Ad",mappedBy="creator", cascade={"persist", "remove"})
*/
private $ads;
/**
* @ORM\OneToMany(targetEntity="AppBundle\Entity\Product",mappedBy="user", cascade={"persist"})
* @ORM\OneToMany(targetEntity="AppBundle\Entity\Product",mappedBy="user", cascade={"persist", "remove"})
*/
private $products;
/**
* @ORM\OneToMany(targetEntity="AppBundle\Entity\Media",mappedBy="creator", cascade={"persist"})
* @ORM\OneToMany(targetEntity="AppBundle\Entity\Media",mappedBy="creator", cascade={"persist", "remove"})
*/
private $medias;
/**
* @ORM\OneToMany(targetEntity="AppBundle\Entity\Bookmark",mappedBy="creator", cascade={"persist"})
* @ORM\OneToMany(targetEntity="AppBundle\Entity\Bookmark",mappedBy="creator", cascade={"persist", "remove"})
*/
private $bookmarks;
/**
* @ORM\ManyToMany(targetEntity="AppBundle\Entity\Bookmark", inversedBy="sharedWith", cascade={"persist"})
* @ORM\ManyToMany(targetEntity="AppBundle\Entity\Bookmark", inversedBy="sharedWith", cascade={"persist", "remove"})
*/
private $sharedBookmarks;
/**
* @ORM\OneToMany(targetEntity="AppBundle\Entity\Message",mappedBy="sender", cascade={"persist"})
* @ORM\OneToMany(targetEntity="AppBundle\Entity\Message",mappedBy="sender", cascade={"persist", "remove"})
*/
private $sendedMessages;
/**
* @ORM\OneToMany(targetEntity="AppBundle\Entity\Message",mappedBy="recipient", cascade={"persist"})
* @ORM\OneToMany(targetEntity="AppBundle\Entity\Message",mappedBy="recipient", cascade={"persist", "remove"})
*/
private $receivedMessages;
@@ -151,8 +149,6 @@ class User extends BaseUser
*/
private $socialPicture;
/***********************
* Constructor
***********************/
@@ -199,6 +195,22 @@ class User extends BaseUser
return null === $this->photo ? null : $this->getUploadDir() . '/' . $this->photo;
}
public function getFile()
{
return $this->file;
}
/**
* Set file
*
* @param UploadedFile $file
*
*/
public function setFile(UploadedFile $file = null)
{
$this->file = $file;
}
/**
* @param string $type
* @return array|string
@@ -269,7 +281,6 @@ class User extends BaseUser
* Getters & Setters
***********************/
/**
* Set firstname.
*
@@ -13,14 +13,15 @@ namespace AppBundle\Form\Admin;
use AppBundle\Entity\Company;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\CheckboxType;
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\UrlType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
use Symfony\Component\Form\Extension\Core\Type\UrlType;
use Symfony\Component\Form\Extension\Core\Type\FileType;
use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\Form\Extension\Core\Type\CountryType;
use Symfony\Component\Form\Extension\Core\Type\IntegerType;
use Symfony\Component\Form\Extension\Core\Type\CheckboxType;
use Symfony\Component\Form\Extension\Core\Type\TextareaType;
class TerritoryAdminType extends AbstractType
{
@@ -32,6 +33,7 @@ class TerritoryAdminType extends AbstractType
$builder
->add('brandName', TextType::class, array('label' => 'Nom'))
->add('description', TextType::class, array('label' => 'profile.company.description', 'required' => false))
->add('descriptionAdmin', TextareaType::class, array('label' => 'Description additionel réservé aux administrateur (Attention contenu affiché en front)', 'required' => false))
->add('website', UrlType::class, array(
'label' => 'profile.company.website',
'required' => false,
@@ -14,6 +14,16 @@ class CompanyRepository extends EntityRepository
{
public function getCompanySortByAds()
{
$qb = $this
->createQueryBuilder('c')
->andWhere('c.type = :type')
->setParameter(':type', "COMPANY")
->andWhere('c.presentationVideo IS NOT NULL')
->orderBy('c.cTime', 'DESC');
$badCompany = $qb->getQuery()->getResult();
$qb = $this
->createQueryBuilder('c')
->from('AppBundle:Ad', 'a')
@@ -21,10 +31,26 @@ class CompanyRepository extends EntityRepository
->andWhere('a.status = :status')
->orderBy('a.publishedAt', 'DESC')
->setParameter(':status', "PUBLISHED");
$firstCompany = $qb->getQuery()->getResult();
return $qb
->getQuery()
->getResult();
$mergeArray = array();
array_map(function($a, $b) use (&$mergeArray) {
if($a){
if(!isset($mergeArray[$a->getId()])) {
$mergeArray[$a->getId()] = $a;
}
}
if ($b) {
if (!isset($mergeArray[$b->getId()])) {
$mergeArray[$b->getId()] = $b;
}
}
}, $firstCompany, $badCompany);
return $mergeArray;
}
public function getTerritorySortByAds()
@@ -12,4 +12,27 @@ use Doctrine\ORM\EntityRepository;
*/
class UserRepository extends EntityRepository
{
public function findByRole($role)
{
$qb = $this->_em->createQueryBuilder();
$qb->select('u')
->from($this->_entityName, 'u')
->where('u.roles LIKE :roles')
->setParameter('roles', '%"' . $role . '"%');
return $qb->getQuery()->getResult();
}
public function findTalentsAndCompanies()
{
$qb = $this->_em->createQueryBuilder();
$qb->select('u')
->from($this->_entityName, 'u')
->where('u.roles LIKE :roleT')
->orWhere('u.roles LIKE :roleC')
->setParameter('roleC', '%ROLE_COMPANY%')
->setParameter('roleT', '%ROLE_TALENT%');
return $qb->getQuery()->getResult();
}
}
@@ -28,21 +28,19 @@ class MediaManager
$this->env = $env;
}
/**
* Rename video to vimeo
*/
public function editName($video)
{
if($video){
$response = $this->vimeo->request($video->getCdnUrl(), ['name'=>$video->getTitle()], 'PATCH');
return array('success' => "true",'data' => $response);
} else {
public function editName($video)
{
if ($video) {
$response = $this->vimeo->request($video->getCdnUrl(), ['name' => $video->getTitle()], 'PATCH');
return array('success' => "true", 'data' => $response);
} else {
return array('success' => "false");
}
}
}
}
/**
* @param $entity
@@ -50,7 +48,7 @@ class MediaManager
*
* Get Thumbnail of a video (Ad or Company)
*/
public function getThumbnails($entity)
public function getThumbnails($entity, $force = false)
{
if ($entity instanceof Ad) {
$video = $entity->getVideo();
@@ -62,11 +60,11 @@ class MediaManager
} else {
return null;
}
if($video){
if ($video) {
$arrayThumb = $video->getThumbnails();
if (empty($arrayThumb[0])) {
if ($force == true || empty($arrayThumb[0])) {
$response = $this->vimeo->request($video->getCdnUrl() . '/pictures', [], 'GET');
if(!isset($response['body']['error'])){
if (!isset($response['body']['error'])) {
$video->setThumbnails($response['body']['data']);
$this->em->persist($video);
$this->em->flush();
@@ -84,9 +82,9 @@ class MediaManager
{
$video = $entity;
if (unlink($this->mediaVideoDir . $video->getOriginalUrl())) {
if ( $this->env != "dev" ) {
if ($this->env != "dev") {
$response = $this->vimeo->request($video->getCdnUrl(), [], 'DELETE');
}
}
$this->em->remove($video);
$this->em->flush();
@@ -126,12 +124,12 @@ class MediaManager
$metadata = array();
//@TODO: trouver un fix pour la duration
/*if($extension != "mkv"){
$duration = $this->ffprobe->format($filePath)->get('duration');
$metadata['duration'] = $duration;
$duration = $this->ffprobe->format($filePath)->get('duration');
$metadata['duration'] = $duration;
}*/
$thumbnails = array();
//PUSH VIDEO TO Vimeo
if ( $this->env == "dev" ) {
//PUSH VIDEO TO Vimeo
if ($this->env == "dev") {
$uriVimeo = "/videos/215657518";
$nameVimeo = "name";
$linkVimeo = "/videos/215657518";
@@ -143,8 +141,8 @@ class MediaManager
$nameVimeo = $response['body']['name'];
$linkVimeo = $response['body']['link'];
}
}
}
//SAVE MEDIA
$media->setCreator($creator);
$media->setTitle($fileName);
@@ -157,15 +155,15 @@ class MediaManager
$this->em->persist($media);
if (!is_null($entity)) {
if ($entity instanceof Answer) {
if ($entity->getAd() == null){
$media->setTitle("Candidature pour : ".$entity->getCompany()->getBrandName());
if ($entity->getAd() == null) {
$media->setTitle("Candidature pour : " . $entity->getCompany()->getBrandName());
} else {
$media->setTitle("Video réponse à : ".$entity->getAd()->getTitle());
$media->setTitle("Video réponse à : " . $entity->getAd()->getTitle());
}
$entity->setVideo($media);
$this->em->persist($entity);
} elseif ($entity instanceof Ad) {
$media->setTitle("Video annonce de : ".$entity->getTitle());
$media->setTitle("Video annonce de : " . $entity->getTitle());
$entity->setVideo($media);
$this->em->persist($entity);
} elseif ($entity instanceof User) {
@@ -175,7 +173,7 @@ class MediaManager
$this->em->persist($entity);
}
} else {
$media->setTitle("Vidéo ".$creator->getLastname()." ".$creator->getFirstname());
$media->setTitle("Vidéo " . $creator->getLastname() . " " . $creator->getFirstname());
}
if ($creator->getCompany()->getType() == "TALENT") {
$media->setStatus("TO_MODERATE");
@@ -187,14 +185,14 @@ class MediaManager
'filename' => $media->getTitle(),
'originalFilename' => $uploadedFile->getClientOriginalName(),
'uriVimeo' => str_replace('videos', 'video', $uriVimeo),
'mediaId' => $media->getId()
'mediaId' => $media->getId(),
);
} else {
$message = array('success' => 500,
'message' => "Error Upload"
'message' => "Error Upload",
);
}
return $message;
}
}
}
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -227,6 +227,19 @@ $(document).ready(function () {
}
});
}
if ($(".owl-carousel-testimony").length ) {
$(".owl-carousel-testimony").owlCarousel({
items:1,
nav: true,
margin: 28,
loop: true,
autoplay: true,
autoplayHoverPause: true,
center:true,
navText: ['<span class="left-arrow"></span>', '<span class="right-arrow"></span>']
});
}
/*GMAP Search*/
if ($("#ad_search_location_gmap").length) {
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+71
View File
@@ -14427,6 +14427,59 @@ a.link-white-underline {
@media (min-width: 1136px) and (max-width: 1226px) {
.owl-carousel .owl-item .card-company .card-content-company .col-infos {
font-size: 14px; } }
#liste-testimony .item .row {
display: flex;
flex-direction: row;
align-items: center;
min-height: 200px;
margin-top: 60px;
margin-bottom: 0; }
#liste-testimony .item .row .col h3 {
font-family: Raleway;
font-size: 18px;
font-weight: 300;
margin: 30px 0 18px 0; }
#liste-testimony .item .row .col p {
font-size: 14px; }
#liste-testimony .item .row .text-testimony {
padding-right: 85px; }
#liste-testimony .owl-dots {
margin: 15px 0 30px 0;
text-align: center;
-webkit-tap-highlight-color: transparent; }
#liste-testimony .owl-dots .owl-dot {
display: inline-block;
zoom: 1; }
#liste-testimony .owl-dots .owl-dot span {
width: 13px;
height: 13px;
margin: 5px 7px;
background: #D6D6D6;
display: block;
-webkit-backface-visibility: visible;
transition: opacity .2s ease;
border-radius: 30px; }
#liste-testimony .owl-dots .owl-dot.active span, #liste-testimony .owl-dots .owl-dot:hover span {
background: #155EE5; }
#liste-testimony .owl-nav {
width: 103%;
z-index: 10; }
@media (max-width: 990px) {
#liste-testimony .item .row {
display: flex;
flex-direction: column;
align-items: center;
min-height: 200px;
margin-top: 60px;
margin-bottom: 0; }
#liste-testimony .item .row .col {
text-align: center; }
#liste-testimony .item .row .col img {
max-width: 200px;
margin: 0 auto; }
#liste-testimony .item .row .text-testimony {
padding-right: 0; } }
/* sidebar */
#sidebar {
background: none; }
@@ -15553,6 +15606,8 @@ table.highlight > tbody > tr:hover {
#answerPage .col-content.bg-arrow {
background: url(/img/img_popupcv/step_arrow.svg) 40px no-repeat #FFFFFF; }
#answerPage #modal-tuto {
width: 80%;
min-height: 540px;
background: #FFFFFF; }
#answerPage #modal-tuto .col-content {
margin-bottom: 0; }
@@ -15596,6 +15651,22 @@ table.highlight > tbody > tr:hover {
color: #FFF;
text-decoration: none; }
@media only screen and (max-width: 800px) {
#modal-tuto {
width: 98%; }
#modal-tuto .modal-content {
padding: 10px; }
#modal-tuto .modal-content h3 {
font-size: 1.5rem; }
#modal-tuto .modal-content .col {
padding: 0; }
#modal-tuto .modal-content .owl-dots {
display: none; }
#modal-tuto .modal-content .carousel-fixed-item {
margin-top: 0;
margin-right: 0;
font-size: 13px;
margin-bottom: 50px; } }
/*Pages
---------------------------------------------------*/
#ad_show .bg-bordered {
File diff suppressed because one or more lines are too long
Binary file not shown.

After

Width:  |  Height:  |  Size: 545 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 546 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 107 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 214 KiB

+11 -3
View File
@@ -16,6 +16,11 @@ function openModal(){
}
$(document).ready(function(){
var width = (window.innerWidth > 0) ? window.innerWidth : screen.width;
padding = 0;
if(width > 800){
var padding = 45;
}
$('#modal-tuto').modal({
dismissible: false,
ready: function(modal, trigger) {
@@ -25,7 +30,7 @@ $(document).ready(function(){
nav: true,
loop: false,
margin: 50,
stagePadding: 45,
stagePadding: padding,
navRewind:false,
navText: ['<span class="left-arrow"></span>', '<span class="right-arrow"></span>']
});
@@ -50,6 +55,8 @@ $(document).ready(function(){
openModal();
}
$(".view-tuto").on('click', function(){
var toIndex = 0;
$(".tuto-carousel").trigger("to.owl.carousel", [toIndex, 1, true]);
openModal();
});
@@ -93,19 +100,20 @@ function eraseCookie(name) {
/* GESTON de la webcam */
var elementExists = document.getElementById("myCvVideo");
if(document.body.contains(elementExists)){
var player = videojs("myCvVideo",
{
controls: true,
width: 320,
height: 240,
fluid: false,
plugins: {
record: {
audio: true,
video: true,
maxLength: 300,
debug: true,
videoMimeType: 'video/mp4',
debug: true
}
}
});
+13
View File
@@ -227,6 +227,19 @@ $(document).ready(function () {
}
});
}
if ($(".owl-carousel-testimony").length ) {
$(".owl-carousel-testimony").owlCarousel({
items:1,
nav: true,
margin: 28,
loop: true,
autoplay: true,
autoplayHoverPause: true,
center:true,
navText: ['<span class="left-arrow"></span>', '<span class="right-arrow"></span>']
});
}
/*GMAP Search*/
if ($("#ad_search_location_gmap").length) {
+3 -1
View File
@@ -2,4 +2,6 @@
# www.google.com/support/webmasters/bin/answer.py?hl=en&answer=156449
User-agent: *
Disallow:
Disallow: /login/facebook*
Disallow: /login/linkedin*
Disallow: /annonce/*/repondre/*
@@ -10,7 +10,6 @@
margin-top: 40px;
}
}
.tuto-carousel{
.owl-item {
display: inline !important;
@@ -49,7 +48,7 @@
}
.carousel-fixed-item{
margin-right: 45px;
margin-top: -40px;
margin-top:-40px;
position: relative;
z-index: 100;
}
@@ -75,6 +74,8 @@
background: url(/img/img_popupcv/step_arrow.svg) 40px no-repeat #FFFFFF;;
}
#modal-tuto{
width: 80%;
min-height: 540px;
background: $white;
.col-content{
margin-bottom: 0;
@@ -141,4 +142,28 @@
}
}
}
}
@media only screen and (max-width: 800px) {
#modal-tuto {
width: 98%;
.modal-content{
h3{
font-size: 1.5rem;
}
padding:10px;
.col{
padding: 0;
}
.owl-dots{
display: none;
}
.carousel-fixed-item{
margin-top:0;
margin-right:0;
font-size: 13px;
margin-bottom:50px;
}
}
}
}
@@ -345,4 +345,81 @@
.owl-carousel .owl-item .card-company .card-content-company .col-infos {
font-size: 14px;
}
}
//Carousel Testimony
#liste-testimony{
.item{
.row{
display: flex;
flex-direction: row;
align-items: center;
min-height:200px;
margin-top: 60px;
margin-bottom: 0;
.col{
h3{
font-family: Raleway;
font-size: 18px;
font-weight: 300;
margin: 30px 0 18px 0;
}
p{
font-size: 14px;
}
}
.text-testimony{
padding-right:85px;
}
}
}
.owl-dots{
margin: 15px 0 30px 0;
text-align:center;
-webkit-tap-highlight-color:transparent;
}
.owl-dots .owl-dot{display:inline-block;zoom:1}
.owl-dots .owl-dot span{
width:13px;
height:13px;
margin:5px 7px;
background:#D6D6D6;
display:block;
-webkit-backface-visibility:visible;
transition:opacity .2s ease;
border-radius:30px;
}
.owl-dots .owl-dot.active span,.owl-dots .owl-dot:hover span{
background:#155EE5;
}
.owl-nav{
width:103%;
z-index: 10;
}
}
@media (max-width: 990px){
#liste-testimony{
.item{
.row{
display: flex;
flex-direction: column;
align-items: center;
min-height:200px;
margin-top: 60px;
margin-bottom: 0;
.col{
text-align: center;
img{
max-width: 200px;
margin: 0 auto;
}
}
.text-testimony{
padding-right:0;
}
}
}
}
}