Skip to content

Commit 91bd664

Browse files
authored
fix: Bad URL generation for the CarouselSlidePlugin (#293)
1 parent a518608 commit 91bd664

File tree

4 files changed

+30
-5
lines changed

4 files changed

+30
-5
lines changed

djangocms_frontend/contrib/carousel/frameworks/bootstrap5.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ def render(self, context, instance, placeholder):
2323
instance.add_classes("carousel-item")
2424
if is_first_child(instance, parent):
2525
instance.add_classes("active")
26-
context["link"] = instance.get_link()
26+
context["mixin_link"] = instance.get_link()
2727
context["aspect_ratio"] = str(width / height)
2828
context["options"] = {"crop": 10, "size": (width, height), "upscale": True}
2929
return super().render(context, instance, placeholder)

djangocms_frontend/contrib/carousel/templates/djangocms_frontend/bootstrap5/carousel/default/slide.html

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
{% load cms_tags frontend %}
22
<{{ instance.tag_type }}{{ instance.get_attributes }}>
3-
{% if link %}
4-
<a href="{{ link }}"{% if instance.target %} target="{{ instance.target }}"{% endif %}>
3+
{% if mixin_link %}
4+
<a href="{{ mixin_link }}"{% if instance.target %} target="{{ instance.target }}"{% endif %}>
55
{% endif %}
66
{% with image=carousel_image.image %}
77
{% include "djangocms_frontend/bootstrap5/carousel/default/image.html" %}
88
{% endwith %}
9-
{% if link %}
9+
{% if mixin_link %}
1010
</a>
1111
{% endif %}
1212
<div class="carousel-caption d-none d-md-block">
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
{% load cms_tags frontend %}{% if mixin_link %}<a href="{{ mixin_link }}"{% if instance.target %} target="{{ instance.target }}"{% endif %}{{ instance.get_attributes }}>{% endif %}{% if instance.icon_left %}{% include "djangocms_frontend/bootstrap5/link/default/icon.html" with icon_class=instance.icon_left attribute_class="me-1" %}{% endif %}{% for plugin in instance.child_plugin_instances %}{% render_plugin plugin %}{% empty %}{{ instance.name }}{% endfor %}{% if instance.icon_right %}{% include "djangocms_frontend/bootstrap5/link/default/icon.html" with icon_class=instance.icon_right attribute_class="ms-1" %}{% endif %}{% if link %}</a>{% endif %}
1+
{% load cms_tags frontend %}{% if mixin_link %}<a href="{{ mixin_link }}"{% if instance.target %} target="{{ instance.target }}"{% endif %}{{ instance.get_attributes }}>{% endif %}{% if instance.icon_left %}{% include "djangocms_frontend/bootstrap5/link/default/icon.html" with icon_class=instance.icon_left attribute_class="me-1" %}{% endif %}{% for plugin in instance.child_plugin_instances %}{% render_plugin plugin %}{% empty %}{{ instance.name }}{% endfor %}{% if instance.icon_right %}{% include "djangocms_frontend/bootstrap5/link/default/icon.html" with icon_class=instance.icon_right attribute_class="ms-1" %}{% endif %}{% if mixin_link %}</a>{% endif %}

tests/carousel/test_plugins.py

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,3 +104,28 @@ def test_carousel_slide_plugin(self):
104104
or ('<div class="carousel slide"' in response.content.decode("utf-8")),
105105
f'<div class="slide carousel" not found in {response.content.decode("utf-8")}',
106106
)
107+
108+
# Now testing if links are working
109+
row = add_plugin(
110+
placeholder=self.placeholder,
111+
plugin_type=CarouselPlugin.__name__,
112+
language=self.language,
113+
)
114+
row.initialize_from_form(CarouselForm).save()
115+
plugin = add_plugin(
116+
target=row,
117+
placeholder=self.placeholder,
118+
plugin_type=CarouselSlidePlugin.__name__,
119+
language=self.language,
120+
config=dict(
121+
carousel_image=dict(pk=self.image.id, model="filer.Image"),
122+
link=dict(external_link="https://www.divio.com"),
123+
),
124+
)
125+
plugin.initialize_from_form(CarouselSlideForm).save()
126+
self.publish(self.page, self.language)
127+
128+
with self.login_user_context(self.superuser):
129+
response = self.client.get(self.request_url)
130+
self.assertEqual(response.status_code, 200)
131+
self.assertContains(response, 'href="https://www.divio.com"')

0 commit comments

Comments
 (0)