Mostrando entradas con la etiqueta Timeline. Mostrar todas las entradas
Mostrando entradas con la etiqueta Timeline. Mostrar todas las entradas

martes, 15 de enero de 2008

Mejoras para el TimeLine

La primera de las tareas a completar y unas de las que estoy más orgulloso, podría incluir en un futuro alguna de estás mejoras.

- Cambiar la altura y el tamaño del TimeLine dinámicamente, es decir, sin tener que recargar de nuevo la página entera.

- Eliminar la ventana emergente del botón "count" e incluir dentro de la misma página web una pequeña sección que se actualice automáticamente. Una opción sería incluir un frame dentro de la página web, una solución sencilla en la que solo nos tendríamos que preocupar en recargar el frame cada vez que se cambie la pestaña. Otra opción sería añadir un programa en Ajax que mantuviera la comunicación del servidor, mostrando el número de eventos a cada cambio.

- Mejorar el sistema de filtraje. Esto implicaría (en mi opinión) un incremento considerable de código y tiempo, pero agilizaría el trabajo del servidor.

domingo, 13 de enero de 2008

Timeline (Archivos modificados o creados)

La metodología que utilizaré será exponer la ruta completa del fichero, siempre suponiendo que me encuentro dentro de la carpeta instalada de Moodle, y en función de si se han modificado funciones o métodos ya existentes, dos puntos y el nombre de la función. Del estilo de:
ruta_completa_del_archivo/archivo:función

Archivos creados

/course/report/log_timeline/index.php
Contiene la construcción de la página web principal. Es el archivo encargado de construir la página web además de verificar los datos del usuario. Punto de partida a la hora de trabajar, ya que es en este archivo donde se definen variables globales muy importantes para los Javascripts.

/course/report/log_timeline/getxml.php
Es el encargado de generar los sucesivos archivos XML con la información de los eventos que se le han solicitado. Además verifica los datos de usuario y los permisos al igual que el archivo index.php.

/course/report/log_timeline/count.php
Sirve para crear una sencilla página web con el número de eventos que se están visualizando en este momento.

/course/report/log_timeline/timeline_processing.js
Crea todas las funciones necesarias para poder enlazar las actividades de las listas desplegables con el Timeline. También es el archivo encargado de inicializar los atributos que tendrá del Tiemline. Es muy importante que este archivo sea llamado por la página web, después de que se haya definido la variable file_xml (contiene la información de la selección actual de todas las listas desplegables) y también después de la creación de las listas desplegables. Para unir definir eventos en los diferentes tags mediante el DOM, los objetos deben de estar inicializados de antemano.

/course/report/log_timeline/timeline.lib.php
Contiene dos funciones auxiliares y sencillas que se utilizan en el archivo getxml.php.

/course/report/log_timeline/api_timeline
Esta carpeta contiene la ultima versión de la Api de Timeline. Sin esta carpeta, se tendría que llamar a la página de SIMILE cada vez que se llamará a la página index.php.

Archivos Modificados

/course/report/log_timeline/mod.php
Moodle permite añadir fácilmente diferentes plugins para Informes, únicamente creando una carpeta nueva dentro de /course/report/ e incluyendo el archivo mod.php (definiéndolo a nuestro gusto) dentro de la nueva carpeta.

/course/repor/log_timeline/lib.php
Modificación del archivo /course/report/log/lib.php para adaptarlo a nuestros intereses.


... Actualidad ...

Sigo trabajando en la implementación de los grades. De momento estoy trabajando en la implementación de las interfaces que tendrán las páginas para evaluar tanto las páginas wiki como su ediciones.

Además hace unos días que he comenzado ha redactar la memoria. He añadido la mayoría de entradas de este blog a la memoria, pero hay algunos puntos que no están redactados y que tengo que añadir.

sábado, 15 de diciembre de 2007

Un bug ...

El plugin de Timelines para ver la actividad de Moodle tenía un pequeño bug.

