<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-1493122307318356974</id><updated>2012-01-31T16:50:28.997+01:00</updated><category term='PHP'/><category term='Timeline'/><category term='Naruto'/><category term='DOM'/><category term='PDF'/><category term='Mozilla'/><category term='Javascript'/><category term='FIB'/><category term='HTML'/><category term='UML'/><category term='XML'/><category term='wikibook'/><category term='Moodle'/><category term='Grades'/><category term='Dfwikiteam'/><category term='Wiki'/><category term='JSON'/><category term='nwiki'/><category term='Ajax'/><title type='text'>Cuaderno De Bitácora</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://blogpfc.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1493122307318356974/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://blogpfc.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>J</name><uri>http://www.blogger.com/profile/02086256566248667825</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>38</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-1493122307318356974.post-7893576045368726728</id><published>2008-02-22T16:03:00.011+01:00</published><updated>2008-02-27T10:38:42.539+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><category scheme='http://www.blogger.com/atom/ns#' term='Dfwikiteam'/><category scheme='http://www.blogger.com/atom/ns#' term='Moodle'/><category scheme='http://www.blogger.com/atom/ns#' term='Grades'/><title type='text'>Wikigrades (Archivos)</title><content type='html'>&lt;div style="text-align: center;"&gt;&lt;img src="http://lh4.google.es/de.la.torre.javi/R8EzOU1teYI/AAAAAAAAAMA/U_OR1irzG8A/s144/grades.jpg" /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div  style="text-align: justify;font-family:verdana;"&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;La metodología utilizada consiste en exponer la ruta completa del fichero, siempre suponiendo que nos encontramos en la carpeta de instalación de &lt;a href="http://moodle.org/"&gt;Moodle&lt;/a&gt;, y en función de si se han modificado funciones o métodos ja existentes, dos puntos y el nombre de la función. Del estilo de:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-weight: bold;"&gt;ruta_completa_del_archivo/archivo:función&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;Si la estructura de la base de datos utilizadas para las valoraciones dentro de la wiki cambia, solo tendremos que modificar las funciones afectadas por dichos cambios dentro de la librería de grades.  &lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style=";font-family:verdana;font-size:100%;"  &gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;u&gt;Archivos Creados&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;/mod/wiki/grades/grades.lib.php&lt;/span&gt;&lt;br /&gt;Se han incluido, en mi opinión, las funciones principales. Entre otras las de crear las tablas de estadísticas, las listas desplegables, almacenar la valoración interna de las páginas Wiki y sus ediciones, y también otras funcionalidades intrínsecamente relacionadas el sistema de grades interno.&lt;br /&gt;&lt;/span&gt;&lt;ul  style="font-family:verdana;"&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-weight: bold;"&gt;get_scales_course_user($cid, $uid)&lt;/span&gt;: devuelve las escalas creadas por un usuario, esta función se utiliza a la hora de definir la escala que utilizará la Wiki, dentro de la página web de configuración de la Wiki. Es decir, si el usuario o administrador quiere crear una Wiki con una escala determinada, anteriormente tendrá que haberla definido.&lt;/span&gt;&lt;/li&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-weight: bold;"&gt;wiki_grades_box_page(&amp;amp;$WS)&lt;/span&gt;: se encarga de crear la lista desplegable con las notas disponibles en función de la escala que tenga la Wiki, para valorar &lt;span style="font-weight: bold;"&gt;páginas Wiki&lt;/span&gt;. También visualiza la última valoración propuesta por el usuario (si tiene la capability).&lt;/span&gt;&lt;/li&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-weight: bold;"&gt;wiki_set_grades_page(&amp;amp;$WS)&lt;/span&gt;: almacena la nota valorada en una &lt;span style="font-weight: bold;"&gt;página Wiki&lt;/span&gt;.&lt;/span&gt;&lt;/li&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-weight: bold;"&gt;wiki_grades_box_edition(&amp;amp;$WS)&lt;/span&gt;: a diferencia de "wiki_grades_box_page", crea y printa la lista desplegable para sucesivas &lt;span style="font-weight: bold;"&gt;ediciones de una página Wiki&lt;/span&gt;.&lt;/span&gt;&lt;/li&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-weight: bold;"&gt;wiki_set_grades_edition(&amp;amp;$WS)&lt;/span&gt;: almacena la nota valorada entre un conjunto de sucesivas &lt;span style="font-weight: bold;"&gt;ediciones de una página wiki&lt;/span&gt;.&lt;/span&gt;&lt;/li&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-weight: bold;"&gt;wiki_grade_evaluation_exist($pagename, $wikiid, $groupid, $ownerid, $userid)&lt;/span&gt;: Devuelve cierto si ya existe la valoración del usuario para una determinada &lt;span style="font-weight: bold;"&gt;página wiki&lt;/span&gt;, de lo contrario falso.&lt;/span&gt;&lt;/li&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-weight: bold;"&gt;wiki_grade_edition_exist($wiki_pageid, $userid)&lt;/span&gt;: Devuelve cierto si existe una valoración de una &lt;span style="font-weight: bold;"&gt;edición de una página wiki&lt;/span&gt; para un usuario determinado, de lo contrario falso.&lt;/span&gt;&lt;/li&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-weight: bold;"&gt;wiki_grade_print_tables($group, $user, &amp;amp;$wiki, &amp;amp;$cmodule, &amp;amp;$scale, &amp;amp;$course)&lt;/span&gt;: dibuja las tablas de estadísticas de las valoraciones de una página wiki en función del grupo, usuario o bien todos los participantes. A partir de las páginas wiki, se crean las tablas estadísticas de las ediciones de cada página wiki.&lt;/span&gt;&lt;/li&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/ul&gt;&lt;span style=";font-family:verdana;font-size:100%;"  &gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;/mod/wiki/grades/grades.evaluation.php&lt;/span&gt;&lt;br /&gt;Su principal función es la crear la página web que visualizaremos para ver los informes de las valoraciones. Siguiendo la filosofia de Moodle, comprueba que el usuario este logeado y tenga la capability "mainreview", de lo contrario no podemos acceder a la página de informes. Por último, en el pie de la página se puede valorar al usuario dentro de la actividad utilizando el Gradebook de Moodle.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;u&gt;Archivos Modificados&lt;/u&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;/mod/wiki/wiki/hist.php: wiki_hist_content y wiki_hist_actions&lt;/span&gt;&lt;br /&gt;Se encarga de la gestión y tratamiento de las pestañas que hay dentro de la wiki.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;/mod/wiki/version.php&lt;/span&gt;&lt;br /&gt;Utilizado para indicar la versión del módulo.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;/mod/wiki/db/acces.php&lt;/span&gt;&lt;br /&gt;Contiene todas las capabilitys utilizadas dentro del módulo.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;/mod/wiki/db/install.xml&lt;/span&gt;&lt;br /&gt;Dentro de este archivo hay que incluir la definición de las tablas desde cero.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;/mod/wiki/db/upgrade.php&lt;/span&gt;&lt;br /&gt;Archivo destinado a actualizar el módulo si tener que instalar de nuevo todo.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;/mod/wiki/localib.php: wiki_admin, wiki_view_content y wiki_info_content&lt;/span&gt;&lt;br /&gt;Esta función es llamada para construir los enlaces de la pestaña de administración de la wiki.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;/mod/wiki/mod_form.php&lt;/span&gt;&lt;br /&gt;Formulario utilizado para configurar el módulo wiki.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;/blocks/wiki_ead/block_wiki_ead.php&lt;/span&gt;&lt;br /&gt;Este archivo contiene la definición del bloque de administración de las wikis.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;/lang/en_utf8/wiki.php&lt;/span&gt;&lt;br /&gt;Es el archivo con el que trabajé, pero las palabras o referencias deben estar definidas en todos los idiomas con su respectiva traducción. Es fácil identificar todos las palabras utilizadas para Grades, todas tienen el prefijo "eval_" (de evaluation).&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1493122307318356974-7893576045368726728?l=blogpfc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blogpfc.blogspot.com/feeds/7893576045368726728/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1493122307318356974&amp;postID=7893576045368726728' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1493122307318356974/posts/default/7893576045368726728'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1493122307318356974/posts/default/7893576045368726728'/><link rel='alternate' type='text/html' href='http://blogpfc.blogspot.com/2008/02/wikigrades-archivos-inacabado.html' title='Wikigrades (Archivos)'/><author><name>J</name><uri>http://www.blogger.com/profile/02086256566248667825</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1493122307318356974.post-195707922841252094</id><published>2008-01-16T00:11:00.000+01:00</published><updated>2008-01-16T00:59:33.334+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Wiki'/><category scheme='http://www.blogger.com/atom/ns#' term='PDF'/><category scheme='http://www.blogger.com/atom/ns#' term='wikibook'/><category scheme='http://www.blogger.com/atom/ns#' term='Dfwikiteam'/><category scheme='http://www.blogger.com/atom/ns#' term='Moodle'/><title type='text'>Mejoras para Wikibook to PDF</title><content type='html'>&lt;div style="text-align: center;"&gt;&lt;img src="http://lh6.google.com/de.la.torre.javi/R41EmBMML4I/AAAAAAAAALg/w5l5R4-yueM/s288/pdf_wikipedia.png" /&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-family:verdana;"&gt;Como he comentado en más de una ocasión, esta tarea es de por si es un Proyecto de Final de Carrera totalmente independiente. Las posibilidades y opciones para visualizar páginas wiki en PDF son muchas y podemos llegar a tener muchas situaciones inesperadas. A diferencia de los parser de páginas wiki a html, el parser del que dispone la clase TCPDF para pasar documentos html a &lt;a href="http://es.wikipedia.org/wiki/Pdf"&gt;PDF&lt;/a&gt;, no posee tanta flexibilidad y por consecuente tenemos que implementarla nosotros. Algunas mejoras podrían ser la siguientes:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;- Mejorar el tratamiento para las Imagenes, cabe la posibilidad de que una imagen fuera muy larga y no cupiera dentro de la página. Es entonces cuando tendríamos que recortar la imagen. Pero tal vez no sería suficiente recortándola en dos partes y podría ocupar más de páginas. Son casos extremos pero podrían suceder.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;- Mejorar el tratamiento de las tablas. Dependiendo del número de columnas o de filas, tendríamos un problema parecido al de las imágenes.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;- Añadir enlaces internos a nivel de PDF. Añadir enlaces a las tablas de contenidos, para poder ir a los títulos que se muestran dentro con un solo click. Como segunda parte, resultaría más sencilla, una vez que nos encontraramos en una sección de la página wiki del PDF, al clickar el título se podría volver a la tabla de contenidos orginal.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;- Añadir el soporte para nuevas etiquetas de HTML.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;- Añadir la conversión de los estilos y colores del HTML a PDF.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;- Permitir que en el título y subtítulo se puedan escribir caracteres accentuados.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;- Ampliar las fuentes disponibles. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;- Añadir una nueva funcionalidad para importar nuevas fuentes o utilizar los conversores que ya viene por defecto dentro de la carpeta de &lt;a href="http://moodle.org/"&gt;Moodle&lt;/a&gt; lib/tcpdf/fonts para crearlas.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;- La clase TCPDF incorporá metodos para añadir codigos de barras. Estos se podrian utilizar si se tercia.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;- Añadir &lt;a href="http://es.wikipedia.org/wiki/C%C3%B3digo_QR"&gt;códigos QR&lt;/a&gt;, tal vez con la dirección de internet de la página wiki, de las imagenes, del servidor, etc. (Una idea realmente interesante que tuve, pero a falta tiempo...)&lt;br /&gt;&lt;br /&gt;&lt;a href="http://elpigui-i-lawiki.blogspot.com/"&gt;Pigui&lt;/a&gt; implementará una nueva funcionalidad, que permitirá a partir de las fuentes disponibles dentro de la carpeta lib/tcpdf/fonts, cargar la página web de pasar de Wikibook a Pdf con dichas fuentes. Y si se añaden de nuevas, no tener que tocar el código de nuevo, sino que automáticamente se incluirán en las listas desplegables de selección de fuente.&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1493122307318356974-195707922841252094?l=blogpfc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blogpfc.blogspot.com/feeds/195707922841252094/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1493122307318356974&amp;postID=195707922841252094' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1493122307318356974/posts/default/195707922841252094'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1493122307318356974/posts/default/195707922841252094'/><link rel='alternate' type='text/html' href='http://blogpfc.blogspot.com/2008/01/mejoras-para-wikibook-to-pdf.html' title='Mejoras para Wikibook to PDF'/><author><name>J</name><uri>http://www.blogger.com/profile/02086256566248667825</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1493122307318356974.post-7916908871640398006</id><published>2008-01-15T23:34:00.000+01:00</published><updated>2008-01-16T00:11:53.083+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Dfwikiteam'/><category scheme='http://www.blogger.com/atom/ns#' term='Moodle'/><category scheme='http://www.blogger.com/atom/ns#' term='Timeline'/><title type='text'>Mejoras para el TimeLine</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;span style="font-family: verdana;"&gt;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.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;- Cambiar la altura y el tamaño del TimeLine dinámicamente, es decir, sin tener que recargar de nuevo la página entera.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;- 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.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;- 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.&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1493122307318356974-7916908871640398006?l=blogpfc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blogpfc.blogspot.com/feeds/7916908871640398006/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1493122307318356974&amp;postID=7916908871640398006' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1493122307318356974/posts/default/7916908871640398006'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1493122307318356974/posts/default/7916908871640398006'/><link rel='alternate' type='text/html' href='http://blogpfc.blogspot.com/2008/01/mejoras-para-el-timeline.html' title='Mejoras para el TimeLine'/><author><name>J</name><uri>http://www.blogger.com/profile/02086256566248667825</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1493122307318356974.post-4580037459580119058</id><published>2008-01-15T20:00:00.000+01:00</published><updated>2008-01-16T10:18:42.657+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Dfwikiteam'/><category scheme='http://www.blogger.com/atom/ns#' term='Moodle'/><category scheme='http://www.blogger.com/atom/ns#' term='HTML'/><category scheme='http://www.blogger.com/atom/ns#' term='Grades'/><title type='text'>Reunión de refinamiento (14/01/2008)</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;span style=";font-family:verdana;font-size:100%;"  &gt;Tras comentar el trabajo que había desarrollado durante la semana (grades y memoria), &lt;a href="http://orangoodling.blogspot.com/"&gt;Marc&lt;/a&gt; refinó y puntualizó el diseño de las interfaces de las paginas web que servirían para valorar las página wiki y las ediciones.&lt;br /&gt;&lt;br /&gt;Originalmente había pensado en valorar las páginas wiki en la pestaña ya existente para dicha funcionalidad. Y para las diferentes ediciones de una página wiki aprovechar la estructura que ofrece la pestaña "history" de las página wiki.&lt;br /&gt;&lt;br /&gt;Ahora para valorar páginas wiki, se añade una lista desplegable con los valores de la &lt;span style="font-style: italic;"&gt;scale&lt;/span&gt; (o nivel) en la dentro de la pestaña "view", es decir, cuando estamos visualizando el contenido de una página wiki, y si ya existe una nota por parte del usuario, mostrarla.&lt;br /&gt;&lt;br /&gt;La valoración de ediciones se trasladará al contenido de las pestañas "differences" y "highlight differences". Semánticamente, dependiendo de las ediciones que se estén comparando, la valoración será almacenada para las n-1 páginas que comparemos. Es decir, si comparamos  ediciones a y b (siendo a&lt;=b) y posteriormente las valoramos con una valor de la scale, únicamente se almacenarán o actualizarán la valoraciones en el rango de páginas [a+1, b].  También se ha añadido un campo nuevo que he nombrado feedback en la tabla &lt;span style="font-weight: bold;"&gt;wiki_evaluation_edition&lt;/span&gt; para que el profesor (o el usuario que disponga de permisos) pueda dejar un comentario de su valoración.&lt;br /&gt;&lt;br /&gt;Este refinamiento implicará cambiar levemente el diseño de las dos nuevas tablas (seguramente no será el último cambio añadido). Además hay que modificar otras funciones que se encargan de imprimir el &lt;a href="http://es.wikipedia.org/wiki/Html"&gt;html&lt;/a&gt; del contenido de las tres pestañas "view", "differences" y "highlight differences".&lt;br /&gt;&lt;br /&gt;Pregunté a &lt;a href="http://elpigui-i-lawiki.blogspot.com/"&gt;Pigui&lt;/a&gt; acerca de como incorporar al módulo wiki las capabilitys. Todas las nuevas capabilitys que se añadan deben estar almacenadas en el fichero mod/wiki/db/acces.php. Pero no estarán operativas hasta que cambiemos el numero de versión del módulo en el fichero mod/wiki/version.php.&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1493122307318356974-4580037459580119058?l=blogpfc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blogpfc.blogspot.com/feeds/4580037459580119058/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1493122307318356974&amp;postID=4580037459580119058' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1493122307318356974/posts/default/4580037459580119058'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1493122307318356974/posts/default/4580037459580119058'/><link rel='alternate' type='text/html' href='http://blogpfc.blogspot.com/2008/01/reunin-de-refinamiento-14012008.html' title='Reunión de refinamiento (14/01/2008)'/><author><name>J</name><uri>http://www.blogger.com/profile/02086256566248667825</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1493122307318356974.post-973921792727741278</id><published>2008-01-13T15:04:00.000+01:00</published><updated>2008-01-13T20:02:04.307+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><category scheme='http://www.blogger.com/atom/ns#' term='Javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='Dfwikiteam'/><category scheme='http://www.blogger.com/atom/ns#' term='Moodle'/><category scheme='http://www.blogger.com/atom/ns#' term='Timeline'/><title type='text'>Timeline (Archivos modificados o creados)</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:verdana;"&gt;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:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-weight: bold;font-family:verdana;" &gt;ruta_completa_del_archivo/archivo:función&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-weight: bold;font-family:verdana;" &gt;&lt;u&gt;Archivos creados&lt;/u&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-weight: bold;font-family:verdana;" &gt;/course/report/log_timeline/index.php&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:verdana;"&gt;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.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;&lt;span style="font-family:verdana;"&gt;/course/report/log_timeline/getxml.php&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:verdana;"&gt;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.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-weight: bold;font-family:verdana;" &gt;/course/report/log_timeline/count.php&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:verdana;"&gt;Sirve para crear una sencilla página web con el número de eventos que se están visualizando en este momento.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-weight: bold;font-family:verdana;" &gt;/course/report/log_timeline/timeline_processing.js&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:verdana;"&gt;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.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-weight: bold;font-family:verdana;" &gt;/course/report/log_timeline/timeline.lib.php&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:verdana;"&gt;Contiene dos funciones auxiliares y sencillas que se utilizan en el archivo getxml.php.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-weight: bold;font-family:verdana;" &gt;/course/report/log_timeline/api_timeline&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:verdana;"&gt;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. &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-weight: bold;font-family:verdana;" &gt;&lt;u&gt;Archivos Modificados&lt;/u&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-weight: bold;font-family:verdana;" &gt;/course/report/log_timeline/mod.php&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:verdana;"&gt;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.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-weight: bold;font-family:verdana;" &gt;/course/repor/log_timeline/lib.php&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:verdana;"&gt;Modificación del archivo /course/report/log/lib.php para adaptarlo a nuestros intereses.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-weight: bold;"&gt;... Actualidad ...&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:verdana;"&gt;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.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:verdana;"&gt;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.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:verdana;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1493122307318356974-973921792727741278?l=blogpfc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blogpfc.blogspot.com/feeds/973921792727741278/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1493122307318356974&amp;postID=973921792727741278' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1493122307318356974/posts/default/973921792727741278'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1493122307318356974/posts/default/973921792727741278'/><link rel='alternate' type='text/html' href='http://blogpfc.blogspot.com/2008/01/timeline-archivos-modificados-o-creados.html' title='Timeline (Archivos modificados o creados)'/><author><name>J</name><uri>http://www.blogger.com/profile/02086256566248667825</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1493122307318356974.post-7882522237912135167</id><published>2008-01-08T18:23:00.000+01:00</published><updated>2008-01-09T00:02:49.677+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='wikibook'/><category scheme='http://www.blogger.com/atom/ns#' term='Dfwikiteam'/><category scheme='http://www.blogger.com/atom/ns#' term='Moodle'/><title type='text'>Wikibook a Pdf (Archivos modificados o creados)</title><content type='html'>&lt;div  style="text-align: justify;font-family:verdana;"&gt;&lt;span style="font-size:100%;"&gt;Para mejorar la mantenimiento, creación y reusabilidad del código he pensado una nueva metodología que puede ahorrar tiempo y facilitar la comprensión de los usuarios que quieran trabajar sobre el código que he desarrollado.&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;Normalmente la metodología que utilizaré será exponer la ruta completa del fichero, siempre suponiendo que me encuentro dentro de la carpeta de &lt;a href="http://moodle.org/"&gt;Moodle&lt;/a&gt; instalada, y en función de si se han modificado funciones o métodos ja existentes, dos puntos y el nombre de la función. Del estilo de:&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-weight: bold;font-family:verdana;font-size:100%;"  &gt;ruta_completa_del_archivo/archivo:función&lt;/span&gt;&lt;span style=";font-family:verdana;font-size:100%;"  &gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:verdana;font-size:100%;"  &gt;&lt;br /&gt;&lt;u&gt;Archivos Creados&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-family:verdana;font-size:100%;"  &gt;/mod/wiki/wikibookpdf.class.php&lt;/span&gt;&lt;span style=";font-family:verdana;font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:verdana;font-size:100%;"  &gt;Dicho archivos se encarga de hacer una extensión de la clase tcpdf de la biblioteca de Moodle (/lib/tcpdf) que sirve para crear archivos pdf al "vuelo". La extensión dispone de su propio parser, modificación del original, para gestionar y crear los archivos pdf a partir del html del wikibook.&lt;/span&gt;&lt;span style=";font-family:verdana;font-size:100%;"  &gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-family:verdana;font-size:100%;"  &gt;/mod/wiki/wikibooktopdf.php&lt;/span&gt;&lt;span style=";font-family:verdana;font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:verdana;font-size:100%;"  &gt;Se encarga de crear la interfaz y gestionar los wikibooks visibles dependiendo del usuario que acceda a dicha página. Además, dentro del archivo esta "la función" (wikibook_to_tcpdf) encargada en &lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:100%;"  &gt;parsear&lt;/span&gt;&lt;span style=";font-family:verdana;font-size:100%;"  &gt; las páginas nwiki del wikibook a html y posteriormente a pdf.  La función wikibook_to_tcpdf también se encarga de la correcta implementación de los enlaces internos.&lt;/span&gt;&lt;span style=";font-family:verdana;font-size:100%;"  &gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:verdana;font-size:100%;"  &gt;&lt;u&gt;Archivos Modificados&lt;/u&gt;&lt;/span&gt;&lt;span style=";font-family:verdana;font-size:100%;"  &gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-family:verdana;font-size:100%;"  &gt;/lang/en_utf8/wiki.php&lt;/span&gt;&lt;span style=";font-family:verdana;font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:verdana;font-size:100%;"  &gt;"Almacén" de palabra en inglés que utiliza el módulo Wiki para traducir las palabras utilizadas. En este caso para traducir las palabras en inglés. He añadido bastantes palabras como por ejemplo, "Header &amp;amp; Footer Section", "Wikibook to Pdf", etc. &lt;/span&gt;&lt;span style=";font-family:verdana;font-size:100%;"  &gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-family:verdana;font-size:100%;"  &gt;/mod/wiki/locallib.php:wiki_admin&lt;/span&gt;&lt;span style=";font-family:verdana;font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:verdana;font-size:100%;"  &gt;Esta función es la encargada de crear parte de la interfaz de la pestaña de administración que tiene la wiki. He incorporado el enlace correctamente construido para pasar de wikibook a pdf, en el caso de que se tengan los permisos correspondientes. &lt;/span&gt;&lt;span style=";font-family:verdana;font-size:100%;"  &gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-family:verdana;font-size:100%;"  &gt;/blocks/wiki_ead/block_wiki_ead.php&lt;/span&gt;&lt;span style=";font-family:verdana;font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:verdana;font-size:100%;"  &gt;Define el bloque de administración wiki. Igual que en el anterior, he incorporado un enlace a la página que se encarga de pasar de wikibook a pdf.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1493122307318356974-7882522237912135167?l=blogpfc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blogpfc.blogspot.com/feeds/7882522237912135167/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1493122307318356974&amp;postID=7882522237912135167' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1493122307318356974/posts/default/7882522237912135167'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1493122307318356974/posts/default/7882522237912135167'/><link rel='alternate' type='text/html' href='http://blogpfc.blogspot.com/2008/01/wikibook-pdf-archivos-modificados-o.html' title='Wikibook a Pdf (Archivos modificados o creados)'/><author><name>J</name><uri>http://www.blogger.com/profile/02086256566248667825</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1493122307318356974.post-8566416223556201410</id><published>2008-01-08T17:40:00.000+01:00</published><updated>2008-01-08T18:22:03.933+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='wikibook'/><category scheme='http://www.blogger.com/atom/ns#' term='Dfwikiteam'/><category scheme='http://www.blogger.com/atom/ns#' term='FIB'/><category scheme='http://www.blogger.com/atom/ns#' term='Moodle'/><category scheme='http://www.blogger.com/atom/ns#' term='Grades'/><title type='text'>Mini Reunión</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;span style="font-family:verdana;"&gt;Aprovechando que &lt;a href="http://orangoodling.blogspot.com/"&gt;Ludo&lt;/a&gt; ha vuelto de vacaciones en Marrakech, he visitado la FIB para exponer el desarrollo del proyecto durante estas fiestas navideñas.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;He explicado los inconvenientes y ventajas que tiene la funcionalidad de pasar de Wikibook a Pdf, y como se desarrollaba la última funcionalidad, con la inestimable ayudad de &lt;a href="http://elpigui-i-lawiki.blogspot.com/"&gt;Pigui&lt;/a&gt;, valorar páginas wiki y ediciones de una misma página wiki.&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1493122307318356974-8566416223556201410?l=blogpfc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blogpfc.blogspot.com/feeds/8566416223556201410/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1493122307318356974&amp;postID=8566416223556201410' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1493122307318356974/posts/default/8566416223556201410'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1493122307318356974/posts/default/8566416223556201410'/><link rel='alternate' type='text/html' href='http://blogpfc.blogspot.com/2008/01/mini-reunin.html' title='Mini Reunión'/><author><name>J</name><uri>http://www.blogger.com/profile/02086256566248667825</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1493122307318356974.post-5788962088629462879</id><published>2008-01-07T13:59:00.000+01:00</published><updated>2008-01-14T10:59:20.263+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='wikibook'/><category scheme='http://www.blogger.com/atom/ns#' term='Dfwikiteam'/><category scheme='http://www.blogger.com/atom/ns#' term='Moodle'/><category scheme='http://www.blogger.com/atom/ns#' term='Grades'/><title type='text'>La primera reunión de 2008 (04/01/2008)</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:verdana;"&gt;El pasado viernes visité a &lt;a href="http://elpigui-i-lawiki.blogspot.com/"&gt;Pigui&lt;/a&gt; para comentarle los problemas que había tenido, como se desarrollaba la nueva tarea y otros quehaceres.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:verdana;font-size:100%;"  &gt;...Wikibook to Pdf...&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:verdana;"&gt;Comenté a Pigui el tratamiento que hacía dependiendo de los atributos groupmode y studentmode. Pigui me explicó que había cambiado el campo groupmode de la tabla de Wiki a la tabla course_modules, en &lt;a href="http://moodle.org/"&gt;Moodle&lt;/a&gt; 1.9, para mejorar la eficiencia y la semántica. También me explico que función podía utilizar para saber el valor de dicho campo dentro del módulo wiki, exactamente, get_coursemodule_from_instance("wiki", wikiid, courseid) que se encuentra dentro de /lib/datalib.php.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:verdana;"&gt;Para poder utilizar la nueva funcionalidad, pasar de wikibook a pdf, decidimos incorporarla dentro del bloque de administración wiki y además de la pestaña de administración de la wiki.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:verdana;"&gt;También le comenté a Pigui, un pequeño &lt;a href="http://es.wikipedia.org/wiki/Error_de_software"&gt;bug&lt;/a&gt; que no he podido solucionar. El problema es que en los títulos y subtítulos de la cabecera no se pueden incluir letras acentuadas. Desconozco el motivo, ya que dichas fuentes son las mismas que se utilizan para el cuerpo del &lt;a href="http://es.wikipedia.org/wiki/Pdf"&gt;pdf&lt;/a&gt;, y en el cuerpo se dibujan perfectamente.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:verdana;font-size:100%;"  &gt;...Grades...&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:verdana;"&gt;Ultimamos los detalles para la creación de las tablas. Además Pigui me explico que pasos tenia que seguir a la hora de crearlas. A parte de explicarme la herramienta para la creación de los XML con el XMLDBeditor que dispone Moodle en Site (dentro del bloque de administración), me explicó también los archivos que tenía que modificar, para poder instalar o actualizar las tablas y consecuentemente el tratamiento de los backups.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:verdana;"&gt;En resumen:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:verdana;"&gt;1. &lt;span style="font-weight: bold;"&gt;/mod/wiki/db/install.xml&lt;/span&gt; -&gt; Dentro de este archivo hay que incluir la definición de las tablas desde cero.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:verdana;"&gt;2. &lt;/span&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;&lt;span style="font-family:verdana;"&gt;/mod/wiki/db/&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-weight: bold;"&gt;upgrade.php&lt;/span&gt; -&gt; Archivo destinado a actualizar el módulo si tener que instalar de nuevo todo.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:verdana;"&gt;3. &lt;span style="font-weight: bold;"&gt;/mod/wiki/version.php&lt;/span&gt; -&gt; El archivo se encuentra en el root de la wiki.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:verdana;"&gt;4. &lt;span style="font-weight: bold;"&gt;/mod/wiki/backuplib.php&lt;/span&gt; -&gt; El archivo al que llama Moodle para hacer los backups de las tablas.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:verdana;"&gt;5. &lt;span style="font-weight: bold;"&gt;/mod/wiki/restorelib.php&lt;/span&gt; -&gt; Se encarga de recuperar la información.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:verdana;"&gt;6. &lt;span style="font-weight: bold;"&gt;/mod/wiki/xml/exportxmllib.php&lt;/span&gt; -&gt; Export e Import del contenido de las páginas wiki en xml.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:verdana;"&gt;El punto 1, haría referencia a la instalación. El punto 2 y 3 a la actualización (upgrade). Y los demás puntos al sistema de backup excepto el 6 que es un sistema de backup interno y propio, desarollado por el dfwikiteam.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1493122307318356974-5788962088629462879?l=blogpfc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blogpfc.blogspot.com/feeds/5788962088629462879/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1493122307318356974&amp;postID=5788962088629462879' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1493122307318356974/posts/default/5788962088629462879'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1493122307318356974/posts/default/5788962088629462879'/><link rel='alternate' type='text/html' href='http://blogpfc.blogspot.com/2008/01/la-primera-reunin-de-2008-04012008.html' title='La primera reunión de 2008 (04/01/2008)'/><author><name>J</name><uri>http://www.blogger.com/profile/02086256566248667825</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1493122307318356974.post-6178549380208206996</id><published>2008-01-02T23:59:00.001+01:00</published><updated>2008-09-01T22:24:56.625+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Dfwikiteam'/><category scheme='http://www.blogger.com/atom/ns#' term='UML'/><category scheme='http://www.blogger.com/atom/ns#' term='Moodle'/><category scheme='http://www.blogger.com/atom/ns#' term='Grades'/><title type='text'>Dos nuevas Tablas: wiki_evaluation y wiki_evaluation_edition</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;span style="font-family:verdana;"&gt;Aún tengo que solucionar algunos problemas técnicos que tengo con Moodle 1.9 y Nwiki, mientras, sigo trabajando en Moodle 1.8.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Mi primer idea es crear dos nuevas tablas auxiliares que sirvan para valorar páginas wiki y versiones de una misma página wiki.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Para la primera parte, evaluar páginas wiki, la llamaré &lt;span style="font-weight: bold;"&gt;wiki_evaluation&lt;/span&gt;, y será una tabla nueva que relacionará la tabla usuario, páginas wiki y notas (grades). Aparte de relacionar dichas tablas también servirá para almacenar un comentario y la nota (gradesid). En caso de que se modifiqué repetidas veces una nota, siempre podremos recuperar la nota inicial o las sucesivas a partir de los historiales de las tablas de grades (history tables, que básicamente tienen los mismos campos más tres extra). Todas las tablas de se utilizan para gestionar los grades posen su respectiva tabla historial y con ella se pude reconstruir las notas en cualquier punto en el tiempo.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Destacar, que para asociar una página wiki (wiki_pages) con la tabla wiki_evaluation, utilizaré en vez del identificador de la página wiki (id), los cuatro campos principales para diferenciar páginas wiki, estos son pagename (nombre de la página wiki), dfwiki (a que wiki pertenece), ownerid (el propietario de la página wiki) y groupid (grupo al que pertenece). Creo que para evitar constantemente que la relación entre las páginas wiki y las evaluaciones tengan que actualizarse siempre que se modifica una página wiki, es decir, se añade una nueva versión, es coger estos cuatro campos. Si solo utilizaremos el campo id de la tabla wiki_pages, estaríamos valorando versiones en vez de la página wiki y si buscáramos que la nota fuera a parar a la última versión disponible, tendríamos que actualizar al nuevo valor del campo id de wiki_pages.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;La estructura en UML sería la siguiente (no confundir con el condensador de flujo...XD):&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-family:verdana;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-family:verdana;"&gt;&lt;img src="http://lh5.google.com/de.la.torre.javi/R4HrwxMML2I/AAAAAAAAAKg/hR1qmjpFHiI/s400/tabla_wiki_evaluation.jpg" /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-family:verdana;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-family:verdana;"&gt;&lt;br /&gt;En sql:&lt;br /&gt;&lt;br /&gt;&lt;pre style="border-style: solid; border-color: red;"&gt;&lt;br /&gt;&lt;br /&gt;CREATE TABLE mdl_wiki_evaluation&lt;br /&gt;(&lt;br /&gt;id BIGINT(10) unsigned NOT NULL auto_increment,&lt;br /&gt;pagename VARCHAR(160) NOT NULL DEFAULT '',&lt;br /&gt;wikiid* BIGINT(10) unsigned NOT NULL DEFAULT 0,&lt;br /&gt;groupid BIGINT(10) unsigned NOT NULL DEFAULT 0,&lt;br /&gt;ownerid BIGINT(10) unsigned NOT NULL DEFAULT 0,&lt;br /&gt;userid BIGINT(10) unsigned NOT NULL DEFAULT 0,&lt;br /&gt;gradeid BIGINT(10) unsigned NOT NULL,&lt;br /&gt;comment MEDIUMTEXT,&lt;br /&gt;&lt;br /&gt;PRIMARY KEY (id),&lt;br /&gt;UNIQUE (pagename, wikiid, groupid, ownerid,&lt;br /&gt;userid, gradeid),&lt;br /&gt;FOREIGN KEY (wikiid) REFERENCES wiki(id),&lt;br /&gt;FOREIGN KEY (userid) REFERENCES user(id),&lt;br /&gt;FOREIGN KEY (gradeid) REFERENCES grade_grades(id)&lt;br /&gt;);&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;* Más conocido como Dfwiki, pero para ahorrar cambios y mantenimiento en el código, he preferido nombrarlo así.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;&lt;br /&gt;Para evaluar las versiones de las páginas wiki, habrá una nueva tabla con el nombre de &lt;span style="font-weight: bold;"&gt;wiki_evaluation_edition&lt;/span&gt;. A diferencia de la anterior, hay que destacar que será una clase asociativa propiamente dicha. Esto implica que el identificador esta vez si será el identificador de la página wiki, que representa la edición que vamos a evaluar. Por lo tanto la nueva tabla que añadiremos a la base de datos estará compuesta por el identificador del usuarios, de la página wiki y el del la respectiva nota. Además almacenará los caracteres +, - o = dependiendo de la valoración del usuario respecto a la versión. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;La estructura en UML sería la siguiente:&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-family:verdana;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-family:verdana;"&gt;&lt;img src="http://lh5.google.com/de.la.torre.javi/R4HrwxMML3I/AAAAAAAAAKo/IHfXutbP4ss/s400/tabla_wiki_evaluation_editions.jpg" /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-family:verdana;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:verdana;"&gt;En sql:&lt;br /&gt;&lt;br /&gt;&lt;pre style="border-style: solid; border-color: red;"&gt;&lt;br /&gt;&lt;br /&gt;CREATE TABLE wiki_evaluation_edition&lt;br /&gt;(&lt;br /&gt;id BIGINT(10) unsigned NOT NULL auto_increment,&lt;br /&gt;wiki_pageid BIGINT(10) unsigned NOT NULL,&lt;br /&gt;userid BIGINT(10) unsigned NOT NULL DEFAULT 0,&lt;br /&gt;gradeid BIGINT(10) unsigned NOT NULL,&lt;br /&gt;valoration VARCHAR(10) NOT NULL DEFAULT '',&lt;br /&gt;&lt;br /&gt;PRIMARY KEY(id),&lt;br /&gt;UNIQUE (wiki_pageid, userid, gradeid) **&lt;br /&gt;FOREIGN KEY (wiki_pageid) REFERENCES wiki_page(id),&lt;br /&gt;FOREIGN KEY (userid) REFERENCES user(id),&lt;br /&gt;FOREIGN KEY (gradeid) REFERENCES grade_grades(id)&lt;br /&gt;);&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="bold"&gt;&lt;strong&gt;** Deviation from SQL standards&lt;/strong&gt;&lt;/span&gt;: A         &lt;code class="literal"&gt;FOREIGN KEY&lt;/code&gt; constraint that references a         non-&lt;code class="literal"&gt;UNIQUE&lt;/code&gt; key is not standard SQL. It is an         &lt;code class="literal"&gt;InnoDB&lt;/code&gt; extension to standard SQL&lt;span style="font-family: arial;"&gt;.        &lt;/span&gt;&lt;span style="font-family: arial;font-size:100%;" &gt;(http://dev.mysql.com/doc/refman/5.0/en/innodb-foreign-key-constraints.html)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-family:verdana;"&gt;Aunque, nuestra idea inicial es crear una clase asociativa en Moodle, en realidad, a efectos prácticos no podremos realizar dicho concepto. Esto se debe a que las nuevas tablas de Moodle que incorporemos, deben de reunir unos requisitos mínimos. Algunos de estos requisitos son, que todas las tabla nuevas deberán de tener como clave primaria un identificador numérico autoincremental, este hecho rompe el concepto de clase asociativa, ya que una clases asociativa, su clave primaria se compone de las claves primarias de la relación de las demás clases. La solución es crear la tabla con el identificador y posteriormente crear nuestra clave única para evitar repeticiones no deseadas.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1493122307318356974-6178549380208206996?l=blogpfc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blogpfc.blogspot.com/feeds/6178549380208206996/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1493122307318356974&amp;postID=6178549380208206996' title='5 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1493122307318356974/posts/default/6178549380208206996'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1493122307318356974/posts/default/6178549380208206996'/><link rel='alternate' type='text/html' href='http://blogpfc.blogspot.com/2008/01/dos-nuevas-tablas-wikievaluation-y.html' title='Dos nuevas Tablas: wiki_evaluation y wiki_evaluation_edition'/><author><name>J</name><uri>http://www.blogger.com/profile/02086256566248667825</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1493122307318356974.post-6161194908547414129</id><published>2007-12-29T20:57:00.000+01:00</published><updated>2008-01-14T00:59:33.341+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PDF'/><category scheme='http://www.blogger.com/atom/ns#' term='wikibook'/><category scheme='http://www.blogger.com/atom/ns#' term='Dfwikiteam'/><category scheme='http://www.blogger.com/atom/ns#' term='Moodle'/><category scheme='http://www.blogger.com/atom/ns#' term='Grades'/><title type='text'>Reunión (27/12/2007)</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;span style="font-family:verdana;"&gt;El pasado jueves, estuve comentando con Pigui, algunas tablas auxiliares que podría necesitar para la tarea de los Grades, y también las ideas que había tenido.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Una de las partes de la tarea de los Grades consiste en valorar ediciones de una misma página wiki, para poder notar al progreso del autor o del grupo, y es a esta a la que dedicamos más tiempo. Para evaluar las páginas wiki utilizaremos una nueva &lt;span style="font-weight: bold;"&gt;clase asociativa&lt;/span&gt; compuesta por la asociación de las clases &lt;span style="font-weight: bold;"&gt;usuario&lt;/span&gt;, &lt;span style="font-weight: bold;"&gt;nota&lt;/span&gt; (grades) y &lt;span style="font-weight: bold;"&gt;página wiki&lt;/span&gt;. Dicha propuesta implica que la idea inicial de valorar entre ediciones, no precisamente consecutivas, no pueda llevarse acabó (de momento...) y por lo tanto solo se valorarán únicamente páginas wiki. Este cambio en el funcionamiento, beneficiará el cálculo de las estadísticas y los informes. Si se valoraba entre diferentes ediciones de la misma página wiki, a la hora de calcular las evaluaciones tendríamos que tener en cuenta diferentes criterios como por ejemplo, si la valoración entre dos ediciones pasaría únicamente a una de las dos (preferiblemente la más tardía) o si la nota se contaba en cada sección, es decir, una valoración contaría en las dos ediciones de la misma página wiki.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Otra parte a considerar, es que a la hora de valorar las páginas wiki, podremos utilizar las &lt;span style="font-style: italic;"&gt;Scales&lt;/span&gt; que nos proporciona &lt;a href="http://moodle.org/"&gt;Moodle&lt;/a&gt; o bien crear nuestras propias &lt;span style="font-style: italic;"&gt;Scales&lt;/span&gt;.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;También se tendrán que añadir tres nuevas capabilitys para diferenciar que se puede visualizar y que no. Estas tres nuevas capabilitys son gradepeer, gradeauthor y grademain. Gradepeer establece que el usuario podrá ver las valoraciones de su página wiki y el nombre de los usuarios que las han realizado. Gradeauthor, a diferencia del anterior, no permitirá ver el nombre de los usuarios que han realizado las valoraciones. Y por último, grademain, que permitirá ver todas las valoraciones de todas la páginas wiki.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Las valoraciones se añadirán a través de la pestaña evaluate y las ediciones serán en la pestaña history.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;(Para más información sobre Grades, Scales, ... vea la &lt;a href="http://blogpfc.blogspot.com/2007/12/documentacin-para-desarollar-con-grades.html"&gt;entrada anterior&lt;/a&gt; :) )&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:verdana;" &gt;... Wikibook to Pdf ...&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;De la tarea anterior, pasar de Wikibook a Pdf, falta acabar el tratamiento que tendrán los Wikibooks en función de los campos studentmode y groupmode de la tabla Wiki, que variarán las consultas a la base de datos en función de estas. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Gracias a las explicaciones de Pigui, esta parte estará acabada próximamente.&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1493122307318356974-6161194908547414129?l=blogpfc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blogpfc.blogspot.com/feeds/6161194908547414129/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1493122307318356974&amp;postID=6161194908547414129' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1493122307318356974/posts/default/6161194908547414129'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1493122307318356974/posts/default/6161194908547414129'/><link rel='alternate' type='text/html' href='http://blogpfc.blogspot.com/2007/12/reunin-27122007.html' title='Reunión (27/12/2007)'/><author><name>J</name><uri>http://www.blogger.com/profile/02086256566248667825</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1493122307318356974.post-4289681448555611041</id><published>2007-12-25T18:55:00.001+01:00</published><updated>2008-01-13T15:31:55.676+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Dfwikiteam'/><category scheme='http://www.blogger.com/atom/ns#' term='Moodle'/><category scheme='http://www.blogger.com/atom/ns#' term='Grades'/><title type='text'>Documentación para desarollar con grades en Moodle 1.9</title><content type='html'>&lt;span style=";font-family:verdana;font-size:100%;"  &gt;&lt;span style="font-size:100%;"&gt;He recopilado algunas páginas web, dentro de &lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;a href="http://moodle.org/"&gt;Moodle.org&lt;/a&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;, que creó que me pueden servir para realizar la tarea y también pueden ser de utilidad para cualquier persona que quiera contribuir y trabajar con los grades de Moodle 1.9.&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;Son los siguientes:&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;ul  style="font-family:verdana;"&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-size:100%;"&gt;&lt;a href="http://docs.moodle.org/en/Development:Grades"&gt;Development:Grades&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-size:100%;"&gt;&lt;a href="http://docs.moodle.org/en/Development:Grade_letters"&gt;Development:Grade_letters&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-size:100%;"&gt;&lt;a href="http://docs.moodle.org/en/Development:Gradebook_Report_Tutorial"&gt;Development:Gradebook_Report_Tutorial&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-size:100%;"&gt;&lt;a href="http://docs.moodle.org/en/Development:Outcomes"&gt;Development:Outcomes&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-size:100%;"&gt;&lt;a href="http://docs.moodle.org/en/Development:Outcomes_examples"&gt;Development:Outcomes_examples&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-size:100%;"&gt;&lt;a href="http://docs.moodle.org/en/Development:Events"&gt;Development:Events&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-size:100%;"&gt;&lt;a href="http://docs.moodle.org/en/Development:Groups"&gt;Development:Groups&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-size:100%;"&gt;&lt;a href="http://docs.moodle.org/en/Development:Groupings_and_Groups"&gt;Development:Groupings_and_Groups&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-size:100%;"&gt;&lt;a href="http://docs.moodle.org/en/Development:Roles#Capabilities"&gt;Roles&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-size:100%;"&gt;&lt;a href="http://docs.moodle.org/en/Development:Roles_and_modules"&gt;Roles &amp; Modules&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style=";font-family:verdana;font-size:100%;"  &gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;br /&gt;Más información:&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;ul style="font-family: verdana;"&gt;&lt;li&gt;&lt;a href="http://docs.moodle.org/es/index.php?title=Modelo_de_Datos_de_la_Wiki"&gt;Modelo de Datos de la Wiki&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-size:100%;"&gt;&lt;a href="http://docs.moodle.org/en/Grader_report"&gt;Grader_report&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-size:100%;"&gt;&lt;a href="http://docs.moodle.org/en/Grade_permissions"&gt;Grade_permissions&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-size:100%;"&gt;&lt;a href="http://docs.moodle.org/en/General_grade_settings"&gt;General_grade_settings&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-size:100%;"&gt;&lt;a href="http://docs.moodle.org/en/Grade_letters"&gt;Grade_letters&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-size:100%;"&gt;&lt;a href="http://docs.moodle.org/en/Scales"&gt;Scales&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;"See you"&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1493122307318356974-4289681448555611041?l=blogpfc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blogpfc.blogspot.com/feeds/4289681448555611041/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1493122307318356974&amp;postID=4289681448555611041' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1493122307318356974/posts/default/4289681448555611041'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1493122307318356974/posts/default/4289681448555611041'/><link rel='alternate' type='text/html' href='http://blogpfc.blogspot.com/2007/12/documentacin-para-desarollar-con-grades.html' title='Documentación para desarollar con grades en Moodle 1.9'/><author><name>J</name><uri>http://www.blogger.com/profile/02086256566248667825</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1493122307318356974.post-2855558546287603221</id><published>2007-12-20T12:37:00.000+01:00</published><updated>2007-12-25T18:32:38.762+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PDF'/><category scheme='http://www.blogger.com/atom/ns#' term='wikibook'/><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><category scheme='http://www.blogger.com/atom/ns#' term='Dfwikiteam'/><category scheme='http://www.blogger.com/atom/ns#' term='Moodle'/><category scheme='http://www.blogger.com/atom/ns#' term='HTML'/><category scheme='http://www.blogger.com/atom/ns#' term='nwiki'/><title type='text'>Reunión y Nueva Tarea (Grades)</title><content type='html'>&lt;div face="verdana" style="text-align: justify;"&gt;El pasado lunes, en la reunión con &lt;a href="http://orangoodling.blogspot.com/"&gt;Marc&lt;/a&gt;(Ludo) y &lt;a href="http://elpigui-i-lawiki.blogspot.com/"&gt;Pigui&lt;/a&gt;, me explicaron cual sería la última tarea a implementar, grades para páginas wiki en &lt;a href="http://moodle.org/"&gt;Moodle&lt;/a&gt; 1.9. Hoy, empezaré a documentarme y buscar información del funcionamiento de los grades.&lt;br /&gt;&lt;br /&gt;La tarea de los grades constará de cuatro etapas (by Ludo):&lt;br /&gt;&lt;/div&gt;&lt;ol  style="text-align: justify;font-family:verdana;"&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Documentación&lt;/span&gt;: Escribir un informe de los objetivos a cumplir, explicando la semántica del funcionamiento.&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Interfaz&lt;/span&gt;: Bocetos iniciales de el aspecto que tendrá las páginas html.&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Tablas&lt;/span&gt;: Diseño de las tablas a añadir en la base de datos. Con la ayuda del incombustible Pigui.&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Programar&lt;/span&gt;: Implementar&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div style="text-align: justify; font-family: verdana;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Más sobre la tarea de Wikibooks...&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Se han añadido los emoticones para substituir el conjunto de los caracteres que los definen.&lt;br /&gt;&lt;br /&gt;Siguiendo con las imágenes, he acabado la tarea de añadir imágenes en el &lt;a href="http://es.wikipedia.org/wiki/Pdf"&gt;PDF&lt;/a&gt;. Una de las muchas limitaciones que tiene la clase TCPDF, es que el método implementado(Image) utiliza como parámetro la dirección completa de disco del archivo que se tiene que añadir, es decir, la imagen tiene que estar almacenada en el disco duro.&lt;br /&gt;&lt;br /&gt;El método Image, abre el archivo especificado para lectura (que tiempos aquellos los de S.O.), después calcula la altura y anchura, y finalmente lo guarda en un atributo interno de la clase TCPDF (images, que es un vector de imágenes). Como cada imagen que hay en la página nwiki hay que descargarla al disco y calcular la altura y anchura, el tiempo a la hora de crear el PDF se incrementa, y más si el PDF se tiene que crear dos veces para poder calcular los enlaces internos (de lo contrario, nos sabríamos cuantas páginas ocupa cada nwiki), como este comportamiento es ineficiente, implementé dos métodos nuevos a la clase que sirven para hacer un &lt;span style="font-style: italic;"&gt;copy &amp;amp; paste&lt;/span&gt; del vector de imágenes. Antes de descargar la imagen se comprueba si ya existe en el vector o no.&lt;br /&gt;&lt;br /&gt;Al trabajar con archivos y ficheros hay que tener siempre en cuenta algunas particularidades dependientes del sistema de ficheros del &lt;a href="http://www.fib.upc.edu/fib/infoAca/estudis/assignatures/SO.html"&gt;S.O&lt;/a&gt;., como por ejemplo los permisos, el espacio disponible en el disco, que no existan conflictos con los ficheros existentes, etc. Los criterios que he escogido son los siguientes:&lt;br /&gt;&lt;/div&gt;&lt;ul style="font-family: verdana; text-align: justify;"&gt;&lt;li&gt;Para cada imagen, se descarga el disco duro una sola vez, si existe cualquier error a la hora de leer la url de la imagen, crear el archivo en el disco o escribir los datos en el disco, se interrumpe la creación del pdf y se elimina del disco duro el archivo.&lt;/li&gt;&lt;li&gt;Tras pasar la información de la imagen al vector de imágenes de la clase TCPDF, se elimina la imagen.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Cada usuario tendrá una fichero dentro del fichero de /tmp de tcpdf. De está forma se evita que una misma imagen pueda ser sobrescrita o evitar comportamientos inesperados.&lt;/li&gt;&lt;li&gt;Habilitar correctamente un fichero en el que poder escribir para poder almacenar imágenes temporalmente.&lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: justify; font-family: verdana;"&gt;&lt;br /&gt;He añadido como &lt;a href="http://es.wikipedia.org/wiki/Tags"&gt;tags&lt;/a&gt; soportados: &amp;lt;dl&amp;gt; (definition list), &amp;lt;dt&amp;gt;, &amp;lt;dd&amp;gt; y &amp;lt;div&amp;gt; (tabla de contenidos).&lt;br /&gt;&lt;br /&gt;Las páginas nwiki que tengan la cadena " %%% " será sustituida por el tag &amp;lt;br&amp;gt;.&lt;br /&gt;&lt;br /&gt;Después de trabajar con la clase TCPDF comentaré algunas impresiones. Dentro de las &lt;a href="http://es.wikipedia.org/wiki/Biblioteca_%28programaci%C3%B3n%29"&gt;librerías&lt;/a&gt;  (o bibliotecas) de Moodle para crear PDFs (que conozca), la librería de TCPDF es la más completa. La clase es bastante modular, pero no es una clase con la que se pueda trabajar únicamente sabiendo las funciones públicas disponibles, hay que tener en cuenta aspecto internos de la clase, como por ejemplo las unidades utilizadas (pixels, mm, cm, puntos, ...).  La función que se utiliza como &lt;span style="font-style: italic;"&gt;parser&lt;/span&gt;, para los documentos html es bastante limitada en algunos aspectos, como por ejemplo, hacer listas de listas (algo que ya comente), introducir imágenes de tamaño considerable (al menos que no definamos para cada imagen la escala que queremos), etc.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Nota&lt;/span&gt;: Algunas de las funciones &lt;a href="http://es.wikipedia.org/wiki/Php"&gt;PHP&lt;/a&gt; que he utilizado, solo están disponibles a partir de la versión PHP 4. Una consideración importante a tener en cuenta.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1493122307318356974-2855558546287603221?l=blogpfc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blogpfc.blogspot.com/feeds/2855558546287603221/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1493122307318356974&amp;postID=2855558546287603221' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1493122307318356974/posts/default/2855558546287603221'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1493122307318356974/posts/default/2855558546287603221'/><link rel='alternate' type='text/html' href='http://blogpfc.blogspot.com/2007/12/reunin-y-nueva-tarea-grades.html' title='Reunión y Nueva Tarea (Grades)'/><author><name>J</name><uri>http://www.blogger.com/profile/02086256566248667825</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1493122307318356974.post-9030229067357699171</id><published>2007-12-16T11:21:00.000+01:00</published><updated>2007-12-16T11:44:07.251+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PDF'/><category scheme='http://www.blogger.com/atom/ns#' term='wikibook'/><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><category scheme='http://www.blogger.com/atom/ns#' term='Dfwikiteam'/><category scheme='http://www.blogger.com/atom/ns#' term='Moodle'/><title type='text'>Trabajo de la semana (III)</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:verdana;"&gt;Trabajando en la conversión de &lt;/span&gt;&lt;span style="font-weight: bold;font-family:verdana;" &gt;wikibook&lt;/span&gt;&lt;span style="font-family:verdana;"&gt; a &lt;/span&gt;&lt;span style="font-weight: bold;font-family:verdana;" &gt;pdf&lt;/span&gt;&lt;span style="font-family:verdana;"&gt;...&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;He añadido al &lt;a href="http://es.wikipedia.org/wiki/Parser"&gt;parser&lt;/a&gt; de la librería TCPDF de &lt;a href="http://moodle.org/"&gt;Moodle&lt;/a&gt;, la funcionalidad de &lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;" &gt;printar&lt;/span&gt;&lt;span style="font-family:verdana;"&gt; correctamente las listas de listas. Y es totalmente indiferente que sean ordenadas (&amp;lt;ol&amp;gt;), desordenas (&amp;lt;ul&amp;gt;) o combinaciones estas.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;El tratamiento de links internos está acabado y ahora solo hace falta testearlo. A diferencia de los links externos, los links internos son de color verde. Para añadir esta funcionalidad, que es dependiente de las páginas nwiki, he creado estructuras internas dentro de la clase para gestionar los enlaces.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;He jugado bastante con los métodos de la clase para saber que posibilidades extras ofrece.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Sigo trabajando en la interfaz, que había dejado de lado para centrarme exclusivamente en las listas y los links.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Todos esto aparte de la corrección del &lt;a href="http://es.wikipedia.org/wiki/Error_de_software"&gt;bug&lt;/a&gt;.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1493122307318356974-9030229067357699171?l=blogpfc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blogpfc.blogspot.com/feeds/9030229067357699171/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1493122307318356974&amp;postID=9030229067357699171' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1493122307318356974/posts/default/9030229067357699171'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1493122307318356974/posts/default/9030229067357699171'/><link rel='alternate' type='text/html' href='http://blogpfc.blogspot.com/2007/12/trabajo-de-la-semana-iii.html' title='Trabajo de la semana (III)'/><author><name>J</name><uri>http://www.blogger.com/profile/02086256566248667825</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1493122307318356974.post-4705667612538426395</id><published>2007-12-15T21:21:00.000+01:00</published><updated>2007-12-16T00:49:16.852+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='Dfwikiteam'/><category scheme='http://www.blogger.com/atom/ns#' term='Timeline'/><title type='text'>Un bug ...</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:verdana;"&gt;El &lt;a href="http://morfeo.upc.es/crom/course/view.php?id=4&amp;amp;edit=1&amp;amp;sesskey=sidpcGIZbv#timeline"&gt;plugin&lt;/a&gt; de &lt;a href="http://simile.mit.edu/timeline/"&gt;Timelines&lt;/a&gt; para ver la actividad de &lt;a href="http://moodle.org/"&gt;Moodle&lt;/a&gt; tenía un pequeño &lt;a href="http://es.wikipedia.org/wiki/Error_de_software"&gt;bug&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;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. &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:verdana;"&gt;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 &lt;a href="http://es.wikipedia.org/wiki/Firefox"&gt;Firefox&lt;/a&gt; se compone correctamente, pero en cambio en &lt;a href="http://es.wikipedia.org/wiki/Internet_Explorer"&gt;Internet Explorer&lt;/a&gt; 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:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;pre style="border-style: solid; border-color: red;"&gt;&lt;br /&gt;&amp;lt;html&amp;gt;&lt;br /&gt;&amp;lt;head&amp;gt;&amp;lt;/head&amp;gt;&lt;br /&gt;&amp;lt;body&amp;gt;&lt;br /&gt;&amp;lt;script type="text/javascript"&amp;gt;&lt;br /&gt;var today = new Date();&lt;br /&gt;alert(today);&lt;br /&gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&amp;lt;/body&amp;gt;&lt;br /&gt;&amp;lt;html&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;Mozilla Firefox&lt;br /&gt;&lt;img src="http://lh6.google.es/de.la.torre.javi/R2RihoHngjI/AAAAAAAAAKA/cbYK0ze_v_Y/s288/Firefox_date.jpg" /&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;Internet Explorer&lt;br /&gt;&lt;img src="http://lh6.google.es/de.la.torre.javi/R2RihoHngiI/AAAAAAAAAJ4/bdrBDhnTGWk/s288/Explorer_date.jpg" /&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-family:verdana;"&gt;Aparte de esta pequeña peculiaridad, trabajar con &lt;a href="http://es.wikipedia.org/wiki/DOM"&gt;DOM&lt;/a&gt; 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 &lt;span style="font-style: italic;"&gt;innerHTML&lt;/span&gt; y en Firefox es suficiente con utilizar el atributo &lt;span style="font-style: italic;"&gt;textContent&lt;/span&gt;.&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1493122307318356974-4705667612538426395?l=blogpfc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blogpfc.blogspot.com/feeds/4705667612538426395/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1493122307318356974&amp;postID=4705667612538426395' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1493122307318356974/posts/default/4705667612538426395'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1493122307318356974/posts/default/4705667612538426395'/><link rel='alternate' type='text/html' href='http://blogpfc.blogspot.com/2007/12/cuatro-das-despues.html' title='Un bug ...'/><author><name>J</name><uri>http://www.blogger.com/profile/02086256566248667825</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1493122307318356974.post-8419986686110465902</id><published>2007-12-11T23:59:00.000+01:00</published><updated>2007-12-26T18:42:25.774+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='wikibook'/><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><category scheme='http://www.blogger.com/atom/ns#' term='Dfwikiteam'/><category scheme='http://www.blogger.com/atom/ns#' term='Moodle'/><title type='text'>La Reunión</title><content type='html'>&lt;span style="font-family: verdana;"&gt;En la reunión del lunes le comenté a &lt;/span&gt;&lt;a style="font-family: verdana;" href="http://orangoodling.blogspot.com/"&gt;Marc&lt;/a&gt;&lt;span style="font-family: verdana;"&gt; y a &lt;/span&gt;&lt;a style="font-family: verdana;" href="http://elpigui-i-lawiki.blogspot.com/"&gt;Pigui&lt;/a&gt;&lt;span style="font-family: verdana;"&gt;, las complicaciones que había tenido en la tarea de pasar de Wikibook a PDF.  Estas fueron las que expuse:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul style="font-family: verdana;"&gt;&lt;li&gt;He tenido problemas con las fuentes de la clase TCPDF. Intentaba utilizar las fuentes que venían por defecto con FPDF (arial, times, courier, ...), pero parece que solo se pueden utilizar fuentes Unicode en formato &lt;a href="http://es.wikipedia.org/wiki/TrueType"&gt;TruType&lt;/a&gt;. Solución: Utilizar las fuentes que vienen por defecto.&lt;/li&gt;&lt;li&gt;La función (o &lt;a href="http://es.wikipedia.org/wiki/Parser"&gt;parser&lt;/a&gt;) encargado de pasar de html a pdf de la clase TCPDF, que se llama writeHTML, solo imprime listas sencillas (&amp;lt;ul&amp;gt; y &amp;lt;ol&amp;gt;), es decir, permite listas de listas pero las imprime como si fueran listas sencillas o simples. Actualmente estoy trabajando en solventar esta disfunción.&lt;/li&gt;&lt;li&gt;Los enlaces no están completados correctamente, el parser de la clase TCPDF, recoge el atributo "href" del enlace(&amp;lt;a&amp;gt;) y lo escribe directamente e incompleto.&lt;/li&gt;&lt;li&gt;Existe un restricción de etiquetas no soportadas, que simplemente son eliminadas, dejando únicamente el texto que contenían entre ellas.&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-family: verdana;"&gt;Estos días estoy analizando el código para poder corregir estas pequeñas deficiencias y tenerlas solucionadas lo antes posible. He tenido un par de buenas ideas que creo que me darán buenos resultados.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;Seguiré informando...&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1493122307318356974-8419986686110465902?l=blogpfc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blogpfc.blogspot.com/feeds/8419986686110465902/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1493122307318356974&amp;postID=8419986686110465902' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1493122307318356974/posts/default/8419986686110465902'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1493122307318356974/posts/default/8419986686110465902'/><link rel='alternate' type='text/html' href='http://blogpfc.blogspot.com/2007/12/la-reunin.html' title='La Reunión'/><author><name>J</name><uri>http://www.blogger.com/profile/02086256566248667825</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1493122307318356974.post-1275328911544417364</id><published>2007-12-10T12:48:00.000+01:00</published><updated>2007-12-10T13:31:32.660+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='wikibook'/><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><category scheme='http://www.blogger.com/atom/ns#' term='Dfwikiteam'/><category scheme='http://www.blogger.com/atom/ns#' term='Moodle'/><category scheme='http://www.blogger.com/atom/ns#' term='HTML'/><title type='text'>Resumen de la Semana Pasada</title><content type='html'>&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:verdana;"&gt;El martes día &lt;span style="font-weight: bold;"&gt;4 de diciembre de 2007&lt;/span&gt; se me encomendó una nueva tarea, la de pasar un wikibook a pdf.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Un wikibook, es un conjunto de paginas wiki, presentadas en formato libro (esta explicación tal vez sobraba...).&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;El primer día estuve analizando la estructura de las tablas de la base de datos con las que tenía que trabajar. Específicamente se trata de las siguientes tres tablas: wiki, wiki_pages y course_modules. Es importante entenderlas bien, de cara escoger las últimas versiones de las páginas wiki del wikibook que pertenece al módulo del curso o al módulo wiki.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Cuando acabé de completar las consultas en sql a la base de datos, me centré (como me dijo &lt;/span&gt;&lt;a style="font-family: verdana;" href="http://elpigui-i-lawiki.blogspot.com/"&gt;Pigui&lt;/a&gt;&lt;span style="font-family:verdana;"&gt;) en mirar las dos clases que ja dispone la librería de Moodle para crear pdfs. Estás son FPDF y TCPDF. TCPDF es una extensión de la clase FPDF, con más métodos que nos pueden facilitar en gran medida la creación de pdfs. El único problema que tenía era que las fuentes disponibles en FPDF, no son fácilmente accesibles para la clase TCPDF (yo de momento uso otras...).&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Ahora mismo estoy trabajando en TCPDF y he conseguido avanzar bastante, pero existen algunas incompatibilidades de tags html con la función writeHTML de la clase. Por ejemplo, no se escriben bien las listas de listas o hay etiquetas no soportadas como "div".&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Coming soon -&gt; "La Reunión"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1493122307318356974-1275328911544417364?l=blogpfc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blogpfc.blogspot.com/feeds/1275328911544417364/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1493122307318356974&amp;postID=1275328911544417364' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1493122307318356974/posts/default/1275328911544417364'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1493122307318356974/posts/default/1275328911544417364'/><link rel='alternate' type='text/html' href='http://blogpfc.blogspot.com/2007/12/resumen-de-la-semana-pasada.html' title='Resumen de la Semana Pasada'/><author><name>J</name><uri>http://www.blogger.com/profile/02086256566248667825</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1493122307318356974.post-1664586494453122812</id><published>2007-12-07T23:56:00.000+01:00</published><updated>2007-12-26T18:41:42.362+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Dfwikiteam'/><category scheme='http://www.blogger.com/atom/ns#' term='Moodle'/><category scheme='http://www.blogger.com/atom/ns#' term='Timeline'/><title type='text'>My first plugin :)</title><content type='html'>&lt;span style="font-weight: bold; font-family: verdana;font-size:100%;" &gt;El viernes 30 de noviembre de 2007&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family: verdana;"&gt;, acabé mi primer plugin, para &lt;/span&gt;&lt;a style="font-family: verdana;" href="http://moodle.org/"&gt;Moodle&lt;/a&gt;&lt;span style="font-family: verdana;"&gt;. Estoy muy satisfecho con el resultado y espero que con el tiempo se pueda ir mejorando y ampliando.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;Junto con el &lt;/span&gt;&lt;a style="font-family: verdana;" href="http://simile.mit.edu/timeline/"&gt;TimeLine&lt;/a&gt;&lt;span style="font-family: verdana;"&gt;, 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 &lt;/span&gt;&lt;a style="font-family: verdana;" href="http://morguapu.upc.es/crom/course/view.php?id=2&amp;amp;page=TimeLines"&gt;esta web&lt;/a&gt;&lt;span style="font-family: verdana;"&gt; 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).&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;En esta otra &lt;/span&gt;&lt;a style="font-family: verdana;" href="http://morfeo.upc.es/crom/course/view.php?id=4&amp;amp;edit=1&amp;amp;sesskey=sidpcGIZbv#timeline"&gt;página&lt;/a&gt;&lt;span style="font-family: verdana;"&gt; se encuentra el enlace de descarga del plugin. También en esta misma página se recoge otros recursos para Moodle desarollados por &lt;/span&gt;&lt;a style="font-family: verdana;" href="http://morfeo.upc.es/crom/"&gt;Dfwikiteam&lt;/a&gt;&lt;span style="font-family: verdana;"&gt;.&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1493122307318356974-1664586494453122812?l=blogpfc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blogpfc.blogspot.com/feeds/1664586494453122812/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1493122307318356974&amp;postID=1664586494453122812' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1493122307318356974/posts/default/1664586494453122812'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1493122307318356974/posts/default/1664586494453122812'/><link rel='alternate' type='text/html' href='http://blogpfc.blogspot.com/2007/12/my-first-plugin.html' title='My first plugin :)'/><author><name>J</name><uri>http://www.blogger.com/profile/02086256566248667825</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1493122307318356974.post-3793917361993484042</id><published>2007-11-25T23:53:00.000+01:00</published><updated>2007-11-26T00:50:34.950+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><category scheme='http://www.blogger.com/atom/ns#' term='Javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='Moodle'/><category scheme='http://www.blogger.com/atom/ns#' term='Timeline'/><title type='text'>Trabajo de la Semana (II)</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;span style="font-weight: bold;font-family:verdana;" &gt;&lt;span&gt;Mejoras de la última versión del &lt;A href="http://es.wikipedia.org/wiki/Plugin"&gt;plugin&lt;/A&gt;&lt;/span&gt;:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;He tenido problemas con la fechas a la hora de tratar los milisegundos transcurridos desde las 00:00 del 1 enero de 1970 (&lt;A href="http://es.wikipedia.org/wiki/Timestamp"&gt;timestamp&lt;/A&gt;) que están almacenados en la etiqueta select con id="menudate". Al convertir el valor de timestamp en un determinado formato dentro  de &lt;A href="http://es.wikipedia.org/wiki/Javascript"&gt;Javascript&lt;/A&gt;, constantemente daba un valor erróneo. Para solucionarlo he añadido dentro de cada opción (&amp;lt;option&amp;gt;) 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.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:verdana;"&gt;He integrado los Highlights ya implementados de &lt;A href="http://simile.mit.edu/timeline/"&gt;Timeline&lt;/A&gt;. 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 &lt;A href="http://blogpfc.blogspot.com/2007/11/formato-de-los-eventos-y-accesibilidad.html"&gt;descripción o el título&lt;/A&gt;.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:verdana;"&gt;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.&lt;A href="http://es.wikipedia.org/wiki/Php"&gt;php&lt;/A&gt; con la &lt;A href="http://es.wikipedia.org/wiki/Query_string"&gt;query&lt;/A&gt; 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.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:verdana;"&gt;Ya no hace falta modificar ninguna dirección dentro del script timeline_processing.js para utilizar el plugin.&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1493122307318356974-3793917361993484042?l=blogpfc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blogpfc.blogspot.com/feeds/3793917361993484042/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1493122307318356974&amp;postID=3793917361993484042' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1493122307318356974/posts/default/3793917361993484042'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1493122307318356974/posts/default/3793917361993484042'/><link rel='alternate' type='text/html' href='http://blogpfc.blogspot.com/2007/11/trabajo-de-la-semana-ii.html' title='Trabajo de la Semana (II)'/><author><name>J</name><uri>http://www.blogger.com/profile/02086256566248667825</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1493122307318356974.post-6506251032778935055</id><published>2007-11-24T13:16:00.000+01:00</published><updated>2007-11-24T15:48:22.540+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><category scheme='http://www.blogger.com/atom/ns#' term='Javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='Timeline'/><category scheme='http://www.blogger.com/atom/ns#' term='HTML'/><title type='text'>Trabajo de la semana (I)</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;span style="font-family:verdana;"&gt;Durante el transcurso de esta semana he añadido estas funcionalidades principales:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;ul style="font-family: verdana; text-align: justify;"&gt;&lt;li&gt;Para instalar el &lt;a href="http://es.wikipedia.org/wiki/Plugin"&gt;plugin&lt;/a&gt; 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 &lt;a href="http://simile.mit.edu/timeline/"&gt;timeline&lt;/a&gt;)&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul style="font-family: verdana; text-align: justify;"&gt;&lt;li&gt;Se ha añadido la &lt;a href="http://es.wikipedia.org/wiki/API_%28inform%C3%A1tica%29"&gt;API&lt;/a&gt; a la cabecera de la página en &lt;a href="http://es.wikipedia.org/wiki/Html"&gt;HTML&lt;/a&gt;. Existe el parametro $return de la función print_header, que si evalúa cierto devuelve el &lt;a href="http://es.wikipedia.org/wiki/String"&gt;string&lt;/a&gt; de la cabecera en vez de imprimirla con el comando "&lt;a href="http://es.php.net/echo"&gt;echo&lt;/a&gt;" (la función que tiene por defecto).&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul style="font-family: verdana; text-align: justify;"&gt;&lt;li&gt;Ahora dentro del propio fichero del plugin del timeline, se incluye la última versión de la API de Timeline.&lt;/li&gt;&lt;/ul&gt;&lt;ul style="font-family: verdana; text-align: justify;"&gt;&lt;li&gt;He añadido los saltos de linea a las burbujas del timeline (&amp;lt;br/&amp;gt;).&lt;/li&gt;&lt;/ul&gt;&lt;ul style="font-family: verdana; text-align: justify;"&gt;&lt;li&gt;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.&lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Ahora explicaré algunos detalles relevantes a la hora de modificar o mejorar el código, que cabe destacar:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;ul style="font-family: verdana; text-align: justify;"&gt;&lt;li&gt;La inicialización del Timeline (timeline_preocessing.js) tiene que ir dentro del body, porque lo modifica. Se añade por &lt;a href="http://es.wikipedia.org/wiki/Javascript"&gt;JavaScript&lt;/a&gt; los eventos onLoad y onResize al body.&lt;/li&gt;&lt;/ul&gt;&lt;ul style="font-family: verdana; text-align: justify;"&gt;&lt;li&gt;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)&lt;/li&gt;&lt;/ul&gt;&lt;ul style="font-family: verdana; text-align: justify;"&gt;&lt;li&gt;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(...).&lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-family:verdana;"&gt;&lt;br /&gt;Sigo trabajando en tener una versión estable (en la medida de lo posible...) para el lunes.&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1493122307318356974-6506251032778935055?l=blogpfc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blogpfc.blogspot.com/feeds/6506251032778935055/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1493122307318356974&amp;postID=6506251032778935055' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1493122307318356974/posts/default/6506251032778935055'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1493122307318356974/posts/default/6506251032778935055'/><link rel='alternate' type='text/html' href='http://blogpfc.blogspot.com/2007/11/trabajo-de-la-semana-i.html' title='Trabajo de la semana (I)'/><author><name>J</name><uri>http://www.blogger.com/profile/02086256566248667825</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1493122307318356974.post-7908638208159336958</id><published>2007-11-13T23:24:00.000+01:00</published><updated>2007-11-13T23:36:12.742+01:00</updated><title type='text'>Imprevistos (Desde cero...)</title><content type='html'>&lt;span style="font-size:100%;"&gt;&lt;span style="font-family: verdana;"&gt;Esta mañana he tenido que volver a instalar todo el sistema operativo, con los drivers, programas de edición de texto y otros, por culpa de un Troyano que había afectado el archivo windows/system32/user32.dll, el cual el antivirus que tenía instalado (AVG) no ha conseguido subsanar. Dudo de si la infección ha ocurrido hoy o tal vez con anterioridad.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;Por suerte, suelo mantener al día los backups del trabajo realizado. &lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1493122307318356974-7908638208159336958?l=blogpfc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blogpfc.blogspot.com/feeds/7908638208159336958/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1493122307318356974&amp;postID=7908638208159336958' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1493122307318356974/posts/default/7908638208159336958'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1493122307318356974/posts/default/7908638208159336958'/><link rel='alternate' type='text/html' href='http://blogpfc.blogspot.com/2007/11/imprevistos-desde-cero.html' title='Imprevistos (Desde cero...)'/><author><name>J</name><uri>http://www.blogger.com/profile/02086256566248667825</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1493122307318356974.post-8739423993502010572</id><published>2007-11-13T00:33:00.000+01:00</published><updated>2007-11-13T00:54:45.446+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='XML'/><category scheme='http://www.blogger.com/atom/ns#' term='Naruto'/><category scheme='http://www.blogger.com/atom/ns#' term='Timeline'/><title type='text'>TortoiseSVN</title><content type='html'>&lt;p class="MsoNormal"&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:verdana;"&gt;Para descargar la &lt;a href="http://es.wikipedia.org/wiki/API_%28inform%C3%A1tica%29"&gt;API&lt;/a&gt; del &lt;a href="http://simile.mit.edu/wiki/Timeline"&gt;Timeline&lt;/a&gt; he utilizado el programa &lt;a href="http://es.wikipedia.org/wiki/TortoiseSVN"&gt;TortoiseSVN&lt;/a&gt;, exactamente el archivo:&lt;br /&gt;“TortoiseSVN-1.4.5.10425-win32-svn-1.4.5.msi”&lt;br /&gt;que se puede encontrar la &lt;a href="http://tortoisesvn.tigris.org/"&gt;página oficial&lt;/a&gt;. &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:verdana;"&gt;&lt;a href="http://es.wikipedia.org/wiki/TortoiseSVN"&gt;TortoiseSVN&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:verdana;"&gt; es un programa cliente &lt;a href="http://es.wikipedia.org/wiki/Subversion"&gt;SVN&lt;/a&gt; que se integra en la interfaz de Windows (windows explorer). &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-size:100%;"&gt;&lt;img src="http://tortoisesvn.net/themes/logo.png" /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:verdana;"&gt;Cambiando de tema, dentro de la carpeta de la &lt;a href="http://es.wikipedia.org/wiki/API_%28inform%C3%A1tica%29"&gt;API&lt;/a&gt; de &lt;a href="http://simile.mit.edu/wiki/Timeline"&gt;Timeline&lt;/a&gt;, existe un directorio llamado “images”, que es donde se almacena las imágenes que utiliza la &lt;a href="http://es.wikipedia.org/wiki/API_%28inform%C3%A1tica%29"&gt;API&lt;/a&gt; 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 &lt;a href="http://simile.mit.edu/wiki/Timeline"&gt;Timeline&lt;/a&gt;. Aunque existen también otras alternativas como personalizar los eventos en el archivo &lt;a href="http://es.wikipedia.org/wiki/XML"&gt;XML&lt;/a&gt;, con los campos icon, image, ... (Para más información remítase a la entrada anterior).&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style=""&gt; &lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://picasaweb.google.es/de.la.torre.javi/PFC/photo#5132102787304361122"&gt;&lt;img src="http://lh5.google.es/de.la.torre.javi/RzjkS0QRjKI/AAAAAAAAAIA/KBIQ28q_P_4/s400/loadingrocklee.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1493122307318356974-8739423993502010572?l=blogpfc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blogpfc.blogspot.com/feeds/8739423993502010572/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1493122307318356974&amp;postID=8739423993502010572' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1493122307318356974/posts/default/8739423993502010572'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1493122307318356974/posts/default/8739423993502010572'/><link rel='alternate' type='text/html' href='http://blogpfc.blogspot.com/2007/11/tortoisesvn.html' title='TortoiseSVN'/><author><name>J</name><uri>http://www.blogger.com/profile/02086256566248667825</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1493122307318356974.post-692274858520326487</id><published>2007-11-09T16:17:00.000+01:00</published><updated>2007-11-26T00:52:10.338+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Moodle'/><category scheme='http://www.blogger.com/atom/ns#' term='XML'/><category scheme='http://www.blogger.com/atom/ns#' term='Timeline'/><category scheme='http://www.blogger.com/atom/ns#' term='HTML'/><title type='text'>Formato de los Eventos y Accesibilidad</title><content type='html'>&lt;p&gt;  &lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:verdana;"&gt;Sigo programando la ardua tarea de filtrar la información del &lt;a href="http://simile.mit.edu/wiki/Timeline"&gt;Timeline&lt;/a&gt;, y llegados a este punto he pensado que estaría bien comentar el formato que he utilizado en las burbujas del &lt;a href="http://simile.mit.edu/wiki/Timeline"&gt;Timeline&lt;/a&gt;, que básicamente es el reflejo de la información almacenada en el archivo &lt;a href="http://es.wikipedia.org/wiki/XML"&gt;XML&lt;/a&gt;. He intentado mantener las misma filosofía para mostrar la información como cuando se presenta los registros en formato &lt;a href="http://es.wikipedia.org/wiki/HTML"&gt;HTML&lt;/a&gt;.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;a href="http://picasaweb.google.es/de.la.torre.javi/PFC/photo#5130994389389249650"&gt;&lt;img src="http://lh4.google.es/de.la.torre.javi/RzT0NkQRjHI/AAAAAAAAAHM/lxB82ElHr74/s400/bubble_timeline01.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:verdana;"&gt;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.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:verdana;"&gt;Dentro de la descripción está la información de la &lt;a href="http://es.wikipedia.org/wiki/Direcci%C3%B3n_IP"&gt;I.P.&lt;/a&gt; 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 &lt;a href="http://es.wikipedia.org/wiki/HTML"&gt;HTML&lt;/a&gt;.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:verdana;"&gt;&lt;br /&gt;&lt;a href="http://picasaweb.google.es/de.la.torre.javi/PFC/photo#5130995836793228434"&gt;&lt;img src="http://lh5.google.es/de.la.torre.javi/RzT1h0QRjJI/AAAAAAAAAHg/T2S8arPUVUc/s400/bubble_timeline02.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:verdana;"&gt;Para completar la disertación dejaré un pequeño ejemplo de como debe de ser el archivo &lt;a href="http://es.wikipedia.org/wiki/XML"&gt;XML&lt;/a&gt; (extraído de la &lt;a href="http://simile.mit.edu/wiki/How_to_Create_Event_Source_Files"&gt;página oficial&lt;/a&gt;):&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:verdana;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;p&gt;The XML format used for Timeline goes somewhat like this:&lt;br /&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt; Everything is contained by a &amp;lt;data /&amp;gt; element&lt;br /&gt;&lt;ul&gt;&lt;li&gt; The &amp;lt;data /&amp;gt; element can have the following attributes:&lt;br /&gt;&lt;ul&gt;&lt;li&gt; &lt;span style="color: rgb(51, 255, 51);"&gt;wiki-url&lt;/span&gt; -- 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&lt;br /&gt;&lt;/li&gt;&lt;li&gt; &lt;span style="color: rgb(51, 255, 51);"&gt;wiki-section&lt;/span&gt; -- MediaWiki wiki section&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt; Inside &amp;lt;data&amp;gt;events&amp;lt;/data&amp;gt; go a number of &amp;lt;event&amp;gt;content&amp;lt;/event&amp;gt; elements, the order of these is unimportant.&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt; Each &amp;lt;event /&amp;gt; element can have the following attributes:&lt;br /&gt;&lt;ul&gt;&lt;li&gt; &lt;span style="color: rgb(51, 255, 51);"&gt;start&lt;/span&gt; -- in full date format (e.g. "May 20 1961 00:00:00 GMT-0600"")&lt;br /&gt;&lt;/li&gt;&lt;li&gt; &lt;span style="color: rgb(51, 255, 51);"&gt;latestStart&lt;/span&gt; -- for imprecise beginnings...&lt;br /&gt;&lt;/li&gt;&lt;li&gt; &lt;span style="color: rgb(51, 255, 51);"&gt;earliestEnd&lt;/span&gt; -- for imprecise ends...&lt;br /&gt;&lt;/li&gt;&lt;li&gt; &lt;span style="color: rgb(51, 255, 51);"&gt;end&lt;/span&gt; -- same date format as start&lt;br /&gt;&lt;/li&gt;&lt;li&gt; &lt;span style="color: rgb(51, 255, 51);"&gt;isDuration&lt;/span&gt; -- either "true" or "false", if false the item will be drawn as a dot with a pale bar drawn behind it&lt;br /&gt;&lt;/li&gt;&lt;li&gt; &lt;span style="color: rgb(51, 255, 51);"&gt;title&lt;/span&gt; -- text title that goes next to the bar in the timeline&lt;br /&gt;&lt;/li&gt;&lt;li&gt; &lt;span style="color: rgb(51, 255, 51);"&gt;description&lt;span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; -- more text for the bubble&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt; &lt;span style="color: rgb(51, 255, 51);"&gt;image&lt;/span&gt; -- url to an image that will be displayed in the bubble&lt;br /&gt;&lt;/li&gt;&lt;li&gt; &lt;span style="color: rgb(51, 255, 51);"&gt;link&lt;/span&gt; -- the bubble's title text will become a hyper-link to this address.&lt;br /&gt;&lt;/li&gt;&lt;li&gt; &lt;span style="color: rgb(51, 255, 51);"&gt;icon&lt;/span&gt; -- this image will appear next to the title text in the bubble.&lt;br /&gt;&lt;/li&gt;&lt;li&gt; &lt;span style="color: rgb(51, 255, 51);"&gt;color&lt;/span&gt; -- color of the bar to display in the timeline&lt;br /&gt;&lt;/li&gt;&lt;li&gt; &lt;span style="color: rgb(51, 255, 51);"&gt;textColor&lt;/span&gt; -- color of the text to display next to the bars&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt; The "content" part is what will be displayed inside the bubble that pops up when the event is clicked&lt;br /&gt;&lt;ul&gt;&lt;li&gt; Should be escaped/formated HTML.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;pre&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:verdana;"&gt;A example:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&amp;lt;data &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;  wiki-url="http://simile.mit.edu/shelf/" &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;  wiki-section="Simile JFK Timeline"&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;    &amp;lt;event &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;       start="Sat May 20 1961 00:00:00 GMT-0600" &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;       title="'Bay of Pigs' Invasion"&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;    &amp;lt;/event&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;    &amp;lt;event &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;       start="Wed May 01 1963 00:00:00 GMT-0600" &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;       end="Sat Jun 01 1963 00:00:00 GMT-0600" &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;       isDuration="true" &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;       title="Oswald moves to New Orleans"&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;         Oswald moves to New Orleans, and finds employment at the William&lt;br /&gt; &amp;lt;!-- This is "content" --&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;         B. Riley Coffee Company. &amp;lt;i&amp;gt;ref. Treachery in Dallas, p 320&amp;lt;/i&amp;gt;&lt;br /&gt; &amp;lt;!-- This is "content" --&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;    &amp;lt;/event&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;    &amp;lt;event&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;      ...&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;    &amp;lt;/event&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&amp;lt;/data&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1493122307318356974-692274858520326487?l=blogpfc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blogpfc.blogspot.com/feeds/692274858520326487/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1493122307318356974&amp;postID=692274858520326487' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1493122307318356974/posts/default/692274858520326487'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1493122307318356974/posts/default/692274858520326487'/><link rel='alternate' type='text/html' href='http://blogpfc.blogspot.com/2007/11/formato-de-los-eventos-y-accesibilidad.html' title='Formato de los Eventos y Accesibilidad'/><author><name>J</name><uri>http://www.blogger.com/profile/02086256566248667825</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1493122307318356974.post-3770448846493029835</id><published>2007-11-04T23:22:00.001+01:00</published><updated>2007-11-05T01:16:41.909+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='Ajax'/><category scheme='http://www.blogger.com/atom/ns#' term='XML'/><category scheme='http://www.blogger.com/atom/ns#' term='Timeline'/><title type='text'>Filtros &amp; Eventos</title><content type='html'>&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p  style="text-align: justify;font-family:verdana;" class="MsoNormal"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="" lang="ES-TRAD"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;&lt;span style=";font-family:verdana;font-size:100%;"  &gt;Para filtrar los eventos podemos utilizar nuestras propias funciones. Dichas funciones pueden utilizan el potencial que nos brindan las &lt;A href="http://es.wikipedia.org/wiki/Expresi%C3%B3n_regular"&gt;expresiones regulares&lt;/A&gt; de &lt;A href="http://es.wikipedia.org/wiki/Javascript"&gt;Javascript&lt;/A&gt;. Un ejemplo de definición de una función de filtraje sería:&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span style="color: rgb(0, 204, 204); font-weight: bold;font-family:courier new;" &gt;var regex = new RegExp(chain &lt;span style="color: rgb(51, 255, 51);"&gt;/* Patrón o cadena a filtrar */&lt;/span&gt;, "i");&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 204, 204); font-weight: bold;font-family:courier new;" &gt;    filterMatcher = function(evt) {&lt;br /&gt;&lt;br /&gt;return regex.test(evt.getDescription());  &lt;br /&gt;&lt;br /&gt;};&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;span style=";font-family:verdana;font-size:100%;"  &gt;Se define una &lt;A href="http://es.wikipedia.org/wiki/Expresi%C3%B3n_regular"&gt;expresión regular&lt;/A&gt; con la cadena o patrón a buscar. En este caso, se buscará el &lt;A href="http://es.wikipedia.org/wiki/String"&gt;string&lt;/A&gt; dentro de la descripción de cada evento (el texto que hay entre las etiquetas de &amp;lt;event&amp;gt;&amp;lt;/event&amp;gt;), 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 &lt;A href="http://simile.mit.edu/wiki/Timeline"&gt;Timeline&lt;/A&gt; que queremos filtrar, y por último repintamos el &lt;A href="http://simile.mit.edu/wiki/Timeline"&gt;Timeline&lt;/A&gt;:&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;span style="color: rgb(0, 204, 204); font-weight: bold;font-family:courier new;" &gt;for (var i = 0; bandIndices.length; i++)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 204, 204); font-weight: bold;font-family:courier new;" &gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 204, 204); font-weight: bold;font-family:courier new;" &gt;var bandIndex = bandIndices[i];&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 204, 204); font-weight: bold;font-family:courier new;" &gt; &lt;/span&gt;&lt;span style="color: rgb(0, 204, 204); font-weight: bold;font-family:courier new;" &gt;timeline.getBand(bandIndex).getEventPainter().&lt;br /&gt;setFilterMatcher(filterMatcher); &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 204, 204); font-weight: bold;font-family:courier new;" &gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 204, 204); font-weight: bold;font-family:courier new;" &gt;timeline.paint();&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;span style=";font-family:verdana;font-size:100%;"  &gt;Para poder trabajar con filtros es necesario saber algunos &lt;A href="http://simile.mit.edu/wiki/Event_Sources"&gt;métodos de la clase Event&lt;/A&gt;, estos métodos nos sirven para acceder a la información (los eventos) ya cargada con el método &lt;A href="http://simile.mit.edu/wiki/Timeline_Class#loadXML_.28_url.2C_f_.29"&gt;loadXML&lt;/A&gt; del objeto &lt;A href="http://simile.mit.edu/wiki/Timeline"&gt;Timeline&lt;/A&gt;:&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;Straight from the code:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 204, 204); font-weight: bold;font-family:courier new;" &gt;Timeline.DefaultEventSource.Event.prototype&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0); font-weight: bold;font-family:courier new;" &gt;Event Methods:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(51, 255, 51);font-family:courier new;" &gt;getID&lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;:          function() { return this._id; },&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(51, 255, 51);font-family:courier new;" &gt;isInstant&lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;:      function() { return this._instant; },&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;&lt;span style="color: rgb(51, 255, 51);"&gt;isImprecise&lt;/span&gt;:    function() { return this._start != this._latestStart&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;      || this._end != this._earliestEnd; },&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;&lt;span style="color: rgb(51, 255, 51);"&gt;getStart&lt;/span&gt;:       function() { return this._start; },&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;&lt;span style="color: rgb(51, 255, 51);"&gt;getEnd&lt;/span&gt;:         function() { return this._end; },&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;&lt;span style="color: rgb(51, 255, 51);"&gt;getLatestStart&lt;/span&gt;: function() { return this._latestStart; },&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;&lt;span style="color: rgb(51, 255, 51);"&gt;getEarliestEnd&lt;/span&gt;: function() { return this._earliestEnd; },&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;&lt;span style="color: rgb(51, 255, 51);"&gt;getText&lt;/span&gt;:        function() { return this._text; },&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;&lt;span style="color: rgb(51, 255, 51);"&gt;getDescription&lt;/span&gt;: function() { return this._description; },&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;&lt;span style="color: rgb(51, 255, 51);"&gt;getImage&lt;/span&gt;:       function() { return this._image; },&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;&lt;span style="color: rgb(51, 255, 51);"&gt;getLink&lt;/span&gt;:        function() { return this._link; },&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;&lt;span style="color: rgb(51, 255, 51);"&gt;getIcon&lt;/span&gt;:        function() { return this._icon; },&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;&lt;span style="color: rgb(51, 255, 51);"&gt;getColor&lt;/span&gt;:       function() { return this._color; },&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;&lt;span style="color: rgb(51, 255, 51);"&gt;getTextColor&lt;/span&gt;:   function() { return this._textColor; },&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;&lt;span style="color: rgb(51, 255, 51);"&gt;getProperty&lt;/span&gt;: ...&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;&lt;span style="color: rgb(51, 255, 51);"&gt;getWikiURL&lt;/span&gt;:     function() { return this._wikiURL; },&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;&lt;span style="color: rgb(51, 255, 51);"&gt;getWikiSection&lt;/span&gt;: function() { return this._wikiSection; },&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;&lt;span style="color: rgb(51, 255, 51);"&gt;setWikiInfo&lt;/span&gt;: function(wikiURL, wikiSection) { ... }&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family: verdana;"&gt;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.    &lt;br /&gt;&lt;br /&gt;“No cambié de canal, mañana más”&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1493122307318356974-3770448846493029835?l=blogpfc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blogpfc.blogspot.com/feeds/3770448846493029835/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1493122307318356974&amp;postID=3770448846493029835' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1493122307318356974/posts/default/3770448846493029835'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1493122307318356974/posts/default/3770448846493029835'/><link rel='alternate' type='text/html' href='http://blogpfc.blogspot.com/2007/11/filtros-eventos.html' title='Filtros &amp; Eventos'/><author><name>J</name><uri>http://www.blogger.com/profile/02086256566248667825</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1493122307318356974.post-4065080369714923372</id><published>2007-11-01T17:44:00.000+01:00</published><updated>2007-11-01T18:32:05.934+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><category scheme='http://www.blogger.com/atom/ns#' term='Moodle'/><category scheme='http://www.blogger.com/atom/ns#' term='XML'/><category scheme='http://www.blogger.com/atom/ns#' term='Timeline'/><title type='text'>getxml.php v2.0</title><content type='html'>&lt;p class="MsoNormal"&gt;&lt;span style="" lang="ES-TRAD"&gt;&lt;!--[if !supportEmptyParas]--&gt;&lt;/span&gt;&lt;/p&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-weight: bold;font-family:verdana;" &gt;He corregido un pequeño fallo dentro de dicho archivo.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:verdana;"&gt;En resumen, el archivo getxml.php crea a partir de la base de datos de &lt;a href="http://es.wikipedia.org/wiki/Moodle"&gt;Moodle&lt;/a&gt; el archivo &lt;a href="http://es.wikipedia.org/wiki/XML"&gt;xml&lt;/a&gt; con la información de los eventos solicitados a través de la página &lt;span style="font-weight: bold;"&gt;/moodle/course/report/log/index.php&lt;/span&gt;. En dicho archivo se va concatenando la información de los eventos en una variable de tipo &lt;a href="http://es.wikipedia.org/wiki/String"&gt;string&lt;/a&gt; (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 K&lt;a href="http://es.wikipedia.org/wiki/Bytes"&gt;Bytes&lt;/a&gt;) se producía este error:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-size:100%;"&gt;&lt;a href="http://picasaweb.google.es/de.la.torre.javi/PFC/photo#5127914478002958002"&gt;&lt;img src="http://lh5.google.es/de.la.torre.javi/RyoDDIPy7rI/AAAAAAAAAGs/ELfglBI0ZUU/s800/Error_getxml.jpg" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:verdana;"&gt; Como no sabía si existían limitaciones de variables con &lt;a href="http://moodle.org/"&gt;Moodle&lt;/a&gt; o en &lt;a href="http://es.wikipedia.org/wiki/Php"&gt;PHP&lt;/a&gt;, opté por ir imprimiendo en cada iteración un evento para solucionar el problema, y funcionó. El Guru &lt;a href="http://elpigui-i-lawiki.blogspot.com/"&gt;Pigui&lt;/a&gt;, me dijo que seguramente existe una limitación de tamaño a nivel de programación en &lt;a href="http://es.wikipedia.org/wiki/Php"&gt;PHP&lt;/a&gt; o en el servidor. &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1493122307318356974-4065080369714923372?l=blogpfc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blogpfc.blogspot.com/feeds/4065080369714923372/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1493122307318356974&amp;postID=4065080369714923372' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1493122307318356974/posts/default/4065080369714923372'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1493122307318356974/posts/default/4065080369714923372'/><link rel='alternate' type='text/html' href='http://blogpfc.blogspot.com/2007/11/getxmlphp-v20.html' title='getxml.php v2.0'/><author><name>J</name><uri>http://www.blogger.com/profile/02086256566248667825</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1493122307318356974.post-4075196045901831725</id><published>2007-10-28T20:16:00.000+01:00</published><updated>2007-10-29T01:08:36.419+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='Moodle'/><category scheme='http://www.blogger.com/atom/ns#' term='XML'/><category scheme='http://www.blogger.com/atom/ns#' term='Timeline'/><category scheme='http://www.blogger.com/atom/ns#' term='HTML'/><title type='text'>Change the course</title><content type='html'>&lt;div style="text-align: left;"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:verdana;"&gt;Jordi, me comentó que para evitar la carga completa de la página de &lt;span style="font-weight: bold;"&gt;&lt;a href="http://docs.moodle.org/es/course/report/log/index"&gt;Informes-&gt;Registros&lt;/a&gt;&lt;/span&gt;, la página de &lt;a href="http://es.wikipedia.org/wiki/Moodle"&gt;Moodle&lt;/a&gt; en la que estoy trabajando, exactamente el fichero &lt;span style="font-weight: bold;"&gt;moodle/course/report/log/index.php&lt;/span&gt;, modificara únicamente el &lt;A href="http://simile.mit.edu/timeline/"&gt;Timeline&lt;/A&gt; para agilizar el servidor y mejorar la eficiencia.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:verdana;"&gt;Actualmente, estoy trabajando en esta tarea, que consiste en que al cambiar los selectores no se tenga que volver a pedir el documento &lt;a href="http://es.wikipedia.org/wiki/Html"&gt;HTML&lt;/a&gt; entero al servidor, sino que solo se actualice el &lt;A href="http://simile.mit.edu/timeline/"&gt;Timeline&lt;/A&gt;. Para hacerlo utilizaré filtros, es decir, modificar el &lt;A href="http://simile.mit.edu/timeline/"&gt;Timeline&lt;/A&gt; 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 &lt;A href="http://simile.mit.edu/timeline/"&gt;Timeline&lt;/A&gt;). Por eso he pensado que sería mejor volver a cargar el archivo &lt;a href="http://simile.mit.edu/wiki/How_to_Create_Event_Source_Files"&gt;XML&lt;/a&gt; entero (donde está la información necesaria para dibujar los eventos), una solución sencilla y en la que estoy trabajando actualmente.&lt;br /&gt;&lt;br /&gt;De esta forma dependiendo del estado estableceré dos posibles acciones:&lt;br /&gt;&lt;ul&gt;&lt;li&gt; Si falta información &lt;ul&gt;&lt;li&gt; Recargo los eventos del &lt;a href="http://simile.mit.edu/wiki/How_to_Create_Event_Source_Files"&gt;XML&lt;/a&gt;(getxml.php)&lt;/li&gt;&lt;li&gt; Filtrar dependiendo del estado anterior&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt; Filtro los eventos liberando el servidor más trabajo&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:verdana;"&gt;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 &lt;A href="http://simile.mit.edu/timeline/"&gt;Timeline&lt;/A&gt; sin tener que recargar la página pero si pidiendo de nuevo la información de los eventos. El visitar la &lt;a href="http://simile.mit.edu/wiki/Timeline"&gt;Wiki de Timelines&lt;/a&gt; fue decisivo.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:verdana;" &gt;... to be continued&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1493122307318356974-4075196045901831725?l=blogpfc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blogpfc.blogspot.com/feeds/4075196045901831725/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1493122307318356974&amp;postID=4075196045901831725' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1493122307318356974/posts/default/4075196045901831725'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1493122307318356974/posts/default/4075196045901831725'/><link rel='alternate' type='text/html' href='http://blogpfc.blogspot.com/2007/10/change-course-borrador.html' title='Change the course'/><author><name>J</name><uri>http://www.blogger.com/profile/02086256566248667825</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1493122307318356974.post-62855419660530031</id><published>2007-10-25T23:59:00.001+02:00</published><updated>2007-10-28T11:24:37.288+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Timeline'/><title type='text'>Reading</title><content type='html'>&lt;h2&gt;&lt;span style="font-weight: normal;font-size:14;" lang="ES-TRAD" &gt;&lt;/span&gt;&lt;/h2&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:verdana;"&gt;He estado ojeando la &lt;a href="http://simile.mit.edu/wiki/Timeline"&gt;Wiki&lt;/a&gt; de Timelines de SIMILE y especialmente la sección dedicada a &lt;a href="http://simile.mit.edu/wiki/Timeline#How-Tos"&gt;How-Tos&lt;/a&gt;, donde he dedicado una especial atención al apartado de "&lt;a href="http://simile.mit.edu/wiki/Timeline/Load_Events_Dynamically"&gt;How to Load Events Dynamically&lt;/a&gt;".&lt;br /&gt;&lt;br /&gt;La sección &lt;a href="http://simile.mit.edu/wiki/Timeline#How-Tos"&gt;How-Tos&lt;/a&gt; recoge algunos de los problemas y consultas de los usuarios, recopilándolos por temática. Además, hay enlaces directos al &lt;a href="http://simile.mit.edu/mail.html"&gt;Mailing List&lt;/a&gt;(foros con información de todos los proyectos de &lt;a href="http://simile.mit.edu/"&gt;SIMILE&lt;/a&gt;) con las preguntas relacionadas.&lt;br /&gt;&lt;br /&gt;Si necesitas documentación sobre &lt;span style="font-weight:bold;"&gt;Timelines&lt;/span&gt;, te recomiendo estimado lector que entres primeramente en la sección &lt;a href="http://simile.mit.edu/wiki/Timeline"&gt;Wiki&lt;/a&gt; , es más completa que la sección de documentación estática. Incluso en la misma página principal de &lt;a href="http://simile.mit.edu/timeline/"&gt;SIMILE Timeline&lt;/a&gt; se dice que se ha transferido la información a la wiki para facilitar el mantenimiento. &lt;br /&gt;&lt;br /&gt;¡¡¡ Escoge la forma de hacerlo &lt;span style="font-weight: bold;color:green;" &gt;wiki&lt;/span&gt; !!!&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1493122307318356974-62855419660530031?l=blogpfc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blogpfc.blogspot.com/feeds/62855419660530031/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1493122307318356974&amp;postID=62855419660530031' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1493122307318356974/posts/default/62855419660530031'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1493122307318356974/posts/default/62855419660530031'/><link rel='alternate' type='text/html' href='http://blogpfc.blogspot.com/2007/10/reading.html' title='Reading'/><author><name>J</name><uri>http://www.blogger.com/profile/02086256566248667825</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1493122307318356974.post-7969644729261184908</id><published>2007-10-22T23:08:00.000+02:00</published><updated>2007-10-28T11:30:04.580+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='JSON'/><category scheme='http://www.blogger.com/atom/ns#' term='Ajax'/><category scheme='http://www.blogger.com/atom/ns#' term='Timeline'/><title type='text'>La notación JSON</title><content type='html'>&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:verdana;"&gt;Leyendo &lt;a href="http://www.librosweb.es/ajax/index.html"&gt;Introducción a AJAX&lt;/a&gt;, he encontrado que la notación utilizada en la mayoría de scripts de &lt;a href="http://simile.mit.edu/timeline/"&gt;Timeline&lt;/a&gt; y en su definición, es la &lt;a href="http://es.wikipedia.org/wiki/JSON"&gt;JSON&lt;/a&gt;, que es básicamente una forma estructurada de componer los objetos y arrays.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Según el libro: “&lt;span style="font-style: italic;"&gt;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&lt;/span&gt;”.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Un ejemplo de la notación JSON para crear objetos sería:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;span style="color: rgb(116, 182, 0); font-weight: bold;font-family:verdana;" &gt;var objeto = {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(116, 182, 0); font-weight: bold;font-family:verdana;" &gt;"propiedad1": valor_simple_1,&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(116, 182, 0); font-weight: bold;font-family:verdana;" &gt;"propiedad2": valor_simple_2,&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(116, 182, 0); font-weight: bold;font-family:verdana;" &gt;"propiedad3": [array1_valor1, array1_valor2],&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(116, 182, 0); font-weight: bold;font-family:verdana;" &gt;"propiedad4": { "propiedad anidada": valor },&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(116, 182, 0); font-weight: bold;font-family:verdana;" &gt;"metodo1": nombre_funcion_externa,&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(116, 182, 0); font-weight: bold;font-family:verdana;" &gt;"metodo2": function() { ... },&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(116, 182, 0); font-weight: bold;font-family:verdana;" &gt;"metodo3": function() { ... },&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(116, 182, 0); font-weight: bold;font-family:verdana;" &gt;"metodo4": function() { ... }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(116, 182, 0); font-weight: bold;font-family:verdana;" &gt;};&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;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. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Para ilustrarlo mejor adjunto un ejemplo de la propiedad prototype.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:verdana;" &gt;Clase original&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(116, 182, 0); font-weight: bold;font-family:verdana;" &gt;function Factura(idFactura, idCliente) {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(116, 182, 0); font-weight: bold;font-family:verdana;" &gt;this.idFactura = idFactura;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(116, 182, 0); font-weight: bold;font-family:verdana;" &gt;this.idCliente = idCliente;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(116, 182, 0); font-weight: bold;font-family:verdana;" &gt;this.muestraCliente = function() {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(116, 182, 0); font-weight: bold;font-family:verdana;" &gt;alert(this.idCliente);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(116, 182, 0); font-weight: bold;font-family:verdana;" &gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(116, 182, 0); font-weight: bold;font-family:verdana;" &gt;this.muestraId = function() {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(116, 182, 0); font-weight: bold;font-family:verdana;" &gt;alert(this.idFactura);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(116, 182, 0); font-weight: bold;font-family:verdana;" &gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(116, 182, 0); font-weight: bold;font-family:verdana;" &gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:verdana;" &gt;Clase que utiliza su prototype&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(116, 182, 0); font-weight: bold;font-family:verdana;" &gt;function Factura(idFactura, idCliente) {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(116, 182, 0); font-weight: bold;font-family:verdana;" &gt;this.idFactura = idFactura;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(116, 182, 0); font-weight: bold;font-family:verdana;" &gt;this.idCliente = idCliente;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(116, 182, 0); font-weight: bold;font-family:verdana;" &gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(116, 182, 0); font-weight: bold;font-family:verdana;" &gt;Factura.prototype.muestraCliente = function() {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(116, 182, 0); font-weight: bold;font-family:verdana;" &gt;alert(this.idCliente);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(116, 182, 0); font-weight: bold;font-family:verdana;" &gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(116, 182, 0); font-weight: bold;font-family:verdana;" &gt;Factura.prototype.muestraId = function() {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(116, 182, 0); font-weight: bold;font-family:verdana;" &gt;alert(this.idFactura);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(116, 182, 0); font-weight: bold;font-family:verdana;" &gt;}&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1493122307318356974-7969644729261184908?l=blogpfc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blogpfc.blogspot.com/feeds/7969644729261184908/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1493122307318356974&amp;postID=7969644729261184908' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1493122307318356974/posts/default/7969644729261184908'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1493122307318356974/posts/default/7969644729261184908'/><link rel='alternate' type='text/html' href='http://blogpfc.blogspot.com/2007/10/la-notacin-json.html' title='La notación JSON'/><author><name>J</name><uri>http://www.blogger.com/profile/02086256566248667825</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1493122307318356974.post-1163366971824985659</id><published>2007-10-22T13:11:00.001+02:00</published><updated>2007-11-10T01:16:40.301+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='DOM'/><category scheme='http://www.blogger.com/atom/ns#' term='Ajax'/><title type='text'>AJAX</title><content type='html'>&lt;p class="MsoNormal"&gt;&lt;/p&gt;&lt;span style=";font-family:verdana;font-size:100%;"  &gt;Tras leer algunos apartados de Introducción a &lt;a href="http://es.wikipedia.org/wiki/Javascript"&gt;Javascript&lt;/a&gt;, que me han servido para solucionar algunos problemas que tenía con los Timelines, he comenzado a leer otro libro que también me puede ser de gran ayuda, se llama &lt;a href="http://www.librosweb.es/ajax/index.html"&gt;Introducción a AJAX&lt;/a&gt;, del mismo autor que &lt;a href="http://www.librosweb.es/javascript/index.html"&gt;Introducción al Javascript&lt;/a&gt; (Javier Eguíluz Pérez) y de la misma &lt;a href="http://www.librosweb.es/"&gt;página web&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Este libro trata con más profundidad el tema &lt;a href="http://es.wikipedia.org/wiki/DOM"&gt;DOM&lt;/a&gt; y &lt;a href="http://es.wikipedia.org/wiki/Javascript"&gt;Javascript&lt;/a&gt;, y por eso creo que me puede servir de cara a trabajar con Timelines.&lt;/span&gt;&lt;span style=""&gt;&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;a href="http://es.wikipedia.org/wiki/AJAX"&gt;&lt;img src="http://lh6.google.es/de.la.torre.javi/RxyHlHMh9gI/AAAAAAAAAGM/f0Ky8EUKVQc/s288/ajax.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1493122307318356974-1163366971824985659?l=blogpfc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blogpfc.blogspot.com/feeds/1163366971824985659/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1493122307318356974&amp;postID=1163366971824985659' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1493122307318356974/posts/default/1163366971824985659'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1493122307318356974/posts/default/1163366971824985659'/><link rel='alternate' type='text/html' href='http://blogpfc.blogspot.com/2007/10/ajax.html' title='AJAX'/><author><name>J</name><uri>http://www.blogger.com/profile/02086256566248667825</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1493122307318356974.post-4315862244945078757</id><published>2007-10-18T22:54:00.000+02:00</published><updated>2007-11-10T01:19:44.378+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='Mozilla'/><category scheme='http://www.blogger.com/atom/ns#' term='DOM'/><category scheme='http://www.blogger.com/atom/ns#' term='Timeline'/><title type='text'>DOM Inspector</title><content type='html'>&lt;span style=";font-family:verdana;font-size:100%;"  &gt;Utilizando el &lt;a href="http://es.wikipedia.org/wiki/Inspector_DOM"&gt;DOM Inspector&lt;/a&gt; de la pestaña de herramientas de &lt;a href="http://es.wikipedia.org/wiki/Mozilla_Firefox"&gt;Mozilla&lt;/a&gt;, 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.&lt;br /&gt;&lt;br /&gt;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:&lt;br /&gt;&lt;br /&gt;&lt;hr /&gt;window.onload=onLoad;&lt;br /&gt;window.onresize=onResize;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1493122307318356974-4315862244945078757?l=blogpfc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blogpfc.blogspot.com/feeds/4315862244945078757/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1493122307318356974&amp;postID=4315862244945078757' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1493122307318356974/posts/default/4315862244945078757'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1493122307318356974/posts/default/4315862244945078757'/><link rel='alternate' type='text/html' href='http://blogpfc.blogspot.com/2007/10/utilizando-el-dom-inspector-de-la.html' title='DOM Inspector'/><author><name>J</name><uri>http://www.blogger.com/profile/02086256566248667825</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1493122307318356974.post-7374854748655123222</id><published>2007-10-16T23:46:00.000+02:00</published><updated>2007-11-10T01:22:49.048+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='DOM'/><category scheme='http://www.blogger.com/atom/ns#' term='Timeline'/><title type='text'>El menú del día</title><content type='html'>&lt;p class="MsoNormal"&gt;&lt;/p&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:verdana;"&gt;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.&lt;br /&gt;&lt;br /&gt;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 &lt;a href="http://es.wikipedia.org/wiki/Document_Object_Model"&gt;Document Object Model, DOM&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;En la búsqueda de otro manual más reciente, he encontrado un libro con licencia Creative Commons llamado &lt;a href="http://www.librosweb.es/javascript/"&gt;“Introducción al JavaScript” de Javier Eguíluz Pérez&lt;/a&gt;. 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.&lt;br /&gt;&lt;br /&gt;See you.&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:&amp;quot;;font-size:12;"  &gt;&lt;/span&gt;&lt;br /&gt;&lt;div id="div_central"&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="http://lh5.google.com/de.la.torre.javi/RxU8dnMh9eI/AAAAAAAAAFg/IGs9lW7E9cA/s288/menu_timeline01.jpg" /&gt;&lt;img src="http://lh5.google.com/de.la.torre.javi/RxU8dnMh9fI/AAAAAAAAAFo/61sVnBofeIw/s288/menu_timeline02.jpg" /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1493122307318356974-7374854748655123222?l=blogpfc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blogpfc.blogspot.com/feeds/7374854748655123222/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1493122307318356974&amp;postID=7374854748655123222' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1493122307318356974/posts/default/7374854748655123222'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1493122307318356974/posts/default/7374854748655123222'/><link rel='alternate' type='text/html' href='http://blogpfc.blogspot.com/2007/10/el-men-del-da.html' title='El menú del día'/><author><name>J</name><uri>http://www.blogger.com/profile/02086256566248667825</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1493122307318356974.post-5659712428547668927</id><published>2007-10-15T00:08:00.000+02:00</published><updated>2007-11-10T01:22:03.213+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Moodle'/><category scheme='http://www.blogger.com/atom/ns#' term='XML'/><category scheme='http://www.blogger.com/atom/ns#' term='Timeline'/><title type='text'>getxml.php, O.K.</title><content type='html'>&lt;p class="MsoNormal"&gt;&lt;/p&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:verdana;"&gt;He acabado de solucionar los problemas que había descrito anteriormente.&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:verdana;"&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;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.&lt;/span&gt;&lt;/span&gt;&lt;span style=""&gt; &lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1493122307318356974-5659712428547668927?l=blogpfc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blogpfc.blogspot.com/feeds/5659712428547668927/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1493122307318356974&amp;postID=5659712428547668927' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1493122307318356974/posts/default/5659712428547668927'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1493122307318356974/posts/default/5659712428547668927'/><link rel='alternate' type='text/html' href='http://blogpfc.blogspot.com/2007/10/getxmlphp-ok.html' title='getxml.php, O.K.'/><author><name>J</name><uri>http://www.blogger.com/profile/02086256566248667825</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1493122307318356974.post-7639058013345502630</id><published>2007-10-14T19:34:00.000+02:00</published><updated>2007-11-10T01:20:39.407+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><title type='text'>Con más técnica!!!</title><content type='html'>&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:verdana;"&gt;Entre ayer y hoy, he acabado de leer el documento del Dfwikiteam de “Tècniques de programació especifiques per PHP” de Ferran Recio Calderó. Ha sido un lectura muy amena de un manual de programación, su tono informal y los ejemplos facilitan considerablemente la compresión a lector.&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1493122307318356974-7639058013345502630?l=blogpfc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blogpfc.blogspot.com/feeds/7639058013345502630/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1493122307318356974&amp;postID=7639058013345502630' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1493122307318356974/posts/default/7639058013345502630'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1493122307318356974/posts/default/7639058013345502630'/><link rel='alternate' type='text/html' href='http://blogpfc.blogspot.com/2007/10/con-ms-tcnica.html' title='Con más técnica!!!'/><author><name>J</name><uri>http://www.blogger.com/profile/02086256566248667825</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1493122307318356974.post-8527118321623575284</id><published>2007-10-11T23:42:00.000+02:00</published><updated>2007-11-10T01:21:38.164+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Moodle'/><category scheme='http://www.blogger.com/atom/ns#' term='XML'/><category scheme='http://www.blogger.com/atom/ns#' term='Timeline'/><title type='text'>Reordenando</title><content type='html'>&lt;p class="MsoNormal"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:verdana;"&gt;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.&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:verdana;"&gt;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 &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:verdana;"&gt;&lt;a href="http://moodle.org/"&gt;Moodle&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:verdana;"&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1493122307318356974-8527118321623575284?l=blogpfc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blogpfc.blogspot.com/feeds/8527118321623575284/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1493122307318356974&amp;postID=8527118321623575284' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1493122307318356974/posts/default/8527118321623575284'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1493122307318356974/posts/default/8527118321623575284'/><link rel='alternate' type='text/html' href='http://blogpfc.blogspot.com/2007/10/reordenando.html' title='Reordenando'/><author><name>J</name><uri>http://www.blogger.com/profile/02086256566248667825</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1493122307318356974.post-3587602240820046433</id><published>2007-10-09T23:30:00.001+02:00</published><updated>2007-11-10T01:18:22.202+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Moodle'/><category scheme='http://www.blogger.com/atom/ns#' term='XML'/><category scheme='http://www.blogger.com/atom/ns#' term='Timeline'/><title type='text'>"Revisando código"</title><content type='html'>&lt;span style="" lang="ES-TRAD"&gt;&lt;!--[if !supportEmptyParas]--&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:verdana;"&gt;Tras la reunión del pasado lunes, estoy revisando el código ya hecho de timelines por los compañeros del DFWikiteam.&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:verdana;"&gt;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.&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:verdana;"&gt;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 &lt;a href="http://simile.mit.edu/timeline/"&gt;página oficial&lt;/a&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="text-align: left;" class="MsoNormal"&gt;&lt;span style="font-size:100%;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://simile.mit.edu/timeline/images/sundial.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 146px; height: 130px;" src="http://simile.mit.edu/timeline/images/sundial.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1493122307318356974-3587602240820046433?l=blogpfc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blogpfc.blogspot.com/feeds/3587602240820046433/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1493122307318356974&amp;postID=3587602240820046433' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1493122307318356974/posts/default/3587602240820046433'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1493122307318356974/posts/default/3587602240820046433'/><link rel='alternate' type='text/html' href='http://blogpfc.blogspot.com/2007/10/revisando-cdigo.html' title='&quot;Revisando código&quot;'/><author><name>J</name><uri>http://www.blogger.com/profile/02086256566248667825</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1493122307318356974.post-7937273211765422793</id><published>2007-10-04T11:40:00.000+02:00</published><updated>2007-11-10T01:14:28.292+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='XML'/><category scheme='http://www.blogger.com/atom/ns#' term='Timeline'/><title type='text'>Identifícate</title><content type='html'>&lt;!--[if !supportEmptyParas]--&gt;&lt;!--[if !supportEmptyParas]--&gt;&lt;span style=";font-family:verdana;font-size:100%;"  &gt;Había detectado un fallo cuando se cambiaban los participante.&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;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.&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style=";font-family:verdana;font-size:12;"  &gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1493122307318356974-7937273211765422793?l=blogpfc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blogpfc.blogspot.com/feeds/7937273211765422793/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1493122307318356974&amp;postID=7937273211765422793' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1493122307318356974/posts/default/7937273211765422793'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1493122307318356974/posts/default/7937273211765422793'/><link rel='alternate' type='text/html' href='http://blogpfc.blogspot.com/2007/10/identifcate.html' title='Identifícate'/><author><name>J</name><uri>http://www.blogger.com/profile/02086256566248667825</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1493122307318356974.post-73393596539557900</id><published>2007-09-24T00:17:00.000+02:00</published><updated>2007-11-10T01:12:20.655+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Moodle'/><category scheme='http://www.blogger.com/atom/ns#' term='Timeline'/><title type='text'>Sigo anotando...</title><content type='html'>&lt;p class="MsoNormal"&gt;&lt;/p&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:verdana;"&gt;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. &lt;br /&gt;&lt;br /&gt;De la parte del Moodle, destacar que en la página de &lt;a href="http://docs.moodle.org/"&gt;Moodle Docs&lt;/a&gt; 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, &lt;a href="http://moodle.org/xref/nav.html?index.html"&gt;Cross &lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:verdana;"&gt;&lt;a href="http://moodle.org/xref/nav.html?index.html"&gt;reference&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:verdana;"&gt;, muy útil) que facilitan en gran medida el trabajo. &lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;“I’ll come back”&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=""&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1493122307318356974-73393596539557900?l=blogpfc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blogpfc.blogspot.com/feeds/73393596539557900/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1493122307318356974&amp;postID=73393596539557900' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1493122307318356974/posts/default/73393596539557900'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1493122307318356974/posts/default/73393596539557900'/><link rel='alternate' type='text/html' href='http://blogpfc.blogspot.com/2007/09/quedan-por-acabar-algn-par-de-detalles.html' title='Sigo anotando...'/><author><name>J</name><uri>http://www.blogger.com/profile/02086256566248667825</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1493122307318356974.post-4956661345659001594</id><published>2007-09-17T00:39:00.000+02:00</published><updated>2007-10-26T21:03:05.915+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><category scheme='http://www.blogger.com/atom/ns#' term='Javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='Moodle'/><category scheme='http://www.blogger.com/atom/ns#' term='Timeline'/><title type='text'>Moodle, bases de datos y otras cosas...</title><content type='html'>&lt;p style="font-family: verdana;" class="MsoNormal"&gt;&lt;!--[if !supportEmptyParas]--&gt;&lt;!--[if !supportEmptyParas]--&gt;&lt;span style="font-size:100%;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family: verdana;"&gt;Después de trabajar con Moodle, PHP, JavaScript, HTML y Bases de Datos, he conseguido hacer (de esa forma...) una de las tareas que me había encomendado Marc, visualizar un timeline con un log de Moodle.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: verdana;"&gt;Y mis primeras conclusiones son: que tengo que seguir aprendiendo más de JavaScript, PHP y volver a revisar en profundidad los apuntes de BD (algo muy importante a saber para brillar en una entrevista de trabajo, pero eso es algo que ya explicaré).&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: verdana;"&gt;Por último he tenido un problemilla con la librería GD, requerida por Moodle para generar gráficos, que no he llegado a poder instalar, algo que espero solventar.&lt;/span&gt;&lt;/span&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-family: verdana;font-family:verdana;font-size:100%;"  &gt;&lt;/span&gt;&lt;span style=";font-family:&amp;quot;;font-size:12;"  lang="ES-TRAD" &gt;&lt;span style=""&gt;&lt;span style="font-family:verdana;"&gt; &lt;/span&gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1493122307318356974-4956661345659001594?l=blogpfc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blogpfc.blogspot.com/feeds/4956661345659001594/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1493122307318356974&amp;postID=4956661345659001594' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1493122307318356974/posts/default/4956661345659001594'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1493122307318356974/posts/default/4956661345659001594'/><link rel='alternate' type='text/html' href='http://blogpfc.blogspot.com/2007/09/moodle-bases-de-datos-y-otras-cosas.html' title='Moodle, bases de datos y otras cosas...'/><author><name>J</name><uri>http://www.blogger.com/profile/02086256566248667825</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1493122307318356974.post-4559459020256821312</id><published>2007-09-16T00:08:00.000+02:00</published><updated>2007-10-28T00:30:51.561+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><category scheme='http://www.blogger.com/atom/ns#' term='Javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='Moodle'/><category scheme='http://www.blogger.com/atom/ns#' term='Timeline'/><title type='text'>Primeros pasos</title><content type='html'>&lt;p  class="MsoNormal" style="font-family:verdana;"&gt;&lt;/p&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-weight: bold;"&gt;Es hora de poner a prueba lo aprendido en los deberes de verano (programar en PHP y JavaScript). &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Mi primera tarea, y en mi opinión muy estimulante, es la de crear Timelines (“widget” en AJAX) a partir de un registro de Moodle, es decir, de la base de datos que utiliza Moodle para crear estos logs de participación.&lt;br /&gt;&lt;br /&gt;Un Timeline es un espectacular cronograma con el que podemos interactuar directamente con solo unos clicks de ratón. Para generarlo solo necesitamos incrustarlo en la página web que queramos y llamar a la API con la información de los eventos.&lt;/span&gt;&lt;p face="verdana" class="MsoNormal"&gt;&lt;span style="font-size:12;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1493122307318356974-4559459020256821312?l=blogpfc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blogpfc.blogspot.com/feeds/4559459020256821312/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1493122307318356974&amp;postID=4559459020256821312' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1493122307318356974/posts/default/4559459020256821312'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1493122307318356974/posts/default/4559459020256821312'/><link rel='alternate' type='text/html' href='http://blogpfc.blogspot.com/2007/09/primeros-pasos.html' title='Primeros pasos'/><author><name>J</name><uri>http://www.blogger.com/profile/02086256566248667825</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
