lundi 22 août 2005
J’ai lu avec intérêt l’article d’@lexandre, "Intégration de FCKeditor 2.0 FC à spip 1.8" et celui d’Aurélien PIERARD, "Utiliser l’éditeur WYSIWYG HTMLAREA 3.0 sous SPIP", et comme je n’ai pas vu d’article traitant directement de la dernière version stable de FCKeditor 2.1.1 [Edit :2.3.2] et de SPIP 1.8.2 [Edit : 1.8.3], je propose le mien !
FCKeditor semble plus abouti que HTMLarea dont le suivi semble incertain. Par contre l’implémentation faite par Aurélien PIERARD me semble plus intéressante. En effet même si je n’ai découvert SPIP que très récemment, je sais bien que l’utilisation d’un éditeur Wysiwyg à la place de l’éditeur texte de SPIP ou un autre autre Système de Gestion de Contenu est souvent sujet à la même hostilité (à juste titre) de la part de certains utilisateurs et webmestres. C’est pourquoi le choix d’Aurélien d’offrir l’utilisation de l’éditeur Wysiwyg de façon optionnelle en tant que fenêtre séparée, sans remplacer l’éditeur original de SPIP me semble une excellente idée propre à satisfaire les deux camps :
Les rédacteurs ne voulant pas entendre parler des éditeurs Wysiwyg pourront utiliser SPIP comme avant.
Ceux préférant les éditeurs Wysiwig pourront s’en servir, tout en ayant la possibilité de s’en passer pour les textes simples sans mise en page complexe. Cette solution conserve toutefois des
INCONVENIENTS.
Les fichiers envoyés sur le serveur par l’intermédiaire de FCKeditor sont partagés entre tous les utilisateurs. Le manque de sécurité est du au fait que par défaut il est possible de supprimer / renommer / les fichiers et dossiers. Il est possible de désactiver ces fonctionnalités à l’aide du fichier de configuration. [Edit :cette fonctionnalité a été supprimée dans les versions suivantes de FCKeditor]
Indépendance des fichiers envoyés par l’intermédiaire de FCKeditor et de SPIP. Même s’il est possible que le « dossier utilisateur » de FCKeditor soit défini au même endroit que celui de SPIP ( /IMG/ ), FCKeditor ne cherche ses fichiers que dans 4 sous-dossiers bien précis (File, Image, Flash et Media) et n’a pas accès aux sous-dossiers par type d’extensions de fichiers (gif, jpeg ...) créés par SPIP.
Il est FORTEMENT DECONSEILLE d’alterner entre l’utilisation de l’éditeur SPIP et l’éditeur Wysiwyg POUR UN MEME ARTICLE. En effet l’utilisation des balises SPIP (images, rubriques, etc...) est souvent altérée par l’éditeur Wysiwyg. Quand vous modifiez un article, utilisez toujours le même mode que celui utilisé pour le créer.
Perte des liens vers les rubriques SPIP, etc (cf. ci-dessus).
Bien que cette contribution gère les articles longs (vous avez un bouton WYSIWYG par zone de saisie), chaque instance de FCKeditor n’a pas connaissance des autres fenêtres qui constituent l’article. Comme SPIP découpe ses articles “à la hache” sans préoccupation de l’endroit où la coupure se fait, la structure html de chaque fenêtre est souvent incorrecte (balises d’ouverture ou de fermeture). Dès que vous éditez une des fenêtres avec FCKeditor, l’éditeur essaie de corriger ces erreurs de bonne fois. Malheureusement quand SPIP sauvegarde et « recolle » le tout, le résultat à l’écran est souvent ... pittoresque.
Ma solution a ce problème, pour des articles qui ne sont pas énormes, mais tout de même considérés comme longs par SPIP :
J’ai constaté qu’avec Internet Explorer 6 ou Firefox 1.0.6, conserver une fenêtre d’édition unique est très bien gérée. Si vous êtes dans ce cas, vous pouvez téléchargez un fichier article_edit.php3 de remplacement dans les pièces jointes qui empêche SPIP de scinder les articles longs.
INSTALLATION
Téléchargez l’archive "FCKeditor2.3.2_SPIP_PHP3_TB.tgz" (distribution originale de FCKeditor adaptée à SPIP)
Dézippez le fichier localement dans un répertoire temporaire.
Copiez le contenu du dossier /ecrire/ dans le dossier du même nom de votre site SPIP.
Copiez le dossier /FCKEditor/ à la racine de votre site SPIP
Ouvrez le fichier "/ecrire/fckeditor_maconfig.js"
Indiquez à la variable "oFCKeditor_BasePath" le chemin où vous avez copié le dossier "FCKeditor", sans oublier le "/" à la fin du chemin :
Si votre site SPIP est http://mon_domaine/spip/, le dossier de « FCKeditor » sera http://mon_domaine/spip/FCKeditor/ . Dans ce cas il faudra indiquer :
Fermez et sauvegardez le fichier
Ouvrez dans le même dossier le fichier "/ecrire/fckeditor_maconfig.php3".
Indiquez à la variable "$fckeditor_userdir" le chemin du dossier où sont stockés les fichiers utilisateurs. Utilisez le chemin relatif par rapport à la racine du serveur web, sans le slash de fin. Vous pouvez utiliser le dossier proposé par défaut "FCKeditorFiles" et le placer à la racine du site SPIP :
Si votre site SPIP est http://mon_domaine/spip/ , vous copierez le dossier "FCKeditorFiles" vers http://mon_domaine/spip/FCKeditorFiles/ alors il faudra indiquer :
Vous pouvez également utiliser le dossier /IMG/ de SPIP, mais bien que partageant le même dossier de base, les fichiers envoyés par FCKeditor ne seront pas utilisables par l’éditeur classique de SPIP et réciproquement (cf. paragraphe INCONVENIENTS plus haut). Dans ce cas :
Si votre site SPIP est http://mon_domaine/spip/ et que vous utilisez le dossier "IMG" de SPIP (http://mon_domaine/spip/IMG/) alors il faudra indiquer :
Si vous voulez empêcher la suppression et le renommage de dossiers ou fichiers, voire empêcher l’envoi de fichiers, positionnez les variables de type "$fckeditor_autoriser_" à "false". [EDIT : plus possible avec la version 2.3]
Sauvegardez et fermez le fichier.
Copiez le dossier « /FCKeditorFiles/ » vers l’emplacement et avec le nom que vous venez de choisir ci-dessus, sauf si vous voulez utiliser le dossier IMG comme dossier des fichiers utilisateurs pour FCKeditor. Dans ce cas copiez les 4 dossiers contenus dans SpipFCKeditorFiles ("File", "Media", "Flash" et "Image") vers le dossier /IMG/de votre site SPIP.
Maintenant l’éditeur FCKeditor adapté à SPIP est en place. Il ne reste plus qu’à indiquer à SPIP comment s’en servir. En fonction de votre version, vous devez maintenant télécharger les patchs des fichiers article_edit.php3 et breve_edit.php3 (SPIP 1.8.1d et 1.8.2 jusqu’à 1.8.3) :
FCKeditor_patch_SPIP1.8.1d_php3_TB.zip
FCKeditor_patch_SPIP1.8.2_php3_TB.zip
Envoyez tous les fichiers du dossier /Spip/ecrire/ vers le répertoire /ecrire/ de votre site SPIP en écrasant les fichiers. Une copie des fichiers originaux est incluse au cas où, utilisable si bien sur vous utilisiez une version non modifiée du fichier. Dans le cas contraire, il faudra faire vous même une copie des fichiers "articles_edit.php3" et "breves_edit.php3".
En principe vous pouvez dès maintenant utiliser FCKeditor pour éditer des articles ou des brèves en cliquant sur le nouveau bouton prévu à cet effet.
SI VOUS UTILISEZ UN AUTRE SERVEUR QUE APACHE
Si vous avez suivi les instructions ci-dessus à la lettre, FCKeditor DOIT marcher ( !). Si malgré tout ce n’est pas le cas, il se peut que vous utilisiez un autre serveur qu’Apache, ou une configuration particulière d’Apache. Dans ce cas :
Ouvrez le fichier "/ecrire/fckeditor_maconfig.php3".
Indiquez à la variable "$fckeditor_basedir" le [chemin physique] de la racine du serveur web. Exemple :
Enregistrez et fermez
PROBLEMES SPECIFIQUES A FCKEDITOR
Si vous utilisez Firefox, les boutons de collage ne fonctionnent pas, il faut utiliser les raccourcis clavier. c’est une "sécurité" de Firefox, désactivable manuellement dans un des fichiers de configuration de Firefox. Exemple ici :
http://www.mozilla.org/editor/midasdemo/securityprefs.html
en changeant évidemment l’URL autorisée.
Il est possible aussi d’installer un plugin, “AllowClipboard Helper” (non testé) : AllowClipboard Helper
Si vous utilisez Firefox, si vous venez d’ouvrir un article, il est impossible de sélectionner du texte pour le supprimer, d’utiliser la touche INS ou DEL. Solution : insérer d’abord un espace n’importe où puis l’effacer.(EDIT : problème corrigé sur la version 2.1.1)
Une fois que vous avez envoyé un fichier sur le serveur, il n’apparait pas. Il faut re-sélectionner le dossier, ou actualiser la fenêtre. [Edit : corrigé]
MODIFICATIONS AU CODE SOURCE
Cette section n’est pas à réaliser, il s’agit juste de monter les modifications effectuées. Seuls deux fichiers de la distribution SPIP sont modifiés, articles_edit.php3 et breves_edit.php3
articles_edit.php3 :
Pour plus de clarté voici les différences colorées :

