From fa51e516fd61f8e305eba70148f6e1565a99b704 Mon Sep 17 00:00:00 2001 From: Jonathan Miller <1+jmiller@noreply.git.mokoconsulting.tech> Date: Sun, 31 May 2026 00:54:46 +0000 Subject: [PATCH 1/5] chore: sync updates.xml 02.27.00 from main [skip ci] --- updates.xml | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/updates.xml b/updates.xml index ba7ac37f..a9207621 100644 --- a/updates.xml +++ b/updates.xml @@ -1,7 +1,7 @@ @@ -70,16 +70,16 @@ site 02.27.00-rc 2026-05-31 - https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS/releases/tag/release-candidate + https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS/releases/tag/release-candidate - https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS/releases/download/release-candidate/pkg_mokowaas-02.27.00-rc.zip + https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS/releases/download/release-candidate/pkg_mokowaas-02.27.00-rc.zip 6c3013509a329572fe51fa75104c7c7cb82aa128de22a2c80b714ada18d4ebe2 rc https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS/raw/branch/main/CHANGELOG.md Moko Consulting https://mokoconsulting.tech - + Package - MokoWaaS @@ -87,17 +87,17 @@ pkg_mokowaas package site - 02.26.00 - 2026-05-30 - https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS/releases/tag/stable + 02.27.00 + 2026-05-31 + https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS/releases/tag/stable - https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS/releases/download/stable/pkg_mokowaas-02.26.00.zip + https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS/releases/download/stable/pkg_mokowaas-02.27.00.zip - e5b47e71c97e67cb70f14c9c6c559ce1fbc841a60c7d0c75ee00ec150f3d88b7 + 5f0fa70ddde48001601dd33f0f4db465d75e902dc88ca86bbc4fb1ea16136008 stable https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS/raw/branch/main/CHANGELOG.md Moko Consulting https://mokoconsulting.tech - + -- 2.52.0 From e008c9d79dc58587c076b46905c64b86e04ed56b Mon Sep 17 00:00:00 2001 From: Jonathan Miller Date: Sat, 30 May 2026 20:01:57 -0500 Subject: [PATCH 2/5] fix: table selections not saving, clear next-reset when demo off - Remove extra [] from select name (caused nested array storage) - Flatten nested arrays when reading back broken saved values - NextResetField shows "Demo mode is off" when disabled - Clear demo_next_reset param when demo mode is turned off Authored-by: Moko Consulting Co-Authored-By: Claude Opus 4.6 (1M context) --- .../plg_system_mokowaas/Extension/MokoWaaS.php | 11 +++++++++-- .../plg_system_mokowaas/Field/NextResetField.php | 14 ++++++++++++++ .../Field/SnapshotTablesField.php | 7 ++++++- 3 files changed, 29 insertions(+), 3 deletions(-) diff --git a/src/packages/plg_system_mokowaas/Extension/MokoWaaS.php b/src/packages/plg_system_mokowaas/Extension/MokoWaaS.php index e54f9c47..3be1dba8 100644 --- a/src/packages/plg_system_mokowaas/Extension/MokoWaaS.php +++ b/src/packages/plg_system_mokowaas/Extension/MokoWaaS.php @@ -878,6 +878,11 @@ class MokoWaaS extends CMSPlugin implements BootableExtensionInterface $changed = true; } } + elseif ($params->get('demo_next_reset', '') !== '') + { + $params->set('demo_next_reset', ''); + $changed = true; + } // Demo Mode: Take Snapshot Now if ((int) $params->get('demo_take_snapshot_now', 0) === 1) @@ -1736,10 +1741,12 @@ class MokoWaaS extends CMSPlugin implements BootableExtensionInterface $tablesParam = $this->params->get('demo_snapshot_tables', ''); - // Handle both checkbox array and legacy newline-separated textarea + // Handle array, nested array, or legacy newline-separated textarea if (is_array($tablesParam)) { - $tables = array_filter($tablesParam); + $tables = array_filter(array_map(function ($v) { + return is_array($v) ? reset($v) : $v; + }, $tablesParam)); } else { diff --git a/src/packages/plg_system_mokowaas/Field/NextResetField.php b/src/packages/plg_system_mokowaas/Field/NextResetField.php index 964ce5dd..169d545c 100644 --- a/src/packages/plg_system_mokowaas/Field/NextResetField.php +++ b/src/packages/plg_system_mokowaas/Field/NextResetField.php @@ -32,6 +32,20 @@ class NextResetField extends FormField protected function getInput() { + // Check if demo mode is enabled via the form data + $demoEnabled = false; + + if ($this->form) + { + $demoEnabled = (int) $this->form->getValue('demo_mode_enabled', 'params', 0) === 1; + } + + if (!$demoEnabled) + { + return 'Demo mode is off' + . ''; + } + if (empty($this->value)) { return '
No reset scheduled — save the plugin config to calculate.
'; diff --git a/src/packages/plg_system_mokowaas/Field/SnapshotTablesField.php b/src/packages/plg_system_mokowaas/Field/SnapshotTablesField.php index 9fbdc401..026d745d 100644 --- a/src/packages/plg_system_mokowaas/Field/SnapshotTablesField.php +++ b/src/packages/plg_system_mokowaas/Field/SnapshotTablesField.php @@ -88,6 +88,11 @@ class SnapshotTablesField extends FormField $selected = (array) $selected; + // Flatten nested arrays from broken save format [["#__content"],["#__categories"]] + $selected = array_map(function ($v) { + return is_array($v) ? reset($v) : $v; + }, $selected); + // Group tables $grouped = []; @@ -116,7 +121,7 @@ class SnapshotTablesField extends FormField // Build HTML select with optgroups $size = (int) ($this->element['size'] ?? 15); - $html = '