Academia Deltamontero · Documentación
Desarrollo

Plugins de terceros

Moodle y los plugins de terceros incluidos en la imagen, con su versión o commit fijado, los ajustes de instalación y los parches que se les aplican.

Moodle y todos los plugins de terceros se instalan dentro de la imagen en tiempo de construcción (infrastructure/moodle/Dockerfile), para poder recuperar la plataforma sin depender de que los repositorios externos sigan igual.

Cómo se fijan las versiones

git-at <url> <commit> <carpeta> (infrastructure/moodle/git-at.sh, copiado a /usr/local/bin/git-at) inicializa un repositorio vacío, descarga solo ese commit (git fetch --depth=1 origin <commit>) y lo deja en FETCH_HEAD; imprime el nombre del repositorio y el hash corto. Usa safe.directory='*' porque la carpeta de la imagen base pertenece a otro usuario.

Así un cambio del autor no rompe la imagen ni desactiva en silencio un parche. Para actualizar un plugin se cambia el commit en el Dockerfile y se prueba (ver Guía de cambios).

Tres plugins de la familia de IA (local_ai_manager, tiny_ai, block_ai_chat) no se fijan por commit sino por etiqueta (git clone --depth=1 --branch v1.1 / v1.0). Si el autor moviera la etiqueta, la imagen cambiaría sin aviso; verify-patches.php detectaría al menos los parches importantes que dejaran de aplicarse.

Inventario

ComponentePropósitoRepositorioVersión fijadaRutaAjustes de instalaciónParches
Moodle (núcleo)Plataforma LMS 4.5 LTSgithub.com/moodle/moodleCommit 89ae02d0007418c50f0911148137f4cb3bd67f4a/var/www/html—patch-policy-consentpage, patch-forgot-password, patch-welcome-name, patch-cedula-field
theme_boost_unionTema corporativomoodle-an-hochschulen/moodle-theme_boost_union3d2b713240b3776bca785e487d10ad6f8e59f967theme/boost_unionConfigurado por moodle-config.sh y set-logos.php—
mod_hvpContenido H5P interactivoh5p/h5p-moodle-plugin6527ec556a198f217469f7cefa7d7bdcfcfb6f27mod/hvpgit submodule update --init --recursive (la librería H5P es un submódulo)—
mod_interactivevideoVideos de YouTube con interactividadsokunthearithmakara/mod_interactivevideoe5c601683026cd90430e5e0c085211661a1e726dmod/interactivevideo—patch-video-completion (cosmético)
mod_customcertCertificados personalizados de los módulosmdjnelson/moodle-mod_customcert84cb6dfa2d10715387ddc6dad308ed2e0dcd817e (el comentario indica rama MOODLE_404_STABLE)mod/customcert—patch-cert-completion-gate
tool_certificateMotor de plantillas de mod_coursecertificatemoodleworkplace/moodle-tool_certificate71bf23b49900a579d6f06e74f0eb2768078d7a42 (comentario: MOODLE_400_STABLE, cubre 4.0–4.5)admin/tool/certificateSe borra element/program (requiere enrol_programs, solo de Moodle Workplace)—
mod_coursecertificateCertificados de finalización de cursomoodleworkplace/moodle-mod_coursecertificate2a2a10d539888b824a7875923a09931f50d982cdmod/coursecertificate——
local_ai_managerProxy de IA (instancias, propósitos, cuotas, términos)bycs-lp/moodle-local_ai_managerEtiqueta v1.1 (comentario: última compatible con 4.5; v2.0+ requiere Moodle 5.0)local/ai_managerSubplugins incluidos en el propio repositoriopatch-ai-role-injection, patch-ai-agent, patch-ai-chat-everywhere
tiny_aiDependencia de block_ai_chat (IA en el editor TinyMCE)bycs-lp/moodle-tiny_aiEtiqueta v1.0lib/editor/tiny/plugins/ai——
block_ai_chatInterfaz del chat de IAbycs-lp/moodle-block_ai_chatEtiqueta v1.0 (comentario: última compatible con 4.5)blocks/ai_chat—patch-ai-chat-copy, patch-ai-chat-ui (cosméticos)
block_sharing_cartCompartir actividades entre cursosdonhinkelman/moodle-block_sharing_cart2e5cef495e4bf8537df35f01c0d3ce23d4b89344blocks/sharing_cart——
webservice_mcpProtocolo MCP sobre los servicios web (endpoint /webservice/mcp/server.php)onbirdev/moodle-webservice_mcp198246e5d7121b7658e72e44549006753136ac70webservice/mcpSe activa con webserviceprotocols = rest,mcp—

