Title: SAV Library Extension Generator
1SAV Library Extension Generator
- TYPO3 Summer University 2009 - ANNECY
Date 24 juin 2009 Laurent Foulloy
(Polytech'Savoie)
2Plan
- Développement d'extensions
- Pourquoi un générateur ?
- Les fonctionnalités du générateur
- Un exemple simple
- En conclusion
3Développement dextensions
- Chaque extension répond à des besoins
spécifiques - Chaque extension consomme du temps en
programmation et en mise au point - pourtant les extensions reposent souvent sur
des fonctionnalités voisines sur pour les
"plugins" en Front End
4Développement dextensions
- Besoins récurrents pour un plugin FE
- 1) Création de vues multiples des données
- tt_news LIST, LATEST, SINGLE, ARCHIVE, CATMENU
- ve_guestbook LIST, TEASER, FORM
- 2) Saisie des données en FE
5Développement dextensions
- Risque davoir autant dinterfaces que de
programmeurs - Les évolutions des cahiers des charges sont
autant de verrues dans les programmes - La maintenance est complexe car propre à chaque
extension
6Développement dextensions
- Avec TYPO3, l'outil de base est le
Kickstarter !
7Développement dextensions
Informations générales
Multi linguisme
Création ou extension de tables
Choix du type de plugin
8Développement dextensions
9Développement dextensions
mais pourquoi ?
10Développement dextensions
11Pourquoi un générateur ?
- Automatisation totale du processus de
construction de l'extension - Aucun code php à écrire
- Passage à un niveau "méta" reposant sur un
langage simple de configuration. - Toutes les opérations s'effectuent au niveau du
Kickstarter qui devient presque un éditeur.
12Pourquoi un générateur ?
13Fonctionnalités principales
- On appelle "requête de formulaire", une requête
SQL sélectionnant un ensemble d'enregistrements
relatifs à une table. - On appelle "vue de formulaire" une des
catégories suivantes - La présentation de l'ensemble des enregistrements
(vue showAll) - La présentation d'un enregistrement (vue
showSingle) - La saisie ou la modification d'un enregistrement
(vue inputForm) - Des présentations spéciales (vue updateForm, vue
printForm) - On appelle "formulaire", le regroupement d'une
ou plusieurs vues opérant sur les données issues
d'une requête de formulaire.
14Fonctionnalités principales
- Création de plusieurs formulaires dans la même
extension - Saisie des données en FE
- Organisation des vues avec des onglets
- Génération demails incluant des marqueurs
15Fonctionnalités principales
- Génération de fichiers RTF incluant des marqueurs
- Exportation des données au format CSV
- Possibilité dintégrer des graphiques, du TS
- Aide en ligne (multilinguisme géré au niveau du
serveur de traduction)
16Configurations
- Chaque extension est configurable par un flexform
- Le template de chaque vue peut être modifié,
éventuellement pour chaque extension - La CSS de chaque extension peut éventuellement
être modifiée - Les icônes sont modifiables
17Configurations
- La configuration du générateur (viewers,
queriers, itemviewers, ) est définie par un
fichier XML et est facilement modifiable - Un mécanisme natif et simple de surcharge permet
dajouter ou de modifier les méthodes du
générateur (extension sav_library_extends)
18Documentation
- Le générateur intègre une aide en ligne (anglais,
français) - La documentation comprend 10 tutoriaux expliquant
les fonctionnalités principales - Les évolutions du générateur sont gérées à l'aide
de la forge TYPO3 http//forge.typo3.org/projects/
show/extension-sav_library
19Un exemple simple (1) Objectif
- Téléchargement de documents avec des catégories
- Une vue pour la saisie des informations
- Une vue globale
- Et pourquoi pas
- Une indication pour les nouveaux documents
- Tri par date et par catégorie
- Icône selon le type de fichier
20Un exemple simple (2) Organisation des tables
- Quatre champs pour la table des documents
- Titre du document (title de type "String input")
- Catégorie du document (category "Database
relation") - Date de saisie du document (date de type "Date
and Time") - Fichier (file de type "Files")
- Un champ pour la table des catégories
- Nom de la catégorie (name de type "String input")
21Un exemple simple (2) Organisation des tables
22Un exemple simple (3) Définition du formulaire
- Activation du générateur
- Définition des vues
- Vue All et son template
- Vue Input
- Définition de la requête
- Définition du formulaire
23Un exemple simple (4) Template pour la vue "All"
- Pour chaque vue de type "ShowAll" un
mini-template est à définir. Il contient des
marqueurs relatifs aux champs à afficherltulgt
ltli class"date"gtdatelt/ligt ltli
class"category"gtcategorylt/ligt ltli
class"file"gtfilelt/ligtlt/ulgt
24Un exemple simple (5) Configuration et
installation
- Pour chaque vue, on sélectionne et on configure,
si besoin, chaque champ. - Dans un premier temps, on ne fait que
sélectionner les champs - Les trois champs associés aux trois marqueurs
pour la vue "showAll" - Les quatre champs pour la vue "inputForm"
- On sauvegarde et on peut installer l'extension
25Un exemple simple (6) Configuration on peut
jouer
- Une aide en ligne est disponible pour chaque type
de champ - Quelques possibilités
- Taille du champ de saisie de 80 caractères
- Affichage du titre à la place du nom de fichier
dans "All" - Une entête dans le titre
- Tri sur certains éléments du titre
- Une icône pour les nouveaux documents
26Quelques exemples sur le web
- http//www.straschu-ie.de
- http//www.ehrenamt-sh.de
- http//www.allbids.it/cms/index.php
- http//www.polytech.univ-savoie.fr
- http//www.polytech.univ-savoie.fr
27Quelques exemples du TER
- Contact List (sav_library_example1)
- CD Collection (sav_library_example2)
- Guest book (sav_library_example7)
- Gestion des fe users (sav_library_example8)
- XML JpGraph (sav_library_example9)
- Galerie de photos avec google map
(sav_library_example10)
28En conclusion
- Avantages
- Aucun code php pour développer une extension
- Mécanisme dinterface utilisateur identique pour
toutes les extensions - Un seul code à maintenir le générateur
- Toute nouvelle fonctionnalité sapplique à toutes
les extensions
29En conclusion
- Améliorations
- Le code peut être amélioré car certaines parties
sont anciennes et ont été développées rapidement - Des tests unitaires ont été introduits dans la
version 3.0.0 il en reste beaucoup à écrire ! - Le Kickstarter mériterait d'être repensé !
- Intégration dans la version 4.3 passage à MVC
(Modèle Vue Contrôleur). -