Jonathan Miller c8a3c58495
Joomla: Extension CI / Tests (PHP 8.2) (pull_request) Blocked by required conditions
Joomla: Extension CI / Tests (PHP 8.3) (pull_request) Blocked by required conditions
Joomla: Extension CI / PHPStan Analysis (pull_request) Blocked by required conditions
Joomla: Extension CI / Build RC Pre-Release (pull_request) Blocked by required conditions
Universal: PR Check / Build RC Package (pull_request) Blocked by required conditions
Universal: PR Check / Report Issues (pull_request) Blocked by required conditions
Generic: Repo Health / Scripts governance (pull_request) Blocked by required conditions
Generic: Repo Health / Repository health (pull_request) Blocked by required conditions
Generic: Repo Health / Report Issues (pull_request) Blocked by required conditions
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
fix: code review fixes — security, 0-coord bug, BOM, ACL
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

MokoSuiteStoreLocator

A Joomla 4/5 package providing a store locator listing component with coordinating map and search modules.

Package Contents

Extension Type Element
Store Locator Component component com_mokosuitestorelocator
Store Locator Map module (site) mod_mokosuitestorelocator_map
Store Locator Search module (site) mod_mokosuitestorelocator_search

Requirements

  • Joomla 5.x or 6.x
  • PHP 8.2+
  • MySQL 8.0+ / MariaDB 10.4+

Installation

  1. Download the latest pkg_mokosuitestorelocator-x.x.x.zip from Releases
  2. In Joomla Administrator, go to System > Install > Extensions
  3. Upload the package ZIP — all extensions install automatically

Features

Implemented

  • Admin CRUD — full location management with tabbed edit form (details, address, coordinates, contact, image)
  • Admin list — searchable, filterable, sortable locations list with bulk publish/unpublish/delete
  • Site frontend — locations list and detail views with pagination
  • Schema.org — LocalBusiness structured data markup on all frontend templates
  • SEF URLs — router with menu, standard, and nomenu rules
  • Menu items — "All Locations" list and single "Location Detail" picker
  • Interactive map — Leaflet.js with OpenStreetMap tiles, markers with popups, auto-fit bounds
  • Location search — city dropdown, radius filter, and browser geolocation ("Use My Location")
  • Proximity search — Haversine distance filtering with distance-sorted results
  • Get Directions — Google Maps directions link on detail page and map popups
  • Auto-geocoding — coordinates auto-populated from address on save (Nominatim/OSM)
  • CSV import — bulk-create locations from spreadsheet with auto-detected column mapping

Planned

  • Marker clustering for dense location areas
  • Multi-category support with custom map markers
  • ACL permissions and SQL upgrade schema
  • REST API via Joomla Web Services plugin
  • MokoSuiteShop integration for multi-store ecommerce

Development

composer install  # Install PHP dev dependencies

Source code lives in source/packages/ — one directory per sub-extension.

License

GPL-3.0-or-later — Moko Consulting

S
Description
Joomla 5/6 store locator package — interactive map, location search, and admin management
https://mokoconsulting.tech/support/products/mokosuitestorelocator Readme GPL-3.0
767 KiB
Languages
PHP 52.6%
Markdown 29.9%
XML 10%
INI 5.7%
SQL 1.6%
Other 0.2%