diff --git a/wagtail/contrib/wagtailstyleguide/templates/wagtailstyleguide/base.html b/wagtail/contrib/wagtailstyleguide/templates/wagtailstyleguide/base.html
index b16bc445c..1124aae97 100644
--- a/wagtail/contrib/wagtailstyleguide/templates/wagtailstyleguide/base.html
+++ b/wagtail/contrib/wagtailstyleguide/templates/wagtailstyleguide/base.html
@@ -347,8 +347,6 @@
{% for field in example_form %}
{% if field.name == 'file' %}
{% include "wagtailimages/images/_file_field.html" %}
- {% elif field.name == 'image_chooser' %}
-
{% include "wagtailimages/edit_handlers/image_chooser_panel.html" with field=field only %}
{% else %}
{% include "wagtailadmin/shared/field_as_li.html" %}
{% endif %}
diff --git a/wagtail/wagtailimages/edit_handlers.py b/wagtail/wagtailimages/edit_handlers.py
index 687d3b64a..8cdba8cba 100644
--- a/wagtail/wagtailimages/edit_handlers.py
+++ b/wagtail/wagtailimages/edit_handlers.py
@@ -5,7 +5,6 @@ from .widgets import AdminImageChooser
class BaseImageChooserPanel(BaseChooserPanel):
- field_template = "wagtailimages/edit_handlers/image_chooser_panel.html"
object_type_name = "image"
@classmethod
diff --git a/wagtail/wagtailimages/templates/wagtailimages/edit_handlers/image_chooser_panel.html b/wagtail/wagtailimages/templates/wagtailimages/edit_handlers/image_chooser_panel.html
index 38df1be80..dc3ecf1bf 100644
--- a/wagtail/wagtailimages/templates/wagtailimages/edit_handlers/image_chooser_panel.html
+++ b/wagtail/wagtailimages/templates/wagtailimages/edit_handlers/image_chooser_panel.html
@@ -1,15 +1,2 @@
-{% extends "wagtailadmin/edit_handlers/chooser_panel.html" %}
-{% load wagtailimages_tags %}
-{% load i18n %}
-
-{% block chooser_class %}image-chooser{% endblock %}
-
-{% block chosen_state_view %}
-
- {% if image %}
- {% image image max-130x130 %}
- {% else %}
-
![]()
- {% endif %}
-
-{% endblock %}
+{# Image chooser is now implemented as an entirely standard form widget - image_chooser_panel.html is redundant #}
+{% include "wagtailadmin/shared/field.html" %}
diff --git a/wagtail/wagtailimages/templates/wagtailimages/widgets/image_chooser.html b/wagtail/wagtailimages/templates/wagtailimages/widgets/image_chooser.html
new file mode 100644
index 000000000..428b12247
--- /dev/null
+++ b/wagtail/wagtailimages/templates/wagtailimages/widgets/image_chooser.html
@@ -0,0 +1,14 @@
+{% extends "wagtailadmin/widgets/chooser.html" %}
+{% load wagtailimages_tags %}
+
+{% block chooser_class %}image-chooser{% endblock %}
+
+{% block chosen_state_view %}
+
+ {% if image %}
+ {% image image max-130x130 %}
+ {% else %}
+
![]()
+ {% endif %}
+
+{% endblock %}
diff --git a/wagtail/wagtailimages/widgets.py b/wagtail/wagtailimages/widgets.py
index 4bce83505..e628ed4e9 100644
--- a/wagtail/wagtailimages/widgets.py
+++ b/wagtail/wagtailimages/widgets.py
@@ -2,9 +2,11 @@ from __future__ import absolute_import, unicode_literals
import json
+from django.template.loader import render_to_string
from django.utils.translation import ugettext_lazy as _
from wagtail.wagtailadmin.widgets import AdminChooser
+from wagtail.wagtailimages.models import get_image_model
class AdminImageChooser(AdminChooser):
@@ -12,5 +14,22 @@ class AdminImageChooser(AdminChooser):
choose_another_text = _('Choose another image')
clear_choice_text = _('Clear image')
+ def __init__(self, **kwargs):
+ super(AdminImageChooser, self).__init__(**kwargs)
+ self.image_model = get_image_model()
+
+ def render_html(self, name, value, attrs):
+ original_field_html = super(AdminImageChooser, self).render_html(name, value, attrs)
+
+ instance = self.get_instance(self.image_model, value)
+
+ return render_to_string("wagtailimages/widgets/image_chooser.html", {
+ 'widget': self,
+ 'original_field_html': original_field_html,
+ 'attrs': attrs,
+ 'value': value,
+ 'image': instance,
+ })
+
def render_js_init(self, id_, name, value):
return "createImageChooser({0});".format(json.dumps(id_))