From a2362d540002269b59faafd0a95cdd132233433d Mon Sep 17 00:00:00 2001
From: Jonathan Miller
Date: Sun, 12 Jul 2026 20:44:10 -0500
Subject: [PATCH] @ feat(runbackup): opt-in auto-continue + manual continue on
pre-update screen
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
The pre-update/uninstall full-screen backup now shows an "Automatically
continue the update when the backup finishes" checkbox (ticked by
default, so the seamless flow is unchanged). If unticked, the screen
stops on completion and offers a link to the new backup record plus a
"Continue the update" button, so the user can hand back to Joomla
manually — a reliable fallback when auto-continue does not fire.
Also drop the hard-to-read `small` text class from the progress screen.
Claude-Session: https://claude.ai/code/session_01WbGBN9VyRK61zczYWcCQ2i
@
---
.../language/en-GB/com_mokosuitebackup.ini | 2 +
.../language/en-US/com_mokosuitebackup.ini | 2 +
.../tmpl/runbackup/default.php | 45 ++++++++++++++++---
3 files changed, 43 insertions(+), 6 deletions(-)
diff --git a/source/packages/com_mokosuitebackup/language/en-GB/com_mokosuitebackup.ini b/source/packages/com_mokosuitebackup/language/en-GB/com_mokosuitebackup.ini
index 191889e2..4d4bb101 100644
--- a/source/packages/com_mokosuitebackup/language/en-GB/com_mokosuitebackup.ini
+++ b/source/packages/com_mokosuitebackup/language/en-GB/com_mokosuitebackup.ini
@@ -349,6 +349,8 @@ COM_MOKOJOOMBACKUP_RUNBACKUP_CONTINUE_ANYWAY="Continue without backup"
COM_MOKOJOOMBACKUP_RUNBACKUP_BACK_TO_DASHBOARD="Back to dashboard"
COM_MOKOJOOMBACKUP_RUNBACKUP_VIEW_RECORD="View backup record"
COM_MOKOJOOMBACKUP_RUNBACKUP_LEAVE_WARNING="A backup is in progress. Leaving now will cancel it."
+COM_MOKOJOOMBACKUP_RUNBACKUP_AUTOCONTINUE="Automatically continue the update when the backup finishes"
+COM_MOKOJOOMBACKUP_RUNBACKUP_CONTINUE_UPDATE="Continue the update"
COM_MOKOJOOMBACKUP_CONFIG_CLEANUP="Cleanup Defaults"
COM_MOKOJOOMBACKUP_CONFIG_MAX_AGE="Max Backup Age (days)"
diff --git a/source/packages/com_mokosuitebackup/language/en-US/com_mokosuitebackup.ini b/source/packages/com_mokosuitebackup/language/en-US/com_mokosuitebackup.ini
index d344d799..7f32636b 100644
--- a/source/packages/com_mokosuitebackup/language/en-US/com_mokosuitebackup.ini
+++ b/source/packages/com_mokosuitebackup/language/en-US/com_mokosuitebackup.ini
@@ -71,6 +71,8 @@ COM_MOKOJOOMBACKUP_RUNBACKUP_CONTINUE_ANYWAY="Continue without backup"
COM_MOKOJOOMBACKUP_RUNBACKUP_BACK_TO_DASHBOARD="Back to dashboard"
COM_MOKOJOOMBACKUP_RUNBACKUP_VIEW_RECORD="View backup record"
COM_MOKOJOOMBACKUP_RUNBACKUP_LEAVE_WARNING="A backup is in progress. Leaving now will cancel it."
+COM_MOKOJOOMBACKUP_RUNBACKUP_AUTOCONTINUE="Automatically continue the update when the backup finishes"
+COM_MOKOJOOMBACKUP_RUNBACKUP_CONTINUE_UPDATE="Continue the update"
COM_MOKOJOOMBACKUP_CONFIG_CLEANUP="Cleanup Defaults"
COM_MOKOJOOMBACKUP_CONFIG_MAX_AGE="Max Backup Age (days)"
diff --git a/source/packages/com_mokosuitebackup/tmpl/runbackup/default.php b/source/packages/com_mokosuitebackup/tmpl/runbackup/default.php
index b3c7c9ae..6b2f0a3d 100644
--- a/source/packages/com_mokosuitebackup/tmpl/runbackup/default.php
+++ b/source/packages/com_mokosuitebackup/tmpl/runbackup/default.php
@@ -86,6 +86,7 @@ $config = [
'dashboard' => Text::_('COM_MOKOJOOMBACKUP_RUNBACKUP_BACK_TO_DASHBOARD'),
'viewRecord' => Text::_('COM_MOKOJOOMBACKUP_RUNBACKUP_VIEW_RECORD'),
'leaveWarn' => Text::_('COM_MOKOJOOMBACKUP_RUNBACKUP_LEAVE_WARNING'),
+ 'continueUpdate' => Text::_('COM_MOKOJOOMBACKUP_RUNBACKUP_CONTINUE_UPDATE'),
],
];
@@ -117,7 +118,17 @@ $this->getDocument()->addStyleSheet(Uri::root(true) . '/media/com_mokosuitebacku
-
+
+
+
+
+
+
+
+
+
@@ -153,7 +164,9 @@ $this->getDocument()->addStyleSheet(Uri::root(true) . '/media/com_mokosuitebacku
retry: document.getElementById('msb-rb-retry'),
record: document.getElementById('msb-rb-record'),
continue: document.getElementById('msb-rb-continue'),
- dashboard: document.getElementById('msb-rb-dashboard')
+ dashboard: document.getElementById('msb-rb-dashboard'),
+ autocontinue: document.getElementById('msb-rb-autocontinue'),
+ autocontinueWrap: document.getElementById('msb-rb-autocontinue-wrap')
};
function setBar(pct, striped) {
@@ -199,10 +212,30 @@ $this->getDocument()->addStyleSheet(Uri::root(true) . '/media/com_mokosuitebacku
try { await post({ task: 'ajax.preupdateAck', action: CFG.action || '' }); } catch (e) {}
if (CFG.returnUrl) {
- /* Pre-update / pre-uninstall flow: continue the original action.
- No "view record" button here — we're handing back to Joomla. */
- setStatus(L.continuing || 'Continuing…');
- window.setTimeout(function () { window.location.href = CFG.returnUrl; }, 1200);
+ /* Pre-update / pre-uninstall flow. If "auto-continue" is ticked
+ (default) hand back to Joomla automatically; otherwise stop here
+ and offer a link to the new backup record plus a manual
+ "Continue the update" button. */
+ if (el.autocontinueWrap) { el.autocontinueWrap.classList.add('d-none'); }
+
+ var autoContinue = !el.autocontinue || el.autocontinue.checked;
+
+ if (autoContinue) {
+ setStatus(L.continuing || 'Continuing…');
+ window.setTimeout(function () { window.location.href = CFG.returnUrl; }, 1200);
+ } else {
+ setStatus(L.complete || 'Backup complete');
+ showActions();
+
+ if (lastRecordId > 0 && CFG.recordUrl) {
+ showBtn(el.record, L.viewRecord || 'View backup record',
+ CFG.recordUrl.replace('__MSBID__', String(lastRecordId)));
+ }
+
+ el.continue.classList.remove('btn-warning');
+ el.continue.classList.add('btn-success');
+ showBtn(el.continue, L.continueUpdate || 'Continue the update', CFG.returnUrl);
+ }
} else {
/* Manual "Backup Now": offer to view the record that was just made. */
setStatus(L.complete || 'Backup complete');