first commit

This commit is contained in:
maher
2025-10-30 13:13:41 +01:00
commit ecd64aad53
404 changed files with 82238 additions and 0 deletions

View File

@@ -0,0 +1,183 @@
{% extends 'base_backend_admin.html.twig' %}
{% block title %} Service {% endblock %}
{% block content %}
<!-- Page Heading -->
<div class="d-sm-flex align-items-center justify-content-between mb-4">
<h1 class="h3 mb-0 text-gray-800">Service</h1>
<ol class="breadcrumb float-sm-right">
<li class="breadcrumb-item">Service</li>
<li class="breadcrumb-item">Ajouter</li>
</ol>
</div>
<!-- Begin Page Content -->
<div class="container-fluid">
{% include 'backend_admin/basic/notice.html.twig' %}
<!-- DataTales Example -->
<div class="card shadow mb-4">
<div class="card-header py-3">
<h6 class="m-0 font-weight-bold text-info">Ajouter un service</h6>
</div>
<div class="card-body">
{{ form_start(form) }}
<div class="row g-3">
{{ form_errors(form) }}
{{ form_row(form._token) }}
<div class="col-8 my-3">
{{ form_label(form.titre, 'Titre *', {'attr': {'class': 'form-label'}}) }}
<div class="input-group">
<span class="input-group-text"><i class="fa-solid fa-book"></i></span>
{{ form_widget(form.titre, {'attr': {'class': 'form-control'}}) }}
<div class="invalid-feedback">
{{ form_errors(form.titre) }}
</div>
</div>
</div>
<div class="col-4 my-3">
{{ form_label(form.categorie, 'Catégorie', {'attr': {'class': 'form-label'}}) }}
<div class="input-group">
<span class="input-group-text"><i class="fa-solid fa-bars"></i></span>
{{ form_widget(form.categorie, {'attr': {'class': 'form-control'}}) }}
<div class="invalid-feedback">
{{ form_errors(form.categorie) }}
</div>
</div>
</div>
<div class="col-6 my-3">
{{ form_label(form.adress, 'Adresse', {'attr': {'class': 'form-label'}}) }}
<div class="input-group">
<span class="input-group-text"><i class="fa-solid fa-percent"></i></span>
{{ form_widget(form.adress, {'attr': {'class': 'form-control'}}) }}
<div class="invalid-feedback">
{{ form_errors(form.adress) }}
</div>
</div>
</div>
<div class="col-5 offset-1">
{{ form_label(form.marque, 'Marque', {'attr': {'class': 'form-label'}}) }}
<div class="input-group">
<span class="input-group-text"><i class="fa-solid fa-money-bill-wave"></i></span>
{{ form_widget(form.marque, {'attr': {'class': 'form-control'}}) }}
<div class="invalid-feedback">
{{ form_errors(form.marque) }}
</div>
</div>
</div>
<div class="col-5 my-3">
{{ form_label(form.prix_promo, 'Prix promo *', {'attr': {'class': 'form-label'}}) }}
<div class="input-group">
<span class="input-group-text"><i class="fa-solid fa-money-bill-wave"></i></span>
{{ form_widget(form.prix_promo, {'attr': {'class': 'form-control'}}) }}
<div class="invalid-feedback">
{{ form_errors(form.prix_promo) }}
</div>
</div>
</div>
<div class="col-5 offset-1">
{{ form_label(form.prix_marche, 'Prix du marché', {'attr': {'class': 'form-label'}}) }}
<div class="input-group">
<span class="input-group-text"><i class="fa-solid fa-money-bill-1"></i></span>
{{ form_widget(form.prix_marche, {'attr': {'class': 'form-control'}}) }}
<div class="invalid-feedback">
{{ form_errors(form.prix_marche) }}
</div>
</div>
</div>
<div class="row my-3">
<div class="col-8">
{{ form_label(form.societe, 'Société *', {'attr': {'class': 'form-label'}}) }}
<div class="input-group">
<span class="input-group-text"><i class="fa-solid fa-building"></i></span>
{{ form_widget(form.societe, {'attr': {'class': 'form-control select-filter select2bs4 select-filter-speaker'}}) }}
<div class="invalid-feedback">
{{ form_errors(form.societe) }}
</div>
</div>
</div>
<div class="col-3">
{{ form_label(form.duree, 'Durée du service (en minute)', {'attr': {'class': 'form-label'}}) }}
<div class="input-group">
<span class="input-group-text"><i class="fa-solid fa-percent"></i></span>
{{ form_widget(form.duree, {'attr': {'class': 'form-control'}}) }}
<div class="invalid-feedback">
{{ form_errors(form.duree) }}
</div>
</div>
</div>
</div>
<div class="row my-3">
<div class="col-3">
{{ form_label(form.limit_type, 'Limitation par', {'attr': {'class': 'form-check-input'}}) }}
{% for key,child in form.limit_type %}
<div class="form-check">
{% if key == 0 %}
{{ form_widget(child, {'attr': {'class': 'form-check-input', 'checked':''}} ) }}
{% else %}
{{ form_widget(child, {'attr': {'class': 'form-check-input'}} ) }}
{% endif %}
{{ form_label(child) }}
</div>
{% endfor %}
</div>
<div class="col-3" id="service-limita-date">
{{ form_label(form.limit_date, 'Limitation Par Date', {'attr': {'class': 'form-label'}}) }}
<div class="input-group">
<span class="input-group-text"><i class="fa-solid fa-percent"></i></span>
{{ form_widget(form.limit_date, {'attr': {'class': 'form-control'}}) }}
<div class="invalid-feedback">
{{ form_errors(form.limit_date) }}
</div>
</div>
</div>
</div>
<div class="col-12 my-3">
{{ form_label(form.description, 'Déscription *', {'attr': {'class': 'form-label'}}) }}
{{ form_widget(form.description, {'attr': {'class': 'form-control'}}) }}
<div class="invalid-feedback">{{ form_errors(form.description) }}</div>
</div>
<hr class="my-4">
{{ form_widget(form.save, {'label': "Enregister", 'attr': {'class': 'w-90 btn btn-primary btn-lg'}}) }}
</div>
{{ form_end(form) }}
</div>
</div>
</div>
{% endblock %}
{% block javascripts %}
{{ parent() }}
{{ encore_entry_script_tags('app_backend_article_service') }}
{% endblock %}

