Skip to content

Releases: TheodoreRiant/mapped-places

2.1.5 — Packaging fix for the directory build

Choose a tag to compare

@TheodoreRiant TheodoreRiant released this 28 Sep 12:03
4ff8a1c

Excludes the repository's .git directory (and node_modules, vendor) from the WordPress.org build; replaces 2.1.4 in the directory. No change to the plugin itself. mapped-places.zip is the GitHub archive with the bundled French translation.

2.1.3 — Bundled translations for GitHub installs

Choose a tag to compare

@TheodoreRiant TheodoreRiant released this 25 Sep 15:51
f53e92a

Fix: a site installed from this archive was entirely in English (2.0.0 relied on WordPress.org language packs that do not exist yet). mapped-places.zip ships the French translation again and loads it on init when no language pack is installed; a language pack keeps priority. The WordPress.org build still ships no translation file (.distignore, tools/build-wporg-zip.sh).

2.1.2 — Review checklist second pass

Choose a tag to compare

@TheodoreRiant TheodoreRiant released this 25 Sep 15:18
42f362c

readme: each basemap provider names the host reached by the visitor's browser; OpenStreetMap France listed with its terms and legal notice. Legacy import: Elementor layouts selected with one prepared query per old widget name. Plugin Check on the archive: 0 errors. mapped-places.zip is the installable plugin (git archive of the tag).

2.1.1 — Popup address, menu icon

Choose a tag to compare

@TheodoreRiant TheodoreRiant released this 25 Sep 15:08
4cc0a82

Fixed

  • Place popup: the postal code and the city are added to the address only when the address does not already contain them (compared without accents or case, whole words only). Imported files often hold a complete address next to filled postal code and city columns, which showed "26b rue de l'Oiselet, 38300 Bourgoin-Jallieu, 38300, Bourgoin-Jallieu". formatAddress() in text.mjs, tests/js/popup-address.test.js.

Changed

  • Admin menu icon: back to the WordPress pin (dashicons-location). The brand pictogram (folded map and pin) could not be read at 20 px.

2.1.0 — Upgrade from Geofolio 1.x

Choose a tag to compare

@TheodoreRiant TheodoreRiant released this 25 Sep 14:19
89186b6

Upgrade from Geofolio 1.x, the plugin's former name: a site that still holds Geofolio data (options geofolio_* or posts gfo_place) is offered the built-in import on the Places screens. It renames the post type, the five taxonomies, the post and term meta, moves the settings, appearance and labels options, renames the geofolio_map Elementor widgets (revisions included), the [geofolio] shortcode and the geofolio/map block, then deactivates geofolio/geofolio.php. Data stays in place with its ids; nothing is copied. GEOFOLIO_TILE_API_KEY in wp-config.php is still honoured.

Also:

  • legacy import: new blocks key (old block names renamed to mapped-places/map, attributes kept);
  • fix: renaming Elementor widgets during an import loaded every _elementor_data meta of the site at once and exhausted PHP memory on a large Elementor site; rows are now selected by id and rewritten one at a time.

Acceptance on real production data (Geofolio 1.4.0, 39 places, 494 Elementor layouts, 512 MB memory limit): import in 2 s, 67 MB peak, row-by-row comparison before/after shows only the identifiers changed.

mapped-places.zip is the installable plugin (git archive of the tag).

2.0.0 — Mapped Places

Choose a tag to compare

@TheodoreRiant TheodoreRiant released this 25 Sep 12:55
88b1843

The plugin is renamed Mapped Places (formerly Geofolio, a name already used by an unrelated geospatial project). Everything that carried the old name changes with it: slug and text domain mapped-places, namespace MappedPlaces, constants MAPPED_PLACES_*, hooks and options mapped_places_*, post type mapl_place, taxonomies mapl_*, meta keys _mapl_*, CSS .mapl-* / --mapl-*, REST mapped-places/v1, block mapped-places/map, shortcode [mapped-places]. Breaking change for code written against 1.x; 1.x data is not migrated automatically.

