Skip to content

Conversation

@dchukhin
Copy link
Collaborator

If this changeset needs to go into the FXC codebase, please add the WMO and FXC label.

This pull request depends on #16958

One-line summary

This pull request makes it possible to create the anonym 'How It Works' page in Wagtail, without styling.

Significant changes and points to review

  • a new AnonymTopAndBottomPage page
  • using wagtail.contrib.table_block on the project
  • some CSS to add basic styles to the table, making sure we can match the designs on mobile

Issue / Bugzilla link

Testing

  1. log in to Wagtail
  2. make sure an Anonym Index Page exists
  3. choose to create a child of the Anonym Index Page, and choose an Anonym top and bottom page
  4. edit the page to match the figma designs from the JIRA ticket. Note: this pull request does NOT include the styles needed to match the designs

@dchukhin dchukhin requested review from a team as code owners December 22, 2025 22:02
@dchukhin dchukhin marked this pull request as draft December 22, 2025 22:04
@codecov
Copy link

codecov bot commented Dec 22, 2025

Codecov Report

❌ Patch coverage is 90.47619% with 2 lines in your changes missing coverage. Please review.
✅ Project coverage is 80.63%. Comparing base (c37a58b) to head (b623f94).
⚠️ Report is 1 commits behind head on WT-514-anonym-homepage-cms.

Files with missing lines Patch % Lines
bedrock/mozorg/blocks/anonym.py 81.81% 2 Missing ⚠️
Additional details and impacted files
@@                      Coverage Diff                       @@
##           WT-514-anonym-homepage-cms   #16961      +/-   ##
==============================================================
+ Coverage                       80.61%   80.63%   +0.02%     
==============================================================
  Files                             164      164              
  Lines                            9230     9250      +20     
==============================================================
+ Hits                             7441     7459      +18     
- Misses                           1789     1791       +2     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@dchukhin dchukhin changed the title Anonym Top & Bottom Page In CMS Anonym Part 2: Top & Bottom Page In CMS Dec 23, 2025
Copy link
Collaborator

@kkellydesign kkellydesign left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good. I made a ticket on some revisions on redoing the table component, but that can be another PR. I'm going to merge these as we go.

@kkellydesign kkellydesign marked this pull request as ready for review January 11, 2026 22:50
@kkellydesign kkellydesign merged commit e2f0c08 into WT-514-anonym-homepage-cms Jan 11, 2026
5 checks passed
@kkellydesign kkellydesign deleted the anonym-index-child-page branch January 11, 2026 22:50
kkellydesign added a commit that referenced this pull request Feb 10, 2026
* add wagtail-thumbnail-choice-block to the project

* add an AnonymIndexPage to the project

* add cards to AnonymIndexPage

* add a stats list to AnonymIndexPage

* add a people list to AnonymIndexPage

* add call to action block to AnonymIndexPage

* for better clarity, rename AnonymIndexPage's sections field to content

* update labels for better clarity

* add help text to CallToActionBlock's heading field

* rename constant for better clarity

* remove commented-out code

* fix lint errors

* fix Docker build error due to missing staticfiles

* fix frontent lint issues by making CSS classes lowercase

* fix lint error

* add unit tests for remove_p_tag template tag

* make sure license exists in new test file

* make the CardsListBlock a child of a SectionBlock

* fix reference to section field in template

* make a couple block labels visible when collapsed

* add theme icons to repository

* make section content not required, since it sometimes needs to be not required

* only show icon element if icon is set

* make sure first section heading is an h1 element, and others are h2 elements

* change CardsListBlock.cards to be a StreamBlock, to better handle the need for other card types in the future

* update body class to be anonym-specific

* correctly reference icon card block value in template

* make sure AnonymIndexPage can be added in production

* make sure AnonymIndexPage is included in db export script

* make instances of AnonymIndexPage more easily identifiable by setting verbose_name

