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);
}
parseData(html) {
const embed = $.parseHTML(html)[0];
parseData(html, embed) {
this.onConfirmAtomicBlock({
embedType: embed.getAttribute('data-embedtype'),
url: embed.getAttribute('data-url'),
providerName: embed.getAttribute('data-provider-name'),
authorName: embed.getAttribute('data-author-name'),
thumbnail: embed.getAttribute('data-thumbnail-url'),
title: embed.getAttribute('data-title'),
embedType: embed.embedType,
url: embed.url,
providerName: embed.providerName,
authorName: embed.authorName,
thumbnail: embed.thumbnail,
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.contentstate_models import Entity
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
@ -76,7 +76,19 @@ class MediaEmbedElementHandler(AtomicBlockEntityElementHandler):
to 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 = {