From a771e6adc41c0710a956122c5da8235d20bafdf5 Mon Sep 17 00:00:00 2001 From: Karl Hobley Date: Fri, 2 May 2014 11:51:41 +0100 Subject: [PATCH 1/5] Added author_name and provider_name fields to Embed model --- ...hor_name__add_field_embed_provider_name.py | 48 +++++++++++++++++++ wagtail/wagtailembeds/models.py | 2 + 2 files changed, 50 insertions(+) create mode 100644 wagtail/wagtailembeds/migrations/0002_auto__add_field_embed_author_name__add_field_embed_provider_name.py 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) From db5559b688dde6038f6d109e1cb18fb2f660611e Mon Sep 17 00:00:00 2001 From: Karl Hobley Date: Fri, 2 May 2014 11:54:20 +0100 Subject: [PATCH 2/5] Embeds: Save author_name and provider_name if set --- wagtail/wagtailembeds/embeds.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) 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'), From a27bc5f2375cb15023072d446389e2b7f277e9e8 Mon Sep 17 00:00:00 2001 From: Karl Hobley Date: Fri, 2 May 2014 12:01:40 +0100 Subject: [PATCH 3/5] Display embed author/provider in admin if set --- wagtail/wagtailembeds/format.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/wagtail/wagtailembeds/format.py b/wagtail/wagtailembeds/format.py index b08955c2d..89781bbf7 100644 --- a/wagtail/wagtailembeds/format.py +++ b/wagtail/wagtailembeds/format.py @@ -28,4 +28,4 @@ def embed_to_editor_html(url): if embed is None: return - return '

%s

%s

' % (url, escape(embed.title), url, embed.thumbnail_url) + return '

%s

%s
%s
%s

' % (url, escape(embed.title), url, escape(embed.provider_name), escape(embed.author_name), embed.thumbnail_url) From 7fe6e2177aa532d4d530236dfd08a5b0768a2ad2 Mon Sep 17 00:00:00 2001 From: Karl Hobley Date: Fri, 2 May 2014 12:02:57 +0100 Subject: [PATCH 4/5] Added changelog entry --- CHANGELOG.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.txt b/CHANGELOG.txt index 04e8de822..89b0ba9c3 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 From 17aa3fc89e5587032dbe7f688269915266998d73 Mon Sep 17 00:00:00 2001 From: Karl Hobley Date: Fri, 2 May 2014 12:15:27 +0100 Subject: [PATCH 5/5] Cleanup wagtailembeds Use templates for rendering embeds Fixed issue with invalid javascript being returned by the chooser --- wagtail/wagtailembeds/format.py | 13 ++++++++++--- .../templates/wagtailembeds/chooser/embed_chosen.js | 2 +- .../templates/wagtailembeds/embed_editor.html | 13 +++++++++++++ .../templates/wagtailembeds/embed_frontend.html | 3 +++ 4 files changed, 27 insertions(+), 4 deletions(-) create mode 100644 wagtail/wagtailembeds/templates/wagtailembeds/embed_editor.html create mode 100644 wagtail/wagtailembeds/templates/wagtailembeds/embed_frontend.html diff --git a/wagtail/wagtailembeds/format.py b/wagtail/wagtailembeds/format.py index 89781bbf7..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
%s
%s

' % (url, escape(embed.title), url, escape(embed.provider_name), escape(embed.author_name), embed.thumbnail_url) + # Render template + return render_to_string('wagtailembeds/embed_editor.html', { + 'embed': embed, + }) 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 %} + {{ embed.title }} + {% 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 }} +