Skip to content

Commit dc8e605

Browse files
authored
Merge pull request #1 from spark-c/conditional-modal
Conditional logic for rendering django messages via message-box vs new modal
2 parents 0d7916e + 4fcdd42 commit dc8e605

File tree

4 files changed

+66
-15
lines changed

4 files changed

+66
-15
lines changed

chipy_org/apps/contact/templates/contact/contact.html

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,44 @@ <h3>Did you know ChiPy has a mailing list?</h3>
3535
</div>
3636
</div>
3737
</div>
38+
39+
{% if messages %}
40+
<!-- CONTACT MODAL STARTS-->
41+
<div id="contact-modal-show" style="display:none" data-bs-toggle="modal" data-bs-target="#contact-modal"></div>
42+
43+
<div class="modal fade" id="contact-modal" tabindex="-1" aria-labelledby="contactModalLabel" aria-hidden="true">
44+
<div class="modal-dialog modal-dialog-centered">
45+
<div class="modal-content">
46+
<div class="modal-header">
47+
<img src="https://via.placeholder.com/150"></img>
48+
<h5 class="modal-title black-text" id="contactModalLabel">Thank You.</h5>
49+
</div>
50+
<div class="modal-body">
51+
{% include "_messages.html" %}
52+
<button
53+
type="button"
54+
class="btn btn-primary"
55+
data-bs-dismiss="modal"
56+
aria-label="Close"
57+
onclick="javascript:window.location='/'">
58+
Return to home
59+
</button>
60+
</div>
61+
</div>
62+
</div>
63+
</div>
64+
65+
<script>
66+
window.addEventListener('load', function () {
67+
document.querySelector("#contact-modal-show").click();
68+
});
69+
</script>
70+
<!-- CONTACT MODAL ENDS-->
71+
{% endif %}
3872
{% endblock %}
3973

74+
75+
4076
{% block extra-javascript %}
4177
<script src="https://www.google.com/recaptcha/api.js" async defer></script>
4278
{% endblock %}

chipy_org/apps/contact/views.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,8 @@
77
class ContactView(FormView):
88
template_name = "contact/contact.html"
99
form_class = ContactForm
10-
success_url = "/"
10+
success_url = "/contact"
11+
message_as_modal = True
1112

1213
def form_valid(self, form):
1314
try:
@@ -17,3 +18,9 @@ def form_valid(self, form):
1718
messages.error(self.request, "Your message was NOT sent to Chipy's organizers")
1819

1920
return super().form_valid(form)
21+
22+
def get_context_data(self, **kwargs):
23+
""" Used to access message_as_modal in template as context """
24+
context = super(ContactView, self).get_context_data(**kwargs)
25+
context.update({'message_as_modal': self.message_as_modal})
26+
return context

chipy_org/templates/_messages.html

Lines changed: 19 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,19 @@
1-
{% for message in messages %}
2-
<div class="alert alert-dismissible {% if message.tags %} {% for tag in message.tags.split %}alert-{{ tag }} {% endfor %}{% endif %} fade show">
3-
<a class="close" href="#" data-bs-dismiss="alert" aria-label="Close">&times;</a>
4-
{{ message|linebreaks }}
5-
</div>
6-
{% endfor %}
1+
{% if message_as_modal %}
2+
{% for message in messages %}
3+
<div>{{ message|linebreaks }}</div>
4+
{% endfor %}
5+
6+
{% else %}
7+
{% for message in messages %}
8+
<div class="container-xl">
9+
<div class="row">
10+
<div class="col-md-12">
11+
<div class="alert alert-dismissible {% if message.tags %} {% for tag in message.tags.split %}alert-{{ tag }} {% endfor %}{% endif %} fade show">
12+
<a class="close" href="#" data-bs-dismiss="alert" aria-label="Close">&times;</a>
13+
{{ message|linebreaks }}
14+
</div>
15+
</div>
16+
</div>
17+
</div><!--closes container xl-->
18+
{% endfor %}
19+
{% endif %}

chipy_org/templates/shiny/slim.html

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -17,14 +17,9 @@
1717

1818
{% block content %}
1919

20-
{% if messages %}
21-
<div class="container-xl">
22-
<div class="row">
23-
<div class="col-md-12">
24-
{% include "_messages.html" %}
25-
</div>
26-
</div>
27-
</div><!--closes container xl-->
20+
<!-- Renders message box unless View declares message_as_modal instead -->
21+
{% if messages and not message_as_modal %}
22+
{% include "_messages.html" %}
2823
{% endif %}
2924

3025
<div class="container-xl">

0 commit comments

Comments
 (0)