Al crear el objeto Timeline dentro de la página web, hay que definir la información y la estructuración que tendrá, por ejemplo, dentro de cada banda (o tira) hay que especificar la unidad temporal (minutos, días, meses, años, ...), también existe un atributo dentro de cada banda que permite definir la posición inicial por defecto y es aquí donde residía el fallo.


Para establecer este parámetro creo un objecto en JavaScript de la clase Date que por defecto contiene la fecha y hora actual, posteriormente realizó la conversión a tipo string y construyo correctamente el valor del atributo requerido. Esto implica que en Firefox se compone correctamente, pero en cambio en Internet Explorer no, debido a que la conversión a String en Internet Explorer es diferente, la posición del año se encuentra cambiada de lugar. Este hecho se puede comprobar directamente con el siguiente código:

<html>
<head></head>
<body>
<script type="text/javascript">
var today = new Date();
alert(today);
</script>
</body>
<html>



Mozilla Firefox


Internet Explorer


Aparte de esta pequeña peculiaridad, trabajar con DOM los objetos de la página html, puede tener también algunas complicaciones. Como por ejemplo, para modificar el texto de una etiqueta h2, en Internet Explorer tenemos que utilizar el atributo innerHTML y en Firefox es suficiente con utilizar el atributo textContent.

viernes, 7 de diciembre de 2007

My first plugin :)

El viernes 30 de noviembre de 2007, acabé mi primer plugin, para Moodle. Estoy muy satisfecho con el resultado y espero que con el tiempo se pueda ir mejorando y ampliando.

Junto con el TimeLine, redacté tres breves manuales (en inglés, catalán y castellano) explicando el sencillo proceso de instalación y el manejo de la interfaz. Accediendo a esta web como usuario registrado o bien como invitado, podemos ver los tres manuales y además contribuir a mejorar el texto con toda clase de críticas constructivas (...espero).

En esta otra página se encuentra el enlace de descarga del plugin. También en esta misma página se recoge otros recursos para Moodle desarollados por Dfwikiteam.

domingo, 25 de noviembre de 2007

Trabajo de la Semana (II)

Mejoras de la última versión del plugin:

He tenido problemas con la fechas a la hora de tratar los milisegundos transcurridos desde las 00:00 del 1 enero de 1970 (timestamp) que están almacenados en la etiqueta select con id="menudate". Al convertir el valor de timestamp en un determinado formato dentro de Javascript, constantemente daba un valor erróneo. Para solucionarlo he añadido dentro de cada opción (<option>) del select con id="menudate", el atributo id con la traducción de la fecha con el formato necesario para, si es necesario, filtrar los eventos por fecha. El formato del string es "mes día año", donde el mes tiene un representación textual y corta (las tres primeras letras, en inglés), el día con dos dígitos (añadiendo el 0 de 1-9) y el año con los cuatro dígitos. La primera solución que había implementado, no contemplaba todos los casos posibles, es decir se construía el filtro a partir del la representación de texto ya existente de la fecha.

He integrado los Highlights ya implementados de Timeline. Estos consisten en cuatro campos de distintos colores, en los que se pueden escribir para subrayar los eventos que contengan las mismas cadenas dentro de la descripción o el título.

He añadido algo que creo que se tenía que conservar, el número de registros que se mostraban en el timeline. Primero opté por buscar la forma de hacerlo a partir del objeto que creaba, pero no sabía si al filtrar se incluirían estos o no, y al no encontrar una solución solvente, me decante por crear mediante JavaScript otra pequeña ventana del navegador que llama a la página count.php con la query necesaria mostrar el número de eventos dibujados en el timeline. Si no se cierra la nueva ventana y se pulsa de nuevo el botón count, la ventana se actualiza en vez de crear otra nueva.

Ya no hace falta modificar ninguna dirección dentro del script timeline_processing.js para utilizar el plugin.

sábado, 24 de noviembre de 2007

Trabajo de la semana (I)