breves_edit.php3
MISE A JOUR DE SPIP
Même si l’installation parait un peu compliquée, une fois que tout fonctionne, les fichiers de FCKEditor
sont complètement indépendants du fonctionnement de SPIP, en dehors de la modification à article_edit.php3 (et pour les brèves si vous l’avez également modifié) pour ajouter l’appel à FCKEditor.
Une mise à jour de SPIP ne touchera pas à FCKditor, il n’y aura évidemment pas toute l’installation à refaire. Par contre article_edit.php3 sera vraisemblablement écrasé par la mise à jour. Pour retrouver le bouton de l’éditeur, il suffit de réintroduire les quelques modifications à ce
fichier comme expliqué ci-dessus, en vous aidant de l’image en couleur pour repérerer les deux ou trois endroits à éditer.
CONCLUSION
J’ai testé cette modification sur Windows XP, Ubuntu, Apache 1.33 et 2 en local, ainsi que chez l’hébergeur payant OVH. Chez Free il est probable que des problèmes apparaitront du aux restrictions de cet hébergeur, notemment sur les fonctions liées aux fichiers envoyés sur le serveur.
Je n’ai pas modifié la ligne "$texte = entites_html($texte) ;" du fichier "articles_edit.php3", je n’ai pas vu de problèmes particuliers avec l’affichage des balises.
FCKEditor 2.3.2
FCKEditor 2.1.1 (pour conserver la possibilité de renommer/supprimer les fichiers)
Patch pour SPIP 1.8.1d
Patch pour SPIP 1.8.2 à 1.8.3)
Je reprécise qu’il y a deux archives à télécharger :
FCKEditor (adapté à SPIP)
Un fichier de patch correspondant à votre version de SPIP
Les deux sont indépendants.
[chemin physique] : différent des URL web