¿Existen "hooks" en moodle?

¿Existen "hooks" en moodle?

de Marc Bria Ramirez -
Número de respuestas: 7
Buenas,

Ya són dos los colegas que me ha preguntado sobre este problema y no se bien que responder.

La historia es que ambos (por proyectos distintos) necesitan que su módulo haga unas breves modificaciones en la forma habitual de funcionar de moodle, pero claro, no quieren montarse un fork (por beneficiarse de futuras mejoras y por compartir su desarrollo con todos nosotros), así que me preguntaba si existe la figura del "hook" en moodle, que permita añadir un comportamiento ligeramente distinto al inicial.

Os pongo el ejemplo que me resulta más fácil de explicar: Uno de los proyectistas con los que trabajo está desarrollando un módulo que condiciona los botoncitos del editor web de moodle al rol del usuario (only para 1.7 o sup sacar lengua). Tiene el módulo bastante avanzado (espero que lo libere en un mes o dos), pero se que en breve me va a preguntar ¿y ahora como hago para que moodle no muestre el editor con los botones clasicos y muestre el mio en su lugar?

Así que se me ocurren 3 alternativas (de lo elegante a lo más guarrillo):

a) Que exista por algún lado un listado de "hooks" del moodle y que casualmente uno de ellos sea: hook_add_editor (o algo asinas).
b) Que el JS del editor esté incluido en el template y se puedan pasar variables al sistema de templates (aunque, claro, eso haría que el módulo sólo funcione con ciertos templates).
c) Hacer un patch para cada nueva versión de moodle.

¿Cual sería vuestra elección-consejo?

Gracias por adelantado,

Marc Bria.
Promedio de valoraciones: -
En respuesta a Marc Bria Ramirez

Re: ¿Existen "hooks" en moodle?

de Iñaki Arenaza -
Imagen de Desarrolladores Imagen de Desarrolladores de plugins Imagen de Documentadores Imagen de Moderadores Imagen de Moodlers de gran ayuda
Humm, a) no existe que yo sepa.

b) es posible que se pueda conseguir siguiendo las instrucciones de .../moodle/lib/editor/neweditor_readme.txt (no le he hecho nunca, de hecho hasta hace 10 minutos ni sabía que existía ese fichero y la funcionalidad que ahí se menciona).

c) es siempre una opción, que es mucho más fácil si se usa un buen sistema de control de versiones (como subversion, git o similares).

Saludos. Iñaki.
En respuesta a Iñaki Arenaza

Re: ¿Existen "hooks" en moodle?

de Marc Bria Ramirez -
He posteado aquí, pero también en el foro dedicado al HTMLeditor y nadie tenía respuestas (o tiempo), así que de nuevo mil gracias Iñaki (y digo de nuevo pues es la segunda duda vez que me sacas de un atolladero sacar lengua).

Creo que tiraremos por b) con el readme que has encontrado y pensando en tinyMCE.

Aunque tampoco tengo demasiado claro si al final el htmlarea va a substitiuirse por el tinyMCE o por el fckEditor... así que a lo mejor curramos pa nada. triste

De las distintas alternativas que teníamos (actividad, bloque o filtro) he sugerido que se monte un bloque, con sus settings para definir que botones van con que rol, pero el lugar "natural" para esto sería en Apariencia>EditorHTML y claro, eso va a resultar que sólo se puede tocar con el beneplácito de Martin o quien lleva el lib/adminlib.php

Tu que los conoces más ¿Cómo de accesible es Martin para estas cosas?

Salu2 y gracias de nuevo,

m.
En respuesta a Marc Bria Ramirez

Re: ¿Existen "hooks" en moodle?

de Iñaki Arenaza -
Imagen de Desarrolladores Imagen de Desarrolladores de plugins Imagen de Documentadores Imagen de Moderadores Imagen de Moodlers de gran ayuda

> Tu que los conoces más ¿Cómo de accesible es Martin para estas cosas?

No te creas que yo le conozco apenas. El amigo Eloy Lafuente si tiene más relación con él. En todo caso, si el código es limpio, se ajusta a las directrices de codificación que se marcan en el wiki para los desarrolladores, se tiene especial cuidado con el tema de la seguridad (skodak es bastante exigente al respecto) y además la funcionalidad es interesante y potencialmente útil para bastante gente, tienes muchas papeletas para que se incorpore en la versión estándar.

