Reunión III: imprevistos y soluciones

No todo oro reluce, ni toda la gente errante anda perdida. — J.R.R. Tolkien.

La edición por secciones y los tags tienen una serie de efectos colaterales que no había tenido en cuenta y que Pigui me ha explicado esta mañana en la facultad.

En fin, en Mallorca se dice “poc a poc i bona lletra“. Hay que hacer las cosas bien aunque lleven más tiempo, y más aún cuando NWiki va a ser la wiki oficial de Moodle 2.0.

Aquí la lista de cambios a hacer:

  • Por una parte está el problema de las secciones que tienen el mismo nombre. La implementación actual se basa en los nombres de las secciones a la hora de filtrar el contenido de las páginas para las ediciones parciales; si existen dos secciones con el mismo nombre el algoritmo escogerá la primera. Wikimedia (el software que hay debajo de la Wikipedia) asigna identificadores a las cabeceras de las secciones, habrá que echarle un vistazo aunque el código es complejo. HECHO
  • Luego están parte están los relacionados con la edición concurrente de secciones. Resulta que hasta ahora si un usuario editaba una página lo que se hacía era bloquear la página entera para evitar que otro usuario cambiarla la misma página y fastidiara los cambios del primero. Al añadir la posibilidad de editar secciones de página independientemente hay tener en cuenta una serie de factores:
    • Si se edita una página hay que bloquearla. Se evita editar cualquier sección de ella.
    • Si edita una sección hay que evitar bloquear la sección y subsecciones, pero no las secciones hermanas (del mismo nivel) ni las de niveles superiores.

    Además es necesario haber resuelto el tema de la identificación única de secciones porque sino puede haber problemas de concurrencia con dos secciones con el mismo nombre.

  • Como me recomendó Pigui, ahora tenemos dos tipos de links internos a secciones de páginas:
    • El que había anteriormente, del tipo [[página#sección]] que visualiza la página y el navegador hace scroll hasta la sección.
    • El link de visualizaciones parciales, del tipo [[página##sección]].
    • Bueno, pues la implementación de estos enlaces fastidia un poco varios wiki-bloques, como el bloque index, el navigator, el wanted-pages, etc, que habrá que arreglar para que no aparezcan éste tipo de enlaces.

  • Hay que arreglar un par de bugs menores:
    • Cambiar la expresión regular que reconoce los nombres de las cabeceras para que acepte espacios. HECHO
    • Cambiar el último parámetro de la función optional_param() para evitar ataques de inyección de código. HECHO
  • En cuanto a los tags, existen una serie de daños colaterales derivados del hecho de añadir una nueva tabla
    (probablemente mdl_wiki_tag) a la BBDD y relacionados con los sistemas de backup de Moodle y NWiki: es necesario modificar estos sistemas de backup para guardar los datos de los tags (y habrá que estudiar qué datos se necesitan guardar y cuáles no), por lo que habrá que tocar diversos ficheros:

    • db/install.xml: generar el código XML para crear la tabla desde cero con XMLDB. Moodle tiene un programita que genera el XML a base de clicks de ratón en “Site Ad ministration > Miscellanious > XMLDB Editor”
    • db/upgrade.php: programar el código PHP para permitir actualizar NWiki con la nueva tabla en el caso de no querer instalarla desde cero, para que se detecten los cambios hay que modificar también el fichero version.php.
    • restorelib.php: será necesario añadir una función que restaure la tabla de tags.

  • Por último también habrá que cambiar las funcionalidades de importación/exportación de páginas wiki propias de NWiki, que están en los ficheros xml/importxml.db y xml/exportxml.php

Divertido, ¿eh? :D

Anuncios

Una respuesta to “Reunión III: imprevistos y soluciones”

  1. […] Ayer 26/11 fui a ver a Pigui a contarle cómo me habían ido las cosas y que me echara un cable con los locks o bloqueos. Hasta ahora si un usuario editaba una página se bloqueaba y listos. Ahora, como la edición de una sección es independiente de otra hay que implementar una lógica que soporte ésto, cómo puse en la otra entrada: […]

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: