Populate embed data fields in contentstate

pull/4136/head
Matt Westcott 2017-12-14 20:15:54 +00:00 zatwierdzone przez Thibaud Colas
rodzic 14a23af0d0
commit e5de74d24b
2 zmienionych plików z 21 dodań i 11 usunięć

Wyświetl plik

@ -8,16 +8,14 @@ class EmbedSource extends ModalSource {
this.parseData = this.parseData.bind(this); this.parseData = this.parseData.bind(this);
} }
parseData(html) { parseData(html, embed) {
const embed = $.parseHTML(html)[0];
this.onConfirmAtomicBlock({ this.onConfirmAtomicBlock({
embedType: embed.getAttribute('data-embedtype'), embedType: embed.embedType,
url: embed.getAttribute('data-url'), url: embed.url,
providerName: embed.getAttribute('data-provider-name'), providerName: embed.providerName,
authorName: embed.getAttribute('data-author-name'), authorName: embed.authorName,
thumbnail: embed.getAttribute('data-thumbnail-url'), thumbnail: embed.thumbnail,
title: embed.getAttribute('data-title'), title: embed.title,
}); });
} }

Wyświetl plik

@ -4,7 +4,7 @@ from draftjs_exporter.dom import DOM
from wagtail.admin.rich_text.converters import editor_html from wagtail.admin.rich_text.converters import editor_html
from wagtail.admin.rich_text.converters.contentstate_models import Entity from wagtail.admin.rich_text.converters.contentstate_models import Entity
from wagtail.admin.rich_text.converters.html_to_contentstate import AtomicBlockEntityElementHandler from wagtail.admin.rich_text.converters.html_to_contentstate import AtomicBlockEntityElementHandler
from wagtail.embeds import format from wagtail.embeds import embeds, format
from wagtail.embeds.exceptions import EmbedException from wagtail.embeds.exceptions import EmbedException
@ -76,7 +76,19 @@ class MediaEmbedElementHandler(AtomicBlockEntityElementHandler):
to contentstate to contentstate
""" """
def create_entity(self, name, attrs, state, contentstate): def create_entity(self, name, attrs, state, contentstate):
return Entity('EMBED', 'IMMUTABLE', {'url': attrs['url']}) try:
embed_obj = embeds.get_embed(attrs['url'])
embed_data = {
'embedType': embed_obj.type,
'url': embed_obj.url,
'providerName': embed_obj.provider_name,
'authorName': embed_obj.author_name,
'thumbnail': embed_obj.thumbnail_url,
'title': embed_obj.title,
}
except EmbedException:
embed_data = {'url': attrs['url']}
return Entity('EMBED', 'IMMUTABLE', embed_data)
ContentstateMediaConversionRule = { ContentstateMediaConversionRule = {