Skip to content

Releases: ABCD-DEVCOM/ABCD

ABCD v3.9.0

28 Jun 14:39
84ad220

Choose a tag to compare

The ABCD Community is proud to announce the release of ABCD v3.9.0. This milestone brings substantial architecture modernization, enhanced file security, improved layout responsiveness, and localized data entry definitions.

Legacy dependencies have been streamlined, paving the way for a more robust and modular open-source ecosystem.


New Features & UI Enhancements

File Upload & Media Flexbility

  • Windows File Compatibility (#671): Sanitization regex rules have been updated to securely permit spaces in image filenames. This allows for user-friendly asset names while filtering dangerous terminal characters.
  • Custom Upload Subdirectories (#673): Introduced a destination subdirectory input field within the media upload modal, letting managers organize files dynamically. Built-in path deduplication prevents folder repetition errors.

Module Modernization

Circulation Module Overhaul (#676)

  • Legacy Grid Elimination: Replaced the heavy, third-party dhtmlXGrid implementation on administrative forms (typeofitems and typeofusers) with lightweight, native HTML tables and generic JavaScript controllers.
  • PRG Pattern Adoption: Form submission states now leverage the Post-Redirect-Get pattern, eliminating accidental duplicate submissions and integrating clean success notifications.
  • Font Awesome Integration: Cleaned up navigation blocks by migrating from hardcoded asset image tags to high-resolution Font Awesome typography (menuButton-fa).
  • Output Interface Decoupling: Repositioned footer allocations and disabled institutional site wraps on raw print/receiver frames (rs01.php, rsweb.php, estado_de_cuenta.php) to maximize printable screen areas.

OPAC Settings (#672)

  • Visibility Adjustments: Corrected operational visibility blocks inside config_opac.php to ensure unrestricted search indexing matches standard local installation values.

Security & Performance Hardening

Data Entry Integrity

  • Injection Prevention (#673): Re-engineered multi-part modal upload payloads to handle parameters safely through json_encode() encapsulation for FormData parsing, moving away from vulnerable inline string concatenations.
  • Null-Safe UI Controls (#674): Rewrote the JavaScript validation tree inside copies_add.php with explicit element guards (middleForm, tag200, textarea, and input fields) to completely eradicate client-side runtime crashes when elements are absent.
  • File Management Blueprints (#674): Delivered standardized user asset blueprints via explicit dr_path.def mock configurations specifying UNICODE=0 limits and strict extension enforcement (DIRTREE_EXT) across user targets.
  • Asset Mapping (#673): Rectified relative path bindings for core interaction assets, pointing clear_field.js safely to its data-entry editor hub. Adjusted frame reload latency parameters to 800ms to guarantee server-side synchronization.

Repository Cleanup & Standardization

  • File Purge (#675): Dropped non-functional and unreferenced historical scripts to reduce structural overhead.
  • Styling Hygiene (#676): Cleared obsolete .sectionIcon background definitions out of odds.css.
  • Documentation Alignment (#677): Fully revised the primary README.md layout, ensuring up-to-date documentation paths, corrected links, and an accurate project state definition.
  • Translation Maintenance: Continued translating code remarks and inline development logs from Spanish and Portuguese over to English for global open-source community alignment.

What's Changed

Full Changelog: v3.8.4...v3.9.0

ABCD v3.8.4

23 Jun 01:48
cfbe3ad

Choose a tag to compare

ABCD v3.8.4 brings crucial improvements to system stability, PHP 8.x compatibility, and user experience. This release focuses on hardening input validation, fixing MARC database saving mechanisms, and refining OPAC functionalities.

Below is a detailed summary of the changes and enhancements included in this update:

Search & OPAC Enhancements

  • Alphabetical Indexes & UX: Fixed bugs related to the "Alphabetical Indexes" button. Added a new UX feature allowing the index submenu to open by default via URL parameters (open_index=Y), ensuring integrated searches navigate correctly while preserving context (base, ctx).
  • Strict Mode Enforcement: Added a strict-mode guard in central/config_opac.php to explicitly deny access if opac_strict_mode is enabled and no database (?base) is provided.
  • Topbar Refactoring: Reorganized the OPAC topbar (topbar.php) to improve the HTML markup, simplify authentication logic (detecting online services, showing logged-in users, or the login modal), and consistently preserve context parameters when navigating to the home link.
  • Search Pagination Stability: Enhanced input validation in buscar_integrada.php to handle edge cases and prevent bot-induced runtime errors. Pagination parameters (desde and count) are now strictly validated and cast with numeric fallbacks.

Data Entry & MARC Handling

  • MARC Indicators Fix: Resolved broken saving functions in MARC databases. The system now correctly respects MARC indicators by detecting definitions from the FDT, extracting/padding the first two characters, and separating implicit from explicit subfields during client-side assembly.
  • Picklist Selection Logic: Fixed picklist selection mismatches by properly casting and sanitizing option values to strings before comparison, preventing PHP numeric mismatch errors.
  • Editor Improvements: Updated the clear_field.js editor script to use English standard text ("Clear field" instead of "Limpar campo"). Added a new mover action.
  • Formatting Script (fmt.php) Cleanup: Streamlined record display logic, ensured PlantillaDeIngreso() and ColocarMfn() are called in the correct branches, and standardized the use of $arrHttp['login'] instead of maintaining separate login variables.

Security & PHP 8.1+ Compatibility

  • Session & Redirect Hardening: Guarded access to session/login variables with isset() to prevent PHP 8.1+ undefined session errors. Added strict die; statements following header redirects to ensure script execution completely stops when $_SESSION["permiso"] is missing.
  • Undefined Variables & Array Keys: Resolved multiple PHP warnings across the system (e.g., undefined $hasta, undefined Diccio index, and foreach() null arguments in c_global_ex.php).
  • Expression Handling: Hardened logic in PresentarExpresion.php to handle missing expressions safely, defaulting to an empty string to avoid "Undefined array key" errors.
  • Input Whitelisting: Whitelisted the new open_index parameter in is_malicious.php to allow the URL-driven UX flag through security validations.

System & Maintenance

  • Update Manager: Fixed the behavior of the "Update" button to ensure smooth upgrades.
  • File Cleanup: Removed misplaced duplicate files from the repository to keep the architecture clean.
  • Version Bump: Updated version.php to reflect version 3.8.4.

Details:

  • Enhance input validation, pagination, and UX for search functionality by @rogercgui in #664
  • Fix undefined session/login and add die after redirect by @rogercgui in #665
  • Require DB param in strict mode; update topbar by @rogercgui in #666
  • Add mover action and fix PHP warnings and compatibility issues by @rogercgui in #667
  • Use arrHttp login and clean up fmt.php by @rogercgui in #668
  • Enhance MARC indicator handling and fix picklist selection logic by @rogercgui in #669
  • Update version.php by @rogercgui in #670

Full Changelog: v3.8.3...v3.8.4

ABCD v3.8.3: Universal Fixed-Field Manager, RDA Support, and Core Enhancements

17 Jun 01:14
f32cfc2

Choose a tag to compare

Release Notes: ABCD v3.8.3

Version 3.8.3 brings a major overhaul to ABCD's cataloging capabilities, introducing full support for modern cataloging standards like RDA, alongside critical improvements to subfield data handling and system localizations.

Key Features & Updates

1. Universal Fixed-Field Manager

The legacy fixed-field engine has been completely refactored. Moving away from the hardcoded 008 field limitation, the system now features a dynamic, fully adaptable engine for handling multiple and repeatable fixed fields (such as 006 and 007).

  • Smart Cataloging Interface: Catalogers can now add multiple occurrences of fixed fields seamlessly within a single record—essential for mixed-material items (e.g., a book with a CD-ROM). The UI now intelligently reads routing files, automatically deduces material categories from the Leader, and safely parses line breaks.
  • Dynamic Administration Hub: A centralized hub dynamically scans the FDT for 'M' (Matrix) type fields. Administrators can now edit .tab routing files directly from the UI and automatically generate missing .fdt matrices, bypassing legacy restrictions.

2. Core Data Handling & Output Sanitization

Rendering engines and subfield parsers have been hardened to improve data integrity and prevent encoding issues.

  • Subfield Helper & Implicit Support: Introduced a new SubfieldHelper to explicitly extract, decode, and manage the implicit _ subfield without losing data during rendering.
  • Custom Sanitization: Replaced standard htmlspecialchars calls with a robust, custom sanitization implementation across the Group, Table, and Text renderers. This ensures consistent escaping and preserves compatibility with legacy JavaScript dependencies.

3. Localization & i18n Improvements

Extensive updates have been made to the system dictionaries to ensure a fully multilingual cataloging and administrative experience.

  • Fixed-Field Interface Translations: Hardcoded strings in the fixed-field UI have been replaced with dynamic $msgstr variables, with complete translations added for English, Spanish, and Portuguese across both Linux and Windows environments.
  • Comprehensive Spanish UI Update: The admin.tab file for Spanish users received a massive update. Typos and encoding issues were resolved, keys were harmonized, and numerous new UI messages were added covering modules like Z39.50, backups, the thesaurus, file uploads, and search functionalities.

What's Changed

Full Changelog: v3.8.2...v3.8.3

Release Date: June 16, 2026

ABCD 3.8.2 – Bug fixes for this version

30 May 03:32
92680cb

Choose a tag to compare

What's Changed

  • Rebuild SubC JS and handle picklists/indicators by @rogercgui in #656

    • Refactor campos.php parsing to collect IND/S rows into a JS-friendly SubC string and simplify picklist/label population. The PHP now accumulates relevant rows into subc_js_array, handles both "S" and "IND" marker types (with a historical fallback), builds picklist/name entries with proper escaping, and emits SubC as a single \n-separated JS string. Update editarocurrencias.js to dynamically reconstruct the actual subfields (subc_reais) from SubCampos and inject them into Tx[5], ensuring the renderer sees indicators/subfields even when they were omitted from the main FDT. Improves compatibility with older DB formats and makes picklist/indicator handling more robust.
  • New layouts by @rogercgui in #657

  • Fix browseby behavior and record checkbox by @rogercgui in #658

    • Fix browseby behavior and record checkbox
    • menu_main.php: Prevent programmatic updates to the "browseby" select from triggering onButtonClick (avoids unintended recursive/user-action side effects), add logic to call top.Menu('same') when keeping the current record after changing browse mode, add error logging, and translate several comments to English. toolbar_record.php: Correct MFN handling (properly derive mfn_val), guard against missing DOM element before updating, and set the "Select Record" checkbox via the checked property so it accurately reflects selection state.

Full Changelog: v3.8.1...v3.8.2

ABCD V3.8.1 - Improve the version

28 May 03:11
96e2301

Choose a tag to compare

What's Changed

Full Changelog: v3.8.0...v3.8.1

ABCD v3.8: Data Entry Modernization

24 May 22:54
40195c4

Choose a tag to compare

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

  • 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.
dataentry-tabs
  • 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.
dataentry-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.
dataentry-marc-ind
  • 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.
dataentry-upload001 dataentry-upload002 dataentry-upload003
  • 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.
dataentry-upload004

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.
profile-editor
  • 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.*).
new-dbn-par
  • 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.
dataentry-inline-subfields

🛠 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.

What's Changed

Full Changelog: v3.7.0...v3.8.0

v3.7.0 New Statistics Module

20 May 16:19
6724a4b

Choose a tag to compare

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).

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.

What's Changed

  • Refactoring and Enhancements to the Statistics Module by @rogercgui in #64

Full Changelog: v3.6.2...v3.7.0

ABCD v3.6.2

08 May 22:54
c1cf746

Choose a tag to compare

🚀 What's New in ABCD v3.6.2

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.

✨ Key Highlights

RDA Database & Localization Enhancements
We’ve put a lot of work into making sure the RDA database is functional and completely pre-configured out of the box for Portuguese users.

  • Ready-to-use RDA: Improved the integration between the RDA base and Copies, updated essential parameter files (rda.par, marc.par, dbn.par), and created new OPAC configuration files alongside dcxml.pft.
  • Better Portuguese (PT) Support: Inserted localized display formats and barcodes, updated the PT record toolbar and relevance fields, and improved the FDT and Books spreadsheets.
  • Sample Data: Added a sample record to the RDA database and created sample barcode files in the MARC database so users can test features immediately.

PRC Conversion Preview Updates

  • MFN Range Selection: You can now set specific ranges (mfn_start and mfn_end) when reading original and temporary records, complete with a new Refresh Preview button in the UI.
  • Server Safety Lock: To prevent WXIS or the server from overloading, we implemented a strict safety lock that caps the preview window at a maximum of 50 records.
  • Localization: Added new language strings (prc_adjust_preview_range, prc_refresh_preview) to soporte.tab.

UI & Quality of Life Tweaks

  • Adjusted the height between input fields during data entry, making the cataloging experience more comfortable and visually balanced.
  • Minor UI and formatting tweaks in the PRC converter, including a small concatenation fix.

🧹 Housekeeping & Cleanup

  • Kept the repository clean and lightweight by deleting unused Stock databases (on both Linux and Windows) and removing obsolete files.

Detailed Pull Requests:

  • #636, #637, #638: RDA base improvements, PT localization, OPAC configs, and data entry UI tweaks.
  • #639: Removal of unused Stock databases, addition of sample records/barcodes, and file cleanup.
  • #641: PRC conversion MFN range previews, safety limits, and UI fixes.

Full Changelog: [v3.6.1...v3.6.2](v3.6.1...v3.6.2)

v3.6.1 Minor adjustments

23 Apr 01:35

Choose a tag to compare

What's Changed

Full Changelog: v3.6.0...v3.6.1

v3.6.0 Opac improvements

09 Apr 17:46
117718c

Choose a tag to compare

What's Changed

  • Fixes an option that was accidentally disabled. by @rogercgui in #627
  • This release fixes strings that appeared in Portuguese and launches the OPAC themes project. by @rogercgui in #628
  • Expands configuration checks by @rogercgui in #629
  • Refactor UI elements and improve password handling logic by @rogercgui in #630
  • Fix config opac by @rogercgui in #631

Full Changelog: v3.5.0...v3.6.0

Actions by database administrator

All code updates can be excuted by the Upgrade manager.