diff --git a/network-api/networkapi/templates/fragments/buyersguide/category_dropdown.html b/network-api/networkapi/templates/fragments/buyersguide/category_dropdown.html index 9f7b4c92faa..6eb3b83e53c 100644 --- a/network-api/networkapi/templates/fragments/buyersguide/category_dropdown.html +++ b/network-api/networkapi/templates/fragments/buyersguide/category_dropdown.html @@ -10,7 +10,7 @@ tw-mr-auto tw-font-sans tw-font-bold - tw-text-sm + tw-text-[15px] tw-group hover:tw-text-black tw-text-gray-40 diff --git a/network-api/networkapi/templates/fragments/buyersguide/item.html b/network-api/networkapi/templates/fragments/buyersguide/item.html index 61331f4b7bc..b0cb2f7f831 100644 --- a/network-api/networkapi/templates/fragments/buyersguide/item.html +++ b/network-api/networkapi/templates/fragments/buyersguide/item.html @@ -18,8 +18,8 @@ {% if product.privacy_ding %} {% trans {% endif %} diff --git a/network-api/networkapi/templates/fragments/buyersguide/pni_newsletter_box.html b/network-api/networkapi/templates/fragments/buyersguide/pni_newsletter_box.html index 25215137a7f..2843e3f2778 100644 --- a/network-api/networkapi/templates/fragments/buyersguide/pni_newsletter_box.html +++ b/network-api/networkapi/templates/fragments/buyersguide/pni_newsletter_box.html @@ -4,8 +4,8 @@ {% trans
{% endif %} diff --git a/network-api/networkapi/templates/pages/buyersguide/about/press.html b/network-api/networkapi/templates/pages/buyersguide/about/press.html index 3c3d381cdcf..8cdf0942c1f 100644 --- a/network-api/networkapi/templates/pages/buyersguide/about/press.html +++ b/network-api/networkapi/templates/pages/buyersguide/about/press.html @@ -181,7 +181,7 @@

{% blocktrans trimmed %} - Here’s a warning that should be on some of the items on your holiday shopping list—privacy not included. That’s the + Here’s a warning that should be on some of the items on your holiday shopping list—*Privacy Not Included. That’s the point of a shopping guide put out by the Mozilla Foundation. {% endblocktrans %}

diff --git a/network-api/networkapi/templates/pages/buyersguide/base.html b/network-api/networkapi/templates/pages/buyersguide/base.html index c63aee787a4..def39a4650e 100644 --- a/network-api/networkapi/templates/pages/buyersguide/base.html +++ b/network-api/networkapi/templates/pages/buyersguide/base.html @@ -7,7 +7,7 @@ {% block page_title %} {% environment_prefix %} {% if pageTitle %}{{ pageTitle }} - {% else %}{% blocktrans context "“*privacy not included” can be localized. This is a reference to the “*batteries not included” mention on toys." %}*privacy not included | Shop smart and safe{% endblocktrans %} | Mozilla Foundation{% endif %} + {% else %}{% blocktrans context "“*Privacy Not Included” can be localized. This is a reference to the “*batteries not included” mention on toys." %}*Privacy Not Included | Shop smart and safe{% endblocktrans %} | Mozilla Foundation{% endif %} {% endblock %} {# TODO: consider using a different ga_identifier? #} @@ -23,7 +23,7 @@ {% block wagtail_metadata %} {% meta_tags %} - + {% endblock %} diff --git a/network-api/networkapi/templates/pages/buyersguide/catalog.html b/network-api/networkapi/templates/pages/buyersguide/catalog.html index 15132095eca..5381b208513 100644 --- a/network-api/networkapi/templates/pages/buyersguide/catalog.html +++ b/network-api/networkapi/templates/pages/buyersguide/catalog.html @@ -92,7 +92,7 @@   - + {% for cat in categories %} diff --git a/network-api/networkapi/templates/pages/buyersguide/contest.html b/network-api/networkapi/templates/pages/buyersguide/contest.html index c22fb5371fa..2168eaa79b5 100644 --- a/network-api/networkapi/templates/pages/buyersguide/contest.html +++ b/network-api/networkapi/templates/pages/buyersguide/contest.html @@ -55,7 +55,7 @@

Contest Rules

  • Tweet your song with the hashtag #PrivacyNotIncluded and mention @mozilla (the “Tweet”), or reply - with the song to the Instagram post marked “*privacy not included competition" (the “Instagram Post”) + with the song to the Instagram post marked “*Privacy Not Included competition" (the “Instagram Post”)
  • Prizes will be awarded for most creepy, least creepy, and funniest entries. See prize details in point 6 below. @@ -66,7 +66,7 @@

    Contest Rules

    Your Tweet with the song hashtag #PrivacyNotIncluded and mention of @mozilla, or your song posted in reply to our Instagram post marked - “*privacy not included competition" will constitute your entry into this Contest (the “Entry”). + “*Privacy Not Included competition" will constitute your entry into this Contest (the “Entry”).

    If you do not have a Twitter or Instagram account, you can visit https://twitter.com or diff --git a/network-api/networkapi/templates/pages/buyersguide/product_page.html b/network-api/networkapi/templates/pages/buyersguide/product_page.html index b69562c6c15..e91f40d2061 100644 --- a/network-api/networkapi/templates/pages/buyersguide/product_page.html +++ b/network-api/networkapi/templates/pages/buyersguide/product_page.html @@ -9,7 +9,7 @@ {% endblock %} {% block head_extra %} - + {% endblock %} {% block social_image %} @@ -51,7 +51,7 @@ {% if product.privacy_ding %}

    -

    {% blocktrans %}Warning: *privacy not included with this product{% endblocktrans %}

    +

    {% blocktrans %}Warning: *Privacy Not Included with this product{% endblocktrans %}

    {% endif %} diff --git a/network-api/networkapi/wagtailpages/migrations/0128_capitalize_privacy_not_included.py b/network-api/networkapi/wagtailpages/migrations/0128_capitalize_privacy_not_included.py new file mode 100644 index 00000000000..3beb1151cf2 --- /dev/null +++ b/network-api/networkapi/wagtailpages/migrations/0128_capitalize_privacy_not_included.py @@ -0,0 +1,18 @@ +# Generated by Django 4.2.10 on 2024-03-07 19:33 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ("wagtailpages", "0127_remove_old_url_fields_from_linkblock"), + ] + + operations = [ + migrations.AlterField( + model_name="productpage", + name="privacy_ding", + field=models.BooleanField(default=False, verbose_name="*Privacy Not Included ding"), + ), + ] diff --git a/network-api/networkapi/wagtailpages/migrations/0129_allow_spacer_on_articlepage_body.py b/network-api/networkapi/wagtailpages/migrations/0129_allow_spacer_on_articlepage_body.py new file mode 100644 index 00000000000..d3e0bf3e103 --- /dev/null +++ b/network-api/networkapi/wagtailpages/migrations/0129_allow_spacer_on_articlepage_body.py @@ -0,0 +1,798 @@ +# Generated by Django 4.2.10 on 2024-03-07 22:02 + +import django.core.validators +import wagtail.admin.forms.choosers +import wagtail.blocks +import wagtail.contrib.table_block.blocks +import wagtail.documents.blocks +import wagtail.embeds.blocks +import wagtail.fields +import wagtail.images.blocks +from django.db import migrations + +import networkapi.wagtailpages.pagemodels.customblocks.articles + + +class Migration(migrations.Migration): + + dependencies = [ + ("wagtailpages", "0128_capitalize_privacy_not_included"), + ] + + operations = [ + migrations.AlterField( + model_name="articlepage", + name="body", + field=wagtail.fields.StreamField( + [ + ( + "accordion", + wagtail.blocks.StructBlock( + [ + ( + "accordion_items", + wagtail.blocks.ListBlock( + wagtail.blocks.StructBlock( + [ + ( + "title", + wagtail.blocks.CharBlock( + help_text="Heading for the Accordion Item" + ), + ), + ( + "content", + wagtail.blocks.StreamBlock( + [ + ( + "rich_text", + wagtail.blocks.RichTextBlock( + blank=True, + features=[ + "bold", + "italic", + "link", + "ul", + "ol", + "document-link", + ], + ), + ), + ( + "datawrapper", + wagtail.embeds.blocks.EmbedBlock( + help_text='Enter the "visualization only" link of the Datawrapper chart. It looks something like this: https://datawrapper.dwcdn.net/KwSKp/1/', + icon="image", + template="wagtailpages/blocks/datawrapper_block.html", + ), + ), + ( + "image", + wagtail.blocks.StructBlock( + [ + ( + "image", + wagtail.images.blocks.ImageChooserBlock(), + ), + ( + "altText", + wagtail.blocks.CharBlock( + help_text="Image description (for screen readers).", + required=True, + ), + ), + ] + ), + ), + ( + "video", + wagtail.blocks.StructBlock( + [ + ( + "url", + wagtail.blocks.CharBlock( + help_text="For YouTube: go to your YouTube video and click “Share,” then “Embed,” and then copy and paste the provided URL only. For example: https://www.youtube.com/embed/3FIVXBawyQw For Vimeo: follow similar steps to grab the embed URL. For example: https://player.vimeo.com/video/9004979", + label="Embed URL", + ), + ), + ( + "caption", + wagtail.blocks.CharBlock(required=False), + ), + ( + "captionURL", + wagtail.blocks.CharBlock( + help_text="Optional URL for caption to link to.", + required=False, + ), + ), + ( + "video_width", + wagtail.blocks.ChoiceBlock( + choices=[ + ("normal", "Normal"), + ("wide", "Wide"), + ("full_width", "Full Width"), + ], + help_text="Wide videos are col-12, Full-Width videos reach both ends of the screen.", + ), + ), + ] + ), + ), + ] + ), + ), + ] + ) + ), + ) + ] + ), + ), + ( + "airtable", + wagtail.blocks.StructBlock( + [ + ( + "url", + wagtail.blocks.URLBlock( + help_text="Copied from the Airtable embed code. The word 'embed' will be in the url" + ), + ), + ( + "height", + wagtail.blocks.IntegerBlock( + default=533, + help_text="The pixel height on desktop view, usually copied from the Airtable embed code", + ), + ), + ] + ), + ), + ( + "datawrapper", + wagtail.embeds.blocks.EmbedBlock( + help_text='Enter the "visualization only" link of the Datawrapper chart. It looks something like this: https://datawrapper.dwcdn.net/KwSKp/1/', + icon="image", + template="wagtailpages/blocks/datawrapper_block.html", + ), + ), + ( + "callout", + wagtail.blocks.RichTextBlock( + features=["bold", "italic", "link", "h2", "h3", "h4", "ul", "ol"], + template="wagtailpages/blocks/article_blockquote_block.html", + ), + ), + ( + "card_grid", + wagtail.blocks.StructBlock( + [ + ( + "cards", + wagtail.blocks.ListBlock( + wagtail.blocks.StructBlock( + [ + ("image", wagtail.images.blocks.ImageChooserBlock()), + ( + "alt_text", + wagtail.blocks.CharBlock( + help_text="Alt text for card's image.", required=False + ), + ), + ("title", wagtail.blocks.CharBlock(help_text="Heading for the card.")), + ("body", wagtail.blocks.TextBlock(help_text="Body text of the card.")), + ( + "link_url", + wagtail.blocks.CharBlock( + help_text="Optional URL that this card should link out to. (Note: If left blank, link will not render.) ", + required=False, + ), + ), + ( + "link_label", + wagtail.blocks.CharBlock( + help_text="Optional Label for the URL link above. (Note: If left blank, link will not render.) ", + required=False, + ), + ), + ] + ), + help_text="Please use a minimum of 2 cards.", + ), + ) + ] + ), + ), + ( + "content", + networkapi.wagtailpages.pagemodels.customblocks.articles.ArticleRichText( + features=[ + "bold", + "italic", + "link", + "h2", + "h3", + "h4", + "h5", + "ol", + "ul", + "hr", + "document-link", + "large", + "image", + "footnotes", + ] + ), + ), + ( + "image", + wagtail.blocks.StructBlock( + [ + ("image", wagtail.images.blocks.ImageChooserBlock()), + ( + "caption", + wagtail.blocks.RichTextBlock( + features=["bold", "italic", "link"], label="Image caption", required=False + ), + ), + ("alt_text", wagtail.blocks.CharBlock(required=False)), + ( + "wide_image", + wagtail.blocks.BooleanBlock( + default=False, + help_text='Checking this will use a wider version of this image, but not full width. For an edge-to-edge image, use the "Wide Image" block.', + required=False, + ), + ), + ] + ), + ), + ( + "image_grid", + wagtail.blocks.StructBlock( + [ + ( + "grid_items", + wagtail.blocks.ListBlock( + wagtail.blocks.StructBlock( + [ + ("image", wagtail.images.blocks.ImageChooserBlock()), + ( + "alt_text", + wagtail.blocks.CharBlock( + help_text="Alt text for this image.", required=False + ), + ), + ( + "caption", + wagtail.blocks.CharBlock( + help_text="Please remember to properly attribute any images we use.", + required=False, + ), + ), + ( + "url", + wagtail.blocks.CharBlock( + help_text="Optional URL that this figure should link out to.", + required=False, + ), + ), + ( + "square_image", + wagtail.blocks.BooleanBlock( + default=True, + help_text="If left checked, the image will be cropped to be square.", + required=False, + ), + ), + ] + ) + ), + ) + ] + ), + ), + ( + "image_text", + wagtail.blocks.StructBlock( + [ + ("image", wagtail.images.blocks.ImageChooserBlock()), + ( + "altText", + wagtail.blocks.CharBlock( + help_text="Image description (for screen readers).", required=True + ), + ), + ( + "text", + wagtail.blocks.RichTextBlock( + features=[ + "bold", + "italic", + "link", + "h2", + "h3", + "h4", + "h5", + "ol", + "ul", + "hr", + "document-link", + ] + ), + ), + ( + "url", + wagtail.blocks.CharBlock( + help_text="Optional URL that this image should link out to.", required=False + ), + ), + ( + "top_divider", + wagtail.blocks.BooleanBlock( + help_text="Optional divider above content block.", required=False + ), + ), + ( + "bottom_divider", + wagtail.blocks.BooleanBlock( + help_text="Optional divider below content block.", required=False + ), + ), + ] + ), + ), + ( + "double_image", + wagtail.blocks.StructBlock( + [ + ("image_1", wagtail.images.blocks.ImageChooserBlock()), + ( + "image_1_caption", + wagtail.blocks.RichTextBlock( + features=["bold", "italic", "link"], label="Image caption", required=False + ), + ), + ("image_2", wagtail.images.blocks.ImageChooserBlock()), + ( + "image_2_caption", + wagtail.blocks.RichTextBlock( + features=["bold", "italic", "link"], label="Image caption", required=False + ), + ), + ] + ), + ), + ( + "full_width_image", + wagtail.blocks.StructBlock( + [ + ("image", wagtail.images.blocks.ImageChooserBlock()), + ( + "image_height", + wagtail.blocks.IntegerBlock( + default=410, + help_text="A custom height for this image. The image will be 1400px wide by this height. Note: This may cause images to look pixelated. If the browser is wider than 1400px the height will scale vertically while the width scales horizontally", + ), + ), + ( + "caption", + wagtail.blocks.RichTextBlock( + features=["bold", "italic", "link"], label="Image caption", required=False + ), + ), + ] + ), + ), + ( + "iframe", + wagtail.blocks.StructBlock( + [ + ( + "url", + wagtail.blocks.CharBlock( + help_text="Please note that only URLs from allow-listed domains will work." + ), + ), + ( + "height", + wagtail.blocks.IntegerBlock( + help_text="Optional integer pixel value for custom iFrame height", + required=False, + ), + ), + ("caption", wagtail.blocks.CharBlock(required=False)), + ( + "captionURL", + wagtail.blocks.CharBlock( + help_text="Optional URL that this caption should link out to.", required=False + ), + ), + ( + "iframe_width", + wagtail.blocks.ChoiceBlock( + choices=[("normal", "Normal"), ("wide", "Wide"), ("full_width", "Full Width")], + help_text="Wide iframes are col-12, Full-Width iframes reach both ends of the screen", + ), + ), + ( + "disable_scroll", + wagtail.blocks.BooleanBlock( + default=False, + help_text='Checking this will add "scrolling=no" to the iframe. Use this if your iframe is rendering an unnecessary scroll bar or whitespace below it.', + required=False, + ), + ), + ] + ), + ), + ( + "linkbutton", + wagtail.blocks.StructBlock( + [ + ("label", wagtail.blocks.CharBlock()), + ( + "link", + wagtail.blocks.StructBlock( + [ + ( + "link_to", + wagtail.blocks.ChoiceBlock( + choices=[ + ("page", "Page"), + ("file", "File"), + ("custom_url", "Custom URL"), + ("email", "Email"), + ("anchor", "Anchor"), + ("phone", "Phone"), + ], + classname="link_choice_type_selector", + label="Link to", + required=False, + ), + ), + ( + "page", + wagtail.blocks.PageChooserBlock( + form_classname="page_link", label="Page", required=False + ), + ), + ( + "file", + wagtail.documents.blocks.DocumentChooserBlock( + form_classname="file_link", label="File", required=False + ), + ), + ( + "custom_url", + wagtail.blocks.CharBlock( + form_classname="custom_url_link url_field", + label="Custom URL", + max_length=300, + required=False, + validators=[ + wagtail.admin.forms.choosers.URLOrAbsolutePathValidator() + ], + ), + ), + ( + "anchor", + wagtail.blocks.CharBlock( + form_classname="anchor_link", + label="#", + max_length=300, + required=False, + ), + ), + ("email", wagtail.blocks.EmailBlock(required=False)), + ( + "phone", + wagtail.blocks.CharBlock( + form_classname="phone_link", + label="Phone", + max_length=30, + required=False, + ), + ), + ( + "new_window", + wagtail.blocks.BooleanBlock( + form_classname="new_window_toggle", + label="Open in new window", + required=False, + ), + ), + ] + ), + ), + ( + "styling", + wagtail.blocks.ChoiceBlock( + choices=[ + ("btn-primary", "Primary button"), + ("btn-secondary", "Secondary button"), + ] + ), + ), + ] + ), + ), + ( + "single_quote", + wagtail.blocks.StructBlock( + [ + ("quote", wagtail.blocks.RichTextBlock(features=["bold"])), + ("attribution", wagtail.blocks.CharBlock(required=False)), + ( + "attribution_info", + wagtail.blocks.RichTextBlock(features=["bold", "link", "large"], required=False), + ), + ] + ), + ), + ( + "slider", + wagtail.blocks.StructBlock( + [ + ( + "title", + wagtail.blocks.CharBlock(help_text="Heading for the slider.", required=False), + ), + ( + "slides", + wagtail.blocks.StreamBlock( + [ + ( + "slide", + wagtail.blocks.StructBlock( + [ + ( + "title", + wagtail.blocks.CharBlock( + help_text="Heading of the card.", required=False + ), + ), + ( + "image", + wagtail.images.blocks.ImageChooserBlock( + help_text="The image associated with this event." + ), + ), + ( + "caption", + wagtail.blocks.TextBlock( + help_text="Caption for slider image", required=False + ), + ), + ( + "body", + wagtail.blocks.RichTextBlock( + blank=True, + features=["bold", "italic", "link", "large"], + required=False, + ), + ), + ( + "buttons", + wagtail.blocks.StreamBlock( + [ + ( + "internal", + wagtail.blocks.StructBlock( + [ + ( + "label", + wagtail.blocks.CharBlock( + help_text="Label for this link." + ), + ), + ( + "link", + wagtail.blocks.PageChooserBlock( + help_text="Page that this should link out to." + ), + ), + ] + ), + ), + ( + "external", + wagtail.blocks.StructBlock( + [ + ( + "label", + wagtail.blocks.CharBlock( + help_text="Label for this link." + ), + ), + ( + "link", + wagtail.blocks.URLBlock( + help_text="URL that this should link out to." + ), + ), + ] + ), + ), + ( + "document", + wagtail.blocks.StructBlock( + [ + ( + "label", + wagtail.blocks.CharBlock( + help_text="Label for this link." + ), + ), + ( + "document", + wagtail.documents.blocks.DocumentChooserBlock( + help_text="Document that this should link out to." + ), + ), + ], + help_text='An iCal document can be attached here for an "Add to Calendar" button.', + ), + ), + ], + help_text="A list of buttons that will appear at the bottom of the card.", + max_num=2, + required=False, + ), + ), + ] + ), + ) + ], + help_text="A list of slides.", + ), + ), + ] + ), + ), + ( + "spacer", + wagtail.blocks.StructBlock( + [ + ( + "size", + wagtail.blocks.ChoiceBlock( + choices=[ + ("1", "quarter spacing"), + ("2", "half spacing"), + ("3", "single spacing"), + ("4", "one and a half spacing"), + ("5", "triple spacing"), + ] + ), + ) + ] + ), + ), + ( + "table", + wagtail.contrib.table_block.blocks.TableBlock( + template="wagtailpages/blocks/article_table_block.html" + ), + ), + ( + "video", + wagtail.blocks.StructBlock( + [ + ( + "url", + wagtail.blocks.CharBlock( + help_text="For YouTube: go to your YouTube video and click “Share,” then “Embed,” and then copy and paste the provided URL only. For example: https://www.youtube.com/embed/3FIVXBawyQw For Vimeo: follow similar steps to grab the embed URL. For example: https://player.vimeo.com/video/9004979", + label="Embed URL", + ), + ), + ("caption", wagtail.blocks.CharBlock(required=False)), + ( + "captionURL", + wagtail.blocks.CharBlock( + help_text="Optional URL for caption to link to.", required=False + ), + ), + ( + "video_width", + wagtail.blocks.ChoiceBlock( + choices=[("normal", "Normal"), ("wide", "Wide"), ("full_width", "Full Width")], + help_text="Wide videos are col-12, Full-Width videos reach both ends of the screen.", + ), + ), + ] + ), + ), + ( + "advanced_table", + wagtail.blocks.StructBlock( + [ + ( + "header", + wagtail.blocks.BooleanBlock( + help_text="Display the first row as a header.", required=False + ), + ), + ( + "column", + wagtail.blocks.BooleanBlock( + help_text="Display the first column as a header.", required=False + ), + ), + ( + "caption", + wagtail.blocks.CharBlock( + help_text="A heading that identifies the overall topic of the table, and is useful for screen reader users", + required=False, + ), + ), + ( + "wide", + wagtail.blocks.BooleanBlock( + default=True, + help_text="If this is checked, the table will render wider than the other page body content.", + required=False, + ), + ), + ( + "table", + wagtail.blocks.StreamBlock( + [ + ( + "row", + wagtail.blocks.StreamBlock( + [ + ( + "cell", + wagtail.blocks.StructBlock( + [ + ( + "centered_text", + wagtail.blocks.BooleanBlock(required=False), + ), + ( + "column_width", + wagtail.blocks.IntegerBlock( + default=1, + help_text="Enter the number of extra cell columns you want to merge together. Merging a cell column will expand a cell to the right. To merge two cells together, set the column width to 2. For 3, set 3. Default is 1. Min 1. Max 20.", + validators=[ + django.core.validators.MaxValueValidator( + 20 + ), + django.core.validators.MinValueValidator( + 1 + ), + ], + ), + ), + ( + "content", + wagtail.blocks.RichTextBlock( + features=[ + "bold", + "italic", + "link", + "ul", + "ol", + ] + ), + ), + ] + ), + ) + ] + ), + ) + ] + ), + ), + ] + ), + ), + ], + use_json_field=True, + ), + ), + ] diff --git a/network-api/networkapi/wagtailpages/pagemodels/article_fields.py b/network-api/networkapi/wagtailpages/pagemodels/article_fields.py index c7402e208a4..1925be94cc9 100644 --- a/network-api/networkapi/wagtailpages/pagemodels/article_fields.py +++ b/network-api/networkapi/wagtailpages/pagemodels/article_fields.py @@ -36,6 +36,7 @@ ("linkbutton", customblocks.LinkButtonBlock()), ("single_quote", customblocks.SingleQuoteBlock()), ("slider", customblocks.FoundationSliderBlock()), + ("spacer", customblocks.BootstrapSpacerBlock()), ("table", TableBlock(template="wagtailpages/blocks/article_table_block.html")), ("video", customblocks.VideoBlock()), ("advanced_table", customblocks.AdvancedTableBlock()), diff --git a/network-api/networkapi/wagtailpages/pagemodels/buyersguide/homepage.py b/network-api/networkapi/wagtailpages/pagemodels/buyersguide/homepage.py index 3e421107ab3..e8d02d0e166 100644 --- a/network-api/networkapi/wagtailpages/pagemodels/buyersguide/homepage.py +++ b/network-api/networkapi/wagtailpages/pagemodels/buyersguide/homepage.py @@ -184,8 +184,8 @@ def about_page(self, request): context = self.get_context(request) context["pagetype"] = "about" context["pageTitle"] = pgettext( - "*privacy not included can be localized.", - "How to use *privacy not included", + "*Privacy Not Included can be localized.", + "How to use *Privacy Not Included", ) return render(request, "pages/buyersguide/about/how_to_use.html", context) @@ -194,8 +194,8 @@ def about_why_page(self, request): context = self.get_context(request) context["pagetype"] = "about" context["pageTitle"] = pgettext( - "*privacy not included can be localized.", - "Why we made *privacy not included", + "*Privacy Not Included can be localized.", + "Why we made *Privacy Not Included", ) return render(request, "pages/buyersguide/about/why_we_made.html", context) @@ -208,7 +208,7 @@ def about_press_page(self, request): + " | " + pgettext( "This can be localized. This is a reference to the “*batteries not included” mention on toys.", - "*privacy not included", + "*Privacy Not Included", ) ) return render(request, "pages/buyersguide/about/press.html", context) @@ -222,7 +222,7 @@ def about_contact_page(self, request): + " | " + pgettext( "This can be localized. This is a reference to the “*batteries not included” mention on toys.", - "*privacy not included", + "*Privacy Not Included", ) ) return render(request, "pages/buyersguide/about/contact.html", context) @@ -236,7 +236,7 @@ def about_methodology_page(self, request): + " | " + pgettext( "This can be localized. This is a reference to the “*batteries not included” mention on toys.", - "*privacy not included", + "*Privacy Not Included", ) ) return render(request, "pages/buyersguide/about/methodology.html", context) @@ -250,7 +250,7 @@ def about_contest(self, request): + " | " + pgettext( "This can be localized. This is a reference to the “*batteries not included” mention on toys.", - "*privacy not included", + "*Privacy Not Included", ) ) return render(request, "pages/buyersguide/contest.html", context) diff --git a/network-api/networkapi/wagtailpages/pagemodels/buyersguide/products.py b/network-api/networkapi/wagtailpages/pagemodels/buyersguide/products.py index 42fe1597c6d..bd867838061 100644 --- a/network-api/networkapi/wagtailpages/pagemodels/buyersguide/products.py +++ b/network-api/networkapi/wagtailpages/pagemodels/buyersguide/products.py @@ -448,7 +448,7 @@ class ProductPage(BasePage): parent_page_types = ["wagtailpages.BuyersGuidePage"] privacy_ding = models.BooleanField( - verbose_name="*privacy not included ding", + verbose_name="*Privacy Not Included ding", default=False, ) adult_content = models.BooleanField( diff --git a/source/images/buyers-guide/icon-privacy-ding-de.svg b/source/images/buyers-guide/icon-privacy-ding-de.svg index 33eb6372430..0ba1fa99fc8 100644 --- a/source/images/buyers-guide/icon-privacy-ding-de.svg +++ b/source/images/buyers-guide/icon-privacy-ding-de.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/source/images/buyers-guide/icon-privacy-ding-es.svg b/source/images/buyers-guide/icon-privacy-ding-es.svg index 9367510009b..1ae30095917 100644 --- a/source/images/buyers-guide/icon-privacy-ding-es.svg +++ b/source/images/buyers-guide/icon-privacy-ding-es.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/source/images/buyers-guide/icon-privacy-ding-fr.svg b/source/images/buyers-guide/icon-privacy-ding-fr.svg index 9ae97c0884f..2143de87c45 100644 --- a/source/images/buyers-guide/icon-privacy-ding-fr.svg +++ b/source/images/buyers-guide/icon-privacy-ding-fr.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/source/images/buyers-guide/icon-privacy-ding-fy-nl.svg b/source/images/buyers-guide/icon-privacy-ding-fy-nl.svg index 4a2bf0f6341..31a3cb5d0b3 100644 --- a/source/images/buyers-guide/icon-privacy-ding-fy-nl.svg +++ b/source/images/buyers-guide/icon-privacy-ding-fy-nl.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/source/images/buyers-guide/icon-privacy-ding-nl.svg b/source/images/buyers-guide/icon-privacy-ding-nl.svg index 0a912e09534..75fdf3454d4 100644 --- a/source/images/buyers-guide/icon-privacy-ding-nl.svg +++ b/source/images/buyers-guide/icon-privacy-ding-nl.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/source/images/buyers-guide/icon-privacy-ding-pl.svg b/source/images/buyers-guide/icon-privacy-ding-pl.svg new file mode 100644 index 00000000000..23203489018 --- /dev/null +++ b/source/images/buyers-guide/icon-privacy-ding-pl.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/source/images/buyers-guide/icon-privacy-ding-pt.svg b/source/images/buyers-guide/icon-privacy-ding-pt.svg index ff670f367d3..f3660aaff56 100644 --- a/source/images/buyers-guide/icon-privacy-ding-pt.svg +++ b/source/images/buyers-guide/icon-privacy-ding-pt.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/source/images/buyers-guide/icon-privacy-ding.svg b/source/images/buyers-guide/icon-privacy-ding.svg index eff37812757..8f4854b8d8f 100644 --- a/source/images/buyers-guide/icon-privacy-ding.svg +++ b/source/images/buyers-guide/icon-privacy-ding.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/source/js/components/multipage-nav-mobile/multipage-nav-mobile.scss b/source/js/components/multipage-nav-mobile/multipage-nav-mobile.scss index 9bf700c8b67..edc17596048 100644 --- a/source/js/components/multipage-nav-mobile/multipage-nav-mobile.scss +++ b/source/js/components/multipage-nav-mobile/multipage-nav-mobile.scss @@ -52,6 +52,6 @@ .dropdown-nav { > div { - margin: 14px 0; + margin: 16px 0; } } diff --git a/source/sass/buyers-guide/views/product.scss b/source/sass/buyers-guide/views/product.scss index 29388808ec2..d0fdbe01bb5 100644 --- a/source/sass/buyers-guide/views/product.scss +++ b/source/sass/buyers-guide/views/product.scss @@ -83,6 +83,16 @@ } } + @at-root html[lang="pl"] & { + background-image: url(../_images/buyers-guide/icon-privacy-ding-pl.svg); + width: 55px; + + @media (min-width: $pni-product-breakpoint-larger) { + width: 70px; + height: 90px; + } + } + @at-root html[lang="pt-BR"] & { background-image: url(../_images/buyers-guide/icon-privacy-ding-pt.svg); width: 53px; diff --git a/tests/integration/pni/search.spec.js b/tests/integration/pni/search.spec.js index e101eab6a12..65ea2b6731c 100644 --- a/tests/integration/pni/search.spec.js +++ b/tests/integration/pni/search.spec.js @@ -22,7 +22,7 @@ test.describe("PNI search", () => { }; const qs = { - ding: `#product-filter-pni-toggle`, // this is the "privacy not included" filter toggle + ding: `#product-filter-pni-toggle`, // this is the "*Privacy Not Included" filter toggle dingLabel: `label[for="product-filter-pni-toggle"]`, products: `.product-box.d-flex`, searchBar: `#product-filter-search-input`,