Manual del Desarrollador
Este documento describe un poco el diseño de Moodle y cómo se puede
contribuir.
Actuamente es un tanto escueto - ¡con el tiempo se irá mejorando
la documentación!
Secciones de este documento:
- Arquitectura de Moodle
- Cómo contribuir
1. Arquitectura
de Moodle
Desde la perspectiva de un administrador de sistemas, Moodle ha
sido diseñado de acuerdo con los siguientes criterios:
- Moodle debe poder ejecutarse en la más amplia posible
variedad de plataformas
La plataforma de aplicaciones Web que funciona en la mayoría de
las plataformas es PHP combinada con MySQL, y este es el entorno
en el que Moodle ha sido desarrollado (sobre Linux, Windows, y
Mac OS X). Moodle también usa la librería ADOdb para la abstracción
de bases de datos, lo que significa que Moodle puede usar más
de diez marcas diferentes de bases de datos (desafortunadamente,
a pesar de ello, no puede aún crear tablas
en todas esas bases de datos. Hablaremos más sobre esto más adelante).
- Moodle debe ser fácil de instalar, aprender y modificar
Los primeros prototipos de Moodle (1999) se construyeron usando
Zope, un avanzado
servidor de aplicaciones Web orientado a objetos. Desafortunadamente
me pareció que aunque la tecnología era bastante buena, tenía
una curva de aprendizaje muy elevada y no era muy flexible en
términos de administración del sistema. El lenguaje PHP, por otro
lado, es muy fácil de aprender (especialmente si has hecho algo
de programación usando cualquier otro lenguaje de script). Pronto
tomé la decisión de evitar usar un diseño orientado a clases,
con la finalidad, una vez más, de mantenerlo fácil de entender
para los principiantes. La reutilización del código se archiva
en librerías con funciones claramente tituladas y con una disposición
de los archivos de script, consistente. PHP es también fácil de
instalar (existen versiones ejecutables para todas las plataformas)
y está ampliamente disponible, pues la mayoría de los servicios
de alojamiento lo proporcionan como un estándar.
- Debe ser fácil de actualizar desde una versión a la
siguiente
Moodle sabe cuál es su versión (así como las versiones de todos
los módulos) y se ha construido un mecanismo interno para que
Moodle pueda actualizarse a sí mismo de forma apropiada a las
nuevas versiones (por ejemplo, puede renombrar las tablas de las
bases de datos o añadir nuevos campos). Usando CVS en Unix, por
ejemplo, uno tan sólo tiene que hacer un "cvs update -d" y luego
visitar la página principal del sitio para completar la actualización.
- Debe ser modular para permitir el crecimiento
Moodle tiene una serie de características modulares, incluyendo
temas, actividades, interfaces de idioma, esquemas de base de
datos y formatos de cursos. Esto le permite a cualquiera añadir
características al código básico principal o incluso distribuirlas
por separado. Hablaremos más de esto en la siguiente sección.
- Debe poder usarse junto a otros sistemas.
Una de las cosas que hace Moodle es mantener todos los archivos
para un curso en un único directorio en el servidor. Esto podría
permitir que el administrador de un sistema proporcione similares
formas de acceso a un nivel de archivo para cada profesor, tal
como Appletalk, SMB, NFS, FTP, WebDAV y demás. Los módulos de
autenticación le permiten a Moodle usar LDAP, IMAP, POP3, NNTP
y otras bases de datos como fuentes de información de los usuarios.
Por otra parte, aún queda trabajo por hacer sobre esto. Para futuras
versiones de Moodle tenemos planeadas las siguientes características:
importación y exportación de los datos de Moodle utilizando formatos
basados en XML (incluyendo IMS y SCORM), incrementar el uso de
hojas de estilo para el formateo de interfaces (de manera que
puedan integrarse visualmente en otros sitios Web).
2.
Cómo contribuir
Tal como se ha mencionado más arriba, Moodle tiene una serie de
características que son modulares. Incluso, aunque usted no sea
un programador, hay cosas que usted podrá cambiar o con las que
puede ayudar.
Actividades de Aprendizaje
Estos son con mucho los módulos más importantes, y se encuentran
en el directorio "mod". Por defecto hay siete módulos: Tarea,
Consulta, Foro, Diario, Cuestionario, Material, y Encuesta. Cada
módulo está en un subdirectorio separado y consiste en los siguientes
elementos obligatorios (más los scripts extra que son únicos para
cada módulo):
- mod.html: un formulario para establecer o actualizar una instancia
de este módulo
- version.php: define alguna meta-información y proporciona
código de actualización
- icon.gif: un icono de 16x16 para el módulo
- db/: volcados SQL de todas las tablas y datos requeridos de
una base de datos (para cada tipo de base de datos)
- index.php: una página para presentar la lista de todas las
instancias en un curso
- view.php: una página para ver una instancia en particular
- lib.php: cualquiera/todas las funciones definidas para el
módulo deben estar aquí. Si el módulo se llama "chisme", entonces
las funciones requeridas incluyen:
- chisme_add_instance() - código para añadir una nueva instancia
de chisme
- chisme_update_instance() - código para actualizar una
instancia existente
- chisme_delete_instance() - código para borrar una instancia
- chisme_user_outline() - dada una instancia, devuelve un
resumen de una contribución de un usuario
- widget_user_complete() - dada una instancia, imprime detalles
sobre la contribución de un usuario
- Para evitar posibles conflictos, cualquiera de las funciones
de un módulo debe ser nombrada comenzando con chisme_ (el
nombre del módulo más un guión bajo) y cualquier constante
que usted defina debe comenzar con CHISME_
- Finalmente, cada módulo tendrá algunos archivos de idioma
que contienen cadenas para ese módulo. Lea más abajo.
La forma más fácil de comenzar un nuevo módulo de actividad es
usar la plantilla que hay en mod/newmodule_template.zip.
Descomprímala y siga las instrucciones que hay en el documento
"README".
Quizás también quiera antes enviar algo al Foro
de módulos de actividades sobre el uso de Moodle.
Temas
Los temas (o pieles) definen la apariencia de un sitio. Con la
distribución básica se proporciona una serie de temas simples,
pero usted puede querer crear su propio tema, con sus propios
colores, logo, estilos y gráficos.
Cada tema es un subdirectorio del directorio "theme", y contiene
al menos los siguientes archivos:
- config.php: define los colores del tema que
se usan en todo el sitio
- styles.php: la hoja de estilos, contiene
definiciones de CSS para elementos HTML estándar así como para
varios elementos de Moodle.
- header.html: Incluido al principio de cada
página. Este es el que usted necesita editar para añadir un
logo al principio de las páginas, por ejemplo.
- footer.html: Incluido en el pie de cada página.
Para crear sus propios temas para la versión actual de Moodle:
- Copie una de las carpetas de tema existentes a una con un
nuevo nombre. Le recomiendo comenzar con uno de los temas estándar.
- Edite: config.php e inserte sus propios colores.
- Edite: styles.php y cambie su hoja de estilos CSS.
- Edite: header.html y footer.html para añadir nuevos logos
o cambiar la disposición.
Advierta que todos estos pasos son opcionales. Usted puede crear
una apariencia radicalmente distinta para su sitio simplemente
editando los colores que aparecen en el archivo config.php
Advierta también que las actualizaciones de Moodle pueden
corromper ligeramente los temas, así que revise cuidadosamente
las notas de al versión si está usando un tema personalizado.
En particular, Moodle 2.0 tendrá un sistema de presentación completamente
nuevo, probablemente basado en XSL transformando la salida de
XML desde Moodle. Esto quiere decir que los temas para esta versión
tendrán un formato completamente diferente, pero la ventaja será
que habrá un grado de personalización mucho más alto (incluyendo
mover elementos en la página).
Encontrará más discusión sobre esto en el Foro
sobre temas en el uso de Moodle. Si usted crea un bonito tema
que considera que otros podrían querer usar, ¡por favor, envíelo
en un archivo comprimido al foro sobre temas!.
Idiomas
Moodle ha sido diseñado para ser internacional. Cada "cadena"
o "página" de texto que se presenta como parte de la interfaz
surge de una serie de archivos de idioma. Cada idioma es un subdirectorio
del directorio "lang". La estructura del directorio "lang" es
la que sigue:
lang/en - directorio que contiene todos los
archivos para un idioma (por ejemplo, el inglés)
- moodle.php - cadenas para la interfaz principal
- assignment.php - cadenas para el módulo de tareas
- choice.php - cadenas para el módulo consulta
- forum.php - cadenas para el módulo del foro
- journal.php - cadenas para el módulo del diario
- quiz.php - cadenas para el módulo del cuestionario
- resource.php - cadenas para el módulo de materiales
- survey.php - cadenas para el módulo de encuesta
- .... además de otros módulos si los hay.
Se llama a las cadenas desde los archivos usando las funciones:
get_string() o print_string().
Cada cadena admite la sustitución de variables para ayudar a
la ordenación de variables en diferentes idiomas. Por ejemplo:
$strdueby = get_string("assignmentdueby", "assignment", userdate($date));
Si en un determinado idioma no existe una cadena, entonces se
usará automáticamente en su lugar el equivalente en inglés.
lang/en/help - contiene todas las páginas de
ayuda (para las ayudas emergentes sensibles al contexto)
Las páginas principales de ayuda están situadas aquí, mientras
que las páginas específicas de cada módulo están localizadas en
subdirectorios con el nombre del módulo.
Con la función helpbutton, usted puede insertar un botón
de ayuda en una página.
Por ejemplo: helpbutton("text", "Haga clic aquí para obtener
ayuda sobre el texto");
y para los módulos:
helpbutton("forumtypes", "Forum types", "forum");
Tenga en cuenta que puede editar los idiomas en línea,
usando las herramientas web de Administración bajo "Idioma". Esto
hace que sea fácil no sólo crear nuevos idiomas sino también refinar
los existentes. Si va a comenzar a crear un nuevo idioma por favor
comuníquese conmigo: Martin
Dougiamas.
También querrá enviar un mensaje al Foro
de idiomas sobre el uso de Moodle.
Si usted está haciendo el mantenimiento de un idioma de manera
continuada, yo puedo darle acceso
de escritura al código fuente de Moodle en el CVS de manera
que pueda hacer el mantenimiento directo en los archivos.
Esquemas de Bases de Datos
Dada una base de datos funcionando con tablas definidas, el intencionalmente
simple SQL usado
en Moodle debe funcionar bien con una amplia variedad de marcas
de bases de datos.
Existe un problema con la creación automática
de nuevas tablas en una base de datos, que es lo que Moodle intenta
hacer tras la instalación inicial. Debido a que cada base de datos
es muy diferente de las otras, aún no existe una manera de hacer
esto de manera independiente del tipo de plataforma. Para ayudar
a la automatización en cada base de datos, pueden crearse esquemas
que enumeren el SQL requerido para crear tablas en Moodle en una
base de datos determinada. Estos son los archivos que hay en lib/db
y dentro del subdirectorio db de cada módulo.
Actualmente, sólo se soportan totalmente de esta manera, MySQL
y PostgreSQL (nadie ha escrito esquemas para otras marcas).
Moodle 1.1 usará un nuevo método de esquemas XML independientes
de la base de datos que hará que todo ésto no sea necesario.
Formatos de curso
Actualmente Moodle soporta tres formatos de curso diferentes:
semanal, por temas y social.
Estos están un poco más conectados al resto del código (y, por
tanto, son menos extendibles) pero sigue siendo bastante sencillo
añadir nuevos módulos.
Si tiene cualquier idea para formatos diferentes que necesite
o quiera ver integrados, póngase en contacto conmigo y yo haré
mi mayor esfuerzo para tenerlos disponibles en futuras versiones.
Documentación y artículos
Si a usted le apetece escribir un manual, un artículo, un documento
académico o cualquier otra cosa sobre Moodle, por favor, ¡hágalo!
Póngalo en la Web y asegúrese de poner enlaces a http://moodle.org/
Participar en el rastreo de fallos
Finalmente, me gustaría invitarle a registrarse en la lista de
"rastreo de fallos" en http://moodle.org/bugs
de manera que pueda enviar cualquier fallo que encuentre y quizás
participar en la discusión sobre cómo arreglarlos.
"Fallos" no sólo incluye fallos de software de las versiones
actuales de Moodle, sino también nuevas ideas, mejoras e incluso
crítica constructiva de las actuales características. La belleza
del código abierto radica en que cualquiera puede participar de
alguna manera y ayudar a la creación de un producto mejor para
que todos disfrutemos de él. ¡En este proyecto sus ideas son muy
bienvenidas!
|