¿Múltiples editores de armas de destrucción masiva (versión bifurcada SO) en una página?

StackOverflow https://stackoverflow.com/questions/670909

  •  21-08-2019
  •  | 
  •  

Pregunta

Para ser claros, me refiero al uso de armas de destrucción masiva bifurcadas de stackoverflow, no el versión original de attacklab.

Me gustaría usar la versión bifurcada, sin embargo, parece que los ID de división que utiliza el script para identificar los elementos de la página en WMDify están codificados en wmd.js:66:

// A collection of the important regions on the page.
// Cached so we don't have to keep traversing the DOM.
wmd.PanelCollection = function(){
    this.buttonBar = doc.getElementById("wmd-button-bar");
    this.preview = doc.getElementById("wmd-preview");
    this.output = doc.getElementById("wmd-output");
    this.input = doc.getElementById("wmd-input");
};

Si sólo quisiera usar nombres de regiones diferentes, estaría bien por mi cuenta, pero quiero usar un número variable de editores de armas de destrucción masiva en una sola página.Necesitaría una forma de informar a cada instancia de WMD sobre las regiones de la página a las que debería afectar, pero no veo ningún "gancho" para eso.

Es probable que el no ver sea producto de mi casi total falta de conocimiento de js.Lo correcto es simplemente aprender javascript correctamente, pero estoy en medio de un proyecto con una fecha límite.Realmente me gustaría usar esta versión de WMD, pero necesito algunas pistas sobre cómo modificar el script WMD, o tal vez simplemente un ejemplo de cómo llamarlo de tal manera que pueda especificar qué ID de división usar.

¡Se agradecen las pistas!

¿Fue útil?

Solución

He tenido problemas similares así que armas de destrucción masiva re-factorizada a ser capaz de hacer eso. mi versión de armas de destrucción masiva

Recientemente, he vuelto a inspeccionar esto. La versión de código de Google es compatible con múltiples versiones de una página.
Google código tenedor y es la última que hay.

Otros consejos

En un "proyecto con una fecha límite" se le permite cortar alrededor algunas limitaciones. En este caso me acaba de hacer múltiples copias de la secuencia de comandos editor de armas de destrucción masiva (o generarlo en el lado del servidor) y sustituir los identificadores por sus identificadores necesarios. De esa manera se puede implementar de inmediato múltiples armas de destrucción masiva en una sola página.

Sólo tienes que ser muy clara una cosa: son deuda técnica ( "las eventuales consecuencias de la arquitectura de software y desarrollo de software slapdash precipitada") en su proyecto allí. se tiene que revisar esto para pagar esta deuda o se le ahogarse en el pago de intereses cuando se hace mantenimiento.

La línea 2339 de wmd.js puede ser un buen lugar para comenzar:

Attacklab.wmd_defaults = {version:1, output:"HTML", lineLength:40, delayLoad:false};

Agregue una opción para cada ID de div que necesite cambiar.

Estas configuraciones se anulan agregando un bloque de secuencia de comandos antes de incluir wmd.js, por ejemplo:

<script type="text/javascript">wmd_options = {"output": "Markdown"};</script>

Luego cambia el wmd.PanelCollection funcionar para..

wmd.PanelCollection = function(){
        this.buttonBar = doc.getElementById(wmd.wmd_env["wmd-button-bar"]);
        this.preview = doc.getElementById(wmd.wmd_env["wmd-preview"]);
        this.output = doc.getElementById(wmd.wmd_env["wmd-output"]);
        this.input = doc.getElementById(wmd.wmd_env["wmd-input"]);
};

Tenga en cuenta que esto no se ha probado en absoluto y es posible que no funcione, pero en comparación con la generación automática del editor de armas de destrucción masiva o la realización de copias múltiples, es levemente mas elegante..

Editar:Intenté realizar las ediciones, pero no es tan simple como agregar a wmd_defaults: varios elementos (principalmente la barra de botones) usan una ID en lugar de una clase, pero está cerca.

Editar 2:Después de muchas vueltas, diría que la respuesta es básicamente "no".

Una mejor respuesta es no, no sin algunos cambios bastante importantes en las armas de destrucción masiva (cambios que van más allá de mi muy limitada experiencia en JavaScript).

Intenté mover todos los nombres de div codificados a la configuración y agregué una configuración "elementNamePrefix" para todos los nombres de clases de botones, en lugar de usar "wmd-spacer1" solía wmd.wmd_env["elementNamePrefix"] + "spacer1"...pero incluso con esto necesitas duplicar elementos en el archivo CSS, y los cambios provocaron un comportamiento extraño que no pude solucionar (creo que debido a la variable global AttackLab definida en la primera línea).No estoy seguro)..

¿Quizás, como alternativa a tener múltiples controles de armas de destrucción masiva, podría tener un menú desplegable que cargue diferentes publicaciones a través de AJAX?Sin duda, sería más fácil que modificar WMD para permitir múltiples instancias.

Este proyecto puede ser un buen comienzo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top