diff --git a/wagtail/wagtailimages/admin_urls.py b/wagtail/wagtailimages/admin_urls.py
index ed73f19ef..c13c22d1e 100644
--- a/wagtail/wagtailimages/admin_urls.py
+++ b/wagtail/wagtailimages/admin_urls.py
@@ -5,7 +5,8 @@ urlpatterns = [
url(r'^$', images.index, name='wagtailimages_index'),
url(r'^(\d+)/$', images.edit, name='wagtailimages_edit_image'),
url(r'^(\d+)/delete/$', images.delete, name='wagtailimages_delete_image'),
- url(r'^(\d+)/generate_url/(.*)/', images.generate_url, name='wagtailimages_generate_url'),
+ url(r'^(\d+)/generate_url/$', images.url_generator, name='wagtailimages_url_generator'),
+ url(r'^(\d+)/generate_url/(.*)/$', images.generate_url, name='wagtailimages_generate_url'),
url(r'^add/$', images.add, name='wagtailimages_add_image'),
url(r'^chooser/$', chooser.chooser, name='wagtailimages_chooser'),
diff --git a/wagtail/wagtailimages/static/wagtailimages/js/image-url-generator.js b/wagtail/wagtailimages/static/wagtailimages/js/image-url-generator.js
index c75bb44e5..d1ec89bea 100644
--- a/wagtail/wagtailimages/static/wagtailimages/js/image-url-generator.js
+++ b/wagtail/wagtailimages/static/wagtailimages/js/image-url-generator.js
@@ -6,6 +6,7 @@ $(function() {
var $widthField = $form.find('input#id_width');
var $heightField = $form.find('input#id_height');
var $result = $this.find('div.result');
+ var $preview = $this.find('img.preview');
var generatorUrl = $this.data('generatorUrl');
@@ -33,9 +34,11 @@ $(function() {
$.getJSON(generatorUrl.replace('__filterspec__', filterSpec))
.done(function(data) {
$result.text(data['url']);
+ $preview.attr('src', data['url']);
})
.fail(function(data) {
$result.text(data.responseJSON['error']);
+ $preview.attr('src', '');
});
}
diff --git a/wagtail/wagtailimages/templates/wagtailimages/images/_url_generator.html b/wagtail/wagtailimages/templates/wagtailimages/images/_url_generator.html
deleted file mode 100644
index 21535722b..000000000
--- a/wagtail/wagtailimages/templates/wagtailimages/images/_url_generator.html
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
URL generator
-
-
-
- URL:
-
-
diff --git a/wagtail/wagtailimages/templates/wagtailimages/images/edit.html b/wagtail/wagtailimages/templates/wagtailimages/images/edit.html
index 5d179ce9b..a2c02b736 100644
--- a/wagtail/wagtailimages/templates/wagtailimages/images/edit.html
+++ b/wagtail/wagtailimages/templates/wagtailimages/images/edit.html
@@ -1,6 +1,5 @@
{% extends "wagtailadmin/base.html" %}
{% load wagtailimages_tags %}
-{% load static compress %}
{% load i18n %}
{% block titletag %}{% blocktrans with title=image.title %}Editing image {{ title }}{% endblocktrans %}{% endblock %}
{% block bodyclass %}menu-images{% endblock %}
@@ -10,10 +9,6 @@
{% block extra_js %}
{% include "wagtailadmin/shared/tag_field_js.html" %}
-
- {% compress js %}
-
+ {% endcompress %}
+{% endblock %}
+
+{% block content %}
+ {% trans "Generating URL" as title_str %}
+ {% include "wagtailadmin/shared/header.html" with title=title_str subtitle=image.title icon="image" %}
+
+
+
+
+
URL
+
+
+
Preview
+
![Preview]()
+
+{% endblock %}
diff --git a/wagtail/wagtailimages/views/images.py b/wagtail/wagtailimages/views/images.py
index fdfa2e4f6..48f31b60d 100644
--- a/wagtail/wagtailimages/views/images.py
+++ b/wagtail/wagtailimages/views/images.py
@@ -107,18 +107,33 @@ def edit(request, image_id):
# Check if we should enable the frontend url generator
try:
reverse('wagtailimages_serve', args=('foo', '1', 'bar'))
- url_generator_form = URLGeneratorForm(initial={
- 'filter_method': 'original',
- 'width': image.width,
- 'height': image.height,
- })
+ url_generator_enabled = True
except NoReverseMatch:
- url_generator_form = None
+ url_generator_enabled = False
return render(request, "wagtailimages/images/edit.html", {
'image': image,
'form': form,
- 'url_generator_form': url_generator_form,
+ 'url_generator_enabled': url_generator_enabled,
+ })
+
+
+@permission_required('wagtailadmin.access_admin') # more specific permission tests are applied within the view
+def url_generator(request, image_id):
+ image = get_object_or_404(get_image_model(), id=image_id)
+
+ if not image.is_editable_by_user(request.user):
+ raise PermissionDenied
+
+ form = URLGeneratorForm(initial={
+ 'filter_method': 'original',
+ 'width': image.width,
+ 'height': image.height,
+ })
+
+ return render(request, "wagtailimages/images/url_generator.html", {
+ 'image': image,
+ 'form': form,
})