|
1 | 1 | import hashlib |
2 | 2 |
|
3 | 3 | from django import forms |
| 4 | +from django.apps import apps |
4 | 5 | from django.core.exceptions import ImproperlyConfigured |
5 | 6 | from django.core.mail import mail_admins, send_mail |
6 | 7 | from django.core.validators import EmailValidator |
7 | 8 | from django.template import TemplateDoesNotExist |
8 | 9 | from django.template.loader import render_to_string |
9 | 10 | from django.utils.html import strip_tags |
10 | 11 | from django.utils.translation import gettext_lazy as _ |
| 12 | +from djangocms_text_ckeditor.fields import HTMLFormField |
11 | 13 | from entangled.forms import EntangledModelFormMixin |
12 | 14 |
|
13 | 15 | from . import models |
@@ -219,3 +221,51 @@ def execute(self, form, request): |
219 | 221 | fail_silently=True, |
220 | 222 | html_message=html_message, |
221 | 223 | ) |
| 224 | + |
| 225 | + |
| 226 | +@register |
| 227 | +class SuccessMessageAction(FormAction): |
| 228 | + verbose_name = _("Success message") |
| 229 | + |
| 230 | + class Meta: |
| 231 | + entangled_fields = { |
| 232 | + "action_parameters": [ |
| 233 | + "submitmessage_message", |
| 234 | + ] |
| 235 | + } |
| 236 | + |
| 237 | + submitmessage_message = HTMLFormField( |
| 238 | + label=_("Message"), |
| 239 | + required=True, |
| 240 | + initial=_("<p>Thank you for your submission.</p>"), |
| 241 | + ) |
| 242 | + |
| 243 | + def execute(self, form, request): |
| 244 | + message = self.get_parameter(form, "submitmessage_message") |
| 245 | + form.get_success_context = lambda *args, **kwargs: {"message": message} |
| 246 | + form.Meta.options["render_success"] = "djangocms_form_builder/actions/submit_message.html" |
| 247 | + form.Meta.options["redirect"] = None |
| 248 | + |
| 249 | + |
| 250 | +if apps.is_installed("djangocms_link"): |
| 251 | + from djangocms_link.fields import LinkFormField |
| 252 | + from djangocms_link.helpers import get_link |
| 253 | + |
| 254 | + @register |
| 255 | + class RedirectAction(FormAction): |
| 256 | + verbose_name = _("Redirect after submission") |
| 257 | + |
| 258 | + class Meta: |
| 259 | + entangled_fields = { |
| 260 | + "action_parameters": [ |
| 261 | + "redirect_link", |
| 262 | + ] |
| 263 | + } |
| 264 | + |
| 265 | + redirect_link = LinkFormField( |
| 266 | + label=_("Link"), |
| 267 | + required=True, |
| 268 | + ) |
| 269 | + |
| 270 | + def execute(self, form, request): |
| 271 | + form.Meta.options["redirect"] = get_link(self.get_parameter(form, "redirect_link")) |
0 commit comments