Compare commits

...

5 Commits

Author SHA1 Message Date
llaniau 69522b4836 Bug prestashop 2021-03-10 12:21:25 +01:00
llaniau 1aea17557e MEP V2.7.5 2021-03-10 11:33:09 +01:00
llaniau ab74dae813 MEP V2.7.5 2021-03-10 11:32:30 +01:00
llaniau c46f0c29a3 V2.7.5 2021-03-10 10:29:39 +01:00
llaniau 5b1d296817 Amélioration candidatures dashboard entre 2021-03-10 10:27:50 +01:00
20 changed files with 1618 additions and 585 deletions
@@ -301,7 +301,11 @@
</trans-unit>
<trans-unit id="ad.company.list.title">
<source>ad.company.list.title</source>
<target>Intitulé de l'annonce</target>
<target>Intitulé de l'offre</target>
</trans-unit>
<trans-unit id="ad.company.list.location">
<source>ad.company.list.location</source>
<target>Localisation</target>
</trans-unit>
<trans-unit id="ad.company.list.answers">
<source>ad.company.list.answers</source>
@@ -315,6 +319,10 @@
<source>ad.company.list.actions</source>
<target>Actions</target>
</trans-unit>
<trans-unit id="ad.company.list.statut">
<source>ad.company.list.statut</source>
<target>Statut</target>
</trans-unit>
<trans-unit id="ad.company.list.status">
<source>ad.company.list.status</source>
<target>Statut</target>
@@ -367,6 +375,10 @@
<source>profile.talent.firstname</source>
<target>Prénom</target>
</trans-unit>
<trans-unit id="profile.talent.video">
<source>profile.talent.video</source>
<target>Vidéo</target>
</trans-unit>
<trans-unit id="profile.talent.lastname">
<source>profile.talent.lastname</source>
<target>Nom</target>
@@ -1,30 +1,35 @@
{% extends 'admin/base_admin.html.twig' %}
{% block js %}
{# <link rel="stylesheet" href="//cdn.datatables.net/1.10.16/css/jquery.dataTables.min.css">
{# <link rel="stylesheet" href="//cdn.datatables.net/1.10.16/css/jquery.dataTables.min.css">
<link rel="stylesheet" href="https://cdn.datatables.net/buttons/1.4.1/css/buttons.dataTables.min.css"> #}
<link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/1.10.22/css/jquery.dataTables.min.css">
<link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/buttons/1.6.4/css/buttons.dataTables.min.css">
{# <script type="text/javascript" language="javascript" src="https://code.jquery.com/jquery-3.5.1.js"></script>
<link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/1.10.22/css/jquery.dataTables.min.css">
<link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/buttons/1.6.4/css/buttons.dataTables.min.css">
{# <script type="text/javascript" language="javascript" src="https://code.jquery.com/jquery-3.5.1.js"></script>
<script type="text/javascript" language="javascript" src="https://cdn.datatables.net/1.10.22/js/jquery.dataTables.min.js"></script>
<script type="text/javascript" language="javascript" src="https://cdn.datatables.net/buttons/1.6.4/js/dataTables.buttons.min.js"></script>
<script type="text/javascript" language="javascript" src="https://cdn.datatables.net/buttons/1.6.4/js/buttons.flash.min.js"></script> #}
<script type="text/javascript" src="https://code.jquery.com/jquery-3.5.1.js"></script>
<script type="text/javascript" src="https://cdn.datatables.net/1.10.22/js/jquery.dataTables.min.js"></script>
<script type="text/javascript" src="https://cdn.datatables.net/buttons/1.6.4/js/dataTables.buttons.min.js"></script>
<script type="text/javascript" language="javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jszip/3.1.3/jszip.min.js"></script>
<script type="text/javascript" language="javascript" src="https://cdnjs.cloudflare.com/ajax/libs/pdfmake/0.1.53/pdfmake.min.js"></script>
<script type="text/javascript" language="javascript" src="https://cdnjs.cloudflare.com/ajax/libs/pdfmake/0.1.53/vfs_fonts.js"></script>
<script type="text/javascript" language="javascript" src="https://cdn.datatables.net/buttons/1.6.4/js/buttons.html5.min.js"></script>
<script type="text/javascript" src="https://code.jquery.com/jquery-3.5.1.js"></script>
<script type="text/javascript" src="https://cdn.datatables.net/1.10.22/js/jquery.dataTables.min.js"></script>
<script type="text/javascript" src="https://cdn.datatables.net/buttons/1.6.4/js/dataTables.buttons.min.js"></script>
<script type="text/javascript" language="javascript"
src="https://cdnjs.cloudflare.com/ajax/libs/jszip/3.1.3/jszip.min.js"></script>
<script type="text/javascript" language="javascript"
src="https://cdnjs.cloudflare.com/ajax/libs/pdfmake/0.1.53/pdfmake.min.js"></script>
<script type="text/javascript" language="javascript"
src="https://cdnjs.cloudflare.com/ajax/libs/pdfmake/0.1.53/vfs_fonts.js"></script>
<script type="text/javascript" language="javascript"
src="https://cdn.datatables.net/buttons/1.6.4/js/buttons.html5.min.js"></script>
<script type="text/javascript" language="javascript" src="https://cdn.datatables.net/buttons/1.6.4/js/buttons.print.min.js"></script>
<script type="text/javascript" language="javascript"
src="https://cdn.datatables.net/buttons/1.6.4/js/buttons.print.min.js"></script>
{# <script type="text/javascript" src="https://cdn.datatables.net/buttons/1.6.4/js/buttons.flash.min.js"></script>
{# <script type="text/javascript" src="https://cdn.datatables.net/buttons/1.6.4/js/buttons.flash.min.js"></script>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jszip/3.1.3/jszip.min.js"></script>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/pdfmake/0.1.53/pdfmake.min.js"></script>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/pdfmake/0.1.53/vfs_fonts.js"></script>
@@ -35,13 +40,13 @@
{% endblock %}
{% block contentHeader %}
<h1>
Liste des Candidatures
</h1>
<ol class="breadcrumb">
<li><a href="{{ path('admin_dashboard') }}"><i class="fa fa-dashboard"></i> Dashboard</a></li>
<li class="active">Annonces</li>
</ol>
<h1>
Liste des Candidatures
</h1>
<ol class="breadcrumb">
<li><a href="{{ path('admin_dashboard') }}"><i class="fa fa-dashboard"></i> Dashboard</a></li>
<li class="active">Annonces</li>
</ol>
{% endblock %}
{% block content %}
@@ -50,51 +55,54 @@
.dataTables_filter {
display: none;
}
</style>
<div class="box box-primary">
<div class="box-body">
<table width="100%" class="table " style="background-color: #3c8dbc">
<thead>
<tr>
<th colspan="5" class="text-center">RECHERCHE</th>
</tr>
<div class="box box-primary">
<div class="box-body">
<table width="100%" class="table " style="background-color: #3c8dbc">
<thead>
<tr>
<th colspan="5" class="text-center">RECHERCHE</th>
</thead>
<tr>
<th width="4%"><input id='input1' type='text' class='form-control' placeholder='par id' style='font-family:Arial, FontAwesome; width:100%'/></th>
<th width="11%"><input id='input3' type='text' class='form-control' placeholder='par nom' style='font-family:Arial, FontAwesome; width:100%'/></th>
<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%">
<select id='input7'>
<option value="sended">Envoyé</option>
<option value="draft">Brouillon</option>
</select>
</th>
</tr>
</table>
<br/>
<table id="towns_dt_table" width="100%" class="table table-hover table-bordered">
{# Add a tfoot which will actually be used to place the individual search boxes #}
<tfoot>
<tr>
<th width="4%">id</th>
<th width="6%">Date d'envoi</th>
<th width="11%">Nom</th>
<th width="11%">Prénom</th>
<th width="25%">Annonce / entreprise</th>
<th width="28%">Vidéo</th>
<th width="15%">Statut</th>
<th width="10%">Actions</th>
</tr>
{# <tr>
</tr>
</thead>
<tr>
<th width="4%"><input id='input1' type='text' class='form-control' placeholder='par id'
style='font-family:Arial, FontAwesome; width:100%' /></th>
<th width="11%"><input id='input3' type='text' class='form-control' placeholder='par nom'
style='font-family:Arial, FontAwesome; width:100%' /></th>
<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%">
<select id='input7'>
<option value="sended">Tous les statuts</option>
<option value="sended">Envoyé</option>
<option value="draft">Brouillon</option>
</select>
</th>
</tr>
</table>
<br />
<table id="towns_dt_table" width="100%" class="table table-hover table-bordered">
{# Add a tfoot which will actually be used to place the individual search boxes #}
<tfoot>
<tr>
<th width="4%">id</th>
<th width="6%">Date d'envoi</th>
<th width="11%">Nom</th>
<th width="11%">Prénom</th>
<th width="25%">Annonce / entreprise</th>
<th width="28%">Vidéo</th>
<th width="15%">Statut</th>
<th width="10%">Actions</th>
</tr>
{# <tr>
<th><input id='input1' type='text' class='form-control' placeholder='' style='font-family:Arial, FontAwesome; width:100%'/></th>
<th></th>
<th><input id='input3' type='text' class='form-control' placeholder='' style='font-family:Arial, FontAwesome; width:100%'/></th>
@@ -102,25 +110,25 @@
<th></th>
<th><input id='input5' type='text' class='form-control' placeholder='' style='font-family:Arial, FontAwesome; width:100%'/></th>
</tr> #}
</tfoot>
<thead>
<tr>
<th>Id</th>
<th>Date d'envoi</th>
<th>Nom</th>
<th>Prénom</th>
<th>Annonce / entreprise</th>
<th>Vidéo</th>
<th>Statut</th>
<th>Actions</th>
</tr>
</thead>
<tbody></tbody>
</table>
</tfoot>
<thead>
<tr>
<th>Id</th>
<th>Date d'envoi</th>
<th>Nom</th>
<th>Prénom</th>
<th>Annonce / entreprise</th>
<th>Vidéo</th>
<th>Statut</th>
<th>Actions</th>
</tr>
</thead>
<tbody></tbody>
</table>
{# <table id="answer_list_table" class="table table-hover table-bordered">
{# <table id="answer_list_table" class="table table-hover table-bordered">
<thead>
<tr>
<th class="col-xs-2">Date d'envoi</th>
@@ -169,118 +177,152 @@
{% endfor %}
</tbody>
</table> #}
</div>
</div>
</div>
</div>
{% endblock %}
{% block javascripts %}
<script>
$(document).ready(function(){
<script>
$(document).ready(function () {
// Add a text input to each footer cell
var pos = 1;
$('#towns_dt_table tfoot th').each( function () {
var title = $(this).text();
//$(this).html( "<input id='input" + pos + "' type='text' class='form-control' placeholder='' style='font-family:Arial, FontAwesome; width:100%'/>" );
// Add a text input to each footer cell
pos ++;
});
var table = $('#towns_dt_table').DataTable({
buttons: [
'copy', 'csv', 'excel', 'pdf', 'print'
],
"columnDefs": [
{ "name": "ad_id", "targets": 0 , "searchable": true, "orderable": true},
{ "name": "date_envoi", "targets": 1 , "searchable": true, "orderable": true},
{ "name": "nom", "targets": 2 , "searchable": true, "orderable": true},
{ "name": "prenom", "targets": 3 , "searchable": true, "orderable": true},
{ "name": "entreprise", "targets": 4, "searchable": true, "orderable": true },
{ "name": "video", "targets": 5 },
{ "name": "status", "targets": 6 , "searchable": true, "orderable": true},
{ "name": "actions", "targets": 7 },
],
"processing": true,
"serverSide": true,
"ajax": {
"url": '{{ path('alimenterCandidatures') }}',
"type": 'POST'
var table = $('#towns_dt_table').DataTable({
buttons: [
'copy', 'csv', 'excel', 'pdf', 'print'
],
"columnDefs": [{
"name": "ad_id",
"targets": 0,
"searchable": true,
"orderable": true
},
"paging" : true,
"info" : true,
"searching": true,
"bFilter":true,
"responsive": true,
"pageLength": 10,
"order": [[0, 'desc']],
"language": {
"url": "http://cdn.datatables.net/plug-ins/1.10.11/i18n/French.json"
{
"name": "date_envoi",
"targets": 1,
"searchable": true,
"orderable": true
},
});
{
"name": "nom",
"targets": 2,
"searchable": true,
"orderable": true
},
{
"name": "prenom",
"targets": 3,
"searchable": true,
"orderable": true
},
{
"name": "entreprise",
"targets": 4,
"searchable": true,
"orderable": true
},
{
"name": "video",
"targets": 5
},
{
"name": "status",
"targets": 6,
"searchable": true,
"orderable": true
},
{
"name": "actions",
"targets": 7
},
],
"processing": true,
"serverSide": true,
// Apply the search
pos = 1;
table.columns().every( function () {
var that = this;
$("#input"+pos).on( 'keyup change', function () {
if ( that.search() !== this.value )
{
that
.search( this.value )
.draw();
}
});
pos++;
});
$('#towns_dt_table_filter').hide();
"ajax": {
"url": '{{ path('alimenterCandidatures') }}',
"type": 'POST'
},
"paging": true,
"info": true,
"searching": true,
"bFilter": true,
"responsive": true,
"pageLength": 10,
"order": [
[0, 'desc']
],
"language": {
"url": "http://cdn.datatables.net/plug-ins/1.10.11/i18n/French.json"
},
});
function changerStatut(value, id){
var idAnswer = id;
var route = '/app_dev.php/admin/config/answer/' + idAnswer + '/status/' + value;
var select = $(this);
$.ajax({
type: "POST",
url: route,
dataType: "json",
success: function (msg) {
console.log("ok");
$("#status_"+id).text(value);
}
});
}
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!";
// Apply the search
pos = 1;
table.columns().every(function () {
var that = this;
$("#input" + pos).on('keyup change', function () {
if (that.search() !== this.value) {
that
.search(this.value)
.draw();
}
});
pos++;
});
$('#towns_dt_table_filter').hide();
});
function changerStatut(value, id) {
var idAnswer = id;
var route = '/app_dev.php/admin/config/answer/' + idAnswer + '/status/' + value;
var select = $(this);
$.ajax({
type: "POST",
url: route,
dataType: "json",
success: function (msg) {
console.log("ok");
$("#status_" + id).text(value);
}
console.log(txt);
});
}
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!";
}
</script>
console.log(txt);
}
</script>
{% endblock %}
@@ -0,0 +1,104 @@
<!DOCTYPE html>
<html lang="fr">
<head>
<meta http-equiv="content-type" content="text/html;charset=UTF-8" />
<meta charset="utf-8" />
<title>Pages - Admin Dashboard UI Kit - Dashboard</title>
<meta name="viewport"
content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no, shrink-to-fit=no" />
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-touch-fullscreen" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="default">
<meta content="Meet pages - The simplest and fastest way to build web UI for your dashboard or app."
name="description" />
<meta content="Ace" name="author" />
<link href="{{ asset('dashboard/plugins/pace/pace-theme-flash.css') }}" rel="stylesheet" type="text/css" />
<link href="{{ asset('dashboard/plugins/bootstrap/css/bootstrap.min.css') }}" rel="stylesheet" type="text/css" />
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
<link href="{{ asset('dashboard/plugins/jquery-scrollbar/jquery.scrollbar.css') }}" rel="stylesheet" type="text/css"
media="screen" />
<link href="{{ asset('dashboard/plugins/select2/css/select2.min.css') }}" rel="stylesheet" type="text/css"
media="screen" />
<link href="{{ asset('dashboard/plugins/nvd3/nv.d3.min.css') }}" rel="stylesheet" type="text/css" media="screen" />
<link href="{{ asset('dashboard/plugins/mapplic/css/mapplic.css') }}" rel="stylesheet" type="text/css" />
<link href="{{ asset('dashboard/plugins/rickshaw/rickshaw.min.css') }}" rel="stylesheet" type="text/css" />
<link class="main-stylesheet" href="{{ asset('dashboard/pages/css/themes/corporate.css') }}" rel="stylesheet"
type="text/css" />
<!-- 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>
<!-- 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 %}
{% endblock %}
<!-- END PAGE LEVEL JS -->
</head>
<body class="fixed-header dashboard menu-pin menu-behind">
{# {{ include('default/user_switch.html.twig') }} #}
{{ include('admin/navigation_gauche.html.twig')}} }}
<!-- START PAGE-CONTAINER -->
<div class="page-container ">
{{ include('admin/base_dashboard_header.html.twig') }}
<!-- START PAGE CONTENT WRAPPER -->
<div class="page-content-wrapper ">
<div class="content ">
{% block dashContent %}
Dashboard Company
{% endblock %}
</div>
<!-- START COPYRIGHT -->
<!-- START CONTAINER FLUID -->
<!-- START CONTAINER FLUID -->
<div class=" container-fluid container-fixed-lg footer">
<div class="copyright sm-text-center">
<p class="small-text no-margin pull-left sm-pull-reset">
©2017-2021 Talents Tube
</p>
<p class="small no-margin pull-right sm-pull-reset">
Besoin d'aide ? 02 30 05 06 31
</p>
<div class="clearfix"></div>
</div>
</div>
<!-- END COPYRIGHT -->
</div>
<!-- END PAGE CONTENT WRAPPER -->
</div>
<!-- END PAGE CONTAINER -->
{% block javascripts %}
{% endblock %}
<!-- END PAGE LEVEL JS -->
<!-- END CORE TEMPLATE JS -->
<!-- BEGIN PAGE LEVEL JS -->
{% block javascriptsSecondaire %}
{% endblock %}
{% block javascriptsEnd %}
{% endblock %}
</body>
</html>
@@ -1,8 +1,7 @@
<!-- START HEADER -->
<div class="header ">
<!-- START MOBILE SIDEBAR TOGGLE -->
<a href="#" class="btn-link toggle-sidebar d-lg-none pg-icon btn-icon-link" data-toggle="sidebar">
menu</a>
<!-- END MOBILE SIDEBAR TOGGLE -->
<div class="">
<div class="brand inline m-l-10">
@@ -25,9 +24,7 @@
</div>
</div>
<!-- END User Info-->
<a href="#" class="header-icon m-l-5 sm-no-margin d-inline-block" data-toggle="quickview" data-toggle-element="#quickview">
<i class="pg-icon btn-icon-link">menu_add</i>
</a>
</div>
</div>
<!-- END HEADER -->
@@ -133,7 +133,19 @@
</small>
</li>
{% endif %}
{% else %}
<li class="">
<a href="/logout">
<span class="principal">Se déconnecter</span>
</a>
<span class="icon-thumbnail">
<span class="material-icons">
logout
</span>
</span>
</li>
{% endif %}
</ul>
@@ -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 %}
@@ -1,5 +1,29 @@
{# {% extends 'company/base_dashboard_company.html.twig' %} #}
{% extends 'admin/base_dashboard.html.twig' %}
{% extends 'admin/base_dashboard_candidatures.html.twig' %}
{% block javascriptSupl %}
<link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/1.10.22/css/jquery.dataTables.min.css">
<link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/buttons/1.6.4/css/buttons.dataTables.min.css">
{# <script type="text/javascript" language="javascript" src="https://code.jquery.com/jquery-3.5.1.js"></script>
<script type="text/javascript" language="javascript" src="https://cdn.datatables.net/1.10.22/js/jquery.dataTables.min.js"></script>
<script type="text/javascript" language="javascript" src="https://cdn.datatables.net/buttons/1.6.4/js/dataTables.buttons.min.js"></script>
<script type="text/javascript" language="javascript" src="https://cdn.datatables.net/buttons/1.6.4/js/buttons.flash.min.js"></script> #}
<script type="text/javascript" src="https://code.jquery.com/jquery-3.5.1.js"></script>
<script type="text/javascript" src="https://cdn.datatables.net/1.10.22/js/jquery.dataTables.min.js"></script>
<script type="text/javascript" src="https://cdn.datatables.net/buttons/1.6.4/js/dataTables.buttons.min.js"></script>
<script type="text/javascript" language="javascript"
src="https://cdnjs.cloudflare.com/ajax/libs/jszip/3.1.3/jszip.min.js"></script>
<script type="text/javascript" language="javascript"
src="https://cdnjs.cloudflare.com/ajax/libs/pdfmake/0.1.53/pdfmake.min.js"></script>
<script type="text/javascript" language="javascript"
src="https://cdnjs.cloudflare.com/ajax/libs/pdfmake/0.1.53/vfs_fonts.js"></script>
<script type="text/javascript" language="javascript"
src="https://cdn.datatables.net/buttons/1.6.4/js/buttons.html5.min.js"></script>
<script type="text/javascript" language="javascript"
src="https://cdn.datatables.net/buttons/1.6.4/js/buttons.print.min.js"></script>
{% endblock %}
{% block dashContent %}
@@ -22,7 +46,7 @@
<!-- START CONTAINER FLUID -->
<div class=" container-fluid container-fixed-lg bg-white">
{# <div class=" container-fluid container-fixed-lg bg-white">
<!-- START card -->
<div class="card card-transparent">
<div class="card-header ">
@@ -72,62 +96,161 @@
</div>
</div>
<!-- END card -->
</div>
</div> #}
<!-- END CONTAINER FLUID -->
<style type="text/css">
/* Hide default search box */
.dataTables_filter {
display: none;
}
</style>
<!-- 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">Candidatures spontanées
<div class="card-title">Candidatures
</div>
</div>
<div class="card-body">
<div class="table-responsive" id="spontaneous">
<table class="table table-hover" id="basicTable">
<table width="100%" class="table " style="">
<tr>
<th width="11%"><input id='input2' type='text' class='form-control' placeholder='Recherche par nom'
style='font-family:Arial, FontAwesome; width:100%' /></th>
<th width="11%"><input id='input3' type='text' class='form-control' placeholder='Recherche par prénom'
style='font-family:Arial, FontAwesome; width:100%' /></th>
<th width="25%">
<select id='input5' class='form-control'>
<option value="">Toutes les offres</option>
<option value="spontaneous">Candidatures spontanées</option>
{% for offre in offres %}
<option value="{{offre.title}}">{{offre.title}}</option>
{% endfor %}
</select>
</th>
<th width="25%">
<select id='input7' class='form-control'>
<option value="">Tous les statuts</option>
<option value="EMBAUCHE">Embauché</option>
<option value="REFUSE">Refusé</option>
<option value="ENTRETIEN">Entretien programmé</option>
<option value="A_TRAITER">À traiter</option>
<option value="CONTACTE">Contacté</option>
</select>
</th>
</tr>
</table>
<br />
<table id="candidatures_dt_table" width="100%" class="table table-hover ">
{# Add a tfoot which will actually be used to place the individual search boxes #}
<thead>
<tr>
<th width="4%">Vidéo</th>
<th width="6%">Nom</th>
<th width="6%">Prénom</th>
<th width="11%">Date de reception</th>
<th width="11%">Intitulé de l'offre</th>
<th width="25%">Localisation</th>
<th width="15%">Statut</th>
</tr>
</thead>
<tbody></tbody>
</table>
{#
<table class="table table-hover " id="">
<thead>
<tr>
<!-- NOTE * : Inline Style Width For Table Cell is Required as it may differ from user to user
Comman Practice Followed
-->
<th style="width:33%">{{ 'profile.talent.lastname'|trans }}
<th style="width:15%">{{ 'profile.talent.video'|trans }}
</th>
<th style="width:15%">{{ 'profile.talent.lastname'|trans }}
{{ 'profile.talent.firstname'|trans }}</th>
<th style="width:33%">{{ 'global.datereception.label'|trans }}</th>
<th style="width:33%" class="center-align">{{ 'ad.company.list.actions'|trans }}</th>
<th style="width:15%">{{ 'global.datereception.label'|trans }}</th>
<th style="width:15%">{{ 'ad.company.list.title'|trans }}</th>
<th style="width:15%">{{ 'ad.company.list.location'|trans }}</th>
<th style="width:15%" class="center-align">{{ 'ad.company.list.statut'|trans }}</th>
</tr>
</thead>
<tbody>
{% for answer in spontaneous %}
<tr>
<td>
<a href="{{ path('company_answer_show',{'id':answer.id }) }}">
{% if answer.video.thumbnails.0 is defined %}
{% set img = answer.video.thumbnails.0.sizes.1.link %}
{% else %}
{% set img = " " %}
{% endif %}
<img src="{{ img }}">
</a>
</td>
<td>
<a href="{{ path('company_answer_show',{'id':answer.id }) }}">{{ answer.user.lastname }}
{{ answer.user.firstname }}</a>
</td>
<td>{{ answer.sendTime()|date('d/m/Y') }}</td>
<td class="center-align">
<a title="" href="{{ path('company_answer_show',{'id':answer.id }) }}">
<i class="pg-icon">eye</i>
</a>
<a href="#" class="note-action c-pointer" data-func="add" data-answer="{{ answer.id }}">
<i class="pg-icon">note</i>
</a>
{% for note in answer.notes %}
<a class="tooltipped note-action c-pointer" data-position="top" data-delay="50"
data-tooltip="{{ note.content }}" data-note="{{ note.id }}" data-func="edit">
<i class="pg-icon">comment</i>
</a>
<td>
{% if answer.ad %}
{{ answer.ad.title }}
{% else %}
Candidature spontanée
{% endif %}
</td>
<td>
{% if answer.user.getGeoloc %}
{% for adress in answer.user.getGeoloc %}
{{ adress["locality"] }}, {{ adress["postal_code"] }}
{% endfor %}
{% else %}
Non renseignée
{% endif %}
</td>
<td class="center-align">
{% if answer.statusReponse =="EMBAUCHE" %}
<span class="label label-success">Embauché</span>
{% elseif answer.statusReponse =="REFUSE"%}
<span class="label label-important">Refusé</span>
{% elseif answer.statusReponse =="ENTRETIEN"%}
<span class="label label-warning">Entretien programmé</span>
{% elseif answer.statusReponse =="A_TRAITER"%}
<span class="label label-info">À traiter</span>
{% elseif answer.statusReponse =="CONTACTE"%}
<span class="label">Contacté</span>
{% else %}
<span class="label label-info">À traiter</span>
{% endif %}
</td>
</tr>
{% endfor %}
{% if spontaneous|length == 0 %}
<tr><th colspan="3" class="text-center">Aucune candidature pour le moment</th></tr>
<tr>
<th colspan="5" class="text-center">Aucune candidature pour le moment</th>
</tr>
{% endif %}
</tbody>
</table>
</table> #}
</div>
</div>
</div>
@@ -137,4 +260,133 @@
<div id="note-modal"></div>
<script>
$(document).ready(function () {
// Add a text input to each footer cell
var pos = 1;
var table = $('#candidatures_dt_table').DataTable({
"columnDefs": [{
"name": "video",
"targets": 0,
"searchable": true,
"orderable": false
},
{
"name": "nom",
"targets": 1,
"type": 'html',
"searchable": true,
"orderable": true
},
{
"name": "prenom",
"targets": 2,
"type": 'html',
"searchable": true,
"orderable": true
},
{
"name": "dateReception",
"targets": 3,
"searchable": true,
"orderable": true
},
{
"name": "offre",
"targets": 4,
"searchable": true,
"orderable": false
},
{
"name": "localisation",
"targets": 5,
"searchable": true,
"orderable": false
},
{
"name": "statusReponse",
"targets": 6,
"searchable": true,
"orderable": false
},
],
"processing": true,
"serverSide": true,
"ajax": {
"url": '{{ path('alimenterCandidaturesCompany') }}',
"type": 'POST',
},
"paging": true,
"info": true,
"searching": true,
"bFilter": true,
"responsive": true,
"pageLength": 10,
"order": [
[0, 'desc']
],
"language": {
"sProcessing": "En cours de chargement...",
"sSearch": "Rechercher&nbsp;:",
"sLengthMenu": "Afficher _MENU_ candidatures",
"sInfo": "Candidature de _START_ &agrave; _END_ sur _TOTAL_ candidatures",
"sInfoEmpty": "Candidature 0 &agrave; 0 sur 0 candidature",
"sInfoFiltered": "",
"sInfoPostFix": "",
"sLoadingRecords": "Chargement en cours...",
"sZeroRecords": "Aucune candidature ne correspond à votre recherche",
"sEmptyTable": "Aucune candidature disponible dans le tableau",
"oPaginate": {
"sFirst": "Premier",
"sPrevious": "Pr&eacute;c&eacute;dent",
"sNext": "Suivant",
"sLast": "Dernier"
},
"oAria": {
"sSortAscending": ": activer pour trier la colonne par ordre croissant",
"sSortDescending": ": activer pour trier la colonne par ordre d&eacute;croissant"
}
},
});
// Apply the search
pos = 1;
table.columns().every(function () {
var that = this;
$("#input" + pos).on('keyup change', function () {
console.log(this);
if (that.search() !== this.value) {
that
.search(this.value)
.draw();
}
});
pos++;
});
$('#candidatures_dt_table_filter').hide();
});
</script>
{% endblock %}
@@ -24,7 +24,7 @@
<a href="{{ path('company_ad_answer_list',{'id':answer.ad.id}) }}">{{ answer.ad.title }}
</a>
{% else %}
Candidature spontanée
<a href="{{ path('company_answer_list') }}">Candidature spontanée</a>
{% endif %}
</li>
<li class="breadcrumb-item active"><a href="#"> candidat {{ answer.user.firstname }}
@@ -86,42 +86,52 @@
<!-- START card -->
<div class="col-lg-12">
<div class="card card-default container">
<div class="row">
<div class="col-md">
<a href="{{path('company_ad_create')}}">
<button class="card-action" type="button">
<a href="{{path('company_ad_create')}}">
<span class="material-icons">movie_creation</span>
<div class="row lien-fleche" style="justify-content: center; align-items: center">
<h6 class="col-10">Créer une offre demploi vidéo</h6>
<span class="material-icons col-2 fleche">arrow_right_alt</span>
</div>
</a>
</button>
</a>
</div>
<div class="col-md" type="button">
<div class="col-md" type="button">
<a href="{{path('company_ad')}}">
<button class="card-action" style="" type="button">
<a href="{{path('company_ad')}}">
<span class="material-icons" style="">work</span>
<div class="row lien-fleche" style="justify-content: center; align-items: center">
<h6 class="col-10">Gérer mes offres demploi</h6>
<span class="material-icons col-2 fleche">arrow_right_alt</span>
</div>
</a>
</button>
</a>
</div>
<div class="col-md" type="button">
<a href="{{path('company_answer_list')}}">
<button class="card-action" style="" type="button">
<a href="{{path('company_answer_list')}}">
<span class="material-icons" style="">face</span>
<div class="row lien-fleche" style="justify-content: center; align-items: center">
<h6 class="col-10">Gérer mes candidatures</h6>
<span class="material-icons col-2 fleche">arrow_right_alt</span>
</div>
</a>
</button>
</a>
</div>
</div>
</div>
</div>
@@ -1,5 +1,5 @@
{% extends "baseLanding.html.twig" %}
{% block title %}Valorisez votre métier en tension et recrutez des candidats grâce à la vidéo{% endblock %}
{% block title %}Valorisez votre métier d'aide à domicile et recrutez grâce à la vidéo{% endblock %}
{% block meta %}
<meta name="description"
content="Vous souhaitez améliorer l'attractivité de votre métier ? Avec le recrutement vidéo, valorisez sa richesse réelle et recrutez des aides à domicile en vidéo.">
@@ -178,8 +178,7 @@
<div class="container">
<header>
<h2>Ils ont recruté en vidéo, pourquoi pas vous ?</h2>
<h3>Plus qu'une dernière étape avant de rendre votre métier en tension plus attractif.<br>Osez recruter
autrement ! </h3>
<h3>Ces entreprises ont choisi Talents Tube pour recruter en vidéo ! </h3>
</header>
<div class="row">
<div class="col-md-12">
@@ -223,7 +222,7 @@
<!--goodbye-message-->
<div class="appel-action">
<h2>Demandez un RDV gratuitement</h2>
<p>Plus qu'une dernière étape avant de rendre le métier d'aide à domicile plus attractif.</p>
<p>Plus quune dernière étape avant de rendre votre métier en tension plus attractif. </p>
<p>Osez recruter autrement !</p>
<button class="bttn" data-toggle="modal" data-target="#exampleModal" style="margin-top:30px;">Demander
un rendez-vous</button>
@@ -126,9 +126,9 @@
{% set idPresentationVideo = false %}
{% endif %}
{% if idPresentationVideo != media.id %}
{% if iteration is divisible by(2) or iteration==0%}
{# {% if iteration is divisible by(2) or iteration==0%}
<div class="row p-t-10 p-b-10">
{% endif %}
{% endif %} #}
<div class="col">
<div class="card-image">
@@ -189,7 +189,7 @@
{# cas d'un nombre impair de video #}
{% if nbMedias == iteration+1 and iteration is divisible by(2)%}
{# {% if nbMedias == iteration+1 and iteration is divisible by(2)%}
<div class="col">
<div class="card-image">
<div class="embed-responsive embed-responsive-16by9">
@@ -199,14 +199,14 @@
</div>
</div>
</div>
{% endif %}
{% endif %} #}
{# fermeture de div pour aller à la ligne quand le nombre de video est un multiple de deux et par défaut au début iteration==0 #}
{% if iteration+1 is divisible by(2) or nbMedias==1%}
{# {% if iteration+1 is divisible by(2) or nbMedias==1%}
</div>
{% endif %}
{% set iteration = iteration+1 %}
{% set iteration = iteration+1 %} #}
{% else %}
{% set nbMedias = nbMedias-1%}
{# {% set nbMedias = nbMedias-1%} #}
{% endif %}
{% endfor %}
+1 -1
View File
@@ -80,7 +80,7 @@ twig:
globals:
push_public_key: "%push_params.public_key%"
fairlane_cookie_consent: '@fairlane_cookie_consent.twig'
version: '2.7.4'
version: '2.7.5'
@@ -534,27 +534,259 @@ class AnswerController extends Controller
*/
public function companyListAnswerAction()
{
// $answers = $em->getRepository('AppBundle:Answer')->getAnswerByCompany($user->getCompany()->getId());
// $spontaneous = $em->getRepository('AppBundle:Answer')->findBy(
// array(
// 'company' => $user->getCompany()->getId(),
// 'status' => 'SENDED'
// ),
// array(
// 'cTime' => 'DESC'
// )
// );
$user = $this->getUser();
$em = $this->getDoctrine()->getManager();
$answers = $em->getRepository('AppBundle:Answer')->getAnswerByCompany($user->getCompany()->getId());
$spontaneous = $em->getRepository('AppBundle:Answer')->findBy(
array(
'company' => $user->getCompany()->getId(),
'status' => 'SENDED',
'ad' => null
),
array(
'uTime' => 'DESC'
)
);
$offres = $em->getRepository('AppBundle:Ad')->getAdByCompany($user->getCompany()->getId());
return $this->render('company/answer_list.html.twig', [
'answers' => $answers,
'spontaneous' => $spontaneous,
// 'answers' => $answers,
// 'spontaneous' => $spontaneous,
'offres' => $offres,
'type' => 'answer'
]);
}
/**
* @Route("/alimenterCandidaturesCompany", name="alimenterCandidaturesCompany")
*/
public function listDatatablesAction(Request $request)
{
// Set up required variables
$em = $this->getDoctrine()->getManager();
$this->repository = $em->getRepository('AppBundle:Answer');
//$this->translator = $this->get('translator');
// Get the parameters from DataTable Ajax Call
$companyId = $this->getUser()->getCompany()->getId();
if ($request->getMethod() == 'POST')
{
$draw = intval($request->request->get('draw'));
$start = $request->request->get('start');
$length = $request->request->get('length');
$search = $request->request->get('search');
$orders = $request->request->get('order');
$columns = $request->request->get('columns');
}
else // If the request is not a POST one, die hard
die;
// Process Parameters
// Orders
foreach ($orders as $key => $order)
{
// Orders does not contain the name of the column, but its number,
// so add the name so we can handle it just like the $columns array
$orders[$key]['name'] = $columns[$order['column']]['name'];
}
// Further filtering can be done in the Repository by passing necessary arguments
$otherConditions = $companyId;
// Get results from the Repository
$results = $this->repository->getRequiredDTData($start, $length, $orders, $search, $columns, $otherConditions);
// Returned objects are of type Town
$objects = $results["results"];
// Get total number of objects
$total_objects_count = $this->repository->comptage();
// Get total number of results
$selected_objects_count = count($objects);
// Get total number of filtered data
$filtered_objects_count = $results["countResult"];
// Construct response
$response = '{
"draw": '.$draw.',
"recordsTotal": '.$total_objects_count.',
"recordsFiltered": '.$filtered_objects_count.',
"data": [';
$i = 0;
foreach ($objects as $key => $answer)
{
$response .= '["';
$j = 0;
$nbColumn = count($columns);
foreach ($columns as $key => $column)
{
// In all cases where something does not exist or went wrong, return -
$responseTemp = "-";
switch($column['name'])
{
case 'video':
{
if ($answer->getVideo()->getThumbnails()){
$img= $answer->getVideo()->getThumbnails()[0]['sizes'][1]['link'];
}else{
$img= "";
}
$link = $this->generateUrl('company_answer_show', array('id' => $answer->getId()), UrlGeneratorInterface::ABSOLUTE_URL);
$responseTemp = "<a href='".$link."'><img src='".$img."'></a>";
break;
}
case 'nom':
{
// We know from the class definition that the postal code cannot be null
// But if that werent't the case, its value should have been tested
// before assigning it to $responseTemp
$link = $this->generateUrl('company_answer_show', array('id' => $answer->getId()), UrlGeneratorInterface::ABSOLUTE_URL);
$responseTemp = "<a href='".$link."'>".$answer->getUser()->getLastname()."</a>";
break;
}
case 'prenom':
{
// We know from the class definition that the postal code cannot be null
// But if that werent't the case, its value should have been tested
// before assigning it to $responseTemp
$link = $this->generateUrl('company_answer_show', array('id' => $answer->getId()), UrlGeneratorInterface::ABSOLUTE_URL);
$responseTemp = "<a href='".$link."'>".$answer->getUser()->getFirstname()."</a>";
break;
}
case 'dateReception':
{
// We know from the class definition that the postal code cannot be null
// But if that werent't the case, its value should have been tested
// before assigning it to $responseTemp
$responseTemp = $answer->getSendTime()->format('d/m/Y H:i:s');
break;
}
case 'offre':
{
// We know from the class definition that the postal code cannot be null
// But if that werent't the case, its value should have been tested
// before assigning it to $responseTemp
if($answer->getCompany()){
if($answer->getAd()){
$responseTemp = $answer->getAd()->getTitle();
}else{
$responseTemp = "Candidature spontanée";
}
}else{
$responseTemp = "ND";
}
break;
}
case 'date_envoi':
{
if($answer->getSendTime()){
$responseTemp = date_format($answer->getSendTime(), 'd-m-Y H:i:s');;
}else{
$responseTemp ="ND";
}
// This cannot happen if inner join is used
// However it can happen if left or right joins are used
break;
}
case 'ad_id':
{
$video = $answer->getVideo();
$responseTemp ="ND";
if($video){
$responseTemp = 'ID Candidature :'.$answer->getId().'<br />';
$videoRenommee = str_replace("/videos/", "", $video->getCdnUrl());
//TODO : revoir ca car une vue dans un controller ca n'est pas top!!!!!
$responseTemp .= "<iframe src='https://player.vimeo.com/video/".$videoRenommee."?embedparameter=value' width='auto' height='auto' frameborder='0' allowfullscreen></iframe>";
}
break;
}
case 'statusReponse':
{
// if($answer->getstatus()=="SENDED"){
// $status= "ENVOYE";
// }else{
// $status=$answer->getstatus();
// }
// $responseTemp = "<span id='status_".$answer->getId()."'> ".$status."</span> ";
if ($answer->getStatusReponse() =="EMBAUCHE" ){
$responseTemp = "<span class='label label-success'>Embauché</span> ";
}elseif ($answer->getStatusReponse() =="REFUSE" ){
$responseTemp = "<span class='label label-important'>Refusé</span> ";
}elseif ($answer->getStatusReponse() =="ENTRETIEN" ){
$responseTemp = "<span class='label label-warning'>Entretien programmé</span> ";
}elseif ($answer->getStatusReponse() =="A_TRAITER" ){
$responseTemp = "<span class='label label-info'>À traiter</span> ";
}elseif ($answer->getStatusReponse() =="CONTACTE" ){
$responseTemp = "<span class='label'>Contacté</span> ";
}else {
$responseTemp = "<span class='label label-info'>À traiter</span> ";
}
break;
}
case 'localisation':
{
if($answer->getUser()->getGeoloc()) {
foreach ($answer->getUser()->getGeoloc() as &$adress) {
$responseTemp =$adress["locality"] .", ". $adress["postal_code"];
}
}else {
$responseTemp ="Non renseignée";
}
break;
}
}
// Add the found data to the json
$response .= $responseTemp;
if(++$j !== $nbColumn)
$response .='","';
}
$response .= '"]';
// Not on the last item
if(++$i !== $selected_objects_count)
$response .= ',';
}
$response .= ']}';
// Send all this stuff back to DataTables
$returnResponse = new JsonResponse();
$returnResponse->setJson($response);
return $returnResponse;
}
/**
* @Route("/entreprise/me/espace-oe/candidature-spontanee/", name="company_spontaneous_list")
*/
@@ -37,7 +37,7 @@ class MediaController extends Controller
{
$event = new UserEvent($this->getUser());
$company = $this->getUser()->getCompany();
$this->get('event_dispatcher')->dispatch(PrestashopBridgeEvents::USER_PROD_UPDATE, $event);
//$this->get('event_dispatcher')->dispatch(PrestashopBridgeEvents::USER_PROD_UPDATE, $event);
$em = $this->getDoctrine()->getManager();
$medias = $em->getRepository('AppBundle:Media')->findBy(array('creator' => $this->getUser()));
$form = $this->createForm(MediaType::class);
@@ -16,10 +16,12 @@ class NoteAjaxType extends AbstractType
->add('content', TextareaType::class, array(
'label' => 'Note',
'required' => true,
'attr' => array(
'class' => 'form-control',
'rows' =>"5",
'style' =>"min-height:4em;"
'style' =>"min-height:4em;",
'placeholder' => 'Ce commentaire sera visible uniquement par vous et les autres utilisateurs de lespace recruteur.',
)
));
}
@@ -62,6 +62,19 @@ class AdRepository extends AbstractRepository
->andWhere('a.id = '.$adId);
return $qb
->getQuery()
->getResult();
}
public function getAdByCompany($companyId){
$qb = $this
->createQueryBuilder('a')
->select('a')
->leftjoin('a.company', 'comp')
->where('comp.id = '.$companyId);
return $qb
->getQuery()
->getResult();
@@ -201,20 +201,20 @@ class AnswerRepository extends AbstractRepository
// ->join('department.region', 'region');
// Other conditions than the ones sent by the Ajax call ?
if ($otherConditions === null)
if ($otherConditions )
{
// No
// However, add a "always true" condition to keep an uniform treatment in all cases
$query->where("1=1");
$countQuery->where("1=1");
}
else
{
// Add condition
$query->where($otherConditions);
$countQuery->where($otherConditions);
$query->where("company.id=".$otherConditions);
$countQuery->where("company.id=".$otherConditions);
$query->andWhere("a.status='SENDED'");
$countQuery->andWhere("a.status='SENDED'");
}else{
}
// Fields Search
foreach ($columns as $key => $column)
{
@@ -231,25 +231,54 @@ class AnswerRepository extends AbstractRepository
{
// $searchQuery = 'town.name LIKE \'%'.$searchItem.'%\'';
$searchQuery = 'lower(user.lastname) LIKE \'%'.$searchItem.'%\'';
$searchQuery = 'lower(user.lastname) LIKE lower(\'%'.$searchItem.'%\')';
break;
}
case 'nomPrenom':
{
// $searchQuery = 'town.name LIKE \'%'.$searchItem.'%\'';
$searchQuery = 'lower(user.lastname) LIKE lower(\'%'.$searchItem.'%\') or lower(user.firstname) LIKE lower(\'%'.$searchItem.'%\')';
break;
}
case 'offre':
{
// $searchQuery = 'town.name LIKE \'%'.$searchItem.'%\'';
if($searchItem=="spontaneous"){
$searchQuery = 'lower(ad.title) is null';
}else{
$searchQuery = 'lower(ad.title) LIKE lower(\'%'.$searchItem.'%\')';
}
break;
}
case 'status':
{
// $searchQuery = 'town.postalCode LIKE \'%'.$searchItem.'%\'';
$searchQuery = 'lower(a.status) LIKE \'%'.$searchItem.'%\'';
$searchQuery = 'lower(a.status) LIKE lower(\'%'.$searchItem.'%\')';
break;
}
case 'statusReponse':
{
// $searchQuery = 'town.postalCode LIKE \'%'.$searchItem.'%\'';
$searchQuery = 'lower(a.statusReponse) LIKE lower(\'%'.$searchItem.'%\')';
if($searchItem=="A_TRAITER"){
$searchQuery .= ' or a.statusReponse is null';
}
break;
}
case 'prenom':
{
// $searchQuery = 'department.name LIKE \'%'.$searchItem.'%\'';
$searchQuery = 'lower(user.firstname) LIKE \'%'.$searchItem.'%\'';
$searchQuery = 'lower(user.firstname) LIKE lower(\'%'.$searchItem.'%\')';
break;
}
case 'entreprise':
{
// $searchQuery = 'department.name LIKE \'%'.$searchItem.'%\'';
$searchQuery = 'lower(company.brandName) LIKE \'%'.$searchItem.'%\' or lower(ad.title) LIKE \'%'.$searchItem.'%\'';
$searchQuery = 'lower(company.brandName) LIKE lower(\'%'.$searchItem.'%\') or lower(ad.title) LIKE lower(\'%'.$searchItem.'%\')';
break;
}
case 'ad_id':
@@ -178,6 +178,11 @@ Créer une offre d'emploi vidéo / Gérer mes offres d'emploi / Gérer mes candi
box-shadow: 0px 2px 5px rgb(30 35 39 / 5%);
transition: background-color 0.3s;
transition: box-shadow 0.5s;
color: #fff !important;
}
.card-action a {
color: #fff !important;
}
.card-action:hover {
@@ -250,4 +255,4 @@ Détails d'une candidature
border:2px dashed rgba(33, 33, 33, 0.14);
border-radius:5px;
padding:20px;
}
}
File diff suppressed because it is too large Load Diff