Commit Graph

12 Commits

Author SHA1 Message Date
Jakub Zych
f7eddd5572 chore: require summercms v0.2.0 2026-10-15 23:32:19 +02:00
Jakub Zych
4b429787d0 test(19.3-06): wait for the queued site-cache purge before asserting (WR-01)
- every read of the purge receiver first drains the app's purger through
  cooler.SiteCachePurger.Wait, since cooler now queues purges after commit
2026-10-15 22:39:18 +02:00
Jakub Zych
fe27b9a7e4 chore(19.3-05): require summercms v0.1.27
- framework release with cooler, site-cache purge and the 19.3 transport surface
- go mod tidy adds go-redis, otter and the AWS SDK modules as indirect requires
2026-10-15 20:06:33 +02:00
Jakub Zych
6c08f1a94c test(19.3-05): purgeSiteCache does nothing without a transaction or purger 2026-10-15 19:56:16 +02:00
Jakub Zych
559d96b0a4 feat(19.3-04): purge the host site's page cache after menu and menu-entry saves, deletes and reorders
- menus controller gains the app accessor and FormAfterCreate/Update/Delete
  purging kind menu with the menu code
- menu entries purge kind menu_entry with the entry id after the placement
  checks pass, on delete, and through pact.ReorderAfterSave with
  partition:<menu id>
- purgeSiteCache helper on cabana.TxFromContext and cooler.SiteCacheFromApp
- TestMenuAdminPurgesSiteCache on Postgres
2026-10-15 18:30:45 +02:00
9c0f833878 fix(17): WR-06 apply the admin save rules in menu:import-winter
The importer copied URLs, targets and cross-menu parents as exported, so
a javascript: URL or a _parent target broke the first admin save of the
row, and an entry under a parent in another menu vanished from the
public tree. Kept entries now get a trimmed or cleared URL, a cleared
target and a top-level place in their own menu, each with a report
line.
2026-10-12 21:39:57 +02:00
64215f2bf3 fix(17): WR-03 require a reference for a menu entry whose type takes one
An entry of a registry type with References saved without a reference
passed the dependent recheck (null is always among the options), then
resolved to nothing and vanished from the public tree with its children.
The admin save now refuses it (errors.reference_required).
2026-10-12 21:33:36 +02:00
7255d34ae0 fix(17): WR-01 keep a menu entry's subtree and parent in its menu
- The admin refuses a parent from another menu than the one the form
  names (errors.parent_menu) instead of moving the entry to the parent's
  menu without a word; BeforeSave records the named menu
  (MenuEntry.RequestedMenuID).
- An entry moved to another menu moves its descendants in the same
  transaction, so the public tree no longer drops them.
2026-10-12 21:30:36 +02:00
43267de323 test(17-06): menu plugin unit tests
- TestAllowedURL and TestMenuTree (Docker-free): the URL scheme and
  target rules, BuildTree order, unreachable and looping entries, list
  and single registry types, generated children, locale alternates,
  left-out entries logged, the JSON shape
- TestMenuEntryModel (Docker-free): fillable, rules, filter scope
- TestMenuEntryBeforeSave, TestMenuAPI and TestMenuImport (Postgres):
  PHP beforeSave rules, D-16 API rules beyond the smoke test, import
  drops for page subtrees, foreign menus, missing parents, maps to
  nothing and unregistered types
2026-10-12 19:40:48 +02:00
33a65ad802 feat(17-04): public menu API with registry resolution, throttle bucket and README
- GET /_menu/api/v1/menus/{code}?locale=xx, anonymous, menu-public-api bucket (120/min per client IP)
- classes.BuildTree: published entries nested by parent, sort_order then id, scheme-checked URLs
- registry entries resolved through signpost with url_pattern as the item override and the locale's alternate
- list types keep stored URL and title, generated children follow stored ones; unresolvable entries left out
- TestMenuAPISmoke; README with API, CORS paths, import workflow and Winter adaptations
- go mod tidy records the test dependencies
2026-10-12 17:51:27 +02:00
e044bc7b7e feat(17-04): menu:import-winter with the D-05 type map and read-only export SQL
- link to url, blog_categories to all-journal-categories, --map old=new on top; page entries dropped
- entries of unknown types or stale registry references dropped with their subtree, one report line per dropped or remapped entry
- ids, menu_id, parent_id, nest columns and sort_order kept; setval for both tables; --force, --dry-run, empty files copy nothing
- scripts/winter-export-menus.sql and winter-export-entries.sql
- TestMenuImportSmoke
2026-10-12 17:35:30 +02:00
08f99b8aad feat(17-04): menu plugin admin with registry types, URL checks and tree reorder
- golem15.menu plugin, tables golem15_menu_menus and golem15_menu_menu_entries with the PHP columns plus a nullable url_pattern (D-02)
- MenuEntry BeforeSave ports PHP beforeSave: nest columns 0, menu from the parent, sort_order after the menu's last
- entry type dropdown: url, divider and the signpost registry types; reference depends on type through signpost.ReferenceOptions
- URL scheme allowlist (errors.url_scheme), target _self or _blank, menu and parent cycle checks
- menu filter, toolbar reorder/create/delete and config_reorder.yaml partitioned by menu
- navigation Menus with Menus and Menu entries, permission golem15.menu.manage_menu, en and pl phrasebooks
- TestMenuAdminSmoke
2026-10-12 17:30:50 +02:00