diff --git a/django/conf/admin_templates/doc/template_detail.html b/django/conf/admin_templates/doc/template_detail.html
new file mode 100644
index 0000000000..374b737022
--- /dev/null
+++ b/django/conf/admin_templates/doc/template_detail.html
@@ -0,0 +1,21 @@
+{% extends "base_site" %}
+
+{% block breadcrumbs %}
{% endblock %}
+
+{% block title %}Template: {{ name }}{% endblock %}
+
+{% block content %}
+Template: "{{ name }}"
+
+{% regroup templates|dictsort:"site_id" by site as templates_by_site %}
+{% for group in templates_by_site %}
+ Search path for template "{{ name }}" on {{ group.grouper }}:
+
+ {% for template in group.list|dictsort:"order" %}
+ {{ template.file }}
{% if not template.exists %} (does not exist){% endif %}
+ {% endfor %}
+
+{% endfor %}
+
+‹ Back to Documentation
+{% endblock %}
diff --git a/django/conf/urls/admin.py b/django/conf/urls/admin.py
index a55da5d366..89b7040472 100644
--- a/django/conf/urls/admin.py
+++ b/django/conf/urls/admin.py
@@ -18,6 +18,8 @@ urlpatterns = (
('^doc/views/(?P[^/]+)/$', 'django.views.admin.doc.view_detail'),
('^doc/models/$', 'django.views.admin.doc.model_index'),
('^doc/models/(?P[^/]+)/$', 'django.views.admin.doc.model_detail'),
+# ('^doc/templates/$', 'django.views.admin.doc.template_index'),
+ ('^doc/templates/(?P.*)/$', 'django.views.admin.doc.template_detail'),
)
if 'ellington.events' in INSTALLED_APPS:
diff --git a/django/views/admin/doc.py b/django/views/admin/doc.py
index 99250333b8..1ebb6cee89 100644
--- a/django/views/admin/doc.py
+++ b/django/views/admin/doc.py
@@ -218,6 +218,27 @@ def model_detail(request, model):
})
return HttpResponse(t.render(c))
+def template_detail(request, template):
+ templates = []
+ for site_settings_module in settings.ADMIN_FOR:
+ settings_mod = __import__(site_settings_module, '', '', [''])
+ for dir in settings_mod.TEMPLATE_DIRS:
+ template_file = os.path.join(dir, "%s.html" % template)
+ templates.append({
+ 'file' : template_file,
+ 'exists' : os.path.exists(template_file),
+ 'contents' : lambda: os.path.exists(template_file) and open(template_file).read() or '',
+ 'site_id' : settings_mod.SITE_ID,
+ 'site' : sites.get_object(pk=settings_mod.SITE_ID),
+ 'order' : list(settings_mod.TEMPLATE_DIRS).index(dir),
+ })
+ t = template_loader.get_template('doc/template_detail')
+ c = Context(request, {
+ 'name' : template,
+ 'templates' : templates,
+ })
+ return HttpResponse(t.render(c))
+
####################
# Helper functions #
####################