7ef9a23ef8
Universal: Auto Version Bump / Version Bump (push) Successful in 9s
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
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
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
2.3 KiB
2.3 KiB
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
- Download the latest
pkg_mokosuitestorelocator-x.x.x.zipfrom Releases - In Joomla Administrator, go to System > Install > Extensions
- 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