Página 1 de 1

Hagamos un editor WYSIWYG

Publicado: 05 Dic 2009, 14:34
por digital
Bueno me he decidido a compartir esta idea. Estoy seguro de que mucha gente quiere tener un editor de texto enriquecido o conocido como WYSIWYG. Yo he probado dos que creo que son los únicos que hay para phpbb, son Almsamim y Hot Editor. Cada cual tiene sus cosas buenas y malas. Pero si realmente me inclino por uno que me de confianza es el editor TinyMCE. Es uno de los mejores, incluso vBulletin tiene ya por defecto ese editor. He encontrado las instrucciones para implementar el editor TinyMCE en phpbb pero solo vienen en prosilver,el aspecto de este editor es el siguiente:

http://tinymce.moxiecode.com/examples/example_09.php#

Ese es el editor bbcode que existe en TinyMCE pero se echan demenos algunas características como son: las opciones de alinear el texto, el color de fondo, crear tablas, sangría, cortar , copiar, pegar, super indice, subindice, tachado y línea horizontal. He analizado los scripts de los editores, en particular el de Almsamim 0.0.8, y hay semejanzas en el código a la hora de pasar los datos de HTML a BBcode y de BBcode a HTML.
En mi opinón sería todo un logro integrar ese editor en los sistemas phpBB, de hecho tenemos prácticamente todo el trabajo hecho, lo único que falta es añadir las líneas de código para las opciones de formato que comenté antes.
Bien dicho esto paso a comentar lo que he analizado desde mi más profundo desconocimiento sobre javascript.

El editor tinymce tiene un script que consta de dos partes:
La primera que pasa el código bbcode a HTML, es decir, es la transformación que hace el script cuando por ejemplo editamos un mensaje. El texto con el bbcode almacenado en la base de datos pasa al área de edición, no sin antes ser transformado por el script, que transformará ese código bbcode a html y lo mostrará en el area del editor.

Código: Seleccionar todo

