JCE / TinyMCE - Sigue intentando arreglar HTML válido e inválido

9

De todos los editores de Joomla que hemos utilizado, JCE se ha adaptado mejor a nuestros propósitos y clientes. Pero hay algunos problemas con el editor que pueden causar problemas cuando codificamos algo, luego se cambia a wysiwyg y el editor intenta 'arreglar' nuestro html perfectamente válido.

Antes de ir a hacer preguntas, sí, lo hemos configurado para permitir todos los elementos que a JCE le gusta restringir, y no, NO está configurado para validar / limpiar el html. Las únicas restricciones que tenemos son para pegar contenido en el editor.

Anexo A:

<a href="#"></a>

Esto desaparecerá al alternar el editor y viceversa. Reemplazadas con:

<p>&nbsp;</p>

Anexo B:

<a id="#nameofanchor"></a>

Cambios a:

<p>&nbsp;</p>

Anexo C:

<div><a id="#nameofanchor"></a></div>

Cambios a:

<div>&nbsp;</div>

Anexo D:

<a id="hello" class="link">Hello</a>

Cambios a:

<p><a id="hello" class="link"></a>Hello</p>

Anexo E:

<a href="#">
<div>
<h2>Our Work</h2>
</div>
</a>

Cambios a:

<p><a href="#"></a></p>
<div>
<h2><a href="#">Our Work</a></h2>
</div>
<p>&nbsp;</p>

Ahora, queremos usar id en lugar de name para nuestro ancla, porque es válido bajo HTML5, mientras que técnicamente name no lo es. Además, ¿en qué universo es id una asignación no válida a un enlace?

Además, ahora que es totalmente legítimo envolver un div con enlaces, ¿por qué JCE los eliminaría también?

¿Es solo una configuración que me falta? ¿Alguien tiene alguna idea de cómo puedo usar el editor para que podamos codificar como necesitamos en el editor, pero nuestros clientes no pueden destruirlo simplemente guardando en wysiwyg?

Editar: he probado esto en Chrome, Firefox y Safari. No pienses que tiene algo que ver con el navegador.

Editar: he probado esto con la configuración del contenedor. Tanto el Párrafo de Contenedor y el Párrafo de Enter como el Div. De Contenedor y Div. De Enter causan esto. Los otros dos, Sin contenedor y párrafo al ingresar, Sin contenedor y salto de línea al ingresar, no lo causan. El problema es que necesito la primera configuración. Por mucho que sea genial darles a los clientes el beneficio de la duda, simplemente no se puede confiar en que sigan las instrucciones y agreguen formato de párrafo a su texto.

Confirmado: Esto también sucede con TinyMCE.

Entonces, sabemos qué causa esto, la configuración del Contenedor de párrafos, ¿cómo lo solucionamos mientras mantenemos viva esa configuración?

Faye
fuente
1
Me alegro de que no sea solo yo.
Craig
Después de nuestras discusiones anteriores y la conclusión de que esto proviene de la función de ajuste de elementos JCE, no estoy seguro de qué es realmente una preocupación. Si confía en su cliente para poder agregar fragmentos html como el anterior, al alternar el estado del editor, ¿por qué no confiará en ellos de que envolverán su contenido con las etiquetas <p> apropiadas?
FFrewin
Nuestros clientes no agregan HTML. NOSOTROS escribimos html, usan el lado del editor: tan pronto como se alterna el editor, destruye nuestro html perfectamente válido.
Faye
En cualquier caso, si le da acceso de edición de una página llena de html al cliente, de una forma u otra, existe una gran posibilidad de que el cliente pueda destruir su html. ¿Qué pasa con el uso del Administrador de plantillas de JCE u otras etiquetas "macro", que harán el trabajo sucio de agregar el marcado que necesita?
FFrewin

Respuestas:

7

Uso JCE Editor en todos nuestros sitios, pero también hemos comenzado a instalar Sourcerer by NoNumbers. Esto le da un botón fácil de INSERTAR CÓDIGO al editor JCE que lo protege de ser modificado.

http://www.nonumber.nl/extensions/sourcerer

