From 2458820e08187cb0788e09c60eceaaeb8e7f9e3b Mon Sep 17 00:00:00 2001 From: Donald Buczek Date: Sun, 8 Mar 2020 20:05:53 +0100 Subject: [PATCH] Add FormPage page type Add FormPage page type using [Wagtail Form Builder]. [Wagtail Form Builder]: https://docs.wagtail.io/en/v2.0/reference/contrib/forms/index.html --- mpicms/base/models.py | 32 +++++++++++++++++++- mpicms/templates/base/form_page.html | 22 ++++++++++++++ mpicms/templates/base/form_page_landing.html | 15 +++++++++ 3 files changed, 68 insertions(+), 1 deletion(-) create mode 100644 mpicms/templates/base/form_page.html create mode 100644 mpicms/templates/base/form_page_landing.html diff --git a/mpicms/base/models.py b/mpicms/base/models.py index 6bdc226..c6522cf 100644 --- a/mpicms/base/models.py +++ b/mpicms/base/models.py @@ -7,10 +7,15 @@ from wagtail.admin.edit_handlers import FieldPanel from wagtail.snippets.edit_handlers import SnippetChooserPanel from wagtail.snippets.models import register_snippet -from wagtail.admin.edit_handlers import StreamFieldPanel +from wagtail.admin.edit_handlers import ( + StreamFieldPanel, InlinePanel, MultiFieldPanel, FieldRowPanel, +) from wagtail.images.edit_handlers import ImageChooserPanel from wagtail.core.fields import StreamField from wagtail.search import index +from wagtail.contrib.forms.models import AbstractEmailForm, AbstractFormField +from wagtail.contrib.forms.edit_handlers import FormSubmissionsPanel +from modelcluster.fields import ParentalKey from mpicms.news.mixins import NewsMixin from mpicms.events.mixins import EventMixin @@ -137,3 +142,28 @@ def serve(self, request, *args, **kwargs): def serve_preview(self, request, mode_name): return ContactListView.as_view()(request) + +class FormField(AbstractFormField): + page = ParentalKey('FormPage', on_delete=models.CASCADE, related_name='form_fields') + +class FormPage(AbstractEmailForm, SideBarMixin, BasePage): + intro = RichTextField(blank=True) + thank_you_text = RichTextField(blank=True) + + content_panels = ( + AbstractEmailForm.content_panels + + [ + FormSubmissionsPanel(), + FieldPanel('intro', classname="full"), + InlinePanel('form_fields', label="Form fields"), + FieldPanel('thank_you_text', classname="full"), + MultiFieldPanel([ + FieldRowPanel([ + FieldPanel('from_address', classname="col6"), + FieldPanel('to_address', classname="col6"), + ]), + FieldPanel('subject'), + ], "Email"), + ] + + SideBarMixin.content_panels + ) diff --git a/mpicms/templates/base/form_page.html b/mpicms/templates/base/form_page.html new file mode 100644 index 0000000..57a5e42 --- /dev/null +++ b/mpicms/templates/base/form_page.html @@ -0,0 +1,22 @@ +{% extends 'base/page.html' %} + +{% load wagtailcore_tags static %} + +{% block head %} + {{ block.super }} +{% endblock %} + +{% block page_content %} +

{{ page.title }}

+ +
+ {{ page.intro|richtext }} +
+ {% csrf_token %} + + {{ form.as_table }} +
+ +
+
+{% endblock %} diff --git a/mpicms/templates/base/form_page_landing.html b/mpicms/templates/base/form_page_landing.html new file mode 100644 index 0000000..dd2bb69 --- /dev/null +++ b/mpicms/templates/base/form_page_landing.html @@ -0,0 +1,15 @@ +{% extends 'base/page.html' %} + +{% load wagtailcore_tags static %} + +{% block head %} + {{ block.super }} +{% endblock %} + +{% block page_content %} +

{{ page.title }}

+ +
+ {{ page.thank_you_text|richtext }} +
+{% endblock %}