28-Jun-2026 — normalise Walks Manager contact names ref #145
What's new
Walks Manager contact names are no longer limited to abbreviated forms like "Jenny B" or "M Daniels". A one-time migration backfills existing abbreviated names to full names from member records. The walk editor now syncs the contact name back to the member record on save, so editing the contact in Walks Manager uploads also updates the member's contactId field. The Ramblers publishing UI in the walk editor is rewritten: the old Unlink button is removed in favour of Publish and Cancel toggles, with inline help text that explains the expected behaviour for each option. Walk export audit rows now show an error icon for failed uploads so the audit trail clearly distinguishes success from error.
At a glance
- New member-name utility functions (memberFullName, abbreviatedWalksManagerContactName) shared across the full-name pipe, member-admin modal, and walk export.
- Walk editor syncs Walks Manager contactName back to the member record when the walk is saved, keeping contactId in step with the Ramblers publishing section.
- Walk export audit rows show an error icon for audits with an errorResponse rather than failing to show any status.
- Ramblers tab rewritten: Unlink button removed; Publish checkbox, Cancel checkbox and cancellation reason textarea always editable when user has permission.
- Inline ramblers-publishing-help markdown editor replaces the old ramblers-help, explaining when to tick Publish, untick (to remove from Ramblers), and how cancellation works.
- Read-only Ramblers Id and Url fields are always shown when either value exists, giving editors a clear view of the linked Ramblers event.
- Migration 20260628010000 normalises abbreviated contact names on members and events to full names derived from member records.
- Migration 20260628020000 seeds the ramblers-publishing-help content text into the walks-admin category.
Technical changes
- functions/member-names.ts: new file with memberFullName(), abbreviatedWalksManagerContactName(), trimmedNamePart() and MemberNameParts type.
- member-naming.service.ts: wraps memberFullName() and abbreviatedWalksManagerContactName() for existing callers.
- member-naming.service.spec.ts: tests for abbreviated contact name detection.
- full-name.pipe.ts: refactored to use memberFullName() instead of inline string building.
- walk-edit.component.ts: added syncWalksManagerContactNameToMember() called during saveAndCloseIfNotSent; injects MemberService.
- member-admin-modal.component.html/ts: contactId display updated to use memberFullName().
- walk-export.ts: added auditDisplayStatus() returning ERROR when audit.errorResponse is set.
- ramblers-walks-and-events.service.ts/spec.ts: support for normalised contact name handling.
- walk-edit-links.ts: Ramblers tab rewritten. Removed ramblersWalkExistsSignal, canUnlinkRamblers(), unlinkRamblersDataFromCurrentWalk(). Added ramblers-publishing-help markdown editor, Publish checkbox, Cancel checkbox + textarea, read-only Id/Url display with anchor link.
- default-content.ts: added RAMBLERS_PUBLISHING_HELP content entry to walks-admin category and registered in DEFAULT_CONTENT_ENTRIES.
- 20260628010000-normalise-walks-manager-contact-names.ts: migration processing members and events, normalising contactName + contactId to memberFullName().
- 20260628020000-seed-ramblers-publishing-help.ts: migration upserting ramblers-publishing-help content text.