init project
This commit is contained in:
67
templates/backend/admin/activer/index.html.twig
Normal file
67
templates/backend/admin/activer/index.html.twig
Normal file
@@ -0,0 +1,67 @@
|
||||
{% extends 'backend/basic/base_admin.html.twig' %}
|
||||
|
||||
{% block title %} Activer {% endblock %}
|
||||
|
||||
{% block body %}
|
||||
|
||||
|
||||
<h1 class="h3 mb-3">
|
||||
<strong>Pages</strong> Activer
|
||||
</h1>
|
||||
<div class="row">
|
||||
<div class="col-12 d-flex">
|
||||
<div class="card flex-fill">
|
||||
<div class="card-header">
|
||||
<h5 class="card-title mb-0">Latest Projects</h5>
|
||||
</div>
|
||||
<table class="table table-hover my-0">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Id</th>
|
||||
<th class="d-none d-xl-table-cell">Société</th>
|
||||
<th class="d-none d-xl-table-cell">Nom PC</th>
|
||||
<th>Status</th>
|
||||
<th class="d-none d-md-table-cell">Disque Nom</th>
|
||||
<th class="d-none d-md-table-cell">Disque Model</th>
|
||||
<th class="d-none d-md-table-cell">Date</th>
|
||||
|
||||
<th>Option</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for softwareActivation in softwareActivations %}
|
||||
<tr>
|
||||
<td>{{ softwareActivation.getId() }}</td>
|
||||
<td class="d-none d-xl-table-cell">{{ softwareActivation.getCompanyName() }}</td>
|
||||
<td class="d-none d-md-table-cell">{{ softwareActivation.getPcName() }}</td>
|
||||
<td>
|
||||
{% if (softwareActivation.getStatu() == 0) %}
|
||||
<span class="badge bg-warning">En Attente </span>
|
||||
{% elseif (softwareActivation.getStatu() == 1) %}
|
||||
<span class="badge bg-success">Activer </span>
|
||||
{% endif %}
|
||||
|
||||
</td>
|
||||
<td class="d-none d-xl-table-cell">{{ softwareActivation.getDisqueNom() }}</td>
|
||||
<td class="d-none d-xl-table-cell">{{ softwareActivation.getDisqueModel() }}</td>
|
||||
<td class="d-none d-md-table-cell">{{ softwareActivation.getDateAddFormat('d/m/Y H:i:s') }}</td>
|
||||
<td class="d-none d-md-table-cell">
|
||||
<center>
|
||||
{% if (softwareActivation.getStatu() != 1) %}
|
||||
<a href="{{ path('admin_activer_activation', {id:softwareActivation.getId()}) }}"><button class="btn btn-primary btn-sm">Activer</button></a>
|
||||
{% endif %}
|
||||
<a href="{{ path('admin_activer_delete', {id:softwareActivation.getId()}) }}">
|
||||
<button type="button" class="btn btn-danger">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-trash" viewBox="0 0 16 16"><path d="M5.5 5.5A.5.5 0 0 1 6 6v6a.5.5 0 0 1-1 0V6a.5.5 0 0 1 .5-.5m2.5 0a.5.5 0 0 1 .5.5v6a.5.5 0 0 1-1 0V6a.5.5 0 0 1 .5-.5m3 .5a.5.5 0 0 0-1 0v6a.5.5 0 0 0 1 0z"></path><path d="M14.5 3a1 1 0 0 1-1 1H13v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V4h-.5a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1H6a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1h3.5a1 1 0 0 1 1 1zM4.118 4 4 4.059V13a1 1 0 0 0 1 1h6a1 1 0 0 0 1-1V4.059L11.882 4zM2.5 3h11V2h-11z"></path></svg>
|
||||
</button>
|
||||
</a>
|
||||
</center>
|
||||
</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
134
templates/backend/admin/home/index.html.twig
Normal file
134
templates/backend/admin/home/index.html.twig
Normal file
@@ -0,0 +1,134 @@
|
||||
{% extends 'backend/basic/base_admin.html.twig' %}
|
||||
|
||||
{% block title %} Dashboard {% endblock %}
|
||||
|
||||
{% block body %}
|
||||
|
||||
<h1 class="h3 mb-3">
|
||||
<strong>Analytics</strong> Dashboard
|
||||
</h1>
|
||||
<div class="row">
|
||||
<div class="col-xl-6 col-xxl-5 d-flex">
|
||||
<div class="w-100">
|
||||
<div class="row">
|
||||
<div class="col-sm-6">
|
||||
<div class="card">
|
||||
<div class="card-body">
|
||||
<div class="row">
|
||||
<div class="col mt-0">
|
||||
<h5 class="card-title">Visitors </h5>
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
<div class="stat text-primary">
|
||||
<i class="align-middle" data-feather="twitter"></i>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<h1 class="mt-1 mb-3">{{ nbrVisitors }}</h1>
|
||||
<div class="mb-0">
|
||||
<span class="text-muted">Visiteurs le jour</span>
|
||||
<span class="text-success"> <i class="mdi mdi-arrow-bottom-right"></i> {{ dateNow }} </span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card">
|
||||
<div class="card-body">
|
||||
<div class="row">
|
||||
<div class="col mt-0">
|
||||
<h5 class="card-title">Partner</h5>
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
<div class="stat text-primary">
|
||||
<i class="align-middle" data-feather="users"></i>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<h1 class="mt-1 mb-3">----</h1>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-6">
|
||||
<div class="card">
|
||||
<div class="card-body">
|
||||
<div class="row">
|
||||
<div class="col mt-0">
|
||||
<h5 class="card-title">Utilisateurs</h5>
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
<div class="stat text-primary">
|
||||
<i class="align-middle" data-feather="user"></i>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<h1 class="mt-1 mb-3">{{ nbrUsers }}</h1>
|
||||
<div class="mb-0">
|
||||
<span class="text-muted">Inscrits le jour</span>
|
||||
<span class="text-info"> <i class="mdi mdi-arrow-bottom-right"></i> {{ dateNow }} </span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card">
|
||||
<div class="card-body">
|
||||
<div class="row">
|
||||
<div class="col mt-0">
|
||||
<h5 class="card-title">Téléchargement</h5>
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
<div class="stat text-primary">
|
||||
<i class="align-middle" data-feather="download-cloud"></i>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<h1 class="mt-1 mb-3">{{ nbrDownloaders }}</h1>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xl-6 col-xxl-7">
|
||||
<div class="card flex-fill w-100">
|
||||
<div class="card-header">
|
||||
<h5 class="card-title mb-0">Recent Movement</h5>
|
||||
</div>
|
||||
<div class="card-body py-3">
|
||||
<div class="chart chart-sm">
|
||||
<canvas id="chartjs-dashboard-line"></canvas>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="card flex-fill">
|
||||
<div class="card-header">
|
||||
<h5 class="card-title mb-0">Liste Visiteurs pour aujourd'hui</h5>
|
||||
</div>
|
||||
<table class="table table-hover my-0">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>IP</th>
|
||||
<th class="d-none d-xl-table-cell">Date</th>
|
||||
<th>Drapeau</th>
|
||||
<th class="d-none d-xl-table-cell">Pays</th>
|
||||
<th class="d-none d-xl-table-cell">Arrondissement</th>
|
||||
<th class="d-none d-md-table-cell">Ville</th>
|
||||
<th class="d-none d-md-table-cell">ISP</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for geolocation in geolocations %}
|
||||
<tr>
|
||||
<td>{{ geolocation.getIp() }}</td>
|
||||
<td class="d-none d-xl-table-cell">{{ geolocation.getDateAdd()|date("d/m/Y H:i:s") }}</td>
|
||||
<td>{{ geolocation.getCountryEmoji() }}</td>
|
||||
<td class="d-none d-xl-table-cell">{{ geolocation.getCountryName() }}</td>
|
||||
<td class="d-none d-xl-table-cell">{{ geolocation.getDistrict() }}</td>
|
||||
<td class="d-none d-md-table-cell">{{ geolocation.getCity() }}</td>
|
||||
<td class="d-none d-md-table-cell">{{ geolocation.getOrganization() }}</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
{% endblock %}
|
||||
717
templates/backend/admin/test/origin_template.html.twig
Normal file
717
templates/backend/admin/test/origin_template.html.twig
Normal file
@@ -0,0 +1,717 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||
<meta name="description" content="Responsive Admin & Dashboard Template based on Bootstrap 5">
|
||||
<meta name="author" content="AdminKit">
|
||||
<meta name="keywords" content="adminkit, bootstrap, bootstrap 5, admin, dashboard, template, responsive, css, sass, html, theme, front-end, ui kit, web">
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com">
|
||||
<link rel="canonical" href="https://demo-basic.adminkit.io/" />
|
||||
<title>AdminKit Demo - Bootstrap 5 Admin Template</title>
|
||||
<link href="{{ asset('assets/css/app.css') }}" rel="stylesheet">
|
||||
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;600&display=swap" rel="stylesheet">
|
||||
</head>
|
||||
<body>
|
||||
<div class="wrapper">
|
||||
<nav id="sidebar" class="sidebar js-sidebar">
|
||||
<div class="sidebar-content js-simplebar">
|
||||
<a class="sidebar-brand" href="index.html">
|
||||
<span class="align-middle">AdminKit</span>
|
||||
</a>
|
||||
<ul class="sidebar-nav">
|
||||
<li class="sidebar-header">
|
||||
Pages
|
||||
</li>
|
||||
<li class="sidebar-item active">
|
||||
<a class="sidebar-link" href="index.html">
|
||||
<i class="align-middle" data-feather="sliders"></i> <span class="align-middle">Dashboard</span>
|
||||
</a>
|
||||
</li>
|
||||
<li class="sidebar-item">
|
||||
<a class="sidebar-link" href="pages-profile.html">
|
||||
<i class="align-middle" data-feather="user"></i> <span class="align-middle">Profile</span>
|
||||
</a>
|
||||
</li>
|
||||
<li class="sidebar-item">
|
||||
<a class="sidebar-link" href="pages-sign-in.html">
|
||||
<i class="align-middle" data-feather="log-in"></i> <span class="align-middle">Sign In</span>
|
||||
</a>
|
||||
</li>
|
||||
<li class="sidebar-item">
|
||||
<a class="sidebar-link" href="pages-sign-up.html">
|
||||
<i class="align-middle" data-feather="user-plus"></i> <span class="align-middle">Sign Up</span>
|
||||
</a>
|
||||
</li>
|
||||
<li class="sidebar-item">
|
||||
<a class="sidebar-link" href="pages-blank.html">
|
||||
<i class="align-middle" data-feather="book"></i> <span class="align-middle">Blank</span>
|
||||
</a>
|
||||
</li>
|
||||
<li class="sidebar-header">
|
||||
Tools & Components
|
||||
</li>
|
||||
<li class="sidebar-item">
|
||||
<a class="sidebar-link" href="ui-buttons.html">
|
||||
<i class="align-middle" data-feather="square"></i> <span class="align-middle">Buttons</span>
|
||||
</a>
|
||||
</li>
|
||||
<li class="sidebar-item">
|
||||
<a class="sidebar-link" href="ui-forms.html">
|
||||
<i class="align-middle" data-feather="check-square"></i> <span class="align-middle">Forms</span>
|
||||
</a>
|
||||
</li>
|
||||
<li class="sidebar-item">
|
||||
<a class="sidebar-link" href="ui-cards.html">
|
||||
<i class="align-middle" data-feather="grid"></i> <span class="align-middle">Cards</span>
|
||||
</a>
|
||||
</li>
|
||||
<li class="sidebar-item">
|
||||
<a class="sidebar-link" href="ui-typography.html">
|
||||
<i class="align-middle" data-feather="align-left"></i> <span class="align-middle">Typography</span>
|
||||
</a>
|
||||
</li>
|
||||
<li class="sidebar-item">
|
||||
<a class="sidebar-link" href="icons-feather.html">
|
||||
<i class="align-middle" data-feather="coffee"></i> <span class="align-middle">Icons</span>
|
||||
</a>
|
||||
</li>
|
||||
<li class="sidebar-header">
|
||||
Plugins & Addons
|
||||
</li>
|
||||
<li class="sidebar-item">
|
||||
<a class="sidebar-link" href="charts-chartjs.html">
|
||||
<i class="align-middle" data-feather="bar-chart-2"></i> <span class="align-middle">Charts</span>
|
||||
</a>
|
||||
</li>
|
||||
<li class="sidebar-item">
|
||||
<a class="sidebar-link" href="maps-google.html">
|
||||
<i class="align-middle" data-feather="map"></i> <span class="align-middle">Maps</span>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
<div class="sidebar-cta">
|
||||
<div class="sidebar-cta-content">
|
||||
<div class="d-grid">
|
||||
<a href="{{ path('home_index') }}" class="btn btn-primary">Retour au site</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
<div class="main">
|
||||
<nav class="navbar navbar-expand navbar-light navbar-bg">
|
||||
<a class="sidebar-toggle js-sidebar-toggle">
|
||||
<i class="hamburger align-self-center"></i>
|
||||
</a>
|
||||
<div class="navbar-collapse collapse">
|
||||
<ul class="navbar-nav navbar-align">
|
||||
<li class="nav-item dropdown">
|
||||
<a class="nav-icon dropdown-toggle" href="#" id="alertsDropdown" data-bs-toggle="dropdown">
|
||||
<div class="position-relative">
|
||||
<i class="align-middle" data-feather="bell"></i>
|
||||
<span class="indicator">4</span>
|
||||
</div>
|
||||
</a>
|
||||
<div class="dropdown-menu dropdown-menu-lg dropdown-menu-end py-0" aria-labelledby="alertsDropdown">
|
||||
<div class="dropdown-menu-header">
|
||||
4 New Notifications
|
||||
</div>
|
||||
<div class="list-group">
|
||||
<a href="#" class="list-group-item">
|
||||
<div class="row g-0 align-items-center">
|
||||
<div class="col-2">
|
||||
<i class="text-danger" data-feather="alert-circle"></i>
|
||||
</div>
|
||||
<div class="col-10">
|
||||
<div class="text-dark">Update completed</div>
|
||||
<div class="text-muted small mt-1">Restart server 12 to complete the update.</div>
|
||||
<div class="text-muted small mt-1">30m ago</div>
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
<a href="#" class="list-group-item">
|
||||
<div class="row g-0 align-items-center">
|
||||
<div class="col-2">
|
||||
<i class="text-warning" data-feather="bell"></i>
|
||||
</div>
|
||||
<div class="col-10">
|
||||
<div class="text-dark">Lorem ipsum</div>
|
||||
<div class="text-muted small mt-1">Aliquam ex eros, imperdiet vulputate hendrerit et.</div>
|
||||
<div class="text-muted small mt-1">2h ago</div>
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
<a href="#" class="list-group-item">
|
||||
<div class="row g-0 align-items-center">
|
||||
<div class="col-2">
|
||||
<i class="text-primary" data-feather="home"></i>
|
||||
</div>
|
||||
<div class="col-10">
|
||||
<div class="text-dark">Login from 192.186.1.8</div>
|
||||
<div class="text-muted small mt-1">5h ago</div>
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
<a href="#" class="list-group-item">
|
||||
<div class="row g-0 align-items-center">
|
||||
<div class="col-2">
|
||||
<i class="text-success" data-feather="user-plus"></i>
|
||||
</div>
|
||||
<div class="col-10">
|
||||
<div class="text-dark">New connection</div>
|
||||
<div class="text-muted small mt-1">Christina accepted your request.</div>
|
||||
<div class="text-muted small mt-1">14h ago</div>
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
<div class="dropdown-menu-footer">
|
||||
<a href="#" class="text-muted">Show all notifications</a>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="nav-item dropdown">
|
||||
<a class="nav-icon dropdown-toggle" href="#" id="messagesDropdown" data-bs-toggle="dropdown">
|
||||
<div class="position-relative">
|
||||
<i class="align-middle" data-feather="message-square"></i>
|
||||
</div>
|
||||
</a>
|
||||
<div class="dropdown-menu dropdown-menu-lg dropdown-menu-end py-0" aria-labelledby="messagesDropdown">
|
||||
<div class="dropdown-menu-header">
|
||||
<div class="position-relative">
|
||||
4 New Messages
|
||||
</div>
|
||||
</div>
|
||||
<div class="dropdown-menu-footer">
|
||||
<a href="#" class="text-muted">Show all messages</a>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="nav-item dropdown">
|
||||
<a class="nav-icon dropdown-toggle d-inline-block d-sm-none" href="#" data-bs-toggle="dropdown">
|
||||
<i class="align-middle" data-feather="settings"></i>
|
||||
</a>
|
||||
<a class="nav-link dropdown-toggle d-none d-sm-inline-block" href="#" data-bs-toggle="dropdown">
|
||||
<span class="text-dark">Charles Hall</span>
|
||||
</a>
|
||||
<div class="dropdown-menu dropdown-menu-end">
|
||||
<a class="dropdown-item" href="pages-profile.html"><i class="align-middle me-1" data-feather="user"></i> Profile</a>
|
||||
<a class="dropdown-item" href="#"><i class="align-middle me-1" data-feather="pie-chart"></i> Analytics</a>
|
||||
<div class="dropdown-divider"></div>
|
||||
<a class="dropdown-item" href="index.html"><i class="align-middle me-1" data-feather="settings"></i> Settings & Privacy</a>
|
||||
<a class="dropdown-item" href="#"><i class="align-middle me-1" data-feather="help-circle"></i> Help Center</a>
|
||||
<div class="dropdown-divider"></div>
|
||||
<a class="dropdown-item" href="#">Log out</a>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</nav>
|
||||
<main class="content">
|
||||
<div class="container-fluid p-0">
|
||||
<h1 class="h3 mb-3"><strong>Analytics</strong> Dashboard</h1>
|
||||
<div class="row">
|
||||
<div class="col-xl-6 col-xxl-5 d-flex">
|
||||
<div class="w-100">
|
||||
<div class="row">
|
||||
<div class="col-sm-6">
|
||||
<div class="card">
|
||||
<div class="card-body">
|
||||
<div class="row">
|
||||
<div class="col mt-0">
|
||||
<h5 class="card-title">Sales</h5>
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
<div class="stat text-primary">
|
||||
<i class="align-middle" data-feather="truck"></i>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<h1 class="mt-1 mb-3">2.382</h1>
|
||||
<div class="mb-0">
|
||||
<span class="text-danger"> <i class="mdi mdi-arrow-bottom-right"></i> -3.65% </span>
|
||||
<span class="text-muted">Since last week</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card">
|
||||
<div class="card-body">
|
||||
<div class="row">
|
||||
<div class="col mt-0">
|
||||
<h5 class="card-title">Visitors</h5>
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
<div class="stat text-primary">
|
||||
<i class="align-middle" data-feather="users"></i>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<h1 class="mt-1 mb-3">14.212</h1>
|
||||
<div class="mb-0">
|
||||
<span class="text-success"> <i class="mdi mdi-arrow-bottom-right"></i> 5.25% </span>
|
||||
<span class="text-muted">Since last week</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-6">
|
||||
<div class="card">
|
||||
<div class="card-body">
|
||||
<div class="row">
|
||||
<div class="col mt-0">
|
||||
<h5 class="card-title">Earnings</h5>
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
<div class="stat text-primary">
|
||||
<i class="align-middle" data-feather="dollar-sign"></i>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<h1 class="mt-1 mb-3">$21.300</h1>
|
||||
<div class="mb-0">
|
||||
<span class="text-success"> <i class="mdi mdi-arrow-bottom-right"></i> 6.65% </span>
|
||||
<span class="text-muted">Since last week</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card">
|
||||
<div class="card-body">
|
||||
<div class="row">
|
||||
<div class="col mt-0">
|
||||
<h5 class="card-title">Orders</h5>
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
<div class="stat text-primary">
|
||||
<i class="align-middle" data-feather="shopping-cart"></i>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<h1 class="mt-1 mb-3">64</h1>
|
||||
<div class="mb-0">
|
||||
<span class="text-danger"> <i class="mdi mdi-arrow-bottom-right"></i> -2.25% </span>
|
||||
<span class="text-muted">Since last week</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xl-6 col-xxl-7">
|
||||
<div class="card flex-fill w-100">
|
||||
<div class="card-header">
|
||||
<h5 class="card-title mb-0">Recent Movement</h5>
|
||||
</div>
|
||||
<div class="card-body py-3">
|
||||
<div class="chart chart-sm">
|
||||
<canvas id="chartjs-dashboard-line"></canvas>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-12 col-md-6 col-xxl-3 d-flex order-2 order-xxl-3">
|
||||
<div class="card flex-fill w-100">
|
||||
<div class="card-header">
|
||||
<h5 class="card-title mb-0">Browser Usage</h5>
|
||||
</div>
|
||||
<div class="card-body d-flex">
|
||||
<div class="align-self-center w-100">
|
||||
<div class="py-3">
|
||||
<div class="chart chart-xs">
|
||||
<canvas id="chartjs-dashboard-pie"></canvas>
|
||||
</div>
|
||||
</div>
|
||||
<table class="table mb-0">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>Chrome</td>
|
||||
<td class="text-end">4306</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Firefox</td>
|
||||
<td class="text-end">3801</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>IE</td>
|
||||
<td class="text-end">1689</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-12 col-md-12 col-xxl-6 d-flex order-3 order-xxl-2">
|
||||
<div class="card flex-fill w-100">
|
||||
<div class="card-header">
|
||||
<h5 class="card-title mb-0">Real-Time</h5>
|
||||
</div>
|
||||
<div class="card-body px-4">
|
||||
<div id="world_map" style="height:350px;"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-12 col-md-6 col-xxl-3 d-flex order-1 order-xxl-1">
|
||||
<div class="card flex-fill">
|
||||
<div class="card-header">
|
||||
<h5 class="card-title mb-0">Calendar</h5>
|
||||
</div>
|
||||
<div class="card-body d-flex">
|
||||
<div class="align-self-center w-100">
|
||||
<div class="chart">
|
||||
<div id="datetimepicker-dashboard"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-12 col-lg-8 col-xxl-9 d-flex">
|
||||
<div class="card flex-fill">
|
||||
<div class="card-header">
|
||||
<h5 class="card-title mb-0">Latest Projects</h5>
|
||||
</div>
|
||||
<table class="table table-hover my-0">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Name</th>
|
||||
<th class="d-none d-xl-table-cell">Start Date</th>
|
||||
<th class="d-none d-xl-table-cell">End Date</th>
|
||||
<th>Status</th>
|
||||
<th class="d-none d-md-table-cell">Assignee</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>Project Apollo</td>
|
||||
<td class="d-none d-xl-table-cell">01/01/2021</td>
|
||||
<td class="d-none d-xl-table-cell">31/06/2021</td>
|
||||
<td><span class="badge bg-success">Done</span></td>
|
||||
<td class="d-none d-md-table-cell">Vanessa Tucker</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Project Fireball</td>
|
||||
<td class="d-none d-xl-table-cell">01/01/2021</td>
|
||||
<td class="d-none d-xl-table-cell">31/06/2021</td>
|
||||
<td><span class="badge bg-danger">Cancelled</span></td>
|
||||
<td class="d-none d-md-table-cell">William Harris</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Project Hades</td>
|
||||
<td class="d-none d-xl-table-cell">01/01/2021</td>
|
||||
<td class="d-none d-xl-table-cell">31/06/2021</td>
|
||||
<td><span class="badge bg-success">Done</span></td>
|
||||
<td class="d-none d-md-table-cell">Sharon Lessman</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Project Nitro</td>
|
||||
<td class="d-none d-xl-table-cell">01/01/2021</td>
|
||||
<td class="d-none d-xl-table-cell">31/06/2021</td>
|
||||
<td><span class="badge bg-warning">In progress</span></td>
|
||||
<td class="d-none d-md-table-cell">Vanessa Tucker</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Project Phoenix</td>
|
||||
<td class="d-none d-xl-table-cell">01/01/2021</td>
|
||||
<td class="d-none d-xl-table-cell">31/06/2021</td>
|
||||
<td><span class="badge bg-success">Done</span></td>
|
||||
<td class="d-none d-md-table-cell">William Harris</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Project X</td>
|
||||
<td class="d-none d-xl-table-cell">01/01/2021</td>
|
||||
<td class="d-none d-xl-table-cell">31/06/2021</td>
|
||||
<td><span class="badge bg-success">Done</span></td>
|
||||
<td class="d-none d-md-table-cell">Sharon Lessman</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Project Romeo</td>
|
||||
<td class="d-none d-xl-table-cell">01/01/2021</td>
|
||||
<td class="d-none d-xl-table-cell">31/06/2021</td>
|
||||
<td><span class="badge bg-success">Done</span></td>
|
||||
<td class="d-none d-md-table-cell">Christina Mason</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Project Wombat</td>
|
||||
<td class="d-none d-xl-table-cell">01/01/2021</td>
|
||||
<td class="d-none d-xl-table-cell">31/06/2021</td>
|
||||
<td><span class="badge bg-warning">In progress</span></td>
|
||||
<td class="d-none d-md-table-cell">William Harris</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-12 col-lg-4 col-xxl-3 d-flex">
|
||||
<div class="card flex-fill w-100">
|
||||
<div class="card-header">
|
||||
<h5 class="card-title mb-0">Monthly Sales</h5>
|
||||
</div>
|
||||
<div class="card-body d-flex w-100">
|
||||
<div class="align-self-center chart chart-lg">
|
||||
<canvas id="chartjs-dashboard-bar"></canvas>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
<footer class="footer">
|
||||
<div class="container-fluid">
|
||||
<div class="row text-muted">
|
||||
<div class="col-6 text-start">
|
||||
<p class="mb-0">
|
||||
<a class="text-muted" href="https://adminkit.io/" target="_blank"><strong>AdminKit</strong></a> - <a class="text-muted" href="https://adminkit.io/" target="_blank"><strong>Bootstrap Admin Template</strong></a> ©
|
||||
</p>
|
||||
</div>
|
||||
<div class="col-6 text-end">
|
||||
<ul class="list-inline">
|
||||
<li class="list-inline-item">
|
||||
<a class="text-muted" href="https://adminkit.io/" target="_blank">Support</a>
|
||||
</li>
|
||||
<li class="list-inline-item">
|
||||
<a class="text-muted" href="https://adminkit.io/" target="_blank">Help Center</a>
|
||||
</li>
|
||||
<li class="list-inline-item">
|
||||
<a class="text-muted" href="https://adminkit.io/" target="_blank">Privacy</a>
|
||||
</li>
|
||||
<li class="list-inline-item">
|
||||
<a class="text-muted" href="https://adminkit.io/" target="_blank">Terms</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
</div>
|
||||
</div>
|
||||
<script src="{{ asset('assets/js/app.js') }}"></script>
|
||||
<script>
|
||||
document.addEventListener("DOMContentLoaded", function() {
|
||||
var ctx = document.getElementById("chartjs-dashboard-line").getContext("2d");
|
||||
var gradient = ctx.createLinearGradient(0, 0, 0, 225);
|
||||
gradient.addColorStop(0, "rgba(215, 227, 244, 1)");
|
||||
gradient.addColorStop(1, "rgba(215, 227, 244, 0)");
|
||||
// Line chart
|
||||
new Chart(document.getElementById("chartjs-dashboard-line"), {
|
||||
type: "line",
|
||||
data: {
|
||||
labels: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"],
|
||||
datasets: [{
|
||||
label: "Sales ($)",
|
||||
fill: true,
|
||||
backgroundColor: gradient,
|
||||
borderColor: window.theme.primary,
|
||||
data: [
|
||||
2115,
|
||||
1562,
|
||||
1584,
|
||||
1892,
|
||||
1587,
|
||||
1923,
|
||||
2566,
|
||||
2448,
|
||||
2805,
|
||||
3438,
|
||||
2917,
|
||||
3327
|
||||
]
|
||||
}]
|
||||
},
|
||||
options: {
|
||||
maintainAspectRatio: false,
|
||||
legend: {
|
||||
display: false
|
||||
},
|
||||
tooltips: {
|
||||
intersect: false
|
||||
},
|
||||
hover: {
|
||||
intersect: true
|
||||
},
|
||||
plugins: {
|
||||
filler: {
|
||||
propagate: false
|
||||
}
|
||||
},
|
||||
scales: {
|
||||
xAxes: [{
|
||||
reverse: true,
|
||||
gridLines: {
|
||||
color: "rgba(0,0,0,0.0)"
|
||||
}
|
||||
}],
|
||||
yAxes: [{
|
||||
ticks: {
|
||||
stepSize: 1000
|
||||
},
|
||||
display: true,
|
||||
borderDash: [3, 3],
|
||||
gridLines: {
|
||||
color: "rgba(0,0,0,0.0)"
|
||||
}
|
||||
}]
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
</script>
|
||||
<script>
|
||||
document.addEventListener("DOMContentLoaded", function() {
|
||||
// Pie chart
|
||||
new Chart(document.getElementById("chartjs-dashboard-pie"), {
|
||||
type: "pie",
|
||||
data: {
|
||||
labels: ["Chrome", "Firefox", "IE"],
|
||||
datasets: [{
|
||||
data: [4306, 3801, 1689],
|
||||
backgroundColor: [
|
||||
window.theme.primary,
|
||||
window.theme.warning,
|
||||
window.theme.danger
|
||||
],
|
||||
borderWidth: 5
|
||||
}]
|
||||
},
|
||||
options: {
|
||||
responsive: !window.MSInputMethodContext,
|
||||
maintainAspectRatio: false,
|
||||
legend: {
|
||||
display: false
|
||||
},
|
||||
cutoutPercentage: 75
|
||||
}
|
||||
});
|
||||
});
|
||||
</script>
|
||||
<script>
|
||||
document.addEventListener("DOMContentLoaded", function() {
|
||||
// Bar chart
|
||||
new Chart(document.getElementById("chartjs-dashboard-bar"), {
|
||||
type: "bar",
|
||||
data: {
|
||||
labels: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"],
|
||||
datasets: [{
|
||||
label: "This year",
|
||||
backgroundColor: window.theme.primary,
|
||||
borderColor: window.theme.primary,
|
||||
hoverBackgroundColor: window.theme.primary,
|
||||
hoverBorderColor: window.theme.primary,
|
||||
data: [54, 67, 41, 55, 62, 45, 55, 73, 60, 76, 48, 79],
|
||||
barPercentage: .75,
|
||||
categoryPercentage: .5
|
||||
}]
|
||||
},
|
||||
options: {
|
||||
maintainAspectRatio: false,
|
||||
legend: {
|
||||
display: false
|
||||
},
|
||||
scales: {
|
||||
yAxes: [{
|
||||
gridLines: {
|
||||
display: false
|
||||
},
|
||||
stacked: false,
|
||||
ticks: {
|
||||
stepSize: 20
|
||||
}
|
||||
}],
|
||||
xAxes: [{
|
||||
stacked: false,
|
||||
gridLines: {
|
||||
color: "transparent"
|
||||
}
|
||||
}]
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
</script>
|
||||
<script>
|
||||
document.addEventListener("DOMContentLoaded", function() {
|
||||
var markers = [{
|
||||
coords: [31.230391, 121.473701],
|
||||
name: "Shanghai"
|
||||
},
|
||||
{
|
||||
coords: [28.704060, 77.102493],
|
||||
name: "Delhi"
|
||||
},
|
||||
{
|
||||
coords: [6.524379, 3.379206],
|
||||
name: "Lagos"
|
||||
},
|
||||
{
|
||||
coords: [35.689487, 139.691711],
|
||||
name: "Tokyo"
|
||||
},
|
||||
{
|
||||
coords: [23.129110, 113.264381],
|
||||
name: "Guangzhou"
|
||||
},
|
||||
{
|
||||
coords: [40.7127837, -74.0059413],
|
||||
name: "New York"
|
||||
},
|
||||
{
|
||||
coords: [34.052235, -118.243683],
|
||||
name: "Los Angeles"
|
||||
},
|
||||
{
|
||||
coords: [41.878113, -87.629799],
|
||||
name: "Chicago"
|
||||
},
|
||||
{
|
||||
coords: [51.507351, -0.127758],
|
||||
name: "London"
|
||||
},
|
||||
{
|
||||
coords: [40.416775, -3.703790],
|
||||
name: "Madrid "
|
||||
}
|
||||
];
|
||||
var map = new jsVectorMap({
|
||||
map: "world",
|
||||
selector: "#world_map",
|
||||
zoomButtons: true,
|
||||
markers: markers,
|
||||
markerStyle: {
|
||||
initial: {
|
||||
r: 9,
|
||||
strokeWidth: 7,
|
||||
stokeOpacity: .4,
|
||||
fill: window.theme.primary
|
||||
},
|
||||
hover: {
|
||||
fill: window.theme.primary,
|
||||
stroke: window.theme.primary
|
||||
}
|
||||
},
|
||||
zoomOnScroll: false
|
||||
});
|
||||
window.addEventListener("resize", () => {
|
||||
map.updateSize();
|
||||
});
|
||||
});
|
||||
</script>
|
||||
<script>
|
||||
document.addEventListener("DOMContentLoaded", function() {
|
||||
var date = new Date(Date.now() - 5 * 24 * 60 * 60 * 1000);
|
||||
var defaultDate = date.getUTCFullYear() + "-" + (date.getUTCMonth() + 1) + "-" + date.getUTCDate();
|
||||
document.getElementById("datetimepicker-dashboard").flatpickr({
|
||||
inline: true,
|
||||
prevArrow: "<span title=\"Previous month\">«</span>",
|
||||
nextArrow: "<span title=\"Next month\">»</span>",
|
||||
defaultDate: defaultDate
|
||||
});
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
54
templates/backend/admin/utilisateur/index.html.twig
Normal file
54
templates/backend/admin/utilisateur/index.html.twig
Normal file
@@ -0,0 +1,54 @@
|
||||
{% extends 'backend/basic/base_admin.html.twig' %}
|
||||
|
||||
{% block title %} Utilisateurs {% endblock %}
|
||||
|
||||
{% block body %}
|
||||
|
||||
<h1 class="h3 mb-3">
|
||||
<strong>Utilisateurs</strong>
|
||||
</h1>
|
||||
<div class="row">
|
||||
<div class="col-12 d-flex">
|
||||
<div class="card flex-fill">
|
||||
<div class="card-header">
|
||||
<h5 class="card-title mb-0">Liste utilisateurs</h5>
|
||||
</div>
|
||||
<table class="table-user">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Id</th>
|
||||
<th>Email</th>
|
||||
<th>Nom</th>
|
||||
<th>Prénom</th>
|
||||
<th>Naissance</th>
|
||||
<th>Gender</th>
|
||||
<th>Date</th>
|
||||
<th>Option</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for user in users %}
|
||||
<tr>
|
||||
<td>{{ user.getId() }}</td>
|
||||
<td>{{ user.getEmail() }}</td>
|
||||
<td>{{ user.getFirstname() }}</td>
|
||||
<td>{{ user.getLastname() }}</td>
|
||||
<td>{{ user.getBirthdateText('d/m/Y') }}</td>
|
||||
<td> {% if (user.getGender() == 1) %} H {% elseif (user.getGender() == 0) %} F {% endif %}</td>
|
||||
<td>{{ user.getDateAddText('d/m/Y H:i:s') }}</td>
|
||||
<td>
|
||||
<a href="{{ path('admin_utilisateur_change_role', {id:user.getId()}) }}"><button class="btn btn-primary btn-sm">Partner</button></a>
|
||||
</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script>
|
||||
$('.table-user').DataTable( {
|
||||
"order": [[0, 'desc']]
|
||||
} );
|
||||
</script>
|
||||
{% endblock %}
|
||||
59
templates/backend/admin/utilisateur/partner.html.twig
Normal file
59
templates/backend/admin/utilisateur/partner.html.twig
Normal file
@@ -0,0 +1,59 @@
|
||||
{% extends 'backend/basic/base_admin.html.twig' %}
|
||||
|
||||
{% block title %} Partnaire {% endblock %}
|
||||
|
||||
{% block body %}
|
||||
|
||||
<h1 class="h3 mb-3">
|
||||
<strong>Partnaire</strong>
|
||||
</h1>
|
||||
<div class="row">
|
||||
<div class="col-12 d-flex">
|
||||
<div class="card flex-fill">
|
||||
<div class="card-header">
|
||||
<h5 class="card-title mb-0">Liste des Partnaires</h5>
|
||||
</div>
|
||||
<table class="table-user">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Id</th>
|
||||
<th>Email</th>
|
||||
<th>Nom</th>
|
||||
<th>Prénom</th>
|
||||
<th>Naissance</th>
|
||||
<th>Gender</th>
|
||||
<th>Date</th>
|
||||
<th>Option</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for user in partners %}
|
||||
<tr>
|
||||
<td>{{ user.getId() }}</td>
|
||||
<td>{{ user.getEmail() }}</td>
|
||||
<td>{{ user.getFirstname() }}</td>
|
||||
<td>{{ user.getLastname() }}</td>
|
||||
<td>{{ user.getBirthdateText('d/m/Y') }}</td>
|
||||
<td> {% if (user.getGender() == 1) %} H {% elseif (user.getGender() == 0) %} F {% endif %}</td>
|
||||
<td>{{ user.getDateAddText('d/m/Y H:i:s') }}</td>
|
||||
<td>
|
||||
<a href="{{ path('admin_utilisateur_partner_delete', {id:user.getPartner().getId() }) }}">
|
||||
<button class="btn btn-danger btn-sm">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-trash" viewBox="0 0 16 16"><path d="M5.5 5.5A.5.5 0 0 1 6 6v6a.5.5 0 0 1-1 0V6a.5.5 0 0 1 .5-.5m2.5 0a.5.5 0 0 1 .5.5v6a.5.5 0 0 1-1 0V6a.5.5 0 0 1 .5-.5m3 .5a.5.5 0 0 0-1 0v6a.5.5 0 0 0 1 0z"></path><path d="M14.5 3a1 1 0 0 1-1 1H13v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V4h-.5a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1H6a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1h3.5a1 1 0 0 1 1 1zM4.118 4 4 4.059V13a1 1 0 0 0 1 1h6a1 1 0 0 0 1-1V4.059L11.882 4zM2.5 3h11V2h-11z"></path></svg>
|
||||
</button>
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script>
|
||||
|
||||
$('.table-user').DataTable( {
|
||||
"order": [[0, 'desc']]
|
||||
} );
|
||||
</script>
|
||||
{% endblock %}
|
||||
50
templates/backend/admin/utilisateur/visitor.html.twig
Normal file
50
templates/backend/admin/utilisateur/visitor.html.twig
Normal file
@@ -0,0 +1,50 @@
|
||||
{% extends 'backend/basic/base_admin.html.twig' %}
|
||||
|
||||
{% block title %} Visiteurs {% endblock %}
|
||||
|
||||
{% block body %}
|
||||
|
||||
<h1 class="h3 mb-3">
|
||||
<strong>Visiteurs</strong>
|
||||
</h1>
|
||||
<div class="row">
|
||||
<div class="col-12 d-flex">
|
||||
<div class="card flex-fill">
|
||||
<div class="card-header">
|
||||
<h5 class="card-title mb-0">Liste Visiteurs</h5>
|
||||
</div>
|
||||
<table class="table-visitor">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>ID</th>
|
||||
<th>IP</th>
|
||||
<th class="d-none d-xl-table-cell">Date</th>
|
||||
<th>Drapeau</th>
|
||||
<th class="d-none d-xl-table-cell">Pays</th>
|
||||
<th class="d-none d-xl-table-cell">Arrondissement</th>
|
||||
<th class="d-none d-md-table-cell">Ville</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for geolocation in geolocations %}
|
||||
<tr>
|
||||
<td>{{ geolocation.getId() }}</td>
|
||||
<td>{{ geolocation.getIp() }}</td>
|
||||
<td class="d-none d-xl-table-cell">{{ geolocation.getDateAdd()|date("d/m/Y H:i:s") }}</td>
|
||||
<td>{{ geolocation.getCountryEmoji() }}</td>
|
||||
<td class="d-none d-xl-table-cell">{{ geolocation.getCountryName() }}</td>
|
||||
<td class="d-none d-xl-table-cell">{{ geolocation.getDistrict() }}</td>
|
||||
<td class="d-none d-md-table-cell">{{ geolocation.getCity() }}</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script>
|
||||
$('.table-visitor').DataTable( {
|
||||
"order": [[0, 'desc']]
|
||||
} );
|
||||
</script>
|
||||
{% endblock %}
|
||||
63
templates/backend/basic/base_admin.html.twig
Normal file
63
templates/backend/basic/base_admin.html.twig
Normal file
@@ -0,0 +1,63 @@
|
||||
<html>
|
||||
|
||||
<head>
|
||||
<title>{% block title %}{% endblock %}</title>
|
||||
|
||||
{% block metadata %}
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
{% endblock %}
|
||||
|
||||
{% block stylesheets %}
|
||||
|
||||
<link href="{{ asset('assets/css/googleapis_backend.css') }}" rel="stylesheet">
|
||||
|
||||
<!-- Favicons -->
|
||||
<link href="{{ asset('assets/img/logo.ico') }}" rel="icon">
|
||||
<link href="{{ asset('assets/img/logo.ico') }}" rel="apple-touch-icon">
|
||||
|
||||
<!-- Main CSS File -->
|
||||
<link href="{{ asset('assets/css/app.css') }}" rel="stylesheet">
|
||||
<link href="{{ asset('assets/css/datatables.min.css') }}" rel="stylesheet">
|
||||
{% endblock %}
|
||||
|
||||
{% block javascripts %}
|
||||
<script src="{{ asset('assets/js/app.js') }}"></script>
|
||||
<script src="{{ asset('assets/js/jquery-3.7.1.min.js') }}"></script>
|
||||
<script src="{{ asset('assets/js/datatables.min.js') }}"></script>
|
||||
{% endblock %}
|
||||
</head>
|
||||
|
||||
|
||||
<body>
|
||||
|
||||
<!-- Page Wrapper -->
|
||||
<div class="wrapper">
|
||||
|
||||
{% include 'backend/basic/menu_admin.html.twig' %}
|
||||
|
||||
<!-- Content Wrapper -->
|
||||
<div class="wrapper">
|
||||
|
||||
|
||||
<div class="main">
|
||||
|
||||
<main class="content">
|
||||
<div class="container-fluid p-0">
|
||||
{% block body %}
|
||||
|
||||
{% endblock %}
|
||||
</div>
|
||||
</main>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
<!-- End of Content Wrapper -->
|
||||
|
||||
</div>
|
||||
<!-- End of Page Wrapper -->
|
||||
</body>
|
||||
|
||||
</html>
|
||||
65
templates/backend/basic/base_partner.html.twig
Normal file
65
templates/backend/basic/base_partner.html.twig
Normal file
@@ -0,0 +1,65 @@
|
||||
<html>
|
||||
|
||||
<head>
|
||||
<title>{% block title %}{% endblock %}</title>
|
||||
|
||||
{% block metadata %}
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
{% endblock %}
|
||||
|
||||
{% block stylesheets %}
|
||||
|
||||
<link href="{{ asset('assets/css/googleapis_backend.css') }}" rel="stylesheet">
|
||||
|
||||
<!-- Favicons -->
|
||||
<link href="{{ asset('assets/img/logo.ico') }}" rel="icon">
|
||||
<link href="{{ asset('assets/img/logo.ico') }}" rel="apple-touch-icon">
|
||||
|
||||
<!-- Main CSS File -->
|
||||
<link href="{{ asset('assets/css/app.css') }}" rel="stylesheet">
|
||||
|
||||
<link href="{{ asset('assets/css/datatables.css') }}" rel="stylesheet">
|
||||
{% endblock %}
|
||||
|
||||
|
||||
{% block javascripts %}
|
||||
<script src="{{ asset('assets/js/app.js') }}"></script>
|
||||
<script src="{{ asset('assets/js/jquery-3.7.1.min.js') }}"></script>
|
||||
<script src="{{ asset('assets/js/datatables.js') }}"></script>
|
||||
{% endblock %}
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<!-- Page Wrapper -->
|
||||
<div class="wrapper">
|
||||
|
||||
{% include 'backend/basic/menu_partner.html.twig' %}
|
||||
|
||||
<!-- Content Wrapper -->
|
||||
<div class="wrapper">
|
||||
|
||||
|
||||
<div class="main">
|
||||
|
||||
<main class="content">
|
||||
<div class="container-fluid p-0">
|
||||
{% block body %}
|
||||
|
||||
{% endblock %}
|
||||
</div>
|
||||
</main>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
<!-- End of Content Wrapper -->
|
||||
|
||||
</div>
|
||||
<!-- End of Page Wrapper -->
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
||||
51
templates/backend/basic/menu_admin.html.twig
Normal file
51
templates/backend/basic/menu_admin.html.twig
Normal file
@@ -0,0 +1,51 @@
|
||||
|
||||
|
||||
<nav id="sidebar" class="sidebar js-sidebar">
|
||||
<div class="sidebar-content js-simplebar">
|
||||
<a class="sidebar-brand" href="{{ path('admin_home_index') }}">
|
||||
<span class="align-middle">PowerPME</span>
|
||||
</a>
|
||||
|
||||
<ul class="sidebar-nav">
|
||||
<li class="sidebar-header">
|
||||
Pages
|
||||
</li>
|
||||
<li class="sidebar-item {% if app.request.attributes.get('_route') in ['admin_home_index'] %} active {% endif %}">
|
||||
<a class="sidebar-link" href="{{ path('admin_home_index') }}">
|
||||
<i class="align-middle" data-feather="sliders"></i> <span class="align-middle">Dashboard</span>
|
||||
</a>
|
||||
</li>
|
||||
<li class="sidebar-item {% if app.request.attributes.get('_route') in ['admin_utilisateur_index'] %} active {% endif %}">
|
||||
<a class="sidebar-link" href="{{ path('admin_utilisateur_index') }}">
|
||||
<i class="align-middle" data-feather="user"></i> <span class="align-middle">Utilisateurs</span>
|
||||
</a>
|
||||
</li>
|
||||
<li class="sidebar-item {% if app.request.attributes.get('_route') in ['admin_utilisateur_partner_index'] %} active {% endif %}">
|
||||
<a class="sidebar-link" href="{{ path('admin_utilisateur_partner_index') }}">
|
||||
<i class="align-middle" data-feather="users"></i> <span class="align-middle">Partnaire</span>
|
||||
</a>
|
||||
</li>
|
||||
<li class="sidebar-item {% if app.request.attributes.get('_route') in ['admin_utilisateur_visitor_index'] %} active {% endif %}">
|
||||
<a class="sidebar-link" href="{{ path('admin_utilisateur_visitor_index') }}">
|
||||
<i class="align-middle" data-feather="twitter"></i> <span class="align-middle">Visiteurs</span>
|
||||
</a>
|
||||
</li>
|
||||
<li class="sidebar-item{% if app.request.attributes.get('_route') in ['admin_activer_index'] %} active {% endif %}">
|
||||
<a class="sidebar-link" href="{{ path('admin_activer_index') }}">
|
||||
<i class="align-middle" data-feather="book"></i> <span class="align-middle">Activation</span>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
<div class="sidebar-cta">
|
||||
<div class="sidebar-cta-content">
|
||||
|
||||
<div class="mb-3 text-sm">
|
||||
<center>{{ app.user.firstname ~ ' ' ~ app.user.lastname|e }}<center>
|
||||
</div>
|
||||
<div class="d-grid">
|
||||
<a href="{{ path('home_index') }}" class="btn btn-primary">Retour au site</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
36
templates/backend/basic/menu_partner.html.twig
Normal file
36
templates/backend/basic/menu_partner.html.twig
Normal file
@@ -0,0 +1,36 @@
|
||||
|
||||
|
||||
<nav id="sidebar" class="sidebar js-sidebar">
|
||||
<div class="sidebar-content js-simplebar">
|
||||
<a class="sidebar-brand" href="{{ path('partner_home_downloader') }}">
|
||||
<span class="align-middle">PowerPME</span>
|
||||
</a>
|
||||
|
||||
<ul class="sidebar-nav">
|
||||
<li class="sidebar-header">
|
||||
Pages
|
||||
</li>
|
||||
<li class="sidebar-item {% if app.request.attributes.get('_route') in ['partner_home_downloader'] %} active {% endif %}">
|
||||
<a class="sidebar-link" href="{{ path('partner_home_downloader') }}">
|
||||
<i class="align-middle" data-feather="sliders"></i> <span class="align-middle">Téléchargement</span>
|
||||
</a>
|
||||
</li>
|
||||
<li class="sidebar-item{% if app.request.attributes.get('_route') in ['partner_activer_index'] %} active {% endif %}">
|
||||
<a class="sidebar-link" href="{{ path('partner_activer_index') }}">
|
||||
<i class="align-middle" data-feather="book"></i> <span class="align-middle">Activation</span>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
<div class="sidebar-cta">
|
||||
<div class="sidebar-cta-content">
|
||||
|
||||
<div class="mb-3 text-sm">
|
||||
<center>{{ app.user.firstname ~ ' ' ~ app.user.lastname|e }}<center>
|
||||
</div>
|
||||
<div class="d-grid">
|
||||
<a href="{{ path('home_index') }}" class="btn btn-primary">Retour au site</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
67
templates/backend/partner/activer.html.twig
Normal file
67
templates/backend/partner/activer.html.twig
Normal file
@@ -0,0 +1,67 @@
|
||||
{% extends 'backend/basic/base_partner.html.twig' %}
|
||||
|
||||
{% block title %} Activer {% endblock %}
|
||||
|
||||
{% block body %}
|
||||
<link href="{{ asset('assets/css/datatables.css') }}" rel="stylesheet">
|
||||
<script src="{{ asset('assets/js/datatables.js') }}"></script>
|
||||
|
||||
<h1 class="h3 mb-3">
|
||||
<strong>Pages</strong> Activer
|
||||
</h1>
|
||||
<div class="row">
|
||||
<div class="col-12 d-flex">
|
||||
<div class="card flex-fill">
|
||||
<div class="card-header">
|
||||
<h5 class="card-title mb-0">Latest Projects</h5>
|
||||
</div>
|
||||
<table class="table table-hover my-0">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Id</th>
|
||||
<th class="d-none d-xl-table-cell">Société</th>
|
||||
<th class="d-none d-xl-table-cell">Nom PC</th>
|
||||
<th>Status</th>
|
||||
<th class="d-none d-md-table-cell">Disque Nom</th>
|
||||
<th class="d-none d-md-table-cell">Disque Model</th>
|
||||
<th class="d-none d-md-table-cell">Date</th>
|
||||
<th>Option</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for softwareActivation in softwareActivations %}
|
||||
<tr>
|
||||
<td>{{ softwareActivation.getId() }}</td>
|
||||
<td class="d-none d-xl-table-cell">{{ softwareActivation.getCompanyName() }}</td>
|
||||
<td class="d-none d-md-table-cell">{{ softwareActivation.getPcName() }}</td>
|
||||
<td>
|
||||
{% if (softwareActivation.getStatu() == 0) %}
|
||||
<span class="badge bg-warning">En Attente </span>
|
||||
{% elseif (softwareActivation.getStatu() == 1) %}
|
||||
<span class="badge bg-success">Activer </span>
|
||||
{% endif %}
|
||||
|
||||
</td>
|
||||
<td class="d-none d-xl-table-cell">{{ softwareActivation.getDisqueNom() }}</td>
|
||||
<td class="d-none d-xl-table-cell">{{ softwareActivation.getDisqueModel() }}</td>
|
||||
<td class="d-none d-md-table-cell">{{ softwareActivation.getDateAddFormat('d/m/Y H:i:s') }}</td>
|
||||
<td class="d-none d-md-table-cell">
|
||||
<center>
|
||||
{% if (softwareActivation.getStatu() != 1) %}
|
||||
<a href="{{ path('partner_activer_activation', {id:softwareActivation.getId()}) }}"><button class="btn btn-primary btn-sm">Activer</button></a>
|
||||
{% endif %}
|
||||
<a href="{{ path('partner_activer_delete', {id:softwareActivation.getId()}) }}">
|
||||
<button type="button" class="btn btn-danger">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-trash" viewBox="0 0 16 16"><path d="M5.5 5.5A.5.5 0 0 1 6 6v6a.5.5 0 0 1-1 0V6a.5.5 0 0 1 .5-.5m2.5 0a.5.5 0 0 1 .5.5v6a.5.5 0 0 1-1 0V6a.5.5 0 0 1 .5-.5m3 .5a.5.5 0 0 0-1 0v6a.5.5 0 0 0 1 0z"></path><path d="M14.5 3a1 1 0 0 1-1 1H13v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V4h-.5a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1H6a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1h3.5a1 1 0 0 1 1 1zM4.118 4 4 4.059V13a1 1 0 0 0 1 1h6a1 1 0 0 0 1-1V4.059L11.882 4zM2.5 3h11V2h-11z"></path></svg>
|
||||
</button>
|
||||
</a>
|
||||
</center>
|
||||
</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
12
templates/backend/partner/downloader.html.twig
Normal file
12
templates/backend/partner/downloader.html.twig
Normal file
@@ -0,0 +1,12 @@
|
||||
{% extends 'backend/basic/base_partner.html.twig' %}
|
||||
|
||||
{% block title %} Télécharger {% endblock %}
|
||||
|
||||
{% block content %}
|
||||
|
||||
<h1 class="h3 mb-3">
|
||||
<strong>Home</strong> Télécharger
|
||||
</h1>
|
||||
<div class="row">
|
||||
</div>
|
||||
{% endblock %}
|
||||
67
templates/frontend/basic/base.html.twig
Normal file
67
templates/frontend/basic/base.html.twig
Normal file
@@ -0,0 +1,67 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="fr">
|
||||
|
||||
<head>
|
||||
|
||||
<title>{% block title %}{% endblock %}</title>
|
||||
|
||||
{% block metadata %}
|
||||
<meta charset="utf-8">
|
||||
<meta name="language" CONTENT="fr" />
|
||||
<meta charset="utf-8" />
|
||||
<meta content="width=device-width, initial-scale=1.0" name="viewport">
|
||||
<meta name="description" content="Gagner du temps et d'argent avec logiciel de gestion commerciale gratuit automatisée vos achats, ventes, stock et caisse">
|
||||
<meta name="keywords" content="achat, fournisseur, bon réception, facture, réglement, vente, commende bon livraison, facture, devis client, stock, bon d'entrée, bon de sortie, état du stock, produit, article, caisee, frais, chèque, traite">
|
||||
|
||||
{% endblock %}
|
||||
|
||||
<script src="{{ asset('assets/js/jquery-3.7.1.min.js') }}"></script>
|
||||
|
||||
{% block stylesheets %}
|
||||
<!-- Favicons -->
|
||||
<link href="{{ asset('assets/img/logo.ico') }}" rel="icon">
|
||||
<link href="{{ asset('assets/img/logo.ico') }}" rel="apple-touch-icon">
|
||||
|
||||
<!-- Fonts -->
|
||||
<link href="https://fonts.googleapis.com" rel="preconnect">
|
||||
<link href="https://fonts.gstatic.com" rel="preconnect" crossorigin>
|
||||
<link href="https://fonts.googleapis.com/css2?family=Roboto:ital,wght@0,100;0,300;0,400;0,500;0,700;0,900;1,100;1,300;1,400;1,500;1,700;1,900&family=Inter:wght@100;200;300;400;500;600;700;800;900&family=Nunito:ital,wght@0,200;0,300;0,400;0,500;0,600;0,700;0,800;0,900;1,200;1,300;1,400;1,500;1,600;1,700;1,800;1,900&display=swap" rel="stylesheet">
|
||||
|
||||
<!-- Vendor CSS Files -->
|
||||
<link href="{{ asset('assets/vendor/bootstrap/css/bootstrap.min.css') }}" rel="stylesheet">
|
||||
<link href="{{ asset('assets/vendor/bootstrap-icons/bootstrap-icons.css') }}" rel="stylesheet">
|
||||
<link href="{{ asset('assets/vendor/aos/aos.css') }}" rel="stylesheet">
|
||||
<link href="{{ asset('assets/vendor/glightbox/css/glightbox.min.css') }}" rel="stylesheet">
|
||||
<link href="{{ asset('assets/vendor/swiper/swiper-bundle.min.css') }}" rel="stylesheet">
|
||||
|
||||
<!-- Main CSS File -->
|
||||
<link href="{{ asset('assets/css/main.css') }}" rel="stylesheet">
|
||||
{% endblock %}
|
||||
|
||||
</head>
|
||||
|
||||
{% include 'frontend/basic/menu.html.twig' %}
|
||||
|
||||
{% block body %}
|
||||
|
||||
{% endblock %}
|
||||
|
||||
{% include 'frontend/basic/footer.html.twig' %}
|
||||
|
||||
<!-- Scroll Top -->
|
||||
<a href="#" id="scroll-top" class="scroll-top d-flex align-items-center justify-content-center"><i class="bi bi-arrow-up-short"></i></a>
|
||||
|
||||
{% block javascripts %}
|
||||
<!-- Vendor JS Files -->
|
||||
<script src="{{ asset('assets/vendor/bootstrap/js/bootstrap.bundle.min.js') }}"></script>
|
||||
<script src="{{ asset('assets/vendor/php-email-form/validate.js') }}"></script>
|
||||
<script src="{{ asset('assets/vendor/aos/aos.js') }}"></script>
|
||||
<script src="{{ asset('assets/vendor/glightbox/js/glightbox.min.js') }}"></script>
|
||||
<script src="{{ asset('assets/vendor/swiper/swiper-bundle.min.js') }}"></script>
|
||||
<script src="{{ asset('assets/vendor/purecounter/purecounter_vanilla.js') }}"></script>
|
||||
|
||||
|
||||
<!-- Main JS File -->
|
||||
<script src="{{ asset('assets/js/main.js') }}"></script>
|
||||
{% endblock %}
|
||||
</html>
|
||||
58
templates/frontend/basic/footer.html.twig
Normal file
58
templates/frontend/basic/footer.html.twig
Normal file
@@ -0,0 +1,58 @@
|
||||
<footer id="footer" class="footer">
|
||||
|
||||
<div class="container footer-top mb-1">
|
||||
<div class="row gy-4">
|
||||
<div class="col-lg-4 col-md-6 footer-about">
|
||||
<a href="http://powerpme.local:84/#hero" class="logo d-flex align-items-center">
|
||||
<span class="sitename">PowerPME</span>
|
||||
</a>
|
||||
<div class="social-links d-flex mt-4">
|
||||
<a href="https://www.facebook.com/profile.php?id=61575366993120¬if_id=1745143968707526¬if_t=fan_profile_v2&ref=notif"><i class="bi bi-facebook"></i></a>
|
||||
<a href="https://www.instagram.com/powerpme/"><i class="bi bi-instagram"></i></a>
|
||||
<a href="https://www.linkedin.com/company/powerpme/about/"><i class="bi bi-linkedin"></i></a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-lg-2 col-md-3 footer-links">
|
||||
<h4>Adresse</h4>
|
||||
<ul>
|
||||
<li><a href="#">2 rue elmouez</a></li>
|
||||
<li><a href="#">Mornaguia 1110 Tunis</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="col-lg-2 col-md-3 offset-1 footer-links">
|
||||
<h4>Téléphone</h4>
|
||||
<ul>
|
||||
<li><a href="#">(+216) 52 719 341</a></li>
|
||||
<li><a href="#">(+33) 06 05 68 60 69</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="col-lg-2 col-md-3 offset-1 footer-links">
|
||||
<h4>Email</h4>
|
||||
<ul>
|
||||
<li><a href="#">info@powerpme.com</a></li>
|
||||
<li><a href="#">contact@powerpme.com</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{#
|
||||
<div class="container copyright text-center mt-4">
|
||||
<p>© <span>Copyright</span> <strong class="px-1 sitename">iLanding</strong> <span>All Rights Reserved</span></p>
|
||||
<div class="credits">
|
||||
<!-- All the links in the footer should remain intact. -->
|
||||
<!-- You can delete the links only if you've purchased the pro version. -->
|
||||
<!-- Licensing information: https://bootstrapmade.com/license/ -->
|
||||
<!-- Purchase the pro version with working PHP/AJAX contact form: [buy-url] -->
|
||||
Designed by <a href="https://bootstrapmade.com/">BootstrapMade</a> Distributed By <a href="https://themewagon.com">ThemeWagon</a>
|
||||
</div>
|
||||
</div>
|
||||
#}
|
||||
|
||||
|
||||
</footer>
|
||||
32
templates/frontend/basic/menu.html.twig
Normal file
32
templates/frontend/basic/menu.html.twig
Normal file
@@ -0,0 +1,32 @@
|
||||
<header id="header" class="header d-flex align-items-center fixed-top">
|
||||
<div class="header-container container-fluid container-xl position-relative d-flex align-items-center justify-content-between">
|
||||
|
||||
<a href="{{ path('home_index') }}#hero" class="logo d-flex align-items-center me-auto me-xl-0">
|
||||
<!-- Uncomment the line below if you also wish to use an image logo -->
|
||||
<img src="{{ asset('assets/img/logo2.png') }}" alt="">
|
||||
</a>
|
||||
<nav id="navmenu" class="navmenu">
|
||||
<ul>
|
||||
<li><a href="{{ path('home_index') }}#about">À Propos</a></li>
|
||||
<li><a href="{{ path('home_index') }}#features">Nos fonctionnalités</a></li>
|
||||
<li><a href="{{ path('home_index') }}#testimonials">Témoignages</a></li>
|
||||
<li><a href="{{ path('home_index') }}#pricing">Téléchargement</a></li>
|
||||
<li><a href="{{ path('home_index') }}#contact">Contact</a></li>
|
||||
</ul>
|
||||
<i class="mobile-nav-toggle d-xl-none bi bi-list"></i>
|
||||
</nav>
|
||||
|
||||
{% if is_granted('ROLE_ADMIN') %}
|
||||
<a class="btn-getgreen" href="{{ path('admin_home_index') }}">Espace Admin</a>
|
||||
{% elseif is_granted('ROLE_PARTNER') %}
|
||||
<a class="btn-getgreen" href="{{ path('partner_home_downloader') }}">Espace Partnaire</a>
|
||||
{% endif %}
|
||||
|
||||
|
||||
{% if app.user %}
|
||||
<a class="btn-getdark" href="{{ path('security_logout') }}">Déconnexion</a>
|
||||
{% else %}
|
||||
<a class="btn-getgreen" href="{{ path('security_login') }}">Connexion</a>
|
||||
{% endif %}
|
||||
</div>
|
||||
</header>
|
||||
181
templates/frontend/demo/download.html.twig
Normal file
181
templates/frontend/demo/download.html.twig
Normal file
@@ -0,0 +1,181 @@
|
||||
{% extends 'frontend/basic/base.html.twig' %}
|
||||
|
||||
{% block title %}Version Démo{% endblock %}
|
||||
|
||||
{% block body %}
|
||||
<!-- Login 9 - Bootstrap Brain Component -->
|
||||
<section class="light-background py-3 py-md-5 py-xl-8">
|
||||
<br>
|
||||
<div class="container">
|
||||
<br>
|
||||
<div class="container my-5">
|
||||
<div class="card shadow-lg border-0 rounded-4">
|
||||
<div class="row g-0">
|
||||
<div class="col-md-3 d-flex align-items-center justify-content-center bg-white">
|
||||
<img src="{{ asset('/images/pages/alert_windows.webp') }}" alt="Logo Windows" class="img-fluid" >
|
||||
</div>
|
||||
<div class="col-md-9">
|
||||
<div class="card-body p-5">
|
||||
<h3 class="card-title mb-4">🔒 Information importante concernant le message d'alerte</h3>
|
||||
<p class="card-text fs-5">
|
||||
Lorsque vous exécutez notre logiciel, Windows peut afficher un message d’alerte indiquant que
|
||||
<strong>"l’éditeur n’est pas vérifié"</strong> ou que <strong>"le logiciel n’est pas certifié"</strong>.
|
||||
</p>
|
||||
<p class="card-text fs-5">
|
||||
<strong>Ce message ne signifie pas que le logiciel contient un virus.</strong> Il s'agit simplement
|
||||
d’une mesure de précaution de Windows pour les logiciels qui n’ont pas encore été certifiés via leur processus de signature.
|
||||
</p>
|
||||
<p class="card-text fs-5">
|
||||
✅ Notre logiciel est sûr, testé et exempt de tout virus ou programme malveillant.
|
||||
</p>
|
||||
<p class="card-text fs-5">
|
||||
Pour poursuivre l’installation, cliquez sur <strong>"Informations complémentaires"</strong>, puis
|
||||
<strong>"Exécuter quand même"</strong>.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<br><br>
|
||||
|
||||
<h4>Vous pouvez modifier les paramétres par défaut du logiciel en ce connecter par votre E-mail</h4>
|
||||
<br>
|
||||
{% set formErrors = form.vars.errors.form.getErrors(true) %}
|
||||
{% if formErrors|length %}
|
||||
<div class="alert alert-danger">
|
||||
<ul>
|
||||
{% for key,error in formErrors %}
|
||||
<li><strong>{{ error.message }}</strong></li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
{% for message in app.flashes('notice') %}
|
||||
<div class="alert alert-info" role="alert">
|
||||
{{ message }}
|
||||
</div>
|
||||
{% endfor %}
|
||||
|
||||
{{ form_start(form) }}
|
||||
<div class="accordion" id="accordionExample">
|
||||
<div class="accordion-item">
|
||||
<h2 class="accordion-header" id="headingOne">
|
||||
<button class="accordion-button" type="button" data-bs-toggle="collapse" data-bs-target="#collapseOne" aria-expanded="true" aria-controls="collapseOne">
|
||||
les paramétres de votre Société
|
||||
</button>
|
||||
</h2>
|
||||
<div id="collapseOne" class="accordion-collapse collapse show" aria-labelledby="headingOne" data-bs-parent="#accordionExample">
|
||||
<div class="accordion-body">
|
||||
<div class="row gy-3 overflow-hidden">
|
||||
<div class="col-4">
|
||||
{{ form_label(form.companyName) }}
|
||||
{{ form_widget(form.companyName, {'attr': {'class': 'form-control' }}) }}
|
||||
</div>
|
||||
<div class="col-4">
|
||||
{{ form_label(form.companyPlace) }}
|
||||
{{ form_widget(form.companyPlace, {'attr': {'class': 'form-control' }}) }}
|
||||
</div>
|
||||
<div class="col-4">
|
||||
{{ form_label(form.CompanyAddress) }}
|
||||
{{ form_widget(form.CompanyAddress, {'attr': {'class': 'form-control' }}) }}
|
||||
</div>
|
||||
<div class="col-4">
|
||||
{{ form_label(form.companySIREN) }}
|
||||
{{ form_widget(form.companySIREN, {'attr': {'class': 'form-control' }}) }}
|
||||
</div>
|
||||
<div class="col-4">
|
||||
{{ form_label(form.companyMF) }}
|
||||
{{ form_widget(form.companyMF, {'attr': {'class': 'form-control' }}) }}
|
||||
</div>
|
||||
<div class="col-4">
|
||||
{{ form_label(form.companyIF) }}
|
||||
{{ form_widget(form.companyIF, {'attr': {'class': 'form-control' }}) }}
|
||||
</div>
|
||||
<div class="col-3">
|
||||
{{ form_label(form.companyTele) }}
|
||||
{{ form_widget(form.companyTele, {'attr': {'class': 'form-control' }}) }}
|
||||
</div>
|
||||
<div class="col-3">
|
||||
{{ form_label(form.companyFax) }}
|
||||
{{ form_widget(form.companyFax, {'attr': {'class': 'form-control' }}) }}
|
||||
</div>
|
||||
<div class="col-3">
|
||||
{{ form_label(form.companyMail) }}
|
||||
{{ form_widget(form.companyMail, {'attr': {'class': 'form-control' }}) }}
|
||||
</div>
|
||||
<div class="col-3">
|
||||
{{ form_label(form.companySite) }}
|
||||
{{ form_widget(form.companySite, {'attr': {'class': 'form-control' }}) }}
|
||||
</div>
|
||||
<div class="col-3">
|
||||
{{ form_label(form.timbre) }}
|
||||
{{ form_widget(form.timbre, {'attr': {'class': 'form-control' }}) }}
|
||||
</div>
|
||||
</div>
|
||||
<br>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="accordion-item">
|
||||
<h2 class="accordion-header" id="headingTwo">
|
||||
<button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#collapseTwo" aria-expanded="false" aria-controls="collapseTwo">
|
||||
les paramétres de Devis
|
||||
</button>
|
||||
</h2>
|
||||
<div id="collapseTwo" class="accordion-collapse collapse" aria-labelledby="headingTwo" data-bs-parent="#accordionExample">
|
||||
<div class="accordion-body">
|
||||
<div class="row gy-3 overflow-hidden">
|
||||
|
||||
<div class="col-4">
|
||||
{{ form_label(form.currencySign) }}
|
||||
{{ form_widget(form.currencySign, {'attr': {'class': 'form-control' }}) }}
|
||||
</div>
|
||||
<div class="col-4">
|
||||
{{ form_label(form.currencyName) }}
|
||||
{{ form_widget(form.currencyName, {'attr': {'class': 'form-control' }}) }}
|
||||
</div>
|
||||
<div class="col-4">
|
||||
{{ form_label(form.currencyThousandth) }}
|
||||
{{ form_widget(form.currencyThousandth, {'attr': {'class': 'form-control' }}) }}
|
||||
</div>
|
||||
<div class="col-4">
|
||||
{{ form_label(form.bankName) }}
|
||||
{{ form_widget(form.bankName, {'attr': {'class': 'form-control' }}) }}
|
||||
</div>
|
||||
<div class="col-4">
|
||||
{{ form_label(form.bankRIP) }}
|
||||
{{ form_widget(form.bankRIP, {'attr': {'class': 'form-control' }}) }}
|
||||
</div>
|
||||
<div class="col-4">
|
||||
{{ form_label(form.bankRIB) }}
|
||||
{{ form_widget(form.bankRIB, {'attr': {'class': 'form-control' }}) }}
|
||||
</div>
|
||||
</div>
|
||||
<br>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<br><br>
|
||||
<center>
|
||||
{{ form_widget(form.submit, {'attr': {'class': 'btn btn-success btn-lg' }}) }}
|
||||
</center>
|
||||
|
||||
</div>
|
||||
{{ form_end(form) }}
|
||||
</div>
|
||||
</section>
|
||||
<script>
|
||||
|
||||
$(function(){
|
||||
|
||||
$.post( "{{ path('demo_save_download') }}", {}, function( data ) {
|
||||
window.open("{{ asset('/download/PowerPME_demo@v1.0.0.zip') }}", "_self");
|
||||
});
|
||||
|
||||
});
|
||||
</script>
|
||||
{% endblock %}
|
||||
|
||||
|
||||
51
templates/frontend/home/gallery.html.twig
Normal file
51
templates/frontend/home/gallery.html.twig
Normal file
@@ -0,0 +1,51 @@
|
||||
<link href="https://netdna.bootstrapcdn.com/bootstrap/3.0.3/css/bootstrap.min.css" rel="stylesheet">
|
||||
<script src="https://netdna.bootstrapcdn.com/bootstrap/3.0.3/js/bootstrap.min.js"></script>
|
||||
<script src="https://code.jquery.com/jquery-1.11.1.min.js"></script>
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/fancybox/2.1.5/jquery.fancybox.min.css">
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/fancybox/2.1.5/jquery.fancybox.min.js"></script>
|
||||
|
||||
<style>
|
||||
.image-container {
|
||||
height: 200px;
|
||||
overflow: hidden;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
}
|
||||
.image-container img {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
object-fit: cover;
|
||||
object-position: center;
|
||||
}
|
||||
</style>
|
||||
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
{% for file in files %}
|
||||
<div class='col-sm-4 col-xs-6 col-md-3 col-lg-3'>
|
||||
<div class="image-container">
|
||||
<a class="thumbnail fancybox" rel="lightbox" title="{{ file }}" href="{{ asset('/images/screenshot/' ~ file) }}">
|
||||
<div class='text-right'>
|
||||
<small class='text-muted'>{{ file }}</small>
|
||||
</div>
|
||||
<img alt="{{ file }}" src="{{ asset('/images/screenshot/' ~ file) }}" />
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
$(document).ready(function(){
|
||||
$(".fancybox").fancybox({
|
||||
openEffect: "elastic",
|
||||
closeEffect: "elastic",
|
||||
helpers: {
|
||||
title: { type: 'inside' }
|
||||
},
|
||||
titlePosition: "inside"
|
||||
});
|
||||
});
|
||||
</script>
|
||||
621
templates/frontend/home/index.html.twig
Normal file
621
templates/frontend/home/index.html.twig
Normal file
@@ -0,0 +1,621 @@
|
||||
{% extends 'frontend/basic/base.html.twig' %}
|
||||
|
||||
{% block title %}Logiciel de gestion commerciale gratuit{% endblock %}
|
||||
|
||||
|
||||
{% block body %}
|
||||
|
||||
<body class="index-page">
|
||||
|
||||
<script src="https://www.google.com/recaptcha/api.js?render={{ GOOGLE_RECAPTCHA_SITE_KEY }}"></script>
|
||||
|
||||
<main class="main">
|
||||
|
||||
<!-- Hero Section -->
|
||||
<section id="hero" class="hero section">
|
||||
|
||||
<div class="container" data-aos="fade-up" data-aos-delay="100">
|
||||
|
||||
<div class="row align-items-center">
|
||||
<div class="col-lg-6">
|
||||
<div class="hero-content" data-aos="fade-up" data-aos-delay="200">
|
||||
|
||||
|
||||
<h1 class="mb-4">
|
||||
Logiciel de Gestion Commerciale <span class="accent-text">Gratuit</span>
|
||||
</h1>
|
||||
|
||||
<p class="mb-4 mb-md-5">
|
||||
Pilotez votre entreprise en toute simplicité, de la prospection à la facturation, tout en suivant votre activité commerciale en temps réel. Avec PowerPME, bénéficiez d’un contrôle complet et optimisé sur votre business.
|
||||
</p>
|
||||
|
||||
<div class="hero-buttons">
|
||||
<a href="{{ path('demo_download') }}" class="btn btn-primary me-0 me-sm-2 mx-1">Télécharger la version démo</a>
|
||||
{#<a href="https://www.youtube.com/watch?v=Y7f98aduVJ8" class="btn btn-link mt-2 mt-sm-0 glightbox">
|
||||
<i class="bi bi-play-circle me-1"></i>
|
||||
Play Video
|
||||
</a>#}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-lg-6">
|
||||
<div class="hero-image" data-aos="zoom-out" data-aos-delay="300">
|
||||
<img src="assets/img/illustration-1.webp" alt="Hero Image" class="img-fluid">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</section><!-- /Hero Section -->
|
||||
|
||||
<!-- About Section -->
|
||||
<section id="about" class="about section">
|
||||
|
||||
<div class="container" data-aos="fade-up" data-aos-delay="100">
|
||||
|
||||
<div class="row gy-4 align-items-center justify-content-between">
|
||||
|
||||
<div class="col-xl-5" data-aos="fade-up" data-aos-delay="200">
|
||||
<span class="about-meta">À PROPOS</span>
|
||||
<h2 class="about-title">À propos sur logiciels de gestion commerciale</h2>
|
||||
<p class="about-description">
|
||||
PowerPME est outil essentiel pour accélérer le développement d'une entreprise.
|
||||
En optimisant les processus et en simplifiant la prise de décision, il permet de gérer efficacement l'activité commerciale, quelle que soit la taille de l'entreprise.
|
||||
Mais comment bien choisir un logiciel de gestion commerciale ? Découvrez nos conseils pratiques et notre sélection des meilleurs outils pour vous accompagner dans votre choix.
|
||||
</p>
|
||||
|
||||
|
||||
|
||||
<div class="info-wrapper">
|
||||
<div class="row gy-4">
|
||||
<div class="col-lg-6">
|
||||
<div class="profile d-flex align-items-center gap-3">
|
||||
<img src="assets/img/profile 2021.jpg" alt="CEO Profile" class="profile-image">
|
||||
<div>
|
||||
<h4 class="profile-name">Maher Ben Tili</h4>
|
||||
<p class="profile-position">CEO & Founder</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-lg-6">
|
||||
<div class="contact-info d-flex align-items-center gap-2">
|
||||
<i class="bi bi-telephone-fill"></i>
|
||||
<div>
|
||||
<p class="contact-label">Appelez-nous</p>
|
||||
<p class="contact-number">(+216) 52 719 341</p>
|
||||
<p class="contact-number">(+33) 06 05 68 60 69</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-xl-6" data-aos="fade-up" data-aos-delay="300">
|
||||
<div class="image-wrapper">
|
||||
<div class="images position-relative" data-aos="zoom-out" data-aos-delay="400">
|
||||
<img src="assets/img/about-5.webp" alt="Business Meeting" class="img-fluid main-image rounded-4">
|
||||
<img src="assets/img/about-2.webp" alt="Team Discussion" class="img-fluid small-image rounded-4">
|
||||
</div>
|
||||
<div class="experience-badge floating">
|
||||
<h3>5+ <span>Années</span></h3>
|
||||
<p>D'expérience en service aux entreprises</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</section><!-- /About Section -->
|
||||
|
||||
<!-- Features Section -->
|
||||
<section id="features" class="features section">
|
||||
|
||||
<!-- Section Title -->
|
||||
<div class="container section-title" data-aos="fade-up">
|
||||
<h2>Nos fonctionnalités</h2>
|
||||
<p>
|
||||
Découvrez gratuitement l'ensemble de fonctionnalités propose par PowerPME.
|
||||
</p>
|
||||
</div><!-- End Section Title -->
|
||||
|
||||
<div class="container">
|
||||
|
||||
<div class="d-flex justify-content-center">
|
||||
|
||||
<ul class="nav nav-tabs" data-aos="fade-up" data-aos-delay="100">
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link active show" data-bs-toggle="tab" data-bs-target="#features-tab-1">
|
||||
<h4>Achat</h4>
|
||||
</a>
|
||||
</li><!-- End tab nav item -->
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" data-bs-toggle="tab" data-bs-target="#features-tab-2">
|
||||
<h4>Vente</h4>
|
||||
</a><!-- End tab nav item -->
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" data-bs-toggle="tab" data-bs-target="#features-tab-3">
|
||||
<h4>Stock</h4>
|
||||
</a><!-- End tab nav item -->
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" data-bs-toggle="tab" data-bs-target="#features-tab-4">
|
||||
<h4>Caisse</h4>
|
||||
</a>
|
||||
</li><!-- End tab nav item -->
|
||||
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="tab-content" data-aos="fade-up" data-aos-delay="200">
|
||||
|
||||
<div class="tab-pane fade active show" id="features-tab-1">
|
||||
<div class="row">
|
||||
<div class="col-lg-6 order-2 order-lg-1 mt-3 mt-lg-0 d-flex flex-column justify-content-center">
|
||||
<h3>Gestion des Achats</h3>
|
||||
<p class="fst-italic">
|
||||
PowerPME intègre des fonctionnalités dédiées à la gestion des achats, conçues pour optimiser et rationaliser les processus d'approvisionnement.
|
||||
</p>
|
||||
<ul>
|
||||
<li><i class="bi bi-check2-all"></i> <span>La gestion des fournisseurs, qui permet de centraliser les informations relatives aux partenaires, de suivre les performances et de faciliter les négociations.</span></li>
|
||||
<li><i class="bi bi-check2-all"></i> <span>La gestion des bons de réception simplifie l'enregistrement et le suivi des marchandises reçues, en assurant une correspondance précise avec les commandes passées.</span></li>
|
||||
<li><i class="bi bi-check2-all"></i> <span>La gestion des règlements offre un suivi précis des paiements, en synchronisant les échéances et en facilitant la gestion de la trésorerie. </span></li>
|
||||
</ul>
|
||||
<p class="fst-italic">
|
||||
Ensemble, ces outils permettent une gestion efficace des achats, une meilleure maîtrise des coûts et une collaboration optimale avec les fournisseurs.
|
||||
</p>
|
||||
</div>
|
||||
<div class="col-lg-6 order-1 order-lg-2 text-center">
|
||||
<img src="assets/img/features-illustration-1.webp" alt="" class="img-fluid">
|
||||
</div>
|
||||
</div>
|
||||
</div><!-- End tab content item -->
|
||||
|
||||
<div class="tab-pane fade" id="features-tab-2">
|
||||
<div class="row">
|
||||
<div class="col-lg-6 order-2 order-lg-1 mt-3 mt-lg-0 d-flex flex-column justify-content-center">
|
||||
<h3>Gestion des Ventes</h3>
|
||||
<p class="fst-italic">
|
||||
PowerPME offre une suite complète de fonctionnalités dédiées à la gestion des ventes, permettant d'optimiser et de simplifier les processus commerciaux.
|
||||
</p>
|
||||
<ul>
|
||||
<li><i class="bi bi-check2-all"></i> <span>La gestion des devis, qui facilite la création, la personnalisation et le suivi des propositions commerciales, assurant une transition fluide vers la commande.</span></li>
|
||||
<li><i class="bi bi-check2-all"></i> <span>La gestion des factures permet de générer, envoyer et suivre les factures en temps réel, garantissant une traçabilité et une gestion financière précise.</span></li>
|
||||
<li><i class="bi bi-check2-all"></i> <span>La gestion des commandes centralise et automatise le traitement des commandes clients, de la réception à la préparation, tout en assurant un suivi efficace des stocks.</span></li>
|
||||
</ul>
|
||||
<p class="fst-italic">
|
||||
Ensemble, ces outils améliorent la productivité, réduisent les erreurs et offrent une visibilité complète sur le cycle de vente.</span></li>
|
||||
</p>
|
||||
</div>
|
||||
<div class="col-lg-6 order-1 order-lg-2 text-center">
|
||||
<img src="assets/img/features-illustration-2.webp" alt="" class="img-fluid">
|
||||
</div>
|
||||
</div>
|
||||
</div><!-- End tab content item -->
|
||||
|
||||
<div class="tab-pane fade" id="features-tab-3">
|
||||
<div class="row">
|
||||
<div class="col-lg-6 order-2 order-lg-1 mt-3 mt-lg-0 d-flex flex-column justify-content-center">
|
||||
<h3>Gestion du Stock</h3>
|
||||
<p class="fst-italic">
|
||||
PowerPME propose des fonctionnalités puissantes pour la gestion des stocks, permettant une maîtrise totale des flux et des niveaux de stock.
|
||||
</p>
|
||||
<ul>
|
||||
<li><i class="bi bi-check2-all"></i> <span>Le suivi des mouvements de stock, qui enregistre en temps réel les entrées, sorties et transferts de marchandises, offrant une visibilité précise sur l'évolution des stocks. </span></li>
|
||||
<li><i class="bi bi-check2-all"></i> <span>Les états de stock fournissent des rapports détaillés sur les quantités disponibles, les valeurs du stock et les tendances, facilitant la prise de décision et la planification des réapprovisionnements.</span></li>
|
||||
<li><i class="bi bi-check2-all"></i> <span>La gestion des bons d'entrée permet de documenter et de valider les réceptions de marchandises, en les liant aux commandes fournisseurs ou aux retours clients.</span></li>
|
||||
</ul>
|
||||
<p class="fst-italic">
|
||||
Ces outils garantissent une gestion optimisée des stocks, réduisent les risques de rupture ou de surstock et améliorent l'efficacité opérationnelle.
|
||||
</p>
|
||||
</div>
|
||||
<div class="col-lg-6 order-1 order-lg-2 text-center">
|
||||
<img src="assets/img/hero-img.png" alt="" class="img-fluid">
|
||||
</div>
|
||||
</div>
|
||||
</div><!-- End tab content item -->
|
||||
|
||||
<div class="tab-pane fade" id="features-tab-4">
|
||||
<div class="row">
|
||||
<div class="col-lg-6 order-2 order-lg-1 mt-3 mt-lg-0 d-flex flex-column justify-content-center">
|
||||
<h3>Gestion du Caisse</h3>
|
||||
<ul>
|
||||
<li><i class="bi bi-check2-all"></i> <span>PowerPME inclut des fonctionnalités dédiées à la gestion de la caisse, offrant un contrôle précis et une traçabilité complète des flux financiers.</span></li>
|
||||
<li><i class="bi bi-check2-all"></i> <span>La gestion des entrées de caisse, qui permet d'enregistrer les encaissements liés aux ventes, aux règlements clients ou à d'autres sources de revenus.</span></li>
|
||||
<li><i class="bi bi-check2-all"></i> <span>Les sorties de caisse facilitent l'enregistrement des dépenses, telles que les paiements fournisseurs, les retraits ou les frais opérationnels.</span></li>
|
||||
<li><i class="bi bi-check2-all"></i> <span>Le module de traitement des transactions assure un suivi en temps réel des opérations, en synchronisant les données avec les comptes clients et fournisseurs.</span></li>
|
||||
</ul>
|
||||
<p class="fst-italic">
|
||||
Ces outils offrent une visibilité complète sur la trésorerie, améliorent la gestion des liquidités et réduisent les risques d'erreurs ou de fraudes.
|
||||
</p>
|
||||
</div>
|
||||
<div class="col-lg-6 order-1 order-lg-2 text-center">
|
||||
<img src="assets/img/features-illustration-3.webp" alt="" class="img-fluid">
|
||||
</div>
|
||||
</div>
|
||||
</div><!-- End tab content item -->
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</section><!-- /Features Section -->
|
||||
|
||||
|
||||
|
||||
<!-- Clients Section -->
|
||||
<section id="clients" class="clients section">
|
||||
|
||||
<div class="container" data-aos="fade-up" data-aos-delay="100">
|
||||
|
||||
<div class="swiper init-swiper">
|
||||
<script type="application/json" class="swiper-config">
|
||||
{
|
||||
"loop": true,
|
||||
"speed": 600,
|
||||
"autoplay": {
|
||||
"delay": 5000
|
||||
},
|
||||
"slidesPerView": "auto",
|
||||
"pagination": {
|
||||
"el": ".swiper-pagination",
|
||||
"type": "bullets",
|
||||
"clickable": true
|
||||
},
|
||||
"breakpoints": {
|
||||
"320": {
|
||||
"slidesPerView": 2,
|
||||
"spaceBetween": 40
|
||||
},
|
||||
"480": {
|
||||
"slidesPerView": 3,
|
||||
"spaceBetween": 60
|
||||
},
|
||||
"640": {
|
||||
"slidesPerView": 4,
|
||||
"spaceBetween": 80
|
||||
},
|
||||
"992": {
|
||||
"slidesPerView": 6,
|
||||
"spaceBetween": 120
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<div class="swiper-wrapper align-items-center">
|
||||
<div class="swiper-slide"><img src="assets/img/clients/client-1.png" class="img-fluid" alt=""></div>
|
||||
<div class="swiper-slide"><img src="assets/img/clients/client-2.png" class="img-fluid" alt=""></div>
|
||||
<div class="swiper-slide"><img src="assets/img/clients/client-3.png" class="img-fluid" alt=""></div>
|
||||
<div class="swiper-slide"><img src="assets/img/clients/client-4.png" class="img-fluid" alt=""></div>
|
||||
<div class="swiper-slide"><img src="assets/img/clients/client-5.png" class="img-fluid" alt=""></div>
|
||||
<div class="swiper-slide"><img src="assets/img/clients/client-6.png" class="img-fluid" alt=""></div>
|
||||
<div class="swiper-slide"><img src="assets/img/clients/client-7.png" class="img-fluid" alt=""></div>
|
||||
<div class="swiper-slide"><img src="assets/img/clients/client-8.png" class="img-fluid" alt=""></div>
|
||||
</div>
|
||||
<div class="swiper-pagination"></div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</section><!-- /Clients Section -->
|
||||
|
||||
<!-- Testimonials Section -->
|
||||
<section id="testimonials" class="testimonials section light-background">
|
||||
|
||||
<!-- Section Title -->
|
||||
<div class="container section-title" data-aos="fade-up">
|
||||
<h2>Témoignages</h2>
|
||||
<p>Ces témoignages illustrent comment PowerPME peut répondre aux besoins variés des entreprises, en améliorant leur efficacité et leur rentabilité.</p>
|
||||
</div><!-- End Section Title -->
|
||||
|
||||
<div class="container">
|
||||
|
||||
<div class="row g-5">
|
||||
|
||||
<div class="col-lg-6" data-aos="fade-up" data-aos-delay="100">
|
||||
<div class="testimonial-item">
|
||||
<img src="assets/img/testimonials/testimonials-1.jpg" class="testimonial-img" alt="">
|
||||
<h3>Karim</h3>
|
||||
<h4>Responsable logistique d'une entreprise de vente en gros</h4>
|
||||
<div class="stars">
|
||||
<i class="bi bi-star-fill"></i><i class="bi bi-star-fill"></i><i class="bi bi-star-fill"></i><i class="bi bi-star-fill"></i><i class="bi bi-star-fill"></i>
|
||||
</div>
|
||||
<p>
|
||||
<i class="bi bi-quote quote-icon-left"></i>
|
||||
<span>Depuis que nous avons adopté PowerPME, notre productivité a considérablement augmenté. La centralisation des données, la gestion automatisée des stocks et la génération rapide de devis et de factures nous ont fait gagner un temps précieux. Nous pouvons maintenant nous concentrer sur notre croissance plutôt que sur des tâches administratives répétitives.</span>
|
||||
<i class="bi bi-quote quote-icon-right"></i>
|
||||
</p>
|
||||
</div>
|
||||
</div><!-- End testimonial item -->
|
||||
|
||||
<div class="col-lg-6" data-aos="fade-up" data-aos-delay="200">
|
||||
<div class="testimonial-item">
|
||||
<img src="assets/img/testimonials/testimonials-2.jpg" class="testimonial-img" alt="">
|
||||
<h3>Sarah</h3>
|
||||
<h4>Gérante d'une PME de distribution</h4>
|
||||
<div class="stars">
|
||||
<i class="bi bi-star-fill"></i><i class="bi bi-star-fill"></i><i class="bi bi-star-fill"></i><i class="bi bi-star-fill"></i><i class="bi bi-star-fill"></i>
|
||||
</div>
|
||||
<p>
|
||||
<i class="bi bi-quote quote-icon-left"></i>
|
||||
<span>La gestion des stocks était un vrai casse-tête pour nous. Avec ce logiciel, nous avons enfin une visibilité en temps réel sur nos niveaux de stock, les mouvements et les réapprovisionnements. Les alertes automatiques nous évitent les ruptures de stock et les surstocks. Un outil indispensable pour notre activité !</span>
|
||||
<i class="bi bi-quote quote-icon-right"></i>
|
||||
</p>
|
||||
</div>
|
||||
</div><!-- End testimonial item -->
|
||||
|
||||
<div class="col-lg-6" data-aos="fade-up" data-aos-delay="300">
|
||||
<div class="testimonial-item">
|
||||
<img src="assets/img/testimonials/testimonials-3.jpg" class="testimonial-img" alt="">
|
||||
<h3>Jena</h3>
|
||||
<h4>Directrice financière d'une entreprise de services</h4>
|
||||
<div class="stars">
|
||||
<i class="bi bi-star-fill"></i><i class="bi bi-star-fill"></i><i class="bi bi-star-fill"></i><i class="bi bi-star-fill"></i><i class="bi bi-star-fill"></i>
|
||||
</div>
|
||||
<p>
|
||||
<i class="bi bi-quote quote-icon-left"></i>
|
||||
<span>Ce logiciel a révolutionné notre gestion financière. Les fonctionnalités de suivi des entrées et sorties de caisse, ainsi que la gestion des règlements, nous permettent de garder une trésorerie saine et de prendre des décisions éclairées. La génération automatique des états financiers est un vrai plus pour notre comptabilité.</span>
|
||||
<i class="bi bi-quote quote-icon-right"></i>
|
||||
</p>
|
||||
</div>
|
||||
</div><!-- End testimonial item -->
|
||||
|
||||
<div class="col-lg-6" data-aos="fade-up" data-aos-delay="400">
|
||||
<div class="testimonial-item">
|
||||
<img src="assets/img/testimonials/testimonials-4.jpg" class="testimonial-img" alt="">
|
||||
<h3>Thomas</h3>
|
||||
<h4>Responsable des achats dans une entreprise de production</h4>
|
||||
<div class="stars">
|
||||
<i class="bi bi-star-fill"></i><i class="bi bi-star-fill"></i><i class="bi bi-star-fill"></i><i class="bi bi-star-fill"></i><i class="bi bi-star-fill"></i>
|
||||
</div>
|
||||
<p>
|
||||
<i class="bi bi-quote quote-icon-left"></i>
|
||||
<span>La gestion des achats est devenue beaucoup plus simple grâce à ce logiciel. Nous pouvons suivre les commandes fournisseurs, les bons de réception et les factures en un seul endroit. Les rappels automatiques nous aident à respecter les délais de paiement et à maintenir de bonnes relations avec nos partenaires.</span>
|
||||
<i class="bi bi-quote quote-icon-right"></i>
|
||||
</p>
|
||||
</div>
|
||||
</div><!-- End testimonial item -->
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</section><!-- /Testimonials Section -->
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Pricing Section -->
|
||||
<section id="pricing" class="pricing section light-background">
|
||||
|
||||
<!-- Section Title -->
|
||||
<div class="container section-title" data-aos="fade-up">
|
||||
<h2>Téléchargement</h2>
|
||||
</div><!-- End Section Title -->
|
||||
|
||||
<div class="container" data-aos="fade-up" data-aos-delay="100">
|
||||
|
||||
<div class="row g-4 justify-content-center">
|
||||
|
||||
<!-- Version Demo -->
|
||||
<div class="col-lg-5" data-aos="fade-up" data-aos-delay="100">
|
||||
<div class="pricing-card">
|
||||
<div class="price">
|
||||
<span class="currency">Version Demo</span>
|
||||
</div>
|
||||
<p class="description">Découvrez notre logiciel en action avec cette démo gratuite, conçue pour vous offrir un aperçu complet de ses fonctionnalités et de sa simplicité d'utilisation.</p>
|
||||
|
||||
<h4>Les options:</h4>
|
||||
<ul class="features-list">
|
||||
<li>
|
||||
<i class="bi bi-check-circle-fill"></i>
|
||||
Base de données en memoire
|
||||
</li>
|
||||
<li>
|
||||
<i class="bi bi-check-circle-fill"></i>
|
||||
Un seul utilisateur
|
||||
</li>
|
||||
<li>
|
||||
<i class="bi bi-check-circle-fill"></i>
|
||||
Un seul Magasin
|
||||
</li>
|
||||
<li>
|
||||
<i class="bi bi-check-circle-fill"></i>
|
||||
Fonctionne sans connexion internet
|
||||
</li>
|
||||
<li>
|
||||
<i class="bi bi-check-circle-fill"></i>
|
||||
Système d'exploitation Windows
|
||||
</li>
|
||||
</ul>
|
||||
<a href="{{ path('demo_download') }}" class="btn btn-primary">
|
||||
Télécharger
|
||||
<i class="bi bi-arrow-right"></i>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Version complète -->
|
||||
<div class="col-lg-6 offset-1" data-aos="fade-up" data-aos-delay="200">
|
||||
<div class="pricing-card popular">
|
||||
<div class="price">
|
||||
<span class="currency">Version complète</span>
|
||||
</div>
|
||||
<p class="description">Passez à la version complète de notre logiciel pour débloquer toutes les fonctionnalités avancées et optimiser votre productivité dès aujourd'hui !.</p>
|
||||
|
||||
<h4>Les options:</h4>
|
||||
<ul class="features-list">
|
||||
<li>
|
||||
<i class="bi bi-check-circle-fill"></i>
|
||||
Multi PC
|
||||
</li>
|
||||
<li>
|
||||
<i class="bi bi-check-circle-fill"></i>
|
||||
Multi Utilisateurs
|
||||
</li>
|
||||
<li>
|
||||
<i class="bi bi-check-circle-fill"></i>
|
||||
Plusieurs Magasin
|
||||
</li>
|
||||
<li>
|
||||
<i class="bi bi-check-circle-fill"></i>
|
||||
Base de données en Mysql
|
||||
</li>
|
||||
<li>
|
||||
<i class="bi bi-check-circle-fill"></i>
|
||||
Authentification sans connexion internet
|
||||
</li>
|
||||
<li>
|
||||
<i class="bi bi-check-circle-fill"></i>
|
||||
Système d'exploitation Windows
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
|
||||
<a href="#contact" class="btn btn-light">
|
||||
Nos contacter
|
||||
<i class="bi bi-arrow-right"></i>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</section><!-- /Pricing Section -->
|
||||
|
||||
<!-- Contact Section -->
|
||||
<section id="contact" class="contact section light-background">
|
||||
|
||||
<!-- Section Title -->
|
||||
<div class="container section-title" data-aos="fade-up">
|
||||
<h2>Contact</h2>
|
||||
<p>Besoin d’aide ? Une question ? Nous sommes là pour vous accompagner. Contactez-nous par e-mail ou par téléphone.</p>
|
||||
</div><!-- End Section Title -->
|
||||
|
||||
<div class="container" data-aos="fade-up" data-aos-delay="100">
|
||||
|
||||
<div class="row g-4 g-lg-5">
|
||||
<div class="col-lg-5">
|
||||
<div class="info-box" data-aos="fade-up" data-aos-delay="200">
|
||||
<h3>Contact</h3>
|
||||
<p>Pour toute question ou information supplémentaire, n'hésitez pas à nous contacter à l'adresse e-mail ou numéro de téléphone suivant</p>
|
||||
|
||||
<div class="info-item" data-aos="fade-up" data-aos-delay="300">
|
||||
<div class="icon-box">
|
||||
<i class="bi bi-geo-alt"></i>
|
||||
</div>
|
||||
<div class="content">
|
||||
<h4>Adress Postale</h4>
|
||||
<p>2 rue elmouez</p>
|
||||
<p>mornguia 1110 Tunis</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="info-item" data-aos="fade-up" data-aos-delay="400">
|
||||
<div class="icon-box">
|
||||
<i class="bi bi-telephone"></i>
|
||||
</div>
|
||||
<div class="content">
|
||||
<h4>Numéro de Téléphone</h4>
|
||||
<p>(+216) 52 719 341</p>
|
||||
<p>(+33) 06 05 68 60 69</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="info-item" data-aos="fade-up" data-aos-delay="500">
|
||||
<div class="icon-box">
|
||||
<i class="bi bi-envelope"></i>
|
||||
</div>
|
||||
<div class="content">
|
||||
<h4>Email </h4>
|
||||
<p>info@powerpme.com</p>
|
||||
<p>contact@powerpme.com</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-lg-7">
|
||||
<div class="contact-form" data-aos="fade-up" data-aos-delay="300">
|
||||
<h3>Votre Message</h3>
|
||||
<p>Les données obligatoires sont indiquées par un astérisque *.
|
||||
Le numéro de téléphone nous permettra de vous répondre plus rapidement, notamment en cas de problème.</p>
|
||||
|
||||
{{ form_start(form, {'action': path('home_contact'), 'method': 'POST'}) }}
|
||||
<div class="row gy-4">
|
||||
<div class="col-md-6">
|
||||
{{ form_widget(form.fullname, {'attr': {'class': 'form-control'}}) }}
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
{{ form_widget(form.email, {'attr': {'class': 'form-control'}}) }}
|
||||
</div>
|
||||
<div class="col-12">
|
||||
{{ form_widget(form.subject, {'attr': {'class': 'form-control'}}) }}
|
||||
</div>
|
||||
<div class="col-12">
|
||||
{{ form_widget(form.message, {'attr': {'class': 'form-control'}}) }}
|
||||
</div>
|
||||
|
||||
{{ form_widget(form.recaptcha) }}
|
||||
|
||||
<div class="col-12 text-center">
|
||||
|
||||
{% for message in app.flashes('notice-email') %}
|
||||
<div class="alert alert-info" role="alert"> {{ message }} </div>
|
||||
{% endfor %}
|
||||
|
||||
{% for message in app.flashes('erreur-email') %}
|
||||
<div class="alert alert-danger" role="alert"> {{ message }} </div>
|
||||
{% endfor %}
|
||||
|
||||
{{ form_widget(form.submit, {'attr': {'class': 'btn'}}) }}
|
||||
</div>
|
||||
</div>
|
||||
{{ form_end(form) }}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</section><!-- /Contact Section -->
|
||||
|
||||
</main>
|
||||
|
||||
<script>
|
||||
|
||||
|
||||
$(function(){
|
||||
|
||||
grecaptcha.ready(function() {
|
||||
grecaptcha.execute('{{ GOOGLE_RECAPTCHA_SITE_KEY }}', {action: 'submit'}).then(function(token) {
|
||||
$("#mail_recaptcha").empty().val(token);
|
||||
});
|
||||
});
|
||||
|
||||
{% if app.user is null %}
|
||||
{% if geoVisitor != true %}
|
||||
|
||||
$.get( "https://api.ipgeolocation.io/ipgeo?apiKey=64b7e23d901d45c6a23fe077f45f82e8&output=json", function( data ) {
|
||||
$.post( "{{ path('home_geolocation')}}", {api:JSON.stringify(data)}, function( reponse ) {
|
||||
//console.log(reponse);
|
||||
});
|
||||
});
|
||||
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
|
||||
});
|
||||
</script>
|
||||
|
||||
</body>
|
||||
{% endblock %}
|
||||
112
templates/frontend/security/login.html.twig
Normal file
112
templates/frontend/security/login.html.twig
Normal file
@@ -0,0 +1,112 @@
|
||||
{% extends 'frontend/basic/base.html.twig' %}
|
||||
|
||||
{% block title %}PowerPME{% endblock %}
|
||||
|
||||
{% block body %}
|
||||
<!-- Login 9 - Bootstrap Brain Component -->
|
||||
<section class="bg-primary py-3 py-md-5 py-xl-8">
|
||||
<br>
|
||||
<div class="container" data-aos="fade-up" data-aos-delay="100">
|
||||
<div class="row gy-4 align-items-center mt-5" data-aos="zoom-out" data-aos-delay="200">
|
||||
<div class="col-12 col-md-6 col-xl-7">
|
||||
<div class="d-flex justify-content-center text-bg-primary">
|
||||
<div class="col-12 col-xl-9">
|
||||
<h3 class="h3 mb-4">Un problème ?</h3>
|
||||
<hr class="border-primary-subtle mb-4">
|
||||
<p class="lead mb-5">Consultez nos rubriques Aide et Foire aux Questions, ou contactez-nous par e-mail ou par téléphone.</p>
|
||||
<div class="text-endx">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="48" height="48" fill="currentColor" class="bi bi-grip-horizontal" viewBox="0 0 16 16">
|
||||
<path d="M2 8a1 1 0 1 1 0 2 1 1 0 0 1 0-2zm0-3a1 1 0 1 1 0 2 1 1 0 0 1 0-2zm3 3a1 1 0 1 1 0 2 1 1 0 0 1 0-2zm0-3a1 1 0 1 1 0 2 1 1 0 0 1 0-2zm3 3a1 1 0 1 1 0 2 1 1 0 0 1 0-2zm0-3a1 1 0 1 1 0 2 1 1 0 0 1 0-2zm3 3a1 1 0 1 1 0 2 1 1 0 0 1 0-2zm0-3a1 1 0 1 1 0 2 1 1 0 0 1 0-2zm3 3a1 1 0 1 1 0 2 1 1 0 0 1 0-2zm0-3a1 1 0 1 1 0 2 1 1 0 0 1 0-2z" />
|
||||
</svg>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-12 col-md-6 col-xl-5">
|
||||
<div class="card border-0 rounded-4">
|
||||
<div class="card-body p-3 p-md-4 p-xl-5">
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
<div class="mb-4">
|
||||
<h3>Vos informations de Connexion</h3>
|
||||
<p class="mt-4">Vous n'avez pas de compte ? <a href="{{ path('security_registration') }}">Créer un compte</a></p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<form action="{{ path('security_login') }}" method="post">
|
||||
|
||||
{% if error %}
|
||||
<div class="alert alert-danger">{{ error.messageKey|trans(error.messageData, 'security') }}</div>
|
||||
{% endif %}
|
||||
|
||||
<input type="hidden" name="_csrf_token" data-controller="csrf-protection" value="{{ csrf_token('authenticate') }}">
|
||||
<div class="row gy-3 overflow-hidden">
|
||||
<div class="col-12">
|
||||
<div class="form-floating mb-3">
|
||||
<input type="email" class="form-control" name="email" id="email" placeholder="name@example.com" required>
|
||||
<label for="email" class="form-label">Email</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-12">
|
||||
<div class="form-floating mb-3">
|
||||
<input type="password" class="form-control" name="password" id="password" value="" placeholder="Password" required>
|
||||
<label for="password" class="form-label">Mot de passe</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-12">
|
||||
<div class="form-check">
|
||||
<input class="form-check-input" type="checkbox" value="" name="remember_me" id="remember_me">
|
||||
<label class="form-check-label text-secondary" for="remember_me">
|
||||
Rester connecté
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-12">
|
||||
<div class="d-grid">
|
||||
<button class="btn btn-success btn-lg" type="submit">Se connecter</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</form>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
<div class="d-flex gap-2 gap-md-4 flex-column flex-md-row justify-content-md-end mt-4">
|
||||
<a href="#!">Mot de passe oublié ?</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
<p class="mt-4 mb-4">Ou connecté par</p>
|
||||
<div class="d-flex gap-2 gap-sm-3 justify-content-centerX">
|
||||
<a href="#!" class="btn btn-outline-danger bsb-btn-circle bsb-btn-circle-2xl">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="currentColor" class="bi bi-google" viewBox="0 0 16 16">
|
||||
<path d="M15.545 6.558a9.42 9.42 0 0 1 .139 1.626c0 2.434-.87 4.492-2.384 5.885h.002C11.978 15.292 10.158 16 8 16A8 8 0 1 1 8 0a7.689 7.689 0 0 1 5.352 2.082l-2.284 2.284A4.347 4.347 0 0 0 8 3.166c-2.087 0-3.86 1.408-4.492 3.304a4.792 4.792 0 0 0 0 3.063h.003c.635 1.893 2.405 3.301 4.492 3.301 1.078 0 2.004-.276 2.722-.764h-.003a3.702 3.702 0 0 0 1.599-2.431H8v-3.08h7.545z" />
|
||||
</svg>
|
||||
</a>
|
||||
<a href="#!" class="btn btn-outline-primary bsb-btn-circle bsb-btn-circle-2xl">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="currentColor" class="bi bi-facebook" viewBox="0 0 16 16">
|
||||
<path d="M16 8.049c0-4.446-3.582-8.05-8-8.05C3.58 0-.002 3.603-.002 8.05c0 4.017 2.926 7.347 6.75 7.951v-5.625h-2.03V8.05H6.75V6.275c0-2.017 1.195-3.131 3.022-3.131.876 0 1.791.157 1.791.157v1.98h-1.009c-.993 0-1.303.621-1.303 1.258v1.51h2.218l-.354 2.326H9.25V16c3.824-.604 6.75-3.934 6.75-7.951z" />
|
||||
</svg>
|
||||
</a>
|
||||
<a href="#!" class="btn btn-outline-dark bsb-btn-circle bsb-btn-circle-2xl">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="currentColor" class="bi bi-apple" viewBox="0 0 16 16">
|
||||
<path d="M11.182.008C11.148-.03 9.923.023 8.857 1.18c-1.066 1.156-.902 2.482-.878 2.516.024.034 1.52.087 2.475-1.258.955-1.345.762-2.391.728-2.43Zm3.314 11.733c-.048-.096-2.325-1.234-2.113-3.422.212-2.189 1.675-2.789 1.698-2.854.023-.065-.597-.79-1.254-1.157a3.692 3.692 0 0 0-1.563-.434c-.108-.003-.483-.095-1.254.116-.508.139-1.653.589-1.968.607-.316.018-1.256-.522-2.267-.665-.647-.125-1.333.131-1.824.328-.49.196-1.422.754-2.074 2.237-.652 1.482-.311 3.83-.067 4.56.244.729.625 1.924 1.273 2.796.576.984 1.34 1.667 1.659 1.899.319.232 1.219.386 1.843.067.502-.308 1.408-.485 1.766-.472.357.013 1.061.154 1.782.539.571.197 1.111.115 1.652-.105.541-.221 1.324-1.059 2.238-2.758.347-.79.505-1.217.473-1.282Z" />
|
||||
<path d="M11.182.008C11.148-.03 9.923.023 8.857 1.18c-1.066 1.156-.902 2.482-.878 2.516.024.034 1.52.087 2.475-1.258.955-1.345.762-2.391.728-2.43Zm3.314 11.733c-.048-.096-2.325-1.234-2.113-3.422.212-2.189 1.675-2.789 1.698-2.854.023-.065-.597-.79-1.254-1.157a3.692 3.692 0 0 0-1.563-.434c-.108-.003-.483-.095-1.254.116-.508.139-1.653.589-1.968.607-.316.018-1.256-.522-2.267-.665-.647-.125-1.333.131-1.824.328-.49.196-1.422.754-2.074 2.237-.652 1.482-.311 3.83-.067 4.56.244.729.625 1.924 1.273 2.796.576.984 1.34 1.667 1.659 1.899.319.232 1.219.386 1.843.067.502-.308 1.408-.485 1.766-.472.357.013 1.061.154 1.782.539.571.197 1.111.115 1.652-.105.541-.221 1.324-1.059 2.238-2.758.347-.79.505-1.217.473-1.282Z" />
|
||||
</svg>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
{% endblock %}
|
||||
96
templates/frontend/security/register.html.twig
Normal file
96
templates/frontend/security/register.html.twig
Normal file
@@ -0,0 +1,96 @@
|
||||
{% extends 'frontend/basic/base.html.twig' %}
|
||||
|
||||
{% block title %}PowerPME{% endblock %}
|
||||
|
||||
{% block body %}
|
||||
<!-- Login 9 - Bootstrap Brain Component -->
|
||||
<section class="light-background py-3 py-md-5 py-xl-8">
|
||||
<br>
|
||||
<div class="container">
|
||||
<div class="row gy-4 align-items-center mt-5">
|
||||
<div class="col-12">
|
||||
<div class="card border-0 rounded-4">
|
||||
<div class="card-body p-3 p-md-4 p-xl-5">
|
||||
|
||||
{{ form_start(form) }}
|
||||
|
||||
<div class="row gy-3 overflow-hidden">
|
||||
|
||||
{% set formErrors = form.vars.errors.form.getErrors(true) %}
|
||||
{% if formErrors|length %}
|
||||
<div class="alert alert-danger">
|
||||
<ul>
|
||||
{% for key,error in formErrors %}
|
||||
<li><strong>{{ error.message }}</strong></li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
<div class="row mt-3">
|
||||
<h4>Vos informations personnelles</h4>
|
||||
<div class="col-4">
|
||||
<div class="form-floating mb-3">
|
||||
{{ form_widget(form.gender, {'attr': {'class': 'form-control', 'placeholder': 'gender' }}) }}
|
||||
<label for="gender" class="form-label">{{ form_label(form.gender) }}</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-4">
|
||||
<div class="form-floating mb-3">
|
||||
{{ form_widget(form.firstname, {'attr': {'class': 'form-control', 'placeholder': 'firstname' }}) }}
|
||||
<label for="firstname" class="form-label">{{ form_label(form.firstname) }}</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-4">
|
||||
<div class="form-floating mb-3">
|
||||
{{ form_widget(form.lastname, {'attr': {'class': 'form-control', 'placeholder': 'lastname' }}) }}
|
||||
<label for="lastname" class="form-label">{{ form_label(form.lastname) }}</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-4">
|
||||
<div class="form-floating mb-3">
|
||||
{{ form_widget(form.birthdate, {'attr': {'class': 'form-control', 'placeholder': 'dd/mm/yyyy' }}) }}
|
||||
<label for="birthdate" class="form-label">{{ form_label(form.birthdate) }}</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-12 mt-5">
|
||||
<h4>Vos informations de connexion au site</h4>
|
||||
<div class="form-floating mb-3">
|
||||
{{ form_widget(form.email, {'attr': {'class': 'form-control', 'placeholder': 'email' }}) }}
|
||||
<label for="email" class="form-label">{{ form_label(form.email) }}</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-6">
|
||||
<div class="form-floating mb-3">
|
||||
{{ form_widget(form.password.first, {'attr': {'class': 'form-control', 'placeholder': 'password' }}) }}
|
||||
<label for="user_registration_password_first" class="form-label">{{ form_label(form.password.first) }}</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-6">
|
||||
<div class="form-floating mb-3">
|
||||
{{ form_widget(form.password.second, {'attr': {'class': 'form-control', 'placeholder': 'password' }}) }}
|
||||
<label for="user_registration_password_second" class="form-label">{{ form_label(form.password.second) }}</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-4 offset-4">
|
||||
<div class="d-grid">
|
||||
<button class="btn btn-success btn-lg" type="submit">Finaliser l'inscription</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{{ form_widget(form._token) }}
|
||||
{{ form_end(form) }}
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
{% endblock %}
|
||||
Reference in New Issue
Block a user