summaryrefslogtreecommitdiff
path: root/django/contrib/admin/templates
diff options
context:
space:
mode:
authorAdrian Holovaty <adrian@holovaty.com>2005-10-19 01:09:05 +0000
committerAdrian Holovaty <adrian@holovaty.com>2005-10-19 01:09:05 +0000
commitf07e5d4f5df5ca9ca3366d7ecc4b01c490c13198 (patch)
tree1b73d89471554d058cb46bc13d17bd3687c638fa /django/contrib/admin/templates
parentfd3d579179581b1fa460e13115471d58fec0c8f6 (diff)
Fixed #627 -- BACKWARDS-INCOMPATIBLE CHANGE. Admin is now an app, not a middleware. See BackwardsIncompatibleChanges for a full list of changes and information on how to update your code.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@948 bcc190cf-cafb-0310-a4f2-bffc1f526a37
Diffstat (limited to 'django/contrib/admin/templates')
-rw-r--r--django/contrib/admin/templates/admin/404.html11
-rw-r--r--django/contrib/admin/templates/admin/500.html11
-rw-r--r--django/contrib/admin/templates/admin/base.html50
-rw-r--r--django/contrib/admin/templates/admin/base_site.html10
-rw-r--r--django/contrib/admin/templates/admin/delete_confirmation.html21
-rw-r--r--django/contrib/admin/templates/admin/index.html65
-rw-r--r--django/contrib/admin/templates/admin/login.html31
-rw-r--r--django/contrib/admin/templates/admin/object_history.html42
-rw-r--r--django/contrib/admin/templates/admin/template_validator.html31
-rw-r--r--django/contrib/admin/templates/admin_doc/bookmarklets.html30
-rw-r--r--django/contrib/admin/templates/admin_doc/index.html28
-rw-r--r--django/contrib/admin/templates/admin_doc/missing_docutils.html17
-rw-r--r--django/contrib/admin/templates/admin_doc/model_detail.html46
-rw-r--r--django/contrib/admin/templates/admin_doc/model_index.html44
-rw-r--r--django/contrib/admin/templates/admin_doc/template_detail.html21
-rw-r--r--django/contrib/admin/templates/admin_doc/template_filter_index.html50
-rw-r--r--django/contrib/admin/templates/admin_doc/template_tag_index.html49
-rw-r--r--django/contrib/admin/templates/admin_doc/view_detail.html26
-rw-r--r--django/contrib/admin/templates/admin_doc/view_index.html44
-rw-r--r--django/contrib/admin/templates/registration/logged_out.html11
-rw-r--r--django/contrib/admin/templates/registration/password_change_done.html13
-rw-r--r--django/contrib/admin/templates/registration/password_change_form.html25
-rw-r--r--django/contrib/admin/templates/registration/password_reset_done.html13
-rw-r--r--django/contrib/admin/templates/registration/password_reset_email.html14
-rw-r--r--django/contrib/admin/templates/registration/password_reset_form.html18
25 files changed, 721 insertions, 0 deletions
diff --git a/django/contrib/admin/templates/admin/404.html b/django/contrib/admin/templates/admin/404.html
new file mode 100644
index 0000000000..9d7876ecbf
--- /dev/null
+++ b/django/contrib/admin/templates/admin/404.html
@@ -0,0 +1,11 @@
+{% extends "admin/base_site" %}
+
+{% block title %}Page not found{% endblock %}
+
+{% block content %}
+
+<h2>Page not found</h2>
+
+<p>We're sorry, but the requested page could not be found.</p>
+
+{% endblock %}
diff --git a/django/contrib/admin/templates/admin/500.html b/django/contrib/admin/templates/admin/500.html
new file mode 100644
index 0000000000..34a28ff0f5
--- /dev/null
+++ b/django/contrib/admin/templates/admin/500.html
@@ -0,0 +1,11 @@
+{% extends "admin/base_site" %}
+
+{% block breadcrumbs %}<div class="breadcrumbs"><a href="/">Home</a> &rsaquo; Server error</div>{% endblock %}
+
+{% block title %}Server error (500){% endblock %}
+
+{% block content %}
+<h1>Server Error <em>(500)</em></h1>
+<p>There's been an error. It's been reported to the site administrators via e-mail and should be fixed shortly. Thanks for your patience.</p>
+
+{% endblock %}
diff --git a/django/contrib/admin/templates/admin/base.html b/django/contrib/admin/templates/admin/base.html
new file mode 100644
index 0000000000..64c80b934c
--- /dev/null
+++ b/django/contrib/admin/templates/admin/base.html
@@ -0,0 +1,50 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
+<head>
+<title>{% block title %}{% endblock %}</title>
+<link rel="stylesheet" type="text/css" href="{% block stylesheet %}{% load adminmedia %}{% admin_media_prefix %}css/base.css{% endblock %}" />
+{% block extrastyle %}{% endblock %}
+{% block extrahead %}{% endblock %}
+</head>
+
+<body class="{% if is_popup %}popup {% endif %}{% block bodyclass %}{% endblock %}">
+
+<!-- Container -->
+<div id="container">
+
+ {% if not is_popup %}
+ <!-- Header -->
+ <div id="header">
+ <div id="branding">
+ {% block branding %}{% endblock %}
+ </div>
+ {% if not user.is_anonymous %}
+ <div id="user-tools">Welcome, <strong>{% if user.first_name %}{{ user.first_name }}{% else %}{{ user.username }}{% endif %}</strong>. <br />{% block userlinks %}<a href="/admin/password_change/">Change password</a> / <a href="/admin/logout/">Log out</a>{% endblock %}</div>
+ {% endif %}
+ {% block nav-global %}{% endblock %}
+ <br class="clear" />
+ </div>
+ <!-- END Header -->
+ {% block breadcrumbs %}<div class="breadcrumbs"><a href="/">Home</a>{% if title %} &rsaquo; {{ title }}{% endif %}</div>{% endblock %}
+ {% endif %}
+
+ {% if messages %}
+ <ul class="messagelist">{% for message in messages %}<li>{{ message }}</li>{% endfor %}</ul>
+ {% endif %}
+
+ <!-- Content -->
+ <div id="content" class="{% block coltype %}colM{% endblock %}">
+ {% block pretitle %}{% endblock %}
+ {% if title %}<h1>{{ title }}</h1>{% endif %}
+ {% block content %}{{ content }}{% endblock %}
+ {% block sidebar %}{% endblock %}
+ <br class="clear" />
+ </div>
+ <!-- END Content -->
+
+ <div id="footer"></div>
+</div>
+<!-- END Container -->
+
+</body>
+</html>
diff --git a/django/contrib/admin/templates/admin/base_site.html b/django/contrib/admin/templates/admin/base_site.html
new file mode 100644
index 0000000000..7113c06d6c
--- /dev/null
+++ b/django/contrib/admin/templates/admin/base_site.html
@@ -0,0 +1,10 @@
+{% extends "admin/base" %}
+
+{% block title %}{{ title }} | Django site admin{% endblock %}
+
+{% block branding %}
+<h1 id="site-name">Django administration</h1>
+<h2 id="site-url"><a href="http://www.example.com/">example.com</a></h2>
+{% endblock %}
+
+{% block nav-global %}{% endblock %}
diff --git a/django/contrib/admin/templates/admin/delete_confirmation.html b/django/contrib/admin/templates/admin/delete_confirmation.html
new file mode 100644
index 0000000000..99b1cdce7a
--- /dev/null
+++ b/django/contrib/admin/templates/admin/delete_confirmation.html
@@ -0,0 +1,21 @@
+{% extends "admin/base_site" %}
+
+{% block content %}
+
+{% if perms_lacking %}
+ <p>Deleting the {{ object_name }} "{{ object }}" would result in deleting related objects, but your account doesn't have permission to delete the following types of objects:</p>
+ <ul>
+ {% for obj in perms_lacking %}
+ <li>{{ obj }}</li>
+ {% endfor %}
+ </ul>
+{% else %}
+ <p>Are you sure you want to delete the {{ object_name }} "{{ object }}"? All of the following related items will be deleted:</p>
+ <ul>{{ deleted_objects|unordered_list }}</ul>
+ <form action="" method="post">
+ <input type="hidden" name="post" value="yes" />
+ <input type="submit" value="Yes, I'm sure" />
+ </form>
+{% endif %}
+
+{% endblock %}
diff --git a/django/contrib/admin/templates/admin/index.html b/django/contrib/admin/templates/admin/index.html
new file mode 100644
index 0000000000..02c5bd8439
--- /dev/null
+++ b/django/contrib/admin/templates/admin/index.html
@@ -0,0 +1,65 @@
+{% extends "admin/base_site" %}
+
+{% block coltype %}colMS{% endblock %}
+{% block bodyclass %}dashboard{% endblock %}
+{% block breadcrumbs %}{% endblock %}
+{% block content %}
+<div id="content-main">
+
+{% load adminapplist %}
+
+{% get_admin_app_list as app_list %}
+{% if app_list %}
+ {% for app in app_list %}
+ <div class="module">
+ <h2>{{ app.name }}</h2>
+ <table>
+ {% for model in app.models %}
+ <tr>
+ {% if model.perms.change %}
+ <th><a href="{{ model.admin_url }}">{{ model.name }}</a></th>
+ {% else %}
+ <th>{{ model.name }}</th>
+ {% endif %}
+
+ {% if model.perms.add %}
+ <td class="x50"><a href="{{ model.admin_url }}add/" class="addlink">Add</a></td>
+ {% else %}
+ <td class="x50">&nbsp;</td>
+ {% endif %}
+
+ {% if model.perms.change %}
+ <td class="x75"><a href="{{ model.admin_url }}" class="changelink">Change</a></td>
+ {% else %}
+ <td class="x75">&nbsp;</td>
+ {% endif %}
+ </tr>
+ {% endfor %}
+ </table>
+ </div>
+ {% endfor %}
+{% else %}
+ <p>You don't have permission to edit anything.</p>
+{% endif %}
+</div>
+{% endblock %}
+
+{% block sidebar %}
+<div id="content-related">
+ <div class="module" id="recent-actions-module">
+ <h2>Recent Actions</h2>
+ <h3>My Actions</h3>
+ {% load auth.log %}
+ {% get_admin_log 10 as admin_log for_user user %}
+ {% if not admin_log %}
+ <p>None available</p>
+ {% else %}
+ <ul class="actionlist">
+ {% for entry in admin_log %}
+ <li class="{% if entry.is_addition %}addlink{% endif %}{% if entry.is_change %}changelink{% endif %}{% if entry.is_deletion %}deletelink{% endif %}">{% if not entry.is_deletion %}<a href="{{ entry.get_admin_url }}">{% endif %}{{ entry.object_repr }}{% if not entry.is_deletion %}</a>{% endif %}<br /><span class="mini quiet">{{ entry.get_content_type.name|capfirst }}</span></li>
+ {% endfor %}
+ </ul>
+ {% endif %}
+ </div>
+</div>
+{% endblock %}
diff --git a/django/contrib/admin/templates/admin/login.html b/django/contrib/admin/templates/admin/login.html
new file mode 100644
index 0000000000..ef4aa5aae2
--- /dev/null
+++ b/django/contrib/admin/templates/admin/login.html
@@ -0,0 +1,31 @@
+{% extends "admin/base_site" %}
+
+{% block breadcrumbs %}{% endblock %}
+
+{% block content %}
+
+{% if error_message %}
+<p class="errornote">{{ error_message }}</p>
+{% endif %}
+<div id="content-main">
+<form action="{{ app_path }}" method="post">
+
+<p class="aligned">
+<label for="id_username">Username:</label> <input type="text" name="username" id="id_username" />
+</p>
+<p class="aligned">
+<label for="id_password">Password:</label> <input type="password" name="password" id="id_password" />
+<input type="hidden" name="this_is_the_login_form" value="1" />
+<input type="hidden" name="post_data" value="{{ post_data }}" />{% comment %} <span class="help">Have you <a href="/password_reset/">forgotten your password</a>?</span>{% endcomment %}
+</p>
+
+<div class="aligned ">
+<label>&nbsp;</label><input type="submit" value="Log in" />
+</div>
+</form>
+
+<script type="text/javascript">
+document.getElementById('id_username').focus()
+</script>
+</div>
+{% endblock %}
diff --git a/django/contrib/admin/templates/admin/object_history.html b/django/contrib/admin/templates/admin/object_history.html
new file mode 100644
index 0000000000..d50936665a
--- /dev/null
+++ b/django/contrib/admin/templates/admin/object_history.html
@@ -0,0 +1,42 @@
+{% extends "admin/base_site" %}
+
+{% block breadcrumbs %}
+<div class="breadcrumbs"><a href="../../../../">Home</a> &rsaquo; <a href="../../">{{ module_name }}</a> &rsaquo; <a href="../">{{ object|truncatewords:"18" }}</a> &rsaquo; History</div>
+{% endblock %}
+
+{% block content %}
+
+<div id="content-main">
+<div class="module">
+
+{% if action_list %}
+
+ <table id="change-history">
+ <thead>
+ <tr>
+ <th>Date/time</th>
+ <th>User</th>
+ <th>Action</th>
+ </tr>
+ </thead>
+ <tbody>
+ {% for action in action_list %}
+ <tr>
+ <th>{{ action.action_time|date:"N j, Y, P" }}</th>
+ <td>{{ action.get_user.username }}{% if action.get_user.first_name %} ({{ action.get_user.first_name }} {{ action.get_user.last_name }}){% endif %}</td>
+ <td>{{ action.change_message}}</td>
+ </tr>
+ {% endfor %}
+ </tbody>
+ </table>
+
+{% else %}
+
+ <p>This object doesn't have a change history. It probably wasn't added via this admin site.</p>
+
+{% endif %}
+
+</div>
+</div>
+
+{% endblock %}
diff --git a/django/contrib/admin/templates/admin/template_validator.html b/django/contrib/admin/templates/admin/template_validator.html
new file mode 100644
index 0000000000..f9ac09a77d
--- /dev/null
+++ b/django/contrib/admin/templates/admin/template_validator.html
@@ -0,0 +1,31 @@
+{% extends "admin/base_site" %}
+
+{% block content %}
+
+<div id="content-main">
+
+<form action="" method="post">
+
+{% if form.error_dict %}
+<p class="errornote">Your template had {{ form.error_dict.items|length }} error{{ form.error_dict.items|pluralize }}:</p>
+{% endif %}
+
+<fieldset class="module aligned">
+<div class="form-row{% if form.site.errors %} error{% endif %} required">
+ {% if form.site.errors %}{{ form.site.html_error_list }}{% endif %}
+ <h4><label for="id_site">Site:</label> {{ form.site }}</h4>
+</div>
+<div class="form-row{% if form.template.errors %} error{% endif %} required">
+ {% if form.template.errors %}{{ form.template.html_error_list }}{% endif %}
+ <h4><label for="id_template">Template:</label> {{ form.template }}</h4>
+</div>
+</fieldset>
+
+<div class="submit-row">
+ <input type="submit" value="Check for errors" class="default" />
+</div>
+
+</form>
+</div>
+
+{% endblock %}
diff --git a/django/contrib/admin/templates/admin_doc/bookmarklets.html b/django/contrib/admin/templates/admin_doc/bookmarklets.html
new file mode 100644
index 0000000000..d396ec53b5
--- /dev/null
+++ b/django/contrib/admin/templates/admin_doc/bookmarklets.html
@@ -0,0 +1,30 @@
+{% extends "admin/base_site" %}
+
+{% block breadcrumbs %}<div class="breadcrumbs"><a href="../../">Home</a> &rsaquo; <a href="../">Documentation</a> &rsaquo; Bookmarklets</div>{% endblock %}
+
+{% block title %}Documentation bookmarklets{% endblock %}
+
+{% block content %}
+
+<p class="help">To install bookmarklets, drag the link to your bookmarks
+toolbar, or right-click the link and add it to your bookmarks. Now you can
+select the bookmarklet from any page in the site. Note that some of these
+bookmarklets require you to be viewing the site from a computer designated
+as "internal" (talk to your system administrator if you aren't sure if
+your computer is "internal").</p>
+
+<div id="content-main">
+ <h3><a href="javascript:(function(){if(typeof ActiveXObject!='undefined'){x=new ActiveXObject('Microsoft.XMLHTTP')}else if(typeof XMLHttpRequest!='undefined'){x=new XMLHttpRequest()}else{return;}x.open('HEAD',location.href,false);x.send(null);try{view=x.getResponseHeader('x-view');}catch(e){alert('No view found for this page');return;}if(view=="undefined"){alert("No view found for this page");}document.location='{{ admin_url }}/doc/views/'+view+'/';})()">Documentation for this page</a></h3>
+ <p>Jumps you from any page to the documentation for the view that generates that page.</p>
+
+ <h3><a href="javascript:(function(){if(typeof ActiveXObject!='undefined'){x=new ActiveXObject('Microsoft.XMLHTTP')}else if(typeof XMLHttpRequest!='undefined'){x=new XMLHttpRequest()}else{return;}x.open('GET',location.href,false);x.send(null);try{type=x.getResponseHeader('x-object-type');id=x.getResponseHeader('x-object-id');}catch(e){type='(none)';id='(none)';}d=document;b=d.body;e=d.createElement('div');e.id='xxxhhh';s=e.style;s.position='absolute';s.left='10px';s.top='10px';s.font='10px monospace';s.border='1px black solid';s.padding='4px';s.backgroundColor='#eee';e.appendChild(d.createTextNode('Type: '+type));e.appendChild(d.createElement('br'));e.appendChild(d.createTextNode('ID: '+id));e.appendChild(d.createElement('br'));l=d.createElement('a');l.href='#';l.onclick=function(){b.removeChild(e);};l.appendChild(d.createTextNode('[close]'));l.style.textDecoration='none';e.appendChild(l);b.appendChild(e);})();">Show object ID</a></h3>
+ <p>Shows the content-type and unique ID for pages that represent a single object.</p>
+
+ <h3><a href="javascript:(function(){if(typeof ActiveXObject!='undefined'){var x=new ActiveXObject('Microsoft.XMLHTTP')}else if(typeof XMLHttpRequest!='undefined'){var x=new XMLHttpRequest()}else{return;}x.open('GET',location.href,false);x.send(null);try{var type=x.getResponseHeader('x-object-type');var id=x.getResponseHeader('x-object-id');}catch(e){return;}document.location='{{ admun_url }}/'+type.split('.').join('/')+'/'+id+'/';})()">Edit this object (current window)</a></h3>
+ <p>Jumps to the admin page for pages that represent a single object.</p>
+
+ <h3><a href="javascript:(function(){if(typeof ActiveXObject!='undefined'){var x=new ActiveXObject('Microsoft.XMLHTTP')}else if(typeof XMLHttpRequest!='undefined'){var x=new XMLHttpRequest()}else{return;}x.open('GET',location.href,false);x.send(null);try{var type=x.getResponseHeader('x-object-type');var id=x.getResponseHeader('x-object-id');}catch(e){return;}window.open('{{ admun_url }}/'+type.split('.').join('/')+'/'+id+'/');})()">Edit this object (new window)</a></h3>
+ <p>As above, but opens the admin page in a new window.</p>
+</div>
+
+{% endblock %}
diff --git a/django/contrib/admin/templates/admin_doc/index.html b/django/contrib/admin/templates/admin_doc/index.html
new file mode 100644
index 0000000000..77d2a96bf2
--- /dev/null
+++ b/django/contrib/admin/templates/admin_doc/index.html
@@ -0,0 +1,28 @@
+{% extends "admin/base_site" %}
+
+{% block breadcrumbs %}<div class="breadcrumbs"><a href="../">Home</a> &rsaquo; Documentation</div>{% endblock %}
+
+{% block title %}Documentation{% endblock %}
+
+{% block content %}
+
+<h1>Documentation</h1>
+
+<div id="content-main">
+ <h3><a href="tags/">Tags</a></h3>
+ <p>List of all the template tags and their functions.</p>
+
+ <h3><a href="filters/">Filters</a></h3>
+ <p>Filters are actions which can be applied to variables in a template to alter the output.</p>
+
+ <h3><a href="models/">Models</a></h3>
+ <p>Models are descriptions of all the objects in the system and their associated fields. Each model has a list of fields which can be accessed as template variables.</p>
+
+ <h3><a href="views/">Views</a></h3>
+ <p>Each page on the public site is generated by a view. The view defines which template is used to generate the page and which objects are available to that template.</p>
+
+ <h3><a href="bookmarklets/">Bookmarklets</a></h3>
+ <p>Tools for your browser to quickly access admin functionality.</p>
+</div>
+
+{% endblock %}
diff --git a/django/contrib/admin/templates/admin_doc/missing_docutils.html b/django/contrib/admin/templates/admin_doc/missing_docutils.html
new file mode 100644
index 0000000000..40004c41ab
--- /dev/null
+++ b/django/contrib/admin/templates/admin_doc/missing_docutils.html
@@ -0,0 +1,17 @@
+{% extends "admin/base_site" %}
+
+{% block breadcrumbs %}<div class="breadcrumbs"><a href="../">Home</a> &rsaquo; Documentation</div>{% endblock %}
+
+{% block title %}Please install docutils{% endblock %}
+
+{% block content %}
+
+<h1>Documentation</h1>
+
+<div id="content-main">
+ <h3>The admin documentation system requires Python's <a href="http://docutils.sf.net/">docutils</a> library.</h3>
+
+ <p>Please ask your administrators to install <a href="http://docutils.sf.net/">docutils</a>.</p>
+</div>
+
+{% endblock %}
diff --git a/django/contrib/admin/templates/admin_doc/model_detail.html b/django/contrib/admin/templates/admin_doc/model_detail.html
new file mode 100644
index 0000000000..d3621b7434
--- /dev/null
+++ b/django/contrib/admin/templates/admin_doc/model_detail.html
@@ -0,0 +1,46 @@
+{% extends "admin/base_site" %}
+
+{% block extrahead %}
+
+{{ block.super }}
+
+<style type="text/css">
+
+.module table { width:100%; }
+
+</style>
+
+{% endblock %}
+
+{% block breadcrumbs %}<div class="breadcrumbs"><a href="../../../">Home</a> &rsaquo; <a href="../../">Documentation</a> &rsaquo; <a href="../">Models</a> &rsaquo; {{ name }}</div>{% endblock %}
+
+{% block title %}Model: {{ name }}{% endblock %}
+
+{% block content %}
+<div id="content-main">
+<h1>{{ summary }}</h1>
+
+<div class="module">
+<table class="model">
+<thead>
+<tr>
+ <th>Field</th>
+ <th>Type</th>
+ <th>Description</th>
+</tr>
+</thead>
+<tbody>
+{% for field in fields|dictsort:"name" %}
+<tr>
+ <td>{{ field.name }}</td>
+ <td>{{ field.data_type }}</td>
+ <td>{{ field.verbose|default:"" }}{% if field.help_text %} - {{ field.help_text }}{% endif %}</td>
+</tr>
+{% endfor %}
+</tbody>
+</table>
+</div>
+
+<p class="small"><a href="../">&lsaquo; Back to Models Documentation</p>
+</div>
+{% endblock %}
diff --git a/django/contrib/admin/templates/admin_doc/model_index.html b/django/contrib/admin/templates/admin_doc/model_index.html
new file mode 100644
index 0000000000..5896ee136e
--- /dev/null
+++ b/django/contrib/admin/templates/admin_doc/model_index.html
@@ -0,0 +1,44 @@
+{% extends "admin/base_site" %}
+
+{% block coltype %}colSM{% endblock %}
+
+{% block breadcrumbs %}<div class="breadcrumbs"><a href="../../">Home</a> &rsaquo; <a href="../">Documentation</a> &rsaquo; Models</div>{% endblock %}
+
+{% block title %}Models{% endblock %}
+
+{% block content %}
+
+<h1>Models Documentation</h1>
+
+<div id="content-main">
+{% regroup models|dictsort:"module" by module as grouped_models %}
+{% for group in grouped_models %}
+<div class="module">
+<h2 id='{{ group.grouper }}'>{{ group.grouper }}</h2>
+
+<table class="xfull">
+{% for model in group.list %}
+<tr>
+<th><a href="{{ model.name }}/">{{ model.class }}</a></th>
+</tr>
+{% endfor %}
+</table>
+</div>
+{% endfor %}
+
+</div>
+{% endblock %}
+
+{% block sidebar %}
+<div id="content-related" class="sidebar">
+<div class="module">
+<h2>Model Groups Quick List</h2>
+<ul>
+{% regroup models|dictsort:"module" by module as grouped_models %}
+{% for group in grouped_models %}
+ <li><a href="#{{ group.grouper }}">{{ group.grouper }}</a></li>
+{% endfor %}
+</ul>
+</div>
+</div>
+{% endblock %}
diff --git a/django/contrib/admin/templates/admin_doc/template_detail.html b/django/contrib/admin/templates/admin_doc/template_detail.html
new file mode 100644
index 0000000000..448ff212ba
--- /dev/null
+++ b/django/contrib/admin/templates/admin_doc/template_detail.html
@@ -0,0 +1,21 @@
+{% extends "admin/base_site" %}
+
+{% block breadcrumbs %}<div class="breadcrumbs"><a href="../../../">Home</a> &rsaquo; <a href="../../">Documentation</a> &rsaquo; Templates &rsaquo; {{ name }}</div>{% endblock %}
+
+{% block title %}Template: {{ name }}{% endblock %}
+
+{% block content %}
+<h1>Template: "{{ name }}"</h1>
+
+{% regroup templates|dictsort:"site_id" by site as templates_by_site %}
+{% for group in templates_by_site %}
+ <h2>Search path for template "{{ name }}" on {{ group.grouper }}:</h2>
+ <ol>
+ {% for template in group.list|dictsort:"order" %}
+ <li><code>{{ template.file }}</code>{% if not template.exists %} <em>(does not exist)</em>{% endif %}</li>
+ {% endfor %}
+ </ol>
+{% endfor %}
+
+<p class="small"><a href="../../">&lsaquo; Back to Documentation</a></p>
+{% endblock %}
diff --git a/django/contrib/admin/templates/admin_doc/template_filter_index.html b/django/contrib/admin/templates/admin_doc/template_filter_index.html
new file mode 100644
index 0000000000..23f0862457
--- /dev/null
+++ b/django/contrib/admin/templates/admin_doc/template_filter_index.html
@@ -0,0 +1,50 @@
+{% extends "admin/base_site" %}
+
+{% block coltype %}colSM{% endblock %}
+
+{% block breadcrumbs %}<div class="breadcrumbs"><a href="../../">Home</a> &rsaquo; <a href="../">Documentation</a> &rsaquo; filters</div>{% endblock %}
+
+{% block title %}Template filters{% endblock %}
+
+{% block content %}
+
+<h1>Template filter documentation</h1>
+
+<div id="content-main">
+{% regroup filters|dictsort:"library" by library as filter_libraries %}
+{% for library in filter_libraries %}
+<div class="module">
+ <h2>{% if library.grouper %}{{ library.grouper }}{% else %}Built-in filters{% endif %}</h2>
+ {% if library.grouper %}<p class="small quiet">To use these filters, put <code>{% templatetag openblock %} load {{ library.grouper }} {% templatetag closeblock %}</code> in your template before using the filter.</p><hr>{% endif %}
+ {% for filter in library.list|dictsort:"name" %}
+ <h3 id="{{ filter.name }}">{{ filter.name }}</h3>
+ <p>{{ filter.title }}</p>
+ <p><strong>Usage:</strong> <code>{% templatetag openvariable %} variable|{{ filter.name }}{% if filter.meta.AcceptsArgument %}:"arg"{% endif %} {% templatetag closevariable %}</code></p>
+ <p>{{ filter.body }}</p>
+ {% if not forloop.last %}<hr />{% endif %}
+ {% endfor %}
+</div>
+{% endfor %}
+</div>
+
+{% endblock %}
+
+{% block sidebar %}
+
+<div id="content-related">
+
+{% regroup filters|dictsort:"library" by library as filter_libraries %}
+{% for library in filter_libraries %}
+<div class="module">
+ <h2>{% if library.grouper %}{{ library.grouper }}{% else %}Built-in filters{% endif %}</h2>
+ <ul>
+ {% for filter in library.list|dictsort:"name" %}
+ <li><a href="#{{ filter.name }}">{{ filter.name }}</a></li>
+ {% endfor %}
+ </ul>
+</div>
+{% endfor %}
+
+</div>
+
+{% endblock %}
diff --git a/django/contrib/admin/templates/admin_doc/template_tag_index.html b/django/contrib/admin/templates/admin_doc/template_tag_index.html
new file mode 100644
index 0000000000..83b2572322
--- /dev/null
+++ b/django/contrib/admin/templates/admin_doc/template_tag_index.html
@@ -0,0 +1,49 @@
+{% extends "admin/base_site" %}
+
+{% block coltype %}colSM{% endblock %}
+
+{% block breadcrumbs %}<div class="breadcrumbs"><a href="../../">Home</a> &rsaquo; <a href="../">Documentation</a> &rsaquo; Tags</div>{% endblock %}
+
+{% block title %}Template tags{% endblock %}
+
+{% block content %}
+
+<h1>Template tag documentation</h1>
+
+<div id="content-main">
+{% regroup tags|dictsort:"library" by library as tag_libraries %}
+{% for library in tag_libraries %}
+<div class="module">
+ <h2>{% if library.grouper %}{{ library.grouper }}{% else %}Built-in tags{% endif %}</h2>
+ {% if library.grouper %}<p class="small quiet">To use these tags, put <code>{% templatetag openblock %} load {{ library.grouper }} {% templatetag closeblock %}</code> in your template before using the tag.</p><hr>{% endif %}
+ {% for tag in library.list|dictsort:"name" %}
+ <h3 id="{{ tag.name }}">{{ tag.name }}</h3>
+ <h4>{{ tag.title }}</h4>
+ <p>{{ tag.body }}</p>
+ {% if not forloop.last %}<hr />{% endif %}
+ {% endfor %}
+</div>
+{% endfor %}
+</div>
+
+{% endblock %}
+
+{% block sidebar %}
+
+<div id="content-related">
+
+{% regroup tags|dictsort:"library" by library as tag_libraries %}
+{% for library in tag_libraries %}
+<div class="module">
+ <h2>{% if library.grouper %}{{ library.grouper }}{% else %}Built-in tags{% endif %}</h2>
+ <ul>
+ {% for tag in library.list|dictsort:"name" %}
+ <li><a href="#{{ tag.name }}">{{ tag.name }}</a></li>
+ {% endfor %}
+ </ul>
+</div>
+{% endfor %}
+
+</div>
+
+{% endblock %}
diff --git a/django/contrib/admin/templates/admin_doc/view_detail.html b/django/contrib/admin/templates/admin_doc/view_detail.html
new file mode 100644
index 0000000000..9fb06e7eb7
--- /dev/null
+++ b/django/contrib/admin/templates/admin_doc/view_detail.html
@@ -0,0 +1,26 @@
+{% extends "admin/base_site" %}
+
+{% block breadcrumbs %}<div class="breadcrumbs"><a href="../../../">Home</a> &rsaquo; <a href="../../">Documentation</a> &rsaquo; <a href="../">Views</a> &rsaquo; {{ name }}</div>{% endblock %}
+
+{% block title %}View: {{ name }}{% endblock %}
+
+{% block content %}
+
+<h1>{{ name }}</h1>
+
+<h2 class="subhead">{{ summary }}</h2>
+
+<p>{{ body }}</p>
+
+{% if meta.Context %}
+<h3>Context:</h3>
+<p>{{ meta.Context }}</p>
+{% endif %}
+
+{% if meta.Templates %}
+<h3>Templates:</h3>
+<p>{{ meta.Templates }}</p>
+{% endif %}
+
+<p class="small"><a href="../">&lsaquo; Back to Views Documentation</a></p>
+{% endblock %}
diff --git a/django/contrib/admin/templates/admin_doc/view_index.html b/django/contrib/admin/templates/admin_doc/view_index.html
new file mode 100644
index 0000000000..90ef5b1c90
--- /dev/null
+++ b/django/contrib/admin/templates/admin_doc/view_index.html
@@ -0,0 +1,44 @@
+{% extends "admin/base_site" %}
+
+{% block coltype %}colSM{% endblock %}
+
+{% block breadcrumbs %}<div class="breadcrumbs"><a href="../../">Home</a> &rsaquo; <a href="../">Documentation</a> &rsaquo; Views</div>{% endblock %}
+
+{% block title %}Views{% endblock %}
+
+{% block content %}
+
+<h1>View documentation</h1>
+
+{% regroup views|dictsort:"site_id" by site as views_by_site %}
+
+<div id="content-related" class="sidebar">
+<div class="module">
+<h2>Jump to site</h2>
+<ul>
+ {% for site_views in views_by_site %}
+ <li><a href="#site{{ site_views.grouper.id }}">{{ site_views.grouper.name }}</a></li>
+ {% endfor %}
+</ul>
+</div>
+</div>
+
+<div id="content-main">
+
+{% for site_views in views_by_site %}
+<div class="module">
+<h2 id="site{{ site_views.grouper.id }}">Views by URL on {{ site_views.grouper.name }}</h2>
+
+{% for view in site_views.list|dictsort:"url" %}
+{% ifchanged %}
+<h3><a href="{{ view.module }}.{{ view.name }}/"/>{{ view.url|escape }}</a></h3>
+<p class="small quiet">View function: {{ view.module }}.{{ view.name }}</p>
+<p>{{ view.title }}</p>
+<hr>
+{% endifchanged %}
+{% endfor %}
+</div>
+{% endfor %}
+</div>
+{% endblock %}
+
diff --git a/django/contrib/admin/templates/registration/logged_out.html b/django/contrib/admin/templates/registration/logged_out.html
new file mode 100644
index 0000000000..1f4bd29790
--- /dev/null
+++ b/django/contrib/admin/templates/registration/logged_out.html
@@ -0,0 +1,11 @@
+{% extends "admin/base_site" %}
+
+{% block breadcrumbs %}<div class="breadcrumbs"><a href="../">Home</a></div>{% endblock %}
+
+{% block content %}
+
+<p>Thanks for spending some quality time with the Web site today.</p>
+
+<p><a href="../">Log in again</a></p>
+
+{% endblock %}
diff --git a/django/contrib/admin/templates/registration/password_change_done.html b/django/contrib/admin/templates/registration/password_change_done.html
new file mode 100644
index 0000000000..4345b9bcaa
--- /dev/null
+++ b/django/contrib/admin/templates/registration/password_change_done.html
@@ -0,0 +1,13 @@
+{% extends "admin/base_site" %}
+
+{% block breadcrumbs %}<div class="breadcrumbs"><a href="../">Home</a> &rsaquo; Password change</div>{% endblock %}
+
+{% block title %}Password change successful{% endblock %}
+
+{% block content %}
+
+<h1>Password change successful</h1>
+
+<p>Your password was changed.</p>
+
+{% endblock %}
diff --git a/django/contrib/admin/templates/registration/password_change_form.html b/django/contrib/admin/templates/registration/password_change_form.html
new file mode 100644
index 0000000000..104249991c
--- /dev/null
+++ b/django/contrib/admin/templates/registration/password_change_form.html
@@ -0,0 +1,25 @@
+{% extends "admin/base_site" %}
+
+{% block breadcrumbs %}<div class="breadcrumbs"><a href="../">Home</a> &rsaquo; Password change</div>{% endblock %}
+
+{% block title %}Password change{% endblock %}
+
+{% block content %}
+
+<h1>Password change</h1>
+
+<p>Please enter your old password, for security's sake, and then enter your new password twice so we can verify you typed it in correctly.</p>
+
+<form action="" method="post">
+
+{% if form.old_password.errors %}{{ form.old_password.html_error_list }}{% endif %}
+<p class="aligned wide"><label for="id_old_password">Old password:</label>{{ form.old_password }}</p>
+{% if form.new_password1.errors %}{{ form.new_password1.html_error_list }}{% endif %}
+<p class="aligned wide"><label for="id_new_password1">New password:</label>{{ form.new_password1 }}</p>
+{% if form.new_password2.errors %}{{ form.new_password2.html_error_list }}{% endif %}
+<p class="aligned wide"><label for="id_new_password2">Confirm password:</label>{{ form.new_password2 }}</p>
+
+<p><input type="submit" value="Change my password" /></p>
+</form>
+
+{% endblock %}
diff --git a/django/contrib/admin/templates/registration/password_reset_done.html b/django/contrib/admin/templates/registration/password_reset_done.html
new file mode 100644
index 0000000000..a8573e8e0e
--- /dev/null
+++ b/django/contrib/admin/templates/registration/password_reset_done.html
@@ -0,0 +1,13 @@
+{% extends "admin/base_site" %}
+
+{% block breadcrumbs %}<div class="breadcrumbs"><a href="../">Home</a> &rsaquo; Password reset</div>{% endblock %}
+
+{% block title %}Password reset successful{% endblock %}
+
+{% block content %}
+
+<h1>Password reset successful</h1>
+
+<p>We've e-mailed a new password to the e-mail address you submitted. You should be receiving it shortly.</p>
+
+{% endblock %}
diff --git a/django/contrib/admin/templates/registration/password_reset_email.html b/django/contrib/admin/templates/registration/password_reset_email.html
new file mode 100644
index 0000000000..4a5bb920d6
--- /dev/null
+++ b/django/contrib/admin/templates/registration/password_reset_email.html
@@ -0,0 +1,14 @@
+You're receiving this e-mail because you requested a password reset
+for your user account at {{ site_name }}.
+
+Your new password is: {{ new_password }}
+
+Feel free to change this password by going to this page:
+
+http://{{ domain }}/password_change/
+
+Your username, in case you've forgotten, is {{ user.username }}
+
+Thanks for using our site!
+
+The {{ site_name }} team
diff --git a/django/contrib/admin/templates/registration/password_reset_form.html b/django/contrib/admin/templates/registration/password_reset_form.html
new file mode 100644
index 0000000000..4f9bcb5fc5
--- /dev/null
+++ b/django/contrib/admin/templates/registration/password_reset_form.html
@@ -0,0 +1,18 @@
+{% extends "admin/base_site" %}
+
+{% block breadcrumbs %}<div class="breadcrumbs"><a href="../">Home</a> &rsaquo; Password reset</div>{% endblock %}
+
+{% block title %}Password reset{% endblock %}
+
+{% block content %}
+
+<h1>Password reset</h1>
+
+<p>Forgotten your password? Enter your e-mail address below, and we'll reset your password and e-mail the new one to you.</p>
+
+<form action="" method="post">
+{% if form.email.errors %}{{ form.email.html_error_list }}{% endif %}
+<p><label for="id_email">E-mail address:</label> {{ form.email }} <input type="submit" value="Reset my password" /></p>
+</form>
+
+{% endblock %}