lunes, octubre 30, 2006

Problema con bloque recent_activity

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.

No hay comentarios: