c0ecf6ce73
Universal: PR Check / Branch Policy (pull_request) Successful in 1s
Universal: PR Check / Require Docs Update (pull_request) Has been skipped
Universal: PR Check / Wiki Update Reminder (pull_request) Has been skipped
Universal: PR Check / Secret Scan (pull_request) Successful in 4s
RC Revert / Rename rc/ back to dev/ (pull_request) Has been skipped
Generic: Project CI / Lint & Validate (pull_request) Successful in 9s
Branch Cleanup / Delete merged branch (pull_request) Successful in 1s
Universal: PR Check / Validate PR (pull_request) Failing after 7s
Joomla: Metadata Validation / Validate Joomla Metadata (pull_request) Successful in 31s
Generic: Project CI / Tests (pull_request) Has been cancelled
Universal: PR Check / Build RC Package (pull_request) Has been cancelled
Universal: PR Check / Report Issues (pull_request) Has been cancelled
Opt-in param preupdate_auto_intercept (off by default). When enabled the injected update-page script wraps window.Joomla.submitbutton so clicking the toolbar Update button first pops the progress modal, runs the pre-update backup, and re-issues the original update task on success. - Matches only update.update / update.install (not Find Updates / Clear Cache, which also start with 'update'). - Reuses the phase-1 overlay + ajax.preupdateAck throttle so the subsequent server-side onExtensionBeforeUpdate backup is skipped. - The manual 'Back up now' notice remains a fallback for flows that don't route through submitbutton (e.g. some com_joomlaupdate paths). Refs #196 Claude-Session: https://claude.ai/code/session_01WbGBN9VyRK61zczYWcCQ2i
293 lines
8.0 KiB
XML
293 lines
8.0 KiB
XML
<?xml version="1.0" encoding="UTF-8"?>
|
|
<!--
|
|
* @package MokoSuiteBackup
|
|
* @subpackage com_mokosuitebackup
|
|
* @author Moko Consulting <hello@mokoconsulting.tech>
|
|
* @copyright Copyright (C) 2026 Moko Consulting. All rights reserved.
|
|
* @license GNU General Public License version 3 or later; see LICENSE
|
|
-->
|
|
<config>
|
|
<fieldset name="general" label="COM_MOKOJOOMBACKUP_CONFIG_GENERAL">
|
|
<field
|
|
name="default_backup_dir"
|
|
type="FolderPicker"
|
|
label="COM_MOKOJOOMBACKUP_CONFIG_DEFAULT_BACKUP_DIR"
|
|
description="COM_MOKOJOOMBACKUP_CONFIG_DEFAULT_BACKUP_DIR_DESC"
|
|
default="[DEFAULT_DIR]"
|
|
addfieldprefix="Joomla\Component\MokoSuiteBackup\Administrator\Field"
|
|
/>
|
|
<field
|
|
name="default_profile"
|
|
type="sql"
|
|
label="COM_MOKOJOOMBACKUP_CONFIG_DEFAULT_PROFILE"
|
|
description="COM_MOKOJOOMBACKUP_CONFIG_DEFAULT_PROFILE_DESC"
|
|
query="SELECT id AS value, CONCAT(title, ' (#', id, ')') AS text FROM #__mokosuitebackup_profiles WHERE published = 1 ORDER BY id ASC"
|
|
default="1"
|
|
>
|
|
<option value="1">Default Backup Profile (#1)</option>
|
|
</field>
|
|
<field
|
|
name="show_update_notice"
|
|
type="radio"
|
|
label="COM_MOKOJOOMBACKUP_CONFIG_SHOW_UPDATE_NOTICE"
|
|
description="COM_MOKOJOOMBACKUP_CONFIG_SHOW_UPDATE_NOTICE_DESC"
|
|
default="1"
|
|
class="btn-group"
|
|
>
|
|
<option value="1">JYES</option>
|
|
<option value="0">JNO</option>
|
|
</field>
|
|
</fieldset>
|
|
|
|
<fieldset name="defaults" label="COM_MOKOJOOMBACKUP_CONFIG_DEFAULTS">
|
|
<field
|
|
name="default_archive_format"
|
|
type="list"
|
|
label="COM_MOKOJOOMBACKUP_CONFIG_DEFAULT_FORMAT"
|
|
description="COM_MOKOJOOMBACKUP_CONFIG_DEFAULT_FORMAT_DESC"
|
|
default="zip"
|
|
>
|
|
<option value="zip">ZIP</option>
|
|
<option value="tar.gz">tar.gz</option>
|
|
<option value="7z">7z</option>
|
|
</field>
|
|
<field
|
|
name="default_mokorestore"
|
|
type="list"
|
|
label="COM_MOKOJOOMBACKUP_CONFIG_DEFAULT_MOKORESTORE"
|
|
description="COM_MOKOJOOMBACKUP_CONFIG_DEFAULT_MOKORESTORE_DESC"
|
|
default="0"
|
|
>
|
|
<option value="0">COM_MOKOJOOMBACKUP_MOKORESTORE_NONE</option>
|
|
<option value="1">COM_MOKOJOOMBACKUP_MOKORESTORE_WRAPPED</option>
|
|
<option value="standalone">COM_MOKOJOOMBACKUP_MOKORESTORE_STANDALONE</option>
|
|
</field>
|
|
<field
|
|
name="default_sanitize_passwords"
|
|
type="radio"
|
|
label="COM_MOKOJOOMBACKUP_CONFIG_DEFAULT_SANITIZE_PW"
|
|
description="COM_MOKOJOOMBACKUP_CONFIG_DEFAULT_SANITIZE_PW_DESC"
|
|
default="0"
|
|
class="btn-group"
|
|
>
|
|
<option value="1">JYES</option>
|
|
<option value="0">JNO</option>
|
|
</field>
|
|
<field
|
|
name="default_sanitize_emails"
|
|
type="radio"
|
|
label="COM_MOKOJOOMBACKUP_CONFIG_DEFAULT_SANITIZE_EMAIL"
|
|
description="COM_MOKOJOOMBACKUP_CONFIG_DEFAULT_SANITIZE_EMAIL_DESC"
|
|
default="0"
|
|
class="btn-group"
|
|
>
|
|
<option value="1">JYES</option>
|
|
<option value="0">JNO</option>
|
|
</field>
|
|
<field
|
|
name="default_sanitize_sessions"
|
|
type="radio"
|
|
label="COM_MOKOJOOMBACKUP_CONFIG_DEFAULT_SANITIZE_SESS"
|
|
description="COM_MOKOJOOMBACKUP_CONFIG_DEFAULT_SANITIZE_SESS_DESC"
|
|
default="1"
|
|
class="btn-group"
|
|
>
|
|
<option value="1">JYES</option>
|
|
<option value="0">JNO</option>
|
|
</field>
|
|
<field
|
|
name="log_retention_days"
|
|
type="number"
|
|
label="COM_MOKOJOOMBACKUP_CONFIG_LOG_RETENTION"
|
|
description="COM_MOKOJOOMBACKUP_CONFIG_LOG_RETENTION_DESC"
|
|
default="90"
|
|
min="0"
|
|
max="365"
|
|
/>
|
|
</fieldset>
|
|
|
|
<fieldset name="webcron" label="COM_MOKOJOOMBACKUP_CONFIG_WEBCRON">
|
|
<field
|
|
name="webcron_secret"
|
|
type="WebcronSecret"
|
|
label="COM_MOKOJOOMBACKUP_CONFIG_WEBCRON_SECRET"
|
|
description="COM_MOKOJOOMBACKUP_CONFIG_WEBCRON_SECRET_DESC"
|
|
default=""
|
|
filter="string"
|
|
maxlength="64"
|
|
addfieldprefix="Joomla\Component\MokoSuiteBackup\Administrator\Field"
|
|
/>
|
|
<field
|
|
name="webcron_enabled"
|
|
type="radio"
|
|
label="COM_MOKOJOOMBACKUP_CONFIG_WEBCRON_ENABLED"
|
|
description="COM_MOKOJOOMBACKUP_CONFIG_WEBCRON_ENABLED_DESC"
|
|
default="0"
|
|
class="btn-group"
|
|
>
|
|
<option value="1">JYES</option>
|
|
<option value="0">JNO</option>
|
|
</field>
|
|
<field
|
|
name="webcron_ip_whitelist"
|
|
type="IpWhitelist"
|
|
label="COM_MOKOJOOMBACKUP_CONFIG_WEBCRON_IP"
|
|
description="COM_MOKOJOOMBACKUP_CONFIG_WEBCRON_IP_DESC"
|
|
default=""
|
|
filter="string"
|
|
addfieldprefix="Joomla\Component\MokoSuiteBackup\Administrator\Field"
|
|
/>
|
|
</fieldset>
|
|
|
|
<fieldset name="preaction" label="COM_MOKOJOOMBACKUP_CONFIG_PREACTION">
|
|
<field
|
|
name="backup_before_update"
|
|
type="radio"
|
|
label="COM_MOKOJOOMBACKUP_CONFIG_BACKUP_BEFORE_UPDATE"
|
|
description="COM_MOKOJOOMBACKUP_CONFIG_BACKUP_BEFORE_UPDATE_DESC"
|
|
default="0"
|
|
class="btn-group"
|
|
>
|
|
<option value="1">JYES</option>
|
|
<option value="0">JNO</option>
|
|
</field>
|
|
<field
|
|
name="preupdate_auto_intercept"
|
|
type="radio"
|
|
label="COM_MOKOJOOMBACKUP_CONFIG_PREUPDATE_AUTO_INTERCEPT"
|
|
description="COM_MOKOJOOMBACKUP_CONFIG_PREUPDATE_AUTO_INTERCEPT_DESC"
|
|
default="0"
|
|
class="btn-group"
|
|
showon="backup_before_update:1"
|
|
>
|
|
<option value="1">JYES</option>
|
|
<option value="0">JNO</option>
|
|
</field>
|
|
<field
|
|
name="backup_before_uninstall"
|
|
type="radio"
|
|
label="COM_MOKOJOOMBACKUP_CONFIG_BACKUP_BEFORE_UNINSTALL"
|
|
description="COM_MOKOJOOMBACKUP_CONFIG_BACKUP_BEFORE_UNINSTALL_DESC"
|
|
default="0"
|
|
class="btn-group"
|
|
>
|
|
<option value="1">JYES</option>
|
|
<option value="0">JNO</option>
|
|
</field>
|
|
</fieldset>
|
|
|
|
<fieldset name="cleanup" label="COM_MOKOJOOMBACKUP_CONFIG_CLEANUP">
|
|
<field
|
|
name="max_age_days"
|
|
type="number"
|
|
label="COM_MOKOJOOMBACKUP_CONFIG_MAX_AGE"
|
|
description="COM_MOKOJOOMBACKUP_CONFIG_MAX_AGE_DESC"
|
|
default="30"
|
|
min="1"
|
|
max="365"
|
|
/>
|
|
<field
|
|
name="max_backups"
|
|
type="number"
|
|
label="COM_MOKOJOOMBACKUP_CONFIG_MAX_BACKUPS"
|
|
description="COM_MOKOJOOMBACKUP_CONFIG_MAX_BACKUPS_DESC"
|
|
default="10"
|
|
min="1"
|
|
max="100"
|
|
/>
|
|
</fieldset>
|
|
|
|
<fieldset name="snapshot_cleanup" label="COM_MOKOJOOMBACKUP_CONFIG_SNAPSHOT_RETENTION">
|
|
<field
|
|
name="snapshot_retention_count"
|
|
type="number"
|
|
label="COM_MOKOJOOMBACKUP_CONFIG_SNAPSHOT_MAX_COUNT"
|
|
description="COM_MOKOJOOMBACKUP_CONFIG_SNAPSHOT_MAX_COUNT_DESC"
|
|
default="20"
|
|
min="0"
|
|
max="100"
|
|
/>
|
|
<field
|
|
name="snapshot_retention_days"
|
|
type="number"
|
|
label="COM_MOKOJOOMBACKUP_CONFIG_SNAPSHOT_MAX_AGE"
|
|
description="COM_MOKOJOOMBACKUP_CONFIG_SNAPSHOT_MAX_AGE_DESC"
|
|
default="30"
|
|
min="0"
|
|
max="365"
|
|
/>
|
|
</fieldset>
|
|
|
|
<fieldset name="notifications" label="COM_MOKOJOOMBACKUP_CONFIG_NOTIFICATIONS">
|
|
<field
|
|
name="notify_email"
|
|
type="text"
|
|
label="COM_MOKOJOOMBACKUP_CONFIG_NOTIFY_EMAIL"
|
|
description="COM_MOKOJOOMBACKUP_CONFIG_NOTIFY_EMAIL_DESC"
|
|
default=""
|
|
filter="string"
|
|
/>
|
|
<field
|
|
name="notify_on_success"
|
|
type="radio"
|
|
label="COM_MOKOJOOMBACKUP_CONFIG_NOTIFY_SUCCESS"
|
|
description="COM_MOKOJOOMBACKUP_CONFIG_NOTIFY_SUCCESS_DESC"
|
|
default="0"
|
|
class="btn-group"
|
|
>
|
|
<option value="1">JYES</option>
|
|
<option value="0">JNO</option>
|
|
</field>
|
|
<field
|
|
name="notify_on_failure"
|
|
type="radio"
|
|
label="COM_MOKOJOOMBACKUP_CONFIG_NOTIFY_FAILURE"
|
|
description="COM_MOKOJOOMBACKUP_CONFIG_NOTIFY_FAILURE_DESC"
|
|
default="1"
|
|
class="btn-group"
|
|
>
|
|
<option value="1">JYES</option>
|
|
<option value="0">JNO</option>
|
|
</field>
|
|
</fieldset>
|
|
|
|
<fieldset name="ntfy" label="COM_MOKOJOOMBACKUP_CONFIG_NTFY">
|
|
<field
|
|
name="ntfy_server"
|
|
type="text"
|
|
label="COM_MOKOJOOMBACKUP_CONFIG_NTFY_SERVER"
|
|
description="COM_MOKOJOOMBACKUP_CONFIG_NTFY_SERVER_DESC"
|
|
default="https://ntfy.mokoconsulting.tech"
|
|
filter="url"
|
|
/>
|
|
<field
|
|
name="ntfy_topic"
|
|
type="text"
|
|
label="COM_MOKOJOOMBACKUP_CONFIG_NTFY_TOPIC"
|
|
description="COM_MOKOJOOMBACKUP_CONFIG_NTFY_TOPIC_DESC"
|
|
default=""
|
|
filter="string"
|
|
/>
|
|
<field
|
|
name="ntfy_token"
|
|
type="password"
|
|
label="COM_MOKOJOOMBACKUP_CONFIG_NTFY_TOKEN"
|
|
description="COM_MOKOJOOMBACKUP_CONFIG_NTFY_TOKEN_DESC"
|
|
default=""
|
|
/>
|
|
</fieldset>
|
|
|
|
<fieldset name="permissions" label="JCONFIG_PERMISSIONS_LABEL"
|
|
description="JCONFIG_PERMISSIONS_DESC">
|
|
<field
|
|
name="rules"
|
|
type="rules"
|
|
label="JCONFIG_PERMISSIONS_LABEL"
|
|
filter="rules"
|
|
validate="rules"
|
|
component="com_mokosuitebackup"
|
|
section="component"
|
|
/>
|
|
</fieldset>
|
|
</config>
|