View File

@@ -0,0 +1,177 @@
{% extends 'base_backend_admin.html.twig' %}
{% block title %} Service {% endblock %}
{% block content %}
<!-- Page Heading -->
<div class="d-sm-flex align-items-center justify-content-between mb-4">
<h1 class="h3 mb-0 text-gray-800">Service</h1>
<ol class="breadcrumb float-sm-right">
<li class="breadcrumb-item">Service</li>
<li class="breadcrumb-item">Détail</li>
</ol>
</div>
<!-- Begin Page Content -->
<div class="container-fluid">
{% include 'backend_admin/basic/notice.html.twig' %}
<!-- DataTales Example -->
<div class="card shadow mb-4">
<div class="card-header py-3">
<h6 class="m-0 font-weight-bold text-info">Détail service</h6>
</div>
<div class="card-body">
{{ form_start(form) }}
<div class="row g-3">
{{ form_errors(form) }}
{{ form_row(form._token) }}
<div class="col-8 my-3">
{{ form_label(form.titre, 'Titre *', {'attr': {'class': 'form-label'}}) }}
<div class="input-group">
<span class="input-group-text"><i class="fa-solid fa-book"></i></span>
{{ form_widget(form.titre, {'attr': {'class': 'form-control'}}) }}
<div class="invalid-feedback">
{{ form_errors(form.titre) }}
</div>
</div>
</div>
<div class="col-4 my-3">
{{ form_label(form.categorie, 'Catégorie', {'attr': {'class': 'form-label'}}) }}
<div class="input-group">
<span class="input-group-text"><i class="fa-solid fa-bars"></i></span>
{{ form_widget(form.categorie, {'attr': {'class': 'form-control'}}) }}
<div class="invalid-feedback">
{{ form_errors(form.categorie) }}
</div>
</div>
</div>
<div class="col-6 my-3">
{{ form_label(form.adress, 'Adresse', {'attr': {'class': 'form-label'}}) }}
<div class="input-group">
<span class="input-group-text"><i class="fa-solid fa-percent"></i></span>
{{ form_widget(form.adress, {'attr': {'class': 'form-control'}}) }}
<div class="invalid-feedback">
{{ form_errors(form.adress) }}
</div>
</div>
</div>
<div class="col-5 offset-1">
{{ form_label(form.marque, 'Marque', {'attr': {'class': 'form-label'}}) }}
<div class="input-group">
<span class="input-group-text"><i class="fa-solid fa-money-bill-wave"></i></span>
{{ form_widget(form.marque, {'attr': {'class': 'form-control'}}) }}
<div class="invalid-feedback">
{{ form_errors(form.marque) }}
</div>
</div>
</div>
<div class="col-5 my-3">
{{ form_label(form.prix_promo, 'Prix promo *', {'attr': {'class': 'form-label'}}) }}
<div class="input-group">
<span class="input-group-text"><i class="fa-solid fa-money-bill-wave"></i></span>
{{ form_widget(form.prix_promo, {'attr': {'class': 'form-control'}}) }}
<div class="invalid-feedback">
{{ form_errors(form.prix_promo) }}
</div>
</div>
</div>
<div class="col-5 offset-1">
{{ form_label(form.prix_marche, 'Prix du marché', {'attr': {'class': 'form-label'}}) }}
<div class="input-group">
<span class="input-group-text"><i class="fa-solid fa-money-bill-1"></i></span>
{{ form_widget(form.prix_marche, {'attr': {'class': 'form-control'}}) }}
<div class="invalid-feedback">
{{ form_errors(form.prix_marche) }}
</div>
</div>
</div>
<div class="row my-3">
<div class="col-8">
{{ form_label(form.societe, 'Société *', {'attr': {'class': 'form-label'}}) }}
<div class="input-group">
<span class="input-group-text"><i class="fa-solid fa-building"></i></span>
{{ form_widget(form.societe, {'attr': {'class': 'form-control select-filter select2bs4 select-filter-speaker'}}) }}
<div class="invalid-feedback">
{{ form_errors(form.societe) }}
</div>
</div>
</div>
<div class="col-3">
{{ form_label(form.duree, 'Durée du service (en minute)', {'attr': {'class': 'form-label'}}) }}
<div class="input-group">
<span class="input-group-text"><i class="fa-solid fa-percent"></i></span>
{{ form_widget(form.duree, {'attr': {'class': 'form-control'}}) }}
<div class="invalid-feedback">
{{ form_errors(form.duree) }}
</div>
</div>
</div>
</div>
<div class="row my-3">
<div class="col-3">
{{ form_label(form.limit_type, 'Limitation par', {'attr': {'class': 'form-check-input'}}) }}
{% for key,child in form.limit_type %}
<div class="form-check">
{{ form_widget(child, {'attr': {'class': 'form-check-input'}} ) }}
{{ form_label(child) }}
</div>
{% endfor %}
</div>
<div class="col-3" id="service-limita-date" {% if service.getLimitType()== 1 %} style="display:none" {% endif %}>
{{ form_label(form.limit_date, 'Limitation Par Date', {'attr': {'class': 'form-label'}}) }}
<div class="input-group">
<span class="input-group-text"><i class="fa-solid fa-percent"></i></span>
{{ form_widget(form.limit_date, {'attr': {'class': 'form-control'}}) }}
<div class="invalid-feedback">
{{ form_errors(form.limit_date) }}
</div>
</div>
</div>
</div>
<div class="col-12 my-3">
{{ form_label(form.description, 'Déscription *', {'attr': {'class': 'form-label'}}) }}
{{ form_widget(form.description, {'attr': {'class': 'form-control'}}) }}
<div class="invalid-feedback">{{ form_errors(form.description) }}</div>
</div>
<hr class="my-4">
{{ form_widget(form.save, {'label': "Enregister", 'attr': {'class': 'w-90 btn btn-primary btn-lg'}}) }}
</div>
{{ form_end(form) }}
</div>
</div>
</div>
{% endblock %}
{% block javascripts %}
{{ parent() }}
{{ encore_entry_script_tags('app_backend_article_service') }}
{% endblock %}