En todo caso, preguntar en el foro de desarrolladores en inglés para ver si parece una idea interesante al resto de desarrolladores antes de echarse a la piscina (no de su desarrollo, sino el esfuerzo para conseguir su integración) y preguntar cual de los editores tiene más posibilidades de ser el futuro editor de Moodle seguramente aclarará bastante las cosas.

Y si no recibes feedback allí, es que la cosa no levanta demasiado interés y probablemente sólo os quede como opción la c) original (fork propio y mantener la personalización vosotros mismos para las siguientes versiones).

Acabo de recordar que hay en el wiki de documentación una página que marca algunas líneas de actuación que pueden ayudar en este tipo de casos: Working with the community

Saludos. Iñaki.

En respuesta a Iñaki Arenaza

Re: ¿Existen "hooks" en moodle?

de Marc Bria Ramirez -
Gracias de nuevo Iñaki.

> Y si no recibes feedback allí, es que la cosa no levanta demasiado interés y probablemente sólo os quede como opción la c) original (fork propio y mantener la personalización vosotros mismos para las siguientes versiones).

Pues ni una sola respuesta en casi 30 días.
Y yo que pensaba que se trataba de una funcionalidad imprescindible. sacar lengua

Creo que al final lo montaremos para tinyMCE (aunque HTMLArea sea el standard, moodle se distribuye con el tiny) y como "módulo bloque", pues muchos moodles se montan en plan doméstico y lo de los patches acojona.

La idea es que se realicen las acciones de patch durante la instalación del módulo (que eso de montar módulos es algo que el administador medio domina a la perfección) y puestos a mostrar algo, presentaremos un bloque de dudosa utilidad como: "roles del usuario activo" o algo asinas.

Eso si, siguiendo los estándares de moodle que para eso están y si en un futuro el módulo resulta útil para alguien más, se pueda migrar al núcleo sin demasiados problemas.

Gracias por todo y hasta pronto,

m.
En respuesta a Marc Bria Ramirez

Re: ¿Existen "hooks" en moodle?

de Guillermo González -
Hola a todos, rescato este post...


Estaba mirando el manual de estilo de Moodle y me encuentro con esto:

Plantilla de página

  1. Imprima las cabeceras con print_heading, use los hooks CSS para IDs y Clases.
  2. Imprima las cajas alrededor del texto usando print_simple_box, use los hooks CSS para IDs y Clases.
¿Qué son los hooks?

Gracias y perdón por la ignorancia :S

En respuesta a Guillermo González

Re: ¿Existen "hooks" en moodle?

de Marc Bria Ramirez -
Enas Gillermo,

Los hooks (o "ganchos", si me permites una ruda traducción) son funciones pensadas desde un inicio para ser reescritas.

Supongo que esto es más fácil de entender con los temas. Imagina que tu tema tiene siempre una cabecera, un cuerpo y un pié... y claro, te interesa ofrecer a otros desarrolladores la posibilidad de "reescribir" estos elementos para (supongamos) ofrecer otra estética.

La técnica que se suele usar para programar esta funcionalidad consiste en crear funciones que antes de ejecutarse "preguntan" si algún desarrollador ha definido un comportamiento distinto al inicial y si esa función se ha definido, la ejecuta en lugar de la original.

Los ejemplos que pones (hooks para CSS) son otro buen ejemplo. Imagina que creas un nuevo módulo y necesitas unos CSS independientemente del tema moodle que se escoja. En ese caso, necesitas decirle a moodle que cargue los CSS que toque, pero también los tuyos... o incuso, dependiendo del módulo, sólo los tuyos.

Para ello (por lo que has dicho) se utiliza una función moodle que puedes sobreescribir (un hook) pero siendo decirte que la desconozco. Aunque en algún momento he buscado, he sido incapaz de localizarla... (lo que hice es cargar los CSS de forma más rupestre, igual que lo hace el módulo book).

Ya que estamos, si alguien tiene a mano un listado de "hooks" o una url de documentación al respecto, sería genial compartirla, o traspasarla a las moodle.docs.

Salu2,

m.
En respuesta a Marc Bria Ramirez

Re: ¿Existen "hooks" en moodle?

de Guillermo González -
Aham, muchas gracias Marc,

conocía el concepto de funciones reescribibles, pero no con el nombre de 'hooks', después de tanto tiempo con Moodle, leer sobre un concepto que parecía desconocido me rompía los esquemas.

Un saludo