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>
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>
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>
- 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>
- 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>
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>
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>
- 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>
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>
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>
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>
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>
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>