feat: ajout la possibilité de joindre des fichiers téléverser.

Attention, ces fichiers ne sont pas sauvegardés.
Fichiers acceptés :
    * images
    * pdf
This commit is contained in:
Christophe 2023-11-09 14:23:36 +01:00
parent 1f870feae8
commit 57e1466497
5 changed files with 162 additions and 67 deletions

View file

@ -110,11 +110,12 @@
</div>
</div>
<div class="flex gap-6">
<div class="w500p">
#SET{fichier,#SLUG|concat{_soustexte}}
[(#CHEMIN{gamumail/#GET{fichier}.html}|oui)
<INCLURE{fond=gamumail/#GET{fichier},env,lang=#GET{lang_dest}}>
]
#SET{name,Tpdfs_ok}
<B_pdf>
<h2><:gamumail:pdf_envoyes:></h2>
@ -160,7 +161,6 @@
</B_docs_spip>
</div>
</div>
#SET{fichier,all_fichiers}
[(#CHEMIN{gamumail/#GET{fichier}.html}|oui)
#SET{erreurs,#ENV**{erreurs}|table_valeur{Tid_doc}}
@ -175,8 +175,15 @@
<h2><:gamumail:fichiers_annexes:></h2>
<INCLURE{fond=gamumail/#GET{fichier},env,options=#ENV{options}}>
]
</div>
<div class="minw-500p">
<h2><:gamumail:fichiers_televerser:></h2>
<INCLURE{fond=inclure/bigform,env,accept=#LISTE{image/*, application/pdf},suffix_liste_fichiers=gamumail}>
</div>
</div>
<div class="boutons">
<div class="boutons text-center">
<button type="submit" class="btn"><:gamumail:envoyer:></button>
</div>
</div></form>

View file

@ -112,6 +112,8 @@ function formulaires_gamumail_charger_dist($slug, $destinataires = 0, $Tclient =
$valeurs = $f($valeurs, $options, $slug, $destinataires, $Tclient, $Tpdf, $redirect);
}
$valeurs['_bigup_rechercher_fichiers'] = true;
return $valeurs;
}
@ -197,6 +199,21 @@ function formulaires_gamumail_verifier_dist($slug, $destinataires = 0, $Tclient
$erreurs = $f($erreurs, $options, $slug, $destinataires, $Tclient, $Tpdf, $redirect);
}
/*
* Verification des fichiers téléversés
*/
defined('_IMG_MAX_WIDTH') || define('_IMG_MAX_WIDTH', 2048);
$options = [
'mime' => 'tout_mime',
'dimension_max' => [
'largeur' => 10000,
'hauteur' => 10000,
]
];
$bigform = charger_fonction('bigform_verifier','inc');
$bigform($options,$erreurs);
return $erreurs;
}
@ -233,12 +250,22 @@ function formulaires_gamumail_traiter_dist($slug, $destinataires = 0, $Tclient =
}
}
/*
* on recupère d'éventuels fichiers téléversés
*/
include_spip('inc/joindre_document');
set_request('joindre_upload','ok');
$Tfiles = joindre_trouver_fichier_envoye();
if (!is_array($Tfiles)) {
$Tfiles = [];
}
if (empty($envoi_separe)) {
gamuSend($slug, $options, $destinataires, $Tclient, $Tpdf, $redirect, $retour);
gamuSend($slug, $options, $destinataires, $Tclient, $Tpdf, $Tfiles, $redirect, $retour);
} else {
$ok = true;
foreach ($destinataires as $d) {
$r = gamuSend($slug, $options, [$d], $Tclient, $Tpdf, $redirect);
$r = gamuSend($slug, $options, [$d], $Tclient, $Tpdf, $Tfiles, $redirect);
if (!$r) {
$ok = false;
}
@ -263,7 +290,7 @@ function formulaires_gamumail_traiter_dist($slug, $destinataires = 0, $Tclient =
}
function gamuSend($slug, $options, $destinataires, $Tclient, $Tpdf, $redirect, &$retour = []) {
function gamuSend($slug, $options, $destinataires, $Tclient, $Tpdf, $Tfiles, $redirect, &$retour = []) {
$cc = _request('cc');
$cci = _request('cci');
@ -341,6 +368,19 @@ function gamuSend($slug, $options, $destinataires, $Tclient, $Tpdf, $redirect, &
];
}
}
// les documents par tFiles (téléversés)
if (!empty($Tfiles)) {
foreach ($Tfiles as $key => $fichier) {
$pieces_jointes[] = [
'chemin' => $fichier['tmp_name'],
'nom' => $fichier['name'],
'encodage' => 'base64',
'mime' => $fichier['type']
];
}
}
// les pdfs générés en fonction du contexte
$Tpdf_del = [];
if (!empty($Tpdfs_ok) and is_array($Tpdfs_ok)) {
@ -437,7 +477,6 @@ function gamuSend($slug, $options, $destinataires, $Tclient, $Tpdf, $redirect, &
$corps['repondre_a'] = $repondre_a;
}
// surcharges de traiter : d'abord les surcharges pour tous les slugs (tous_traiter.php) puis les spécifiques par slug (nom_slug_traiter.php)
if ($f = charger_fonction('traiter', 'gamumail', true)) {
$corps = $f($corps, $options, $slug, $destinataires, $Tclient, $Tpdf, $redirect);

View file

@ -0,0 +1,48 @@
<style type="text/css" media="screen">
.fichier .description {
display: flex;
flex-direction: row;
/* margin-bottom: 6px; */
}
.fichier .description:hover {
background-color:rgba(177, 187, 196,0.5);
}
.fichier .previsualisation {
margin: 5px;
}
.html_titre {
display: none!important;
}
</style>
[(#REM)
surcharge du fichier de bigform :
- inclure/inc-bigup_liste_fichiers.html
]
<B_fichiers>
<div class='bigup_fichiers fichiers_[(#ENV{nom}|concat{#ENV{multiple}|=={oui}|?{\[\]}}|bigup_nom2classe)]'>
<BOUCLE_fichiers(DATA){source tableau, #FICHIERS|bigup_lister_fichiers{#ENV{nom},#ENV{multiple}}}>
<div class='fichier'>
<div class="description">
[(#VALEUR{bigup/vignette/data}|oui)
<div class="previsualisation #VALEUR{bigup/extension}" title="[(#NAME|attribut_html)] ([(#SIZE|taille_en_octets)])">
<span style="background-image:url([(#VALEUR{bigup/vignette/data})]);"></span>
</div>]
[(#VALEUR{bigup/vignette/data}|non)
<div class="vignette_extension #VALEUR{bigup/extension}" title="[(#TYPE|attribut_html)]"><span></span></div>]
<div class='infos'>
<span class='name'><strong>#NAME</strong></span>
<span class='size'>[(#SIZE|taille_en_octets)]</span>
</div>
<div class='actions'>
<button class='btn' type='submit'
name='bigup_enlever_fichier' value="#VALEUR{bigup/identifiant}"
onclick="jQuery(this).parents('form').find('input,textarea,select').filter('[required]').prop('required', false); return true;">
<:bigup:bouton_enlever:>
</button>
</div>
</div>
</div>
</BOUCLE_fichiers>
</div>
</B_fichiers>

View file

@ -39,6 +39,7 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
// F
'fichiers_annexes' => 'Fichiers annexes',
'fichiers_televerser' => 'Fichiers téléversés',
// I
'icone_creer_gamumail' => 'Créer un gamumail',

View file

@ -15,7 +15,7 @@
<licence>GNU/GPL</licence>
<necessite nom="bigform" compatibilite="[1.0.0;[" />
<necessite nom="bigform" compatibilite="[1.3.3;[" />
<necessite nom="crayons" compatibilite="[2.0.10;[" />
<necessite nom="facteur" compatibilite="[4.0.0;[" />