templates/home/index.html.twig line 1

Open in your IDE?
  1. {% extends 'base.html.twig' %}
  2. {% block title %}Accueil{% endblock %}
  3. {% block body %}
  4. <style>
  5.     .btn-info {
  6.         color: white;
  7.     }
  8.     /* Style pour le background image */
  9.     body, html {
  10.         margin: 0;
  11.         padding: 0;
  12.         height: 100%;
  13.     }
  14.     .btn-container { 
  15.         margin-top: 100px;
  16.         /* Positionner tout à droite avec un espacement de 20px du bord */
  17.         margin-right: 50px; 
  18.         display: flex; /* Utiliser Flexbox pour aligner les éléments horizontalement */
  19.         justify-content: center; /* Centrer les boutons horizontalement dans le conteneur */
  20.         gap: 20px; /* Espacement entre les boutons */
  21.          /* Ajuster si nécessaire pour l'espacement du bord */
  22.         align-items: center; 
  23.         margin-left: 350px;
  24.     }
  25.     .btn-container button {
  26.         height: 80px;
  27.         width: 400px;
  28.         font-size: 1.5rem;
  29.         border: 2px solid transparent; /* Bordure transparente */
  30.         transition: all 0.3s ease; /* Transition douce pour les effets */
  31.     }
  32.     .btn-container button:hover {
  33.         color: #000; /* Couleur du texte au survol */
  34.         border-color: #000; /* Couleur de la bordure au survol */
  35.         background-color: transparent; /* Fond transparent au survol */
  36.     }
  37.     .welcome-text {
  38.         text-align: center;
  39.         margin-top: 30px;
  40.     }
  41.     .sub-text {
  42.         text-align: center;
  43.         font-size: 1rem;
  44.         font-weight: normal;
  45.         margin-top: 12px;
  46.     }
  47.     /* Style de la ligne noire */
  48.     .divider {
  49.         width: 20%;
  50.         height: 1px;
  51.         background-color: black;
  52.         margin: 20px auto;
  53.     }
  54.     .container {
  55.         background: url('{{ asset('images/fond2.png') }}') no-repeat center center;
  56.         background-size: cover;
  57.         height: 50vh;
  58.         margin: 0;
  59.         position: relative; /* Ajout d'une position relative pour le positionnement absolu */
  60.     }
  61.     .search {
  62.         margin: 20px auto;
  63.         padding: 20px;
  64.         border: 2px solid #ddd;
  65.         border-radius: 10px;
  66.         background-color: #f9f9f9;
  67.     }
  68.     .search h3 {
  69.         margin-bottom: 15px;
  70.         margin-left: 90px;
  71.         color: #007bff;
  72.     }
  73.     .form-inline input {
  74.         margin-bottom: 10px;
  75.         height: 40px;
  76.     }
  77.     .form-inline .btn {
  78.         height: 40px;
  79.     }
  80.     .qui-sommes-nous {
  81.         background-color: white; /* Fond blanc */
  82.         padding: 20px; /* Espacement interne */
  83.         margin: 20px; /* Espacement externe */
  84.         border-radius: 10px; /* Coins arrondis */ 
  85.         width: 600px;
  86.         text-align: center; /* Alignement centré */
  87.         margin-top: 150px;
  88.         margin-left: 200px; /* Centrer horizontalement */
  89.         margin-right: auto; /* Centrer horizontalement */
  90.     }
  91.     .qui-sommes-nous .btn {
  92.         width: 150px; /* Rétrécir le bouton */
  93.         height: 50px; /* Rétrécir la hauteur du bouton */
  94.         font-size: 1rem; /* Réduire la taille de la police */
  95.         margin-top: 20px; /* Espacement au-dessus du bouton */
  96.     }
  97.     .nos-valeurs {
  98.         background-color: white; /* Fond blanc */
  99.         padding: 20px; /* Espacement interne */
  100.         margin: 20px; /* Espacement externe */
  101.         border-radius: 10px; /* Coins arrondis */
  102.         text-align: center; /* Alignement à gauche */
  103.         width: 600px;
  104.         margin-top: 150px;
  105.         margin-left: 50px; /* Centrer horizontalement */
  106.         margin-right: 200px; /* Centrer horizontalement */
  107.     }
  108.     .nos-valeurs-btn {
  109.         margin-top: auto; /* Pour coller au bas */
  110.     }
  111.     .container1{
  112.         margin-top: 100px;
  113.         background: url('{{ asset('images/cercle.png') }}') no-repeat center center;
  114.         background-size: cover;
  115.         height: 100vh;
  116.         position: relative;
  117.         margin-bottom: 200px;
  118.         
  119.     }
  120.     .btn-red {
  121.         background-color :rgb(82, 212, 238);
  122.         color: white;
  123.     }
  124.     .btn-lightblue {
  125.     background-color: #ADD8E6; /* Bleu clair */
  126.     color: white; /* Couleur du texte */
  127.     border: none; /* Supprime la bordure */
  128.     }
  129.     .btn-lightblue:hover {
  130.         background-color: #87CEEB; /* Couleur pour le survol */
  131.     }
  132.     .alert {
  133.         padding: 15px;
  134.         margin-bottom: 20px;
  135.         border-radius: 5px;
  136.     }
  137.     .alert-success {
  138.         background-color: #d4edda;
  139.         color: #155724;
  140.     }
  141.     .alert-danger {
  142.         background-color: #f8d7da;
  143.         color: #721c24;
  144.     }
  145.     .title {
  146.         margin-left: 200px;
  147.     }
  148.     .btn.btn-lightblue {
  149.     background-color: white; /* Fond blanc */
  150.     color: #1E90FF; /* Couleur du texte en bleu Dodger Blue */
  151.     border: 2px solid #1E90FF; /* Bordure bleue */
  152.     border-radius: 5px; /* Coins légèrement arrondis */
  153.     padding: 12px 24px; /* Espacement interne pour un meilleur confort *//* Police en gras */
  154.     transition: background-color 0.3s, color 0.3s, border-color 0.3s, transform 0.3s; /* Transition douce pour les effets */
  155. }
  156. .btn.btn-lightblue:hover {
  157.     background-color: #1E90FF; /* Fond bleu au survol */
  158.     color: white; /* Texte blanc au survol */
  159.     border-color: #1E90FF; /* Bordure bleue au survol */
  160.     transform: scale(1.05); /* Agrandir légèrement au survol */
  161. }
  162. .btn.btn-lightblue:focus {
  163.     outline: none; /* Supprimer le contour par défaut */
  164.     box-shadow: 0 0 0 2px rgba(30, 144, 255, 0.5); /* Ajouter une ombre portée bleue au focus */
  165. }
  166. .mission {
  167.     margin: 20px;
  168. }
  169. /* Style des cartes des missions */
  170.     .card {
  171.         border: 1px solid #ddd; /* Bordure légère pour délimiter la carte */
  172.         border-radius: 10px; /* Coins arrondis */
  173.         box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1); /* Ombre légère pour effet 3D */
  174.         overflow: hidden; /* Pour que les coins arrondis soient visibles */
  175.         transition: box-shadow 0.3s ease, transform 0.3s ease; /* Transition pour les effets */
  176.     }
  177.     .card:hover {
  178.         box-shadow: 0 8px 16px rgba(0, 0, 0, 0.2); /* Ombre plus marquée au survol */
  179.         transform: translateY(-5px); /* Légère élévation au survol */
  180.     }
  181.     .card-body {
  182.         padding: 20px; /* Espacement interne */
  183.     }
  184.     .card-title {
  185.         font-size: 1.5rem; /* Taille de police légèrement augmentée */
  186.         font-weight: bold; /* Texte en gras pour le titre */
  187.         color: #333; /* Couleur du texte */
  188.         margin-bottom: 10px; /* Espacement sous le titre */
  189.     }
  190.     .ref {
  191.         font-size: 0.875rem; /* Taille de police légèrement réduite */
  192.         color: #555; /* Couleur légèrement plus claire */
  193.     }
  194.     .list-unstyled {
  195.         padding-left: 0; /* Supprimer l’espacement par défaut */
  196.         list-style: none; /* Supprimer les puces */
  197.         font-size: 1rem; /* Taille de police confortable */
  198.         color: #666; /* Couleur du texte */
  199.     }
  200.     .list-unstyled li {
  201.         margin-bottom: 10px; /* Espacement entre les éléments de liste */
  202.     }
  203.     .btn-primary {
  204.         background-color: #007bff; /* Couleur de fond pour le bouton */
  205.         color: white; /* Couleur du texte */
  206.         border: none; /* Supprimer la bordure */
  207.         border-radius: 5px; /* Coins arrondis */
  208.         padding: 10px 20px; /* Espacement interne */
  209.         transition: background-color 0.3s ease, transform 0.3s ease; /* Transition pour les effets */
  210.     }
  211.     .btn-primary:hover {
  212.         background-color: #0056b3; /* Couleur de fond au survol */
  213.         transform: scale(1.05); /* Légère agrandissement au survol */
  214.     }
  215.     .client-name {
  216.         background-color: #f0f8ff; /* Fond légèrement coloré pour le nom du client */
  217.         padding: 5px 10px; /* Espacement interne */
  218.         border-radius: 5px; /* Coins arrondis */
  219.         font-weight: bold; /* Texte en gras */
  220.         color: #007bff;
  221.         font-size: 1.2rem;  /* Couleur du texte */
  222.     }
  223.     .date-duration {
  224.         font-size: 0.925rem; /* Taille de police légèrement réduite */
  225.         color: #333; /* Couleur du texte */
  226.     }
  227.     .budget {
  228.         font-size: 1.1rem; /* Taille de police confortable */
  229.         color: #333; /* Couleur du texte */
  230.     }
  231.     .pagination {
  232.     display: flex;
  233.     justify-content: center;
  234.     padding-left: 0;
  235.     list-style: none;
  236.     border-radius: 0.25rem;
  237.     margin: 20px 0;
  238. }
  239. .pagination li {
  240.     margin: 0 5px;
  241. }
  242. .pagination li a,
  243. .pagination li span {
  244.     color: #007bff; /* Couleur du texte */
  245.     text-decoration: none;
  246.     background-color: white;
  247.     border: 1px solid #dee2e6;
  248.     padding: 10px 15px;
  249.     border-radius: 0.25rem;
  250.     transition: background-color 0.2s, color 0.2s;
  251. }
  252. .pagination li a:hover {
  253.     background-color: #007bff;
  254.     color: white;
  255. }
  256. .pagination li.active span {
  257.     background-color: #007bff;
  258.     color: white;
  259.     border-color: #007bff;
  260. }
  261. .pagination li.disabled span {
  262.     color: #6c757d;
  263.     background-color: #fff;
  264.     border-color: #dee2e6;
  265. }
  266. </style>
  267.     {% for label, messages in app.flashes %}
  268.         <div class="alert alert-{{ label }}">
  269.             {% for message in messages %}
  270.                 {{ message }}
  271.             {% endfor %}
  272.         </div>
  273.     {% endfor %}
  274. <div class="container mb-5">
  275.     <div class="title">
  276.     <h1 class="welcome-text">Bienvenue sur DimaWork</h1>
  277.     <div class="divider"></div> <!-- Ligne noire ajoutée ici -->
  278.     <h3 class="sub-text">Rejoignez DimaWork, l'avenir vous appartient...</h3>
  279.     </div>
  280.     <div class="btn-container">
  281.     {% if is_granted('ROLE_SUPERADMIN') %}
  282.         <!-- Admin sees both buttons -->
  283.         <button class="btn btn-primary mb-5" onclick="window.location.href='{{ path('app_register1') }}'">Inscription Freelance</button>
  284.         <button class="btn btn-lightblue mb-5" onclick="window.location.href='{{ path('app_register_entreprise') }}'">Inscription Entreprise</button>
  285.         <button class="btn btn-red mb-5" onclick="window.location.href='{{ path('app_creation_admin') }}'">Inscription Admin Opérationnel</button>
  286.     {% elseif is_granted('ROLE_ADMIN') %}
  287.         <!-- Admin sees both buttons -->
  288.         <button class="btn btn-primary mb-5" onclick="window.location.href='{{ path('app_register1') }}'">Inscription Freelance</button>
  289.         <button class="btn btn-lightblue mb-5" onclick="window.location.href='{{ path('app_register_entreprise') }}'">Inscription Entreprise</button>
  290.     {% elseif is_granted('ROLE_USER') %}
  291.         <!-- Consultant sees no buttons -->
  292.         {# No buttons shown #}
  293.     {% elseif app.user is null %}
  294.         <!-- User (including non-connected) sees only the Freelance button -->
  295.         <button class="btn btn-primary mb-5" onclick="window.location.href='{{ path('app_register1') }}'">Inscription Freelance</button>
  296.     {% endif %}
  297. </div>
  298. </div>
  299. {# barre de recherche #}
  300. <div class="search mt-5" style="max-width: 90%;">
  301.     <h3>Recherchez vos missions</h3>
  302.     <form method="get" class="form-inline d-flex justify-content-center align-items-center">
  303.         <input type="text" name="titre" class="form-control mr-2" placeholder="Titre" value="{{ criteria.titre|default('') }}"style="max-width: 175px;">
  304.         <input type="text" name="entreprise_concernee" class="form-control mr-2" placeholder="Client" value="{{ criteria.entreprise_concernee|default('') }}"style="max-width: 175px;">
  305.         <input type="text" name="ville" class="form-control mr-2" placeholder="Ville" value="{{ criteria.ville|default('') }}" style="max-width: 175px;">
  306.         <input type="text" name="duree" class="form-control mr-2" placeholder="Durée (mois)" value="{{ criteria.duree|default('') }}" style="max-width: 175px;">
  307.         <input type="number" name="budget_min" class="form-control mr-2" placeholder="Budget min (€)" value="{{ criteria.budget_min|default('') }}" step="0.01" style="max-width: 175px;">
  308.         <input type="number" name="budget_max" class="form-control mr-2" placeholder="Budget max (€)" value="{{ criteria.budget_max|default('') }}" step="0.01" style="max-width: 175px;">
  309.         
  310.         <button type="submit" class="btn btn-info mr-2">Rechercher</button>
  311.         <button type="reset" class="btn btn-secondary" onclick="window.location.href='{{ path('app_home') }}'">Réinitialiser</button>
  312.     </form>
  313. </div>
  314. <div class="mission">
  315.     <div class="row">
  316.         {% for laMission in lesMissions.items %}
  317.             <div class="col-md-4 mb-4">
  318.                 <div class="card">
  319.                     <div class="card-body">
  320.                         <div class="d-flex justify-content-between align-items-center mb-3">
  321.                             <h5 class="card-title">{{ laMission.titre }}</h5>
  322.                             <button type="button" class="close" aria-label="Close"></button>
  323.                         </div>
  324.                         <div class="d-flex justify-content-between align-items-center mb-2">
  325.                             <span class="ref">REF: {{ laMission.referencemission }}</span>
  326.                         </div>
  327.                         <ul class="list-unstyled mb-3">
  328.                             <li><span class="client-name">Client : {% if laMission.confidentialite == 1 %}
  329.                                 Confidentiel
  330.                                 {% else %}
  331.                                     {{ laMission.entrepriseconcernee }} 
  332.                                 {% endif %}</span></li>
  333.                             <li><i class="fas fa-map-marker-alt"></i> Lieu : {{ laMission.ville }}</li>
  334.                             <li class="date-duration"><i class="fas fa-calendar-alt"></i> Début : {{ laMission.datedebut|date('d/m/Y') }}</li>
  335.                             <li class="date-duration"><i class="fas fa-clock"></i> Durée : {{ laMission.duree }} mois</li>
  336.                             <li class="date-duration"> 
  337.                                 <i class="{{ laMission.experiencedmd > 5 ? 'fas fa-user-tie' : (laMission.experiencedmd > 1 ? 'fas fa-user' : 'fas fa-user-graduate') }}"></i> Expérience demandée :
  338.                                     {{ laMission.experiencedmd }} {{ laMission.experiencedmd > 1 ? 'ans' : 'an' }}
  339.                             </li>
  340.                             <li class="budget"><i class="fas fa-lock"></i> Budget : {% if laMission.budget == 0 or laMission.budget is null %} Non renseigné {% else %} {{ laMission.budget }} € {% endif %}</li>
  341.                         </ul>
  342.                         {% set route = 
  343.                             is_granted('ROLE_SUPERADMIN') or is_granted('ROLE_ADMIN') ? 'app_admin_mission_details' :
  344.                             (is_granted('ROLE_ENTREPRISE') and laMission.entreprise is not null and laMission.entreprise.id == app.user.id ? 'app_entreprise_mission_details' : 'app_mission_details') 
  345.                         %}
  346.                         <a class="btn btn-primary btn-block" href="{{ path(route, {'id': laMission.id }) }}">Détails</a>
  347.                     </div>
  348.                 </div>
  349.             </div>
  350.         {% endfor %}
  351.     </div>
  352. </div>
  353. <div class="pagination justify-content-center mt-4">
  354.     {{ knp_pagination_render(lesMissions, '@KnpPaginator/Pagination/twitter_bootstrap_v4_pagination.html.twig') }}
  355. </div>
  356. <div class="container1">
  357.     <div class="row">
  358.         <div class="col-md-6">
  359.             <div class="qui-sommes-nous">
  360.                 <h3>Qui sommes-nous?</h3>
  361.                 <p class="sub-text">DimaWork est une plateforme d’intermédiation entre entreprises et consultants. Les entreprises ont besoin de compétences particulières et nous proposons des freelances pour répondre à ces besoins.</p>
  362.                 <button class="btn btn-info" onclick="window.location.href='{{ path('app_accueil') }}'">En savoir plus</button>
  363.             </div>
  364.         </div>
  365.         <div class="col-md-6">
  366.         </div>
  367.         <div class="row mb-5">
  368.         <div class="col-md-6">
  369.         </div>
  370.         <div class="col-md-6">
  371.             <div class="nos-valeurs">
  372.                 <h3>Nos valeurs</h3>
  373.                 <p class="sub-text">DimaWork permet aux entreprises de sélectionner parmi une variété de travailleurs indépendants, chacun offrant son expertise particulière. Grâce à cette diversité de possibilités, les entreprises peuvent sélectionner le consultant qui répond le mieux à leurs besoins et à leur culture institutionnelle.</p>
  374.                 <div class="nos-valeurs-btn">
  375.                     <button class="btn btn-info"  onclick="window.location.href='{{ path('app_accueil') }}'">En savoir plus</button>
  376.                 </div>
  377.             </div>
  378.         </div>
  379.     </div>
  380. </div>
  381. {% endblock %}