frt
This commit is contained in:
parent
a3941a284a
commit
f53ba6e66c
135
Controleur/ControleurGedadherent.php
Normal file
135
Controleur/ControleurGedadherent.php
Normal file
|
|
@ -0,0 +1,135 @@
|
||||||
|
<?php
|
||||||
|
require_once 'Framework/Controleur.php';
|
||||||
|
require_once 'Modele/Ged.php';
|
||||||
|
require_once 'Modele/Menuvueutilisateur.php';
|
||||||
|
|
||||||
|
class ControleurGedadherent extends Controleur {
|
||||||
|
private $ged;
|
||||||
|
|
||||||
|
public function __construct() {
|
||||||
|
$this->menuvue = new Menuvueutilisateur();
|
||||||
|
$this->menuvue->getMenuVue('Gedadherent');
|
||||||
|
|
||||||
|
$this->ged = new Ged();
|
||||||
|
}
|
||||||
|
|
||||||
|
public function index($msgErreur=null)
|
||||||
|
{
|
||||||
|
|
||||||
|
$message = "";
|
||||||
|
|
||||||
|
$nouveau_fichier = "rien";
|
||||||
|
|
||||||
|
if(!empty($_POST))
|
||||||
|
{
|
||||||
|
define('TARGET', $_SESSION['cheminGed']); // Repertoire cible
|
||||||
|
define('MAX_SIZE', 10000000); // Taille max en octets du fichier
|
||||||
|
|
||||||
|
// Tableaux de donnees
|
||||||
|
// ".avi", ".bmp", ".doc", ".docx", ".gif", ".jpeg", "jpg", "jpe", ".mkv", ".mp3", ".pdf", ".png", ".pps", ".xls", ".xlsx", ".wav"
|
||||||
|
// $tabExt = array('jpg','png','jpeg'); // Extensions autorisees
|
||||||
|
|
||||||
|
$tabExt = array("avi", "bmp", "doc", "docx", "gif", "jpeg", "jpg", "jpe", "mkv", "mp3", "mp4", "pdf", "png", "pps", "xls", "xlsx", "wav"); // Extensions autorisees
|
||||||
|
|
||||||
|
// Variables
|
||||||
|
$extension = '';
|
||||||
|
|
||||||
|
if( !is_dir(TARGET) )
|
||||||
|
{
|
||||||
|
if( !mkdir(TARGET, 0755) )
|
||||||
|
{
|
||||||
|
$message = est_anglophone()
|
||||||
|
? 'Error: the target directory cannot be created! Check that you have sufficient rights to do so or create it manually!'
|
||||||
|
: 'Erreur : le répertoire cible ne peut être créé ! Vérifiez que vous disposez des droits suffisants pour le faire ou créez-le manuellement !';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// On verifie si le champ est rempli
|
||||||
|
if( !empty($_FILES['fichier_upload']['name']) )
|
||||||
|
{
|
||||||
|
// Recuperation de l'extension du fichier
|
||||||
|
|
||||||
|
$extension = pathinfo($_FILES['fichier_upload']['name'], PATHINFO_EXTENSION);
|
||||||
|
|
||||||
|
// On verifie l'extension du fichier
|
||||||
|
if(in_array(strtolower($extension), $tabExt))
|
||||||
|
{
|
||||||
|
$message = $_FILES['fichier_upload']['size'];
|
||||||
|
|
||||||
|
// On verifie les dimensions et taille du fichier
|
||||||
|
if($_FILES['fichier_upload']['size'] <= MAX_SIZE)
|
||||||
|
{
|
||||||
|
$taille = $_FILES['fichier_upload']['size'];
|
||||||
|
|
||||||
|
// Parcours du tableau d'erreurs
|
||||||
|
if(isset($_FILES['fichier_upload']['error']) && UPLOAD_ERR_OK === $_FILES['fichier_upload']['error'])
|
||||||
|
{
|
||||||
|
// On renomme le fichier
|
||||||
|
$nomOrigine = $_FILES['fichier_upload']['name'];
|
||||||
|
$nouveau_fichier = dateJourSql()."_".uniqid().".".$extension;
|
||||||
|
|
||||||
|
// Si c'est OK, on teste l'upload
|
||||||
|
if(move_uploaded_file($_FILES['fichier_upload']['tmp_name'], TARGET.$nouveau_fichier))
|
||||||
|
{
|
||||||
|
$message = est_anglophone()
|
||||||
|
? 'Uploaded successfully'
|
||||||
|
: 'Chargé avec succès';
|
||||||
|
|
||||||
|
// on va envoyer dans la base de données
|
||||||
|
$this->ged->enregistrergedadherent($nomOrigine, $nouveau_fichier, $taille);
|
||||||
|
$this->rediriger("Gedadherent");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Sinon on affiche une erreur systeme
|
||||||
|
$message = est_anglophone()
|
||||||
|
? 'Problem during loading!'
|
||||||
|
: 'Problème lors du chargement !';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$message = est_anglophone()
|
||||||
|
? 'An internal error prevented the loading'
|
||||||
|
: 'Une erreur interne a empêché le chargement';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// $message = 'Erreur dans les dimensions du fichier !';
|
||||||
|
$message = est_anglophone()
|
||||||
|
? $_FILES['fichier_upload']['size']." Error in the file dimensions!"
|
||||||
|
: $_FILES['fichier_upload']['size']." Erreur dans les dimensions du fichier !";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Sinon on affiche une erreur pour l'extension
|
||||||
|
$message = est_anglophone()
|
||||||
|
? 'File extension is incorrect!'
|
||||||
|
: 'Extension du fichier est incorrecte !';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Sinon on affiche une erreur pour le champ vide
|
||||||
|
$message = est_anglophone()
|
||||||
|
? 'Please select a file!'
|
||||||
|
: 'Veuillez sélectionner un fichier SVP !';
|
||||||
|
}
|
||||||
|
|
||||||
|
// fin upload
|
||||||
|
}
|
||||||
|
|
||||||
|
$msgErreur = $message;
|
||||||
|
|
||||||
|
$d1 = $_SESSION['dUneSemaineAvant_C'];
|
||||||
|
$d2 = date('Y-m-d');
|
||||||
|
|
||||||
|
$geds = $this->ged->getgedadherent($d1, $d2, "");
|
||||||
|
|
||||||
|
unset($_FILES['fichier_upload']);
|
||||||
|
|
||||||
|
$this->genererVue(array('geds' => $geds, 'msgErreur' => $msgErreur));
|
||||||
|
}
|
||||||
|
}
|
||||||
134
Controleur/ControleurGedbeneficiaireprod.php
Normal file
134
Controleur/ControleurGedbeneficiaireprod.php
Normal file
|
|
@ -0,0 +1,134 @@
|
||||||
|
<?php
|
||||||
|
require_once 'Framework/Controleur.php';
|
||||||
|
require_once 'Modele/Ged.php';
|
||||||
|
require_once 'Modele/Menuvueutilisateur.php';
|
||||||
|
|
||||||
|
class ControleurGedbeneficiaireprod extends Controleur {
|
||||||
|
private $ged;
|
||||||
|
|
||||||
|
public function __construct() {
|
||||||
|
$this->menuvue = new Menuvueutilisateur();
|
||||||
|
$this->menuvue->getMenuVue('Gedbeneficiaireprod');
|
||||||
|
|
||||||
|
$this->ged = new Ged();
|
||||||
|
}
|
||||||
|
|
||||||
|
public function index($msgErreur=null)
|
||||||
|
{
|
||||||
|
|
||||||
|
$message = "";
|
||||||
|
|
||||||
|
$nouveau_fichier = "Rien";
|
||||||
|
|
||||||
|
if(!empty($_POST))
|
||||||
|
{
|
||||||
|
define('TARGET', $_SESSION['cheminGed']); // Repertoire cible
|
||||||
|
define('MAX_SIZE', 10000000); // Taille max en octets du fichier
|
||||||
|
|
||||||
|
// Tableaux de donnees
|
||||||
|
// ".avi", ".bmp", ".doc", ".docx", ".gif", ".jpeg", "jpg", "jpe", ".mkv", ".mp3", ".pdf", ".png", ".pps", ".xls", ".xlsx", ".wav"
|
||||||
|
// $tabExt = array('jpg','png','jpeg'); // Extensions autorisees
|
||||||
|
|
||||||
|
$tabExt = array("avi", "bmp", "doc", "docx", "gif", "jpeg", "jpg", "jpe", "mkv", "mp3", "mp4", "pdf", "png", "pps", "xls", "xlsx", "wav"); // Extensions autorisees
|
||||||
|
|
||||||
|
// Variables
|
||||||
|
$extension = '';
|
||||||
|
|
||||||
|
if( !is_dir(TARGET) )
|
||||||
|
{
|
||||||
|
if( !mkdir(TARGET, 0755) )
|
||||||
|
{
|
||||||
|
$message = est_anglophone()
|
||||||
|
? 'Error: the target directory cannot be created! Check that you have sufficient rights to do so or create it manually!'
|
||||||
|
: 'Erreur : le répertoire cible ne peut être créé ! Vérifiez que vous disposez des droits suffisants pour le faire ou créez-le manuellement !';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// On verifie si le champ est rempli
|
||||||
|
if( !empty($_FILES['fichier_upload']['name']) )
|
||||||
|
{
|
||||||
|
// Recuperation de l'extension du fichier
|
||||||
|
|
||||||
|
$extension = pathinfo($_FILES['fichier_upload']['name'], PATHINFO_EXTENSION);
|
||||||
|
|
||||||
|
// On verifie l'extension du fichier
|
||||||
|
if(in_array(strtolower($extension), $tabExt))
|
||||||
|
{
|
||||||
|
$message = $_FILES['fichier_upload']['size'];
|
||||||
|
|
||||||
|
// On verifie les dimensions et taille du fichier
|
||||||
|
if($_FILES['fichier_upload']['size'] <= MAX_SIZE)
|
||||||
|
{
|
||||||
|
$taille = $_FILES['fichier_upload']['size'];
|
||||||
|
|
||||||
|
// Parcours du tableau d'erreurs
|
||||||
|
if(isset($_FILES['fichier_upload']['error']) && UPLOAD_ERR_OK === $_FILES['fichier_upload']['error'])
|
||||||
|
{
|
||||||
|
// On renomme le fichier
|
||||||
|
$nomOrigine = $_FILES['fichier_upload']['name'];
|
||||||
|
$nouveau_fichier = dateJourSql()."_".uniqid().".".$extension;
|
||||||
|
|
||||||
|
// Si c'est OK, on teste l'upload
|
||||||
|
if(move_uploaded_file($_FILES['fichier_upload']['tmp_name'], TARGET.$nouveau_fichier))
|
||||||
|
{
|
||||||
|
$message = est_anglophone()
|
||||||
|
? 'Uploaded successfully'
|
||||||
|
: 'Chargé avec succès';
|
||||||
|
|
||||||
|
// on va envoyer dans la base de données
|
||||||
|
$this->ged->enregistrergedbeneficiaireprod($nomOrigine, $nouveau_fichier, $taille);
|
||||||
|
$this->rediriger("Gedbeneficiaireprod");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Sinon on affiche une erreur systeme
|
||||||
|
$message = est_anglophone()
|
||||||
|
? 'Problem during loading!'
|
||||||
|
: 'Problème lors du chargement !';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$message = est_anglophone()
|
||||||
|
? 'An internal error prevented the loading'
|
||||||
|
: 'Une erreur interne a empêché le chargement';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$message = est_anglophone()
|
||||||
|
? $_FILES['fichier_upload']['size']." Error in the file dimensions!"
|
||||||
|
: $_FILES['fichier_upload']['size']." Erreur dans les dimensions du fichier !";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Sinon on affiche une erreur pour l'extension
|
||||||
|
$message = est_anglophone()
|
||||||
|
? 'File extension is incorrect!'
|
||||||
|
: 'Extension du fichier est incorrecte !';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Sinon on affiche une erreur pour le champ vide
|
||||||
|
$message = est_anglophone()
|
||||||
|
? 'Please select a file!'
|
||||||
|
: 'Veuillez sélectionner un fichier SVP !';
|
||||||
|
}
|
||||||
|
|
||||||
|
// fin upload
|
||||||
|
}
|
||||||
|
|
||||||
|
$msgErreur = $message;
|
||||||
|
|
||||||
|
$d1 = $_SESSION['dUneSemaineAvant_C'];
|
||||||
|
$d2 = date('Y-m-d');
|
||||||
|
|
||||||
|
$geds = $this->ged->getgedbeneficiaireprod($d1, $d2, "");
|
||||||
|
|
||||||
|
unset($_FILES['fichier_upload']);
|
||||||
|
|
||||||
|
$this->genererVue(array('geds' => $geds, 'msgErreur' => $msgErreur));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -38,7 +38,9 @@ class ControleurGedpolice extends Controleur {
|
||||||
{
|
{
|
||||||
if( !mkdir(TARGET, 0755) )
|
if( !mkdir(TARGET, 0755) )
|
||||||
{
|
{
|
||||||
$message = 'Erreur : le répertoire cible ne peut-être créé ! Vérifiez que vous diposiez des droits suffisants pour le faire ou créez le manuellement !';
|
$message = est_anglophone()
|
||||||
|
? 'Error: the target directory cannot be created! Check that you have sufficient rights to do so or create it manually!'
|
||||||
|
: 'Erreur : le répertoire cible ne peut être créé ! Vérifiez que vous disposez des droits suffisants pour le faire ou créez-le manuellement !';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -69,7 +71,10 @@ class ControleurGedpolice extends Controleur {
|
||||||
// Si c'est OK, on teste l'upload
|
// Si c'est OK, on teste l'upload
|
||||||
if(move_uploaded_file($_FILES['fichier_upload']['tmp_name'], TARGET.$nouveau_fichier))
|
if(move_uploaded_file($_FILES['fichier_upload']['tmp_name'], TARGET.$nouveau_fichier))
|
||||||
{
|
{
|
||||||
$message = 'Chargé avec succès / Uploaded successfully';
|
|
||||||
|
$message = est_anglophone()
|
||||||
|
? 'Uploaded successfully'
|
||||||
|
: 'Chargé avec succès';
|
||||||
|
|
||||||
// on va envoyer dans la base de données
|
// on va envoyer dans la base de données
|
||||||
$this->ged->enregistrergedpolice($nomOrigine, $nouveau_fichier, $taille);
|
$this->ged->enregistrergedpolice($nomOrigine, $nouveau_fichier, $taille);
|
||||||
|
|
@ -78,30 +83,39 @@ class ControleurGedpolice extends Controleur {
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// Sinon on affiche une erreur systeme
|
// Sinon on affiche une erreur systeme
|
||||||
$message = 'Problème lors du chargement !';
|
$message = est_anglophone()
|
||||||
|
? 'Problem during loading!'
|
||||||
|
: 'Problème lors du chargement !';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
$message = 'Une erreur interne a empêché le chargement';
|
$message = est_anglophone()
|
||||||
|
? 'An internal error prevented the loading'
|
||||||
|
: 'Une erreur interne a empêché le chargement';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
$message .= $_FILES['fichier_upload']['size']." Erreur dans les dimensions du fichier !";
|
$message = est_anglophone()
|
||||||
// $message = 'Erreur dans les dimensions du fichier !';
|
? $_FILES['fichier_upload']['size']." Error in the file dimensions!"
|
||||||
|
: $_FILES['fichier_upload']['size']." Erreur dans les dimensions du fichier !";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// Sinon on affiche une erreur pour l'extension
|
// Sinon on affiche une erreur pour l'extension
|
||||||
$message = 'Extension du fichier est incorrecte !';
|
$message = est_anglophone()
|
||||||
|
? 'File extension is incorrect!'
|
||||||
|
: 'Extension du fichier est incorrecte !';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// Sinon on affiche une erreur pour le champ vide
|
// Sinon on affiche une erreur pour le champ vide
|
||||||
$message = 'Veuillez sélectionner un fichier SVP! / Please select a file!';
|
$message = est_anglophone()
|
||||||
|
? 'Please select a file!'
|
||||||
|
: 'Veuillez sélectionner un fichier SVP !';
|
||||||
}
|
}
|
||||||
|
|
||||||
// fin upload
|
// fin upload
|
||||||
|
|
|
||||||
106
Vue/Gedadherent/index.php
Normal file
106
Vue/Gedadherent/index.php
Normal file
|
|
@ -0,0 +1,106 @@
|
||||||
|
<?php $this->titre = "INTER-SANTE - GED Famille"; ?>
|
||||||
|
|
||||||
|
<div class="container-fluid py-3">
|
||||||
|
<div class="alert alert-warning border-0 shadow-sm d-flex align-items-center mb-4">
|
||||||
|
<i class="fas fa-exclamation-circle fs-4 me-3"></i>
|
||||||
|
<div>
|
||||||
|
<strong><?= _("Information :") ?></strong>
|
||||||
|
<?= _("Affichage limité aux 50 derniers documents. Utilisez les filtres pour affiner votre recherche.") ?>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="row g-4">
|
||||||
|
<div class="col-xl-12">
|
||||||
|
<div class="card border-0 shadow-sm">
|
||||||
|
<div class="card-body">
|
||||||
|
<form enctype="multipart/form-data" action="Gedadherent" method="post">
|
||||||
|
<div class="row g-3">
|
||||||
|
<div class="col-md-3">
|
||||||
|
<label class="form-label small fw-bold text-muted text-uppercase"><?= _("Période du") ?></label>
|
||||||
|
<div class="input-group input-group-sm">
|
||||||
|
<span class="input-group-text bg-white"><i class="far fa-calendar-alt"></i></span>
|
||||||
|
<input class="form-control datepicker text-center" type="text" id="d1" name="d1"
|
||||||
|
value="<?= dateLang($_SESSION['dUneSemaineAvant_C'], $_SESSION['lang']) ?>" required>
|
||||||
|
<span class="input-group-text bg-light fw-bold"><?= _("au") ?></span>
|
||||||
|
<input class="form-control datepicker text-center" type="text" id="d2" name="d2"
|
||||||
|
value="<?= dateCouranteLang($_SESSION['lang']) ?>" required>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col-md-3">
|
||||||
|
<label class="form-label small fw-bold text-muted text-uppercase"><?= _("Nom du document") ?></label>
|
||||||
|
<input class="form-control form-control-sm" type="text" id="nomOrigine" name="nomOrigine" placeholder="<?= _("Rechercher un fichier...") ?>">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col-md-4">
|
||||||
|
<label class="form-label small fw-bold text-muted text-uppercase"><?= _("Nouveau Document") ?></label>
|
||||||
|
<input class="form-control form-control-sm border-info" name="fichier_upload" type="file" id="fichier_upload">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col-md-2 d-flex align-items-end gap-2">
|
||||||
|
<button type="button" class="btn btn-primary btn-sm flex-fill fw-bold" onclick="lister_ged_adherent();">
|
||||||
|
<i class="fas fa-sync-alt me-1"></i> <?= _("Filtrer") ?>
|
||||||
|
</button>
|
||||||
|
<button type="submit" name="submit" class="btn btn-success btn-sm flex-fill fw-bold">
|
||||||
|
<i class="fas fa-upload me-1"></i> <?= _("Envoyer") ?>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col-xl-12">
|
||||||
|
<div id="div_ged" class="card border-0 shadow-sm">
|
||||||
|
<?php if((isset($msgErreur)) && ($msgErreur > " ")) : ?>
|
||||||
|
<div class="alert alert-danger m-3 border-0 shadow-xs"><?= $msgErreur ?></div>
|
||||||
|
<?php endif; ?>
|
||||||
|
|
||||||
|
<div class="table-responsive">
|
||||||
|
<table id="table_ged_famille" class="table table-hover align-middle mb-0" style="font-size:8.5pt; width:100%;">
|
||||||
|
<thead class="table-dark text-nowrap">
|
||||||
|
<tr>
|
||||||
|
<th class="text-center">Date</th>
|
||||||
|
<th class="text-center">Src</th>
|
||||||
|
<th><?= _("Souscripteur / Police") ?></th>
|
||||||
|
<th><?= _("Prestataire") ?></th>
|
||||||
|
<th><?= _("Bénéficiaire (Adhérent)") ?></th>
|
||||||
|
<th><?= _("Nom du Document") ?></th>
|
||||||
|
<th class="text-center no-export"><?= _("Action") ?></th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<?php foreach ($geds as $ged):
|
||||||
|
$idGed = $this->nettoyer($ged['idGed']);
|
||||||
|
$cheminFichier = $this->nettoyer($ged['cheminFichier']);
|
||||||
|
?>
|
||||||
|
<tr class="text-nowrap">
|
||||||
|
<td class="text-center small text-muted"><?= dateheureLang($this->nettoyer($ged['dateSysteme'])) ?></td>
|
||||||
|
<td class="text-center"><span class="badge bg-light text-dark border small fw-normal"><?= $this->nettoyer($ged['source']) ?></span></td>
|
||||||
|
<td>
|
||||||
|
<div class="fw-bold"><?= $this->nettoyer($ged['souscripteur']) ?></div>
|
||||||
|
<div class="small text-primary">N° <?= $this->nettoyer($ged['numeroPolice']) ?></div>
|
||||||
|
</td>
|
||||||
|
<td class="small"><?= $this->nettoyer($ged['prestataire']) ?></td>
|
||||||
|
<td>
|
||||||
|
<div class="fw-bold"><?= $this->nettoyer($ged['beneficiaire']) ?></div>
|
||||||
|
<div class="small text-muted italic"><?= $this->nettoyer($ged['adherent']) ?></div>
|
||||||
|
</td>
|
||||||
|
<td class="small text-truncate" style="max-width: 200px;" title="<?= $this->nettoyer($ged['nomOrigine']) ?>">
|
||||||
|
<i class="far fa-file-alt me-1 text-secondary"></i> <?= $this->nettoyer($ged['nomOrigine']) ?>
|
||||||
|
</td>
|
||||||
|
<td class="text-center">
|
||||||
|
<a class="btn btn-xs btn-outline-danger shadow-sm fw-bold px-3" href="<?= $cheminFichier ?>" target="_blank">
|
||||||
|
<i class="fas fa-download me-1"></i> <?= _("Télécharger") ?>
|
||||||
|
</a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<?php endforeach; ?>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
0
Vue/Gedbeneficiaireprod/index.php
Normal file
0
Vue/Gedbeneficiaireprod/index.php
Normal file
Loading…
Reference in New Issue
Block a user