feat: yoyaku_placement: keep only the seat map, add basket and checkout buttons
Simplifies the public place picker (/placement/{slot}) to the graphical seat map, and adds two actions for moving on.
Closes #3612887.
What changes
The picker stacked the seat map plus three form sections — a "Place map" text list, a "Place a party together" adjacent-seats finder, and a "Pick a single place" select. This keeps only the graphical seat map (which books each place through its own place-op endpoint) and removes the three sections, offering instead:
- Go to basket — a link to the cart (
yoyaku_cart.cart). - Checkout — a submit that dispatches
CartCheckoutEventfor the current order and follows the redirect, exactly as the cart page's Checkout button does.
Both actions render only when yoyaku_cart is installed, so yoyaku_placement keeps no hard dependency on the cart (guarded by moduleExists).
Cleanup
PlaceBookingForm loses the party-proposal flow, the list-map builder and the single-place pick, along with their handlers/helpers. proposeAdjacent() / candidatePlaces() drop from PlaceAssignment; the per-category auto-assign (proposeForCategory()) the pricing provider uses stays.
Not lost
The manual group-placement capability the party finder provided is re-homed as a booker-facing, category-based auto-assign in a follow-up issue.
Tests / docs
Functional test rewritten to assert the seat map + the two cart actions and the absence of the old sections; the now-invalid PlaceAssignmentTest (all proposeAdjacent cases) removed — proposeForCategory stays covered by PlacementProviderTest. Docs and the French translation updated.