- Add addfieldprefix="Joomla\Plugin\System\MokoJoomTOS\Field" to XML config
- This registers the custom field namespace so Joomla can find MenuslugField
- Bump version from 1.0.0 to 1.0.1 in plugin XML
- Bump version from 1.0.0 to 1.0.1 in build.sh
- Custom field should now load properly in plugin settings
Co-authored-by: jmiller-moko <230051081+jmiller-moko@users.noreply.github.com>
- Update README.md to show Field directory in project structure
- Update IMPLEMENTATION_SUMMARY.md with new features and specs
- Document menu dropdown field configuration
- Document component-only view behavior
- Update technical specs (9.1 KB, 9 files, 150+ lines)
Co-authored-by: jmiller-moko <230051081+jmiller-moko@users.noreply.github.com>
- Create MenuslugField custom field to populate dropdown with menu items
- Change tos_slug field type from text to menuslug dropdown
- Update plugin to set tmpl=component for component-only view when offline
- Menu items are grouped by menu type with separators
- Field shows menu title and alias in format: "Title (alias)"
Co-authored-by: jmiller-moko <230051081+jmiller-moko@users.noreply.github.com>
Create src/Extension/MokoJoomTOS.php with modern Joomla 4.x/5.x structure:
- Implements SubscriberInterface for event handling
- Uses proper namespace: Joomla\Plugin\System\MokoJoomTOS\Extension
- Maintains all existing functionality for offline mode bypass
- Updates XML manifest to include src folder
- Updates build.sh to package src directory
The plugin now follows Joomla's modern architecture while maintaining backward compatibility through the legacy mokojoomtos.php file.
Co-authored-by: jmiller-moko <230051081+jmiller-moko@users.noreply.github.com>
Remove "_offline" suffix to simplify naming. The plugin is now consistently named "mokojoomtos" or "MokoJoomTOS" throughout the codebase.
Changes:
- Renamed mokojoomtos_offline.php to mokojoomtos.php
- Renamed mokojoomtos_offline.xml to mokojoomtos.xml
- Updated class name from PlgSystemMokojoomtosOffline to PlgSystemMokojoomtos
- Updated namespace from MokojoomtosOffline to MokoJoomTOS
- Renamed all language files to remove _offline suffix
- Updated all language string keys to remove OFFLINE suffix
- Updated build.sh to use new file names
- Updated documentation (README.md, IMPLEMENTATION_SUMMARY.md)
- Package now named plg_system_mokojoomtos-1.0.0.zip
Co-authored-by: jmiller-moko <230051081+jmiller-moko@users.noreply.github.com>
Move plugin from src/plugin/ to src/plugins/system/mokojoomtos/
- Follows Joomla convention: plugins/{type}/{name}/
- Updated build.sh to reference new path
- Updated README.md and IMPLEMENTATION_SUMMARY.md documentation
- Verified build process works correctly
Co-authored-by: jmiller-moko <230051081+jmiller-moko@users.noreply.github.com>
Complete project documentation with:
- Architecture evolution and decisions made
- Final solution specifications
- User workflow and benefits
- Build system details
- Testing checklist
- Compatibility matrix
- Performance and security notes
Project is complete and production-ready.
Co-authored-by: jmiller-moko <230051081+jmiller-moko@users.noreply.github.com>
- Complete usage guide with step-by-step setup
- Technical details and file structure
- FAQ section addressing common questions
- Development and testing instructions
- Clear explanation of how the plugin works
- Examples and use cases
Co-authored-by: jmiller-moko <230051081+jmiller-moko@users.noreply.github.com>
- Remove complex component and package structure
- Create simple plugin that allows Terms of Service access via slug
- Plugin checks URL slug and bypasses offline mode for that slug only
- Configure slug in plugin parameters (default: "terms-of-service")
- Works with native Joomla articles and menus
- Lightweight solution with minimal code
- Added build.sh for creating plugin ZIP package
- Updated all language strings
How it works:
1. Admin creates Joomla article for Terms of Service
2. Admin creates menu item with slug "terms-of-service"
3. Admin configures plugin with that slug
4. When site is offline, that URL remains accessible
Co-authored-by: jmiller-moko <230051081+jmiller-moko@users.noreply.github.com>
- Fix administrator language paths: add 'administrator/' prefix
- Change folder attribute from 'language' to 'site' for frontend files
- Ensure paths are relative to plugin root, not to destination folder
- This fixes the language not loading issue reported
The XML manifest now correctly references:
- Administrator: administrator/language/{locale}/plg_system_mokojoomtos.ini
- Site: language/{locale}/plg_system_mokojoomtos.ini
Joomla will now properly install and load language files in both
backend (administrator) and frontend (site) contexts.
Co-authored-by: jmiller-moko <230051081+jmiller-moko@users.noreply.github.com>
- Create administrator/language/ for backend strings (plugin config)
- Create language/ for frontend strings (site display)
- Split language strings appropriately:
* Admin: field labels, descriptions, install messages, conflict warnings
* Site: display titles, last updated, disabled messages
- Add en-US locale support alongside en-GB
- Update mokojoomtos.xml manifest to reference both language folders
- Verified plugin builds successfully with new structure
Language files now follow Joomla standard structure with proper
separation between administrator and site language strings.
Co-authored-by: jmiller-moko <230051081+jmiller-moko@users.noreply.github.com>
- Add checkSlugConflicts() method to detect occupied slugs
- Check for conflicts with menu items and articles
- Display warning messages in admin when conflicts found
- Inform admin that plugin will override existing URLs
- Add language strings for conflict warnings
- Conflict check runs when plugin is loaded in admin
Helps administrators identify when reserved slugs are already
used by other content, preventing confusion about URL routing.
Co-authored-by: jmiller-moko <230051081+jmiller-moko@users.noreply.github.com>
- Move plugins/system/mokojoomtos/ to src/plugins/system/mokojoomtos/
- Remove all legacy component code (admin, site, media directories)
- Remove legacy mokojoomtosaccess plugin
- Update Makefile to build from src/ directory
- Simplify Makefile to plugin-only targets
- Update README with new structure (src/ as root for live code)
- Correct naming to MokoJoomTOS (TOS in caps)
- Plugin element: mokojoomtos (lowercase)
- Display name: MokoJoomTOS (TOS uppercase)
All live code is now under src/ directory as requested.
Co-authored-by: jmiller-moko <230051081+jmiller-moko@users.noreply.github.com>
- Remove LIBXML_HTML_NOIMPLIED flag to handle multiple root elements
- Add try-catch around appendXML with fallback mechanism
- Fallback uses temporary document to safely parse content
- Import nodes properly to avoid XML parsing errors
- Wrap fallback content in container div for safety
Addresses final code review feedback for more resilient content
insertion when dealing with malformed or complex HTML/XML.
Co-authored-by: jmiller-moko <230051081+jmiller-moko@users.noreply.github.com>
- Add error suppression to find commands
- Use || true for optional deletions
- Make clean work when media directory doesn't exist
- Change to search all directories instead of specific paths
Co-authored-by: jmiller-moko <230051081+jmiller-moko@users.noreply.github.com>
- Replace regex-based HTML manipulation with DOMDocument/XPath
- Use multiple XPath patterns to find content containers reliably
- Handle malformed HTML gracefully with libxml error suppression
- Add proper error logging in plugin enable function
- Display warning message if plugin auto-enable fails
- Log errors to Joomla log system for debugging
Addresses code review feedback for more robust HTML handling and
better error reporting.
Co-authored-by: jmiller-moko <230051081+jmiller-moko@users.noreply.github.com>
- Create DEPRECATED.md in src/ directory
- Explain migration from component to plugin
- Document architectural changes
- Provide quick migration steps
- Note that component files are for reference only
- Direct users to new plugin implementation
Co-authored-by: jmiller-moko <230051081+jmiller-moko@users.noreply.github.com>
- Change description from component to system plugin
- Update all sections to reflect parameter-based content storage
- Add Configuration section for plugin settings
- Replace component usage with plugin usage instructions
- Document forced slug reservation feature
- Add Migration from Component section
- Remove Database Schema section (no database needed)
- Update build commands for plugin
- Update version to 2.0.0
- Clarify that content is stored in plugin parameters
- Update all URLs to show /terms-of-service and /privacy-policy
Co-authored-by: jmiller-moko <230051081+jmiller-moko@users.noreply.github.com>
- Create plg_system_mokojoomtos plugin structure
- Add XML manifest with editor fields for Terms and Privacy content
- Implement slug reservation for terms-of-service and privacy-policy
- Add routing and display logic in plugin PHP file
- Handle offline mode access within plugin
- Create language files with all UI strings
- Add default CSS styling for content display
- Reserved slugs are readonly to ensure consistency
Co-authored-by: jmiller-moko <230051081+jmiller-moko@users.noreply.github.com>