View File

@@ -0,0 +1,131 @@
{% extends 'base_backend_admin.html.twig' %}
{% block title %} Service {% endblock %}
{% block content %}
<!-- Page Heading -->
<div class="d-sm-flex align-items-center justify-content-between mb-4">
<h1 class="h3 mb-0 text-gray-800">Service</h1>
<ol class="breadcrumb float-sm-right">
<li class="breadcrumb-item">Service</li>
</ol>
</div>
<!-- Begin Page Content -->
<div class="container-fluid">
{% include 'backend_admin/basic/notice.html.twig' %}
<!-- DataTales Example -->
<div class="card shadow mb-4">
<div class="card-header py-3">
<h6 class="m-0 font-weight-bold text-info">Liste des services</h6>
</div>
<div class="card-body">
<div class="table-responsive">
<table class="table table-bordered" width="100%" cellspacing="0" id="tablesService">
<thead>
<tr>
<th>#</th>
<th>Titre</th>
<th>Société</th>
<th>Date Ajoute</th>
<th>Limitation</th>
<th>Activer</th>
<th>Détail</th>
</tr>
</thead>
<tbody>
{% for service in services %}
<tr>
<td>{{ service.getId() }}</td>
<td>{{ service.getTitre()}}</td>
<td>{{ service.getSociete().getNom() }}</td>
<td>{{ service.getDateAdd()|date("d/m/Y")}}</td>
<td>
{% if service.getLimitType() == 0 %}
Par Date: <b>{{ service.getLimitDate()|date("d/m/Y") }}</b>
{% elseif service.getLimitType() == 1 %}
Par RDV:
<button title="Gestion des Rendez-vous" class="btn btn-dark" onclick="ServiceRdvAjaxShow({{ service.id }});return false;">
<i class="fa-solid fa-calendar-check fa-sm"></i>
</button>
{% endif %}
</td>
<td>
{% if service.isActive() %}
<i class="fa-solid fa-circle-check fa-xl" style="color: #26a269;"></i>
{% else %}
<i class="fa-solid fa-circle-xmark fa-xl" style="color: #e01b24;"></i>
{% endif %}
</td>
<td>
<a href="{{ path('backend_admin_service_update', {'id': service.getId() }) }}" title="Détail" class="btn btn-info btn-action">
<i class="fa-solid fa-magnifying-glass"></i>
</a>
<a href="{{ path('backend_admin_service_uploder',{id:service.id}) }}" title="gestion des images" class="btn btn-warning"><i class="fa-regular fa-image"></i></a>
{% if service.isActive() %}
<a href="{{ path('backend_admin_service_activation',{id:service.id, 'activation': 'false'}) }}" title="déactiver" class="btn btn-danger"><i class="fa-solid fa-x"></i></a>
{% elseif (service.isActive() == false) and (service.getImageDefault() != '') %}
<a href="{{ path('backend_admin_service_activation',{id:service.id, 'activation': 'true'}) }}" title="activer" class="btn btn-success"><i class="fa-solid fa-check"></i></a>
{% endif %}
{% if service.getLimitType() == 1 %}
<a href="{{ path('backend_admin_service_rdv_add', {id:service.id} )}}" title="Ajouter RDV" class="btn btn-dark">
<i class="fa-regular fa-square-plus"></i>
</a>
{% endif %}
</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
</div>
</div>
</div>
<!-- Modal -->
<div class="modal fade" id="exampleModal" tabindex="-1"aria-hidden="true">
<div class="modal-dialog modal-lg">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title">Liste des Rendez-vous</h5>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<div class="modal-body">
<table class="table table-bordered" width="100%" cellspacing="0">
<thead>
<tr>
<th>#</th>
<th>Date Début</th>
<th>Date Fin</th>
<th>Heur Début</th>
<th>Heur Fin</th>
<th>Durée Entre RDV</th>
<th>Exclure</th>
<th>Détail</th>
</tr>
</thead>
<tbody id="data-rdv"></tbody>
</table>
</div>
</div>
</div>
</div>
{% endblock %}
{% block javascripts %}
<script>
var pathServiceRdvAjaxShow = "{{ path('backend_admin_service_rdv_ajax_show') }}";
</script>
{{ parent() }}
{{ encore_entry_script_tags('app_backend_article_service') }}
{% endblock %}

