Files
Template-Joomla/README.md
T
jmiller 618350dc2e
Universal: Pre-Release / Build Pre-Release (${{ inputs.stability || github.ref_name }}) (push) Has been skipped
Generic: Project CI / Lint & Validate (pull_request) Has been skipped
Universal: PR Check / Branch Policy (pull_request) Failing after 7s
Universal: PR Check / Validate PR (pull_request) Has been skipped
Joomla: Metadata Validation / Validate Joomla Metadata (pull_request) Has been skipped
Generic: Repo Health / Site Health (pull_request) Has been skipped
Generic: Repo Health / Access control (pull_request) Successful in 4s
Universal: PR Check / Secret Scan (pull_request) Successful in 15s
Universal: Build & Release / Promote to RC (pull_request) Has been skipped
Universal: Build & Release / Build & Release Pipeline (pull_request) Has been skipped
Branch Cleanup / Delete merged branch (pull_request) Successful in 4s
RC Revert / Rename rc/ back to dev/ (pull_request) Has been skipped
Universal: Workflow Sync Trigger / Sync workflows to live repos (pull_request) Successful in 49s
Generic: Project CI / Tests (pull_request) Has been cancelled
Universal: PR Check / Build RC Package (pull_request) Has been cancelled
Universal: PR Check / Report Issues (pull_request) Has been cancelled
Generic: Repo Health / Scripts governance (pull_request) Has been cancelled
Generic: Repo Health / Repository health (pull_request) Has been cancelled
Generic: Repo Health / Report: Scripts Governance (pull_request) Has been cancelled
Generic: Repo Health / Report: Repository Health (pull_request) Has been cancelled
ci(templates): gate build/CI/release/version workflows off template repos + normalize mokocli refs
- Add 'skip on Template-*' guards to build/CI/release/version workflows so they
  don't run on the template repo itself (only on repos created from it).
- Smart-gate sync workflows to run ONLY on Template-* sources (so platform
  templates still propagate, but regular repos don't trigger sync-out).
- Normalize mokocli->MokoCLI repo/clone URLs, drop stale mokoconsulting-tech
  org slug on the git host, and mokoplatform/moko-platform->mokocli.
  (/opt/mokocli + /tmp/mokocli server paths left intact.)
2026-07-05 20:37:33 +00:00

78 lines
3.2 KiB
Markdown

# Template-Joomla
Unified scaffolding templates for all Joomla extension types — component, template, module, plugin, package, and library.
## Structure
```
.mokogitea/workflows/ ← CI/CD workflow suite (lint, validate, release)
samples/
manifest/ ← Reference manifest XML for each extension type
component_sample.xml
template_sample.xml
module_sample.xml
plugin_sample.xml
package_sample.xml
library_sample.xml
script/ ← Reference install/update script (script.php) templates
script_component.php
script_module.php
script_plugin.php
script_package.php
source/ ← Your extension source lives here (CI scans this dir)
```
## Usage
1. Create a new repo from this template (or clone manually).
2. Build your extension under `source/`.
3. Copy the matching manifest from `samples/manifest/` to `source/`, rename it, and
replace the placeholder name, namespace, and version.
4. If your extension needs install/update logic, copy the matching
`samples/script/` file and replace the `{REPONAME}`/`{PACKAGENAME}` placeholders.
5. Push — the workflows validate the manifest, source, SQL, language keys, and build.
## Samples
`samples/` holds read-only reference material — do not build against it directly.
- **`manifest/`** — a well-formed `<extension>` manifest for each of the six
Joomla extension types, showing the expected structure, namespace declaration,
media/SQL wiring, and update-server hookup.
- **`script/`** — the standard `script.php` install/uninstall/update handler
pattern shared across Moko extension repos. Copy, then replace `{REPONAME}`
(UPPERCASE) and `{PACKAGENAME}` (e.g. `com_myextension`).
## CI/CD
`.mokogitea/workflows/ci-joomla.yml` validates every push and PR against `source/`:
| Check | What it verifies |
|-------|------------------|
| Manifest | Well-formed XML, required elements, version |
| SQL | `#__` prefixes, `IF [NOT] EXISTS`, `ENGINE=InnoDB`, `utf8mb4`, install/uninstall pairing, version-named update files |
| Language keys | Keys used in code are defined; orphan (unused) keys flagged |
| PHP CodeSniffer | Joomla coding standard (falls back to PSR-12) |
| Security | No direct superglobals, raw SQL in `setQuery()`, `eval()`, or missing `_JEXEC` guard |
| updates.xml | Well-formed, required `<update>` children, `<targetplatform>` |
| Assets | `joomla.asset.json` is valid and its URIs exist |
| MVC naming | View/Controller/Model/Table classes follow suffix conventions |
| Router | Components ship a Router implementing the router interface |
| ACL | `access.xml` action keys are defined in language files |
| Webservices | Webservices plugins register API routes |
| ZIP dry-run | Every file/folder the manifest references actually exists |
| JS/CSS | Syntax + balanced braces (ESLint/Stylelint if configured) |
## Standards
This repo follows [MokoStandards](https://git.mokoconsulting.tech/MokoConsulting/MokoCLI/wiki/Home).
Documentation lives in the [Template-Joomla Wiki](https://git.mokoconsulting.tech/MokoConsulting/Template-Joomla/wiki).
## License
GPL-3.0-or-later — Moko Consulting
## Template CI Notes
Build/CI/release/version workflows are guarded to skip template repos (Template-*) and only run in repos created from them.