feat(plugin): v01.00.00 — Joomla 6, generic offline page access #20

Closed
jmiller-moko wants to merge 28 commits from dev/01.00.00 into main

28 Commits

Author SHA1 Message Date
jmiller 9d3c3e3a10 fix: sync updates.xml from main [skip ci]
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-08 00:34:38 -05:00
jmiller e71a261188 ci: sync [skip ci]
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-07 23:27:52 -05:00
jmiller de4f4db037 ci: sync workflows [skip ci]
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-07 21:12:13 -05:00
jmiller d154d70d9c ci: sync workflows [skip ci]
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-07 20:06:27 -05:00
jmiller e627862cc0 ci: sync workflows [skip ci]
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-07 19:47:59 -05:00
jmiller eb3d09159a ci: sync workflows from main [skip ci]
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-07 19:29:08 -05:00
jmiller 37619c41cd ci: sync Joomla workflows + updates.xml from main
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-07 19:09:26 -05:00
jmiller 50463ae551 ci: sync AI instructions from main
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-07 19:07:06 -05:00
jmiller f44d72a7db ci: sync workflows from main
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-07 18:46:53 -05:00
jmiller 50276cf495 ci: sync workflows from main
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-07 14:31:00 -05:00
jmiller 13a9bbd5b0 fix: update all workflows to latest MokoStandards v04.04 templates [skip ci]
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-02 22:54:25 -05:00
jmiller 4961ce95e0 fix: update all workflows to latest MokoStandards v04.04 templates [skip ci]
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-02 21:34:57 -05:00
jmiller bbc453c567 fix: update .gitignore to platform-specific template (v04.05) [skip ci]
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-02 20:29:12 -05:00
jmiller 2984198f05 Merge branch 'dev/01.00.00' of https://github.com/mokoconsulting-tech/MokoJoomTOS into dev/01.00.00
# Conflicts:
#	.github/workflows/auto-dev-issue.yml
#	.github/workflows/auto-release.yml
#	.github/workflows/codeql-analysis.yml
#	.github/workflows/deploy-demo.yml
#	.github/workflows/deploy-dev.yml
#	.github/workflows/deploy-rs.yml
#	.github/workflows/enterprise-firewall-setup.yml
#	.github/workflows/repository-cleanup.yml
#	.github/workflows/sync-version-on-merge.yml
2026-04-02 16:42:50 -05:00
jmiller 3aa585653f Merge remote-tracking branch 'origin/main' into dev/01.00.00
# Conflicts:
#	.github/copilot-instructions.md
#	.github/workflows/codeql-analysis.yml
#	.github/workflows/deploy-dev.yml
#	.github/workflows/enterprise-firewall-setup.yml
#	.github/workflows/repo_health.yml
#	.github/workflows/standards-compliance.yml
#	.github/workflows/sync-version-on-merge.yml
#	.gitignore
#	CHANGELOG.md
#	CODE_OF_CONDUCT.md
#	CONTRIBUTING.md
#	README.md
#	SECURITY.md
#	composer.json
#	src/mokojoomtos.php
#	src/script.php
#	update.xml
2026-04-02 16:32:31 -05:00
jmiller fda1329ab6 fix: update all workflows to latest MokoStandards v04.04 templates [skip ci]
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-02 10:11:35 -05:00
jmiller cb4e61e3ca docs(cleanup): remove stale template and TOS-specific references
Fixes remaining documentation artifacts from the MokoStandards
template repo origin:

- SECURITY.md: replaced 7 "template repository" references with
  plugin-specific language, removed "Components Built from Template"
  section
- CLAUDE.md: updated script structure example to show Joomla 6
  namespaced pattern, fixed offline mode test wording
- CONTRIBUTING.md: fixed template reference and Joomla 5.x example
- update.xml: description now generic ("selected menu item")

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-02 09:08:06 -05:00
jmiller e8f102b7e7 docs(testing): add TESTING.md with 11 manual test cases
Comprehensive testing guide for MokoJoomTOS covering:
- T1-T2: Installation and configuration
- T3-T5: Offline mode behavior (access, blocking, no-op)
- T6: Online mode non-interference
- T7: Slug change immediacy
- T8-T9: Upgrade and uninstall
- T10-T11: SEF URL and subdirectory compatibility