View File

@@ -0,0 +1,258 @@
{% extends 'base_backend_admin.html.twig' %}
{% block title %} Service {% endblock %}
{% block stylesheets %}
{{ parent() }}
{{ encore_entry_link_tags('app_backend_article_service') }}
{% endblock %}
{% block content %}
<!-- Page Heading -->
<div class="d-sm-flex align-items-center justify-content-between mb-4">
<h1 class="h3 mb-0 text-gray-800">Service Images</h1>
<ol class="breadcrumb float-sm-right">
<li class="breadcrumb-item active">Service</li>
<li class="breadcrumb-item active">Images</li>
</ol>
</div>
<div class="row">
{% include 'backend_admin/basic/notice.html.twig' %}
<div class="card shadow mb-4" >
<!-- Card Header - Dropdown -->
<div class="card-header py-3 d-flex flex-row align-items-center justify-content-between">
<h6 class="m-0 font-weight-bold text-primary">Chargement d'image par default</h6>
</div>
<!-- Card Body -->
<div class="card-body">
<table class="table" border="1" align="center">
<tbody>
<tr>
<td width="15%">
<div class="holder">
{% if service.getImageDefault() %}
<img id="img-preview-default" class="img-thumbnail" src="{{ asset('uploads/images/services/' ~ service.getImageDefault()) }}" alt="pic"/>
{% else %}
<img id="img-preview-default" class="img-thumbnail" src="{{ asset('images/backend/img/h.png') }}" alt="pic"/>
{% endif %}
</div>
</td>
<td width="75%">
<div class="progress" >
<div class="progress-bar" id="progress-bar-default" role="progressbar" style="width: 0%" aria-valuenow="60" aria-valuemin="0" aria-valuemax="100">0%</div>
</div>
<fieldset class="upload_dropZone text-center mb-3 p-4">
<p>
Image pour la page <b>par default</b>
</p>
<p class="small my-3">
Largeur d'image doit d'être <b>438px</b> | Hauteur d'image doit d'être <b>240px</b><br>
</p>
<input id="upload_image_default" class="position-absolute invisible" type="file" accept="image/jpeg, image/png, image/gif, image/jpg" multiple="false"/>
<label class="btn btn-upload mb-3" for="upload_image_default">
<i class="fa-regular fa-image"></i> choisir l'image
</label>
</fieldset>
</td>
<td width="10%">
<br>
<button type="button" class="btn btn-primary" id="submit-image-default">
<i class="fa-solid fa-cloud-arrow-up fa-lg"></i> Importer
</button>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="card shadow mb-4" >
<!-- Card Header - Dropdown -->
<div class="card-header py-3 d-flex flex-row align-items-center justify-content-between">
<h6 class="m-0 font-weight-bold text-primary">Chargement des images d'service pour la page détail</h6>
</div>
<!-- Card Body -->
<div class="card-body">
<table class="table" border="1" align="center">
<tbody>
<tr>
<td width="15%">
<div class="holder">
{% if service.getImageDetail1() %}
<img id="img-preview-detail1" class="img-thumbnail" src="{{ asset('uploads/images/services/' ~ service.getImageDetail1()) }}" alt="pic"/>
{% else %}
<img id="img-preview-detail1" class="img-thumbnail" src="{{ asset('images/backend/img/h.png') }}" alt="pic"/>
{% endif %}
</div>
</td>
<td width="75%">
<div class="progress" >
<div class="progress-bar" id="progress-bar-detail1" role="progressbar" style="width: 0%" aria-valuenow="60" aria-valuemin="0" aria-valuemax="100">0%</div>
</div>
<fieldset class="upload_dropZone text-center mb-3 p-4">
<p>
Image 1 pour la page <b>détail</b>
</p>
<p class="small my-3">
Taille maximum de l'image 2Mo<br>
</p>
<input id="upload_image_detail1" class="position-absolute invisible" type="file" accept="image/jpeg, image/png, image/gif, image/jpg" />
<label class="btn btn-upload mb-3" for="upload_image_detail1">
<i class="fa-regular fa-image"></i> choisir l'image
</label>
</fieldset>
</td>
<td width="10%">
<br>
<button type="button" class="btn btn-primary" id="submit-image-detail1">
<i class="fa-solid fa-cloud-arrow-up fa-lg"></i> Importer
</button>
</td>
</tr>
<tr>
<td width="15%">
<div class="holder">
{% if service.getImageDetail2() %}
<img id="img-preview-detail2" class="img-thumbnail" src="{{ asset('uploads/images/services/' ~ service.getImageDetail2()) }}" alt="pic"/>
{% else %}
<img id="img-preview-detail2" class="img-thumbnail" src="{{ asset('images/backend/img/h.png') }}" alt="pic"/>
{% endif %}
</div>
</td>
<td width="75%">
<div class="progress" >
<div class="progress-bar" id="progress-bar-detail2" role="progressbar" style="width: 0%" aria-valuenow="60" aria-valuemin="0" aria-valuemax="100">0%</div>
</div>
<fieldset class="upload_dropZone text-center mb-3 p-4">
<p>
Image 2 pour la page <b>détail</b>
</p>
<p class="small my-3">
Taille maximum de l'image 2Mo<br>
</p>
<input id="upload_image_detail2" class="position-absolute invisible" type="file" accept="image/jpeg, image/png, image/gif, image/jpg" />
<label class="btn btn-upload mb-3" for="upload_image_detail2">
<i class="fa-regular fa-image"></i> choisir l'image
</label>
</fieldset>
</td>
<td width="10%">
<br>
<button type="button" class="btn btn-primary" id="submit-image-detail2">
<i class="fa-solid fa-cloud-arrow-up fa-lg"></i> Importer
</button>
</td>
</tr>
<tr>
<td width="15%">
<div class="holder">
{% if service.getImageDetail3() %}
<img id="img-preview-detail3" class="img-thumbnail" src="{{ asset('uploads/images/services/' ~ service.getImageDetail3()) }}" alt="pic"/>
{% else %}
<img id="img-preview-detail3" class="img-thumbnail" src="{{ asset('images/backend/img/h.png') }}" alt="pic"/>
{% endif %}
</div>
</td>
<td width="75%">
<div class="progress" >
<div class="progress-bar" id="progress-bar-detail3" role="progressbar" style="width: 0%" aria-valuenow="60" aria-valuemin="0" aria-valuemax="100">0%</div>
</div>
<fieldset class="upload_dropZone text-center mb-3 p-4">
<p>
Image 3 pour la page <b>détail</b>
</p>
<p class="small my-3">
Taille maximum de l'image 2Mo<br>
</p>
<input id="upload_image_detail3" class="position-absolute invisible" type="file" accept="image/jpeg, image/png, image/gif, image/jpg" />
<label class="btn btn-upload mb-3" for="upload_image_detail3">
<i class="fa-regular fa-image"></i> choisir l'image
</label>
</fieldset>
</td>
<td width="10%">
<br>
<button type="button" class="btn btn-primary" id="submit-image-detail3">
<i class="fa-solid fa-cloud-arrow-up fa-lg"></i> Importer
</button>
</td>
</tr>
<tr>
<td width="15%">
<div class="holder">
{% if service.getImageDetail4() %}
<img id="img-preview-detail4" class="img-thumbnail" src="{{ asset('uploads/images/services/' ~ service.getImageDetail4()) }}" alt="pic"/>
{% else %}
<img id="img-preview-detail4" class="img-thumbnail" src="{{ asset('images/backend/img/h.png') }}" alt="pic"/>
{% endif %}
</div>
</td>
<td width="75%">
<div class="progress" >
<div class="progress-bar" id="progress-bar-detail4" role="progressbar" style="width: 0%" aria-valuenow="60" aria-valuemin="0" aria-valuemax="100">0%</div>
</div>
<fieldset class="upload_dropZone text-center mb-3 p-4">
<p>
Image 4 pour la page <b>détail</b>
</p>
<p class="small my-3">
Taille maximum de l'image 2Mo<br>
</p>
<input id="upload_image_detail4" class="position-absolute invisible" type="file" accept="image/jpeg, image/png, image/gif, image/jpg" />
<label class="btn btn-upload mb-3" for="upload_image_detail4">
<i class="fa-regular fa-image"></i> choisir l'image
</label>
</fieldset>
</td>
<td width="10%">
<br>
<button type="button" class="btn btn-primary" id="submit-image-detail4">
<i class="fa-solid fa-cloud-arrow-up fa-lg"></i> Importer
</button>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<!-- Modal -->
<div class="modal fade" id="cropperModal" tabindex="-1" aria-labelledby="exampleModalLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="exampleModalLabel">Modal title</h5>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<div class="modal-body">
<img id="imgPreviewCropper" src="" data-type-img=""/>
</div>
<div class="modal-footer">
<button id="resize-image" type="button" class="btn btn-primary">Redimensionner</button>
</div>
</div>
</div>
</div>
{% endblock %}
{% block javascripts %}
<script>
var pathServiceUplodImageAdd = "{{ path('backend_admin_service_uploder_add', {id: service.id }) }}";
var pathServiceUplodImageDelete = "{{ path('backend_admin_service_uploder_delete') }}";
</script>
{{ parent() }}
{{ encore_entry_script_tags('app_backend_article_service') }}
{% endblock %}