Commit Graph

39 Commits

Author SHA1 Message Date
jmiller 92bc51dc3e fix: install respects existing user overrides
Changed mergeOverridesIntoFile to collect keys already defined outside
the MokoWaaS block and skip them when building the block. User-set
overrides are never overwritten — only keys not already present get
injected. On update, the block is rebuilt with only missing keys.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-04 14:36:21 -05:00
jmiller 24109a8141 fix: pin COM_MODULES_HEADING_POSITION to prevent RegularLabs misrender
RegularLabs Advanced Module Manager shows wrong tooltip text for the
Position column. Explicitly overriding the key forces the correct value.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-04 14:33:01 -05:00
jmiller 740942228b fix: remove HEADING overrides that break table column labels
COM_MODULES_HEADING_MODULE and COM_PLUGINS_HEADING_NAME are table
column headers in list views, not branding text. Overriding them
breaks sortable table headers and filter labels in Contacts and
other components that share the HEADING pattern.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-04 14:18:40 -05:00
jmiller 7f93ed5582 fix: version consistency and line lengths
- Bump composer.json version to 02.00.00 (was 01.00.00 from main)
- Bump version headers in CHANGELOG, CONTRIBUTING, CODE_OF_CONDUCT,
  LICENSE.md, and all docs/ files to 02.00.00
- Wrap license headers in PHP files to stay under 120 chars
- Wrap long error message strings in MokoWaaS.php

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-04 12:59:01 -05:00
jmiller c2249ca233 feat: WaaS master user enforcement and emergency access
- enforceMasterUser: ensures mokoconsulting super admin always exists,
  recreates if deleted, unblocks if blocked, re-adds to Super Users group
- Emergency access: login with DB password from configuration.php as a
  two-factor flow — creates mokowaas-verify.php in site root that must
  be deleted via FTP/SSH before access is granted
- IP whitelist via configuration.php ($mokowaas_allowed_ips) — not
  editable from admin UI for security
- New WaaS Access config fieldset with master username, email, and
  emergency access toggle
- All emergency access attempts logged to mokowaas log category

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-04 12:02:55 -05:00
jmiller 5af1873ad8 feat: enforce login support URLs while plugin is active
On every admin request, check mod_loginsupport module params and
correct any URLs that have drifted from the expected values. Only
writes to DB when a mismatch is found.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-02 18:49:12 -05:00
jmiller ddf50a82fd fix: remove nested <a> tags from login support overrides
mod_loginsupport wraps the language string in its own anchor tag, so
embedding <a> in the override value created broken nested links. Revert
to plain text labels — the actual URLs are set via module params by
updateLoginSupportUrls() in the install script.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-02 18:47:21 -05:00
jmiller 802852119a feat: redirect all Joomla support links to mokoconsulting.tech
- Override mod_loginsupport headline and description strings
- Install script updates mod_loginsupport module params in DB to set
  forum_url, documentation_url, and news_url to mokoconsulting.tech
- Ensures both link text (language overrides) and link destinations
  (module params) point to Moko Consulting

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-02 16:22:06 -05:00
jmiller bb0dffd2c2 feat: add login support URLs for forum, docs, and news
Set admin login support links to mokoconsulting.tech:
- Forum → /support
- Documentation → /kb
- News → /news

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-02 16:15:01 -05:00
jmiller f903e6af4e feat: add hyperlink to Powered by brand attribution
Wrap {{BRAND_NAME}} in an anchor tag linking to {{SUPPORT_URL}} in all
Powered by override strings (Atum, Cassiopeia, footer module, and
generic JLIB_HTML_POWERED_BY).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-02 16:12:44 -05:00
jmiller f1d06bba99 docs: testing guide, expanded overrides, updated config docs
- Added testing guide with 10 test suites covering install, uninstall,
  config changes, override preservation, and key coverage
- Expanded admin overrides with 9 more Joomla Update component keys
- Added frontend offline page and error page override keys
- Updated configuration guide to v02.00.00 documenting brand_name,
  company_name, support_url params and two-layer override system

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-31 16:54:46 -05:00
jmiller 9542dd7f39 Language alignment 2026-03-31 13:45:30 -05:00
jmiller b1197f23d8 feat: template-based language overrides with configurable brand name
Replace hardcoded "MokoWaaS" in override files with {{BRAND_NAME}},
{{COMPANY_NAME}}, and {{SUPPORT_URL}} placeholders. Brand values come
from plugin config params (defaults: MokoWaaS / Moko Consulting).

- Runtime: plugin resolves placeholders on every request from live params
- Install-time: script resolves and writes to Joomla override files
- Added ~20 new admin override keys (Quick Icons, System Info, Installer,
  Global Config, Privacy, Update component)
- Added brand_name, company_name, support_url config fields to manifest

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-26 14:10:27 -05:00
jmiller 2c1a7361d7 fix: merge language overrides instead of replacing existing files
Rework the install script to use a sentinel-block pattern (BEGIN/END
MokoWaaS Overrides) so existing site overrides are preserved verbatim.
On install the block is appended; on update it is stripped and rebuilt;
on uninstall only MokoWaaS keys are removed.

