Objectifs
Créer un plugin qui permet à l’utilisateur de créer son diplôme en format PDF après avoir saisi son nom et prénom.
Étape 1 : Créer le plugin
Le plus simple pour créer un plugin propre est de le créer via La Fabrique.
On choisit :
- un préfixe : diplome
- choisir d’avoir les fichiers d’installations.
Une fois le plugin crée, éditer le paquet.xml pour ajouter la dépendance au plugin FPDF . Celui-ci s’installera automatiquement à l’activation du plugin.
<necessite nom="fpdf" compatibilite="[1.0.0;]" />
Étape 2 : Créer un répetoire à l’activation du plugin
A l’activation du plugin, on souhaite créer un sous répertoire /IMG/diplome/ pour stocker les futurs PDFs.
Dans fichier d’installation diplome_administrations.php, nous ajoutons une fonction pour créer le sous-répertoire IMG/diplome
function diplome_create() {
include_spip('inc/getdocument');
creer_repertoire_documents('diplome');
}
Cette fonction doit être appelée dans la fonction diplome_upgrade qui gère l’installation et mise à jour des plugins.
function diplome_upgrade($nom_meta_base_version, $version_cible) {
$maj = array();
$maj['create'] = array(
array('diplome_create')
);
include_spip('base/upgrade');
maj_plugin($nom_meta_base_version, $version_cible, $maj);
}
Étape 3 : Créer le formulaire CVT
Ensuite nous allons créer le formulaire CVT demandant nom et prénom.
Pour cela, on crée un répertoire formulaires avec le couple diplome.html et diplome.php
diplome.html
Le fichier renseigne la structure HTML du document. Pour nous simplifier la tâche, nous utilisons la syntaxe simplifiée du plugin saisies
<div class="formulaire_spip formulaire_salon">
[<p class="reponse_formulaire reponse_formulaire_erreur">(#ENV*{message_erreur})</p>]
[<p class="reponse_formulaire reponse_formulaire_ok">(#ENV*{message_ok})</p>]
[(#EDITABLE|oui)
<form action="#ENV{action}" method="post"><div>
#ACTION_FORMULAIRE{#ENV{action}}
<ul>
[<input type="hidden" name="lang" value="(#ENV{lang})" />]
[(#SAISIE{input,nom,label=<:diplome:form_nom:>,size=35})]
[(#SAISIE{input,prenom,label=<:diplome:form_prenom:>,size=35})]
</ul>
<p style='display:none;'>
<label for="url">Veuillez laisser ce champ vide :</label>
<input type="text" name="url" id="url" value="" size="10" />
</p>
<p class="boutons"><input type="submit" class="submit" value="Valider" /></p>
</div></form>
]
</div>
En bonus, on ajoute un champs caché pour gêner les spammeurs.
diplome.php
Le fichier gère le formulaire en php à travers les étapes
- Charger : on initialise les variables
- Vérifier : on traite les erreurs (par exemple les champs obligatoires)
- Traiter : il n’y pas d’erreur, on peut lancer la création du PDF. Voir chapitre suivant ...
Pour en savoir plus sur les formulaires CVT
Étape 4 : Créer le pdf
A l’étape du traitement du formulaire, on crée le PDF à la volée en chargeant un PDF patron vierge et en remplissant des valeurs du formulaires.
Pour cela, on charge :
- la librairee fpdf pour la création du pdf en lui-même
- la librairie fpdi pour l’import d’un pdf existant
function formulaires_diplome_traiter_dist(){
// ... le traitement initial
// la création du pdf
define('FPDF_FONTPATH','font/');
include_spip('fpdf');
include_spip('fpdi');
// On crée le pdf
$pdf = new FPDI('L','mm','A4');
$pdf->AddPage();
$pdf->SetMargins(0,0);
// On importe le diplome vierge
$pdf->setSourceFile(find_in_path("pdf/diplome.pdf"));
$tplIdx = $pdf->importPage(1);
$pdf->useTemplate($tplIdx, 0, 0, 0, 0, true);
// on ajouter le texte complémentaire
$pdf->SetFont('Arial','B',16);
$pdf->SetTextColor(70,70,70);
$pdf->SetXY(70, 118);
$pdf->Cell(0,0, iconv('UTF-8', 'windows-1252', $prenom." ".$nom));
$pdf->SetFont('Arial','',14);
$pdf->SetXY(170, 158);
$pdf->Cell(0,0, date("d / m / Y"));
// on sauve dans le repertoire dedie (crée lors de l'installation)
$nom_final = _DIR_IMG."/diplome/".$nom_pdf;
$pdf->Output($nom_final, 'F');
// la suite du traitement
// ....
Pour connaitre toutes les possibilités, consulter les manuels de
Étape 5 : Intégrer le formulaire dans le site
Le webmaster pourra intégrer ce formulaire dans son squelette via la balise #FORMULAIRE_DIPLOME
.
Nous ajoutons un modèle pour que le rédacteur puisse aussi l’ajouter en utilisant le raccourci <diplome1>
.
modeles/diplome.html
<div class="ajax">#FORMULAIRE_DIPLOME</div>
Étape 6 : Aller plus loin
Télécharger le plugin avec le code complet fonctionnel
Libre à vous ensuite de le personnaliser, corriger et aller plus loin comme par exemple :
- Envoyer le pdf généré par email grâce au Facteur qui permet d’envoyer des pièces jointes
- D’ajouter un cryptogramme sur le pdf (ticket personnalisé)
- Ajouter un QR code
- Générer une attestation, un billet de concert, une facture, ....
- .....
Aucune discussion
Ajouter un commentaire
Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :
Merci d’avance pour les personnes qui vous aideront !
Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.
Suivre les commentaires : |