====== 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 * Ajax: http://en.wikipedia.org/wiki/Ajax_%28programming%29 * RIA: http://en.wikipedia.org/wiki/Rich_Internet_Application * 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. {{tag>catalis desarrollo presentacion}}