Durante el transcurso de esta semana he añadido estas funcionalidades principales:

  • Para instalar el plugin solo hay que descomprimir el fichero en la carpeta de /moodle/course/report/ (y modificar, de momento, una dirección url en el archivo timeline_processing.js, el archivo que inicializa el timeline)
  • Se ha añadido la API a la cabecera de la página en HTML. Existe el parametro $return de la función print_header, que si evalúa cierto devuelve el string de la cabecera en vez de imprimirla con el comando "echo" (la función que tiene por defecto).
  • Ahora dentro del propio fichero del plugin del timeline, se incluye la última versión de la API de Timeline.
  • He añadido los saltos de linea a las burbujas del timeline (<br/>).
  • Se mantiene el mismo formato de la página web para todos los usuarios. Cuando el usuario era el administrador, se añadían bloques de administración.


Ahora explicaré algunos detalles relevantes a la hora de modificar o mejorar el código, que cabe destacar:

  • La inicialización del Timeline (timeline_preocessing.js) tiene que ir dentro del body, porque lo modifica. Se añade por JavaScript los eventos onLoad y onResize al body.
  • En el caso de ser administrador, dependiendo de la página a la que accedamos para ver los registros, no es visible el plugin, ja que el plugin o los plugins dentro de la carpeta de /moodle/course/report/ solo son visibles si la url solicitada es parecida a /moodle/course/report.php?id=(numero de identificación del curso)
  • Cada vez que se accede al index.php se registra en el log una nuevo report log. Este funcionamiento se ha cambiado para que en vez de añadir como si se tratará de un report log normal, se añada un timeline log. Es de agradecer la modularidad y libertad de añadir entradas al log de moodle con la función add_to_log(...).

Sigo trabajando en tener una versión estable (en la medida de lo posible...) para el lunes.

martes, 13 de noviembre de 2007

TortoiseSVN

Para descargar la API del Timeline he utilizado el programa TortoiseSVN, exactamente el archivo:
“TortoiseSVN-1.4.5.10425-win32-svn-1.4.5.msi”
que se puede encontrar la página oficial.
TortoiseSVN es un programa cliente SVN que se integra en la interfaz de Windows (windows explorer).



Cambiando de tema, dentro de la carpeta de la API de Timeline, existe un directorio llamado “images”, que es donde se almacena las imágenes que utiliza la API para construir las burbujas, los puntos referentes a los eventos, etc. Cambiando las imágenes por otras que conserven el mismo nombre, podemos personalizar, si cabe aún más, la visualización del Timeline. Aunque existen también otras alternativas como personalizar los eventos en el archivo XML, con los campos icon, image, ... (Para más información remítase a la entrada anterior).



viernes, 9 de noviembre de 2007

Formato de los Eventos y Accesibilidad

Sigo programando la ardua tarea de filtrar la información del Timeline, y llegados a este punto he pensado que estaría bien comentar el formato que he utilizado en las burbujas del Timeline, que básicamente es el reflejo de la información almacenada en el archivo XML. He intentado mantener las misma filosofía para mostrar la información como cuando se presenta los registros en formato HTML.



Para formar el título de la burbuja, utilizo el nombre del curso, si es que la acción se asocia alguno, de lo contrario nada acerca del curso (site), el nombre completo del usuario a cargo de la acción, la acción especifica y por último, la imagen para mostrar del usuario.

Dentro de la descripción está la información de la I.P. que tenía el usuario en ese instante además del nombre completo del usuario, la acción que ha realizado y por último la información del evento (nombre del curso completo, Id, etc.). Se repite el nombre completo del usuario como la acción tanto en el título como en la descripción, para poder proporcionar los mismos enlaces que se proporcionan en la versión HTML.



Para completar la disertación dejaré un pequeño ejemplo de como debe de ser el archivo XML (extraído de la página oficial):

