add image-and-text and image slider block types
This commit is contained in:
70
dnscms/dnscms/blocks.py
Normal file
70
dnscms/dnscms/blocks.py
Normal file
@ -0,0 +1,70 @@
|
||||
from grapple.helpers import register_streamfield_block
|
||||
from grapple.models import (
|
||||
GraphQLImage,
|
||||
GraphQLStreamfield,
|
||||
GraphQLString,
|
||||
)
|
||||
from wagtail import blocks
|
||||
from wagtail.images.blocks import ImageChooserBlock
|
||||
|
||||
|
||||
@register_streamfield_block
|
||||
class ImageWithTextBlock(blocks.StructBlock):
|
||||
image = ImageChooserBlock(
|
||||
label="Bilde",
|
||||
)
|
||||
image_format = blocks.ChoiceBlock(
|
||||
choices=[
|
||||
("fullwidth", "Fullbredde"),
|
||||
("bleed", "Utfallende"),
|
||||
("original", "Uendret størrelse"),
|
||||
],
|
||||
default="fullwidth",
|
||||
icon="cup",
|
||||
label="Bildeformat",
|
||||
)
|
||||
text = blocks.CharBlock(
|
||||
label="Tekst",
|
||||
required=False,
|
||||
max_length=512,
|
||||
)
|
||||
|
||||
graphql_fields = [
|
||||
GraphQLImage("image", required=True),
|
||||
GraphQLString("image_format", required=True),
|
||||
GraphQLString("text"),
|
||||
]
|
||||
|
||||
class Meta:
|
||||
icon = "image"
|
||||
|
||||
|
||||
@register_streamfield_block
|
||||
class ImageSliderItemBlock(blocks.StructBlock):
|
||||
image = ImageChooserBlock(
|
||||
label="Bilde",
|
||||
)
|
||||
text = blocks.CharBlock(
|
||||
label="Tekst",
|
||||
required=False,
|
||||
max_length=512,
|
||||
)
|
||||
|
||||
graphql_fields = [GraphQLImage("image", required=True), GraphQLString("text")]
|
||||
|
||||
class Meta:
|
||||
icon = "image"
|
||||
|
||||
|
||||
@register_streamfield_block
|
||||
class ImageSliderBlock(blocks.StructBlock):
|
||||
images = blocks.ListBlock(
|
||||
ImageSliderItemBlock(),
|
||||
min_num=1,
|
||||
label="Bilder",
|
||||
)
|
||||
|
||||
graphql_fields = [GraphQLStreamfield("images", required=True)]
|
||||
|
||||
class Meta:
|
||||
icon = "image"
|
21
dnscms/generic/migrations/0002_alter_genericpage_body.py
Normal file
21
dnscms/generic/migrations/0002_alter_genericpage_body.py
Normal file
@ -0,0 +1,21 @@
|
||||
# Generated by Django 5.0.6 on 2024-05-15 03:04
|
||||
|
||||
import wagtail.blocks
|
||||
import wagtail.fields
|
||||
import wagtail.images.blocks
|
||||
from django.db import migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('generic', '0001_initial'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='genericpage',
|
||||
name='body',
|
||||
field=wagtail.fields.StreamField([('paragraph', wagtail.blocks.RichTextBlock()), ('single_image_with_text', wagtail.blocks.StructBlock([('image', wagtail.images.blocks.ImageChooserBlock(label='Bilde')), ('text', wagtail.blocks.CharBlock(label='Tekst', max_length=512))]))]),
|
||||
),
|
||||
]
|
21
dnscms/generic/migrations/0003_alter_genericpage_body.py
Normal file
21
dnscms/generic/migrations/0003_alter_genericpage_body.py
Normal file
@ -0,0 +1,21 @@
|
||||
# Generated by Django 5.0.6 on 2024-05-15 03:11
|
||||
|
||||
import wagtail.blocks
|
||||
import wagtail.fields
|
||||
import wagtail.images.blocks
|
||||
from django.db import migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('generic', '0002_alter_genericpage_body'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='genericpage',
|
||||
name='body',
|
||||
field=wagtail.fields.StreamField([('paragraph', wagtail.blocks.RichTextBlock(label='Rik tekst')), ('image', wagtail.blocks.StructBlock([('image', wagtail.images.blocks.ImageChooserBlock(label='Bilde')), ('text', wagtail.blocks.CharBlock(label='Tekst', max_length=512))], label='Bilde'))]),
|
||||
),
|
||||
]
|
21
dnscms/generic/migrations/0004_alter_genericpage_body.py
Normal file
21
dnscms/generic/migrations/0004_alter_genericpage_body.py
Normal file
@ -0,0 +1,21 @@
|
||||
# Generated by Django 5.0.6 on 2024-05-15 04:11
|
||||
|
||||
import wagtail.blocks
|
||||
import wagtail.fields
|
||||
import wagtail.images.blocks
|
||||
from django.db import migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('generic', '0003_alter_genericpage_body'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='genericpage',
|
||||
name='body',
|
||||
field=wagtail.fields.StreamField([('paragraph', wagtail.blocks.RichTextBlock(label='Rik tekst')), ('image', wagtail.blocks.StructBlock([('image', wagtail.images.blocks.ImageChooserBlock(label='Bilde')), ('image_format', wagtail.blocks.ChoiceBlock(choices=[('fullwidth', 'Fullbredde'), ('bleed', 'Utfallende'), ('original', 'Uendret størrelse')], icon='cup', label='Bildeformat')), ('text', wagtail.blocks.CharBlock(label='Tekst', max_length=512, required=False))], label='Bilde')), ('image_slider', wagtail.blocks.StructBlock([('images', wagtail.blocks.ListBlock(wagtail.blocks.StructBlock([('image', wagtail.images.blocks.ImageChooserBlock(label='Bilde')), ('text', wagtail.blocks.CharBlock(label='Tekst', max_length=512, required=False))]), label='Bilder', min_num=1))], label='Bildegalleri'))]),
|
||||
),
|
||||
]
|
@ -2,9 +2,10 @@ from grapple.models import GraphQLStreamfield
|
||||
from wagtail import blocks
|
||||
from wagtail.admin.panels import FieldPanel
|
||||
from wagtail.fields import StreamField
|
||||
from wagtail.images.blocks import ImageChooserBlock
|
||||
from wagtail.models import Page
|
||||
|
||||
from dnscms.blocks import ImageSliderBlock, ImageWithTextBlock
|
||||
|
||||
|
||||
class GenericPage(Page):
|
||||
subpage_types = ["generic.GenericPage"]
|
||||
@ -12,13 +13,14 @@ class GenericPage(Page):
|
||||
|
||||
body = StreamField(
|
||||
[
|
||||
("paragraph", blocks.RichTextBlock()),
|
||||
("image", ImageChooserBlock()),
|
||||
("paragraph", blocks.RichTextBlock(label="Rik tekst")),
|
||||
("image", ImageWithTextBlock(label="Bilde")),
|
||||
("image_slider", ImageSliderBlock(label="Bildegalleri")),
|
||||
]
|
||||
)
|
||||
|
||||
content_panels = Page.content_panels + [
|
||||
FieldPanel("body"),
|
||||
FieldPanel("body", heading="Innhold"),
|
||||
]
|
||||
|
||||
graphql_fields = [
|
||||
|
Reference in New Issue
Block a user