Skip to content

Commit aac3f30

Browse files
committed
[soc2009/admin-ui] the beginnings of a new type of inline, called Selector Inline, based on this mockup: http://media.wilsonminer.com/images/django/related-objects-stacked.gif
git-svn-id: http://code.djangoproject.com/svn/django/branches/soc2009/admin-ui@10958 bcc190cf-cafb-0310-a4f2-bffc1f526a37
1 parent e9b2fc1 commit aac3f30

File tree

5 files changed

+119
-1
lines changed

5 files changed

+119
-1
lines changed

django/contrib/admin/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
from django.contrib.admin.helpers import ACTION_CHECKBOX_NAME
22
from django.contrib.admin.options import ModelAdmin, HORIZONTAL, VERTICAL
3-
from django.contrib.admin.options import StackedInline, TabularInline
3+
from django.contrib.admin.options import StackedInline, TabularInline, SelectorInline
44
from django.contrib.admin.sites import AdminSite, site
55
from django.utils.importlib import import_module
66

django/contrib/admin/media/css/forms.css

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -327,4 +327,32 @@ fieldset.monospace textarea {
327327

328328
.add_inline {
329329
display: none;
330+
}
331+
332+
.inline-selector {
333+
float: left;
334+
width: 19%;
335+
}
336+
337+
.inline-selector-item {
338+
background-color: #F6F6F6;
339+
border: 1px solid #E7E7E7;
340+
padding: 5px;
341+
margin: 7px 0px 7px 5px;
342+
font-size: 0.9em;
343+
}
344+
345+
.inline-detail {
346+
float: right;
347+
width: 80%;
348+
background: #c9c;
349+
border-left: 1px solid #EEE;
350+
}
351+
352+
.inline-selector-delete {
353+
float: right;
354+
}
355+
356+
.clear {
357+
clear: both;
330358
}

django/contrib/admin/options.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1166,3 +1166,6 @@ class StackedInline(InlineModelAdmin):
11661166

11671167
class TabularInline(InlineModelAdmin):
11681168
template = 'admin/edit_inline/tabular.html'
1169+
1170+
class SelectorInline(InlineModelAdmin):
1171+
template = 'admin/edit_inline/selector.html'
Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
{% load i18n %}
2+
<div class="inline-group">
3+
<div class="tabular inline-related {% if forloop.last %}last-related{% endif %}">
4+
{{ inline_admin_formset.formset.management_form }}
5+
<h2>{{ inline_admin_formset.opts.verbose_name_plural|capfirst }}</h2>
6+
7+
{{ inline_admin_formset.formset.non_form_errors }}
8+
9+
<div class="inline-selector">
10+
{% for inline_admin_form in inline_admin_formset %}
11+
<div class="inline-selector-item">
12+
{% if inline_admin_form.original or inline_admin_form.show_url %}
13+
{% if inline_admin_form.original %} {{ inline_admin_form.original }}{% endif %}
14+
{% if inline_admin_form.show_url %}<a href="../../../r/{{ inline_admin_form.original_content_type_id }}/{{ inline_admin_form.original.id }}/">{% trans "View on site" %}</a>{% endif %}
15+
{% else %}
16+
New Inline
17+
{% endif %}
18+
</div>
19+
{% endfor %}
20+
</div>
21+
22+
<div class="inline-detail">
23+
{% for inline_admin_form in inline_admin_formset %}
24+
<h3>
25+
{% if inline_admin_form.original or inline_admin_form.show_url %}
26+
{% if inline_admin_form.original %} {{ inline_admin_form.original }}{% endif %}
27+
{% if inline_admin_form.show_url %}<a href="../../../r/{{ inline_admin_form.original_content_type_id }}/{{ inline_admin_form.original.id }}/">{% trans "View on site" %}</a>{% endif %}
28+
{% else %}
29+
[New Inline]
30+
{% endif %}
31+
32+
{% if inline_admin_formset.formset.can_delete %}
33+
<span class="inline-selector-delete">
34+
{% if inline_admin_form.original %}
35+
{{ inline_admin_form.deletion_field.field }} {{ inline_admin_form.deletion_field.label_tag }}
36+
{% endif %}
37+
</span>
38+
{% endif %}
39+
</h3>
40+
41+
{% if inline_admin_form.form.non_field_errors %}
42+
{{ inline_admin_form.form.non_field_errors }}
43+
{% endif %}
44+
45+
<div class="selector-item-detail">
46+
{% if inline_admin_form.has_auto_field %}{{ inline_admin_form.pk_field.field }}{% endif %}
47+
{{ inline_admin_form.fk_field.field }}
48+
{% spaceless %}
49+
{% for fieldset in inline_admin_form %}
50+
{% for line in fieldset %}
51+
{% for field in line %}
52+
{% if field.is_hidden %} {{ field.field }} {% endif %}
53+
{% endfor %}
54+
{% endfor %}
55+
{% endfor %}
56+
{% endspaceless %}
57+
58+
{% for fieldset in inline_admin_form %}
59+
<fieldset class="module aligned {{ fieldset.classes }}">
60+
{% if fieldset.name %}<h2>{{ fieldset.name }}</h2>{% endif %}
61+
{% if fieldset.description %}<div class="description">{{ fieldset.description|safe }}</div>{% endif %}
62+
{% for line in fieldset %}
63+
<div class="form-row{% if line.errors %} errors{% endif %} {% for field in line %}{{ field.field.name }} {% endfor %} ">
64+
{{ line.errors }}
65+
{% for field in line %}
66+
<div{% if not line.fields|length_is:"1" %} class="field-box"{% endif %}>
67+
{% if field.is_checkbox %}
68+
{{ field.field }}{{ field.label_tag }}
69+
{% else %}
70+
{{ field.label_tag }}{{ field.field }}
71+
{% endif %}
72+
{% if field.field.field.help_text %}<p class="help">{{ field.field.field.help_text|safe }}</p>{% endif %}
73+
</div>
74+
{% endfor %}
75+
</div>
76+
{% endfor %}
77+
</fieldset>
78+
{% endfor %}
79+
</div>
80+
{% endfor %}
81+
</div>
82+
<div class="clear"></div>
83+
</div>
84+
</div>

django/contrib/contenttypes/generic.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -399,3 +399,6 @@ class GenericStackedInline(GenericInlineModelAdmin):
399399

400400
class GenericTabularInline(GenericInlineModelAdmin):
401401
template = 'admin/edit_inline/tabular.html'
402+
403+
class GenericSelectorInline(GenericInlineModelAdmin):
404+
template = 'admin/edit_inline/selector.html'

0 commit comments

Comments
 (0)