* Anonym Part 2: Top & Bottom Page In CMS (#16961)

* add an AnonymTopAndBottomPage to the project

* add counter to section templates

* only show icon element if icon is set

* add CSS class to sections with 'top glow' theme

* add table block to SectionBlocks

* make sure first section heading is an h1 element, and others are h2 elements on AnonymTopAndBottomPage

* update migration, since CardsListBlock.cards is now a StreamBlock, to better handle the need for other card types in the future

* update body class to be anonym-specific

* make sure AnonymTopAndBottomPage can be added in production

* make sure AnonymTopAndBottomPage is included in db export script

* make instances of AnonymTopAndBottomPage more easily identifiable by setting verbose_name

* Anonym Part 3: Content Page In CMS (#16962)

* add an AnonymTopAndBottomPage to the project

* add counter to section templates

* only show icon element if icon is set

* add CSS class to sections with 'top glow' theme

* add table block to SectionBlocks

* make sure first section heading is an h1 element, and others are h2 elements on AnonymTopAndBottomPage

* add an AnonymContentSubPage to the project

* add toggleable items component to AnonymContentSubPage

* update migration, since CardsListBlock.cards is now a StreamBlock, to better handle the need for other card types in the future

* add logo cards, to allow creating case study cards on AnonymContentSubPage

* update toggle to handle dark and light icons automatically

* make sure migration has a license

* update body class to be anonym-specific

* update body class to be anonym-specific

* make sure AnonymTopAndBottomPage can be added in production

* make sure AnonymTopAndBottomPage is included in db export script

* make sure AnonymContentSubPage can be added in production

* make sure AnonymContentSubPage is included in db export script

* make instances of AnonymTopAndBottomPage more easily identifiable by setting verbose_name

* make instances of AnonymContentSubPage more easily identifiable by setting verbose_name

* Anonym Part 4: Navigation (#16964)

* add an AnonymTopAndBottomPage to the project

* add counter to section templates

* only show icon element if icon is set

* add CSS class to sections with 'top glow' theme

* add table block to SectionBlocks

* make sure first section heading is an h1 element, and others are h2 elements on AnonymTopAndBottomPage

* add an AnonymContentSubPage to the project

* add toggleable items component to AnonymContentSubPage

* update migration, since CardsListBlock.cards is now a StreamBlock, to better handle the need for other card types in the future

* add logo cards, to allow creating case study cards on AnonymContentSubPage

* update toggle to handle dark and light icons automatically

* add a configurable navigation to anonym pages

* make sure migration has a license

* update body class to be anonym-specific

* update body class to be anonym-specific

* make sure AnonymTopAndBottomPage can be added in production

* make sure AnonymTopAndBottomPage is included in db export script

* make sure AnonymContentSubPage can be added in production

* make sure AnonymContentSubPage is included in db export script

* make instances of AnonymTopAndBottomPage more easily identifiable by setting verbose_name

* make instances of AnonymContentSubPage more easily identifiable by setting verbose_name

* Anonym Part 5: About Page (#16965)

* add an AnonymTopAndBottomPage to the project

* add counter to section templates

* only show icon element if icon is set

* add CSS class to sections with 'top glow' theme

* add table block to SectionBlocks

* make sure first section heading is an h1 element, and others are h2 elements on AnonymTopAndBottomPage

* add an AnonymContentSubPage to the project

* add toggleable items component to AnonymContentSubPage

* update migration, since CardsListBlock.cards is now a StreamBlock, to better handle the need for other card types in the future

* add logo cards, to allow creating case study cards on AnonymContentSubPage

* update toggle to handle dark and light icons automatically

* add a configurable navigation to anonym pages

* make sure migration has a license

* update body class to be anonym-specific

* update body class to be anonym-specific

* add a PersonCard, to allow adding cards with people's photos to the 'About' page

* add a TwoColumnBlock, to allow adding them to 'About' page

* make sure AnonymTopAndBottomPage can be added in production

* make sure AnonymTopAndBottomPage is included in db export script

* make sure AnonymContentSubPage can be added in production

* make sure AnonymContentSubPage is included in db export script

* make instances of AnonymTopAndBottomPage more easily identifiable by setting verbose_name

* make instances of AnonymContentSubPage more easily identifiable by setting verbose_name

* Anonym Part 6: Static Pages (#16967)

* add an AnonymTopAndBottomPage to the project

* add counter to section templates

* only show icon element if icon is set

* add CSS class to sections with 'top glow' theme

* add table block to SectionBlocks

* make sure first section heading is an h1 element, and others are h2 elements on AnonymTopAndBottomPage

* add an AnonymContentSubPage to the project

* add toggleable items component to AnonymContentSubPage

* update migration, since CardsListBlock.cards is now a StreamBlock, to better handle the need for other card types in the future

* add logo cards, to allow creating case study cards on AnonymContentSubPage

* update toggle to handle dark and light icons automatically

* add a configurable navigation to anonym pages

* make sure migration has a license

* update body class to be anonym-specific

* update body class to be anonym-specific

* add a PersonCard, to allow adding cards with people's photos to the 'About' page

* add a TwoColumnBlock, to allow adding them to 'About' page

* add ability to create static pages as AnonymIndexPage children

* fill in content for static pages

* make sure AnonymTopAndBottomPage can be added in production

* make sure AnonymTopAndBottomPage is included in db export script

* make sure AnonymContentSubPage can be added in production

* make sure AnonymContentSubPage is included in db export script

* make sure AnonymStaticPage can be added in production

* make sure AnonymStaticPage is included in db export script

* make sure that there is only 1 AnonymNewsPage and 1 AnonymContactPage

* make instances of AnonymTopAndBottomPage more easily identifiable by setting verbose_name

* make instances of AnonymContentSubPage more easily identifiable by setting verbose_name

* Anonym Part 7: Article Page (#16968)

* add an AnonymTopAndBottomPage to the project

* add counter to section templates

* only show icon element if icon is set

* add CSS class to sections with 'top glow' theme

* add table block to SectionBlocks

* make sure first section heading is an h1 element, and others are h2 elements on AnonymTopAndBottomPage

* add an AnonymContentSubPage to the project

* add toggleable items component to AnonymContentSubPage

* update migration, since CardsListBlock.cards is now a StreamBlock, to better handle the need for other card types in the future

* add logo cards, to allow creating case study cards on AnonymContentSubPage

* update toggle to handle dark and light icons automatically

* add a configurable navigation to anonym pages

* make sure migration has a license

* update body class to be anonym-specific

* update body class to be anonym-specific

* add a PersonCard, to allow adding cards with people's photos to the 'About' page

* add a TwoColumnBlock, to allow adding them to 'About' page

* add ability to create static pages as AnonymIndexPage children

* fill in content for static pages

* make sure AnonymTopAndBottomPage can be added in production

* make sure AnonymTopAndBottomPage is included in db export script

* make sure AnonymContentSubPage can be added in production

* make sure AnonymContentSubPage is included in db export script

* make sure AnonymStaticPage can be added in production

* make sure AnonymStaticPage is included in db export script

* make sure that there is only 1 AnonymNewsPage and 1 AnonymContactPage

* add AnonymArticlePage to project, with ability to add rich text blocks to sections

* update advertising pages to pass CSS class to notification snippet

* make instances of AnonymTopAndBottomPage more easily identifiable by setting verbose_name

* make instances of AnonymContentSubPage more easily identifiable by setting verbose_name

* Anonym Part 8: More Changes (#16969)

* add an AnonymTopAndBottomPage to the project

* add counter to section templates

* only show icon element if icon is set

* add CSS class to sections with 'top glow' theme

* add table block to SectionBlocks

* make sure first section heading is an h1 element, and others are h2 elements on AnonymTopAndBottomPage

* add an AnonymContentSubPage to the project

* add toggleable items component to AnonymContentSubPage

* update migration, since CardsListBlock.cards is now a StreamBlock, to better handle the need for other card types in the future

* add logo cards, to allow creating case study cards on AnonymContentSubPage

* update toggle to handle dark and light icons automatically

* add a configurable navigation to anonym pages

* make sure migration has a license

* update body class to be anonym-specific

* update body class to be anonym-specific

* add a PersonCard, to allow adding cards with people's photos to the 'About' page

* add a TwoColumnBlock, to allow adding them to 'About' page

* add ability to create static pages as AnonymIndexPage children

* fill in content for static pages

* make sure AnonymTopAndBottomPage can be added in production

* make sure AnonymTopAndBottomPage is included in db export script

* make sure AnonymContentSubPage can be added in production

* make sure AnonymContentSubPage is included in db export script

* make sure AnonymStaticPage can be added in production

* make sure AnonymStaticPage is included in db export script

* make sure that there is only 1 AnonymNewsPage and 1 AnonymContactPage

* add AnonymArticlePage to project, with ability to add rich text blocks to sections

* update advertising pages to pass CSS class to notification snippet

* make instances of AnonymTopAndBottomPage more easily identifiable by setting verbose_name

* make instances of AnonymContentSubPage more easily identifiable by setting verbose_name

* make CMS process DRYer by updating PeopleListBlock to reference Person objects

* make sure migration has a license

* WT-514 Anonym CSS (#16966)

* add an AnonymTopAndBottomPage to the project

* add counter to section templates

* only show icon element if icon is set

* add CSS class to sections with 'top glow' theme

* add table block to SectionBlocks

* make sure first section heading is an h1 element, and others are h2 elements on AnonymTopAndBottomPage

* add an AnonymContentSubPage to the project

* add toggleable items component to AnonymContentSubPage

* update migration, since CardsListBlock.cards is now a StreamBlock, to better handle the need for other card types in the future

* add logo cards, to allow creating case study cards on AnonymContentSubPage

* update toggle to handle dark and light icons automatically

* add a configurable navigation to anonym pages

* make sure migration has a license

* update body class to be anonym-specific

* update body class to be anonym-specific

* add a PersonCard, to allow adding cards with people's photos to the 'About' page

* add a TwoColumnBlock, to allow adding them to 'About' page

* make sure AnonymTopAndBottomPage can be added in production

* make sure AnonymTopAndBottomPage is included in db export script

* make sure AnonymContentSubPage can be added in production

* make sure AnonymContentSubPage is included in db export script

* make instances of AnonymTopAndBottomPage more easily identifiable by setting verbose_name

* make instances of AnonymContentSubPage more easily identifiable by setting verbose_name

* Initial CSS implementation

* Match header style to Figma

Note: This attempts to reconcile differences between the Figma design and the m24 code this was based on

* Section styles

Increase fidelity of section styles to match Figma

* Card list styles

Increase fidelity of card list styles to match Figma

* Add section themes

* Add stats table styles

* Increase anonym homepage figma fidelity

---------

Co-authored-by: Dmitriy Chukhin <[email protected]>

* reorder migrations after merge

* fix lint errors

* Anonym Part 9: Anonym Directory (#16989)

* add an AnonymTopAndBottomPage to the project

* add counter to section templates

* only show icon element if icon is set

* add CSS class to sections with 'top glow' theme

* add table block to SectionBlocks

* make sure first section heading is an h1 element, and others are h2 elements on AnonymTopAndBottomPage

* add an AnonymContentSubPage to the project

* add toggleable items component to AnonymContentSubPage

* update migration, since CardsListBlock.cards is now a StreamBlock, to better handle the need for other card types in the future

* add logo cards, to allow creating case study cards on AnonymContentSubPage

* update toggle to handle dark and light icons automatically

* add a configurable navigation to anonym pages

* make sure migration has a license

* update body class to be anonym-specific

* update body class to be anonym-specific

* add a PersonCard, to allow adding cards with people's photos to the 'About' page

* add a TwoColumnBlock, to allow adding them to 'About' page

* add ability to create static pages as AnonymIndexPage children

* fill in content for static pages

* make sure AnonymTopAndBottomPage can be added in production

* make sure AnonymTopAndBottomPage is included in db export script

* make sure AnonymContentSubPage can be added in production

* make sure AnonymContentSubPage is included in db export script

* make sure AnonymStaticPage can be added in production

* make sure AnonymStaticPage is included in db export script

* make sure that there is only 1 AnonymNewsPage and 1 AnonymContactPage

* add AnonymArticlePage to project, with ability to add rich text blocks to sections

* update advertising pages to pass CSS class to notification snippet

* make instances of AnonymTopAndBottomPage more easily identifiable by setting verbose_name

* make instances of AnonymContentSubPage more easily identifiable by setting verbose_name

* make CMS process DRYer by updating PeopleListBlock to reference Person objects

* make sure migration has a license

* create anonym app for anonym files

* move anonym files to anonym app

* make sure to preserve anonym data in database

* add comment about use of db_table in models file

* update imports in scss files based on new directory structure

* fix lint error

* add license to files that are missing it

* remove unused anonym templates from mozorg app

* move Person snippet to anonym app

* add removed migration for moving person snippet to anonym app

* Anonym Part 10: Custom Table Component (#16990)

* add an AnonymTopAndBottomPage to the project

* add counter to section templates

* only show icon element if icon is set

* add CSS class to sections with 'top glow' theme

* add table block to SectionBlocks

* make sure first section heading is an h1 element, and others are h2 elements on AnonymTopAndBottomPage

* add an AnonymContentSubPage to the project

* add toggleable items component to AnonymContentSubPage

* update migration, since CardsListBlock.cards is now a StreamBlock, to better handle the need for other card types in the future

* add logo cards, to allow creating case study cards on AnonymContentSubPage

* update toggle to handle dark and light icons automatically

* add a configurable navigation to anonym pages

* make sure migration has a license

* update body class to be anonym-specific

* update body class to be anonym-specific

* add a PersonCard, to allow adding cards with people's photos to the 'About' page

* add a TwoColumnBlock, to allow adding them to 'About' page

* add ability to create static pages as AnonymIndexPage children

* fill in content for static pages

* make sure AnonymTopAndBottomPage can be added in production

* make sure AnonymTopAndBottomPage is included in db export script

* make sure AnonymContentSubPage can be added in production

* make sure AnonymContentSubPage is included in db export script

* make sure AnonymStaticPage can be added in production

* make sure AnonymStaticPage is included in db export script

* make sure that there is only 1 AnonymNewsPage and 1 AnonymContactPage

* add AnonymArticlePage to project, with ability to add rich text blocks to sections

* update advertising pages to pass CSS class to notification snippet

* make instances of AnonymTopAndBottomPage more easily identifiable by setting verbose_name

* make instances of AnonymContentSubPage more easily identifiable by setting verbose_name

* make CMS process DRYer by updating PeopleListBlock to reference Person objects

* make sure migration has a license

* create anonym app for anonym files

* move anonym files to anonym app

* make sure to preserve anonym data in database

* add comment about use of db_table in models file

* update imports in scss files based on new directory structure

* update imports in scss files based on new directory structure

* use custom component for comparison table on AnonymTopAndBottomPage, so we have more control over HTML and user experience

* remove wagtail.contrib.table_block from project, as it is no longer used

* fix lint error

* add license to files that are missing it

* remove unused anonym templates from mozorg app

* remove unused anonym templates from mozorg app

* move Person snippet to anonym app

* move Person snippet to anonym app

* reorder migrations after merge

* add removed migration for moving person snippet to anonym app

* add missing migration

* add license to new migration

---------

Co-authored-by: Kasey Kelly <[email protected]>

* Anonym Part 11: Backend Updates (#17003)

* add an AnonymTopAndBottomPage to the project

* add counter to section templates

* only show icon element if icon is set

* add CSS class to sections with 'top glow' theme

* add table block to SectionBlocks

* make sure first section heading is an h1 element, and others are h2 elements on AnonymTopAndBottomPage

* add an AnonymContentSubPage to the project

* add toggleable items component to AnonymContentSubPage

* update migration, since CardsListBlock.cards is now a StreamBlock, to better handle the need for other card types in the future

* add logo cards, to allow creating case study cards on AnonymContentSubPage

* update toggle to handle dark and light icons automatically

* add a configurable navigation to anonym pages

* make sure migration has a license

* update body class to be anonym-specific

* update body class to be anonym-specific

* add a PersonCard, to allow adding cards with people's photos to the 'About' page

* add a TwoColumnBlock, to allow adding them to 'About' page

* add ability to create static pages as AnonymIndexPage children

* fill in content for static pages

* make sure AnonymTopAndBottomPage can be added in production

* make sure AnonymTopAndBottomPage is included in db export script

* make sure AnonymContentSubPage can be added in production

* make sure AnonymContentSubPage is included in db export script

* make sure AnonymStaticPage can be added in production

* make sure AnonymStaticPage is included in db export script

* make sure that there is only 1 AnonymNewsPage and 1 AnonymContactPage

* add AnonymArticlePage to project, with ability to add rich text blocks to sections

* update advertising pages to pass CSS class to notification snippet

* make instances of AnonymTopAndBottomPage more easily identifiable by setting verbose_name

* make instances of AnonymContentSubPage more easily identifiable by setting verbose_name

* make CMS process DRYer by updating PeopleListBlock to reference Person objects

* make sure migration has a license

* create anonym app for anonym files

* move anonym files to anonym app

* make sure to preserve anonym data in database

* add comment about use of db_table in models file

* update imports in scss files based on new directory structure

* update imports in scss files based on new directory structure

* use custom component for comparison table on AnonymTopAndBottomPage, so we have more control over HTML and user experience

* remove wagtail.contrib.table_block from project, as it is no longer used

* fix lint error

* add license to files that are missing it

* remove unused anonym templates from mozorg app

* remove unused anonym templates from mozorg app

* move Person snippet to anonym app

* move Person snippet to anonym app

* reorder migrations after merge

* support HTML-safe text in Person.description field

* support HTML-safe text in Person.description field

* remove PeopleListBlock.text, since it is not used

* add a field to link to URL to learn more about a Person

* make two column block subheading text optional

* make contact page title and subtitle editable

* make contact page fields editable

* make the news page an index page for news items

* exclude AnonymNewsItemPages with a link from the sitemap

* change StatsListBlock to NewsItemListBlock, so users can choose news items whose stats appear in the section

* skip paths that do not have translations in get_static_urls()

* fix lint errors

* rename AnonymArticlePage to AnonymCaseStudyItemPage

* replace LogoCardBlock with CaseStudyItemListBlock, so users can choose case studies to add to a section

* create an AnonymCaseStudyPage as an index page for case studies

* make AnonymContentSubPage sure loads correct JS file

* when >3 case studies in block, show link to case study page

* commit template tags file to repository

* make code DRYer by ruusing the same template for AnonymNewsItemPage and AnonymCaseStudyItemPage

* remove unused anonym logo from repository

* add removed migration for moving person snippet to anonym app

* correct template definition for AnonymCaseStudyItemPage

* add missing migration

* reorder migrations after merge

* add license to new migration

* add license to files that are missing it

* fix lint errors

* fix lint errors

* Anonym Part 12: Wagtail Dependencies (#17005)

* for consistency with springfield, add wagtail helper dependencies

* set up wagtail-localize-dashboard on project

* set up wagtail-localize-intentional-blanks on project

* create fixtures for tests and create test anonym pages with a management command (#17008)

---------

Co-authored-by: Kasey Kelly <[email protected]>

* anon homepage frontend revisions

* CSS and model revisions

* license info added

* Update _misc.scss

* form fill icon fix

* avoid generic wrapper class names by using include_block for section blocks

* removing bad icon link

* fix lint errors

* removing another missing icon from protocol

* removing comments

* Create 0020_alter_anonymcasestudyitempage_content_and_more.py

* Update 0020_alter_anonymcasestudyitempage_content_and_more.py

* fix ruff formatting

* use latest version of wagtail-thumbnail-choice-block for CSS improvments

* fix ruff formatting issues

* use latest version of wagtail-localize-intentional-blanks

* contact page, solutions page, about page styles

* logo list block added

* news index page added

* news WIP

* requirements updated

* news styles, mobile styles

* for better clarity, rename NewsItemListBlock to be StatItemListBlock

* make code DRYer by having AnonymCaseStudyItemPage and AnonymNewsItemPage inherit from common abstract class

* support either AnonymNewsItemPage or AnonymCaseStudyItemPage in StatCardListBlock

* support either AnonymNewsItemPage or AnonymCaseStudyItemPage in LogoListBlock

* update tests based on recent changes to models

* support ordering by showing AnonymNewsItemPage publication date in Wagtail

* make selecting featured news item more explicit

* remove AnonymTopAndBottomPage, since it no longer has its own design

* squash anonym migrations, so they are easier to read

* [reset-db]

* comparison table revisions

* article page layout

* news page CMS revisions

---------

Co-authored-by: Jo Sprague <[email protected]>
Co-authored-by: Kasey Kelly <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants