diff --git a/kmicms/core/blocks/elements.py b/kmicms/core/blocks/elements.py index 46ee3a2..af02729 100644 --- a/kmicms/core/blocks/elements.py +++ b/kmicms/core/blocks/elements.py @@ -1,3 +1,6 @@ +from typing import Any + +from django.core.exceptions import ValidationError from wagtail import blocks from wagtail.images.blocks import ImageChooserBlock @@ -33,7 +36,6 @@ class Meta: class CallToActionBlock(blocks.StructBlock): label = blocks.CharBlock() - link = blocks.PageChooserBlock() style = blocks.ChoiceBlock( choices=[ ("primary", "Primary"), @@ -46,15 +48,25 @@ class CallToActionBlock(blocks.StructBlock): ("dark", "Dark"), ] ) + link = blocks.PageChooserBlock(required=False, label="Internal Link") + external_link = blocks.URLBlock(required=False, label="External Link") class Meta: template = "core/blocks/elements/call-to-action.html" + help_text = "bees" + + def clean(self, value: Any) -> Any: + result = super().clean(value) + if not (bool(result["link"]) ^ bool(result["external_link"])): + raise ValidationError("Please add either an internal or external link.") + return result class CardBlock(blocks.StructBlock): image = ImageChooserBlock() title = blocks.TextBlock() text = blocks.RichTextBlock() + cta_list = blocks.ListBlock(CallToActionBlock(), label="Calls to Action") class Meta: label = "Card" diff --git a/kmicms/core/templates/core/blocks/elements/call-to-action.html b/kmicms/core/templates/core/blocks/elements/call-to-action.html index 3d44a2e..bc2d8fe 100644 --- a/kmicms/core/templates/core/blocks/elements/call-to-action.html +++ b/kmicms/core/templates/core/blocks/elements/call-to-action.html @@ -1,4 +1,4 @@ {% load wagtailcore_tags %} - + {{ value.label }} \ No newline at end of file diff --git a/kmicms/core/templates/core/blocks/elements/card-grid.html b/kmicms/core/templates/core/blocks/elements/card-grid.html index 534db9f..0ed7e51 100644 --- a/kmicms/core/templates/core/blocks/elements/card-grid.html +++ b/kmicms/core/templates/core/blocks/elements/card-grid.html @@ -1,7 +1,7 @@ {% load wagtailcore_tags %} -
+
{% for card in value.card_list %} -
+
{% include_block card %}
{% endfor %} diff --git a/kmicms/core/templates/core/blocks/elements/card.html b/kmicms/core/templates/core/blocks/elements/card.html index 29b4203..619b8ca 100644 --- a/kmicms/core/templates/core/blocks/elements/card.html +++ b/kmicms/core/templates/core/blocks/elements/card.html @@ -5,5 +5,8 @@
{{ value.title }}

{{ value.text|richtext}}

+ {% for cta in value.cta_list %} + {% include_block cta %} + {% endfor %}
\ No newline at end of file diff --git a/kmicms/static/css/main.scss b/kmicms/static/css/main.scss index 425bf98..192aae3 100644 --- a/kmicms/static/css/main.scss +++ b/kmicms/static/css/main.scss @@ -15,6 +15,7 @@ // Sections @import "./sections/auth-panel"; +@import "./sections/card-grid"; @import "./sections/masthead"; @import "./sections/showcase"; @import "./sections/testimonials"; diff --git a/kmicms/static/css/sections/_card-grid.scss b/kmicms/static/css/sections/_card-grid.scss new file mode 100644 index 0000000..71e8691 --- /dev/null +++ b/kmicms/static/css/sections/_card-grid.scss @@ -0,0 +1,13 @@ +// +// Card Grid +// + +.card-grid { + .card-img, .card-img-top, .card-img-bottom { + margin-left: auto; + margin-right: auto; + max-height: 6rem; + max-width: 100%; + padding: 1rem; + } +} \ No newline at end of file