diff --git a/client/src/components/content-blocks/CmsDocumentBlock.vue b/client/src/components/content-blocks/CmsDocumentBlock.vue
new file mode 100644
index 00000000..c00262e8
--- /dev/null
+++ b/client/src/components/content-blocks/CmsDocumentBlock.vue
@@ -0,0 +1,44 @@
+
+
+
+
+
+
+
diff --git a/client/src/components/content-blocks/ContentComponent.vue b/client/src/components/content-blocks/ContentComponent.vue
index 46b245aa..a2ffe238 100644
--- a/client/src/components/content-blocks/ContentComponent.vue
+++ b/client/src/components/content-blocks/ContentComponent.vue
@@ -31,6 +31,7 @@ const ImageUrlBlock = () => import(/* webpackChunkName: "content-components" */'
const VideoBlock = () => import(/* webpackChunkName: "content-components" */'@/components/content-blocks/VideoBlock');
const LinkBlock = () => import(/* webpackChunkName: "content-components" */'@/components/content-blocks/LinkBlock');
const DocumentBlock = () => import(/* webpackChunkName: "content-components" */'@/components/content-blocks/DocumentBlock');
+const CmsDocumentBlock = () => import(/* webpackChunkName: "content-components" */'@/components/content-blocks/CmsDocumentBlock');
const InfogramBlock = () => import(/* webpackChunkName: "content-components" */'@/components/content-blocks/InfogramBlock');
const ThinglinkBlock = () => import(/* webpackChunkName: "content-components" */'@/components/content-blocks/ThinglinkBlock');
const GeniallyBlock = () => import(/* webpackChunkName: "content-components" */'@/components/content-blocks/GeniallyBlock');
@@ -88,6 +89,7 @@ export default {
'content_list': ContentListBlock,
'module_room_slug': ModuleRoomSlug,
'thinglink_block': ThinglinkBlock,
+ 'cms_document_block': CmsDocumentBlock,
Survey,
Solution,
Instruction,
diff --git a/server/api/graphene_wagtail.py b/server/api/graphene_wagtail.py
index 39786509..e960b50b 100644
--- a/server/api/graphene_wagtail.py
+++ b/server/api/graphene_wagtail.py
@@ -6,6 +6,7 @@ from graphene.types import Scalar
from graphene_django.converter import convert_django_field
from graphql_relay import to_global_id
from wagtail.core.fields import StreamField
+from wagtail.documents.models import Document
from wagtail.images.models import Image
from assignments.models import Assignment
@@ -85,6 +86,19 @@ def augment_fields(raw_data):
item_data = data['value']
data['value'] = augment_fields(item_data)
+ if _type == 'cms_document_block':
+ _value = data['value']
+ document = Document.objects.get(id=_value)
+ value = {
+ 'value': _value,
+ 'id': document.id,
+ 'file_name': document.filename,
+ 'file_extension': document.file_extension,
+ 'url': document.url,
+ 'title': document.title
+ }
+ data['value'] = value
+
return raw_data
diff --git a/server/books/models/contentblock.py b/server/books/models/contentblock.py
index 95302431..804cf0b4 100644
--- a/server/books/models/contentblock.py
+++ b/server/books/models/contentblock.py
@@ -4,6 +4,7 @@ from django.db import models
from wagtail.admin.edit_handlers import FieldPanel, TabbedInterface, ObjectList, StreamFieldPanel
from wagtail.core.blocks import StreamBlock
from wagtail.core.fields import StreamField
+from wagtail.documents.blocks import DocumentChooserBlock
from wagtail.images.blocks import ImageChooserBlock
from core.wagtail_utils import get_default_settings
@@ -63,7 +64,8 @@ class ContentBlock(StrictHierarchyPage):
('thinglink_block', ThinglinkBlock()),
('subtitle', SubtitleBlock()),
('instruction', InstructionBlock()),
- ('module_room_slug', ModuleRoomSlugBlock())
+ ('module_room_slug', ModuleRoomSlugBlock()),
+ ('cms_document_block', DocumentChooserBlock())
]
content_list_item = StreamBlock(content_blocks)
diff --git a/server/books/schema/inputs.py b/server/books/schema/inputs.py
index 46ed0948..31bd3a3e 100644
--- a/server/books/schema/inputs.py
+++ b/server/books/schema/inputs.py
@@ -12,7 +12,7 @@ class InputTypes(graphene.Enum):
video_block = 'video_block'
document_block = 'document_block'
content_list_item = 'content_list_item'
- subtitle= 'subtitle'
+ subtitle = 'subtitle'
class ContentElementValueInput(InputObjectType):
diff --git a/server/books/schema/mutations/utils.py b/server/books/schema/mutations/utils.py
index 71a6db84..821e012f 100644
--- a/server/books/schema/mutations/utils.py
+++ b/server/books/schema/mutations/utils.py
@@ -40,7 +40,7 @@ ALLOWED_BLOCKS = (
'assignment',
'document_block',
'content_list_item',
- 'subtitle'
+ 'subtitle',
)
diff --git a/server/core/urls.py b/server/core/urls.py
index d9528ca0..63e3842d 100644
--- a/server/core/urls.py
+++ b/server/core/urls.py
@@ -6,6 +6,8 @@ from django.urls import re_path
from django.views.generic import RedirectView
from wagtail.admin import urls as wagtailadmin_urls
from wagtail.core import urls as wagtail_urls
+from wagtail.documents import urls as wagtaildocs_urls
+
from wagtailautocomplete.urls.admin import urlpatterns as autocomplete_admin_urls
from core import views
@@ -19,6 +21,7 @@ urlpatterns = [
# wagtail
url(r'^admin/autocomplete/', include(autocomplete_admin_urls)),
url(r'^cms/', include(wagtailadmin_urls)),
+ url(r'^documents/', include(wagtaildocs_urls)),
# graphql backend
url(r'^api/', include('api.urls', namespace="api")),