YellowWebMonkey
fuente
GRACIAS. Esto es perfecto, ya tenemos instalado un número diferente en nuestras cosas porque es fantástico, no sabía que tenía esto. Esto es perfecto.
Faye
1
No debería haber necesidad de usar Sourcerer para agregar HTML.
BodgeIT
Aaa y aún así tengo que hacerlo, o JCE elimina HTML perfectamente válido.
Faye
2

Hay algunas configuraciones secretas para JCE. Sé que la siguiente configuración deja de &nbsp;agregarse a divs vacíos, tal vez se usa para borrar flotantes, lo que causa problemas de altura de línea cuando se procesa:

In the Editor Global Configuration, add:
remove_div_padding:1 
to Custom Configuration Variables. 

Esperaría que haya más que pueda controlar cualquier aspecto del editor.

BodgeIT
fuente
1

Creo que debe ser la configuración de la tipografía en: Perfil -> Parámetros del editor -> Tipografía . Intente establecer el elemento de contenedor y la tecla Intro en NoContainer y LineBreak en Enter para ver si aún aplica algún cambio a su html.

Recuerde también que la configuración de Validación HTML tiene una configuración para cada perfil del Editor y que Joomla también proporciona un filtro global en la página de configuración global establecida por el grupo de usuarios. Asegúrese de que no haya configuraciones allí para cada grupo de usuarios.

FFrewin
fuente
Sí, he estado en todos los perfiles de editor, etc. Lo tengo todo configurado correctamente sin html. Cambiar el contenedor podría resolverlo, pero causará otro problema, igualmente problemático. Si un cliente puede agregar contenido de texto que no está envuelto en etiquetas de párrafo, entonces el formato de su texto será diferente. Nosotros tampoco queremos eso. Lo probaré para ver si eso causa el mismo problema con el ancla, pero en cuanto a las etiquetas de párrafo que se agregan, eso es algo normal para el curso.
Faye
Sí, es la configuración del contenedor lo que lo hace, pero como dije, es un problema mayor para nuestros clientes que no pueden pegar y que una etiqueta de párrafo automática envuelva su contenido.
Faye
Creo que esto está sucediendo porque sus ejemplos de código contienen saltos de línea, que es una especie de "regla" para que JCE cree los párrafos. Debería existir un criterio para hacer esto. ¿Su cliente va a pegar dichos fragmentos html en el editor?
FFrewin
Nuestros clientes no van a usar html, pero todavía codificamos con html detrás de lo que hacen. Creamos áreas para que puedan pegar / escribir contenido directo. Además, si te refieres a escribir html en una línea en lugar de organizarlo como se indicó anteriormente, también lo he intentado. Obtengo exactamente los mismos resultados.
Faye
0

Este comportamiento no es exclusivo de JCE. TinyMCE se comporta de la misma manera. Este comportamiento puede no estar limitado a TinyMCE, podría ser un comportamiento DOM del navegador.

JCE realmente se toma la molestia de tratar de mantener algunas etiquetas vacías, el método empleado es rellenar con un espacio.

https://github.com/widgetfactory/jce-editor/blob/master/editor/tiny_mce/plugins/cleanup/editor_plugin.js

Peter Wiseman
fuente
No voy a mentir, no tengo idea de lo que esto significa. ¿Puedes desglosarlo un poco más? ¿Qué estoy mirando en ese enlace? ¿Qué quieres decir con almohadilla con un espacio? Agregar un espacio sin interrupciones a los ejemplos de código anteriores no cambia los resultados finales, lo probé a fondo.
Faye
Cambié mi editor predeterminado a TinMCE, el que viene preinstalado con Joomla, y probé el Anexo A. También eliminó las etiquetas al cambiar entre el editor WYSIWYG y las vistas de origen. es decir, este comportamiento no parece ser exclusivo de JCE. Por lo tanto, me pregunto si esto no es exclusivo de TinyMCE tampoco, y quizás lo mismo podría ocurrir cuando se usa la capacidad de los navegadores para realizar la edición en el lugar. La referencia del código JCE era la línea 129, donde se usa un espacio sin interrupción entre las etiquetas de inicio y fin. Eso funciona para mí tanto en JCE como en TinyMCE. Extraño.
Peter Wiseman