Also in this release (WordPress.org review of 25/09/2026):

  • admin notices confined to the plugin's own screens; the migration re-run button moved to the Map settings;
  • translations delivered by WordPress language packs (no load_plugin_textdomain(), no translation files in the archive; the French .mo stays in the repository, copy it to wp-content/languages/plugins/ for an install from this ZIP);
  • readme: top-level "External services" section with terms and privacy links for every basemap provider and the geocoder;
  • fix: the duplication link sanitises its parameters before checking the nonce.

mapped-places.zip is the installable plugin (git archive of the tag).

Geofolio 1.4.1 (1.x maintenance)

Choose a tag to compare

@TheodoreRiant TheodoreRiant released this 25 Sep 15:08
22c31ac

Maintenance release of the 1.x line (Geofolio), for sites not yet upgraded to Mapped Places.

Fixed

  • Place popup: the postal code and the city are added to the address only when the address does not already contain them (compared without accents or case, whole words only). formatAddress() in text.mjs, tests/js/popup-address.test.js.

Geofolio 1.4.0

Choose a tag to compare

@TheodoreRiant TheodoreRiant released this 25 Sep 08:49
ad88387

Added

  • Brand assets (brand/, excluded from the archive): new icon (folded map and pin) as SVG, PNG from 16 to 1024 px, maskable variant, favicon; social preview og-image.png (1280×640, retina variant) and its HTML source; wordpress.org icon and banners regenerated from the same identity.
  • Admin menu icon: Geofolio's own pictogram instead of the generic Dashicons pin (PlacePostType::MENU_ICON).
  • Import from a previous map plugin (Geofolio\Migration\Legacy): a migration step described by the geofolio_legacy_import filter (old post type, taxonomies, meta, term meta, options, Elementor widget names, shortcodes, type icon catalogue, manager role, slug, labels, appearance, old plugin file). It renames the data in place (IDs and links kept), assigns icons to types without one (exact then partial name match, unmatched types reported), converts the old manager field into people for the imported places only, renames Elementor widgets through the decoded structure (revisions included, written with update_metadata() so a revision never overwrites its page) and shortcodes, fills the Labels and Appearance settings only where they are empty, then regenerates the URLs and deactivates the old plugin. The core describes no plugin: a companion provides its predecessor's names. Documented in docs/hooks.md.
  • Migration steps can require a confirmation (Geofolio\Migration\ConfirmedStep): while one is pending, nothing runs automatically. The import shows what it will do, lets the administrator edit the role of the converted people, and runs on confirmation, after the usual snapshot.
  • Settings tabs "Appearance" and "Labels and defaults" (Places → Map settings), each saved in its own option:
    • Appearance: main and accent colours (darker and lighter shades derived with color-mix), font (bundled Poppins by default, or the theme's font), corner radius. They become --gfo-* variables on .gfo-map-container, added after the map stylesheet; an Elementor widget's own style settings still win on its page. The main colour is also the fallback marker colour.
    • Labels and defaults: singular and plural names of places and entities in the admin, URL slug of places (rewrite rules regenerated when it changes), default sidebar title and subtitle, centre, zoom and "fit the view" for maps that do not set them.
    • Priority: filter > setting > plugin default, so geofolio_defaults, geofolio_default_color, geofolio_place_labels and geofolio_place_slug keep working.
  • The REST cache is refreshed when these settings change (fallback colour, place URLs).
  • Import from a previous map plugin: delete_post_meta key, old meta keys with no Geofolio field, deleted from the imported places only and counted in the report (they were left orphaned).

Fixed

  • REST /places: a request with lat or lng ended in a fatal error on PHP 8 (floatval() does not accept the three arguments WordPress passes to a sanitize_callback). The number type of the schema now validates and converts them. tests/RestArgsTest.php rejects any single-parameter internal PHP function used as a sanitize callback.
  • Import from a previous map plugin: type names now match the icon catalogue regardless of accents, case, extra spaces and typographic apostrophes ("Centre Éducatif Fermé" = "centre educatif ferme"); found on real data, where 6 of 27 icons were missed.

Geofolio 1.3.0

Choose a tag to compare

@TheodoreRiant TheodoreRiant released this 24 Sep 15:12
580fe10

Added

  • WordPress.org deployment workflows (wporg-deploy.yml on version tags, wporg-assets.yml for the readme and directory assets), inactive until the WPORG_DEPLOY repository variable is true.
  • Place edit screen as a form: the article editor is gone (supports reduced to title and image, geofolio_place_supports filter to bring it back). Under the title, five sections in the order a place is described: Location (fields next to the map), Description (short plain text saved in post_content), Contact, People, Photo gallery. Existing HTML content is shown as plain text.
  • People: several people per place, each with a role and a name, reorderable (Geofolio\Domain\People, _gfo_people meta, people in the REST API). The legacy manager field is kept in sync (names only) and read as a fallback with the default role. Filters geofolio_default_person_role and geofolio_people_roles. The popup shows one “Role: Name” line per person.
  • tests/HooksDocTest.php: every geofolio_* hook in the code must be documented in docs/hooks.md, and the documentation must not cite a removed hook.
  • Plugin directory page: readme with the block, "Who is it for", "Accessibility", "Developers" and a ten-question FAQ; icon (SVG and PNG), banner and eight screenshots on the fictional sample dataset (.wordpress-org/).
  • Gutenberg block "Geofolio Map" (geofolio/map): server-side rendered through the same renderer as the shortcode and the Elementor widget, with an inspector for height, basemap, "fit the view to the places" (or centre and zoom), search, type filter, list, fullscreen button, sidebar position, title and subtitle. The editor shows the real map: the map assets are loaded in the editor iframe and the preview is initialised after each server render (window.Geofolio.init()). Wide and full alignments. Requires WordPress 6.6 (react-jsx-runtime); on 6.5 the block is simply not offered.
  • WordPress Playground blueprint (.wordpress-org/blueprints/blueprint.json) for the "Live Preview" button of the plugin directory: installs Geofolio, imports the sample dataset with its photos and opens a page with the block.
  • French translation of the block (block.json strings and editor script, JSON translation file).

Fixed

  • The place location map in the admin drew only a corner of its tiles when its container was resized after loading (collapsed panel, screen layout change).
  • Search suggestions: the highlight split the matched word ("Libr ary").
  • Settings page: texts mention the block, and the wp-config.php example uses an English placeholder.

Geofolio 1.2.1 — critical fix for sites without Elementor

Choose a tag to compare

@TheodoreRiant TheodoreRiant released this 24 Sep 14:29
4e55ceb

Fixed

  • Fatal error on every single post or page of a site without Elementor (since 1.0.0): reading the Elementor widget name loaded the widget class, which extends an Elementor class. The name now lives in Integration::WIDGET_NAME, which loads without Elementor. A test forbids reading a constant of an Elementor-dependent class outside the widget.

Changed

  • MapWidget.php (1283 lines) is split into section traits: ContentControls, LayoutStyleControls, CardStyleControls, MapStyleControls and HeaderStyleControls; the widget class keeps its metadata and rendering (220 lines). The control stack seen by Elementor is byte-for-byte identical.
  • Markers are built once per place and shown again when filters change, instead of rebuilding every marker, icon, popup and listener on each filter or keystroke (20 filter changes on the sample dataset: 214 markers rebuilt before, none now). The cache is reset when the place list is reloaded.
  • The place list is inserted in one operation instead of one card at a time.
  • The entity/type colour rule lives in one function (resolveEntityColor) instead of four copies.
  • The map script is split into ES modules (assets/js/src/: escaping, text, i18n, colours, types, filters, carousel, basemaps, icons, and the GeofolioMap class with its autocomplete, carousel and marker methods in separate files) bundled by esbuild into assets/js/geofolio.js, still an unminified IIFE. Node tests import the modules instead of cutting the source file at comment markers. Behaviour unchanged (computed styles and an interaction scenario compared before/after).
  • The stylesheet is split into 20 partials (assets/css/src/, numbered in cascade order) assembled into assets/css/geofolio.css by npm run build:css; the served file stays readable and needs no build to run. The computed styles of every map element are unchanged (checked at seven widths, map at rest and popup open).
  • The three @media (max-width: 640px) blocks are merged into one; duplicate selectors and declarations removed.
  • !important removed from the Leaflet icon resets, which nothing overrides; the remaining ones (plugin buttons, fullscreen) are documented.