Commit Graph

194 Commits

Author SHA1 Message Date
gitea-actions[bot] b6900aec6e chore(version): pre-release bump to 01.00.32-dev [skip ci] 2026-06-28 18:49:53 +00:00
gitea-actions[bot] ecfb7c426d chore(version): auto-bump patch 01.00.31-dev [skip ci] 2026-06-28 18:49:42 +00:00
jmiller 03c9ca53a6 docs: update changelog with license key, XSS fix, SQL compat entries
Universal: PR Check / Branch Policy (pull_request) Successful in 1s
Joomla: Extension CI / Release Readiness Check (pull_request) Failing after 3s
Universal: PR Check / Validate PR (pull_request) Failing after 4s
Universal: PR Check / Secret Scan (pull_request) Successful in 5s
Generic: Repo Health / Site Health (pull_request) Has been skipped
Generic: Repo Health / Access control (pull_request) Successful in 2s
Joomla: Extension CI / Lint & Validate (pull_request) Failing after 8s
Universal: Auto Version Bump / Version Bump (push) Successful in 10s
Universal: Pre-Release / Build Pre-Release (${{ inputs.stability || github.ref_name }}) (push) Successful in 12s
Universal: Build & Release / Promote to RC (pull_request) Failing after 10s
Universal: Build & Release / Build & Release Pipeline (pull_request) Has been skipped
Joomla: Metadata Validation / Validate Joomla Metadata (pull_request) Successful in 39s
Joomla: Extension CI / Tests (PHP 8.2) (pull_request) Has been cancelled
Joomla: Extension CI / Tests (PHP 8.3) (pull_request) Has been cancelled
Joomla: Extension CI / PHPStan Analysis (pull_request) Has been cancelled
Joomla: Extension CI / Build RC Pre-Release (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
Authored-by: Moko Consulting
2026-06-28 13:48:50 -05:00
gitea-actions[bot] 8c2bf7b02c chore(version): pre-release bump to 01.00.30-dev [skip ci] 2026-06-28 18:47:43 +00:00
gitea-actions[bot] 056b339dee chore(version): auto-bump patch 01.00.29-dev [skip ci] 2026-06-28 18:47:35 +00:00
jmiller 58f3ac96d9 feat: add license key warning and download key preservation
Universal: Auto Version Bump / Version Bump (push) Successful in 17s
Universal: Pre-Release / Build Pre-Release (${{ inputs.stability || github.ref_name }}) (push) Successful in 10s
Save/restore the download key (dlid) across package upgrades so users
don't lose their license key. Show a warning with direct edit link
when no license key is configured.

Mirrors the pattern from MokoSuiteCross.

Authored-by: Moko Consulting
2026-06-28 13:46:31 -05:00
gitea-actions[bot] 086c50e150 chore(version): pre-release bump to 01.00.28-dev [skip ci] 2026-06-28 18:08:49 +00:00
gitea-actions[bot] 3487072b8a chore(version): pre-release bump to 01.00.27-dev [skip ci] 2026-06-28 18:08:38 +00:00
gitea-actions[bot] edc6bbf62c chore(version): auto-bump patch 01.00.26-dev [skip ci] 2026-06-28 18:08:29 +00:00
jmiller 8b42c016a8 fix: remove IF EXISTS syntax from SQL migration for MySQL 5.7 compat
Universal: Auto Version Bump / Version Bump (push) Successful in 12s
Universal: Pre-Release / Build Pre-Release (${{ inputs.stability || github.ref_name }}) (push) Successful in 10s
Joomla's SQL update runner doesn't support DELIMITER or stored
procedures. DROP COLUMN IF EXISTS is MySQL 8.0.13+ only. Plain
DROP COLUMN is safe here because update files only run on upgrades
from versions that had the catid column.

Authored-by: Moko Consulting
2026-06-28 13:08:14 -05:00
gitea-actions[bot] 41875e7878 chore(version): pre-release bump to 01.00.25-dev [skip ci] 2026-06-28 17:53:42 +00:00
gitea-actions[bot] 797101474a chore(version): pre-release bump to 01.00.24-dev [skip ci] 2026-06-28 16:24:59 +00:00
gitea-actions[bot] dccdb88617 chore(version): auto-bump patch 01.00.23-dev [skip ci] 2026-06-28 16:24:51 +00:00
jmiller 2897a1ceba fix: escape location title in detail map popup to prevent XSS
Universal: Auto Version Bump / Version Bump (push) Successful in 7s
Universal: Pre-Release / Build Pre-Release (${{ inputs.stability || github.ref_name }}) (push) Successful in 9s
Use DOM-based textContent instead of raw string in Leaflet bindPopup()
to prevent HTML injection via location titles.

Authored-by: Moko Consulting
2026-06-28 11:24:31 -05:00
gitea-actions[bot] 926b4c7576 chore(version): pre-release bump to 01.00.22-dev [skip ci] 2026-06-28 16:23:11 +00:00
gitea-actions[bot] 80cefe1624 chore(version): auto-bump patch 01.00.21-dev [skip ci] 2026-06-28 16:23:03 +00:00
jmiller 32b541597a fix: resolve all open issues — detail map, clustering, CSP, GROUP BY, cleanup (#34 #57 #58 #59 #60 #61)
Universal: Auto Version Bump / Version Bump (push) Successful in 8s
Universal: Pre-Release / Build Pre-Release (${{ inputs.stability || github.ref_name }}) (push) Successful in 10s
- Add Leaflet map to location detail page with marker and popup (#57)
- Implement Leaflet.markercluster with toggleable module parameter (#61)
- Convert inline <script> to $wa->addInlineScript() for CSP nonce support (#34)
- Replace category INNER JOIN with EXISTS subquery for ONLY_FULL_GROUP_BY compat (#59)
- Add delete() override to LocationTable and CategoryTable for junction cleanup (#60)
- Drop dead catid column and idx_catid index via SQL update 01.00.02 (#58)
- Update CHANGELOG and README

Authored-by: Moko Consulting
2026-06-28 11:22:40 -05:00
gitea-actions[bot] 85a3566ae3 chore(version): pre-release bump to 01.00.20-dev [skip ci] 2026-06-28 08:08:05 +00:00
gitea-actions[bot] 1b177f267d chore(version): auto-bump patch 01.00.19-dev [skip ci] 2026-06-28 08:07:56 +00:00
jmiller 99df65b66f chore: sync GOVERNANCE.md from Template-Joomla
Universal: Auto Version Bump / Version Bump (push) Successful in 9s
Universal: Pre-Release / Build Pre-Release (${{ inputs.stability || github.ref_name }}) (push) Successful in 10s
Authored-by: Moko Consulting
2026-06-28 07:58:38 +00:00
gitea-actions[bot] 1d600184b1 chore(version): pre-release bump to 01.00.18-dev [skip ci] 2026-06-28 03:44:05 +00:00
gitea-actions[bot] 45661df50e chore(version): pre-release bump to 01.00.17-dev [skip ci] 2026-06-28 03:10:09 +00:00
gitea-actions[bot] 0be86aec5a chore(version): auto-bump patch 01.00.16-dev [skip ci] 2026-06-28 03:10:01 +00:00
jmiller 7835e77920 fix: rename plugin manifest to match element name
Universal: Auto Version Bump / Version Bump (push) Successful in 7s
Universal: Pre-Release / Build Pre-Release (${{ inputs.stability || github.ref_name }}) (push) Successful in 10s
Joomla's autoloader namespace scanner expects plugin manifests to be
named {element}.xml (e.g. mokosuitestorelocator.xml), not the full
prefixed name (plg_webservices_mokosuitestorelocator.xml). Without the
correct filename, the PSR-4 namespace mapping is not registered in
autoload_psr4.php, causing "Class not found" errors.

Pattern confirmed from MokoSuiteClient's webservices plugin.

Authored-by: Moko Consulting
2026-06-27 22:09:48 -05:00
gitea-actions[bot] 72949fefa5 chore(version): pre-release bump to 01.00.15-dev [skip ci] 2026-06-28 02:59:59 +00:00
gitea-actions[bot] 6c83e5530f chore(version): auto-bump patch 01.00.14-dev [skip ci] 2026-06-28 02:59:49 +00:00
jmiller b75677a6ec fix: add plugin attribute to webservices manifest files element
Universal: Auto Version Bump / Version Bump (push) Successful in 11s
Universal: Pre-Release / Build Pre-Release (${{ inputs.stability || github.ref_name }}) (push) Successful in 12s
Joomla's PluginAdapter requires plugin="xxx" on a <files> child to
determine filesystem deployment path and extension element. Without it,
plugin files are not deployed and the element field is empty in
#__extensions. Pattern confirmed from MokoSuiteClient.

Authored-by: Moko Consulting
2026-06-27 21:59:35 -05:00
gitea-actions[bot] 5f8ab19abd chore(version): pre-release bump to 01.00.13-dev [skip ci] 2026-06-28 02:07:04 +00:00
gitea-actions[bot] d9460d3f07 chore(version): pre-release bump to 01.00.12-dev [skip ci] 2026-06-28 00:27:09 +00:00
gitea-actions[bot] 8a9a3851e0 chore(version): auto-bump patch 01.00.11-dev [skip ci] 2026-06-28 00:26:59 +00:00
jmiller 36eb55758e fix: add module attribute to services folder and hardcode package description
Universal: Auto Version Bump / Version Bump (push) Successful in 12s
Universal: Pre-Release / Build Pre-Release (${{ inputs.stability || github.ref_name }}) (push) Successful in 11s
Joomla's ModuleAdapter requires the `module` attribute on a <files> child
to identify the module element. Without it, install fails with "No module
file specified" even when namespace and services/provider.php are present.
Pattern confirmed against MokoSuiteClient modules.

Also hardcodes the package description since packages don't load language
files during install, causing the raw key to display.

Authored-by: Moko Consulting
2026-06-27 19:26:44 -05:00
gitea-actions[bot] bb30e0cd20 chore(version): pre-release bump to 01.00.10-dev [skip ci] 2026-06-27 20:40:46 +00:00
gitea-actions[bot] 5ccc0246bb chore(version): auto-bump patch 01.00.09-dev [skip ci] 2026-06-27 20:40:35 +00:00
jmiller e16e15dc00 fix: align dlid and updateservers with MokoSuiteClient pattern
Universal: Auto Version Bump / Version Bump (push) Successful in 13s
Universal: Pre-Release / Build Pre-Release (${{ inputs.stability || github.ref_name }}) (push) Successful in 13s
Move <dlid> to right after <description> (before <scriptfile>) and add
priority="1" to <server> element, matching the MokoSuiteClient manifest
structure so Joomla properly registers the download key field.

Authored-by: Moko Consulting
2026-06-27 15:40:19 -05:00
gitea-actions[bot] 7c51396d8d chore(version): pre-release bump to 01.00.08-dev [skip ci] 2026-06-27 20:35:46 +00:00
gitea-actions[bot] 4e9e698d2c chore(version): auto-bump patch 01.00.07-dev [skip ci] 2026-06-27 20:35:36 +00:00
jmiller 81854440de fix: move dlid before updateservers so Joomla registers download key
Universal: Auto Version Bump / Version Bump (push) Successful in 9s
Universal: Pre-Release / Build Pre-Release (${{ inputs.stability || github.ref_name }}) (push) Successful in 12s
The <dlid> element was placed after </updateservers>, causing Joomla's
installer to skip it when registering the update site. Moving it before
<updateservers> ensures the extra_query field is populated in the
#__update_sites table.

Authored-by: Moko Consulting
2026-06-27 15:35:24 -05:00
gitea-actions[bot] 569f907512 chore(version): pre-release bump to 01.00.06-dev [skip ci] 2026-06-27 20:24:14 +00:00
gitea-actions[bot] 4258fd1d4f chore(version): auto-bump patch 01.00.05-dev [skip ci] 2026-06-27 20:23:59 +00:00
jmiller 3efd423e74 fix: add module services/provider.php and fix manifest packaging
Universal: Auto Version Bump / Version Bump (push) Successful in 14s
Universal: Pre-Release / Build Pre-Release (${{ inputs.stability || github.ref_name }}) (push) Successful in 19s
Both modules were missing services/provider.php — the Joomla 5 DI
entry point that registers the ModuleDispatcherFactory. Without it,
Joomla falls back to a mod_*.php entry point file that doesn't exist,
causing "No module file specified" on install.

Also moves access.xml into admin/ and adds it to the component
manifest so it gets included in the package ZIP.

Authored-by: Moko Consulting
2026-06-27 15:23:31 -05:00
gitea-actions[bot] f0d8c7ecbf chore(version): pre-release bump to 01.00.04-dev [skip ci] 2026-06-27 20:19:25 +00:00
gitea-actions[bot] f469aa7e64 chore(version): pre-release bump to 01.00.03-dev [skip ci] 2026-06-27 19:44:16 +00:00
gitea-actions[bot] 1c443be9ea chore(version): auto-bump patch 01.00.02-dev [skip ci] 2026-06-27 19:44:07 +00:00
jmiller 6426fee428 feat: v1.2 multi-category, REST API, ACL, security hardening (#1, #2, #29, #30, #31, #34, #48)
Joomla: Extension CI / Release Readiness Check (pull_request) Failing after 3s
Universal: PR Check / Branch Policy (pull_request) Successful in 1s
Generic: Repo Health / Access control (pull_request) Successful in 2s
Generic: Repo Health / Site Health (pull_request) Has been skipped
Universal: PR Check / Validate PR (pull_request) Failing after 4s
Universal: PR Check / Secret Scan (pull_request) Successful in 5s
Joomla: Extension CI / Lint & Validate (pull_request) Failing after 10s
Universal: Build & Release / Promote to RC (pull_request) Has been skipped
Universal: Build & Release / Build & Release Pipeline (pull_request) Has been skipped
Joomla: Metadata Validation / Validate Joomla Metadata (pull_request) Successful in 37s
Universal: Auto Version Bump / Version Bump (push) Successful in 8s
Universal: Pre-Release / Build Pre-Release (${{ inputs.stability || github.ref_name }}) (push) Successful in 10s
Joomla: Extension CI / Tests (PHP 8.2) (pull_request) Has been cancelled
Joomla: Extension CI / Tests (PHP 8.3) (pull_request) Has been cancelled
Joomla: Extension CI / PHPStan Analysis (pull_request) Has been cancelled
Joomla: Extension CI / Build RC Pre-Release (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
Multi-category support with parent/child hierarchy, junction table,
admin CRUD, and per-category custom marker icons on the Leaflet map.

REST API via Web Services plugin with JSON:API endpoints. ACL
permissions via access.xml. SQL update schema for safe upgrades.

Shop integration bridge (LocationBridgeHelper, LocationSavedEvent).
Security: CSV formula injection prevention, MIME validation, file size
limit, ORDER BY allowlist, map height CSS regex validation.

Authored-by: Moko Consulting
2026-06-27 14:40:02 -05:00
Jonathan Miller cf495cd8ce feat: FocalPoint (Shack Locations) migration import
Add one-click import from installed FocalPoint/Shack Locations component:
- Reads #__focalpoint_locations table directly via Joomla DB layer
- Parses customfieldsdata JSON for email, website, hours, phone
- Maps FocalPoint schema to MokoSuiteStoreLocator fields
- Copies coordinates (DECIMAL 10,6 → 10,8), published state, ordering
- Combines description + fulldescription into single description field
- Import button on admin Import view with CSRF + ACL protection
- Graceful handling: checks table exists, reports per-row errors

Field mapping:
  FocalPoint.title → title
  FocalPoint.address → address (single field, no city/state split)
  FocalPoint.latitude/longitude → latitude/longitude
  FocalPoint.phone → phone
  FocalPoint.customfieldsdata.email → email
  FocalPoint.customfieldsdata.website → website
  FocalPoint.customfieldsdata.hours → hours
  FocalPoint.state → published

Authored-by: Moko Consulting
2026-06-27 14:40:01 -05:00
gitea-actions[bot] 6e20567240 chore(version): pre-release bump to 01.00.01-dev [skip ci] 2026-06-27 14:40:00 -05:00
Jonathan Miller 97fb560864 chore: align version format to MokoStandards XX.YY.ZZ (01.00.00)
mokocli tools require two-digit zero-padded version groups (01.00.00)
per MokoStandards convention. Fixes auto-release pipeline failure.

Changed in: pkg manifest, component manifest, both module manifests,
and CHANGELOG.md.

Authored-by: Moko Consulting
2026-06-27 14:40:00 -05:00
Jonathan Miller 753c6336be chore: sync workflows from Template-Joomla (metadata first-class fields)
Pull latest workflow versions from MokoConsulting/Template-Joomla.
These use the updated mokocli tools with manifest metadata as
first-class fields instead of README FILE INFORMATION blocks.

Updated: ci-joomla.yml, pre-release.yml, workflow-sync-trigger.yml
Added: version-set.yml
Removed: deploy-manual.yml, update-server.yml, composer-publish.yml
  (superseded by auto-release.yml pipeline)

Authored-by: Moko Consulting
2026-06-27 14:39:59 -05:00
jmiller 7a86ada1fa chore: sync rc-revert.yml from Template-Generic [skip ci] 2026-06-27 05:32:28 +00:00
jmiller 37f5a99e99 chore: sync pre-release.yml from Template-Generic [skip ci] 2026-06-27 00:49:24 +00:00