Carnet Wiki

Complément de documentation Bigup

Version 4 — Septembre 2022 JLuc

Intégrer ces notes à la documentation une fois qu’elles seront validées : https://git.spip.net/spip/bigup

Voir :
-  Le README du repo
-  Le dossier de doc dans le wiki du repo et sa page d’accueil

Utiliser Bigup dans un formulaire

Un début de documentation existe mais il n’est pas complet : https://git.spip.net/spip/bigup#user-content-cr%C3%A9ation-d-un-formulaire-pour-uploader-les-fichiers

Voici quelques notes pour compléter.

Il y a 2 cas de figure :

1. Formulaire sans saisies
2. Formulaire avec saisies

0. Se signaler à Bigup dans le charger

Dans tous les cas, il faut indiquer à bigup de rechercher les fichiers uploadés dans le formulaire en ajoutant une clé _bigup_rechercher_fichiers dans le charger :

$valeurs['_bigup_rechercher_fichiers'] = true;

1. Formulaire sans saisies

HTML

Ajouter la classe bigup sur l’input file : [1]

<input type="file" id="#GET{name}" name="#GET{name}" class="file bigup" />
PHP

Enfin, ajouter une fonction inc_bigup_medias_formulaire_xxx_dist.
Celle-ci est nécessaire pour ajouter un token unique sur l’input du formulaire.
Exemple pour un #FORMULAIRE_PATATES :

/**
 * @param array $args
 * @param \Spip\Bigup\Formulaire $formulaire
 * @return \Spip\Bigup\Formulaire
 */
function inc_bigup_medias_formulaire_patates_dist($args, $formulaire) {
	$formulaire->preparer_input_class(
		'bigup', // 'file' pour rendre automatique.
		['previsualiser' => true]
	);
	return $formulaire;
}

2. Formulaire avec saisies

Le plus simple est de faire un formulaire en saisies et d’utiliser la saisie bigup.

Si les saisies sont déclarées en HTML il n’y a rien de spécial à faire :

[(#SAISIE_FICHIER{bigup, file_pdf_article,
	label=<:plugin:label_file:>,
	obligatoire=oui})]

Pour des saisies en php, il faut transmettre l’environnement au moyen de l’option env :

[
	'saisie' => 'bigup',
	'options' => [
		'nom' => 'file_pdf_article',
		'label' => _T('plugin:label_file'),
		'env' => true, // nécessaire pour le token (form + formulaire_args)
	],
],

Attention, l’option obligatoire n’est pas encore correctement prise en compte.
Pour l’instant il faut vérifier l’obligation soi-même dans le verifier du formulaire, exemple :

function formulaires_truc_verifier_dist() {
	// Fichier obligatoire
	if (
		!isset($_FILES['file_pdf_article'])
		or !file_exists($_FILES['file_pdf_article']['tmp_name'])
	) {
		$erreurs['file_pdf_article'] = _T('info_obligatoire');
	}
	return $erreurs;
}