Editeur de texte

Soyez le premier à donner votre avis sur cette source.

Vue 17 420 fois - Téléchargée 3 797 fois

Description

Voila un petit éditeur de texte en FlashMX.
Il se base sur le principe du TextFormat de textField :
récupérer les propriétés du TextFormat de la sélection en cour, puis les modifier.

Il permet de mettre en gras, italique, souligner, indenter la ligne ou le bloc, pucer, centrer ou aligner a droite ou gauche, choisir l'interligne, la taille, la police, la couleur, d'ajouter un lien (et de le supprimer), de mémoriser un format, d'appliquer celui mémorisé, de gommer une partie du format, et d'appliquer des styles de format.

Comme il est n'est pas en FlashMX 2004, on ne bénéficiera pas des feuilles de styles qui auraient été bien pratique pour définir... le style ;-p

Source / Exemple :


function cleanFlash($source) {
    $source=str_replace('KERNING="0"','',$source);
    $source=str_replace('LETTERSPACING="0"','',$source);
    // ajuster les paragraphes
    $source=preg_replace("'<TEXTFORMAT([^>]*)><LI[^>]*>(.*?)</LI></TEXTFORMAT>'si","<li \$1>\$2</li>",$source);
    $source=preg_replace("'<TEXTFORMAT([^>]*)><P([^>]*)>(.*?)</P></TEXTFORMAT>'si","<p\$1\$2>\$3</p>",$source);
    $source=preg_replace("'<li([^>]*)>'i","<ul>
<li\$1>" ,$source);
    $source=preg_replace("'</li>'i","</li>
</ul>" ,$source);
    $source=preg_replace("'FACE=\"([^\"]*)\"'i","font-family:\$1;",$source);
    //$source=preg_replace("'LEADING=\"(\d+)\"'i","line-height:\$1px;",$source);
    //$source=preg_replace("'LEADING=\"(\d+)\"'i","line-height:1.\$1em;",$source);
    $source=preg_replace("'LEADING=\"(\d+)\"'i","",$source);
    $source=preg_replace("'SIZE=\"(\d+)\"'i","font-size:\$1px;",$source);
    $source=preg_replace("'COLOR=\"([^>]+)\"'i","color:\$1;",$source);
    $source=preg_replace("'ALIGN=\"([^\"]*)\"'i","text-align:\$1;",$source);
    $source=preg_replace("'BLOCKINDENT=\"(\d+)\"'i","margin-left:\$1px; margin-right:\$1px;",$source);
    $source=preg_replace("'INDENT=\"(\d+)\"'i","text-indent:\$1px;",$source);
    $source=preg_replace("'<FONT([^>]*)>'i","<span\$1>",$source);
    $source=preg_replace("'</FONT>'i","</span>",$source);
    // balise css clean
    $source=preg_replace("'<span ([^>]*)'i","<span style=\"\$1\"",$source);
    $source=preg_replace("'<p([^>]*)'i","
<p style=\"\$1\"",$source);
    $source=preg_replace("'<B>(.*?)</B>'si","<strong>\$1</strong>",$source);
    $source=preg_replace("'<I>(.*?)</I>'si","<em>\$1</em>",$source);
    $source=preg_replace("'<li([^>]*)'i","
<li style=\"\$1\"",$source);
    $source=preg_replace("'<li([^>]*)line-height'i","<li\$1margin-bottom",$source);
    // gommer les valeurs vides
    $source=preg_replace("'TARGET=\" *\"'i","",$source);
    $source=preg_replace("'style=\" *\"'i","",$source);
    $source=preg_replace("'style=\" +'","style=\"",$source);
    $source=preg_replace("'\040+'","\040",$source);
    $source=str_replace('</ul><ul>','',$source);
    $source=preg_replace("'<span([^>]*)></span>'",'',$source);
    // gommer les paragraphes inutiles pour des retour a la ligne
    $source=preg_replace("'<p *>(.*?)</p>'si","\$1<br />",$source);
    // gommer les valeurs par défaut :
    $source=preg_replace("'<p style=\"line-height:1.2em; text-align:LEFT;\">'i","<p>",$source);
   // $source=str_replace('<span style="font-family:Arial; font-size:12px; color:#333333;">','<span>',$source);
   // gommer les balises vides
    $source=str_replace('<strong></strong>','',$source);
    $source=preg_replace("'<span *>([^<]*)</span>'si","\$1",$source);
    $source=preg_replace("'<p>(.*?)</p>'si","\$1<br />",$source);
    $source=str_replace('<li style="margin-bottom:2px;">','<li>',$source);
    $source=preg_replace("'(\r\n|\n|\r)+'","\n",$source);
    return ($source);
}
function flashBack ($source) { // pour annuler le micro-encodage html de flash
    $source=str_replace("&quot;",'"', $source);
    $source=str_replace("&apos;","'", $source);
    $source=str_replace("&amp;","&", $source);
    $source=str_replace(">",">", $source);
    $source=str_replace("<","<", $source);
    //$source=str_replace('\\"','"', $source);
    //$source=str_replace("\\'","'", $source);
     $source=stripslashes ($source);
    return ($source);
}

Conclusion :


Merci a whitemagus pour sa première version (qui m'a mise sur la voie du textformat et non de l'insertion de balise).
Dans cette version le menu Fichiers ne me servait a rien, donc il ne fonctionne pas. Libre à vous de le faire marcher (comme whitemagus qui a utilisé les sharedobject).

Pti bug : l'interligne ne se met pas a jour lorsqu'on change la sélection (la valeur change, mais pas le chiffre lorsque l'on sélectionne autre chose)

Extension : si ca intéresse quelqu'un j'ai fait une moulinette PHP pour le texte HTML généré par flash, de manière à ce qu'il soit compatible w3c, et l'alléger (retirer les balises inutiles et les valeurs par défaut)

Enjoy

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

cs_bali_balo
Messages postés
1381
Date d'inscription
samedi 9 octobre 2004
Statut
Membre
Dernière intervention
1 novembre 2010
-
Parfait!!!
Enfin une source COMPLETE, et qui fonctionne!!!
Même l'idée " n'est pas ""trop"" original" ;)
le travail y est!!!
Bon travaili magus et giboo2!!!
10/10...........et de bon coeur ;=)
Laurent00777
Messages postés
40
Date d'inscription
lundi 17 novembre 2003
Statut
Membre
Dernière intervention
21 avril 2008
-
Bon travail !!... Peut faire mieux...;-))...9,5/10
WhiteMagus
Messages postés
774
Date d'inscription
lundi 21 juin 2004
Statut
Membre
Dernière intervention
5 février 2010
-
Ben là franchement, c'est super.

Merci d'avoir complété ma source, ça me fait très plaisir. Surtout pour le graphisme lol j'avais un peu honte...

Bon en tout cas une source super, finie, fonctionnelle et bien codée, superbementcommentée. Prochaine étape, Javscript/Flash ? Pour un rendu s'approchant du wysiwyg dhtml...

Tout le mérite te reviens, ce que j'avais fait est simplissime.

10/10

Je te remercie encore.
@+ !
top30
Messages postés
1158
Date d'inscription
vendredi 21 février 2003
Statut
Membre
Dernière intervention
6 août 2010
-
Excellent travail
J'admire...

[10/10]
on_drag_on
Messages postés
1275
Date d'inscription
vendredi 13 mai 2005
Statut
Membre
Dernière intervention
6 octobre 2010
-
Mazette! Quel travail, c'est propre, graphisme agréable, simple, léger impeccable, le code très bien commenté et ah! quel boulot! Bravo!
je ne peux que modestement mettre un 10/10 également.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.