Ledger: de-hardcode content strings #58

Open
opened 2026-10-04 18:12:35 +02:00 by Augspies · 0 comments
Owner

Part of: Ledger Redesign — follow-up to the no-hardcoded-content principle (spec §13)

Goal: Every content-bearing string currently baked into templates must become authorable in Wagtail. Navigation labels, the tagline, empty states, and colophon credits stay as {% trans %} template chrome.

Acceptance (per item):

  • AttorneysIndexPage gains engagement_title, engagement_steps (ListBlock 4×{heading 60, text 160}), engagement_footnote, coverage_title, coverage_text — the Docket Sheet rail renders these, falling back to current copy where empty
  • IndividualsIndexPage gains sort_title, sort_sub, sort_questions (ListBlock 3×{text 120}), sort_footnote, unsure_title, unsure_sub — the Guided Path rail renders these
  • StepsBlock gains optional kicker (CharBlock 40) + title (CharBlock 80) — renders with current chrome as fallback when empty
  • FaqBlock gains optional kicker (40) + title (80) — same fallback pattern
  • HomePage section headers ("Who I help", "Two desks, one standard of care.", "In the matter of", "Services on the ledger.", "Of counsel") — new HomePage fields with fallbacks (or a small StructBlock; implementer's choice, fields preferred)
  • Hero slip ("Intake open / book via calendly") — decision: keep as chrome (design device) or move to hero block fields
  • Footer brand blurb → SiteSettings.blurb
  • Migrations for all model changes; makemigrations --check clean
  • Render tests for the new fields updated with #47

Notes: Fallback rendering keeps pages unbroken while content is pending. The promises duplication is already fixed (individuals index renders the homepage PromisesBlock). Mockup reference copy for the rail strings: .claude/scratch/vatty-mockups/attorneys-1.html, individuals-2.html.

**Part of:** Ledger Redesign — follow-up to the no-hardcoded-content principle (spec §13) **Goal:** Every content-bearing string currently baked into templates must become authorable in Wagtail. Navigation labels, the tagline, empty states, and colophon credits stay as `{% trans %}` template chrome. **Acceptance (per item):** - [ ] `AttorneysIndexPage` gains `engagement_title`, `engagement_steps` (ListBlock 4×{heading 60, text 160}), `engagement_footnote`, `coverage_title`, `coverage_text` — the Docket Sheet rail renders these, falling back to current copy where empty - [ ] `IndividualsIndexPage` gains `sort_title`, `sort_sub`, `sort_questions` (ListBlock 3×{text 120}), `sort_footnote`, `unsure_title`, `unsure_sub` — the Guided Path rail renders these - [ ] `StepsBlock` gains optional `kicker` (CharBlock 40) + `title` (CharBlock 80) — renders with current chrome as fallback when empty - [ ] `FaqBlock` gains optional `kicker` (40) + `title` (80) — same fallback pattern - [ ] HomePage section headers ("Who I help", "Two desks, one standard of care.", "In the matter of", "Services on the ledger.", "Of counsel") — new `HomePage` fields with fallbacks (or a small StructBlock; implementer's choice, fields preferred) - [ ] Hero slip ("Intake open / book via calendly") — decision: keep as chrome (design device) or move to hero block fields - [ ] Footer brand blurb → `SiteSettings.blurb` - [ ] Migrations for all model changes; `makemigrations --check` clean - [ ] Render tests for the new fields updated with #47 **Notes:** Fallback rendering keeps pages unbroken while content is pending. The promises duplication is already fixed (individuals index renders the homepage `PromisesBlock`). Mockup reference copy for the rail strings: `.claude/scratch/vatty-mockups/attorneys-1.html`, `individuals-2.html`.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
Augspies/virtual-attorney#58
No description provided.