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
-
-
-
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
(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
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
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