first commit

This commit is contained in:
maher
2026-05-16 17:37:29 +02:00
commit 7a183b96cf
6162 changed files with 744834 additions and 0 deletions
+418
View File
@@ -0,0 +1,418 @@
{% extends 'base.html.twig' %}
{% block title %}Enquête{% endblock %}
{% block content %}
{% set prototypeHtml %}
{% include 'investigation/form-question.html.twig' with { formQtn: form.questions.vars.prototype } %}
{% endset %}
<style>
.save-question {
position: fixed;
right: 80px;
top: 65%;
width: 215px;
}
.add-question {
position: fixed;
right: 80px;
top: 73%;
}
.investigation-ready {
position: fixed;
right: 80px;
top: 81%;
width: 215px;
}
</style>
<div class="az-content">
<div class="container">
<div class="az-content-body d-flex flex-column">
<div class="az-content-breadcrumb">
<span>Enquête</span>
<span>Création</span>
</div>
<h2 class="az-content-title">Enquête</h2>
<div class="az-content-label mg-b-5"></div>
<p class="mg-b-20">Créer une nouvelle enquête</p>
{{ form_start(form, {'attr': {'enctype': 'multipart/form-data'}}) }}
<div class="tab-vertical mb-3" id="investigation-information">
<ul class="nav nav-tabs" id="myTab3" role="tablist">
<li class="nav-item">
<a class="nav-link active" id="en-vertical-tab" data-toggle="tab" href="#en-vertical" role="tab" aria-controls="home" aria-selected="true">🇬🇧 English (UK)</a>
</li>
<li class="nav-item">
<a class="nav-link" id="fr-vertical-tab" data-toggle="tab" href="#fr-vertical" role="tab" aria-controls="profile" aria-selected="false">🇫🇷 Français</a>
</li>
<li class="nav-item">
<a class="nav-link" id="ar-vertical-tab" data-toggle="tab" href="#ar-vertical" role="tab" aria-controls="contact" aria-selected="false">🇸🇦 العربية</a>
</li>
</ul>
<div class="tab-content" id="myTabContent3">
<div class="tab-pane fade show active" id="en-vertical" role="tabpanel" aria-labelledby="en-vertical-tab">
<div class="form-group col-sm-12">
<label for="{{ form.name_en.vars.id }}">{{ form_label(form.name_en) }}</label>
{{ form_widget(form.name_en, {'attr': {'class': 'form-control' }}) }}
</div>
<div class="form-group col-sm-12">
<label for="{{ form.source_en.vars.id }}">{{ form_label(form.source_en) }}</label>
{{ form_widget(form.source_en, {'attr': {'class': 'form-control' }}) }}
</div>
</div>
<div class="tab-pane fade" id="fr-vertical" role="tabpanel" aria-labelledby="fr-vertical-tab">
<div class="form-group col-sm-12">
<label for="{{ form.name_fr.vars.id }}">{{ form_label(form.name_fr) }}</label>
{{ form_widget(form.name_fr, {'attr': {'class': 'form-control' }}) }}
</div>
<div class="form-group col-sm-12">
<label for="{{ form.source_fr.vars.id }}">{{ form_label(form.source_fr) }}</label>
{{ form_widget(form.source_fr, {'attr': {'class': 'form-control' }}) }}
</div>
</div>
<div class="tab-pane fade" id="ar-vertical" role="tabpanel" aria-labelledby="ar-vertical-tab">
<div class="form-group">
<label for="{{ form.name_ar.vars.id }}">{{ form_label(form.name_ar) }}</label>
{{ form_widget(form.name_ar, {'attr': {'class': 'form-control' }}) }}
</div>
<div class="form-group">
<label for="{{ form.source_ar.vars.id }}">{{ form_label(form.source_ar) }}</label>
{{ form_widget(form.source_ar, {'attr': {'class': 'form-control' }}) }}
</div>
</div>
</div>
</div>
<div id="questions-collection" data-prototype="{{ prototypeHtml|e('html_attr') }}" data-index="{{ form|length }}">
{% for formQuestion in form.questions %}
<div class="question-item">
<div class="row">
<div class="col-md-8">
<div id="accordion">
<div class="card border-top border-primary">
<div class="card-header" id="heading-{{ loop.index }}" data-toggle="collapse" data-target="#collapse-{{ loop.index }}" aria-expanded="true" aria-controls="collapse-{{ loop.index }}">
<div class="d-flex align-items-center">
<div style="flex: 1;">
<h5 class="card-title mb-1">Question N: {{ loop.index }}</h5>
<p class="card-text mb-1">{{ formQuestion.title.vars.value }}</p>
</div>
<i class="fas fa-chevron-down arrow"></i>
</div>
</div>
<div id="collapse-{{ loop.index }}" class="collapse {% if app.request.attributes.get('_route') == 'app_investigation_add' %} show {% endif %}" aria-labelledby="heading-{{ loop.index }}" data-parent="#accordion">
<div class="collapse-content">
<div class="card-body">
<div class="form-group row">
<div class="col-md-3">
<button type="button" class="btn btn-outline-secondary rounded-pill mb-3">
<i class="fa fa-eye"></i> Afficher
</button>
</div>
<div class="col-md-2 offset-7">
<button type="button" class="btn btn-danger remove-question mb-3 float-right">
<i class="fa fa-trash"></i>
</button>
</div>
</div>
<div class="form-group row">
<label class="control-label col-sm-2 align-self-center mb-0" for="{{ formQuestion.title.vars.id }}">{{ form_label(formQuestion.title) }}:</label>
<div class="col-sm-8">
{{ form_widget(formQuestion.title, {'attr': {'class': 'form-control', 'placeholder': 'Visible que pour la createur du question' }}) }}
</div>
</div>
<div class="form-group row">
<label class="control-label col-sm-2 align-self-center mb-0" for="{{ formQuestion.name_en.vars.id }}">{{ form_label(formQuestion.name_en) }}:</label>
<div class="col-sm-8">
{{ form_widget(formQuestion.name_en, {'attr': {'class': 'form-control', 'placeholder': 'Visible pour les participants' }}) }}
</div>
</div>
<div class="form-group row">
<label class="control-label col-sm-2 align-self-center mb-0" for="{{ formQuestion.name_fr.vars.id }}">{{ form_label(formQuestion.name_fr) }}:</label>
<div class="col-sm-8">
{{ form_widget(formQuestion.name_fr, {'attr': {'class': 'form-control', 'placeholder': 'Visible pour les participants' }}) }}
</div>
</div>
<div class="form-group row">
<label class="control-label col-sm-2 align-self-center mb-0" for="{{ formQuestion.name_ar.vars.id }}">{{ form_label(formQuestion.name_ar) }}:</label>
<div class="col-sm-8">
{{ form_widget(formQuestion.name_ar, {'attr': {'class': 'form-control', 'placeholder': 'Visible pour les participants' }}) }}
</div>
</div>
<div class="row mt-5">
<div class="col-md-6">
<div class="form-group col-sm-10">
<label for="{{ formQuestion.amount.vars.id }}">{{ form_label(formQuestion.amount) }}</label>
{{ form_widget(formQuestion.amount, {'attr': {'class': 'form-control' }}) }}
</div>
</div>
<div class="col-md-6">
<div class="form-group col-sm-10">
<label for="{{ formQuestion.max_participant.vars.id }}">{{ form_label(formQuestion.max_participant) }}</label>
{{ form_widget(formQuestion.max_participant, {'attr': {'class': 'form-control' }}) }}
</div>
</div>
</div>
{# modalities #}
<h4 class="card-title mt-4">Modalité</h4>
<div class="row mt-3">
<div class="col-md-6">
<div class="form-group ">
<label>{{ form_label(formQuestion.type_modality) }}</label>
{{ form_widget(formQuestion.type_modality, {'attr': {'class': 'form-control form-control-sm mb-3' }}) }}
</div>
</div>
<div class="col-md-6 mt-4">
<div class="form-group">
{% for key, child in formQuestion.choice %}
<div class="custom-control-inline">
{{ form_widget(child) }}
</div>
{% endfor %}
</div>
</div>
</div>
{% set prototype %}
<div class="modality-item border rounded p-3 mt-3 mb-3">
<div class="input-group mb-3">
<span class="input-group-text">EN</span>
{{ form_widget(formQuestion.modalitys.vars.prototype.name_en, {
attr: { class: 'form-control', placeholder: 'Nom (EN)' }
}) }}
</div>
{{ form_errors(formQuestion.modalitys.vars.prototype.name_en) }}
<div class="input-group mb-3">
<span class="input-group-text">FR</span>
{{ form_widget(formQuestion.modalitys.vars.prototype.name_fr, {
attr: { class: 'form-control', placeholder: 'Nom (FR)' }
}) }}
</div>
{{ form_errors(formQuestion.modalitys.vars.prototype.name_fr) }}
<div class="input-group mb-3">
<span class="input-group-text">AR</span>
{{ form_widget(formQuestion.modalitys.vars.prototype.name_ar, {
attr: { class: 'form-control', placeholder: 'الاسم (AR)', dir: 'rtl' }
}) }}
</div>
{{ form_errors(formQuestion.modalitys.vars.prototype.name_ar) }}
</div>
{% endset %}
<div class="row mt-4">
<div class="col-md-8">
<div class="modalities-container" data-prototype="{{ prototype|e('html_attr') }}">
{% for modality in formQuestion.modalitys %}
<div class="modality-item border rounded p-3 mb-3">
<div class="input-group mb-3">
<span class="input-group-text">EN</span>
{{ form_widget(modality.name_en, {
attr: { class: 'form-control', placeholder: 'Nom (EN)' }
}) }}
</div>
{{ form_errors(modality.name_en) }}
<div class="input-group mb-3">
<span class="input-group-text">FR</span>
{{ form_widget(modality.name_fr, {
attr: { class: 'form-control', placeholder: 'Nom (FR)' }
}) }}
</div>
{{ form_errors(modality.name_fr) }}
<div class="input-group mb-3">
<span class="input-group-text">AR</span>
{{ form_widget(modality.name_ar, {
attr: { class: 'form-control', placeholder: 'الاسم (AR)', dir: 'rtl' }
}) }}
</div>
{{ form_errors(modality.name_ar) }}
<button type="button" class="remove-modality btn btn-danger btn-sm"> Supprimer </button>
</div>
{% endfor %}
</div>
<div class="card-body">
<div class="attachments-container" data-prototype="{{ form_widget(formQuestion.attachments.vars.prototype)|e('html_attr') }}" data-index="{{ formQuestion.attachments|length }}" >
{% for attachment in formQuestion.attachments %}
<div class="attachment-item" id="attachment-{{ loop.index0 }}">
{{ form_row(attachment.file, { 'row_attr': {'class': 'mb-0'} }) }}
<button type="button" class="btn btn-outline-danger btn-sm remove-attachment mt-2">
<i class="fas fa-trash"></i> Supprimer
</button>
</div>
{% else %}
<p class="text-muted">Aucun fichier ajouté</p>
{% endfor %}
</div>
</div>
</div>
<div class="col-md-4">
<button type="button" class="btn btn-primary add-modality mb-2">Ajouter une modalité</button>
<button type="button" class="btn btn-outline-primary add-attachment mt-3"><i class="fas fa-plus"></i> Ajouter un fichier</button>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="col-md-3"></div>
</div>
</div>
{% endfor %}
</div>
<button type="button" class="btn btn-info rounded-pill add-question">
<i class="typcn typcn-folder"></i>
Ajouter un autre question
</button>
{{ form_row(form.save, {'attr': {'class': 'btn btn-success rounded-pill save-question' }}) }}
{{ form_end(form) }}
{% if app.request.attributes.get('_route') == 'app_investigation_edit' %}
<a href="{{ path('app_investigation_ready', {id: investigation.id}) }}" class="btn btn-secondary rounded-pill investigation-ready">
Enquête Prête
</a>
{% endif %}
</div>
</div>
</div>
{% block javascripts %}
<script type="text/javascript">
$(document).ready(function() {
var $collection = $('#questions-collection');
var $addButton = $('.add-question');
$collection.data('index', $collection.find('.question-item').length);
$addButton.on('click', function() {
var index = $collection.data('index');
var prototype = $collection.data('prototype');
var newForm = prototype.replace(/__name__/g, index + 1);
var $newElement = $('<div class="row question-item"></div>');
$newElement.append(newForm);
$collection.append($newElement);
$collection.data('index', index + 1);
$('.remove-question').show();
updateIndexes();
$("html, body").animate({
scrollTop: $(window).scrollTop() + 700
}, 400);
});
$collection.on('click', '.remove-question', function() {
if ($('.question-item').length > 1) {
$(this).closest('.question-item').remove();
updateIndexes();
if ($('.question-item').length === 1) {
$('.remove-question').hide();
}
}
});
function updateIndexes() {
$('.question-item').each(function(index) {
$(this).find('h5').text('Question N: ' + (index + 1));
});
}
$(document).on('click', '.add-modality', function() {
var $container = $(this).closest('.row').find('.modalities-container');
var index = $container.find('.modality-item').length;
var prototype = $container.data('prototype');
var newForm = prototype.replace(/__name__/g, index);
var $newElement = $('<div class="modality-item border rounded p-3 mb-3"></div>').append(newForm);
if (!$newElement.find('.remove-modality').length) {
$newElement.append('<button type="button" class="remove-modality btn btn-danger btn-sm mt-2">Supprimer</button>');
}
$container.append($newElement);
});
$(document).on('click', '.remove-modality', function() {
$(this).closest('.modality-item').remove();
});
// 1. Ajouter un fichier
$(document).on('click', '.add-attachment', function(e) {
e.preventDefault();
// On remonte au parent pour trouver le conteneur spécifique à cette question
var $container = $(this).closest('.row').find('.attachments-container');
var prototype = $container.data('prototype');
var index = $container.data('index');
// On remplace le prototype par l'index actuel
var newForm = prototype.replace(/__attachment_prot__/g, index);
// On crée l'élément HTML
var $newItem = $('<div class="attachment-item mb-2"></div>').append(newForm);
// On ajoute un bouton de suppression au nouvel élément
$newItem.append('<button type="button" class="btn btn-outline-danger btn-sm remove-attachment mt-2"><i class="fas fa-trash"></i> Supprimer</button>');
// On ajoute au DOM et on incrémente l'index
$container.append($newItem);
$container.data('index', index + 1);
// Supprimer le message "Aucun fichier" s'il existe
$container.find('p.text-muted').remove();
});
// 2. Supprimer un fichier (existant ou nouveau)
$(document).on('click', '.remove-attachment', function(e) {
e.preventDefault();
$(this).closest('.attachment-item').remove();
});
});
</script>
{% endblock %}
{% endblock %}
@@ -0,0 +1,70 @@
{% extends 'base.html.twig' %}
{% block title %}Admin Validation{% endblock %}
{% block content %}
<!-- az-header -->
<div class="az-content">
<div class="container">
<div class="az-content-body d-flex flex-column">
<div class="az-content-breadcrumb">
<span>Admin</span>
<span>Enquête</span>
</div>
<h2 class="az-content-title">Validation</h2>
{% include 'basic/alert.html.twig' %}
<p class="mg-b-20">Liste des Enquête a valider par l'admin</p>
<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>
{% endblock %}
@@ -0,0 +1,202 @@
<div class="col-md-8">
<div class="card border-top border-primary">
<div class="card-header" id="heading-__name__" data-toggle="collapse" data-target="#collapse-__name__" aria-expanded="true" aria-controls="collapse-__name__">
<div class="d-flex align-items-center">
<div style="flex: 1;">
<h5 class="card-title mb-1 question-number">Question N: </h5>
</div>
<i class="fas fa-chevron-down arrow"></i>
</div>
</div>
<div id="collapse-__name__" class="collapse show" aria-labelledby="heading-__name__" data-parent="#accordion">
<div class="collapse-content">
<div class="card-body">
<div class="form-group row">
<div class="col-md-3">
<button type="button" class="btn btn-outline-secondary rounded-pill mb-3">
<i class="fa fa-eye"></i> Afficher
</button>
</div>
<div class="col-md-2 offset-7">
<button type="button" class="btn btn-danger remove-question mb-3 float-right">
<i class="fa fa-trash"></i>
</button>
</div>
</div>
<div class="form-group row">
<label class="control-label col-sm-2 align-self-center mb-0" for="{{ formQtn.title.vars.id }}">{{ form_label(formQtn.title) }}:</label>
<div class="col-sm-8">
{{ form_widget(formQtn.title, {'attr': {'class': 'form-control', 'placeholder': 'Visible que pour la createur du question' }}) }}
</div>
</div>
<div class="form-group row">
<label class="control-label col-sm-2 align-self-center mb-0" for="{{ formQtn.name_en.vars.id }}">{{ form_label(formQtn.name_en) }}:</label>
<div class="col-sm-8">
{{ form_widget(formQtn.name_en, {'attr': {'class': 'form-control', 'placeholder': 'Visible pour les participants' }}) }}
</div>
</div>
<div class="form-group row">
<label class="control-label col-sm-2 align-self-center mb-0" for="{{ formQtn.name_fr.vars.id }}">{{ form_label(formQtn.name_fr) }}:</label>
<div class="col-sm-8">
{{ form_widget(formQtn.name_fr, {'attr': {'class': 'form-control', 'placeholder': 'Visible pour les participants' }}) }}
</div>
</div>
<div class="form-group row">
<label class="control-label col-sm-2 align-self-center mb-0" for="{{ formQtn.name_ar.vars.id }}">{{ form_label(formQtn.name_ar) }}:</label>
<div class="col-sm-8">
{{ form_widget(formQtn.name_ar, {'attr': {'class': 'form-control', 'placeholder': 'Visible pour les participants' }}) }}
</div>
</div>
<div class="row mt-5">
<div class="col-md-6">
<div class="form-group col-sm-10">
<label for="{{ formQtn.amount.vars.id }}">{{ form_label(formQtn.amount) }}</label>
{{ form_widget(formQtn.amount, {'attr': {'class': 'form-control' }}) }}
</div>
</div>
<div class="col-md-6">
<div class="form-group col-sm-10">
<label for="{{ formQtn.max_participant.vars.id }}">{{ form_label(formQtn.max_participant) }}</label>
{{ form_widget(formQtn.max_participant, {'attr': {'class': 'form-control' }}) }}
</div>
</div>
</div>
<h4 class="card-title mt-4">Modalité</h4>
<div class="row mt-3">
<div class="col-md-6">
<div class="form-group ">
<label>{{ form_label(formQtn.type_modality) }}</label>
{{ form_widget(formQtn.type_modality, {'attr': {'class': 'form-control form-control-sm mb-3"' }}) }}
</div>
</div>
<div class="col-md-6 mt-4">
<div class="form-group">
{% for key,child in formQtn.choice %}
<div class="custom-control-inline">
{{ form_widget(child) }}
</div>
{% endfor %}
</div>
</div>
</div>
{% set prototype %}
<div class="modality-item border rounded p-3 mt-3 mb-3">
{# EN #}
<div class="input-group mb-3">
<span class="input-group-text">EN</span>
{{ form_widget(formQtn.modalitys.vars.prototype.name_en, {
attr: {
class: 'form-control',
placeholder: 'Nom (EN)'
}
}) }}
</div>
{{ form_errors(formQtn.modalitys.vars.prototype.name_en) }}
{# FR #}
<div class="input-group mb-3">
<span class="input-group-text">FR</span>
{{ form_widget(formQtn.modalitys.vars.prototype.name_fr, {
attr: {
class: 'form-control',
placeholder: 'Nom (FR)'
}
}) }}
</div>
{{ form_errors(formQtn.modalitys.vars.prototype.name_fr) }}
{# AR #}
<div class="input-group mb-3">
<span class="input-group-text">AR</span>
{{ form_widget(formQtn.modalitys.vars.prototype.name_ar, {
attr: {
class: 'form-control',
placeholder: 'الاسم (AR)',
dir: 'rtl'
}
}) }}
</div>
{{ form_errors(formQtn.modalitys.vars.prototype.name_ar) }}
</div>
{% endset %}
{# modalities #}
<div class="row mt-4">
<div class="col-md-8">
<div class="modalities-container" data-prototype="{{ prototype|e('html_attr') }}">
{% for modality in formQtn.modalitys %}
<div class="modality-item border rounded p-3 mb-3">
<div class="input-group mb-3">
<span class="input-group-text">EN</span>
{{ form_widget(modality.name_en, {
attr: { class: 'form-control', placeholder: 'Nom (EN)' }
}) }}
</div>
{{ form_errors(modality.name_en) }}
<div class="input-group mb-3">
<span class="input-group-text">FR</span>
{{ form_widget(modality.name_fr, {
attr: { class: 'form-control', placeholder: 'Nom (FR)' }
}) }}
</div>
{{ form_errors(modality.name_fr) }}
<div class="input-group mb-3">
<span class="input-group-text">AR</span>
{{ form_widget(modality.name_ar, {
attr: {
class: 'form-control',
placeholder: 'الاسم (AR)',
dir: 'rtl'
}
}) }}
</div>
{{ form_errors(modality.name_ar) }}
<button type="button" class="remove-modality btn btn-danger btn-sm"> Supprimer </button>
</div>
{% endfor %}
</div>
<div class="card-body">
<div class="attachments-container" data-prototype="{{ form_widget(formQtn.attachments.vars.prototype)|e('html_attr') }}" data-index="{{ formQtn.attachments|length }}" >
{% for attachment in formQtn.attachments %}
<div class="attachment-item" id="attachment-{{ loop.index0 }}">
{{ form_row(attachment.file, { 'row_attr': {'class': 'mb-0'} }) }}
<button type="button" class="btn btn-outline-danger btn-sm remove-attachment mt-2">
<i class="fas fa-trash"></i> Supprimer
</button>
</div>
{% else %}
<p class="text-muted">Aucun fichier ajouté</p>
{% endfor %}
</div>
</div>
</div>
<div class="col-md-4">
<button type="button" class="btn btn-primary add-modality">Ajouter une modalité</button>
<button type="button" class="btn btn-outline-primary add-attachment mt-3"><i class="fas fa-plus"></i> Ajouter un fichier</button>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="col-md-3"></div>
+161
View File
@@ -0,0 +1,161 @@
{% extends 'base.html.twig' %}
{% block title %}Enquête{% endblock %}
{% block content %}
<!-- az-header -->
<div class="az-content">
<div class="container">
<div class="az-content-body d-flex flex-column">
<div class="az-content-breadcrumb">
<span>Enquête</span>
<span>Gestion</span>
</div>
<h2 class="az-content-title">Enquête</h2>
{% include 'basic/alert.html.twig' %}
<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>
<div class="table-responsive">
<table class="table mg-b-0">
<thead>
<tr>
<th>ID</th>
<th>Name</th>
<th>Demande de validation</th>
</tr>
</thead>
<tbody>
{% for invest in invesAdmins %}
<tr>
<td>{{ invest.getId() }}</td>
<td>{{ invest.getNameEn() }}</td>
<td><a href="{{ path('app_investigation_send_validation', {id:invest.getId()}) }}" class="btn btn-success btn-sm">Envoyer</a></td>
</tr>
{% endfor %}
</tbody>
</table>
</div><!-- table-responsive -->
<hr class="mg-y-30">
<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>
<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>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>
<div class="btn-icon-list">
{% if investigation.getLastState() != 12 %}
<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>
{% 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>
</td>
</tr>
{% endfor %}
</tbody>
</table>
</div><!-- table-responsive -->
</div>
</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 %}
+114
View File
@@ -0,0 +1,114 @@
{% extends 'base.html.twig' %}
{% block title %}Enquête{% endblock %}
{% set state = investigation. getState() %}
{% if state != null %}
{% set step1 = "" %}
{% set step2 = "" %}
{% set step3 = "" %}
{% set step4 = "" %}
{% set active1 = "" %}
{% set active2 = "" %}
{% set active3 = "" %}
{% set active4 = "" %}
{% set width = "0%" %}
{% if state.getStep() == 1 %}
{% set step1 = "completed" %}
{% set active1 = "active" %}
{% set width = "10%" %}
{% elseif state.getStep() == 2 %}
{% set step1 = "completed" %}
{% set step2 = "completed" %}
{% set active2 = "active" %}
{% set width = "50%" %}
{% elseif state.getStep() == 3 %}
{% set step1 = "completed" %}
{% set step2 = "completed" %}
{% set step3 = "completed" %}
{% set active3 = "active" %}
{% set width = "75%" %}
{% elseif state.getStep() == 4 %}
{% set step1 = "completed" %}
{% set step2 = "completed" %}
{% set step3 = "completed" %}
{% set step4 = "completed" %}
{% set active4 = "active" %}
{% set width = "100%" %}
{% endif %}
{% endif %}
{% block content %}
<!-- az-header -->
<div class="az-content">
<div class="container">
<div class="az-content-body d-flex flex-column">
<div class="az-content-breadcrumb">
<span>Enquête</span>
<span>Affichage</span>
</div>
<h2 class="az-content-title">Enquête</h2>
<div class="az-content-label mg-b-5"></div>
<p class="mg-b-20"></p>
<div class="card bd-0">
<div class="card-header tx-medium bd-0">
🇬🇧 English (UK) : {{ investigation.getNameEn() }}
</div><!-- card-header -->
<div class="card-body bd bd-t-0">
<p class="mg-b-0">{{ investigation.getSourceEn() }}</p>
</div><!-- card-body -->
</div>
<div class="card bd-0">
<div class="card-header tx-medium bd-0">
🇫🇷 Français : {{ investigation.getNameFr() }}
</div><!-- card-header -->
<div class="card-body bd bd-t-0">
<p class="mg-b-0">{{ investigation.getSourceFr() }}</p>
</div><!-- card-body -->
</div>
<div class="card bd-0">
<div class="card-header tx-medium bd-0">
العربية 🇸🇦 : {{ investigation.getNameAr() }}
</div><!-- card-header -->
<div class="card-body bd bd-t-0">
<p class="mg-b-0">{{ investigation.getSourceAr() }}</p>
</div><!-- card-body -->
</div>
{% for question in investigation.getQuestions() %}
<div class="card border-left border-primary">
<div class="card-body">
<div class="form-group row">
<div class="col-md-3">
<h5 class="card-title mb-2 question-number">Question N: {{ loop.index }}</h5>
</div>
<div class="col-md-3 offset-1">
Amount: {{ question.getAmount() }}
</div>
<div class="col-md-2 offset-1">
Max participant: {{ question.getMaxParticipant() }}
</div>
</div>
<p><strong>Title:</strong> {{ question.getTitle() }}<p>
<p><strong>🇬🇧 Name:</strong> {{ question.getNameEn() }}<p>
<p><strong>🇫🇷 Nom:</strong> {{ question.getNameFr() }}<p>
<p><strong>🇸🇦 العربية:</strong> {{ question.getNameAr() }}<p>
</div>
</div>
{% endfor %}
</div>
</div>
</div>
{% endblock %}