Una de las cosas que en Gesbit no tengo demasiado claras tiene que ver con los plugins. Esto, como otras cosas en Gesbit, está bastante verde aún. Sin embargo, existen varios plugins para Gesbit, lo que quiere decir que algo sí que es posible hacer, incluso en el estado de cosas actual.

Hasta hoy "sólo" era posible para los plugins filtrar un determinado "contenido", antes, precisamente, de ser "impreso" para el usuario. Por ejemplo, el plugin Highligh Code, está "al tanto" de cuando se va a imprimir el "cuerpo" de una entrada, para, si este contiene las "marcas" apropiadas, resaltar el código fuente que se encuentra, justamente, dentro de dichas marcas.

Este tipo de plugins he dado en llamarlos "Filters", puesto que pueden hacer eso: filtrar cierto contenido, antes de que sea impreso para el usuario. Hoy he añadido lo necesario (más o menos) para otro tipo de plugins, que he dado en llamar "Printers". ¿Y qué se supone que pueden hacer este tipo de plugins? Pues, precisamente, "imprimir" cierto código fuente, XHTML, CSS, JavaScript, en determinados lugares. Por lo pronto sólo en dos: la cabecera HTML de los "scripts" del panel de administración de Gesbit, y el "cuerpo" de estos mismos "scripts".

Estos plugins "Printers" no filtran contenido, por lo tanto, sino que añaden contenido por su cuenta. Por ejemplo, en la cabecera HTML de los "scripts" del panel de administración de Gesbit, un plugin podría incluir hojas de estilo, archivos JavaScript, etc. Y en el cuerpo de estos "scripts" podrían añadir también cualquier cosa que le fuera necesaria al plugin, o bien mostrar "algo" al usuario, etc.

He ampliado la página de la wiki de Gesbit que trata sobre este tema del desarrollo de plugins para Gesbit. Si todo va más o menos bien, incluiré próximamente nuevos tipos de "printers", es decir, para dar a los plugins la posibilidad de imprimir código fuente, contenido, en otros puntos de Gesbit, en el panel de administración, pero, también en los temas, espero.

Hay aún otro tipo de plugins que estoy considerando, y cuyo "nombre" bien podría ser el de "Actions". Porque se trataría de que los plugins pudieran recibir información cuando se produjeran ciertas acciones en Gesbit. Por ejemplo, una acción podría "dispararse" (y en plugin estar al tanto de ella) cuando se va a publicar una determinada entrada, por ejemplo. Este tipo de plugins no filtrarían contenido, ni tampoco imprimirían nada, en principio.

Sin embargo, no tengo muy claro cómo enfocar este asunto. ¿Por qué? Hay que decir que los plugins de tipo "Filters" no han de hacer sino implementar un método "FilterCallback()", que recibe dos parámetros: el nombre del filtro a aplicar, y el contenido sobre el que aplicarlo. La cosa es más o menos sencilla.

Los plugins de tipo "Printers" pueden implementar el método "PrinterCallback()", que tan sólo recibe un parámetro: el nombre del lugar, por decirlo así, donde se puede imprimir cierto código por parte del plugin. Tampoco parece muy complicado en principio.

Ahora bien, los plugins de tipo "Actions"... se supone que implementarían un método "ActionCallback()", que, de entrada, recibiría como parámetro el nombre de la acción en cuestión, pero, ¿qué más? Porque, suponiendo que se quiera llevar a cabo alguna acción antes de publicarse un comentario, por ejemplo, ¿se supone que el plugin podría "parar" la publicación del comentario? ¿Qué tendría que conocer del comentario en cuestión?

En fin, que no me queda muy claro cómo llevar a cabo esto. Sin embargo, en el caso de los plugins del tipo "Printers" tampoco me quedaba muy claro en un principio, y, bueno, parece que pueden dar algún juego y no ha sido complicada preparar lo necesario para ellos. En todo caso, como digo, todo este tema está bastante verde. Veremos en qué queda el asunto, despacito.