Skip to main content

ABCD 3.8.0 Technical Release Notes

· 5 min read
Roger C. Guilherme
Librarian and programmer at ABCD

This release introduces deep structural updates to the core of ABCD, focusing heavily on modernizing the Data Entry (Cataloging) interface and ensuring compliance with international standards. ABCD v3.8 marks a significant milestone in transitioning from a traditional Integrated Library System (ILS) to a more modular Library Services Platform (LSP). The architecture has been refactored to be significantly more stable, developer-friendly, and fully prepared for future integrations via REST APIs.

🚀 Key Features

Data Entry Interface Modernization (More)

  • Native TAB Support in FDT: Added support for the TAB field type to organize forms into distinct tabs. This enables the clean separation of form sections, completely replacing massive, single-page layouts that previously required gigantic accordions and endless vertical scrolling.

Native TAB Support in FDT

  • Removal of Legacy Dependencies: The heavy and rigid dependency on the legacy dhtmlX library has been completely removed. The interface was rebuilt using semantic HTML and CSS Flexbox, resulting in a lighter codebase and much faster browser rendering.
  • Responsive Toolbar: The global toolbar was redesigned into a responsive, two-tier layout. It maintains full support for core operations (including Quick Search, Formats, and Worksheets) while communicating seamlessly with the legacy iframe architecture.

New Toolbar

  • Database Lock Resolution: Resolved a critical, long-standing bug where database locks (lock_db) caused the global toolbar to freeze. Critical navigation functions—such as "Home" and "Admin/Config"—now remain accessible, allowing users to safely unlock databases without forced browser refreshes.
  • Dynamic Component Integration: Restored the critical logic for "New Record" generation, ensuring that the system correctly detects and triggers the typeofrecord.tab workflow.

MARC Standards & Interoperability

  • MARC Indicator Support: Added native support for the MARC Indicator (IND) field type within the FDT and validation engine. The system now permits having an Indicator 1 and a Subfield 1 within the same field, building fully MARC21-compliant strings.

MARC Indicator Support

  • Database Standardization: Template databases for MARC and RDA (across English, Spanish, and Portuguese locales) have been standardized to conform to the new tab-based layout system.
  • File Normalization: All .par and .fst configuration files have been standardized across example database models.

Modernized File Management & Uploads

  • AJAX-Driven Uploads: Introduced a centralized upload system via UploadRenderer featuring a drag-and-drop modal, background AJAX processing, a visual progress bar, and full localization support.

alt text alt text alt text

  • Directory Management: Users can now create target folders directly from the management interface, allowing files to be uploaded into exact subdirectories dynamically resolved by database paths. alt text

System Administration Enhancements

  • Profile Editor Refactoring: The user profile editor (profile_edit.php) was completely overhauled to modernize UI and JavaScript behaviors. The new layout incorporates tabbed navigation, dynamic accordions with real-time badge counts, and grouped checkbox grids for managing permissions across databases, formats, and worksheets.

alt text

  • Path Macros: Added native support for the %path_database% constant within .par files, allowing administrators to point to relative paths for external databases directly from the core configuration (e.g., rda.*=%path_database%rda/data/rda.*).

alt text

  • Inline Subfields Toggle: Introduced a new global configuration option SUBFIELDS_INLINE (Y/N) in the database settings to let administrators choose whether grouped subfields are displayed inline or managed via a pop-up window.

alt text

🛠 Technical Refactorings (Under the Hood)

  • PFT Layout Modernization: Refactored pft.php to replace table-based formatting with modern div/flex structures, while standardizing and simplifying client-side JavaScript functions.
  • Code Modularization: Procedural field rendering logic in dibujarhojaentrada.php was completely replaced by a structured object-oriented architecture utilizing dedicated helper and renderer classes (CalendarHelper, SubfieldHelper, RepeatableRenderer, etc.).
  • Unified UI Indicators: Embedded CSS loaders were replaced by a centralized, universal loading spinner component (inc_wait.php), reducing code duplication across background operations.
  • Print-Media Queries: Implemented specialized CSS print-media queries for the statistics module, ensuring clean report generation by automatically hiding administrative panels during PDF export or printing.
  • Asset Integration: Included the Sortable.js library to support seamless client-side drag-and-drop row reordering within the data entry module.
  • PHP 8.2 Compatibility: Hardened array index validations and variable initializations across core scripts to ensure full compatibility with PHP 8.2 and prevent deprecation notices.
  • Atomic Concurrency Locks: Automated record increment routines were refactored to use exclusive, atomic flock() execution on control_number.cn, preventing data corruption from race conditions during concurrent cataloging.

