20
20
{% if inline_admin_form.form.non_field_errors %}
21
21
<tr><td colspan="{{ inline_admin_form.field_count }}">{{ inline_admin_form.form.non_field_errors }}</td></tr>
23
<tr class="{% cycle row1,row2 %} {% if inline_admin_form.original or inline_admin_form.show_url %}has_original{% endif %}">
23
<tr class="{% cycle "row1" "row2" %} {% if inline_admin_form.original or inline_admin_form.show_url %}has_original{% endif %}{% if forloop.last %} empty-form{% endif %}"
24
id="{{ inline_admin_formset.formset.prefix }}-{% if not forloop.last %}{{ forloop.counter0 }}{% else %}empty{% endif %}">
25
25
<td class="original">
26
26
{% if inline_admin_form.original or inline_admin_form.show_url %}<p>
27
27
{% if inline_admin_form.original %} {{ inline_admin_form.original }}{% endif %}
43
42
{% for fieldset in inline_admin_form %}
44
43
{% for line in fieldset %}
45
44
{% for field in line %}
46
45
<td class="{{ field.field.name }}">
47
{{ field.field.errors.as_ul }}
46
{% if field.is_readonly %}
47
<p>{{ field.contents }}</p>
49
{{ field.field.errors.as_ul }}
54
56
{% if inline_admin_formset.formset.can_delete %}
55
57
<td class="delete">{% if inline_admin_form.original %}{{ inline_admin_form.deletion_field.field }}{% endif %}</td>
67
{# <ul class="tools"> #}
68
{# <li><a class="add" href="">Add another {{ inline_admin_formset.opts.verbose_name|title }}</a></li> #}
67
<script type="text/javascript">
69
$(document).ready(function($) {
70
var rows = "#{{ inline_admin_formset.formset.prefix }}-group .tabular.inline-related tbody tr";
71
var alternatingRows = function(row) {
72
$(rows).not(".add-row").removeClass("row1 row2")
73
.filter(":even").addClass("row1").end()
74
.filter(rows + ":odd").addClass("row2");
76
var reinitDateTimeShortCuts = function() {
77
// Reinitialize the calendar and clock widgets by force
78
if (typeof DateTimeShortcuts != "undefined") {
79
$(".datetimeshortcuts").remove();
80
DateTimeShortcuts.init();
83
var updateSelectFilter = function() {
84
// If any SelectFilter widgets are a part of the new form,
85
// instantiate a new SelectFilter instance for it.
86
if (typeof SelectFilter != "undefined"){
87
$(".selectfilter").each(function(index, value){
88
var namearr = value.name.split('-');
89
SelectFilter.init(value.id, namearr[namearr.length-1], false, "{% admin_media_prefix %}");
91
$(".selectfilterstacked").each(function(index, value){
92
var namearr = value.name.split('-');
93
SelectFilter.init(value.id, namearr[namearr.length-1], true, "{% admin_media_prefix %}");
97
var initPrepopulatedFields = function(row) {
98
row.find('.prepopulated_field').each(function() {
100
var input = field.find('input, select, textarea');
101
var dependency_list = input.data('dependency_list') || [];
102
var dependencies = row.find(dependency_list.join(',')).find('input, select, textarea');
103
if (dependencies.length) {
104
input.prepopulate(dependencies, input.attr('maxlength'));
109
prefix: "{{ inline_admin_formset.formset.prefix }}",
110
addText: "{% blocktrans with inline_admin_formset.opts.verbose_name|title as verbose_name %}Add another {{ verbose_name }}{% endblocktrans %}",
111
formCssClass: "dynamic-{{ inline_admin_formset.formset.prefix }}",
112
deleteCssClass: "inline-deletelink",
113
deleteText: "{% trans "Remove" %}",
114
emptyCssClass: "empty-form",
115
removed: alternatingRows,
116
added: (function(row) {
117
initPrepopulatedFields(row);
118
reinitDateTimeShortCuts();
119
updateSelectFilter();
120
alternatingRows(row);