El bloque recent_activity es el que al intentar cargarse genera el problema con la dfwiki más la newwiki instalada de que solo se cargan tres bloques de la sección de la izquierda.
Investigando he descubierto la causa, y una solución provisional:
El bloque recent_activity llama a la función print_recent_activity definida en course/lib.php. Esta función ejecuta las siguientes instrucciones:
$mods = get_records('modules', 'visible', '1', 'name', 'id, name');
foreach ($mods as $mod) { // Each module gets it's own logs and prints them
include_once($CFG->dirroot.'/mod/'.$mod->name.'/lib.php');
$print_recent_activity = $mod->name.'_print_recent_activity';
if (function_exists($print_recent_activity)) {
$modcontent = $print_recent_activity($course, $isteacher, $timestart);
if ($modcontent) {
$content = true;
}
}
}
Cuando se hace el include_once de mod/dfwiki/lib.php es cuando falla.
Y este fallo se produce por que en el mod/dfwiki/lib.php se hace require_once ('dfwikilib.php') y require_once ('blocks/lib.php');
Para que funcione unasolcuión provisional sería introducir el siguiente código en mod/dfwiki/lib.php
global $COURSE;
if (!$COURSE->format='wiki'){
require_once ('dfwikilib.php');
require_once ('blocks/lib.php');
}
Lo he probado y funciona en el curso wiki, pero digo PARCIAL, ya que desconozco el funcionamiento de la dfwiki y no estoy seguro que pueda afectar en algo más.
Creo esta solución/apaño solamente falla en el caso en que en un curso_wiki se cree una actividad de tipo dfwiki, pero en teoría eso no debería ocurrir, y llegado el caso se puede modificar la dfwiki para que no se permita añadir actividades dfwiki en un curso wiki.
Dejo dos pantallitas que dan fé de que funciona:
izquierda derecha
Luego de comentar esto con pigui, el me informa que no se puede tocar el código de la dfwiki, y que la solución real, pasará por modificar los nombres de las funciones de la newwiki, para que se diferencien de los nombres de las funciones de la dfwiki. De esta manera, aunque s ehaga el include de las librerias de la dfwiki o de la new wiki, se llamará siempre a las funciones correctas desde cada módulo wiki. Pigui me informa que esta tarea la realizará él, motivo por el que mi colaboración respecto al curso wiki, de momento puede darse por finalizada.
Adicionalmente Pigui modificará algunos otros temas del curso wiki, como por ejemplo la carga de determinados javascript que no se están cargando o que funcionan de manera incorrecta.
lunes, octubre 30, 2006
Solución de los links en Curso Wiki
La idea es buscar una solución que pueda adaptarse también posteriormente al curso wiki principal.
Hay que eliminar la asignación $WS->cm->id=$WS->course->id, y que los links de la forma
mod/wiki/view.php=?'$cm->id', distingan el curso wiki de la actividad wiki y posteriormente distingan también el curso wiki principal.
Aprovechando que con la inicialización tanto del curso wiki como de la actividad wiki se realiza al llamar a la función wiki_main_setup, en dicha fucnión se define el seguiente código:
$WS->wikitype='/mod/wiki/view.php?id=';
$WS->linkid=$WS->cm->id;
if (isset($WS->dfcourse)){
$WS->wikitype='/course/view.php?id=';
$WS->linkid=$COURSE->id;
}
Luego se modifican todos los links del tipo mod/wiki/view.php=?'$cm->id', por 'WS->wikitype'.'WS->linkid'
Ahora los links ya se forman de manera correcta tanto en un curso wiki como en una actividad wiki, y en el futuro para el curso wiki principal, solo habrá que modificar el código de la siguiente forma:
$WS->wikitype='/mod/wiki/view.php?id=';
$WS->linkid=$WS->cm->id;
if (isset($WS->dfcourse)){
if ($CORSE->category!=0){ //curso wiki estandard
$WS->wikitype='/course/view.php?id=';
}
else { //Curso wiki como curso principal
$WS->wikitype='/index.php?id=';
}
$WS->linkid=$COURSE->id;
}
Nota: Habrá que modificar los links duplicados que actualmente se definen en los bloques para que sigan este mismo esquema.
Hay que eliminar la asignación $WS->cm->id=$WS->course->id, y que los links de la forma
mod/wiki/view.php=?'$cm->id', distingan el curso wiki de la actividad wiki y posteriormente distingan también el curso wiki principal.
Aprovechando que con la inicialización tanto del curso wiki como de la actividad wiki se realiza al llamar a la función wiki_main_setup, en dicha fucnión se define el seguiente código:
$WS->wikitype='/mod/wiki/view.php?id=';
$WS->linkid=$WS->cm->id;
if (isset($WS->dfcourse)){
$WS->wikitype='/course/view.php?id=';
$WS->linkid=$COURSE->id;
}
Luego se modifican todos los links del tipo mod/wiki/view.php=?'$cm->id', por 'WS->wikitype'.'WS->linkid'
Ahora los links ya se forman de manera correcta tanto en un curso wiki como en una actividad wiki, y en el futuro para el curso wiki principal, solo habrá que modificar el código de la siguiente forma:
$WS->wikitype='/mod/wiki/view.php?id=';
$WS->linkid=$WS->cm->id;
if (isset($WS->dfcourse)){
if ($CORSE->category!=0){ //curso wiki estandard
$WS->wikitype='/course/view.php?id=';
}
else { //Curso wiki como curso principal
$WS->wikitype='/index.php?id=';
}
$WS->linkid=$COURSE->id;
}
Nota: Habrá que modificar los links duplicados que actualmente se definen en los bloques para que sigan este mismo esquema.
Reunión Semana 7
La entrega a Dougiamas se pospone al miércoles. Hay que terminar de limpiar los comentarios, y solucionar el problema del curso wiki.
Pigui mirará de resolver por que falla con la dfwiki y la newwiki instaladas conjuntamente, y yo resolveré el tema de los links.
LUDO nos comenta que una vez finalizada la entrega, nos dediquemos al curso wiki como curso principal y a introducir una nueva fucnionalidad: Categorías. Por otro lado Pigui nos pide que resolvamos todos los oprional_param, de manera que se utilicen todos los parámetros y garanticemos así el nivel de seguridad que se requiere para que la wiki pueda formar parte del moodle oficial.
Pigui mirará de resolver por que falla con la dfwiki y la newwiki instaladas conjuntamente, y yo resolveré el tema de los links.
LUDO nos comenta que una vez finalizada la entrega, nos dediquemos al curso wiki como curso principal y a introducir una nueva fucnionalidad: Categorías. Por otro lado Pigui nos pide que resolvamos todos los oprional_param, de manera que se utilicen todos los parámetros y garanticemos así el nivel de seguridad que se requiere para que la wiki pueda formar parte del moodle oficial.
Puesta a punto del Curso Wiki
Continúo trabajando con el curso wiki.
La solución de las pestañas para visualizar el curso wiki no gusta a nadie, y menos la de la redirección, así que me pongo a trabajar para que en el curso wiki se vean todas las pestañas, no solo la de editar, y que el tratamiento se realice totalmente en el curso wiki.
Esto implica modificar el formato del curso wiki para acceder a todas las librerias de la actividad wiki (especialmente locallib.php) pero sin duplicar código. Para conseguirlo, hay que analizar e ir creando la instancia de curso wiki de forma paralela a como se hace en la actividad wiki, pero distinguiendo el tratamiento especial del curso wiki, como por ejemplo la integración de las actividades sociales.
Para conseguirlo se sigue el siguiente esquema:
En una actividad, el link es del tipo mod/wiki/view.php?=ID_de_la_ página_wiki, mientras que en el curso el link se ha de ser del tipo course/view-php?=ID_del_módulo_wiki.
Lo primero que se me ocurre es hacer la asignación la asignación a $WS->cm->id=$WS->course->id, que aunque es incorrecto me permite fácilmente verificar las funcionalidades. De momento dejo dicha asignación, aún sabiendo que debe cambiarse y verifico las funcionalidades.
Las pestañas de view, edit, discuss, history, navegation, evaluate, las voy verificando correctamente y voy solucionando pequeños problemas que aparecen (Como por ejemplo cargar el javascript para que aparezcan los botones en el editor dfwiki y e-wiki).
Los bloques parecen funcionar bien, gracias a que con anterioridad ya se habían programado para fucnionar tanto en actividad como en curso wiki.
El último gran tema que queda es el del bloque de administración de las ead_tools. Algunas funcionan y otras no...Para solucionar este problema, es necesario tratar correctamente el tema de los links, es decir eliminar la asignación comentada arriba, y hacer el tratamiento sugerido por Pigui con el siguiente código:
if (isset($dfcourse)){
//lo que sea referente al curso
}else{
//el codigo .
}
Con el curso wiki "funcionando", lo subo al cvs de sourceforge.Pigui la prueba y lo primero que comenta es que NO funciona.
Extrañado, aunque no mucho, ya que en mi instalación perfectamente, y en la de Paton también.
El primer indicio parece ser que es debido a un problema al cargar los bloques.
Con Marc Catala y utilizando su instalación de Moodle, verificamos que el curso wiki a él también le falla. Investigando, llegamos a la conclusión que el problema ocurre cuando se tiene instalada la dfwiki y la newwiki en un mismo sistema. No era ese mi caso, ya que en su momento no pude instalar la dfwiki, y por lo tanto solo tenía la new wiki.
En la reunión del miércoles trataremos este tema para ver como lo solucionamos.
Por este tema, entre entre otros, se decide no entregar el código a Dougiamas, pero deberemos darnos prisa para solcuionarlo lo antes posible.
En esta imágen puede observarse como falla el curso wiki con la dfwiki y la newwiki instalada:
Fallo(Solo se cargan algunos bloques de la sección de la izquirda)
La solución de las pestañas para visualizar el curso wiki no gusta a nadie, y menos la de la redirección, así que me pongo a trabajar para que en el curso wiki se vean todas las pestañas, no solo la de editar, y que el tratamiento se realice totalmente en el curso wiki.
Esto implica modificar el formato del curso wiki para acceder a todas las librerias de la actividad wiki (especialmente locallib.php) pero sin duplicar código. Para conseguirlo, hay que analizar e ir creando la instancia de curso wiki de forma paralela a como se hace en la actividad wiki, pero distinguiendo el tratamiento especial del curso wiki, como por ejemplo la integración de las actividades sociales.
Para conseguirlo se sigue el siguiente esquema:
- En un curso wiki, el archivo que se carga es course/view.php, y desde aquí se cargan los bloques del curso definidos en course/format/wiki/config.php y el formato del curso definido en course/format/wiki/format.php.
- En format.php se incluye el código de mod/wiki/lib.php que a su vez incluye el código de mod/wiki/locallib.php (Ya tenemos el 99% de las funciones de la actividad wiki para ser utilizadas en el curso wiki), y se define antes que nada la variable $WS->dfcourse = 1; que indica que estamos en un curso wiki.
- Seguimos en format.php se realizan las verificaciones de seguridad, que la página existe, etc... y se llama a wiki_main_view_setup() donde se verifica la versión de la página. A continuación se cargan los bloques de la sección de la izquierda y en la sección central se integra el bloque social activies y luego se carga el curso wiki medienta la llamada a wiki_main_view_content()
- En wiki_main_view_content(), definida en locallib, es donde se hará ahora el tratamiento más específico para que el curso wiki se comporte como una actividad wiki, es decir que funcionen todas las características de una wiki sobre el curso. Para esto y a medida que se van precisando se recogen todos los parámetros para el correcto tratamiento de las funcionalides y de los formularios, mediante la función optional_param(). y luego se hace la llamada a wiki_setup_content($WS); donde se define el contenido del curso wiki y finalmente se imprime mediante la llamada a wiki_print_content ($WS); (ambas funciones definidas en mod/wiki/lib.php.
En una actividad, el link es del tipo mod/wiki/view.php?=ID_de_la_ página_wiki, mientras que en el curso el link se ha de ser del tipo course/view-php?=ID_del_módulo_wiki.
Lo primero que se me ocurre es hacer la asignación la asignación a $WS->cm->id=$WS->course->id, que aunque es incorrecto me permite fácilmente verificar las funcionalidades. De momento dejo dicha asignación, aún sabiendo que debe cambiarse y verifico las funcionalidades.
Las pestañas de view, edit, discuss, history, navegation, evaluate, las voy verificando correctamente y voy solucionando pequeños problemas que aparecen (Como por ejemplo cargar el javascript para que aparezcan los botones en el editor dfwiki y e-wiki).
Los bloques parecen funcionar bien, gracias a que con anterioridad ya se habían programado para fucnionar tanto en actividad como en curso wiki.
El último gran tema que queda es el del bloque de administración de las ead_tools. Algunas funcionan y otras no...Para solucionar este problema, es necesario tratar correctamente el tema de los links, es decir eliminar la asignación comentada arriba, y hacer el tratamiento sugerido por Pigui con el siguiente código:
if (isset($dfcourse)){
//lo que sea referente al curso
}else{
//el codigo .
}
Con el curso wiki "funcionando", lo subo al cvs de sourceforge.Pigui la prueba y lo primero que comenta es que NO funciona.
Extrañado, aunque no mucho, ya que en mi instalación perfectamente, y en la de Paton también.
El primer indicio parece ser que es debido a un problema al cargar los bloques.
Con Marc Catala y utilizando su instalación de Moodle, verificamos que el curso wiki a él también le falla. Investigando, llegamos a la conclusión que el problema ocurre cuando se tiene instalada la dfwiki y la newwiki en un mismo sistema. No era ese mi caso, ya que en su momento no pude instalar la dfwiki, y por lo tanto solo tenía la new wiki.
En la reunión del miércoles trataremos este tema para ver como lo solucionamos.
Por este tema, entre entre otros, se decide no entregar el código a Dougiamas, pero deberemos darnos prisa para solcuionarlo lo antes posible.
En esta imágen puede observarse como falla el curso wiki con la dfwiki y la newwiki instalada:
Fallo(Solo se cargan algunos bloques de la sección de la izquirda)
Reunión Semana 6
Presentamos la primera aproximación del curso wiki como curso principal.
A LUDO le gusta el aspecto pero nos pide que dejemos de lado el curso wiki para centrarnos en la próxima entrega de código al Sr. Dougiamas. A tal efecto, debemos centrarnos en la depuración de los comentarios que hay en el código, y verificar el correcto funcionamiento de las pocas funcionalidades que hemos añadido y de los bugs que hemos corregido.
Comentamos que donde más trabajo nos queda es en el curso wiki, y que el tema fundamental a tratar es que la creación de los links para identificar el caso de curso wiki del caso actividad wiki, la hemos realizado a costa de sobreescribir una variable que NO debemos sobrescribir, pero que lo hemos hecho así para probar primero que funciona, y una vez que viéramos que funciona lo solucionaremos correctamente.
A LUDO le gusta el aspecto pero nos pide que dejemos de lado el curso wiki para centrarnos en la próxima entrega de código al Sr. Dougiamas. A tal efecto, debemos centrarnos en la depuración de los comentarios que hay en el código, y verificar el correcto funcionamiento de las pocas funcionalidades que hemos añadido y de los bugs que hemos corregido.
Comentamos que donde más trabajo nos queda es en el curso wiki, y que el tema fundamental a tratar es que la creación de los links para identificar el caso de curso wiki del caso actividad wiki, la hemos realizado a costa de sobreescribir una variable que NO debemos sobrescribir, pero que lo hemos hecho así para probar primero que funciona, y una vez que viéramos que funciona lo solucionaremos correctamente.
Curso Wiki como curso principal
Siguiendo con el curso Wiki, pero ahora buscando modificar el moodle para permitir que el curso Wiki pueda ser el Curso principal. De esta manera, al acceder a Moodle, lo primero que se debe ver es el curso wiki, con su wiki y su bloque de actividades sociales integrados, pero con los demás bloques propios del curso principal, es decir el bloque de administración de Moodle, el bloque con los cursos de Moodle, etc...
Lo primero que observo es que en la tabla mdl_course, el curso principal se distingue de los demás cursos en que el campo category tiene valor 0, mientras que el resto de curso dicho campo tiene valor 1.
Otros datos a tener en cuenta, es que por defecto el formato del curso principal es "social", y que dicho formato no se puede modificar en el formulario de administración del curso principal.
El primer intento es modificar manualmente el campo category, poniendo a category=0 a un curso wiki, pero me encuentro que aunque se carga el curso wiki como curso principal sin demasiados efectos colaterales. El mayor problema que puedo observar es que en la sección del centro, además de cargarse el curso wiki, se cargan todos los bloques que con anterioridad se habían definido a dicho curso. Esto es normal, pero indica que habrá que tener un tratamiento especial en relación a que bloques se cargan y como se cargan en el caso del curso wiki ya que se están cargando dos veces. Una en la sección central, y otra en la sección de la derecha o izquierda.
Aquí puede observarse el efecto anteriormente comentado: Curso Wiki principal primera aproximación
Continúo investigando. Una solución al tema bloques pasa por introducir un if dentro de course/wiki/formatlib.php, donde se cargan los bloques, y en caso que category=0 no cargar los bloques. Aquí puede observarse el nuevo aspecto: Curso Wiki principal segunda aproximación Se ha solucionado el problema de la visualización de los bloques, pero al intentar editar el curso, se observa que hay un problema con las secciones. La integración del bloque de social_activities se carga mal.
Conclusiones:
Lo primero que observo es que en la tabla mdl_course, el curso principal se distingue de los demás cursos en que el campo category tiene valor 0, mientras que el resto de curso dicho campo tiene valor 1.
Otros datos a tener en cuenta, es que por defecto el formato del curso principal es "social", y que dicho formato no se puede modificar en el formulario de administración del curso principal.
El primer intento es modificar manualmente el campo category, poniendo a category=0 a un curso wiki, pero me encuentro que aunque se carga el curso wiki como curso principal sin demasiados efectos colaterales. El mayor problema que puedo observar es que en la sección del centro, además de cargarse el curso wiki, se cargan todos los bloques que con anterioridad se habían definido a dicho curso. Esto es normal, pero indica que habrá que tener un tratamiento especial en relación a que bloques se cargan y como se cargan en el caso del curso wiki ya que se están cargando dos veces. Una en la sección central, y otra en la sección de la derecha o izquierda.
Aquí puede observarse el efecto anteriormente comentado: Curso Wiki principal primera aproximación
Continúo investigando. Una solución al tema bloques pasa por introducir un if dentro de course/wiki/formatlib.php, donde se cargan los bloques, y en caso que category=0 no cargar los bloques. Aquí puede observarse el nuevo aspecto: Curso Wiki principal segunda aproximación Se ha solucionado el problema de la visualización de los bloques, pero al intentar editar el curso, se observa que hay un problema con las secciones. La integración del bloque de social_activities se carga mal.
Conclusiones:
- Analizar en profundidad el tema de las secciones. Como mínimo es incorrecto el tratamiento que se hace en course/wiki/format.php, a la hora de integrar las social_activities.
- Analizar como editar el formulario de configuración->site settings del curso principal, SIN TOCAR el código de moodle. Esto será posible siempre que dicho formulario se genere dinámicamente.
- Editar (site settings) el curso principal para permitir seleccionar el formato de curso wiki y que ocurre cuando se selecciona el orden de aparición de la Lista de Novedades, de la Lista de Cursos y de la Lista de Categorias. (Se puden definir para que se visualicen Hide, First, Second..) y al guardar los cambios, se modifica la tabla de mdl_course_sections, con lo que se observa una relación al punto anterior donde se habla del tratamiento de las secciones.
- Revisar la creación de TODOS los links, para que apunten a localhost/index.php en lugar de a localhost/course/view.php. ($WS->wikitype=localhost/index.php?=).
sábado, octubre 14, 2006
To tab or not to tab
Hemos estado trabajando en el tema de la coherencia en la navegabilidad de una wiki en formato wiki.
Lo que a principio parecía algo simple se ha complicado.
Contexto
Actualemente hemos adoptado la solución de las pestañas. Pero no descartamos modificar la solución y aplicar la redirección o el tratamiento diferenciado.
Lo que a principio parecía algo simple se ha complicado.
Contexto
Curso en formato Wiki
- Al acceder a una wiki en formato curso, se carga el archivo moodle/course/view.php . Éste archivo utiliza carga los archivos moodle/course/format/wiki/format.php, formatlib.php y config.php que definien el formato de los bloques dentro del curso.
- Los únicos archivos que a priori podemos modificar al nivel de moodle/course, son format.php y formatlib.php.
- El archivo format.php hace un require de moodle/mod/wiki/lib.php que a su vez hace un require de moodle/mod/wiki/locallib.php . es en estos archivos donde se define la lógica de las funcionalidaes.
- Resumiendo, es un poco kafquiano, pero las funcionalidades se cargan a partir de los arrchivos que definen el formato de los bloques que se integran al curso...
Módulo Wiki
- La wiki se carga a partir del archivo moodle/mod/wiki/view.php y que hace un require de moodle/mod/wiki/lib.php que a su vez hace un require de moodle/mod/wiki/locallib.php
Elementos comunes
- Las funcionalidades están definidas en la ruta moodle/mod/wiki
- Concretamente en los archivos locallib.php y lib.php
- Son comunes tanto al módulo wiki como al curso wiki.
- Al acceder a una funcionalidad de una wiki integrada a un curso, como por ejemplo editar la wiki, se termina cargando el archivo moodle/mod/wiki/view.php.
- Al guardar la edición, en lugar de volver a la wiki en formato curso, volevemos a la wiki en formato módulo. Y esto no queremos que sea así.
- Crear una nueva pestaña:
- Al estar en un curso wiki, crear una pestaña que se visualice al estar en la vista tipo módulo de la wiki, que permita volver a la vista tipo curso. Ej: Pestaña
- Ventajas: Fácil de implementar, no duplica código.
- Desventajas: No soluciona totalmente el problema. La navegabilidad no es óptima.
- Redireccionar a vista curso:
- Al estar en un curso wiki, y editar una wiki o al volver de cualquier actividad, realizar el tratamiento que corresponda y que se encuentra definido a partir de moodle/mod/wiki/view.php. Una vez realizado el tratamiento, redireccionar a moodle/course/view.php
- Ventajas: Fácil de implementar, usando al finalizar el tratamiento de la funcionalidad requerida la siguiente instrucción: header('Location:$CFG->wwwroot.$dfform["pagecourse"]'); Donde $dfform["pagecourse"]' contiene la url de la página en moodle/course/view.php
- Desventajas:
- No termina de funcionar: Warning: Cannot modify header information - headers already sent by (output started at C:\moodle\moodle\mod\wiki\blocks\lib.php:13) in C:\moodle\moodle\mod\wiki\locallib.php on line 1431.
- Hay que analizar el tema de la seguridad.
- Efectuar tratamientos distintos en función de curso o módulo wiki:
- Tratar de forma difeten una wiki en un curso wiki y en un módulo wiki mediante el siguiente código: i
- if (isset($dfcourse)){
//lo que sea referente al curso
}else{
//el codigo que habia antes.
} - Ventajas: Navegabilidad óptima. No añadimos más pestañas. No hay problema de seguiridad
- Desventajas:
- Dificultad de implementación.
- Duplicación de código.
Actualemente hemos adoptado la solución de las pestañas. Pero no descartamos modificar la solución y aplicar la redirección o el tratamiento diferenciado.
Suscribirse a:
Entradas (Atom)