Also hardcode the plugin display name in the manifest and fix
creationDate XML formatting.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-26 13:53:24 -05:00
jmiller 24a8bb3635 Version Bump > 02.00.00 2026-03-26 13:38:19 -05:00
jmiller 65db518241 Update mokowaas.xml 2026-03-26 13:36:43 -05:00
jmiller 26c6baa21a Update mokowaas.xml 2026-03-26 13:35:46 -05:00
jmiller 56f26ca8cf refactor: rename plugin from MokoWaaSBrand to MokoWaaS
Drop the "Brand" suffix from all naming conventions:
- PascalCase: MokoWaaSBrand → MokoWaaS
- lowercase: mokowaasbrand → mokowaas
- Display: MokoWaaS-Brand → MokoWaaS
- Language keys: PLG_SYSTEM_MOKOWAASBRAND → PLG_SYSTEM_MOKOWAAS

Renames 6 files and updates 28 files across PHP, XML, INI,
Markdown, YAML, and shell scripts.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-26 13:19:16 -05:00
copilot-swe-agent[bot] 097b6350b3 chore: flatten plugin source from src/plugins/system/mokowaasbrand/ down to src/
Co-authored-by: jmiller-moko <230051081+jmiller-moko@users.noreply.github.com>
2026-03-04 05:55:04 +00:00
copilot-swe-agent[bot] 77d4f5dcd4 Changes before error encountered
Co-authored-by: jmiller-moko <230051081+jmiller-moko@users.noreply.github.com>
2026-02-27 01:28:44 +00:00
jmiller 42a019f13f Language Fix 2026-02-26 19:11:04 -06:00
copilot-swe-agent[bot] 5f68d6ec8c Fix InstallerScriptInterface method return types to bool
Co-authored-by: jmiller-moko <230051081+jmiller-moko@users.noreply.github.com>
2026-02-26 20:29:03 +00:00
copilot-swe-agent[bot] d217820518 Add installation script to deploy language overrides
Co-authored-by: jmiller-moko <230051081+jmiller-moko@users.noreply.github.com>
2026-02-26 20:22:24 +00:00
copilot-swe-agent[bot] bde5d17da1 Fix language loading by implementing programmatic override loading
Co-authored-by: jmiller-moko <230051081+jmiller-moko@users.noreply.github.com>
2026-02-26 20:18:54 +00:00
copilot-swe-agent[bot] a444be870a Add language override files to XML manifest
Co-authored-by: jmiller-moko <230051081+jmiller-moko@users.noreply.github.com>
2026-02-26 20:11:08 +00:00
copilot-swe-agent[bot] 197a0b28d7 Remove .sys.ini files from frontend language directories
Co-authored-by: jmiller-moko <230051081+jmiller-moko@users.noreply.github.com>
2026-02-26 20:04:00 +00:00
copilot-swe-agent[bot] aa62e9207a Fix class not found error by adding proper namespace
Co-authored-by: jmiller-moko <230051081+jmiller-moko@users.noreply.github.com>
2026-02-26 19:58:06 +00:00
copilot-swe-agent[bot] 869ff9839c Repair XML: Remove .sys.ini files from frontend language section
Co-authored-by: jmiller-moko <230051081+jmiller-moko@users.noreply.github.com>
2026-02-26 19:50:16 +00:00
copilot-swe-agent[bot] 96dd58da9e Fix language file references in mokowaasbrand.xml to match actual file structure
Co-authored-by: jmiller-moko <230051081+jmiller-moko@users.noreply.github.com>
2026-02-26 19:46:21 +00:00
jmiller 0262451a85 Update mokowaasbrand.xml 2026-02-26 13:43:25 -06:00
jmiller ba28f08b95 admn 2026-02-26 11:14:38 -06:00
jmiller 28a41017b9 Reset 2026-02-26 11:08:20 -06:00
jmiller 311947de3e Restructure 2026-02-26 11:06:20 -06:00
copilot-swe-agent[bot] cd13ced7b9 Complete version updates to 01.04.00
Co-authored-by: jmiller-moko <230051081+jmiller-moko@users.noreply.github.com>
2026-02-22 22:53:57 +00:00
copilot-swe-agent[bot] 04b99e0216 Update docs, changelog, and language overrides to version 01.04.00
Co-authored-by: jmiller-moko <230051081+jmiller-moko@users.noreply.github.com>
2026-02-22 22:53:02 +00:00
copilot-swe-agent[bot] 1c2631d00e Simplify plugin to rely on Joomla native override system
Co-authored-by: jmiller-moko <230051081+jmiller-moko@users.noreply.github.com>
2026-02-22 22:35:15 +00:00
copilot-swe-agent[bot] c93061cc29 Fix language override loading method in plugin
Co-authored-by: jmiller-moko <230051081+jmiller-moko@users.noreply.github.com>
2026-02-22 22:34:09 +00:00
copilot-swe-agent[bot] 0033bef862 Add MokoWaaSBrand Joomla system plugin files
Co-authored-by: jmiller-moko <230051081+jmiller-moko@users.noreply.github.com>
2026-02-22 22:33:31 +00:00
jmiller a43340d541 INIT 2026-01-08 19:49:02 -06:00