The XML format used for Timeline goes somewhat like this:

  • Everything is contained by a <data /> element
    • The <data /> element can have the following attributes:
      • wiki-url -- Base url used to gin up url's for each event; by appending the wiki-section and the event's title; often a MediaWiki wiki URL
      • wiki-section -- MediaWiki wiki section

    • Inside <data>events</data> go a number of <event>content</event> elements, the order of these is unimportant.

    • Each <event /> element can have the following attributes:
      • start -- in full date format (e.g. "May 20 1961 00:00:00 GMT-0600"")
      • latestStart -- for imprecise beginnings...
      • earliestEnd -- for imprecise ends...
      • end -- same date format as start
      • isDuration -- either "true" or "false", if false the item will be drawn as a dot with a pale bar drawn behind it
      • title -- text title that goes next to the bar in the timeline
      • description -- more text for the bubble
      • image -- url to an image that will be displayed in the bubble
      • link -- the bubble's title text will become a hyper-link to this address.
      • icon -- this image will appear next to the title text in the bubble.
      • color -- color of the bar to display in the timeline
      • textColor -- color of the text to display next to the bars


  • The "content" part is what will be displayed inside the bubble that pops up when the event is clicked
    • Should be escaped/formated HTML.

A example:

<data
wiki-url="http://simile.mit.edu/shelf/"
wiki-section="Simile JFK Timeline">
<event
start="Sat May 20 1961 00:00:00 GMT-0600"
title="'Bay of Pigs' Invasion">

</event>
<event
start="Wed May 01 1963 00:00:00 GMT-0600"
end="Sat Jun 01 1963 00:00:00 GMT-0600"
isDuration="true"
title="Oswald moves to New Orleans">
Oswald moves to New Orleans, and finds employment at the William
<!-- This is "content" -->


B. Riley Coffee Company. <i>ref. Treachery in Dallas, p 320</i>
<!-- This is "content" -->

</event>
<event>

...
</event>
</data>

domingo, 4 de noviembre de 2007

Filtros & Eventos

Para filtrar los eventos podemos utilizar nuestras propias funciones. Dichas funciones pueden utilizan el potencial que nos brindan las expresiones regulares de Javascript. Un ejemplo de definición de una función de filtraje sería:

var regex = new RegExp(chain /* Patrón o cadena a filtrar */, "i");

filterMatcher = function(evt) {

return regex.test(evt.getDescription());

};

Se define una expresión regular con la cadena o patrón a buscar. En este caso, se buscará el string dentro de la descripción de cada evento (el texto que hay entre las etiquetas de <event></event>), los que valúen a cierto serán visibles y los que valúen a falso no se mostrarán. Después se asigna está función a las bandas del Timeline que queremos filtrar, y por último repintamos el Timeline:

for (var i = 0; bandIndices.length; i++)
{
var bandIndex = bandIndices[i];
timeline.getBand(bandIndex).getEventPainter().
setFilterMatcher(filterMatcher);

}

timeline.paint();

Para poder trabajar con filtros es necesario saber algunos métodos de la clase Event, estos métodos nos sirven para acceder a la información (los eventos) ya cargada con el método loadXML del objeto Timeline:

Straight from the code:
Timeline.DefaultEventSource.Event.prototype
Event Methods:
getID: function() { return this._id; },
isInstant: function() { return this._instant; },
isImprecise: function() { return this._start != this._latestStart
|| this._end != this._earliestEnd; },
getStart: function() { return this._start; },
getEnd: function() { return this._end; },
getLatestStart: function() { return this._latestStart; },
getEarliestEnd: function() { return this._earliestEnd; },
getText: function() { return this._text; },
getDescription: function() { return this._description; },
getImage: function() { return this._image; },
getLink: function() { return this._link; },
getIcon: function() { return this._icon; },
getColor: function() { return this._color; },
getTextColor: function() { return this._textColor; },
getProperty: ...
getWikiURL: function() { return this._wikiURL; },
getWikiSection: function() { return this._wikiSection; },
setWikiInfo: function(wikiURL, wikiSection) { ... }

Por último decir, que tengo la pestaña de Participante casi acabada. Tengo que ir implementando los demás filtros de forma más personalizada. Aparentemente la pestaña de Fechas y Acciones dentro de la página de registros, supondrán un poco más de dedicación.

“No cambié de canal, mañana más”

jueves, 1 de noviembre de 2007

getxml.php v2.0

He corregido un pequeño fallo dentro de dicho archivo.

En resumen, el archivo getxml.php crea a partir de la base de datos de Moodle el archivo xml con la información de los eventos solicitados a través de la página /moodle/course/report/log/index.php. En dicho archivo se va concatenando la información de los eventos en una variable de tipo string (llamada, $file_xml) y al final se imprime todo (echo($file_xml);). Pero esta forma de almacenar la información implicaba que cuando el numero de eventos excedía una cantidad limitada (unos XX KBytes) se producía este error:



Como no sabía si existían limitaciones de variables con Moodle o en PHP, opté por ir imprimiendo en cada iteración un evento para solucionar el problema, y funcionó. El Guru Pigui, me dijo que seguramente existe una limitación de tamaño a nivel de programación en PHP o en el servidor.

domingo, 28 de octubre de 2007

Change the course

Jordi, me comentó que para evitar la carga completa de la página de Informes->Registros, la página de Moodle en la que estoy trabajando, exactamente el fichero moodle/course/report/log/index.php, modificara únicamente el Timeline para agilizar el servidor y mejorar la eficiencia.

Actualmente, estoy trabajando en esta tarea, que consiste en que al cambiar los selectores no se tenga que volver a pedir el documento HTML entero al servidor, sino que solo se actualice el Timeline. Para hacerlo utilizaré filtros, es decir, modificar el Timeline desde el cliente y sin necesida de establecer conexión con el servidor. Pero el problema es que existen algunos casos donde filtrando la información mostrada no es suficiente y hay que recargar los eventos. Para ilustrar este ejemplo supondré que tengo que cambiar una fecha determinada para ver la actividad de todos los días (opción disponible). A la hora de hacer esto hay que controlar los eventos que ya existen y los que tengo que añadir, este punto requiere trabajo en el cliente (administración de eventos) y en el servidor (la petición de los eventos a añadir en el Timeline). Por eso he pensado que sería mejor volver a cargar el archivo XML entero (donde está la información necesaria para dibujar los eventos), una solución sencilla y en la que estoy trabajando actualmente.

De esta forma dependiendo del estado estableceré dos posibles acciones:
  • Si falta información
    • Recargo los eventos del XML(getxml.php)
    • Filtrar dependiendo del estado anterior

  • Filtro los eventos liberando el servidor más trabajo

La tarea propuesta por Jordi, empieza ha dar sus frutos después de un tiempo. He conseguido que al cambiar el curso se cambie el Timeline sin tener que recargar la página pero si pidiendo de nuevo la información de los eventos. El visitar la Wiki de Timelines fue decisivo.

... to be continued

jueves, 25 de octubre de 2007

Reading

He estado ojeando la Wiki de Timelines de SIMILE y especialmente la sección dedicada a How-Tos, donde he dedicado una especial atención al apartado de "How to Load Events Dynamically".

La sección How-Tos recoge algunos de los problemas y consultas de los usuarios, recopilándolos por temática. Además, hay enlaces directos al Mailing List(foros con información de todos los proyectos de SIMILE) con las preguntas relacionadas.

Si necesitas documentación sobre Timelines, te recomiendo estimado lector que entres primeramente en la sección Wiki , es más completa que la sección de documentación estática. Incluso en la misma página principal de SIMILE Timeline se dice que se ha transferido la información a la wiki para facilitar el mantenimiento.

¡¡¡ Escoge la forma de hacerlo wiki !!!

lunes, 22 de octubre de 2007

La notación JSON

Leyendo Introducción a AJAX, he encontrado que la notación utilizada en la mayoría de scripts de Timeline y en su definición, es la JSON, que es básicamente una forma estructurada de componer los objetos y arrays.

Según el libro: “La notación de objetos mediante JSON es una de las características principales de JavaScript y un mecanismo definido en los fundamentos básicos del lenguaje. JSON permite definir arrays y objetos de una manera concisa, lo que supone una gran ventaja respecto de la notación tradicional de los objetos y los arrays”.

Un ejemplo de la notación JSON para crear objetos sería:


var objeto = {
"propiedad1": valor_simple_1,
"propiedad2": valor_simple_2,
"propiedad3": [array1_valor1, array1_valor2],
"propiedad4": { "propiedad anidada": valor },
"metodo1": nombre_funcion_externa,
"metodo2": function() { ... },
"metodo3": function() { ... },
"metodo4": function() { ... }
};


Siguiendo con la lectura, he encontrado una sutil diferencia a la hora de crear objetos o como dice el libro, pseudoclases. La diferencia está en la propiedad prototype. Me explico, los métodos que se definen con protoype se crean una sola vez para todos los objetos, en cambio, si no utilizamos prototype, se crea el mismo método para cada objeto y en consecuencia ocupando más espacio. Utilizando protoype, podemos redefinir metodos de clases ya existentes o bien añadir nuevos.

Para ilustrarlo mejor adjunto un ejemplo de la propiedad prototype.

Clase original
function Factura(idFactura, idCliente) {
this.idFactura = idFactura;
this.idCliente = idCliente;
this.muestraCliente = function() {
alert(this.idCliente);
}
this.muestraId = function() {
alert(this.idFactura);
}
}

Clase que utiliza su prototype
function Factura(idFactura, idCliente) {
this.idFactura = idFactura;
this.idCliente = idCliente;
}
Factura.prototype.muestraCliente = function() {
alert(this.idCliente);
}
Factura.prototype.muestraId = function() {
alert(this.idFactura);
}

jueves, 18 de octubre de 2007

DOM Inspector

Utilizando el DOM Inspector de la pestaña de herramientas de Mozilla, he encontrado que aunque el código del html tenga dos bodys (uno con identidad y el otro no) los eventos de onload y onresize, que están en el segundo, pasan a estar en el primer body.

Igualmente he quitado el body que servía para cargar el Timeline y reescalarlo, y he añadido estos dos eventos a través de un javascript con las siguientes instrucciones:


window.onload=onLoad;
window.onresize=onResize;


Al objeto window podemos definirle cuales serán las funciones o sentencias a llamar cuando se generen los eventos onload y onresize de la ventana.

martes, 16 de octubre de 2007

El menú del día

Esta tarde he estado practicando en un menú opcional para la visualización del Timeline. Esta idea consiste en añadir una menú para poder redefinir algunos aspectos de la visualización del Timeline (el tamaño básicamente, pero también otras personalizaciones), y también de paso, empezar ha trabajar más en JavaScript. Hasta ahora, la mayor parte de código que he programado ha sido en php y quería comenzar ha trabajar un poco más JavaScript.

El primer libro que leí de JavaScript durante el verano, Guía Practica de JavaScript , ha sido de ayuda en algunos aspectos, pero no abarcaba otros que son importantes. El libro se centraba en la manipulación de objetos ya existentes en html pero no se hacía referencia al Document Object Model, DOM.

En la búsqueda de otro manual más reciente, he encontrado un libro con licencia Creative Commons llamado “Introducción al JavaScript” de Javier Eguíluz Pérez. En este libro he encontrado funciones del navegador(?) que desconocía, como por ejemplo createElement, appendChild o removeChild. Solo decir que me ha ayudado bastante para empezar ha trabajar más en JavaScript.

See you.




lunes, 15 de octubre de 2007

getxml.php, O.K.

He acabado de solucionar los problemas que había descrito anteriormente.

El primer problema es que habían caracteres inválidos en la variable $getaxml, dicha variable tenía comillas dobles repetidas e innecesarias. Que afectaban directamente a la función loadXML.

El segundo problema era que se realizaba una llamada a la función build_logs_array en de la librería /moodle/course/lib.php con un parámetro incorrecto.

También he creado el archivo /moodle/course/report/log/timeline.lib.php con dos sencillas funciones que se utilizan en /moodle/course/report/log/getxml.php, comentadas en formato javadoc.

jueves, 11 de octubre de 2007

Reordenando

Hoy, he estado trabajando en cambiar la función que generaba el archivo xml, que estaba almacenada en /moodle/course/report/log/lib.php al nuevo archivo /moodle/course/report/log/get_xml.php.

Me he encontrado con dos problemas que espero solucionar lo antes posible. El primero es que el timeline no se muestra bien y el segundo que es independiente del primero, la información de los eventos que genera el archivo get_xml.php, no inserta ningún evento, seguramente se trata de una llamada errónea en la obtención de los logs de la base de datos de Moodle.

martes, 9 de octubre de 2007

"Revisando código"

Tras la reunión del pasado lunes, estoy revisando el código ya hecho de timelines por los compañeros del DFWikiteam.

De momento tengo que cambiar el funcionamiento de generar un archivo para cada usuario, donde se encuentran los eventos solicitados, por el de llamar a una nueva página php para generar el xml de forma más dinámica, con el fin de evitar que cualquier persona pueda ver los logs (xml’s guardados en el disco) solicitados por los demás. La idea propuesta por Jordi Piguillem, es de los más acertada. Primero me centraré en conseguir esto y después comprobaré la seguridad, al igual que lo hace Moodle.

He conseguido solucionar el problema que tenía con la API de Timelines. Resulta que no había descargado todos los archivos necesarios para el correcto funcionamiento del Timeline. Y por este motivo tenía que acceder constantemente a la página oficial.

jueves, 4 de octubre de 2007

Identifícate

Había detectado un fallo cuando se cambiaban los participante.

Cuando se seleccionaba de “Todos los usuarios” a “Invitado”, siempre se pintaban en el timeline los mismos eventos. Esto era debido a que tras haber conseguido los registros de todos los usuarios, se creaba el archivo 0_info_timeline.xml (“id. del participante solicitado”_info_timeline.xml, en este caso todos) y al pedir el registro del invitado creaba otro archivo con un número distinto, pero en la inicialización de variables del timeline solo se utilizaba el archivo 0_info_timeline.xml.

Este error conceptual lo he solucionado cambiando la “id. del participante” por la “id. de la persona que esta accediendo a los registros” que era en principio lo que tenia en mente, de esta forma solo hay un archivo por usuario en el servidor. Otra razón era la de evitar conflictos con los archivos.

Más detalladamente, he insertado un input hidden con el número de identificación del usuario y desde el JavaScript tomo el valor guardado, esto implica que la inicialización de las variables del timeline debe ser posterior a la definición del input.

lunes, 24 de septiembre de 2007

Sigo anotando...

Quedan por acabar algún par de detalles para tener bien encaminada la integración del Timeline. Después de pelearme con el formato requerido por el Timeline y los strings, he conseguido tener los documentos estructurados para una interpretación correcta de los eventos. Hay tres tipos de eventos, los que tiene una duración predeterminada, eventos instantáneos y los eventos instantáneos en los que no se sabe con exactitud cuando han comenzado. Los que he utilizado han sido los eventos instantáneos, creo que son los más generales, aunque se puede utilizar también los que tienen una duración determinada para algunos casos más específicos.

De la parte del Moodle, destacar que en la página de Moodle Docs hay suficente información para empezar a trabajar en Moodle. Pero en mi opinión, creo que requiere mucho más tiempo estudiar el código detenidamente, si se es programador. También hay disponibles bastantes herramientas para desarrolladores (por ejemplo, Cross
reference, muy útil) que facilitan en gran medida el trabajo.

“I’ll come back”