Page 1 sur 2

Editeur wysiwyg RTE +SQL

Posté : 18 juil. 2006, 16:34
par paul
Bonjour à tous,

J'aimerai me servir de l'outil de ConceptRTE (http://www.conceptuel.co.uk/conceptRTE) (apres recherche : déjà utiliser par certain dans ce forum) pour editer une page, la sauvegarder dans une base mysql, puis pouvoir l'editer plus tard.

Je me pose donc la question : sous quel format dois-je enregistrer le contenu de la textarea pour l'ecrire dans la base? html ou rtf ? il me faut un outils genre rtf2html et html2rtf ?...

Merci pour votre réponse qui va me sortir du noir :shock:

Posté : 18 juil. 2006, 23:53
par @rthur
Bonsoir,

Regarde quel est le format de ce que te donnes ConceptRTE, mais il est fort probable qu'il te renvoie directement du HTML.
Donc tu enregistres le HTML ainsi généré et tu l'affiche ensuite directement :)

Posté : 19 juil. 2006, 10:14
par paul
oui c'est du HTML, je peux donc le sauvegarder dans ma base comme ça.
Mais le problème c'est comment le récupérer avec mon editeur si je veux le ré-éditer plus tard ?!

Posté : 19 juil. 2006, 10:20
par Ryle
Avec rte, c'est effectivement du html qu'il te génère, et tu as la possibilité de passer une valeur par défaut (comme pour un champ de formulaire). Tu peux ainsi lui recoller le html généré que tu récupères de ta base pour qu'il te l'affiche par défaut lorsque tu demande l'affichage de l'éditeur (attention à protéger apostrophes et guillemets)

Posté : 19 juil. 2006, 10:41
par aelurus
Par default ConceptRTE enregistre la page en html dans son repetoire qui est ConceptRTE.
Le nom qu'il donne a ce fichier et la date et l'heure.html
ensuite il le laisse afficher une fois le popup fermer.
Je sius entrain d'essayer de changer le rep ou il enregistre le html et ou il l'ouvre un truc m'echappe sur tout pour l'ouverture.
Mais pour ta BD

Code : Tout sélectionner

//============================================================================// // write resulting document in a separate html page and display in a pop-up // //============================================================================// if ($action == 'show') { $chemin = "../testwysiwyg/"; $currentDate = date("Ymd"); $currentTime = date("His"); $fileName = "test".$currentDate . $currentTime . ".html"; $conceptRTEvalue = str_replace(chr(92).chr(34),chr(34),$conceptRTEvalue); $fp = fopen("../testwysiwyg/".$fileName,"w"); fputs($fp,"<html>"); fputs($fp,"<head>"); fputs($fp,"<title>test wysiwyg</title>"); fputs($fp,"<link rel='STYLESHEET' type='text/css' href='style.css'>"); fputs($fp,"</head>"); fputs($fp,"<body>"); fputs($fp,$conceptRTEvalue); fputs($fp,"</body>"); fputs($fp,"</html>"); fclose($fp); echo "<script>"; echo "parameter = 'toolbar=no,menubar=no,location=no,resizable=no,status=no,scrollbars=yes,height=400,width=800,left=150,top=150';"; echo "OpenWin = this.open('$fileName', 'conceptRTEpopUp', parameter);"; echo "</script>"; }
c par ici que cela ce passe .
De mon coté je cherche a faire qu'il ouvre un fichier a choisir ou en creer un nouveau avec le titre voulue :)
donc c'est de la modif de form tout sa je crois mais c genial pour ce faire une administration et creation de page html en ligne

Posté : 19 juil. 2006, 11:08
par paul
Tout se passe dans la variable "$conceptRTEvalue" qui contient le code HTML généré. j'ai juste à l'insérer dans ma base, et le ressortir au besoin pour un affichage sur une page.
Mais pour le ressortir dans cet editeur, je ne vois pas comment faire, puisque cet wysiwyg n'utilise pas de <textarea> :(

Ryle > je n'ai pas tout compris ce que tu as dit, peux-tu etre plus explicite ? :D
Merci

Posté : 19 juil. 2006, 11:21
par aelurus
Effectivement tout ce passe avec $conceptRTEvalue

regarde les premiere ligne du code $conceptRTEvalue passe par l'url donc avec un formulaire qui pointe sur tes enregistrement dans ta BD tu as moyen de mettre ce que tu veux dans $conceptRTEvalue donc de l'afficher dans l'editeur et de le modifier, ne restera plus qu'a le réenregistrer la ou tu veux et avec le nom que tu veux.

Je pense que Ryle voulais te mettre en garde sur le fait que tu veuille mettre dans ta BD des info du genre

<html>
<a href="...">

du code html avec plien de " ' / ....
c le genre de symbole legeremnt casse ... a inserer dans des requette mysql
enfin c mon avis ^^

Posté : 19 juil. 2006, 11:44
par Ryle
De mémoire (cela dit, ça a peut être évolué depuis j'avais pas de génération de fichier html quand j'avais bossé dessus), pour faire afficher ton éditeur dans ta page, tu passes par une fonction writeRichText(). Le premier argument correspond au nom/id du champ, le deuxième au contenu par défaut qui doit avoir pour valeur un truc du genre '<p style="MARGIN: 0px"></p>'

Il te suffit donc de remplacer cette valeur par défaut par le code html que tu récupères de ta base pour qu'il soit pris en compte dans l'éditeur. En faisant effectivement attention à proteger ou remplacer les caractères spéciaux qui pourraient poser problème dans le javascript (apostrophes, retour à ligne, etc.) :)

