JL Content Fields Filter JL Content Fields Filter 4.0.0
Release notes
What's Changed
- Joomla 6 Compatibility & Code Quality Improvements by @Razzo1987 in https://github.com/Joomline/JlContentFieldsFilter/pull/89
- Migrate for Joomla 6 compatibility, improve filter preview, and modernize UI by @Razzo1987 in https://github.com/Joomline/JlContentFieldsFilter/pull/91
New Contributors
- @Razzo1987 made their first contribution in https://github.com/Joomline/JlContentFieldsFilter/pull/89
Full Changelog: https://github.com/Joomline/JlContentFieldsFilter/compare/3.0.0...4.0.0
JL Content Fields Filter 4.0.0 - Major Update
This is a major release with Joomla 6 full compatibility, critical security fixes, complete admin interface modernization, and comprehensive code refactoring.
🚀 What's New
Joomla 6 Full Compatibility
-
✅ Complete PSR-4 namespace architecture migration
-
✅ Replaced all deprecated methods:
-
getDbo()→getDatabase() -
defined('JPATH_PLATFORM')→\defined('_JEXEC')
-
-
✅ Fixed PHP 8.2+ dynamic property deprecations
-
✅ Modern QueryInterface for all database operations
-
✅ Updated file headers with proper
@sinceannotations -
✅ Refactored CategoryModel (com_content, com_contact) and TagModel (com_tags)
-
✅ Improved
quoteName()usage for better security -
✅ Migrated from
publishtostatecolumn (Joomla 6 standard) -
✅ Fixed French language file paths in XML configuration
-
✅ Simplified JLoader usage
Admin Component - Complete Rewrite
-
🎨 Removed legacy dependencies: Vue.js 2, Axios (~200KB saved!)
-
🎨 Modern JavaScript stack:
-
Native Fetch API instead of Axios
-
ES6+ features (async/await, arrow functions, template literals)
-
Bootstrap 5 native modal dialogs
-
WebAssetManager for modern asset loading
-
-
🎨 New FilterfieldsField (255 lines):
-
Live filter preview directly in admin panel
-
Supports all field types: list, radio, checkboxes, text, range
-
Dynamic field loading based on selected category
-
Integration with FieldsHelper
-
"Interactive on frontend" disabled preview mode
-
-
🎨 Full CRUD operations:
-
✅ Add new filter SEO records
-
✅ Edit existing records
-
✅ Delete records (with confirmation)
-
✅ Publish/unpublish filters
-
✅ Filter form with search and status filters
-
-
🎨 SEO Features:
-
Meta fields truncation to recommended lengths (title, description, keywords)
-
Hash-based filter identification
-
Form validation and error handling
-
-
🎨 Improved UX:
-
Loading states and spinners
-
Error notifications
-
Clean JSON responses with output buffer management
-
Debug logging for troubleshooting
-
Mobile-friendly responsive design
-
Critical Security Fixes 🔒
-
🛡️ Fixed 5 SQL injection vulnerabilities:
-
Extension/Jlcontentfieldsfilter.php (3 vulnerabilities):
-
Line 221: IN clause - proper quoting via
array_map()withdb->quote() -
Line 235: BETWEEN clause - missing int cast for 'to' value
-
Line 244: LIKE clause - added
db->escape()beforedb->quote()
-
-
TagModel.php (line 170): IN clause - sanitized with
ArrayHelper::toInteger()+array_filter() -
ContactModel (CategoryModel.php, line 270): IN clause - sanitized with
ArrayHelper::toInteger()+array_filter()
-
-
🛡️ Additional security improvements:
-
Fixed SQL injection in ItemsModel search filter (improper quote placement)
-
Added XSS protection with
escapeHtml()in items list template -
Moved CSRF tokens from URL to POST body
-
Added permission checks in
ItemModel::save() -
Item existence validation before operations
-
Replaced
SELECT *with explicit field lists -
Fixed operator precedence bug in ternary operator (JlcontentfieldsfilterHelper.php:105)
-
Module Improvements
-
🎯 Enhanced slider functionality:
-
Change event handling for input values
-
Proper range slider reset on form clear
-
-
🎯 Improved form reset:
-
Clear text inputs on reset
-
Reset range sliders to default values
-
Better synchronization between inputs
-
-
🎯 Frontend CSS updates:
-
Renamed
jlmf-label→jlmf-field-title(semantic naming) -
Updated selectors in jlcontentfilter.css
-
Consistent styling across 7 layout files
-
-
🎯 Fixed copyright typo: "Joomla All rights" → "Joomline. All rights"
Plugin Enhancements
-
⚙️ Dynamic context detection:
-
Replaced hardcoded
'com_content.article'with dynamic detection -
Full support for com_content, com_contact, and com_tags contexts
-
Load custom models for filtering logic in content plugins
-
-
⚙️ Improved filtering logic:
-
Enhanced filter string creation for range fields
-
Better BETWEEN clause handling
-
Optimized database queries
-
-
⚙️ Updated media paths:
-
Corrected file paths for scripts and styles
-
Updated to use correct media directory structure
-
Code Quality & Documentation
-
📝 PHP-CS-Fixer configuration (.php-cs-fixer.dist.php):
-
Enforced code style standards
-
Automatic formatting for consistent codebase
-
-
📝 Complete PHPDoc documentation:
-
Detailed comments for all methods
-
Parameter and return type documentation
-
@since annotations for version tracking
-
-
📝 Code cleanup:
-
Removed deprecated
jlcontentfieldsfilter.phpfile -
Removed unused imports (Rules, ApplicationHelper, Factory, Registry)
-
Removed references to non-existent fields (created_by, checked_out)
-
Simplified Table::bind() method
-
Removed empty index.html files
-
Updated params.xml for improved layout styling
-
-
📝 Consistent coding standards:
-
Unified
\defined('_JEXEC')usage across all files -
Type consistency improvements
-
Better switch statement structure for model loading
-