gitea-actions[bot]
1ece8a006f
chore(version): auto-bump patch 01.00.33-dev [skip ci]
2026-06-28 18:55:15 +00:00
jmiller
5ea2fd2b98
fix: make SQL migration 01.00.02 a no-op to prevent install abort
...
Universal: PR Check / Branch Policy (pull_request) Successful in 1s
Joomla: Extension CI / Release Readiness Check (pull_request) Failing after 5s
Universal: PR Check / Validate PR (pull_request) Failing after 5s
Generic: Repo Health / Site Health (pull_request) Has been skipped
Universal: PR Check / Secret Scan (pull_request) Successful in 6s
Generic: Repo Health / Access control (pull_request) Successful in 1s
Joomla: Extension CI / Lint & Validate (pull_request) Failing after 10s
Universal: Auto Version Bump / Version Bump (push) Successful in 12s
Joomla: Metadata Validation / Validate Joomla Metadata (pull_request) Successful in 43s
Universal: Pre-Release / Build Pre-Release (${{ inputs.stability || github.ref_name }}) (push) Successful in 20s
Universal: Build & Release / Promote to RC (pull_request) Has been skipped
Universal: Build & Release / Build & Release Pipeline (pull_request) Has been skipped
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
Joomla aborts the entire package install on any SQL error in update
files. DROP COLUMN fails when catid doesn't exist (fresh installs,
or systems where it was already removed). Since install.mysql.sql
already omits catid, no runtime migration is needed.
Authored-by: Moko Consulting
2026-06-28 13:54:45 -05:00
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
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
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
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
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
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
c56f3473b1
fix: review round 2 — geocode 0-coord, tel: sanitization, Factory ACL
...
Universal: PR Check / Branch Policy (pull_request) Failing after 1s
Joomla: Extension CI / Release Readiness Check (pull_request) Failing after 3s
Universal: PR Check / Validate PR (pull_request) Failing after 4s
Generic: Repo Health / Access control (pull_request) Successful in 2s
Generic: Repo Health / Site Health (pull_request) Has been skipped
Universal: PR Check / Secret Scan (pull_request) Successful in 5s
Joomla: Extension CI / Lint & Validate (pull_request) Successful in 7s
Universal: Auto Version Bump / Version Bump (push) Successful in 9s
Universal: Build & Release / Promote to RC (pull_request) Has been skipped
RC Revert / Rename rc/ back to dev/ (pull_request) Has been skipped
Branch Cleanup / Delete merged branch (pull_request) Successful in 2s
Joomla: Metadata Validation / Validate Joomla Metadata (pull_request) Successful in 30s
Universal: Workflow Sync Trigger / Sync workflows to live repos (pull_request) Failing after 6s
Universal: Build & Release / Build & Release Pipeline (pull_request) Failing after 17s
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 Issues (pull_request) Has been cancelled
- Fix geocoding trigger: use isset+is_numeric instead of !empty for
coordinate detection (same 0.0 bug pattern as Haversine fix)
- Sanitize tel: href to digits/+/-/() only (prevents URI injection)
- Use Factory::getApplication() for ACL check (consistent with codebase)
Authored-by: Moko Consulting
2026-06-23 12:26:18 -05:00
Jonathan Miller
c8a3c58495
fix: code review fixes — security, 0-coord bug, BOM, ACL
...
Joomla: Extension CI / Release Readiness Check (pull_request) Failing after 4s
Universal: PR Check / Branch Policy (pull_request) Failing after 2s
Joomla: Extension CI / Lint & Validate (pull_request) Successful in 9s
Universal: PR Check / Secret Scan (pull_request) Successful in 5s
Universal: PR Check / Validate PR (pull_request) Failing after 4s
Universal: Auto Version Bump / Version Bump (push) Successful in 10s
Generic: Repo Health / Access control (pull_request) Successful in 2s
Generic: Repo Health / Site Health (pull_request) Has been skipped
Joomla: Metadata Validation / Validate Joomla Metadata (pull_request) Successful in 52s
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 Issues (pull_request) Has been cancelled
Security:
- ACL check (core.create) in ImportController before processing
- File extension validation (.csv/.txt only) on upload
- Website href restricted to http/https scheme (prevents javascript: XSS)
Bug fixes:
- Fix 0.0 coordinate rejection: use null checks instead of != 0.0
(coordinates at equator/prime meridian are valid locations)
- Fix Haversine guard using !== null instead of PHP truthiness
- Fix geocoding result check: isset+is_numeric instead of !empty
- Strip UTF-8 BOM from first CSV header (fixes Excel-generated imports)
- Cap radius at 25000 to prevent unreasonable distance queries
Authored-by: Moko Consulting
2026-06-23 12:07:03 -05:00
Jonathan Miller
7ef9a23ef8
feat: v1.1 competitive parity — proximity search, directions, geocoding, CSV import
...
Universal: Auto Version Bump / Version Bump (push) Successful in 9s
Universal: PR Check / Branch Policy (pull_request) Failing after 2s
Joomla: Extension CI / Release Readiness Check (pull_request) Failing after 6s
Generic: Repo Health / Access control (pull_request) Successful in 3s
Generic: Repo Health / Site Health (pull_request) Has been skipped
Universal: PR Check / Validate PR (pull_request) Failing after 6s
Universal: PR Check / Secret Scan (pull_request) Successful in 7s
Universal: Build & Release / Promote to RC (pull_request) Failing after 15s
Universal: Build & Release / Build & Release Pipeline (pull_request) Has been skipped
Joomla: Extension CI / Lint & Validate (pull_request) Successful in 38s
Joomla: Metadata Validation / Validate Joomla Metadata (pull_request) Successful in 43s
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 Issues (pull_request) Has been cancelled
Haversine proximity search:
- LocationsModel filters by distance using Haversine formula
- populateState captures lat/lng/radius/radius_unit from search form
- Distance-sorted results when proximity filter is active
- Hidden radius_unit field added to search module form
Get Directions:
- Google Maps directions link on location detail page (no API key)
- Directions link in Leaflet popup markers
Auto-geocoding:
- LocationModel::save() override auto-geocodes empty coordinates
- Calls Nominatim/OSM API when address present but coords missing
- Success/failure messages via Joomla enqueueMessage
CSV Import:
- ImportController handles file upload with CSRF token check
- ImportModel parses CSV via SplFileObject with configurable delimiter
- Auto-detects column headers (title/name, address/street, city, etc.)
- Per-row validation via LocationTable::bind()->check()->store()
- Import view with upload form, delimiter picker, and column help
- Toolbar button and submenu item for import access
Addresses #54
Authored-by: Moko Consulting
2026-06-23 11:50:02 -05:00
Jonathan Miller
e26d0ed400
fix: code review fixes, Joomla 5/6 compat, XSS prevention
...
Generic: Repo Health / Site Health (push) Has been skipped
Generic: Repo Health / Access control (push) Successful in 2s
Generic: Repo Health / Access control (pull_request) Successful in 3s
Generic: Repo Health / Site Health (pull_request) Has been skipped
Joomla: Extension CI / Lint & Validate (pull_request) Failing after 8s
Joomla: Extension CI / Release Readiness Check (pull_request) Failing after 7s
Universal: Secret Scanning / Gitleaks Secret Scan (pull_request) Successful in 9s
Generic: Project CI / Lint & Validate (pull_request) Successful in 34s
Universal: Build & Release / Promote to RC (pull_request) Has been skipped
RC Revert / Rename rc/ back to dev/ (pull_request) Has been skipped
Branch Cleanup / Delete merged branch (pull_request) Successful in 2s
Universal: Workflow Sync Trigger / Sync workflows to live repos (pull_request) Failing after 3s
Universal: Build & Release / Build & Release Pipeline (pull_request) Failing after 10s
Generic: Repo Health / Scripts governance (push) Has been cancelled
Generic: Repo Health / Repository health (push) Has been cancelled
Generic: Repo Health / Report Issues (push) Has been cancelled
Generic: Project CI / Tests (pull_request) Has been cancelled
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
Generic: Repo Health / Scripts governance (pull_request) Has been cancelled
Generic: Repo Health / Repository health (pull_request) Has been cancelled
Generic: Repo Health / Report Issues (pull_request) Has been cancelled
Security:
- Fix stored XSS in Leaflet popup — HTML-escape loc.title/address/phone
- Use HTMLHelper::_('content.prepare') for description output
Joomla 5/6 compatibility:
- Bump PHP minimum to 8.2, Joomla minimum to 5.0.0
- script.php implements InstallerScriptInterface with typed signatures
- Restore updateservers and dlid in package manifest
- Update all manifest creationDates to 2026-06-23
Code quality:
- Replace hard-coded English errors with Text::_() language strings
- Add COM_MOKOJOOMSTORELOCATOR_ERROR_* language keys
- Use Text::_() for Locations list toolbar title
- Import missing Text class in LocationTable and Locations HtmlView
Documentation:
- Update CLAUDE.md: MokoSuite naming, source/ paths, PHP 8.2, namespace
- Update README: Joomla 5/6, PHP 8.2+, MySQL 8.0+
Authored-by: Moko Consulting
2026-06-23 11:08:46 -05:00
Jonathan Miller
4894a703c2
feat: wire up map and search modules with Leaflet and geolocation (Phase 3)
...
Generic: Repo Health / Site Health (push) Has been skipped
Generic: Repo Health / Access control (push) Successful in 1s
Universal: PR Check / Branch Policy (pull_request) Failing after 2s
Universal: Build & Release / Promote to RC (pull_request) Failing after 7s
Universal: Build & Release / Build & Release Pipeline (pull_request) Has been skipped
Joomla: Extension CI / Lint & Validate (pull_request) Failing after 7s
Joomla: Extension CI / Release Readiness Check (pull_request) Failing after 6s
Generic: Repo Health / Site Health (pull_request) Has been skipped
Universal: Secret Scanning / Gitleaks Secret Scan (pull_request) Successful in 7s
Generic: Repo Health / Access control (pull_request) Successful in 2s
Universal: PR Check / Validate PR (pull_request) Failing after 6s
Generic: Project CI / Lint & Validate (pull_request) Successful in 27s
Generic: Repo Health / Scripts governance (push) Has been cancelled
Generic: Repo Health / Repository health (push) Has been cancelled
Generic: Repo Health / Report Issues (push) Has been cancelled
Generic: Project CI / Tests (pull_request) Has been cancelled
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
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 Issues (pull_request) Has been cancelled
Map module:
- Dispatcher queries published locations with coordinates from DB
- Leaflet.js + OpenStreetMap tile layer integration
- Markers with popup info (name, address, phone)
- Auto-fit bounds to show all markers
- Leaflet CSS/JS via Joomla Web Asset Manager
Search module:
- Dispatcher loads distinct cities/states for dropdown filters
- Builds radius options from module params
- City dropdown filter (toggled by show_city_filter param)
- Radius dropdown with configurable values and unit (miles/km)
- Geolocation "Use My Location" button via browser API
- Hidden lat/lng fields for proximity search passthrough
- New language strings for all search UI elements
Both dispatchers now implement DatabaseAwareInterface for DB access.
Addresses #51 , #3 , #35
Authored-by: Moko Consulting
2026-06-23 10:45:50 -05:00
Jonathan Miller
4b37489c41
feat: add site frontend with locations list, detail view, and SEF router (Phase 2)
...
Build the complete public-facing frontend for the store locator:
- Site DisplayController routing to list and detail views
- LocationsModel with search, city, and state filters (published only)
- LocationModel for single location by ID
- Locations list template with Schema.org LocalBusiness markup
- Location detail template with address, contact, hours, map placeholder
- SEF URL router with menu/standard/nomenu rules
- Menu item types: "All Locations" list and "Location Detail" picker
- Site language strings for views and menu items
- Router wired into component extension class and service provider
- .gitignore exception for source/packages/*/site/
Addresses #50
Authored-by: Moko Consulting
2026-06-23 08:49:07 -05:00