Estoy creando un complemento con el módulo API WYSIWYG para Drupal 7 que agregará un botón a la barra de herramientas de los editores compatibles.
Estoy usando el hook_wysiwyg_plugin()
gancho para crear un nuevo botón en la barra de herramientas del editor, pero necesito cargar algunos otros archivos javascript. El hook_wysiwyg_plugin()
enlace parece permitirle especificar un archivo JS y CSS.
¿Cómo puedo cargar los archivos javascript adicionales necesarios para el plugin javascript?
He implementado hook_library()
para definir una biblioteca, es decir, archivos js / css, pero no estoy seguro de cómo conectarlo a la API wysiwyg para que se carguen en el nodo / editar pantallas.
Respuestas:
En realidad es bastante simple, aunque mi experiencia al hacer lo mismo es a través de Drupal 6, por lo que puede haber algunas diferencias menores con mi código:
Nuevamente, este código es para D6, pero el principio básico aún debería funcionar.
Si bien no está vinculado directamente a la API de Wysiwyg, probablemente sea la mejor opción, ya que la API de Wysiwyg solo es compatible con el archivo JS por complemento (iirc).
Algunas opciones salvajes / no probadas para ti:
Realice una devolución de llamada de menú para el archivo Javascript definido en el complemento y devuelva un archivo javascript algo en caché que contenga las fuentes de múltiples archivos javascript. (Wysiwyg Fields realiza la devolución de llamada del menú para complementos generados dinámicamente, pero solo para un archivo javascript, consulte la fuente de ideas).
Utilice una técnica de carga de Javascript dinámica de Javascript similar a http://www.javascriptkit.com/javatutors/loadjavascriptcss.shtml
Espero que esto ayude.
fuente
Con drupal_add_js :
fuente
En teoría, todo lo que necesita hacer es usar el parámetro " #text_format " correcto en el
#type textarea
elemento FAPI para que el editor wysiwyg asociado con el Formato de texto se incluya automáticamente, de esta manera:Sin embargo, no se incluye a menos que sea una página de "edición de nodo", por lo que algo relacionado con las funciones "
filter_process_format
" o "wysiwyg_pre_render_text_format
" puede forzarla, pero aún no he encontrado la combinación mágica, todavía leyendo la fuente de el módulo Wysiwyg para encontrar la pieza que falta.fuente