// BBCode -> HTML from PunBB dialect
       _punbb_bbcode2html : function(s) {
        s = tinymce.trim(s);

        function rep(re, str) {
           s = s.replace(re, str);
        };

        // example: [b] to <strong>
        rep(/\n/gi,"<br />");
        rep(/\[b\]/gi,"<strong>");
        rep(/\[\/b\]/gi,"</strong>");
        rep(/\[i\]/gi,"<em>");
        rep(/\[\/i\]/gi,"</em>");
        rep(/\[u\]/gi,"<u>");
        rep(/\[\/u\]/gi,"</u>");
        rep(/\[url=([^\]]+)\](.*?)\[\/url\]/gi,"<a href=\"$1\">$2</a>");
        rep(/\[url\](.*?)\[\/url\]/gi,"<a href=\"$1\">$1</a>");
        rep(/\[img\](.*?)\[\/img\]/gi,"<img src=\"$1\" />");
        rep(/\[color=(.*?)\](.*?)\[\/color\]/gi,"<font color=\"$1\">$2</font>");
        rep(/\[code\](.*?)\[\/code\]/gi,"<span class=\"codeStyle\">$1</span>&nbsp;");
        rep(/\[quote=\"(.*?)\"\](.*?)\[\/quote\]/gi,"<span class=\"quoteStyle user_$1\">$2</span>&nbsp;");
        rep(/\[quote.*?\](.*?)\[\/quote\]/gi,"<span class=\"quoteStyle\">$
Como vereís en el código aparece en primer lugar el bbcode y después el html correspondiente. Después en proceso contrario, es decir de HTML a BBcode, cuando escribimos en el editor y pasa esos datos HTML a BBcode para almacenarlos en la base de datos.

Código: Seleccionar todo

/ HTML -> BBCode in PunBB dialect
       _punbb_html2bbcode : function(s) {
        s = tinymce.trim(s);

        function rep(re, str) {
           s = s.replace(re, str);
        };

        // example: <strong> to [b]
        rep(/<a.*?href=\"(.*?)\".*?>(.*?)<\/a>/gi,"[url=$1]$2[/url]");
        rep(/<font.*?color=\"(.*?)\".*?class=\"codeStyle\".*?>(.*?)<\/font>/gi,"[code][color=$1]$2[/color]
");
rep(/<font.*?color=\"(.*?)\".*?class=\"quoteStyle\".*?>(.*?)<\/font>/gi,"
[color=$1]$2[/color]
");
rep(/<font.*?class=\"codeStyle\".*?color=\"(.*?)\".*?>(.*?)<\/font>/gi,"

Código: Seleccionar todo

[color=$1]$2[/color]
");
rep(/<font.*?class=\"quoteStyle\".*?color=\"(.*?)\".*?>(.*?)<\/font>/gi,"
[color=$1]$2[/color]
");
rep(/<span style=\"color: ?(.*?);\">(.*?)<\/span>/gi,"[color=$1]$2[/color]");
rep(/<font.*?color=\"(.*?)\".*?>(.*?)<\/font>/gi,"[color=$1]$2[/color]");
// font size[/code]

Ahora aparece al revés, primero el HTML correspondiente y su equivalencia en BBcode. Si por mi fuera seguiría desarrollando el resto del código para adicionar lo que antes he mencionado.
Luego encontré en los scripts de los editores que mencioné un código prácticamente igual. Por ejemplo este está sacado del Almsamim 0.0.8 y es la parte de HTML a bbcode:
Creo que este es el que centra el texto.

Código: Seleccionar todo

r2(/\[center\]\[\/center\]/gi, "");
He intentado sustituir donde dice r2 por rep. Pero no he conseguido un resultado satisfactorio, es como si no hubiera hecho nada.
Bueno lo que pido es que si alguien se ofrece a explicarme un poco que es lo que significa cada cosa yo podría quizás con un poco de suerte añadir lo que falta. Se que si se sigue una lógica se puede lograr.
A parte de eso realizaría unas instrucciones, traducciones etc... para poder tener un editor de texto digno. Yo no se de otros administradores pero a mi puedo decir que el 95% de los fallos que me comentan los usuarios son por los editores bien sean HotEditor o Almsamim. Gracias por vuestra atención y si alguien se anima a ayudarme pues bienvenido sea. Espero respuestas. Saludos.

Re: Hagamos un editor WYSIWYG

Publicado: 05 Dic 2009, 19:20
por MR.PABLO
Me parece muy buena idea! :cerveza:

Re: Hagamos un editor WYSIWYG

Publicado: 05 Dic 2009, 22:44
por digital
He conseguido un pequeño avance. Añadir que el editor reconozca el comando de centrar el texto:
En la parte de de BBcode a HTML

Código: Seleccionar todo

rep(/\[center\]/gi,'<center>');
rep(/\[\/center\]/gi,'</center>');
Ahora la parte de HTML a BBcode no logro hacerla. Si consiguiera hacer el código completo, ya tendría el resto de los alineamientos de texto, justificar, derecha e izquierda. Saludos

Re: Hagamos un editor WYSIWYG

Publicado: 09 Dic 2009, 12:53
por ahh72
me parece excelente tu idea pero de codigo yo no se nada :ops

saludos

Re: Hagamos un editor WYSIWYG

Publicado: 19 Dic 2009, 18:03
por Alorse
El editor en si no es complicado, porque se trata de expreciones regulares, y javascript... lo maluco es adaptarlo al panel del ACP... ya que este tipo de MOD tiene demaciadas funcionalidades, yo te puedo colaborar en todo lo relacionado con la programación de este... y el adpatarlo al phpBB3, si quieres sigue con tu proyecto y realiza el editor medienta textareas o cosas así que solo sea manejo de html y JS, y luego ya vemos como ir adaptarlo a phpBB3... es es el rollo :P

Un saludo y genial idea... que bien que mas gente de habla hisapana se atreviera a empezar a desarrollar MODs...

Re: Hagamos un editor WYSIWYG

Publicado: 31 Dic 2009, 22:23
por jorup16
Excelente idea, este mod si que valdrá la pena. :ok:

Re: Hagamos un editor WYSIWYG

Publicado: 30 Abr 2010, 03:15
por leviatan21
Hola gente :

Recién descubro este tema y quería comunicarles que yo he hecho algunas cosas con respecto a un editor tipo WYSIWYG, pero sobre mi MOD ABBC3.

Al parecer este tema quedó en el olvido, no se si debería escribir :?:

Por mucho tiempo he tenido en mi foro un tema abierto para ver si alguien quiere ayudarme, ya que yo solo resulta difícil.

Si alguien está interesado, en empezar o continuar avisen :chulo: