Skip to content

Commit 50b064f

Browse files
author
AJ Griffiths
committed
Refactor to generalise usage.
1 parent 3db8c41 commit 50b064f

File tree

6 files changed

+49
-66
lines changed

6 files changed

+49
-66
lines changed

tbx/core/blocks.py

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -221,7 +221,7 @@ def get_button_link(self):
221221
# Ensure page exists and is live.
222222
if block.value and block.value.live:
223223
return block.value.url
224-
elif block_type == "external_link":
224+
elif block_type == "external_link" or block_type =="modal_iframe":
225225
return block.value
226226
elif block_type == "email":
227227
return f"mailto:{block.value}"
@@ -248,7 +248,7 @@ class CallToActionBlock(blocks.StructBlock):
248248
("external_link", blocks.URLBlock()),
249249
("email", blocks.EmailBlock()),
250250
("document_link", DocumentChooserBlock()),
251-
("pipedrive_link", blocks.URLBlock()),
251+
("modal_iframe", blocks.URLBlock()),
252252
],
253253
required=True,
254254
max_num=1,
@@ -270,14 +270,23 @@ class Meta:
270270

271271

272272
class StickyCTABlock(blocks.StructBlock):
273-
call_to_action = blocks.StreamBlock(
274-
[("call_to_action", CallToActionBlock())], max_num=1
275-
)
276273
sticky_text = blocks.CharBlock(max_length=40)
277274
sticky_subtext = blocks.CharBlock(max_length=55)
275+
button_link = blocks.StreamBlock(
276+
[
277+
("internal_link", blocks.PageChooserBlock()),
278+
("external_link", blocks.URLBlock()),
279+
("email", blocks.EmailBlock()),
280+
("document_link", DocumentChooserBlock()),
281+
("modal_iframe", blocks.URLBlock()),
282+
],
283+
required=True,
284+
max_num=1,
285+
)
278286

279287
class Meta:
280288
template = "patterns/molecules/streamfield/blocks/sticky_call_to_action.html"
289+
value_class = ButtonLinkStructValue
281290

282291

283292
class DynamicHeroBlock(blocks.StructBlock):

tbx/project_styleguide/templates/patterns/molecules/streamfield/blocks/call_to_action.html

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@ <h2 class="heading heading--two-b call-to-action__heading">{{ value.text }}</h2>
1111
{% endif %}
1212
</div>
1313
{% if value.button_text and value.button_link %}
14-
{% if value.get_button_link_block.block_type == "pipedrive_link" %}
15-
<button class="call-to-action__button button" data-micromodal-trigger="pipedrive-embed-modal">Open Modal</button>
14+
{% if value.get_button_link_block.block_type == "modal_iframe" %}
15+
<button class="call-to-action__button button" data-micromodal-trigger="iframe-embed-modal">{{ value.button_text }}</button>
1616
{% else %}
1717
<a href="{{ value.get_button_link }}" class="call-to-action__button button">
1818
{{ value.button_text }}
@@ -26,7 +26,7 @@ <h2 class="heading heading--two-b call-to-action__heading">{{ value.text }}</h2>
2626
</div>
2727

2828
<!-- Modal content -->
29-
<div class="modal" id="pipedrive-embed-modal" aria-hidden="true">
29+
<div class="modal" id="iframe-embed-modal" aria-hidden="true">
3030
<div class="modal__overlay" tabindex="-1" data-micromodal-close></div>
3131
<div class="modal__container" role="dialog" aria-modal="true" aria-labelledby="modal-title" >
3232
<header class="modal__header">
@@ -37,11 +37,11 @@ <h2 class="modal__heading heading heading--two" id="modal-title">Service Enquiry
3737
</header>
3838
<main class="modal__content" id="filters-content">
3939
<iframe
40-
src="{{ cta.value.button_link.0 }}"
40+
src="{{ cta.value.get_button_link }}"
4141
width="100%"
4242
height="650px"
4343
frameborder="0"
44-
title="Pipedrive Webform">
44+
title="Modal Webform">
4545
</iframe>
4646
</main>
4747
</div>

tbx/project_styleguide/templates/patterns/molecules/streamfield/blocks/contact_call_to_action.html

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,8 @@ <h2 class="heading heading--two-b contact-cta__heading">{{ cta.value.text }}</h2
3030

