FolderPickerField: shows resolved placeholder values below input as
badges (e.g. [HOME]=/home/user, [host]=example.com), plus full
resolved path. Updates live as user types.
BackupsController::start(): accept CSRF token from both GET and POST
so the "Run Backup Now" link button on profile edit works without
triggering "security token did not match" error.
Both Backup Directory and Archive Name Format fields now show clickable
placeholder tags below the input. Clicking a tag inserts the placeholder
at the current cursor position using selectionStart/End.
- FolderPickerField: pills for [HOME], [DEFAULT_DIR], [host], [site_name],
[date], [profile_id], [profile_name], [type]
- PlaceholderTextField: new custom field type used by archive_name_format,
configurable placeholders via XML attribute
- Cursor position preserved after insert, input event dispatched for
live status updates
- Default backup_dir is now ../backups (relative to JPATH_ROOT),
which resolves outside public_html on most hosting setups
- Added BackupDirectory::normalizePath() to resolve ../ segments
without requiring the path to exist on disk
- Added BackupDirectory::portablize() to auto-detect absolute paths
and replace them with portable placeholders ([HOME], ../backups)
- ProfileTable::check() auto-normalizes backup_dir on save
- Install postflight auto-migrates old in-webroot defaults to ../backups
- Dashboard warning now checks resolved path instead of string matching
- .htaccess protection only applied when directory is inside web root
- browseDir() now resolves paths via BackupDirectory::resolve() before
permission check, fixing "access denied" when browsing from [DEFAULT_DIR]
- SQL default for backup_dir changed to [DEFAULT_DIR] placeholder
- Added help button (?) next to Browse that opens a modal listing all
available placeholders with examples and recommended paths
Renames all sub-extensions from mokojoombackup to mokosuitebackup
(package, component, 7 plugins, language files, manifests).
Adds [HOME] placeholder to BackupDirectory and PlaceholderResolver
so users can set backup_dir to [HOME]/backups (outside web root).
Fixes folder browser "access denied" on PHP-FPM shared hosting
where getenv('HOME') returns empty by adding POSIX and JPATH_ROOT
fallback detection.