Tabla de Contenidos
Charla sobre Catalis - Marzo 2007
Audiencia: personal de sistemas de la Biblioteca Central
Motivo: presentar un panorama del estado actual de Catalis y de los planes de rediseño.
USAR S5?
Algunos conceptos
- Javascript orientado a objetos
- Refactorización: http://en.wikipedia.org/wiki/Code_refactoring
- JavaScript libraries: YUI, Ext, jQuery, etc. Desventajas.
- Ajax design patterns
- JSON vs XML
- MVC en JS
- Libros: Ajax in action, Pro JavaScript Techniques, Ajax design patterns, etc
- Cross browser application: al menos, Internet Explorer y Mozilla Firefox
(una alternativa sería usar XUL, sólo para Mozilla, y adiós a un montón de problemas)
Qué sucede en el servidor
- autenticación (login, sesiones)
- envío inicial del código de la aplicación al cliente (html, css, js, xml)
- lectura de las bases de datos: búsquedas, claves del diccionario
- escritura en las bases de datos: crear, grabar modificaciones, bloquear, borrar
- logs de acceso
- guardar preferencias, plantillas, notas personales?
- WXIS, PHP?
Qué sucede en el cliente
Modelo, vista, controlador (MVC)
Modelo (datos)
Objetos + funciones (métodos) de JavaScript
- Lista de registros MARC (Catalis.MarcRecordList)
- Registro MARC (Catalis.MarcRecord)
- Leader (Catalis.MarcLeader)
- Campos de control (Catalis.MarcField008, Catalis.MarcField005, etc)
- Campos de datos (Catalis.MarcDataField)
- Subcampos (MarcSubfield. Caso particular: subcampos codificados)
- Existencias (Catalis.MarcHoldings)
- Anotaciones (Catalis.MarcAnnotations)
- Plantilla para registros (Catalis.MarcTemplate)
- Lista de claves del diccionario (Catalis.KeyList)
- Clave del diccionario (Catalis.Key)
- Configuración (Catalis.Config)
- Status (Catalis.Status): base activa, usuario activo, registro activo, etc.
- Estructura de campos y subcampos (xml)
- Información de ayuda, documentación
- TABLA DE CAMPOS Y SUBCAMPOS MARC (marc21.xml) ⇐ JSON?
- TABLAS DE CÓDIGOS (country.xml, language.xml, etc.) ⇐ JSON?
- REGLAS DE PUNTUACIÓN: por ahora, es una única función con un switch/case
- REGLAS DE VALIDACIÓN ? http://search.cpan.org/dist/MARC-Lint/
A veces no está claro a qué objeto debe pertenecer cierto método. ¿Cómo se modelan las RELACIONES ENTRE REGISTROS? E.g. para analíticas, o seriadas.
Vista (interfaz)
HTML + CSS
Los elementos ya presentes, más algunos nuevos.
- Layout general (regiones, paneles, tabs, sliders)
- Menúes
- Toolbars
- Tooltips
- Diálogos (modales, posiblemente con layout; algunos con cierta complejidad)
- Mensajes (a.k.a. notificaciones, cartelitos)
- Drag & drop (p.ej. para reordenar campos y subcampos)
- Acordeón
- Formularios de búsqueda y edición
- Otros widgets: calendario, autocompletamiento (campos controlados)…
- Diálogo modal para insertar caracteres especiales
ESTADO ACTUAL DE LA INTERFAZ Ext
Interfaz multilingüe?
Controlador (manejadores de eventos)
Eventos/acciones provocados directamente por el usuario
- login, logout
- seleccionar base de datos
- recuperar listas de registros (diversos tipos de búsquedas)
- navegar, imprimir, guardar esas listas
- crear un registro
- desde una plantilla
- importar ISO 2709 (.mrc)
- variantes: MARC 21, IBERMARC, codificación de caracteres, Z39.50?, marcxml?
- importación de lotes?
- clonar un registro existente
- grabar un registro
- borrar un registro
- crear/eliminar/duplicar/mover/convertir campos
- crear/eliminar/duplicar/mover/convertir subcampos
- editar existencias (a.k.a. fondos, holdings, ejemplares)
- añadir un ítem
- editar atributos del ítem
- editar datos codificados: leader, campo 008, subcampos $4, campo 041, etc.
- editar indicadores
- validar datos (a nivel de subcampo, campo, registro, base de datos)
- visualizar un registro (varios estilos)
- copiar (al portapeles) o imprimir un registro
- ver las modificaciones realizadas (diferencias entre estados original y actual de un registro)
- ver la historia del registro (quiénes lo modificaron y cuándo)
- registrar anotaciones sobre un registro (y sobre una base?)
- ver mensajes de ayuda, en varios contextos
- exportar uno o más registros (formatos: iso 2709, marcxml, mods, …)
- recuperar plantilla (karina)
- adjuntar (asociar) archivos al registro? (imágenes, pdf)
- …
Acciones automáticas (no solicitadas explícitamente por el usuario)
- validaciones: onFieldValueChange, onBeforeSave, onRecordImport, etc.
- limpieza de caracteres en un subcampo
- ajuste de puntuación del campo
- ajuste de altura de textareas (subcampos) ⇐= IMPORTANTE
- modificación del 008 (en base a cambios en campos de datos asociados, p.ej. 260$c y 008/06-14)
- autocompletamiento de subcampos (p.ej. 041 en base a 008/35-37)
- modificación de registros al importarlos
- autosave?
- …
Código para manejar errores que se produzcan en la ejecución de JS.
Conexiones con el servidor
- originalmente: form oculto + iframe oculto + varios forms
- ahora: the Ajax way, e.d. xmlHttpRequest + callbacks (p.ej. vía YUI Connection manager)
- Entorno de catalogación
Acceso sencillo a herramientas auxiliares, tales como: - LC Catalog - LC Authorities - OCLC docs - Google Books - MathSciNet - xISBN, thingISBN - Book covers: Amazon, open cover database - etc.
- Instalación/actualización
- instrucciones completas (incluyendo apache)
- o instalador al estilo OpenMarcoPolo
Configuración
- Actualmente, un archivo de texto catalis.conf, más algunas variables JS en head.htm, y posiblemente varios aspectos configurables no han sido separados del código. También pueden considerarse parte de la configuración algunos datos en archivos XML, y templates.js.
- ¿Cómo organizar y administrar los aspectos configurables de Catalis? (para mayor generalidad, pensemos en una instalación múltiple, usada por varias bibliotecas).
- conf. global
- conf. por base
- conf. por usuario (preferencias)
EJEMPLOS DE PROPIEDADES CONFIGURABLES
- Interfaz para configuración?
- ¿Cómo preservar la configuración al instalar una versión nueva?
- VER LO QUE HICE CON OPACMARC
Administración/Mantenimiento
Necesitamos interfaces para:
- Administración de usuarios (incluye permisos)
- Administración de plantillas (crear y modificar)
- Ver logs de acceso
- Compactación de bases
- Backup de datos (bases, configuración)
- Regenerar diccionarios
- …
- Bases de autoridades, tesauros
- Acceso simultáneo a más de una base? a más de un registro (p.ej. para compararlos)?
- Problemas presentados desde el lanzamiento de Catalis en 2005:
- claves fantasma (resuelto)
- corrupción de registros (no resuelto)
- cambio en la codificación de registros de LC (semi-resuelto)
- ISBN-13 (no resuelto)
- otros?
Y más: CatalisWiki, Grupo Catalis (Google), Documentacion (tutoriales, manuales, screencasts)
- Mejor documentación del código (JSDoc, Natural Docs)
Mostrar ejemplo
- Integración con OPACMARC?
- Seguridad: Proteger passwords, sesiones, restringir acceso
Please read this! OpenCataloger, Koha
http://wiki.liblime.com/doku.php?id=catalogingproject
Sobre bloqueo de registros (record locking):
AJAX & Record Locking
http://www.ddj.com/dept/lightlang/192700218
Más datos puede haber en los wikis de Catalis, y en algun otro de mis txt. Y en los mensajes del grupo.
catalis desarrollo presentacion