ABCD 3.7.0 Technical Release Notes

· 2 min read
Roger C. Guilherme
Librarian and programmer at ABCD

✨ Key Highlights

This release introduces significant improvements and refactorings to the Statistics module, aimed at increasing performance, enhancing data transparency, and stabilizing character encoding across the module.

Key Changes:

Multi-Loop Execution Engine:

  • Replaced the monolithic execution model with a refined "Multi-Loop" orchestrator.
  • The system now isolates the execution of each statistical table, allowing for individual search expressions (Expresion) to be processed per table without conflicts.
  • Integrated a performance-optimized pipeline that combines table-specific search expressions with global interface filters, ensuring high-speed processing while maintaining data accuracy.

Transparency & UX Improvements:

  • Added a "Search Expression" field directly into the Table Configuration (tables_cfg.php), allowing administrators to embed specific filter rules per report.
  • Enhanced output transparency: The module now dynamically displays the active search criteria (MFN range or Search Expression) as a subtitle (<small> tag) directly below the report title (<h3>), providing immediate clarity to end-users regarding the data source.

Encoding Stabilization:

  • Resolved long-standing character encoding issues (UTF-8 vs. ISO-8859-1) by implementing a standardized "Gateway" approach.
  • Requests from the UI (JS/AJAX) are now normalized upon arrival, and output is managed via standard headers, ensuring that special characters (like Portuguese accents) are rendered correctly in tables and UI elements while maintaining strict UTF-8 compliance for ECharts graph generation.
  • Centralized menu structure: The statistics configuration options (config_vars.php, tables_cfg.php, proc_cfg.php) are now easily accessible via a consolidated navigation include, improving workflow efficiency.

Code Quality & Maintenance:

  • Extracted hardcoded strings into the $msgstr internationalization array to ensure full support for multi-language installations.
  • Cleaned up legacy code, removed deprecated function calls, and ensured compatibility with modern PHP versions (fixing Undefined array key warnings).

Read more here!


Impact:

This update provides a more reliable and flexible way for institutions to generate specific production reports (e.g., separating "Created" vs "Edited" records) within a single "Process," while significantly improving the user experience for librarians and system administrators.

ABCD 3.6.2 Technical Release Notes

· 2 min read
Roger C. Guilherme
Librarian and programmer at ABCD

What's Changed

Welcome to the ABCD v3.6.2 release! This update brings significant improvements to the RDA and MARC databases, expands Portuguese (PT) localization, and introduces important safety limits and UI updates for the PRC Conversion tool.

ABCD 3.6.1 Technical Release Notes

· One min read
Roger C. Guilherme
Librarian and programmer at ABCD

What's Changed

Full Changelog: https://github.com/ABCD-DEVCOM/ABCD/compare/v3.6.0...v3.6.1

ABCD 3.6.0 Technical Release Notes

· 2 min read
Roger C. Guilherme
Librarian and programmer at ABCD

What's Changed

ABCD 3.5.0 What's New?

· 4 min read
Roger C. Guilherme
Librarian and programmer at ABCD

We are thrilled to announce the release of ABCD Version 3.5.0! This major update brings a wide array of improvements focused on user experience, system performance, security, and empowering database administrators with better tools.

From flexible new OPAC layouts to real-time record manipulation, here is a detailed breakdown of everything new in this release:

ABCD 3.5.0 Technical Release Notes

· 2 min read
Fred Hommerson
Programmer at ABCD

What's Changed

ABCD 3.4.0 Technical Release Notes

· 3 min read
Fred Hommerson
Programmer at ABCD

What's Changed

ABCD 3.3.0 Technical Release Notes

· 4 min read
Roger C. Guilherme
Librarian and programmer at ABCD

We are pleased to announce the release of ABCD 3.3.0. This release focuses heavily on hardening the codebase against security vulnerabilities, introducing native DevOps tools for system administrators, and improving PHP 8.x compatibility.

This post details the technical implementation of these features and the necessary server configurations for upgrading.