Posté : 19 juil. 2006, 11:58
par aelurus

Code : Tout sélectionner

echo "<script language='JavaScript' type='text/javascript'>"; $content = RTESafe($conceptRTEvalue); //============================================================================// // Usage: initRTE(imagesPath, includesPath, cssFile, language) // //============================================================================// echo "initRTE('images/', '', 'style.css', '$language');"; //============================================================================// // Usage: writeRichText(fieldname, html, width, height, buttons) // //============================================================================// echo "writeRichText('rte', '$content', 520, 200, true, false);"; echo "</script>";
c par la que sa ce passe. Mais si je capte bien l'affichage du contenue de l'editeur ne passe pas par une fonction javascript ?
Ou j'ai mal lut ^^

Posté : 19 juil. 2006, 12:10
par Invité
Nop, j'ai compris ^^
Il parle de ça :

Code : Tout sélectionner

frameHtml += "<link media=\"all\" type=\"text/css\" href=\"" + cssFile + "\" rel=\"stylesheet\">\n"; } frameHtml += "<style>\n"; frameHtml += "body {\n"; frameHtml += " background: #FFFFFF;\n"; frameHtml += " margin: 0px;\n"; frameHtml += " padding: 0px;\n"; frameHtml += "}\n"; frameHtml += "</style>\n"; frameHtml += "</head>\n"; frameHtml += "<body class=rte>\n"; frameHtml += html + "\n"; frameHtml += "</body>\n"; frameHtml += "</html>";
dans le fichier concepRTE.JS
il faut donc ajouter (si j'ai bien compris) :
avec une condition :
- si on veut ecrire une nouvelle page => on laisse comme cela (page vide)
- si on veut réediter ce qu'on avait déjà écrit , on insere a la place du code html la variable stocké dans la base.
Corrige moi si j'ai faux Ryle !
Merci en tout cas

Posté : 19 juil. 2006, 14:09
par aelurus
Par contre si tu trouve la solution pour lui faire afficher ce que tu veux soit une nouvelle page soit une existante ba je veux bien ta methode car je ne trouve pas trop via le javascript que je gere tres tres mal je comprend a peine ce que je lit.
Comme pour lui indiquer le chemin d'ouverture du fichier sauvgarder... je creuse.
J'ai juste réussi a les sauvegarder comme je voulais donc la sortie ce passe pas trop mal mais c au niveau de l'entrée que je nage ^^ soyons clair :)

Posté : 19 juil. 2006, 14:59
par aelurus
Nan nan
c'est dans

Code : Tout sélectionner

$conceptRTEvalue
que tu dois chercher a mettre le contenue de ta page a modifier via un formulaire c pas dans le JS.
Fait un formulaire qui pointe sur ta BD et qui retourne le contenue html dans cette variable.
Sinon je ne vois pas comment faire dans le JS.
Mais je bloque toujours sur le chemin pour l'ouverture du pop up
Not Found
The requested URL /bricole/wysiwyg/conceptRTE/test20060719145407.html was not found on this server.
si quelqu'un à une idée

Posté : 19 juil. 2006, 15:34
par aelurus
Je pense avoir trouvé
echo "OpenWin = this.open('../testwysiwyg/$fileName', 'conceptRTEpopUp', parameter);";
enfin pour mon erreure ^^

Posté : 19 juil. 2006, 15:35
par paul
Pour la popu le script d'ouverture est là :

Code : Tout sélectionner

echo "<script>"; echo "parameter = 'toolbar=no,menubar=no,location=no,resizable=no,status=no,scrollbars=yes,height=400,width=800,left=150,top=150';"; echo "OpenWin = this.open('$fileName', 'conceptRTEpopUp', parameter);"; echo "</script>"; }
il ouvre le fichier s'appelant $fileName qui est la date-lejour-l'heure.html ici :

Code : Tout sélectionner

$currentDate = date("Ymd"); $currentTime = date("His"); $fileName = $currentDate . $currentTime . ".html";
avec ça c'est facile de changer l'écriture du fichier...


Pour mon problème de DB, étant meilleur en php qu'en JS, je pensais faire 2 fichiers JS (c'est une méthode de porc je préviens ^^), un avec la configuration vide, et un avec la configuration qui recupere mon html de la bdd. De là tu fais une fonction (php) qui vérifie si ta variable $conceptRTE.. est initialisé ou non, et suivant la reponse elle redirige vers un des 2 fichier JS ^^

Ca peut surement etre optimisé en JS.. si qqun s'y connait pour faire un test sur une variable...

Posté : 19 juil. 2006, 15:46
par aelurus
JS moins j'y touche mieux je me porte ^^.
Par contre avec ma methode j'arrive a dire ou sauvegarder le fichier html sous quel nom et sais aussi le lui refaire ouvrire dans le pop up.
Donc je n'ais plus qu'a reprendre les form en fonction de sa et je deverais pourvoir obtenire une admin wysiwyg pour editer ou creer des fichier html dans un site sa c'est la théorie reste plus qu'a maintenant...
Pour la BD je pense que mon systheme est portable avec des requettes mysql puisque je gere tout depuis l'index le JS ne traite que ce que le php lui donne ^^, mais c surement faisable via du JS mais ... :)