Le principe va être le même et donc je ne vais pas détailler les mêmes choses. Cette table est volumineuse, et a des colonnes que nous allons également migrer dans des liaisons.
Voici ce que nous avons à migrer entre autres choses, qui diffèrent par rapport au premier article sur le sujet :
- 1 champ « pertinence » qui ira en champs extras ’pertinence’ dans spip_gis
- 1 champ « pays » qui contient un nom de pays, et sera migré vers un identifiant de pays
Et ce qu’il faudra faire en plus de la migration :
- créer / gérer le champs extra sur spip_gis,
- des saisies spécifiques dans cette table comme la sélection d’une ville dans la table spip_villes du même plugin. Ce n’est pas un lien dans ce qu’on me demande, ça aide simplement à retrouver certaines données comme l’insee de la ville, aussi stocké dans cette table de lieu.
Déclarer l’objet dans la Fabrique
On l’a déjà vu, donc nous cliquons :
- « Ajouter un objet éditorial »
- Pré-construire le contenu du formulaire avec la table que l’on désire
- Modifier certaines infos (ici la construction de sait pas que le singulier est « lieu », il faut donc le renseigner : dans la description, ET dans la partie « tables » / « spécificités des tables hors normes » on l’on indique le nom de clé primaire « id_lieu » et le type « lieu ». [1]
- Pour chaque champs de la table, remplir plus précisément les infos (noms explicites, saisies souhaité pour l’édition, pondération de recherche) et éventuellement vérifier que les déclarations SQL n’ont pas de NULL autorisés sans valeur par défaut
- On active dans « fichiers échafaudés »
prive/squelettes/contenu/lieux.html
, qui offre simplement en plus un petit formulaire de recherche, qui sera pratique sur notre table volumineuse
Créer le champ pertinence dans GIS
Il faut :
- déclarer le champs extra (dans
paquet.xml
et dansbase/prefixe.php
) - ajouter les codes d’installation / désinstallation de ce champ
- l’ajouter sa valeur en même temps que la migration
Dans la Fabrique, on ajoute la ligne du pipeline dans paquet > codes à insérer > paquet.xml
ainsi que la dépendence au plugin Champs Extras. [2] [3]
On ajoute la fonction de déclaration du champs dans paquet > codes à insérer > bases > prefixe.php
:
Ainsi que les procédures d’installation / désinstallation dans administrations.php
que l’on peut ajouter avant l’importation des données.
- installation :
- déinstallation :
Il restera, à posteriori à ajouter la chaîne de langue geoniche:pertinence
.
Ajouter une saisie pour le champ INSEE
Dans la table lieux, il faut faire renseigner un champ INSEE de commune. On retrouvera une liste de ces valeurs à partir du code postal choisi.
La saisie (à placer dans saisies/insee.html
) peut ressembler à cela :
Aussi, on ajoutera un petit javascript qui rechargera la liste des INSEE possibles dès que la valeur du code postal change, dans le squelette du formulaire d’édition :
Ce squelette appelle une page « ajax-insees » qui peut contenir le strict minimum tel que :
Conserver une partie des informations ajoutées au plugin après sa création
Avec la version 1.12.0 de la fabrique arrive un petit utilitaire pour simplifier certaines opérations à effectuer après la création du plugin lors de l’exécution du script post_creation. C’est une classe PHP nommée « Futilitaire » et incluse dans inc/futilitaire.php
du plugin Fabrique.
Elle contient pour l’instant 2 fonctions utiles :
-
deplacer_fichiers($liste)
qui indique de deplacer du backup (l’ancienne création) vers la nouvelle création la liste des fichiers indiques. C’est donc une liste des fichiers que l’on a ajouté au plugin qui est a donner. -
inserer_lignes($chemin, $start, $len, $code)
qui permet d’ajouter des lignes de code dans un des fichiers présents, à partir de la ligne indiquée dans$start
(peut être négatif pour partir de la fin du fichier), en supprimant$len
lignes du fichier, et en insérant le contenu de$code
à cet emplacement.
Voici un exemple :
Dans l’interface de la fabrique, dans Paquet > Scripts à exécuter > post_creation
, j’ai simplement l’inclusion d’un fichier et l’exécution d’une fonction :
Dans le plugin généré, j’ajoute donc ce fichier à la racine fabrique_geoniche_post_creation.php
(vous l’appelez comme bon vous semble) contenant :
Du coup, à chaque fois que je génère mon plugin via la Fabrique, je ne perds pas les fichiers indiqués et il me remet ce code là où je lui dis.
À vrai dire, cela a peu d’utilité certainement pour vous, à part le fait de se dire qu’on peut regénérer le plugin sans perdre de modifications, pour peu qu’on ai listé ici toutes les modifications que l’on a fait. Pour ma part, cela m’aide à pouvoir ajouter de nouvelles fonctions dans la fabrique sans perdre de petites modifications de code déjà réalisées.