1 {% load i18n adminmedia admin_modify %}
2 {% load url from future %}
3 <div class="inline-group" id="{{ inline_admin_formset.formset.prefix }}-group">
4 <div class="tabular inline-related {% if forloop.last %}last-related{% endif %}">
5 {{ inline_admin_formset.formset.management_form }}
6 <fieldset class="module">
7 <h2>{{ inline_admin_formset.opts.verbose_name_plural|capfirst }}</h2>
8 {{ inline_admin_formset.formset.non_form_errors }}
11 {% for field in inline_admin_formset.fields %}
12 {% if not field.widget.is_hidden %}
13 <th{% if forloop.first %} colspan="2"{% endif %}{% if field.required %} class="required"{% endif %}>{{ field.label|capfirst }}</th>
16 {% if inline_admin_formset.formset.can_delete %}<th>{% trans "Delete?" %}</th>{% endif %}
20 {% for inline_admin_form in inline_admin_formset %}
21 {% if inline_admin_form.form.non_field_errors %}
22 <tr><td colspan="{{ inline_admin_form|cell_count }}">{{ inline_admin_form.form.non_field_errors }}</td></tr>
24 <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 %}"
25 id="{{ inline_admin_formset.formset.prefix }}-{% if not forloop.last %}{{ forloop.counter0 }}{% else %}empty{% endif %}">
27 {% if inline_admin_form.original or inline_admin_form.show_url %}<p>
28 {% if inline_admin_form.original %} {{ inline_admin_form.original }}{% if inline_admin_form.model_admin.show_edit_link and inline_admin_form.original %} <a href="{% url adminform.model_admin.admin_site.app_name|add:':'|add:app_label|add:'_'|add:inline_admin_formset.opts.opts.module_name|add:'_changelist' %}{{ inline_admin_form.original.pk }}">Edit</a>{% endif %}{% endif %}
29 {% 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 %}
31 {% if inline_admin_form.has_auto_field %}{{ inline_admin_form.pk_field.field }}{% endif %}
32 {{ inline_admin_form.fk_field.field }}
34 {% for fieldset in inline_admin_form %}
35 {% for line in fieldset %}
36 {% for field in line %}
37 {% if field.is_hidden %} {{ field.field }} {% endif %}
43 {% for fieldset in inline_admin_form %}
44 {% for line in fieldset %}
45 {% for field in line %}
46 <td class="{{ field.field.name }}">
47 {% if field.is_readonly %}
48 <p>{{ field.contents }}</p>
50 {{ field.field.errors.as_ul }}
57 {% if inline_admin_formset.formset.can_delete %}
58 <td class="delete">{% if inline_admin_form.original %}{{ inline_admin_form.deletion_field.field }}{% endif %}</td>
68 <script type="text/javascript">
70 $(document).ready(function($) {
71 var rows = "#{{ inline_admin_formset.formset.prefix }}-group .tabular.inline-related tbody tr";
72 var alternatingRows = function(row) {
73 $(rows).not(".add-row").removeClass("row1 row2")
74 .filter(":even").addClass("row1").end()
75 .filter(rows + ":odd").addClass("row2");
77 var reinitDateTimeShortCuts = function() {
78 // Reinitialize the calendar and clock widgets by force
79 if (typeof DateTimeShortcuts != "undefined") {
80 $(".datetimeshortcuts").remove();
81 DateTimeShortcuts.init();
84 var updateSelectFilter = function() {
85 // If any SelectFilter widgets are a part of the new form,
86 // instantiate a new SelectFilter instance for it.
87 if (typeof SelectFilter != "undefined"){
88 $(".selectfilter").each(function(index, value){
89 var namearr = value.name.split('-');
90 SelectFilter.init(value.id, namearr[namearr.length-1], false, "{% admin_media_prefix %}");
92 $(".selectfilterstacked").each(function(index, value){
93 var namearr = value.name.split('-');
94 SelectFilter.init(value.id, namearr[namearr.length-1], true, "{% admin_media_prefix %}");
98 var initPrepopulatedFields = function(row) {
99 row.find('.prepopulated_field').each(function() {
101 var input = field.find('input, select, textarea');
102 var dependency_list = input.data('dependency_list') || [];
103 var dependencies = [];
104 $.each(dependency_list, function(i, field_name) {
105 dependencies.push('#' + row.find(field_name).find('input, select, textarea').attr('id'));
107 if (dependencies.length) {
108 input.prepopulate(dependencies, input.attr('maxlength'));
113 prefix: "{{ inline_admin_formset.formset.prefix }}",
114 addText: "{% blocktrans with inline_admin_formset.opts.verbose_name|title as verbose_name %}Add another {{ verbose_name }}{% endblocktrans %}",
115 formCssClass: "dynamic-{{ inline_admin_formset.formset.prefix }}",
116 deleteCssClass: "inline-deletelink",
117 deleteText: "{% trans "Remove" %}",
118 emptyCssClass: "empty-form",
119 removed: alternatingRows,
120 added: (function(row) {
121 initPrepopulatedFields(row);
122 reinitDateTimeShortCuts();
123 updateSelectFilter();
124 alternatingRows(row);