traduction + alert

This commit is contained in:
maher
2025-12-29 16:41:58 +01:00
parent fc2c7a3d25
commit fef43c222d
19 changed files with 206 additions and 718 deletions

View File

@@ -8932,7 +8932,7 @@ a.text-dark:hover, a.text-dark:focus {
margin-bottom: 20px; } margin-bottom: 20px; }
@media (min-width: 992px) { @media (min-width: 992px) {
.az-content-title { .az-content-title {
margin-bottom: 40px; } } margin-bottom: 30px; } }
.az-content-label { .az-content-label {
color: #1c273c; color: #1c273c;

View File

@@ -75,6 +75,8 @@ final class BroadcastController extends AbstractController
$this->stateRepository->addState($investigation, 3, 1, $broadcast); $this->stateRepository->addState($investigation, 3, 1, $broadcast);
$this->addFlash('danger', " <strong>Well done!</strong> You successfully read this important alert message.");
return $this->redirectToRoute('app_broadcast_index'); return $this->redirectToRoute('app_broadcast_index');
} }

View File

@@ -6,6 +6,8 @@ use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Attribute\Route; use Symfony\Component\Routing\Attribute\Route;
use Symfony\Contracts\Translation\TranslatorInterface;
final class DemoController extends AbstractController final class DemoController extends AbstractController
{ {
#[Route('/demo/index', name: 'app_demo_index')] #[Route('/demo/index', name: 'app_demo_index')]
@@ -18,6 +20,9 @@ final class DemoController extends AbstractController
#[Route('/demo/empty', name: 'app_demo_empty')] #[Route('/demo/empty', name: 'app_demo_empty')]
public function empty(): Response public function empty(): Response
{ {
$this->addFlash('danger', " <strong>Well done!</strong> You successfully read this important alert message.");
//$this->addFlash('success', $this->translator->trans('conference.success_create_message', array(), 'Admin'));
return $this->render('demo/empty.html.twig', []); return $this->render('demo/empty.html.twig', []);
} }

View File

@@ -9,6 +9,8 @@ use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Attribute\Route; use Symfony\Component\Routing\Attribute\Route;
use Symfony\Contracts\Translation\TranslatorInterface;
use Doctrine\ORM\EntityManagerInterface; use Doctrine\ORM\EntityManagerInterface;
use App\Entity\State; use App\Entity\State;
@@ -24,16 +26,19 @@ final class InvestigationController extends AbstractController
{ {
/** /**
* @param EntityManagerInterface $em * @param EntityManagerInterface $em
* @param TranslatorInterface $translator
* @param StateRepository $stateRepository * @param StateRepository $stateRepository
* @param InvestigationRepository $investigationRepository * @param InvestigationRepository $investigationRepository
* @return $this * @return $this
*/ */
public function __construct( public function __construct(
private EntityManagerInterface $em, private EntityManagerInterface $em,
private TranslatorInterface $translator,
private StateRepository $stateRepository, private StateRepository $stateRepository,
private InvestigationRepository $investigationRepository, private InvestigationRepository $investigationRepository,
) { ) {
$this->em = $em; $this->em = $em;
$this->translator = $translator;
$this->stateRepository = $stateRepository; $this->stateRepository = $stateRepository;
$this->investigationRepository = $investigationRepository; $this->investigationRepository = $investigationRepository;
} }
@@ -41,7 +46,7 @@ final class InvestigationController extends AbstractController
#[Route('/index', name: 'app_investigation_index')] #[Route('/index', name: 'app_investigation_index')]
public function index(): Response public function index(): Response
{ {
$investigations = $this->investigationRepository->findBy(['create_by' => $this->getUser()], ["id" => 'DESC']); $investigations = $this->investigationRepository->findBy(['create_by' => $this->getUser(), 'last_state' => [10, 11, 12, 20, 21, 22]], ["id" => 'DESC']);
$invesAdmins = $this->investigationRepository->findBy(['create_by' => $this->getUser(), 'last_state' => 21], ["id" => 'DESC']); $invesAdmins = $this->investigationRepository->findBy(['create_by' => $this->getUser(), 'last_state' => 21], ["id" => 'DESC']);
@@ -65,6 +70,9 @@ final class InvestigationController extends AbstractController
$this->em->persist($investigation); $this->em->persist($investigation);
$this->em->flush(); $this->em->flush();
$this->addFlash('success', $this->translator->trans('alert_sucess_add', [], 'investigation'));
return $this->redirectToRoute('app_investigation_index');
} }
return $this->render('investigation/add-index.html.twig', [ return $this->render('investigation/add-index.html.twig', [
@@ -86,10 +94,13 @@ final class InvestigationController extends AbstractController
$form = $this->createForm(InvestigationType::class, $investigation); $form = $this->createForm(InvestigationType::class, $investigation);
$form->handleRequest($request); $form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) { if ($form->isSubmitted() && $form->isValid())
{
$investigation = $form->getData(); $investigation = $form->getData();
$this->em->persist($investigation); $this->em->persist($investigation);
$this->em->flush(); $this->em->flush();
$this->addFlash('success', $this->translator->trans('alert_sucess_add', [], 'investigation'));
} }
return $this->render('investigation/add-index.html.twig', [ return $this->render('investigation/add-index.html.twig', [
@@ -133,6 +144,8 @@ final class InvestigationController extends AbstractController
$this->stateRepository->addState($investigation, 2, 1); $this->stateRepository->addState($investigation, 2, 1);
$this->addFlash('success', $this->translator->trans('alert_sucess_send_validation', [], 'investigation'));
return $this->redirectToRoute('app_investigation_index'); return $this->redirectToRoute('app_investigation_index');
} }
@@ -153,8 +166,11 @@ final class InvestigationController extends AbstractController
{ {
$investigations = $this->investigationRepository->findBy(['last_state' => 21], ["id" => 'DESC']); $investigations = $this->investigationRepository->findBy(['last_state' => 21], ["id" => 'DESC']);
$id = $request->request->get('id'); $this->addFlash('success', $this->translator->trans('alert_sucess', array(), 'active'));
$id = $request->query->get('id');
if ($id) { if ($id) {
$investigation = $this->investigationRepository->find($id); $investigation = $this->investigationRepository->find($id);
$investigation->setLastState(20); $investigation->setLastState(20);
@@ -162,6 +178,7 @@ final class InvestigationController extends AbstractController
$this->em->flush(); $this->em->flush();
$this->stateRepository->addState($investigation, 2, 0); $this->stateRepository->addState($investigation, 2, 0);
} }
return $this->render('investigation/admin-active.html.twig', [ return $this->render('investigation/admin-active.html.twig', [

View File

@@ -180,6 +180,11 @@ class User implements UserInterface, PasswordAuthenticatedUserInterface
return $this->lastLogin; return $this->lastLogin;
} }
public function getLastLoginFormat($format): string
{
return $this->lastLogin->format($format);
}
public function setLastLogin(\DateTimeInterface $lastLogin): self public function setLastLogin(\DateTimeInterface $lastLogin): self
{ {
$this->lastLogin = $lastLogin; $this->lastLogin = $lastLogin;

View File

@@ -0,0 +1,10 @@
{% for label, messages in app.flashes %}
{% for message in messages %}
<div class="alert alert-{{ label }}" role="alert" style="margin-bottom: 30px;">
<button type="button" class="close" data-dismiss="alert" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
{{ message| raw }}
</div>
{% endfor %}
{% endfor %}

View File

@@ -46,6 +46,7 @@
</table> </table>
</div> </div>
<hr class="mg-y-30">
<div class="az-content-label mg-t-15">en cours de divusion</div> <div class="az-content-label mg-t-15">en cours de divusion</div>
<p class="mg-b-20">Liste des enquêtes en cours de divusion</p> <p class="mg-b-20">Liste des enquêtes en cours de divusion</p>
@@ -66,7 +67,7 @@
<tbody> <tbody>
{% for broadcast in broadcasts %} {% for broadcast in broadcasts %}
<tr> <tr>
<td>{{ broadcast.getId() }}</td> <td>{{ broadcast.getInvestigation().getId() }}</td>
<td>{{ broadcast.getInvestigation().getNameEn() }}</td> <td>{{ broadcast.getInvestigation().getNameEn() }}</td>
<td>{{ broadcast.getDateCreate()|date("d/m/Y") }}</td> <td>{{ broadcast.getDateCreate()|date("d/m/Y") }}</td>
<td>{{ broadcast.getDateEnd()|date("d/m/Y") }}</td> <td>{{ broadcast.getDateEnd()|date("d/m/Y") }}</td>

View File

@@ -20,11 +20,7 @@
<div class="az-content-label mg-b-5"></div> <div class="az-content-label mg-b-5"></div>
<p class="mg-b-20">Liste des -----</p> <p class="mg-b-20">Liste des -----</p>
{% include 'basic/alert.html.twig' %}
</div> </div>

View File

@@ -1,11 +1,9 @@
{% extends 'base.html.twig' %} {% extends 'base.html.twig' %}
{% block title %}Page d'accueil{% endblock %} {% trans_default_domain 'home' %}
{% block title %} {{ 'home'|trans }} {% endblock %}
{% set navbarTitle = "Page d'accueil" %}
{#
{% set navbarPages = [{'page':"Page d'accueil", 'url':null }] %}
#}
{% block content %} {% block content %}
<!-- az-header --> <!-- az-header -->
@@ -14,641 +12,25 @@
<div class="az-content-body"> <div class="az-content-body">
<div class="az-dashboard-one-title"> <div class="az-dashboard-one-title">
<div> <div>
<h2 class="az-dashboard-title">Hi, welcome back!</h2> <h2 class="az-dashboard-title">{{ 'welcome'|trans }}</h2>
<p class="az-dashboard-text">Your web analytics dashboard template.</p> <p class="az-dashboard-text">{{ app.user.getPseudo() }}</p>
</div> </div>
<div class="az-content-header-right"> <div class="az-content-header-right">
<div class="media"> <div class="media">
<div class="media-body"> <div class="media-body">
<label>Start Date</label> <label>{{ 'last_login'|trans }}</label>
<h6>Oct 10, 2018</h6> <h6>{{ app.user.getLastLoginFormat('d/m/Y H:i') }}</h6>
</div> </div>
<!-- media-body --> <!-- media-body -->
</div> </div>
<!-- media -->
<div class="media">
<div class="media-body">
<label>End Date</label>
<h6>Oct 23, 2018</h6>
</div>
<!-- media-body -->
</div>
<!-- media -->
<div class="media">
<div class="media-body">
<label>Event Category</label>
<h6>All Categories</h6>
</div>
<!-- media-body -->
</div>
<!-- media -->
<a href="" class="btn btn-purple">Export</a>
</div> </div>
</div> </div>
<!-- az-dashboard-one-title -->
<div class="az-dashboard-nav">
<nav class="nav">
<a class="nav-link active" data-toggle="tab" href="#">Overview</a>
<a class="nav-link" data-toggle="tab" href="#">Audiences</a>
<a class="nav-link" data-toggle="tab" href="#">Demographics</a>
<a class="nav-link" data-toggle="tab" href="#">More</a>
</nav>
<nav class="nav">
<a class="nav-link" href="#"><i class="far fa-save"></i> Save Report</a>
<a class="nav-link" href="#"><i class="far fa-file-pdf"></i> Export to PDF</a>
<a class="nav-link" href="#"><i class="far fa-envelope"></i>Send to Email</a>
<a class="nav-link" href="#"><i class="fas fa-ellipsis-h"></i></a>
</nav>
</div>
<div class="row row-sm mg-b-20">
<div class="col-lg-7 ht-lg-100p">
<div class="card card-dashboard-one">
<div class="card-header">
<div>
<h6 class="card-title">Website Audience Metrics</h6>
<p class="card-text">Audience to which the users belonged while on the current date range.</p>
</div>
<div class="btn-group">
<button class="btn active">Day</button>
<button class="btn">Week</button>
<button class="btn">Month</button>
</div>
</div>
<!-- card-header -->
<div class="card-body">
<div class="card-body-top">
<div>
<label class="mg-b-0">Users</label>
<h2>13,956</h2>
</div>
<div>
<label class="mg-b-0">Bounce Rate</label>
<h2>33.50%</h2>
</div>
<div>
<label class="mg-b-0">Page Views</label>
<h2>83,123</h2>
</div>
<div>
<label class="mg-b-0">Sessions</label>
<h2>16,869</h2>
</div>
</div>
<!-- card-body-top -->
<div class="flot-chart-wrapper">
<div id="flotChart" class="flot-chart"></div>
</div>
<!-- flot-chart-wrapper -->
</div>
<!-- card-body -->
</div>
<!-- card -->
</div>
<!-- col -->
<div class="col-lg-5 mg-t-20 mg-lg-t-0">
<div class="row row-sm">
<div class="col-sm-6">
<div class="card card-dashboard-two">
<div class="card-header">
<h6>33.50% <i class="icon ion-md-trending-up tx-success"></i> <small>18.02%</small></h6>
<p>Bounce Rate</p>
</div>
<!-- card-header -->
<div class="card-body">
<div class="chart-wrapper">
<div id="flotChart1" class="flot-chart"></div>
</div>
<!-- chart-wrapper -->
</div>
<!-- card-body -->
</div>
<!-- card -->
</div>
<!-- col -->
<div class="col-sm-6 mg-t-20 mg-sm-t-0">
<div class="card card-dashboard-two">
<div class="card-header">
<h6>86k <i class="icon ion-md-trending-down tx-danger"></i> <small>0.86%</small></h6>
<p>Total Users</p>
</div>
<!-- card-header -->
<div class="card-body">
<div class="chart-wrapper">
<div id="flotChart2" class="flot-chart"></div>
</div>
<!-- chart-wrapper -->
</div>
<!-- card-body -->
</div>
<!-- card -->
</div>
<!-- col -->
<div class="col-sm-12 mg-t-20">
<div class="card card-dashboard-three">
<div class="card-header">
<p>All Sessions</p>
<h6>16,869 <small class="tx-success"><i class="icon ion-md-arrow-up"></i> 2.87%</small></h6>
<small>The total number of sessions within the date range. It is the period time a user is actively engaged with your website, page or app, etc.</small>
</div>
<!-- card-header -->
<div class="card-body">
<div class="chart">
<canvas id="chartBar5"></canvas>
</div>
</div>
</div>
</div>
</div>
<!-- row -->
</div>
<!--col -->
</div>
<!-- row -->
<div class="row row-sm mg-b-20">
<div class="col-lg-4">
<div class="card card-dashboard-pageviews">
<div class="card-header">
<h6 class="card-title">Page Views by Page Title</h6>
<p class="card-text">This report is based on 100% of sessions.</p>
</div>
<!-- card-header -->
<div class="card-body">
<div class="az-list-item">
<div>
<h6>Admin Home</h6>
<span>/demo/admin/{{ path('app_demo_index') }}</span>
</div>
<div>
<h6 class="tx-primary">7,755</h6>
<span>31.74% (-100.00%)</span>
</div>
</div>
<!-- list-group-item -->
<div class="az-list-item">
<div>
<h6>Form Elements</h6>
<span>/demo/admin/forms.html</span>
</div>
<div>
<h6 class="tx-primary">5,215</h6>
<span>28.53% (-100.00%)</span>
</div>
</div>
<!-- list-group-item -->
<div class="az-list-item">
<div>
<h6>Utilities</h6>
<span>/demo/admin/util.html</span>
</div>
<div>
<h6 class="tx-primary">4,848</h6>
<span>25.35% (-100.00%)</span>
</div>
</div>
<!-- list-group-item -->
<div class="az-list-item">
<div>
<h6>Form Validation</h6>
<span>/demo/admin/validation.html</span>
</div>
<div>
<h6 class="tx-primary">3,275</h6>
<span>23.17% (-100.00%)</span>
</div>
</div>
<!-- list-group-item -->
<div class="az-list-item">
<div>
<h6>Modals</h6>
<span>/demo/admin/modals.html</span>
</div>
<div>
<h6 class="tx-primary">3,003</h6>
<span>22.21% (-100.00%)</span>
</div>
</div>
<!-- list-group-item -->
</div>
<!-- card-body -->
</div>
<!-- card -->
</div>
<!-- col -->
<div class="col-lg-8 mg-t-20 mg-lg-t-0">
<div class="card card-dashboard-four">
<div class="card-header">
<h6 class="card-title">Sessions by Channel</h6>
</div>
<!-- card-header -->
<div class="card-body row">
<div class="col-md-6 d-flex align-items-center">
<div class="chart">
<canvas id="chartDonut"></canvas>
</div>
</div>
<!-- col -->
<div class="col-md-6 col-lg-5 mg-lg-l-auto mg-t-20 mg-md-t-0">
<div class="az-traffic-detail-item">
<div>
<span>Organic Search</span>
<span>1,320 <span>(25%)</span></span>
</div>
<div class="progress">
<div class="progress-bar bg-purple wd-25p" role="progressbar" aria-valuenow="25" aria-valuemin="0" aria-valuemax="100"></div>
</div>
<!-- progress -->
</div>
<div class="az-traffic-detail-item">
<div>
<span>Email</span>
<span>987 <span>(20%)</span></span>
</div>
<div class="progress">
<div class="progress-bar bg-primary wd-20p" role="progressbar" aria-valuenow="20" aria-valuemin="0" aria-valuemax="100"></div>
</div>
<!-- progress -->
</div>
<div class="az-traffic-detail-item">
<div>
<span>Referral</span>
<span>2,010 <span>(30%)</span></span>
</div>
<div class="progress">
<div class="progress-bar bg-info wd-30p" role="progressbar" aria-valuenow="30" aria-valuemin="0" aria-valuemax="100"></div>
</div>
<!-- progress -->
</div>
<div class="az-traffic-detail-item">
<div>
<span>Social</span>
<span>654 <span>(15%)</span></span>
</div>
<div class="progress">
<div class="progress-bar bg-teal wd-15p" role="progressbar" aria-valuenow="15" aria-valuemin="0" aria-valuemax="100"></div>
</div>
<!-- progress -->
</div>
<div class="az-traffic-detail-item">
<div>
<span>Other</span>
<span>400 <span>(10%)</span></span>
</div>
<div class="progress">
<div class="progress-bar bg-gray-500 wd-10p" role="progressbar" aria-valuenow="10" aria-valuemin="0" aria-valuemax="100"></div>
</div>
<!-- progress -->
</div>
</div>
<!-- col -->
</div>
<!-- card-body -->
</div>
<!-- card-dashboard-four -->
</div>
<!-- col -->
</div>
<!-- row -->
<div class="row row-sm mg-b-20 mg-lg-b-0">
<div class="col-lg-5 col-xl-4">
<div class="row row-sm">
<div class="col-md-6 col-lg-12 mg-b-20 mg-md-b-0 mg-lg-b-20">
<div class="card card-dashboard-five">
<div class="card-header">
<h6 class="card-title">Acquisition</h6>
<span class="card-text">Tells you where your visitors originated from, such as search engines, social networks or website referrals.</span>
</div>
<!-- card-header -->
<div class="card-body row row-sm">
<div class="col-6 d-sm-flex align-items-center">
<div class="card-chart bg-primary">
<span class="peity-bar" data-peity='{"fill": ["#fff"], "width": 20, "height": 20 }'>6,4,7,5,7</span>
</div>
<div>
<label>Bounce Rate</label>
<h4>33.50%</h4>
</div>
</div>
<!-- col -->
<div class="col-6 d-sm-flex align-items-center">
<div class="card-chart bg-purple">
<span class="peity-bar" data-peity='{"fill": ["#fff"], "width": 21, "height": 20 }'>7,4,5,7,2</span>
</div>
<div>
<label>Sessions</label>
<h4>9,065</h4>
</div>
</div>
<!-- col -->
</div>
<!-- card-body -->
</div>
<!-- card-dashboard-five -->
</div>
<!-- col -->
<div class="col-md-6 col-lg-12">
<div class="card card-dashboard-five">
<div class="card-header">
<h6 class="card-title">Sessions</h6>
<span class="card-text"> A session is the period time a user is actively engaged with your website, app, etc.</span>
</div>
<!-- card-header -->
<div class="card-body row row-sm">
<div class="col-6 d-sm-flex align-items-center">
<div class="mg-b-10 mg-sm-b-0 mg-sm-r-10">
<span class="peity-donut" data-peity='{ "fill": ["#007bff", "#cad0e8"], "innerRadius": 14, "radius": 20 }'>4/7</span>
</div>
<div>
<label>% New Sessions</label>
<h4>26.80%</h4>
</div>
</div>
<!-- col -->
<div class="col-6 d-sm-flex align-items-center">
<div class="mg-b-10 mg-sm-b-0 mg-sm-r-10">
<span class="peity-donut" data-peity='{ "fill": ["#00cccc", "#cad0e8"], "innerRadius": 14, "radius": 20 }'>2/7</span>
</div>
<div>
<label>Pages/Session</label>
<h4>1,005</h4>
</div>
</div>
<!-- col -->
</div>
<!-- card-body -->
</div>
<!-- card-dashboard-five -->
</div>
<!-- col -->
</div>
<!-- row -->
</div>
<!-- col-lg-3 -->
<div class="col-lg-7 col-xl-8 mg-t-20 mg-lg-t-0">
<div class="card card-table-one">
<h6 class="card-title">What pages do your users visit</h6>
<p class="az-content-text mg-b-20">Part of this date range occurs before the new users metric had been calculated, so the old users metric is displayed.</p>
<div class="table-responsive">
<table class="table">
<thead>
<tr>
<th class="wd-5p">&nbsp;</th>
<th class="wd-45p">Country</th>
<th>Entrances</th>
<th>Bounce Rate</th>
<th>Exits</th>
</tr>
</thead>
<tbody>
<tr>
<td><i class="flag-icon flag-icon-us flag-icon-squared"></i></td>
<td><strong>United States</strong></td>
<td><strong>134</strong> (1.51%)</td>
<td>33.58%</td>
<td>15.47%</td>
</tr>
<tr>
<td><i class="flag-icon flag-icon-gb flag-icon-squared"></i></td>
<td><strong>United Kingdom</strong></td>
<td><strong>290</strong> (3.30%)</td>
<td>9.22%</td>
<td>7.99%</td>
</tr>
<tr>
<td><i class="flag-icon flag-icon-in flag-icon-squared"></i></td>
<td><strong>India</strong></td>
<td><strong>250</strong> (3.00%)</td>
<td>20.75%</td>
<td>2.40%</td>
</tr>
<tr>
<td><i class="flag-icon flag-icon-ca flag-icon-squared"></i></td>
<td><strong>Canada</strong></td>
<td><strong>216</strong> (2.79%)</td>
<td>32.07%</td>
<td>15.09%</td>
</tr>
<tr>
<td><i class="flag-icon flag-icon-fr flag-icon-squared"></i></td>
<td><strong>France</strong></td>
<td><strong>216</strong> (2.79%)</td>
<td>32.07%</td>
<td>15.09%</td>
</tr>
<tr>
<td><i class="flag-icon flag-icon-ph flag-icon-squared"></i></td>
<td><strong>Philippines</strong></td>
<td><strong>197</strong> (2.12%)</td>
<td>32.07%</td>
<td>15.09%</td>
</tr>
</tbody>
</table>
</div>
<!-- table-responsive -->
</div>
<!-- card -->
</div>
<!-- col-lg -->
</div>
<!-- row --> <!-- row -->
</div> </div>
<!-- az-content-body --> <!-- az-content-body -->
</div> </div>
</div> </div>
{% block javascripts %} {% block javascripts %}
<script src="{{ asset('assets/js/chart.flot.sampledata.js') }}"></script>
<script src="{{ asset('assets/js/dashboard.sampledata.js') }}"></script> {% endblock %}
<script src="{{ asset('assets/lib/chart.js/Chart.bundle.min.js') }}"></script>
<script type="text/javascript">
$(function(){
'use strict'
var plot = $.plot('#flotChart', [{
data: flotSampleData3,
color: '#007bff',
lines: {
fillColor: { colors: [{ opacity: 0 }, { opacity: 0.2 }]}
}
},{
data: flotSampleData4,
color: '#560bd0',
lines: {
fillColor: { colors: [{ opacity: 0 }, { opacity: 0.2 }]}
}
}], {
series: {
shadowSize: 0,
lines: {
show: true,
lineWidth: 2,
fill: true
}
},
grid: {
borderWidth: 0,
labelMargin: 8
},
yaxis: {
show: true,
min: 0,
max: 100,
ticks: [[0,''],[20,'20K'],[40,'40K'],[60,'60K'],[80,'80K']],
tickColor: '#eee'
},
xaxis: {
show: true,
color: '#fff',
ticks: [[25,'OCT 21'],[75,'OCT 22'],[100,'OCT 23'],[125,'OCT 24']],
}
});
$.plot('#flotChart1', [{
data: dashData2,
color: '#00cccc'
}], {
series: {
shadowSize: 0,
lines: {
show: true,
lineWidth: 2,
fill: true,
fillColor: { colors: [ { opacity: 0.2 }, { opacity: 0.2 } ] }
}
},
grid: {
borderWidth: 0,
labelMargin: 0
},
yaxis: {
show: false,
min: 0,
max: 35
},
xaxis: {
show: false,
max: 50
}
});
$.plot('#flotChart2', [{
data: dashData2,
color: '#007bff'
}], {
series: {
shadowSize: 0,
bars: {
show: true,
lineWidth: 0,
fill: 1,
barWidth: .5
}
},
grid: {
borderWidth: 0,
labelMargin: 0
},
yaxis: {
show: false,
min: 0,
max: 35
},
xaxis: {
show: false,
max: 20
}
});
//-------------------------------------------------------------//
// Line chart
$('.peity-line').peity('line');
// Bar charts
$('.peity-bar').peity('bar');
// Bar charts
$('.peity-donut').peity('donut');
var ctx5 = document.getElementById('chartBar5').getContext('2d');
new Chart(ctx5, {
type: 'bar',
data: {
labels: [0,1,2,3,4,5,6,7],
datasets: [{
data: [2, 4, 10, 20, 45, 40, 35, 18],
backgroundColor: '#560bd0'
}, {
data: [3, 6, 15, 35, 50, 45, 35, 25],
backgroundColor: '#cad0e8'
}]
},
options: {
maintainAspectRatio: false,
tooltips: {
enabled: false
},
legend: {
display: false,
labels: {
display: false
}
},
scales: {
yAxes: [{
display: false,
ticks: {
beginAtZero:true,
fontSize: 11,
max: 80
}
}],
xAxes: [{
barPercentage: 0.6,
gridLines: {
color: 'rgba(0,0,0,0.08)'
},
ticks: {
beginAtZero:true,
fontSize: 11,
display: false
}
}]
}
}
});
// Donut Chart
var datapie = {
labels: ['Search', 'Email', 'Referral', 'Social', 'Other'],
datasets: [{
data: [25,20,30,15,10],
backgroundColor: ['#6f42c1', '#007bff','#17a2b8','#00cccc','#adb2bd']
}]
};
var optionpie = {
maintainAspectRatio: false,
responsive: true,
legend: {
display: false,
},
animation: {
animateScale: true,
animateRotate: true
}
};
// For a doughnut chart
var ctxpie= document.getElementById('chartDonut');
var myPieChart6 = new Chart(ctxpie, {
type: 'doughnut',
data: datapie,
options: optionpie
});
});
</script>
{% endblock %}
{% endblock %} {% endblock %}

View File

@@ -1,75 +1,70 @@
{% extends 'base.html.twig' %} {% extends 'base.html.twig' %}
{% block title %}Enquête{% endblock %} {% block title %}Admin Validation{% endblock %}
{% set navbarTitle = "Enquête" %}
{% set navbarPages = [{'page':"Gestion", 'url':null }] %}
{% block content %} {% block content %}
<!-- Page Content --> <!-- az-header -->
<div id="content-page" class="content-page"> <div class="az-content">
<div class="container-fluid"> <div class="container">
<div class="iq-card"> <div class="az-content-body d-flex flex-column">
<div class="iq-card-header d-flex justify-content-between">
<div class="iq-header-title">
<h4 class="card-title">Liste des enquêtes à activer</h4> <div class="az-content-breadcrumb">
</div> <span>Admin</span>
<span>Enquête</span>
</div> </div>
<div class="iq-card-body"> <h2 class="az-content-title">Validation</h2>
<div class="table-responsive">
<table id="user-list-table" class="table table-striped table-bordered" role="grid" aria-describedby="user-list-page-info">
<thead> {% include 'basic/alert.html.twig' %}
<tr>
<th>Id</th> <p class="mg-b-20">Liste des Enquête a valider par l'admin</p>
<th>Name</th>
<th>Date Create</th>
<th>Questions</th>
<th>Status</th>
<th>Action</th>
</tr>
</thead>
<tbody>
{% for investigation in investigations %}
<tr>
<td>{{ investigation.getId() }}</td>
<td>{{ investigation.getNameEn() }}</td>
<td>{{ investigation.getDateCreate()|date("d/m/Y H:i") }}</td>
<td>{{ investigation.getNbrQuestions() }}</td>
<td>
{% if investigation.getLastState() == 10 %}
<div class="badge badge-info">Création Terminer </div>
{% elseif investigation.getLastState() == 11 %}
<div class="badge badge-light">Encour de Création</div>
{% elseif investigation.getLastState() == 12 %}
<div class="badge badge-dark">Dupliquer</div>
{% elseif investigation.getLastState() == 20 %}
<div class="badge badge-success">Demande Valider</div>
{% elseif investigation.getLastState() == 21 %}
<div class="badge badge-warning text-white">Demande Envoyer</div>
{% elseif investigation.getLastState() == 22 %}
<div class="badge badge-danger text-white">Demande Rejeter</div>
{% else %}
--
{% endif %}
</td>
<td>
<a href="{{ path('app_investigation_admin_active', {id:investigation.getId()}) }}" class="">activer</a>
</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
</div>
</div>
<div class="table-responsive">
<table class="table mg-b-0">
<thead>
<tr>
<th>Id</th>
<th>Name</th>
<th>Date Create</th>
<th>Questions</th>
<th>Afficher</th>
<th>Action</th>
</tr>
</thead>
<tbody>
{% for investigation in investigations %}
<tr>
<td>{{ investigation.getId() }}</td>
<td>{{ investigation.getNameEn() }}</td>
<td>{{ investigation.getDateCreate()|date("d/m/Y H:i") }}</td>
<td>{{ investigation.getNbrQuestions() }}</td>
<td>
<a href=""class="badge badge-warning text-white" >
Afficher l'enquête
</a>
</td>
<td>
<a href="{{ path('app_investigation_admin_active', {id:investigation.getId()}) }}" class="">Activer</a>
<a href="#" class="">Réfuser</a>
</td>
</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
</div>
</div> </div>
</div> </div>
<!-- Wrapper END -->
{% endblock %} {% endblock %}

View File

@@ -16,6 +16,8 @@
</div> </div>
<h2 class="az-content-title">Enquête</h2> <h2 class="az-content-title">Enquête</h2>
{% include 'basic/alert.html.twig' %}
<div class="az-content-label mg-b-5"></div> <div class="az-content-label mg-b-5"></div>
<p class="mg-b-20">Liste des enquêtes prêt a envoyer à ladministration pour valider</p> <p class="mg-b-20">Liste des enquêtes prêt a envoyer à ladministration pour valider</p>
@@ -23,9 +25,9 @@
<table class="table mg-b-0"> <table class="table mg-b-0">
<thead> <thead>
<tr> <tr>
<th>ID</th> <th>ID</th>
<th>Name</th> <th>Name</th>
<th>Demande de validation</th> <th>Demande de validation</th>
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
@@ -84,10 +86,25 @@
</td> </td>
<td> <td>
<div class="btn-icon-list"> <div class="btn-icon-list">
<a class="btn btn-indigo btn-icon" title="duplicate" href="{{ path('app_investigation_duplicate', {id:investigation.getId()}) }}"><i class="ion ion-ios-git-branch"></i></a> {% if investigation.getLastState() != 12 %}
<a class="btn btn-indigo btn-icon" title="Edit" href="{{ path('app_investigation_edit', {id:investigation.getId()}) }}"><i class="typcn typcn-edit"></i></a> <a class="btn btn-dark btn-icon" title="duplicate" href="{{ path('app_investigation_duplicate', {id:investigation.getId()}) }}"><i class="ion ion-ios-git-branch"></i></a>
{% endif %}
{% if investigation.getLastState() not in [20, 21] %}
<a class="btn btn-indigo btn-icon" title="Edit" href="{{ path('app_investigation_edit', {id:investigation.getId()}) }}"><i class="typcn typcn-edit"></i></a>
{% endif %}
<a class="btn btn-indigo btn-icon" title="Afficher" href="{{ path('app_investigation_show', {id:investigation.getId()}) }}"><i class="ion ion-ios-tv"></i></a> <a class="btn btn-indigo btn-icon" title="Afficher" href="{{ path('app_investigation_show', {id:investigation.getId()}) }}"><i class="ion ion-ios-tv"></i></a>
<a class="btn btn-danger btn-icon" title="Delete" href="{{ path('app_investigation_delete', {id:investigation.getId()}) }}"><i class="ion ion-md-trash"></i></a>
{% if investigation.getLastState() in [10, 11, 12] %}
<button type="button"
class="btn btn-danger btn-icon"
data-toggle="modal"
data-target="#deleteModal"
data-url="{{ path('app_investigation_delete', {id:investigation.getId()}) }}">
<i class="ion ion-md-trash"></i>
</button>
{% endif %}
</div> </div>
</td> </td>
</tr> </tr>
@@ -102,4 +119,43 @@
</div> </div>
<div class="modal fade" id="deleteModal" tabindex="-1" role="dialog" aria-labelledby="deleteModalLabel" aria-hidden="true">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="deleteModalLabel">Confirmation de suppression</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body">
Êtes-vous sûr de vouloir supprimer cet élément ? cette action est irréversible.
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">Annuler</button>
{# Le formulaire de suppression réel #}
<form id="delete-form" method="post" action="">
<input type="hidden" name="_token" value="{{ csrf_token('delete') }}">
<button class="btn btn-danger">Confirmer la suppression</button>
</form>
</div>
</div>
</div>
</div>
{% block javascripts %}
<script type="text/javascript">
$('#deleteModal').on('show.bs.modal', function (event) {
var button = $(event.relatedTarget); // Bouton qui a déclenché la modal
var url = button.data('url'); // Extraction de l'URL via l'attribut data-url
console.log(url);
var modal = $(this);
modal.find('#delete-form').attr('action', url);
});
</script>
{% endblock %}
{% endblock %} {% endblock %}

View File

@@ -0,0 +1,3 @@
home: "الصفحة الرئيسية"
welcome: "مرحبًا، أهلاً بعودتك!"
last_login: "تاريخ آخر اتصال"

View File

@@ -0,0 +1,3 @@
home: "Home"
welcome: "Hi, welcome back!"
last_login: "Last login date"

View File

@@ -0,0 +1,3 @@
home: "Accueil"
welcome: "Bonjour, bienvenue à nouveau !"
last_login: "Date dernière connection"

View File

@@ -0,0 +1,3 @@
alert_sucess_add: "النجاح"
alert_sucess_edit: "النجاح"
alert_sucess_send_validation: "النجاح"

View File

@@ -0,0 +1,3 @@
alert_sucess_add: "sucess"
alert_sucess_edit: ""
alert_sucess_send_validation: "sucess"

View File

@@ -0,0 +1,3 @@
alert_sucess_add: "succès"
alert_sucess_edit: ""
alert_sucess_send_validation: "succès "

View File

@@ -1,10 +1,11 @@
home: "" home: "الصفحة الرئيسية"
investigation_create: "" investigation: "التحقيق"
investigation_liste: "" investigation_create: "إنشاء"
rroadcast: "" investigation_liste: "القائمة"
rapport: "" broadcast: "البث"
rapport: "تقرير"
profile: "" profile: "الملف الشخصي"
profile_edit: "" profile_edit: "تحرير الملف الشخصي"
account_settings: "" account_settings: "إعدادات الحساب"
sign_out: "" sign_out: "تسجيل الخروج"

View File

@@ -7,5 +7,5 @@ rapport: "Rapport"
profile: "Profile" profile: "Profile"
profile_edit: "Modifier mon profile" profile_edit: "Modifier mon profile"
account_settings: "Account Settings" account_settings: "Paramètres du compte"
sign_out: "Sign Out" sign_out: "Se déconnecter"