b0a2c658ece8a68f30ccc05a4e12ad559005aca5
[cookbook.git] / cookbook / templates / admin / edit_inline / tabular.html
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 }}
9    <table>
10      <thead><tr>
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>
14        {% endif %}
15      {% endfor %}
16      {% if inline_admin_formset.formset.can_delete %}<th>{% trans "Delete?" %}</th>{% endif %}
17      </tr></thead>
18
19      <tbody>
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>
23         {% endif %}
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 %}">
26         <td class="original">
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 %}
30             </p>{% endif %}
31           {% if inline_admin_form.has_auto_field %}{{ inline_admin_form.pk_field.field }}{% endif %}
32           {{ inline_admin_form.fk_field.field }}
33           {% spaceless %}
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 %}
38               {% endfor %}
39             {% endfor %}
40           {% endfor %}
41           {% endspaceless %}
42         </td>
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>
49               {% else %}
50                   {{ field.field.errors.as_ul }}
51                   {{ field.field }}
52               {% endif %}
53               </td>
54             {% endfor %}
55           {% endfor %}
56         {% endfor %}
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>
59         {% endif %}
60         </tr>
61      {% endfor %}
62      </tbody>
63    </table>
64 </fieldset>
65   </div>
66 </div>
67
68 <script type="text/javascript">
69 (function($) {
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");
76         }
77         var reinitDateTimeShortCuts = function() {
78             // Reinitialize the calendar and clock widgets by force
79             if (typeof DateTimeShortcuts != "undefined") {
80                 $(".datetimeshortcuts").remove();
81                 DateTimeShortcuts.init();
82             }
83         }
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 %}");
91                 });
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 %}");
95                 });
96             }
97         }
98         var initPrepopulatedFields = function(row) {
99             row.find('.prepopulated_field').each(function() {
100                 var field = $(this);
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'));
106                 });
107                 if (dependencies.length) {
108                     input.prepopulate(dependencies, input.attr('maxlength'));
109                 }
110             });
111         }
112         $(rows).formset({
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);
125             })
126         });
127     });
128 })(django.jQuery);
129 </script>