Includes regression checklist for release validation.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-31 17:38:36 -05:00
jmiller e73d395bb4 fix(plugin): restore mokojoomtos.php for installer element registration
Joomla's InstallerAdapterPlugin reads the plugin element name from
the plugin="mokojoomtos" attribute on <filename> in the manifest.
Without it, the installer cannot register the plugin in #__extensions
and it silently fails to appear in the plugin list.

The file is a placeholder — never loaded at runtime (Joomla uses
services/provider.php instead) — but the XML attribute is required.

Also updates all stale Joomla 4/5 references in documentation to
Joomla 6, fixes TOS-specific wording, and rewrites README.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-31 16:18:35 -05:00
jmiller 84df6a1e8a ci(workflows): pull workflows and composer from main
Brings in 5 workflows from main branch:
- codeql-analysis.yml (security scanning)
- deploy-dev.yml (dev deployment pipeline)
- enterprise-firewall-setup.yml (firewall config)
- standards-compliance.yml (MokoStandards validation)
- sync-version-on-merge.yml (version sync on merge)

Fixes composer.json type (joomla-plugin) and PHP 8.3+ for J6.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-26 13:10:19 -05:00
jmiller c070a6b689 feat(plugin): Joomla 6 support, generic menu item access
BREAKING CHANGE: Requires Joomla 6.0+ and PHP 8.3+

- Removed legacy mokojoomtos.php (J6 drops non-namespaced loading)
- Removed legacy src/plugins/ directory
- Removed hardcoded TOS article/menu creation from script.php
- Plugin now works with ANY menu item selected via dropdown
- Replaced Factory::getDbo() with DI container DatabaseInterface
- Uses $this->getApplication() instead of deprecated $this->app
- Uses PHP 8.3 str_starts_with() instead of strpos() === 0
- Simplified script.php to just enable plugin on install
- Updated all language files for generic "Offline Page Access"
- Updated manifest: J6 minimum, PHP 8.3, no legacy file ref

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-26 12:37:59 -05:00
jmiller c38e62ae09 fix(plugin): add services/provider.php and fix J4 table calls
Root cause of plugin not showing in Joomla after install:
missing services/provider.php for DI container registration.
Joomla 4+ requires this file to bootstrap namespaced plugins.

Also fixes Table::getInstance('Content', ...) which should be
Table::getInstance('Article', ...) in Joomla 4 (class renamed).

Version reset to 01.00.00 across all files for first stable
release. All FILE INFORMATION headers updated.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-26 12:23:00 -05:00
jmiller c50e623c7d Update mokojoomtos.xml 2026-03-26 11:30:42 -05:00
jmiller d92cb0c97c Update .gitignore 2026-03-26 11:02:47 -05:00
jmiller 16376576ff Claude 2026-03-26 10:41:00 -05:00
jmiller 23aeb20471 ci(standards): sync workflows, CI config, and composer from MokoStandards
Bulk sync from MokoStandards templates/workflows/joomla and
templates/configs for governed repository compliance:

- repo_health.yml: guardrails validation (artifacts, SPDX, scripts)
- release.yml: automated Joomla release packaging pipeline
- version_branch.yml: version branching and bump workflow
- validate-joomla-project.yml: Joomla project validation CI
- dependabot.yml: GitHub Actions and Composer dependency monitoring
- composer.json: PHP 8.1+ with enterprise package and dev tooling
- phpstan.neon: Joomla-aware static analysis (level 5)
- phpcs.xml: PSR-12 coding standards with MokoStandards rules
- .moko-standards.yml: governance attachment (v04.00.15)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-24 21:17:53 -05:00
jmiller e1f158b5f1 style(plugin): fix line lengths, add SPDX headers, add Usage section
Breaks long lines in script.php and MenuslugField.php to stay
within 120-char limit. Converts inline JSON params to
json_encode() for readability. Adds SPDX-License-Identifier to
all PHP files. Adds missing Usage section to README.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-24 20:30:14 -05:00
jmiller 784a71bb6f fix(plugin): correct event handler, language keys, and repo references
Updates legacy mokojoomtos.php to use onAfterRoute instead of
onAfterInitialise and adds tmpl=component for component-only
view. Fixes script.php language key mismatches and incorrect
extension property. Corrects all markdown FILE INFORMATION
headers and links from template repo to MokoJoomTOS.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-24 15:33:29 -05:00