Carnet Wiki

Proposition de fonctionnement alternatif pour l’insertion des documents

Version 8 — Septembre 2010 Joseph

Le fonctionnement des modèles pour l’insertion des documents soulève régulièrement des questions, notamment parce <doc13>, <img13> ou encore <emb13> ne produisent pas le même résultat et que ce résultat, pour les images, dépend du fait d’être dans le portfolio ou non.

Le fonctionnement des modèles pour l’insertion des documents soulève régulièrement des questions, notamment parce <doc13>, <img13> ou encore <emb13> ne produisent pas le même résultat et que ce résultat, pour les images, dépend du fait d’être dans le portfolio ou non.
Comme l’écrit Romy,

<blockquote class="spip">

Qui sait expliquer clairement la différence entre les « images » et les « documents » de SPIP ? Quand faut-il utiliser le raccourci d’insertion <img314>, celui <doc314> ou encore <emb314> ? et quelles sont précisément leurs différences ? Pourquoi est-ce si difficile à retenir ?

</blockquote>

(Source : http://romy.tetue.net/mais-ou-est-p...) .
)

Sur la liste SPIP-Zone, Cédric expliquait :

<blockquote class="spip">

Le sujet est un serpent de mer, contraint par la compatibilté ascendante. Pour le moment on a fait le choix de ne pas la casser, ce qui a des limites.

</blockquote>

