Releases: Joomline/JlContentFieldsFilter
JL Content Fields Filter 4.0.0
What's Changed
- Joomla 6 Compatibility & Code Quality Improvements by @Razzo1987 in #89
- Migrate for Joomla 6 compatibility, improve filter preview, and modernize UI by @Razzo1987 in #91
New Contributors
- @Razzo1987 made their first contribution in #89
Full Changelog: 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
-
JL Content Fields Filter 3.0.0
- Support Joomla 5 alpha.
- Fix Seo component.
JL Content Fields Filter 2.0.2
- fix Request error - @kernusr
JL Content Fields Filter 2.0.1
- New lang - @AlainRnet
- fix Safe filter values @kernusr
- New lang for Russian
JL Content Fields Filter 2.0.0
- Support Joomla 4.
- Fix Notice.
JL Content Fields Filter 1.9.1
fix conflict Content Multicategories
JL Content Fields Filter 1.9.0
- Исправление появление ошибки "NaN" в поле-слайдере
- Механизм скрытия полей и опций списочных полей, если в сущностях категории нет данных по этим полям, без зависимостей между полями
@AlekVolsk - большое спасибо за подготовленные правки для релиза
JL Content Fields Filter 1.8.5
Добавлено событие JS - JlContentFieldsFilterLoadDataSuccess.
Исправления режима работы без jq.
JL Content Fields Filter 1.8.2
Fix Install
JL Content Fields Filter 1.8.1
Исправления для фильтрации материалов в тегах.
Опция "Показывать только на странице категории".