Important : Ce plugin nécessite que le plugin snippets soit installé et activé. Son zip est disponible sur l’espace de téléchargement de la Zone : http://files.spip.org/spip-zone/sni....
La transformation des fichiers ODT impose que l’extension XSL de PHP soit active sur le serveur apache
Installation
- téléchargez le zip du plugin sur http://files.spip.org/spip-zone/odt...
- pour l’installation et l’activation, suivez la procédure standard : cf la documentation officielle
Utilisation
Rien que de très simple : une fois le plugin activé, dans la page de gestion d’une rubrique vous trouverez un lien supplémentaire sous la boite des raccourcis : "Créer un article à partir d’un fichier OOo Writer".
Ce lien ouvre la boite de dialogue qui permet de choisir le fichier à télécharger depuis votre ordinateur.
Une fois validé l’article est automatiquement créé avec le statut "proposé à la publication", si nécessaire le fichier ODT original est attaché comme document à l’article et le plugin vous bascule sur la page de cet article.
La transformation opérée par le plugin
Ce plugin ne fait qu’une transformation du contenu du fichier en code SPIP : il n’assure aucun miracle si votre fichier initial est construit de façon non-conforme aux règles de l’utilisation d’un traitement de texte et ne fera rien que vous ne puissiez reproduire avec les raccourcis typographiques de SPIP...
Un exemple de page générée à partir d’un fichier "type" : http://tice.aix-mrs.iufm.fr/demo/sp...
Plus de précisions :
-
il est nécessaire d’avoir utilisé les styles pour définir les titres dans le fichier OpenOffice si vous voulez que le plugin les détecte. La conversion se fait selon les règles suivante (que les puristes passent leur chemin, il n’y a ici aucun respect des aspects sémantiques habituellement liés à l’utilisation des raccourcis typographiques !) : - si il existe au moins un paragraphe avec le style Titre, son contenu est utilisé pour générer le titre de l’article. Sinon c’est le Titre de niveau le plus important qui est utilisé : Titre 1 > Titre 2 > Titre 3... .
- Le premier niveau de Titres est transformé en intertitres SPIP
{{{Titre niveau 1 intertitre}}}(si Titre 1 n’existe pas, Titre 2 est utilisé à sa place, Titre 3 à la place de Titre 2, et ainsi de suite) - le deuxième niveau est mis en gras et séparé du restant par des sauts de lignes
{{Titre niveau 2 en gras}} - tous les autres niveaux de titre sont passés en italique et séparés par des sauts de ligne
{Titres de niveau 3, 4, 5... en italique}
- si d’aventure vous aviez décidé d’utiliser le plugin Enluminure typographique ou le plugin Intertitres hiérarchisés qui définissent et utilisent des niveaux de titres supplémentaires (vade retro satanas !), odt2spip détecte leur présence et, automatiquement, utilise les raccourcis "enrichis" tels que
{2{titre niveau deux}2} ou {4{titre niveau quatre}4}(ces raccourcis sont interprétés par ces 2 plugins). - Le plugin récupère les images intégrées dans le fichier d’origine à condition qu’elles soient au format jpg ou png ou gif (n’espérez rien si vous avez des fichier BMP ou TIFF intégrés !), les retaille pour approximer du mieux possible la taille qu’elles avaient dans le texte, les intègre comme documents SPIP et les place avec un raccourci de la forme
<imgXXX|left> ou <imgXXX|right> ou <imgXXX|center>en fonction de la position à laquelle se trouvait l’image dans le texte d’origine. - Les formules mathématiques (rédigées à l’aide de l’éditeur d’équation natif d’OOo Writer ou des outils complémentaires tels l’excellent Cmath) sont en principe complètement gérées : le plugin génère le code LateX et le place dans une balise math :
<math>$\frac{\sqrt{2x+9}}{4y-6}=\frac{\alpha 3}{\beta 2}$</math> - Les notes de bas de page sont gérées sans problèmes ni restrictions.
- Pour les tableaux, pas de problème tant que vous n’essayez pas de faire des tableaux imbriqués (c’est à dire un tableau dans une cellule de tableau) : les fusions de cellules horizontales et verticales sont gérées en principe correctement.
- Les listes à puce et numérotées, imbriquées ou non, sont en principe correctement gérées tant qu’elles ne sont pas interrompues par d’autres éléments (donc pas de reprise de numérotation d’une liste à la suivante).
Eléments non-gérés ou supprimés
- Pour les tableaux et les listes le plugin ne gère pas les contenus ayant un style de Titre.
- Les fioritures de style de texte sont limitées à celles autorisées par les raccourcis typographiques : gras et italique donc pas de texte de couleur ni avec des fonds colorés (beurk !), pas de variations de police ni de taille de texte (ce qui évitera que les rédacteurs pourrissent la charte graphique du site !)
- Les en-têtes, pieds de page, index ou table des matières sont purement et simplement supprimés.
- Les dessins (flêches, bulles et autres formes crées avec l’outil de dessin d’OOo Writer) ne sont pas (encore ?) supportés.
TO DO
- Comme d’habitude, piètre graphiste que je suis, si quelqu’un avait le courage de faire un logo moins crasseux, il est le bienvenu ! Merci popojcb !
- Ajouter la gestion des dessins SVG intégrés dans le fichier texte (avec une version jpg obtenue par conversion automatique pour les navigateurs qui supportent pas svg..)
- Ajouter la gestion des équations mathématiques qui sont en MathML dans le fichier texte (si vous connaissez un convertisseur MathML -> LaTeX écrit en PHP et open-source, merci de me prévenir !) Merci Amaury Adon pour m’avoir trouvé la référence de la librairie XSLT "MathML 2.0 to LaTeX"
- Ajouter une interface de configuration CFG pour rendre paramétrable les conversion "imposées" pour les niveaux de titre...
Notes techniques
Le moteur de transformation du fichier odt est basé sur une feuille de style XSLT (/odt2spip/inc/odt2spip.xsl) qui opère sur le fichier content.xml extrait du fichier odt envoyé. Cette transformation permet de produire un fichier xml au format requis par le plugin snippets. Ce fichier est stocké temporairement dans le répertoire /tmp/odt2spip/XXX/snippet_odt2spip.xml ou XXX représente l’id_auteur en cours. La création de l’article proprement dite à partir de ce fichier est assurée par le plugin snippets. Le répertoire temporaire de l’auteur (/tmp/odt2_spip/XXX) est effacé à la fin de l’opération.
Si vous souhaitez participer au développement de ce plugin ou faire des modifications du convertisseur XSLT, le répertoire /tests de ce plugin comprend un fichier ODT type ainsi que le fichier xml correspondant pour réaliser vos tests.
Si vous êtes sur un SPIP mutualisé, il se peut que vous ayez des problèmes de chemins vers les fichiers lors de la transformation xslt : voir ce fil de discussion pour une éventuelle solution (pour PHP 5) problème réglé avec la version [0.14].
Versions
[version 0.11] support des formules mathématiques
[version 0.12] choix du mode d’intégration des images (img / doc)
[version 0.13] choix de la langue de publication de l’article généré
[version 0.14] compatibilité avec la mutualisation du noyau SPIP 2.0
Ce plugin existe désormais en 2 version :
- La version stable (0.14 actuellement) assure un maximum de compatibilité PHP / SPIP : php5 + spip 2.0.* , php5 + spip 1.9.2*, php4 + spip 2.0.*, php4 + spip 1.9.2*.
C’est celle que vous trouverez dans le zip proposé au téléchargement. - la version de développement : étant donné le temps passé à gérer les problèmes liés à l’utilisation de ces différentes versions, les évolutions futures seront exclusivement PHP 5 + SPIP 2.0 !
Cette version n’est disponible que via SVN (svn://zone.spip.org/spip-zone/_plug...)





Télécharger le plugin