(Source : http://permalink.gmane.org/gmane.co...)

Avant de poursuivre la discussion, on pourra lire la documentation officielle à cette adresse http://www.spip.net/fr_article3715.html.

Objectif

La présente proposition vise à définir un comportement unifié des différents modèles d’incrustation. Ce comportement unifié pourra ensuite être implémenté dans un premier temps dans un plugin dédié avant d’envisager son intégration éventuelle au core.

Ce plugin fournira également une aide en ligne actualisée ainsi qu’une aide à l’insertion des modèles (au travers du plugin inserer_modeles en cours de développement).

Les modèles existants (doc, emb, img, image, audio, video, text, application) ne seront pas modifiés afin d’assurer la rétrocompatibilité.

Un unique modèle

Reprenant l’idée suggérée par Romy Têtue, un seul modèle sera à retenir avec un appel unifié de la forme :

Côté utilisateur

Les deux usages principaux sont <mediaXX> et <mediaXX|emb>.

Afficher le logo du document

<mediaXX>, sans paramètre additionnel, quelque le soit le type et le mode du document, affichera systématiquement le logo du document [1] avec un lien pointant sur le document et la légende (titre, descriptif et crédits [2]).

Si l’on souhaite forcer l’affichage de l’icône, même en présence d’une vignette, on pourra utiliser la variante <mediaXX|ico>.

De même, si on souhaite, pour les images, forcer l’affichage d’une vignette, même si on n’a pas activé les vignettes automatiques, on pourra utiliser la variante <mediaXX|vignette>.

<mediaXX|variante|alignement|parametres>&lt;/code >   XX  représente  l'identifiant  du  document . On  pourra  préciser  l'alignement  de  la  manière  usuelle  &lt; code>&lt;mediaXX|right</code >. 


Toutes les insertions se font au travers d'un unique modèle <code><media>

avec plusieurs variantes. Volontairement, afin de distinguer le nouveau système du système actuel, on n’a pas repris <doc>.

Les différentes variantes

| Variante | Description |
| logo | Affiche le logo du document [3] |
| icone | Affiche l’icône du document [4] |
| vignette | Affiche une vignette du document (vignette personnalisée, sinon calculée à partir de l’image) [5] |
| embed | Incrustation du document en fonction de son groupe MIME [6] |
| image | Incrustation d’une image (groupe MIME : image) |
| audio | Incrustation d’un son (groupe MIME : son) |
| video | Incrustation d’une vidéo (groupe MIME : video) |
| text | Incrustation d’un document texte du groupe MIME text |
| application | Incrustation d’un document du groupe MIME application |

Alignement

Incruster le document

L’alignement se précise comme actuellement avec |left, |center et |right.

Exemple : <media34|icone|right>

Les autres paramètres

On aura recours à un raccourci unique <mediaXX|emb>, le modèle se chargeant d’incruster correctement le document en fonction de son type (voir aspects techniques).

Lorsqu’on incruste le document avec <mediaXX|emb> sans paramètre additionnel, la légende n’est pas affichée. On peut demander l’affichage de la légende avec <mediaXX|emb|legende>.

Il est également possible de passer un titre et un descriptif au modèle pour la légende qui viendront remplacer les valeurs par défaut du document avec <mediaXX|titre=mon titre|descriptif=mon descriptif>. Ceci est particulièrement utile dans le cas d’un site multilingue pour traduire les titres et descriptif.

Les paramètres hauteur et largeur pourront être utilisés quelque soit le type de document incrusté. On pourra utiliser de manière alternative |width= et |height=.

| Paramètre | Description |
| legende | - paramètre absent, la légende (titre + descriptif + crédits) n’est pas affichée.

- |legende pour afficher la légende.
|
| titre | optionnel, permet de personnaliser le titre si la légende est affichée (exemple : <media32|logo|legende|titre=Un autre titre>) |
| descriptif | - optionnel, permet de personnaliser le descriptif
- |descriptif=non pour ne pas afficher le descriptif |
| lien | - paramètre absent, pas de lien sur l’icône, la vignette ou l’image
- |lien pour ajouter un lien pointant sur le document
-

|lien=http://monsite.net&lt;/code Un  paramètre  &lt; code>|taille=&lt;/code > ou acceptant  trois  valeurs  &lt;code>|lien=rub2&lt;/code code>petit&lt;/code >,  <code>moyen&lt;/code > pour  spécifier  un  lien  particulier |
 |  lien_class  |   Optionnel ,  permet  d'ajouter  une  classe  CSS  sur  le  lien  | 
|   class  |   Optionnel ,  permet  d'ajouter  une  ou  plusieurs  classes  CSS  sur  le  document  | 
|   alt  |   Optionnel ,  permet  de  personnaliser  le  texte  alternatif  | 
|   lang  |   Optionnel ,  permet  de  spécifier  la  langue  de  la  légende  et du  texte  alternatif  | 
|   taille  |   Optionnel ,   &lt; code>grand&lt;/code >  peut prendre  trois  valeurs  :   petit ,  moyen  être  utilisé  de  manière  alternative  à  &lt; code>hauteur&lt;/code >  et grand ,  correspondant  à   &lt; code>largeur&lt;/code >  pour  définir  trois tailles standards (paramétrables dans l'interface privée, par défaut 100 px, 250px, 500px[[à discuter pour les valeurs par défaut]]) |
| hauteur | Optionnel, une alternative au paramètre taille, permettant de définir une hauteur spécifique en pixels |
| largeur | Optionnel, une alternative au paramètre taille, permettant de définir une largeur spécifique en pixels [[Si entre hauteur et largeur seul un des deux paramètres est spécifié, le second sera déduit par proportionnalité (ratio hauteur/largeur préservé). ]] ). |


Tableau à compléter, notamment pour les contrôleurs audio et video


{{{Paramètres pris en compte par chaque variante}}}


| {{Paramètre}} | {{logo}} | {{icone}} | {{vignette}} | {{image}} | {{audio}} | {{video}} | {{text}} | {{application}} |
| legende | Oui | Oui | Oui | Oui | Oui | Oui | Oui | Oui |
| titre | Oui | Oui | Oui | Oui | Oui | Oui | Oui | Oui |
| descriptif | Oui | Oui | Oui | Oui | Oui | Oui | Oui | Oui |
| class | Oui | Oui | Oui | Oui | Oui | Oui | Oui | Oui |


Tableau à remplir


{{{Cas du modèle appelé sans variante}}}


Il peut arriver que le modèle soit appelé sans spécifier de variante (exemple : <code><media24|left>

).

Dans cette situation indéterminée, plutôt que de ne rien afficher, le modèle retournera l’équivalent de <media24|logo|left|legende|lien. Autrement, en l’absence de variante, on affichera le logo du document avec sa légende et un lien pointant vers le document. C’est un comportement similaire à celui de <doc24|left> [7].

Pour les images, le paramètre lien est maintenu. Il permet de spécifier un lien sur lequel pointe l’image. Avec <mediaXX|emb|lien>, l’image pointera sur elle-même (utile quand on incruste une image en réduisant sa taille pour voir l’image dans sa taille réelle). Avec <mediaXX|emb|lien=http://monlien.net> ou <mediaXX|emb|lien=rub34> on peut spécifier un autre lien.

L’alignement (left, right ou center) sera toujours précisé de la même manière. Par exemple : <mediaXX|emb|left>

Côté technique

Une variante par groupe MIME

Reprenant le fonctionnement actuel de <emb>, la variante le modèle <code>media_embed code>media_emb .html sous-traitera le travail à plusieurs modèles en fonction du type MIME du document : media_image.html, media_audio.html, media_video.html, media_text.html et media_application.html.

Dès lors, il est sera possible d’utiliser également les des variantes de la forme <mediaXX|image>, <mediaXX|audio>, <mediaXX|video>, <mediaXX|text> et <mediaXX|application>.

<mediaXX|embed> et <mediaXX|image> produiront exactement le même résultat si XX est une image.  [ et si XX est une image." id="nh8">8].

Permettre une variante par extension

Il est possible de définir une variante par extension sous la forme modeles/media_groupeMIME_extension.html. Lors de l’incrustation d’un fichier, on vérifiera l’existence d’un modèle spécifique pour cette extension (< < code>modeles/media_groupeMIME_extension.html</code>), >, sinon on utilisera le modèle générique du groupe MIME modeles/media_groupeMIME.html.

Pour les images, on pourrait ainsi avoir un modèle générique modeles/media_image.html et un modèle spécifique pour le SVG : modeles/media_image_svg.html.

Ainsi, avec le lecteur multimedia, pour la prise en charge des mp3, le plugin pourrait proposer un modèle media_audio_mp3.html qui appelle le player fourni par le plugin. Dans mon article, je mets juste <code><media123|embed></code code><media123|emb></code > qui saura tout seul trouver le bon modèle. Maintenant, je désactive le lecteur multimedia, <media123|embed>&lt;/code <code><media123|emb>&lt;/code > sera toujours pris en charge par le modèle générique <code>modeles/media_audio.html qui incrustera le MP3 dans une balise <object>. Ce qui est mieux qu’une simple icone dans le cas présent. [9].

Classes ajoutées systématiquement

Quelque soit la variante utilisée, on ajoutera, en plus des classes usuelles spip_documents, spip_document_#ID_DOCUMENT et spip_documents_#ENV{align}, les classes suivantes : media_#ENV{variante} et media_#ENV{variante}_#EXTENSION.

Audio et Vidéo

Faut-il faire évoluer les modèles audio et video pour prendre en compte les nouvelles balises HTML 5, éventuellement en intégrant une solution de compatibilité telle que OIplayer ?

A faire

-* Intégrer certaines recommandations de Accessibilité pour les rédacteurs.