3131
{# CTA button #}
3232
{% if cta.value.button_text and cta.value.button_link %}
33-
{% if cta.value.get_button_link_block.block_type == "pipedrive_link" %}
34-
<button class="contact-cta__button button" data-micromodal-trigger="pipedrive-embed-modal">{{ cta.value.button_text }}</button>
33+
{% if cta.value.get_button_link_block.block_type == "modal_iframe" %}
34+
<button class="contact-cta__button button" data-micromodal-trigger="iframe-embed-modal">{{ cta.value.button_text }}</button>
3535
{% else %}
3636
<a href="{{ cta.value.get_button_link }}" class="contact-cta__button button">
3737
{{ cta.value.button_text }}
@@ -42,9 +42,9 @@ <h2 class="heading heading--two-b contact-cta__heading">{{ cta.value.text }}</h2
4242
{% endif %}
4343
{% endif %}
4444
</div>
45-
{% if cta.value.get_button_link_block.block_type == "pipedrive_link" %}
45+
{% if cta.value.get_button_link_block.block_type == "modal_iframe" %}
4646
<!-- Modal content -->
47-
<div class="modal" id="pipedrive-embed-modal" aria-hidden="true">
47+
<div class="modal" id="iframe-embed-modal" aria-hidden="true">
4848
<div class="modal__overlay" tabindex="-1" data-micromodal-close></div>
4949
<div class="modal__container" role="dialog" aria-modal="true" aria-labelledby="modal-title" >
5050
<header class="modal__header">
@@ -55,11 +55,11 @@ <h2 class="modal__heading heading heading--two" id="modal-title">Service Enquiry
5555
</header>
5656
<main class="modal__content" id="filters-content">
5757
<iframe
58-
src="{{ cta.value.button_link.0 }}"
58+
src="{{ cta.value.get_button_link }}"
5959
width="100%"
6060
height="650px"
6161
frameborder="0"
62-
title="Pipedrive Webform">
62+
title="Modal Webform">
6363
</iframe>
6464
</main>
6565
</div>
Lines changed: 9 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -1,47 +1,22 @@
11
{% load wagtailcore_tags %}
22
{# call_to_action is a required field (streamblock) in the block definition #}
3-
{% with cta=value.call_to_action|first %}
4-
<div class="call-to-action grid__call-to-action" id="{{ value.id }}">
5-
<div class="call-to-action__inner">
6-
<div class="call-to-action__text">
7-
<h2 class="heading heading--two-b call-to-action__heading">{{ cta.value.text }}</h2>
8-
{% if cta.value.description %}
9-
<div class="call-to-action__description">
10-
{{ cta.value.description|richtext }}
11-
</div>
12-
{% endif %}
13-
</div>
14-
{% if cta.value.button_text and cta.value.button_link %}
15-
{% if cta.value.get_button_link_block.block_type == "pipedrive_link" %}
16-
<button class="call-to-action__button button" data-micromodal-trigger="pipedrive-embed-modal">{{ cta.value.button_text }}</button>
17-
{% else %}
18-
<a href="{{ cta.value.get_button_link }}" class="call-to-action__button button">
19-
{{ cta.value.button_text }}
20-
{% if cta.value.get_button_link_block.block_type == "document_link" %}
21-
({{ cta.value.get_button_file_size|filesizeformat }})
22-
{% endif %}
23-
</a>
24-
{% endif %}
25-
{% endif %}
26-
</div>
27-
</div>
283

294
<!-- Sticky block -->
305
<div class="call-to-action__sticky">
31-
<div class="call-to-action__inner">
32-
{% if cta.value.get_button_link_block.block_type == "pipedrive_link" %}
33-
<button class="call-to-action__button button" data-micromodal-trigger="pipedrive-embed-modal">
6+
<div class="call-to-action__stickyinner">
7+
{% if value.get_button_link_block.block_type == "modal_iframe" %}
8+
<button class="call-to-action__button button" data-micromodal-trigger="iframe-embed-modal">
349
{{ value.sticky_text }}
3510
{% if value.sticky_subtext %}
3611
<br>
3712
{{ value.sticky_subtext }}
3813
{% endif %}
3914
</button>
4015
{% else %}
41-
<a href="{{ cta.value.get_button_link }}" class="call-to-action__button button">
16+
<a href="{{ value.get_button_link }}" class="call-to-action__button button">
4217
{{ value.sticky_text }}
43-
{% if cta.value.get_button_link_block.block_type == "document_link" %}
44-
({{ cta.value.get_button_file_size|filesizeformat }})
18+
{% if value.get_button_link_block.block_type == "document_link" %}
19+
({{ value.get_button_file_size|filesizeformat }})
4520
{% endif %}
4621
{% if value.sticky_subtext %}
4722
<br>
@@ -53,7 +28,7 @@ <h2 class="heading heading--two-b call-to-action__heading">{{ cta.value.text }}<
5328
</div>
5429

5530
<!-- Modal content -->
56-
<div class="modal" id="pipedrive-embed-modal" aria-hidden="true">
31+
<div class="modal" id="iframe-embed-modal" aria-hidden="true">
5732
<div class="modal__overlay" tabindex="-1" data-micromodal-close></div>
5833
<div class="modal__container" role="dialog" aria-modal="true" aria-labelledby="modal-title" >
5934
<header class="modal__header">
@@ -64,13 +39,12 @@ <h2 class="modal__heading heading heading--two" id="modal-title">Service Enquiry
6439
</header>
6540
<main class="modal__content" id="filters-content">
6641
<iframe
67-
src="{{ cta.value.button_link.0 }}"
42+
src="{{ value.get_button_link }}"
6843
width="100%"
6944
height="650px"
7045
frameborder="0"
71-
title="Pipedrive Webform">
46+
title="Modal Webform">
7247
</iframe>
7348
</main>
7449
</div>
7550
</div>
76-
{% endwith %}
Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,7 @@
11
context:
2-
value:
3-
call_to_action:
4-
- value:
5-
text: Get in touch to learn about our journey to becoming employee-owned
6-
# description: '<p>Speak to our team to boost regular giving, improve supporter loyalty, or mobilise people behind your cause.</p>'
7-
button_text: 'Contact Us'
8-
button_link:
9-
- pipedrive_link:
10-
url: 'https://example.com'
2+
value:
113
sticky_text: Get in touch
124
sticky_subtext: learn about our journey
5+
sticky_link:
6+
- modal_iframe:
7+
url: 'https://example.com'

tbx/static_src/sass/components/_call-to-action.scss

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -48,12 +48,17 @@
4848

4949
&__sticky {
5050
@include z-index(sticky);
51-
@include media-query(large) {
52-
position: fixed;
53-
top: 75%;
54-
right: 0;
55-
}
51+
position: fixed;
52+
bottom: $spacer-medium;
53+
right: 0;
5654
background-color: var(--color--theme-primary);
57-
padding: $spacer-small;
55+
padding: $spacer-mini;
56+
}
57+
58+
&__stickyinner {
59+
display: flex;
60+
align-items: flex-end;
61+
justify-content: space-between;
62+
gap: $spacer-mini;
5863
}
5964
}

0 commit comments

Comments
 (0)