Después de clonar, el Dockerfile cambia el dueño de /var/www/html a www-data.

El README.md del repositorio muestra todavía nombres de ramas (por ejemplo MOODLE_405_STABLE o stable) en la tabla de plugins. La fuente de verdad de las versiones es el Dockerfile.

Por qué se aplica cada parche

PluginParcheMotivo
local_ai_managerpatch-ai-role-injection.phpQue la IA conozca el perfil del usuario (ai_role_injector)
local_ai_managerpatch-ai-agent.phpAgente de acciones con permisos reales (ai_agent)
local_ai_managerpatch-ai-chat-everywhere.phpEl chat aparecía solo dentro de los cursos para el nivel básico
block_ai_chatpatch-ai-chat-copy.phpCopiar fallaba por HTTP (sin contexto seguro)
block_ai_chatpatch-ai-chat-ui.phpDatos para el JavaScript propio (nombre, ids, límite) y contexto de 50 mensajes
mod_customcertpatch-cert-completion-gate.phpLos gestores descargaban su certificado sin completar el módulo
mod_interactivevideopatch-video-completion.phpSin confeti ni "Congratulations" al completar un video
Moodle tool_policypatch-policy-consentpage.phpAceptación del aviso en una sola página
Moodle loginpatch-forgot-password.phpRecuperación solo por nombre de usuario
Moodle lib/classes/user.phppatch-welcome-name.phpSaludo con primer nombre y primer apellido
Moodle user/editlib.phppatch-cedula-field.phpCampo Cédula arriba y obligatorio

Detalle de cada uno en Parches.

Traducciones al español

Varios plugins de terceros no traen español. infrastructure/moodle/lang/es/ replica la estructura de /var/www/html y el Dockerfile la copia encima, de modo que cada archivo queda en la carpeta lang/es de su plugin. El paquete de idioma oficial (si trae alguna cadena) y las personalizaciones del sitio tienen prioridad.

PluginArchivos
block_ai_chatblocks/ai_chat/lang/es/block_ai_chat.php
block_sharing_cartblocks/sharing_cart/lang/es/block_sharing_cart.php
tiny_ailib/editor/tiny/plugins/ai/lang/es/tiny_ai.php
local_ai_manager y sus subpluginsEl plugin, los propósitos (chat, feedback, imggen, itt, singleprompt, translate, tts) y las herramientas (chatgpt, dalle, gemini, googlesynthesize, imagen, ollama, openaitts, telli)
mod_customcertEl plugin y sus 19 elementos (bgimage, border, categoryname, code, coursefield, coursename, date, daterange, digitalsignature, expiry, grade, gradeitemname, image, qrcode, studentname, teachername, text, userfield, userpicture)
mod_hvpmod/hvp/lang/es/hvp.php
mod_interactivevideomod/interactivevideo/lang/es/
theme_boost_uniontheme/boost_union/lang/es/
webservice_mcpwebservice/mcp/lang/es/

En total son 43 archivos de idioma.

Plugins nativos de Moodle que la Academia usa intensamente

PluginUso
tool_policyAviso de Tratamiento de Datos Personales
tool_usertoursRecorridos guiados de la Academia
tool_mfa (factores admin, totp, grace)Verificación en dos pasos solo para super administradores (7 días de gracia)
enrol_cohort, enrol_manual, enrol_selfRutas por cargo y empresa, matrícula individual (los métodos habilitados son manual,self,cohort)
mod_quiz, mod_page, mod_url, mod_resource, mod_label, mod_choiceRepasos, lecturas, enlaces, documentos, avisos y consentimiento LOPDP
core_reportbuilderInformes personalizados de Moodle

En esta página