Accueil > SPIP > Champs extras > Champ extra, crayons, sqlite

Champ extra, crayons, sqlite

mardi 7 décembre 2010, par Maïeul

Pour un projet associatif, j’utilise une base de donnée [?SQLite] que je gère via SPIP.

J’ai ajouté à la table spip_articles de SPIP un champ extra, et je souhaitais pouvoir l’éditer via les Crayons.

Voilà comment j’ai procédé, une fois le champ extra ajouté.

Pour rendre éditable le champs (que j’appel ici #CHAMP) via les crayons, rien de plus simple.

<div class='#EDIT{champ}'>
#CHAMP

Seulement voilà : j’obtenais lors de l’édition, non un textarea mais un simple input, ce qui pour rend l’édition compliqué, puisque le contenu du champ peut faire plusieur ligne.

Le plugin crayon définit le type de champ de formulaire, appelé « Contrôleurs » affiché selon le type du champ SQL. Pour les champs de type TEXT, cela dépend de la longueur.

Seulement voilà, en SQLite, les champs de type TEXT ne peuvent avoir qu’une seule longueur. Il n’y a pas de TINYTEXT ou de MEDIUMTEXT ou autre BIGTEXT. C’est pourquoi j’avais systématiquement un input, et non pas un textarea.

Les crayons ont un contrôleur et une vue [1] par défaut pour les champs extra, mais on peut en définir des nouveaux pour chaques types de champ.

Le contrôleur

Dans mon dossier de squelettes [2], j’ai créé un dossier controleurs, dedans un squelette champ.html, qui contient ceci

[(#REM)

	Controleur pour le crayon 'champ' , uniquement html

]
#CACHE{0}

<BOUCLE_a(ARTICLES){id_article}{statut==.}>
<textarea class="crayon-active" name="#ENV{name_champ}"
 style="width:#ENV{largeur}px; height:#ENV{hauteur}px;#ENV{style}">
 
[(#CHAMP**)]</textarea>
</BOUCLE_a>

La vue

Idem, dans mon dossier de squelettes, j’ai créé un dossier vues.
Et dans ce dossier un fichier champ.html, qui contient

[(#REM)

	Vue pour le crayon 'champ'

]
#CACHE{0}
<BOUCLE_a(ARTICLES){id_article}{statut==.}>
[(#CHAMP|propre)]
</BOUCLE_a>

Et voilà, j’ai désormais mes crayons qui me permettent d’éditer un champ texte long avec une base SQLite.


J’ai choisi d’utiliser SQLite

  1. Pour économiser une base [?MySQL] chez L’Autre.net, qui limite le nombre à six par adhérents
  2. Parce que je n’avais pas besoin d’une base MySQL, étant donné que seulement cinq personnes peuvent la consulter, et que donc les performances ne sont pas vraiment en jeux.
  3. Parce qu’il est plus simple de récupérer par FTP le fichier SQLite que de passer par PhpMyAdmin pour faire un export [3].

[1i. e. ce qui est affiché après la modification d’un champ via les crayons.

[2Qui est sous forme de plugin, .cf mon article « Jeux de squelettes sous forme de plugin ».

[3SQLite ne fonctionne pas selon un schéma client/serveur, mais avec un fichier local. Cause, en partie, de ses faibles performances.

Un message, un commentaire ?

Qui êtes-vous ?
Votre message

Pour créer des paragraphes, laissez simplement des lignes vides.

Lien hypertexte

(Si votre message se réfère à un article publié sur le Web, ou à une page fournissant plus d’informations, vous pouvez indiquer ci-après le titre de la page et son adresse.)