feat: #3607228 Build the programme page to the design, with the fields it needs
Follows !25 (merged), which landed the listing. This brings the programme page itself to the design, and repairs one regression !25 (merged) carried in.
Programme page
node.program.full was empty, so every Learn More led to a blank page. It now follows the design end to end: hero panel with the title, summary and image; the write-up; a headline feature beside a photograph; a by-the-numbers panel with three figures; a how-we-deliver intro beside four tinted cards; a world map highlighting the countries the programme runs in; the news slider; and a closing call to action.
The fields that needed adding
The design asks for content the Program type did not hold. Reusing Country's storages where they exist, and adding the rest:
field_headline,field_on_the_ground,field_on_the_ground_image— the headline feature block.field_figures_heading,field_figures_description,field_figure_number,field_figure_description— the figures panel.field_delivery_heading,field_our_role,field_delivery_title,field_delivery_text— the four delivery cards.field_map_heading,field_map_texton Program andfield_country_codeon Country — the map, which highlights a country by its two-letter code.field_cta_heading,field_cta_text— the closing call to action.
All are on the programme edit form, and the five demo programmes and twelve countries carry values.
Also
- Program gained a compact
cardview mode for the related grid; the wide listing template does not fit a three-up grid. - The blog slider keeps the reference site's navy band, and a second display renders it on the light panel the programme page needs.
- Regression fix: !25 (merged) reverted #3614797 and put the leading slash back on
finish_url.1.0.xcurrently carries it, so the browser installer redirects to//. Restored here.
Verified on a clean build, installed twice from this branch — through the browser site-template picker and through drush: 70 nodes, 25 terms, 74 media, 7 pages, program.full 60 components, event.full still 22, and both pages measured against the design.
Two gaps are left, both outside this recipe: the delivery cards have no icon tiles (the icon component takes a media reference, and there is no icon media yet), and the news cards show no category badge or teaser because varbase_blog_base ships that card template with an invalid UUID, so it cannot be repointed.
AI-Generated: Yes
Checkpoints:
- File an issue
- Addition/Change/Update/Fix
- Testing to ensure no regression
- Automated unit testing coverage
- Automated functional testing coverage
- UX/UI designer responsibilities
- Readability
- Accessibility
- Performance
- Security
- Developer Documentation
- User Guide Documentation
- Reviewed by human
- Code review by maintainers
- Full testing and approval
- Credit contributors
- Review with the product owner
- Release notes snippet
- Release