diff --git a/CHANGELOG.txt b/CHANGELOG.txt
index 9ec39fc6e..a0024b6a0 100644
--- a/CHANGELOG.txt
+++ b/CHANGELOG.txt
@@ -17,6 +17,7 @@ Changelog
* Added translation for Portuguese Brazil
* Made compatible with Python 2.6
* 'richtext' template filter now wraps output in
, to assist in styling
+ * Embeds now save author_name and provider_name if set by oEmbed provider
* Fix: non-ASCII characters in image filenames are now converted into ASCII equivalents rather than becoming all underscores
* Fix: paths to fonts and images within CSS are no longer hard-coded to /static/
* Fix: Localization files for the JQuery UI datepicker are stored locally and only imported when a localization is known to be available
diff --git a/wagtail/wagtailembeds/embeds.py b/wagtail/wagtailembeds/embeds.py
index 5b3f59fc2..d66c5ebcc 100644
--- a/wagtail/wagtailembeds/embeds.py
+++ b/wagtail/wagtailembeds/embeds.py
@@ -77,7 +77,9 @@ def embedly(url, max_width=None, key=None):
# Return embed as a dict
return {
- 'title': oembed['title'],
+ 'title': oembed['title'] if 'title' in oembed else '',
+ 'author_name': oembed['author_name'] if 'author_name' in oembed else '',
+ 'provider_name': oembed['provider_name'] if 'provider_name' in oembed else '',
'type': oembed['type'],
'thumbnail_url': oembed.get('thumbnail_url'),
'width': oembed.get('width'),
@@ -114,7 +116,9 @@ def oembed(url, max_width=None):
# Return embed as a dict
return {
- 'title': oembed['title'],
+ 'title': oembed['title'] if 'title' in oembed else '',
+ 'author_name': oembed['author_name'] if 'author_name' in oembed else '',
+ 'provider_name': oembed['provider_name'] if 'provider_name' in oembed else '',
'type': oembed['type'],
'thumbnail_url': oembed.get('thumbnail_url'),
'width': oembed.get('width'),
diff --git a/wagtail/wagtailembeds/format.py b/wagtail/wagtailembeds/format.py
index b08955c2d..453c73641 100644
--- a/wagtail/wagtailembeds/format.py
+++ b/wagtail/wagtailembeds/format.py
@@ -1,6 +1,7 @@
from __future__ import division # Use true division
from django.utils.html import escape
+from django.template.loader import render_to_string
from wagtail.wagtailembeds import get_embed
@@ -15,8 +16,11 @@ def embed_to_frontend_html(url):
else:
ratio = "0"
- # Build html
- return '%s
' % (ratio, embed.html)
+ # Render template
+ render_to_string('wagtailembeds/embed_frontend.html', {
+ 'embed': embed,
+ 'ratio': ratio,
+ })
else:
return ''
except:
@@ -28,4 +32,7 @@ def embed_to_editor_html(url):
if embed is None:
return
- return '%s
%s

' % (url, escape(embed.title), url, embed.thumbnail_url)
+ # Render template
+ return render_to_string('wagtailembeds/embed_editor.html', {
+ 'embed': embed,
+ })
diff --git a/wagtail/wagtailembeds/migrations/0002_auto__add_field_embed_author_name__add_field_embed_provider_name.py b/wagtail/wagtailembeds/migrations/0002_auto__add_field_embed_author_name__add_field_embed_provider_name.py
new file mode 100644
index 000000000..7da581d21
--- /dev/null
+++ b/wagtail/wagtailembeds/migrations/0002_auto__add_field_embed_author_name__add_field_embed_provider_name.py
@@ -0,0 +1,48 @@
+# -*- coding: utf-8 -*-
+from south.utils import datetime_utils as datetime
+from south.db import db
+from south.v2 import SchemaMigration
+from django.db import models
+
+
+class Migration(SchemaMigration):
+
+ def forwards(self, orm):
+ # Adding field 'Embed.author_name'
+ db.add_column(u'wagtailembeds_embed', 'author_name',
+ self.gf('django.db.models.fields.TextField')(default='', blank=True),
+ keep_default=False)
+
+ # Adding field 'Embed.provider_name'
+ db.add_column(u'wagtailembeds_embed', 'provider_name',
+ self.gf('django.db.models.fields.TextField')(default='', blank=True),
+ keep_default=False)
+
+
+ def backwards(self, orm):
+ # Deleting field 'Embed.author_name'
+ db.delete_column(u'wagtailembeds_embed', 'author_name')
+
+ # Deleting field 'Embed.provider_name'
+ db.delete_column(u'wagtailembeds_embed', 'provider_name')
+
+
+ models = {
+ u'wagtailembeds.embed': {
+ 'Meta': {'unique_together': "(('url', 'max_width'),)", 'object_name': 'Embed'},
+ 'author_name': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'height': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'html': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'last_updated': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
+ 'max_width': ('django.db.models.fields.SmallIntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'provider_name': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'thumbnail_url': ('django.db.models.fields.URLField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
+ 'title': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'type': ('django.db.models.fields.CharField', [], {'max_length': '10'}),
+ 'url': ('django.db.models.fields.URLField', [], {'max_length': '200'}),
+ 'width': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'})
+ }
+ }
+
+ complete_apps = ['wagtailembeds']
\ No newline at end of file
diff --git a/wagtail/wagtailembeds/models.py b/wagtail/wagtailembeds/models.py
index 154ee8676..c147860f0 100644
--- a/wagtail/wagtailembeds/models.py
+++ b/wagtail/wagtailembeds/models.py
@@ -15,6 +15,8 @@ class Embed(models.Model):
type = models.CharField(max_length=10, choices=EMBED_TYPES)
html = models.TextField(blank=True)
title = models.TextField(blank=True)
+ author_name = models.TextField(blank=True)
+ provider_name = models.TextField(blank=True)
thumbnail_url = models.URLField(null=True, blank=True)
width = models.IntegerField(null=True, blank=True)
height = models.IntegerField(null=True, blank=True)
diff --git a/wagtail/wagtailembeds/templates/wagtailembeds/chooser/embed_chosen.js b/wagtail/wagtailembeds/templates/wagtailembeds/chooser/embed_chosen.js
index d32fce563..af6e0913e 100644
--- a/wagtail/wagtailembeds/templates/wagtailembeds/chooser/embed_chosen.js
+++ b/wagtail/wagtailembeds/templates/wagtailembeds/chooser/embed_chosen.js
@@ -1,4 +1,4 @@
function(modal) {
- modal.respond('embedChosen', '{{ embed_html|safe }}');
+ modal.respond('embedChosen', '{{ embed_html|escapejs }}');
modal.close();
}
\ No newline at end of file
diff --git a/wagtail/wagtailembeds/templates/wagtailembeds/embed_editor.html b/wagtail/wagtailembeds/templates/wagtailembeds/embed_editor.html
new file mode 100644
index 000000000..0cbfa2d43
--- /dev/null
+++ b/wagtail/wagtailembeds/templates/wagtailembeds/embed_editor.html
@@ -0,0 +1,13 @@
+
+
{{ embed.title }}
+
URL: {{ embed.url }}
+ {% if embed.provider_name %}
+
Provider: {{ embed.provider_name }}
+ {% endif %}
+ {% if embed.author_name %}
+
Author: {{ embed.author_name }}
+ {% endif %}
+ {% if embed.thumbnail_url %}
+

+ {% endif %}
+
diff --git a/wagtail/wagtailembeds/templates/wagtailembeds/embed_frontend.html b/wagtail/wagtailembeds/templates/wagtailembeds/embed_frontend.html
new file mode 100644
index 000000000..feb209311
--- /dev/null
+++ b/wagtail/wagtailembeds/templates/wagtailembeds/embed_frontend.html
@@ -0,0 +1,3 @@
+
+ {{ embed.html }}
+