[spip-dev] Spip et Flash

Hello

Sur le conseil de Fil, je viens poser ma question sur cette liste puisque la
question est plutôt liée au développementŠ

Je ne suis pas développeur moi-même (je bidouille un peu de php, sans plus)
mais je trouverais intéressant de pouvoir coller une animation Flash dans un
article de la même façon qu'on colle une photoŠ

Pour info, voici le type de code généré par Dreamweaver pour un fichier swf
:

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.ca
b#version=4,0,2,0" width="700" height="500">
                  <param name=movie value="mon_animation.swf">
                  <param name=quality value=high>
                  <embed src="mon_animation.swf" quality=high
pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_
Version=ShockwaveFlash" type="application/x-shockwave-flash" width="700"
height="500">
                  </embed>
                </object>

Lorsqu'on génère le code avec Aftershock, on a quelque chose de beaucoup
plus complet :

<!-- Aftershock mon_animation.swf 3=700 4=400 17 38 45 40 -->
<OBJECT classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
codebase="http://active.macromedia.com/flash2/cabs/swflash.cab#version=3,0,
0,0"
ID=beauchamp WIDTH=700 HEIGHT=500>
  <PARAM NAME=movie VALUE="mon_animation.swf">
  <PARAM NAME=play VALUE=false>
  <PARAM NAME=quality VALUE=autohigh>
  <PARAM NAME=bgcolor VALUE=#FFFFFF>

<SCRIPT LANGUAGE=JavaScript>
<!--
function checkForShockwave()
{
    navigator.plugins.refresh();
    if ( navigator.plugins["Shockwave Flash"] ){
        parent.location.reload();
    } else {
        setTimeout( "checkForShockwave()", 1000 );
    }
}
var ShockMode = 0;
var OldVersionOfPlugin = 0;
if (navigator.mimeTypes &&
navigator.mimeTypes["application/x-shockwave-flash"] &&
navigator.mimeTypes["application/x-shockwave-flash"].enabledPlugin) {
    if (navigator.plugins && navigator.plugins["Shockwave Flash"])
        ShockMode = 1;
    else
        OldVersionOfPlugin = 1;
}
if (!ShockMode && navigator.appName && navigator.appName.indexOf("Netscape")
!= - 1 && navigator.appVersion.indexOf("4.") != - 1
&& navigator.javaEnabled() && netscape.softupdate.Trigger.UpdateEnabled() &&
document.cookie.indexOf("StartedShockwaveInstall") == -1) {
    var jarPath = new String("");
    if (navigator.platform.indexOf("Win32") >= 0 )
        jarPath =
"http://download.macromedia.com/pub/shockwave/jars/english/silentflash32.jar
"
    else if (navigator.platform.indexOf("Win16") >= 0 )
        jarPath =
"http://download.macromedia.com/pub/shockwave/jars/english/silentflash16.jar
"
    else if (navigator.platform.indexOf("MacPPC") >= 0 )
        jarPath =
"http://download.macromedia.com/pub/shockwave/jars/english/silentflashppc.ja
r"
    if (jarPath.length) {
        netscape.softupdate.Trigger.StartSoftwareUpdate (jarPath,
netscape.softupdate.Trigger.FORCE_MODE);
        document.cookie='StartedShockwaveInstall;path=/;'
        setTimeout("checkForShockwave()", 1000);
    }
}
//-->
</SCRIPT><EMBED SRC="mon_animation.swf"
swLiveConnect=FALSE WIDTH=700 HEIGHT=500
PLAY=false QUALITY=autohigh BGCOLOR=#FFFFFF
TYPE="application/x-shockwave-flash"
PLUGINSPAGE="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_
Version=ShockwaveFlash">
</EMBED></OBJECT><!-- EndAftershock mon_animation.swf -->

Je ne connais pas suffisamment Php pour développer cette fonctionnalité,
mais je pense que ce second code demande une analyse un peu plus poussée du
fichier (hauteur, largeur, couleur de fond de l'animation, etcŠ). Ce code
plus complet est nécessaire lorsqu'on utilise certaines fonctionnalités de
Flash, notamment lorsqu'on appelle des scripts à l'extérieurŠ Mais je ne
pense pas qu'il soit utile de permettre tout ça dans Spip (cela permettrait
d'autoriser des scripts à travers Flash et poserait donc des problèmes de
sécuritéŠ).

Le premier code, qui restreint ces fonctionnalités, semble donc plus indiqué
(et en plus il est plus simple !). Le problème est alors de pouvoir
récupérer les dimensions (hauteur et largeur) de l'animation. Je ne sais pas
si cela est possible en php comme cela l'est pour les imagesŠ

Ou faut-il prévoir des champs afin que l'utilisateur saisisse lui-même la
hauteur et largeur de l'animation ?

Enfin, se pose le problème du preview : je ne suis pas certain que cela soit
nécessaire. Par contre, il faut peut-être prévoir, dans la page, un gif qui,
déformé aux dimensions de l'animation, permettrait d'indiquer la présence et
l'emplacement réservé à l'animation dans l'article (comme les blocs gris qui
représentent les fichiers flash dans DreamweaverŠ).

Voilà ! C'était quelques réflexions en vracŠ Si quelqu'un se sent d'attaqueŠ

Pascal